Skip to main content

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

Режим разрешений определяет, когда агент спрашивает подтверждение перед действием. Текущий режим показан в интерфейсе.

РежимМеткаКак работает
defaultDEFAULTСпрашивает про опасные команды, которые распознаёт разбор, и про команды, которые разобрать не удалось. python -c, node -e и скрипты выполняет без вопроса
paranoidPARANOIDСпрашивает про любую команду, если не уверен, что она только читает данные
bypassPermissionsYOLOНичего не спрашивает, выполняет всё сразу
afkAFK«Я отошёл»: ничего не спрашивает, а на вопросы агента отвечает, что вас нет, и агент продолжает работу до конца задачи. Опасные команды не блокируются

Если агент может запускать скрипты, которые сам написал, и вам важно подтверждать каждое такое действие, используйте paranoid.

Как переключить режим​

  • Колесо Shift+Tab: за один раз переключаются режим разрешений, модель и уровень рассуждений. Enter применяет выбор сразу, Esc отменяет. Если ничего не нажимать, выбор применится через 1,5 секунды.
  • Команда /mode.
  • Флаг при запуске: veai --permission-mode paranoid.

Колесо по Shift+Tab: режим разрешений, уровень рассуждений и модель

Каждая сессия хранит свой режим. Субагенты работают в режиме родительской сессии.

Режим afk​

afk рассчитан на одну задачу, которую никто не контролирует. После каждого ответа агент получает указание продолжать, пока сам не завершит работу. По умолчанию таких продолжений не больше 10 после вашего последнего сообщения; лимит задаётся параметром afk.maxContinuations. Сессия, сохранённая в afk, при повторном открытии запускается в bypassPermissions.

Режим по умолчанию​

Чтобы новые сессии всегда начинались в нужном режиме, задайте permissions.defaultMode в ~/.veai/settings.json. Допустимые значения: default, paranoid и bypassPermissions. Этот параметр читается только из глобальных настроек, поэтому склонированный репозиторий не может отключить подтверждения. Подробнее — в разделе «Настройки».

warning

В режимах bypassPermissions и afk агент выполняет любые команды без подтверждения. Включайте их только в проектах, где изменения можно легко откатить, например через Git.

Безопасность и ограничения​

CLI не полагается на регулярные выражения и не использует LLM-классификатор. Он разбирает команду в синтаксическое дерево и раскрывает обёртки env, sudo, timeout, xargs, вызовы bash -c и подстановки $(...) на глубину до восьми уровней. Поэтому опасная команда, спрятанная за безобидными обёртками, например env FOO=1 timeout 5 bash -c "rm -rf ~", тоже вызовет запрос.

CLI всегда спрашивает подтверждение, если:

  • вложенность глубже восьми уровней;
  • команда содержит eval;
  • имя команды не записано буквально, например $CMD или $(which rm);
  • скрипт передаётся через pipe;
  • команду не удалось разобрать.

Ограничения:

  • Песочницы на уровне ОС нет. Проверка защищает от ошибок модели, но не изолирует процессы.
  • Защищённые пути, например .git, проверяются только для распознанных команд записи: sed -i, перенаправлений вывода, tee, cp и mv. Запись из python -c, node -e или скрипта, который агент сам написал и запустил, в режиме default пройдёт без вопроса.
  • Windows без Git Bash. Инструмент bash выполняет команды в PowerShell, и модель пишет команды на синтаксисе PowerShell. Разбора PowerShell у политики разрешений пока нет.
  • Режим нельзя задать файлом в проекте. Иначе склонированный чужой репозиторий мог бы отключить вам подтверждения.