Агенту нельзя доверять права «на всякий случай»: он действует с вашими правами и выполняет то, что прочитал в контексте, в том числе в чужом тексте. Защита строится в три слоя: правила в файле проекта (контекст, который агент может проигнорировать), разрешения и песочница (техническое ограничение) и изоляция среды (ветка, отдельный каталог, контейнер). Документация Claude Code подчёркивает: инструкции в CLAUDE.md влияют на то, что агент пытается сделать, а разрешения определяют, что ему позволено. Этот урок расставляет настройки, а общую теорию вы найдёте в уроке библиотеки Безопасность LLM-приложений.
После урока вы сможете
- Выбрать режим разрешений и написать правила allow, ask и deny
- Объяснить, чем песочница отличается от правил и когда её включать
- Защитить секреты и боевые системы от случайных и вредоносных действий агента
Содержание
Режимы разрешений Claude Code
Режим задаёт, что агент делает без вопроса. Переключается клавишей Shift+Tab, флагом --permission-mode при запуске или ключом permissions.defaultMode в настройках.
default («Manual»)
- Без вопроса
- Только чтение
- Когда уместен
- Первые сессии, чувствительный репозиторий
acceptEdits
- Без вопроса
- Чтение, правки файлов, простые файловые команды в рабочей папке
- Когда уместен
- Понятная задача, дифф смотрите потом
plan
- Без вопроса
- Чтение, правок источников нет
- Когда уместен
- Разведка и план
auto
- Без вопроса
- Почти всё, действия проверяет отдельная модель-классификатор
- Когда уместен
- Длинные задачи при настроенных правилах
dontAsk
- Без вопроса
- Только заранее разрешённое, остальное отклоняется
- Когда уместен
- Скрипты и CI
bypassPermissions
- Без вопроса
- Всё
- Когда уместен
- Только контейнер или виртуальная машина
С версии 2.1.283 интерактивные сессии терминала и VS Code стартуют в режиме auto. Документация предупреждает: он снижает число вопросов, но не гарантирует безопасность; рискованные действия вроде git reset --hard или принудительного пуша классификатор блокирует по умолчанию, но «границы», названные словами в чате («не пушь»), могут потеряться при сжатии контекста. Жёсткий запрет задаёт только правило deny. Режим bypassPermissions документация советует использовать только в изолированных средах (контейнер, виртуальная машина, dev-контейнер без интернета), где агент не сможет навредить вашей системе.
Правила allow, ask, deny
Правила лежат в .claude/settings.json (коммитятся для команды) и .claude/settings.local.json (личное). Порядок проверки: сначала deny, затем ask, затем allow; первое совпадение решает. Правило deny действует в любом режиме, включая bypassPermissions.
{
"permissions": {
"allow": ["Bash(npm test *)"],
"ask": ["Bash(git push *)"],
"deny": ["Read(./.env)", "Read(./secrets/**)"]
}
}Оговорка из документации: правила Read и Bash — не герметичная защита. Запрет Read(./.env) действует для встроенных инструментов и распознанных команд (cat, head), но не остановит скрипт на Python или Node, который сам откроет файл. Правило Bash(curl *) не совпадёт с /usr/bin/curl и с sh -c 'curl …'. Если запрет должен выдержать обход, нужны песочница на уровне ОС или отсутствие самого секрета в рабочей копии.
Песочница
Песочница ограничивает уже запущенные команды на уровне операционной системы: запись разрешена только в рабочую папку и временные каталоги, сеть идёт через прокси со списком доменов. В Claude Code она включается командой /sandbox и по умолчанию выключена. Работает на macOS, Linux и WSL 2; на «родной» Windows команды выполняются без песочницы. Это важно, если вы работаете в Windows без WSL.
Что песочница не охватывает: встроенные инструменты чтения, правки и веб-запросов, хуки и MCP-серверы работают вне неё, и запрет чтения в настройках песочницы не останавливает инструмент Read. Документация прямо говорит: песочница снижает риск, но не является полной изоляцией, и её не следует считать жёстким барьером без проверки.
В Codex два независимых слоя. Песочница (sandbox_mode) задаёт, что агент может технически: read-only, workspace-write или danger-full-access. Политика подтверждений (approval_policy) задаёт, когда спрашивать: например, on-request или never. В пресете Auto (workspace-write и on-request) сеть для команд выключена по умолчанию, а внутри доступной для записи области .git, .agents, .codex и .aws остаются только для чтения. Флаг --dangerously-bypass-approvals-and-sandbox (алиас --yolo) убирает и песочницу, и вопросы; документация называет его не рекомендуемым.
sandbox_mode = "workspace-write"
approval_policy = "on-request"
[sandbox_workspace_write]
network_access = falseСекреты, внешние источники, деструктивные команды
Секреты. Не вставляйте ключи в запросы и файлы правил; запретите чтение .env и каталога секретов правилом deny; боевые ключи вообще не держите в рабочей копии. Если ключ попал в чат или коммит, считайте его скомпрометированным и перевыпустите.
Внешний текст и prompt injection. Агент читает README зависимостей, issue, веб-страницы, ответы MCP-серверов. В них может быть инструкция, замаскированная под данные. Документация Claude Code перечисляет меры: просматривать команды перед одобрением, не подавать недоверенный текст агенту напрямую, проверять изменения критичных файлов, для работы с внешними сервисами использовать виртуальные машины. Документация Codex предупреждает, что веб-поиск может заставить агента получить и выполнить недоверенные инструкции, и советует относиться к его результатам как к недоверенным. Подробности защиты — в уроке о безопасности LLM.
Удаление и необратимые действия. Откатить можно только файлы; базы, API и деплой откату не поддаются. Деструктивные команды (rm -r, git push --force, миграции на боевую базу) держите в ask или deny и выполняйте сами.
Изоляция. Дайте агенту отдельную ветку или рабочий каталог (git worktree), а для режимов без вопросов — контейнер или виртуальную машину. Для клонированных чужих репозиториев Claude Code показывает диалог доверия папке и просит одобрить серверы из .mcp.json: не соглашайтесь, не прочитав.
Что дальше
Следующий урок — тесты и git как страховка. Если вы хотите, чтобы специалист проверил права, секреты и границы в проекте, где работает агент, посмотрите услугу аудита ИИ-кода.