WorkAI

Режимы и разрешения

Как в 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 — как выбирается модель.