Что 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/обычно коммитится.
Дальше: Экономия лимита, Агенты.