Режимы и разрешения
Как в WorkAI устроены режимы чата и список разрешений: что агент делает сам, что спрашивает, где хранятся правила и как отозвать выданное разрешение.
Короткий ответ: без подтверждения выполняется только то, что вы сами заранее разрешили, плюс небольшой встроенный набор безопасных команд, который включается один раз по вашему согласию. Всё остальное — команды терминала, вызовы коннекторов, работа за пределами папки проекта — агент показывает вам и ждёт решения. А насколько широкий набор инструментов у агента вообще есть, определяет режим чата: в одних режимах правки и запуск команд невозможны в принципе, независимо от разрешений.
Какие есть режимы чата
Режим переключается рядом с полем ввода. Он решает не «спрашивать или нет», а какие инструменты агент получит на руки.
- Обсуждение (Ask) — вопросы об архитектуре и коде, советы и объяснения без правок файлов и запуска команд. Работает и без открытой папки: это единственный режим, которому проект не нужен.
- Планирование (Plan) — исследование задачи и структурированный план. Правок и запуска команд нет — не по договорённости с моделью, а технически (см. ниже). У готового плана есть кнопка «Реализовать», которая передаёт его агенту. Подробнее — Plan Mode.
- Агент (Agent) — полный набор инструментов в одном диалоге: правка кода, терминал, поиск, рефакторинг. Требует открытой папки: без проекта WorkAI предложит переключиться в «Обсуждение» или открыть папку.
- Обучение (Learn) — пошаговый разбор с наставником. Инструменты у него почти как у «Агента», но сам режим намеренно убран из переключателя и открывается командами.
«Создатель» — это отдельный веб-сценарий, а не режим чата в клиенте: он живёт в браузере и описан на странице Создатель (Builder Web).
Что агент может в каждом режиме
Набор инструментов урезается до отправки запроса, поэтому «уговорить» модель сделать то, чего в режиме нет, невозможно.
| Что делает агент | Обсуждение | Планирование | Агент | Обучение |
|---|---|---|---|---|
| Чтение файлов и поиск по коду | да | да | да | да |
| Диагностика и линт файла | нет | да | да | да |
| Правка и создание файлов | нет | нет | да | да |
| Удаление и перемещение файлов | нет | нет | да | да |
| Переименование символа по проекту | нет | нет | да | да |
| Запуск команд в терминале и задач сборки | нет | нет | да | да |
| Чтение вывода уже запущенного терминала | да | да | да | да |
Локальное превью .html | нет | нет | да | да |
| Встроенный браузер | нет | нет | да | нет |
| Запуск подагентов | нет | нет | да | да |
| Инструменты подключённых коннекторов (MCP) | да | только читающие | да | да |
| Список задач | нет | да | да | да |
| Уточняющие вопросы | да | да | да | да |
Отдельно от режима действует ещё одно условие: инструменты, которым нужен проект (терминал, правка файлов, задачи), недоступны, пока не открыта папка. Поэтому в пустом окне «Агент» не будет запускать команды, даже если режим выбран.
Почему в режиме «Планирование» правки невозможны
Это жёсткое ограничение, а не инструкция модели. Правило устроено «от разрешённого»: перед отправкой запроса проходит только то, что явно перечислено как безопасное — чтение файлов, поиск по коду, поиск использований, диагностика, чтение вывода терминала, работа со списком задач и планом. Всё, чего в списке нет, режется, поэтому новый инструмент не может «просочиться» в план-режим по недосмотру. Подробнее — 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.
Важно, чем это не является: подсказка ничего не разрешает и не блокирует, кнопку в любом случае нажимаете вы. И если подходящей модели не нашлось, подсказки просто не будет, а диалог продолжит работать как обычно. Обратный выбор — блокировать при недоступной модели-оценщике — известен по чужим инцидентам, когда переставали выполняться даже читающие команды.
Работают ли команды в песочнице
Нет. Терминальные команды выполняются в вашей системе с вашими правами — изоляции файловой системы или сети по умолчанию нет. Поэтому основной защитой остаётся само подтверждение: список разрешённых команд стоит держать узким и не включать глобальный тумблер «разрешать всё».
Чем отличается окно агентов
Экран разрешений там тот же самый, но с двумя отличиями. Во-первых, переключателя режимов в окне агентов нет — сессия работает как «Агент». Во-вторых, границей доверия служит не открытый проект, а рабочая папка конкретной сессии: файл, который лежит в другом вашем проекте, для этой сессии внешний и потребует подтверждения. Про само окно — Agents Window.
Что дальше
Общий обзор ограничений агента — Безопасность агента, про запуск команд подробнее — Инструмент: Терминал. Какие модели использует агент и сколько это стоит — Каталог моделей и тарифы и Auto — как выбирается модель.