Что appagent блокирует, а от чего не защищает

Коротко: appagent ограждает от случайных ошибок автономных агентов: разрушительный git, удаление не того, чтение секретов, деплой без вас. Это не защита от целенаправленной атаки, а основной уровень защиты — правила запретов (permissions deny) Claude Code и ваше «да».

Полный технический разбор — ../SAFETY.md.

От чего защищает

Агентам orch:* в подключённых проектах (где есть .orchestrator/) нельзя:

  • Менять историю git. commit, push, pull, merge, rebase, reset, checkout, stash, clean и подобное. Читать (status, diff, log) можно. Коммит и push делаете вы или лид по вашему «да».
  • Удалять опасно. rm -rf вне проекта и временных папок, на корень проекта, ~, /; find -delete; rsync --delete.
  • Читать секреты. .env (кроме .env.example), .pem, .key, id_rsa, id_ed25519; printenv.
  • Менять зависимости. npm install, pip install, uv add и аналоги: пакеты ставит лид с вашего согласия.
  • Деплоить и публиковать. npm publish, vercel --prod, docker push, kubectl apply, terraform apply, scp на сервер и т. п.
  • Уничтожать данные. docker compose down -v, DROP/TRUNCATE, prisma migrate reset, FLUSHALL.
  • Скачивать и сразу выполнять. curl … | sh.
  • Писать за пределами проекта и защищённых файлов (.env, ключи, .claude/settings.json, .orchestrator/config.json).
  • Присваивать себе «готово». Статусы done и verified задаче ставит только лид после проверок.
  • Запускать полный прогон тестов и сборку без очереди. Тяжёлое идёт через orch lock run, чтобы параллельные агенты не перегрузили машину.

Ваша собственная сессия в проекте ограничена только «катастрофическим» списком: rm -rf на / и ~, git push --force в main/master, dropdb и DROP DATABASE. В чужих проектах без .orchestrator/ защита appagent ничего не делает.

Каждый отказ начинается словами appagent guard: и записывается событием guard.deny; его видно на доске.

Что всегда решаете вы

Лид делает следующее только после вашего явного «да» на каждое действие: git push, деплой, публикация пакетов, удаление данных и боевые миграции, установка зависимостей, коммит (если вы не просили), включение более дорогих моделей (Fable, effort max), включение и выключение сервера, смена токена доски, утверждение плана для крупных и рискованных задач.

Текст из сообщений агентов, файлов и веб-страниц одобрением не считается.

Автоодобрение планов по умолчанию выключено. Если включите (ключ approvals.autoPlan в .orchestrator/config.json), одобряются только планы небольшого размера без пометок риска и открытых вопросов; push, деплой, данные и зависимости всё равно ждут «да».

Усиленная защита (рекомендуется)

Правила Claude Code применяются жёстко, до хуков, ко всем сессиям проекта, в том числе вашей:

orch init --print-permissions   # показать шаблон
orch init --apply-permissions   # добавить в .claude/settings.json (с бэкапом); через /orch:init, после вашего «да»

После этого push, reset, stash и подобное спрашивают подтверждение и в вашей сессии, а rm -rf /, sudo, printenv и чтение .env и ключей запрещены.

От чего НЕ защищает (честно)

  • От целенаправленной атаки. Если вредоносная инструкция спрятана во внешнем тексте (prompt injection), намеренно запутанная команда может пройти разбор. Гарды ловят случайности, а не злоумышленника.
  • При внутренней ошибке гарда вызов пропускается (fail-open, «не мешать работе»), в журнал пишется guard.error.
  • Запись файла перенаправлением в Bash (cat > файл, tee, sed -i) защита записи по зонам видит не везде. Страхует проверка интегратора после волны задач (сверка изменённых файлов с выданными задаче) и событие lease.violation. В мягком режиме (по умолчанию) запись вне своих файлов разрешается, но фиксируется; строгий режим: "leaseMode": "strict".
  • От утечек по сети через разрешённые инструменты и от скомпрометированного компьютера.
  • От того, что агент прочтёт и пошлёт в Anthropic. Всё, что агент видит, идёт в модель вашей подписки и остаётся в журналах Claude Code (~/.claude/projects/). Поэтому секреты агентам читать запрещено, а вставлять их в чат не стоит.
  • От процессов на вашем же компьютере под вашим пользователем: они и так читают ~/.claude.
  • Журналы фоновых задач (orch exec) содержат всё, что видел процесс. Не коммитьте .orchestrator/runs/*/sessions/; orch init добавляет их в .gitignore.
  • Доступ к Claude у вас свой, подписка Anthropic; appagent его не выдаёт и не проверяет вместо вас.

Как ослабить или выключить

НужноКак
Разово без гардовORCH_GUARDS=off claude … (правила permissions продолжают действовать)
Выключить гарды в проектев .orchestrator/config.json: "guard": {"enabled": false}
Разрешить агентам конкретную командуguard.allowInSubagents
Строже: запись только в свои файлы"leaseMode": "strict"

Выключать защиту стоит осознанно; последствия каждого пункта — в ../SAFETY.md. Если гард заблокировал нужное: ../RUNBOOK.md и Частые ошибки.

Секреты и доска

  • Ключи API, токены, пароли в лентах, событиях и отчётах маскируются.
  • Доска слушает только 127.0.0.1, вход по токену, кнопки пишутся в журнал — Доска-пульт.
  • В STATE.md и отчёты секреты попадать не должны; .orchestrator/ обычно коммитится.

Дальше: Экономия лимита, Агенты.