Permissions, sandbox и безопасность агентной разработки
Автор: Казачкин Даниил Михайлович · Обновлено
Claude Code способен редактировать файлы, выполнять команды и обращаться к сети, поэтому разрешения и sandbox должны соответствовать риску задачи. Удобство автоматического подтверждения не должно превращаться в неограниченный доступ к секретам и внешним системам.
Разрешения и режимы
Permission rules управляют тем, какие инструменты и ресурсы разрешены, требуют подтверждения или запрещены. В интерактивном режиме Shift+Tab переключает режимы: manual, accept edits, plan и, если доступен, auto. Команда /permissions позволяет просмотреть и настроить правила.
Разрешайте повторяемые безопасные операции узко: например, конкретную команду тестов. Не создавайте широкое правило только ради исчезновения диалогов.
Почему sandbox — отдельный слой
Permissions контролируют попытку использования инструментов. Sandbox обеспечивает системную изоляцию дочерних Bash-процессов: ограничивает файловую систему и сеть. Эти слои дополняют друг друга. Deny-правило может остановить вызов заранее, а sandbox ограничивает процесс, даже если вредоносная инструкция добралась до Bash.
Команда /sandbox открывает настройку встроенной песочницы. Если изоляция является обязательным требованием, настройка sandbox.failIfUnavailable должна обеспечивать отказ, а не незаметное выполнение без sandbox.
Prompt injection и недоверенные данные
README внешнего проекта, issue, веб-страница или результат MCP могут содержать фразу, которая пытается изменить цель агента. Это данные, а не доверенная команда. Не давайте агенту доступ к секретам «на всякий случай», проверяйте домены и внимательно рассматривайте запросы на необычные команды.
Удалённые действия — push, публикация, изменение базы или вызов API — не восстанавливаются checkpoint-механизмом.
Модель минимальных привилегий
Для исследования достаточно Read, Grep, Glob и безопасных Git-команд. Для локальной реализации нужны Edit и ограниченный Bash. Сеть следует открывать только нужным доменам. Деплой и доступ к production лучше вынести в отдельный контролируемый процесс с человеческим подтверждением и журналом.
Практический threat-check
Перед автономной задачей ответьте:
- Какие файлы действительно нужны?
- Нужна ли сеть и к каким доменам?
- Есть ли в окружении токены или production-конфигурация?
- Какие команды необратимы?
- Что остановит вредоносную инструкцию из внешнего контента?
- Как проверить diff и внешние эффекты?
Если на последний вопрос нет ответа, уменьшите область задачи.
Что важно запомнить
- Выдавайте агенту минимально необходимые права.
- Permissions и sandbox защищают на разных уровнях.
- Внешний контент всегда следует считать недоверенным.
- Checkpoint не откатывает удалённые и внешние действия.
Частые вопросы
CLAUDE.md может запретить удаление файлов?
Он может попросить этого не делать, но не обеспечивает технический запрет. Используйте deny rules, sandbox и при необходимости PreToolUse hook.
Sandbox отменяет необходимость permissions?
Нет. Permissions управляют инструментами и подтверждениями, sandbox ограничивает Bash на уровне ОС. Безопаснее использовать оба слоя.
Можно ли полностью отключить подтверждения?
Некоторые режимы допускают широкую автономность, но это повышает риск. Для обычной разработки предпочтительны узкие allow-правила и явный запрет опасных действий.