Короткий ответ: без подтверждения выполняется только то, что вы сами заранее разрешили, плюс небольшой встроенный набор безопасных команд, который включается один раз по вашему согласию. Всё остальное — команды терминала, вызовы коннекторов, работа за пределами папки проекта — агент показывает вам и ждёт решения. А насколько широкий набор инструментов у агента вообще есть, определяет режим чата: в одних режимах правки и запуск команд невозможны в принципе, независимо от разрешений. ## Какие есть режимы чата Режим переключается рядом с полем ввода. Он решает не «спрашивать или нет», а **какие инструменты агент получит на руки**. - **Обсуждение (Ask)** — вопросы об архитектуре и коде, советы и объяснения без правок файлов и запуска команд. Работает и без открытой папки: это единственный режим, которому проект не нужен. - **Планирование (Plan)** — исследование задачи и структурированный план. Правок и запуска команд нет — не по договорённости с моделью, а технически (см. ниже). У готового плана есть кнопка «Реализовать», которая передаёт его агенту. Подробнее — [Планирование](/docs/agent/plan-mode). - **Агент (Agent)** — полный набор инструментов в одном диалоге: правка кода, терминал, поиск, рефакторинг. Требует открытой папки: без проекта WorkAI предложит переключиться в «Обсуждение» или открыть папку. - **Обучение (Learn)** — пошаговый разбор с наставником. Инструменты у него почти как у «Агента», но сам режим намеренно убран из переключателя и открывается командами. «Создатель» — это отдельный веб-сценарий, а не режим чата в клиенте: он живёт в браузере и описан на странице [Создатель](/docs/builder/overview). ## Что агент может в каждом режиме Набор инструментов урезается до отправки запроса, поэтому «уговорить» модель сделать то, чего в режиме нет, невозможно. | Что делает агент | Обсуждение | Планирование | Агент | Обучение | | --- | --- | --- | --- | --- | | Чтение файлов и поиск по коду | да | да | да | да | | Диагностика и линт файла | нет | да | да | да | | Правка и создание файлов | нет | нет | да | да | | Удаление и перемещение файлов | нет | нет | да | да | | Переименование символа по проекту | нет | нет | да | да | | Запуск команд в терминале и задач сборки | нет | нет | да | да | | Чтение вывода уже запущенного терминала | да | да | да | да | | Локальное превью `.html` | нет | нет | да | да | | Встроенный браузер | нет | нет | да | нет | | Запуск подагентов | нет | нет | да | да | | Инструменты подключённых коннекторов (MCP) | да | только читающие | да | да | | Список задач | нет | да | да | да | | Уточняющие вопросы | да | да | да | да | Отдельно от режима действует ещё одно условие: инструменты, которым нужен проект (терминал, правка файлов, задачи), недоступны, пока не открыта папка. Поэтому в пустом окне «Агент» не будет запускать команды, даже если режим выбран. ## Почему в режиме «Планирование» правки невозможны Это жёсткое ограничение, а не инструкция модели. Правило устроено «от разрешённого»: перед отправкой запроса проходит только то, что явно перечислено как безопасное — чтение файлов, поиск по коду, поиск использований, диагностика, чтение вывода терминала, работа со списком задач и планом. Всё, чего в списке нет, режется, поэтому новый инструмент не может «просочиться» в план-режим по недосмотру. Подробнее — [Планирование](/docs/agent/plan-mode). Инструменты подключённых коннекторов (MCP) — единственное исключение из списка: их имена задаёт третья сторона, поэтому решение принимается по признаку «инструмент объявляет себя читающим». Универсальный вызов-диспетчер MCP в план-режим не попадает вовсе: что именно он сделает, зависит от аргументов. ## Что выполняется сразу, а что с подтверждением Внутри доступного режиму набора инструментов действуют разрешения: - **Чтение файлов проекта и поиск по коду** идут без подтверждения — они ничего не меняют. - **Правка и создание файлов** выполняются без отдельного запроса: изменения показываются прямо в редакторе, где их можно принять или отклонить. - **Команда терминала** выполняется сразу, если подходит под ваш список разрешённых. Любая другая уходит на подтверждение. - **Вызовы коннекторов и остальные инструменты** спрашивают до тех пор, пока вы не выдадите им разрешение прямо из диалога. Кроме вашего списка есть встроенный набор правил: часть заведомо безопасных команд (`ls`, `cd`, `cat`, `pwd`, `git status`, `npm ls` и подобные им читающие подкоманды) разрешена по умолчанию, а опасные варианты тех же команд — наоборот, всегда требуют подтверждения: например `find` разрешён, но `find … -delete` и `find … -exec` нет. Важная деталь: встроенный набор молчит, пока вы его не включили. Первый раз WorkAI покажет отдельное окно «Включить автоподтверждение терминала?» — до нажатия «Включить» ни одно встроенное правило не срабатывает и спрашивается всё подряд. Ваш собственный список разрешённых работает независимо от этого окна. Отдельного экрана для запретов в настройках нет: список «Разрешения» показывает только то, что выполняется без вопроса. Свой запрет можно дописать руками — в настройке `chat.tools.terminal.autoApprove` значение `false` у правила означает «всегда спрашивать» (см. синтаксис ниже). ## Как выглядит подтверждение команды Команда показывается в поле, которое обычно можно отредактировать перед запуском, — выполнится именно исправленный вариант. Рядом предлагается выдать разрешение на будущее, в одной из трёх областей: - **в этом чате** — до конца текущего диалога, перезапуск не переживает; - **в этом проекте** — только для текущей рабочей папки; - **везде** — во всех проектах на этой машине. Пока открыт диалог, отсчёт времени ожидания ответа приостановлен — запрос не оборвётся из-за того, что вы думаете или отошли. ## Как записываются правила разрешённых команд Разрешение выдаётся на команду с её началом, а не на точную строку целиком: разрешив `npm`, вы разрешаете и `npm install lodash`, а разрешив `npm run` — все скрипты, но не `npm install`. Для команд, где подкоманда меняет цену ошибки (`git`, `docker`, `docker-compose`, `kubectl`, `helm`, `terraform`, `cargo`, `go`), запоминается пара «команда + подкоманда»: `git checkout` не открывает дорогу `git push`. Более узкие записи при этом схлопываются: если в списке уже есть `npm run`, а вы разрешаете `npm`, останется только `npm`. Руками правила пишутся в двух настройках, и синтаксис у них разный: | Настройка | Формат записи | Что умеет сверх начала строки | | --- | --- | --- | | `workai.terminal.allowedCommands` | список строк: `["npm run", "git status"]` | подстановки `*` (любой фрагмент) и `?` (один символ) — например `rm test*.txt` | | `chat.tools.terminal.autoApprove` | пары «правило — `true`/`false`»: `{"mkdir": true, "rm": false}` | регулярные выражения (`"/^git (status\|show)\\b/": true`), проверка каждой подкоманды в строке по отдельности и отмена встроенного правила значением `null` | Первая — простой список WorkAI, он работает всегда. Вторая — расширенная настройка, в ней же лежат встроенные правила, и она начинает действовать только после согласия во всплывающем окне про автоподтверждение. Ваши записи из обеих настроек видны в общем списке разрешений; встроенные правила там не показываются. Порядок проверки важен: сначала смотрится список WorkAI, и если команда в него попадает, она запускается сразу — запрет со значением `false` из расширенной настройки её уже не остановит. Поэтому запреты имеет смысл писать для того, чего нет в вашем собственном списке, а не «поверх» него. ## Где хранятся правила Хранение разное — от этого зависит, что можно передать команде, а что исчезнет при перезапуске: - **«везде»** — в ваших пользовательских настройках WorkAI (`settings.json` профиля); - **«в этом проекте»** — в настройках проекта, файл `.vscode/settings.json` внутри папки. Его можно закоммитить, и тогда правила приедут всем, кто работает с этим репозиторием; - **«в этом чате»** — только в памяти клиента; после закрытия WorkAI такие разрешения исчезают сами. Разрешения для инструментов и коннекторов хранятся во внутреннем состоянии клиента, а не в текстовом файле, — раздать их файлом нельзя, отзываются они через настройки (см. ниже). ## Как отозвать выданное разрешение В настройках WorkAI, раздел **«Инструменты и безопасность»**. Там единый список **«Разрешения»** — команды, инструменты и коннекторы вместе, у каждой строки видно область действия: «везде», «в этом проекте», «в этом чате». Фильтр сверху («Все», «Везде», «В этом проекте», «В этом чате») показывает только нужную область, крестик рядом с записью отзывает её, а кнопка «Очистить» снимает ровно то, что сейчас видно на экране под выбранным фильтром. Отсюда же делается «сброс сессии»: фильтр «В этом чате» плюс «Очистить». Разрешение, выданное прямо в диалоге чата, появляется в этом списке сразу — искать его в другом месте не нужно. Отзыв действует немедленно, перезапускать клиент не требуется. Правило, добавленное вручную в `settings.json`, тоже видно в этом списке и снимается тем же крестиком — WorkAI удаляет его из того файла, в котором оно лежит. ## «Разрешать всё без подтверждения» На том же экране есть общий тумблер с подписью «Ничего не спрашивать, выполнять всё»: агент перестаёт спрашивать перед командами терминала, правками файлов и вызовами коннекторов. Он снимает защиту целиком, а не выборочно, — включайте, только если точно понимаете зачем. ## Что спрашивает всегда, независимо от разрешений - **Удаление файла.** Действие необратимо, поэтому автоматическое разрешение для него не выдаётся вообще — ни глобально, ни на сессию. - **Чтение и просмотр содержимого за пределами проекта.** Путь вне открытой папки — граница доверия: WorkAI спросит и запомнит выданный доступ отдельно, не смешивая его с разрешениями для файлов проекта. ## Что происходит за пределами папки проекта Папка проекта — та самая граница, по которой WorkAI решает, спрашивать или нет. **Чтение файла или списка файлов снаружи.** Диалог предлагает не только «разрешить один раз», но и две области пошире: разрешить всю папку, где лежит файл, или весь репозиторий, к которому он относится, — и то и другое до конца текущего чата. Эти разрешения на внешние папки живут отдельно от общего списка «Разрешения» и снимаются в самом диалоге подтверждения. **Команда терминала, которая пишет файл наружу.** Встроенные правила автоподтверждения на такую команду не срабатывают: строка разбирается, в ней ищутся перенаправления вывода и правка файла на месте (`sed -i`), и если цель записи оказывается вне папки проекта, показывается подтверждение. Разбор не всесилен — он не раскрывает переменные и подстановки команд, поэтому в таких случаях просто перестраховывается и спрашивает. На ваш собственный список разрешённых команд это не распространяется: он проверяется раньше и запускает команду сразу. **Команда, которая просто переходит в другой каталог.** Отдельного запрета на это нет. Но целевая папка выносится в заголовок подтверждения — вы видите не только строку, но и то, где она выполнится. ## Что будет, если отказать У подтверждения есть вторая кнопка — **«Пропустить»**. Это не остановка диалога: агент получает сообщение, что вы решили обойтись без этого действия, и продолжает работу — обычно ищет другой путь или спрашивает, как быть. Команда при этом не выполняется, а в переписке остаётся отметка о пропуске. Если нужно оборвать всё целиком, а не отдельное действие, — остановите запрос кнопкой остановки в поле ввода. Тогда прерывается вся текущая работа агента, включая уже начатые шаги. Отказ ничего не запоминает: та же команда в следующий раз спросит снова. Чтобы она и дальше останавливалась на подтверждении, не добавляйте её в список разрешённых; при необходимости — пропишите для неё правило со значением `false`, как описано выше. ## Подсказка о риске команды На подтверждении команды терминала, удаления файла и обращения за пределы проекта WorkAI может показать короткое человеческое объяснение, что именно делает это действие. Объяснение готовит отдельная лёгкая модель — сначала бесплатная платформенная, если её нет, то дешёвый вариант из режима Auto (см. [Автовыбор модели](/docs/model-router)). Важно, чем это **не** является: подсказка ничего не разрешает и не блокирует, кнопку в любом случае нажимаете вы. И если подходящей модели не нашлось, подсказки просто не будет, а диалог продолжит работать как обычно. Обратный выбор — блокировать при недоступной модели-оценщике — известен по чужим инцидентам, когда переставали выполняться даже читающие команды. ## Работают ли команды в песочнице Нет. Терминальные команды выполняются в вашей системе с вашими правами — изоляции файловой системы или сети по умолчанию нет. Поэтому основной защитой остаётся само подтверждение: список разрешённых команд стоит держать узким и не включать глобальный тумблер «разрешать всё». ## Чем отличается окно агентов Экран разрешений там тот же самый, но с двумя отличиями. Во-первых, переключателя режимов в окне агентов нет — сессия работает как «Агент». Во-вторых, границей доверия служит не открытый проект, а рабочая папка конкретной сессии: файл, который лежит в другом вашем проекте, для этой сессии внешний и потребует подтверждения. Про само окно — [Окно агентов](/docs/agent/agents-window). ## Что дальше Общий обзор ограничений агента — [Безопасность агента](/docs/agent/security), про запуск команд подробнее — [Инструмент: Терминал](/docs/agent/tools/terminal). Какие модели использует агент и сколько это стоит — [Модели и цены](/docs/models-and-pricing) и [Автовыбор модели](/docs/model-router).