БесплатноСредний уровень45 мин

Разрешения и безопасность: что агенту нельзя

Коротко

Агенту нельзя доверять права «на всякий случай»: он действует с вашими правами и выполняет то, что прочитал в контексте, в том числе в чужом тексте. Защита строится в три слоя: правила в файле проекта (контекст, который агент может проигнорировать), разрешения и песочница (техническое ограничение) и изоляция среды (ветка, отдельный каталог, контейнер). Документация Claude Code подчёркивает: инструкции в CLAUDE.md влияют на то, что агент пытается сделать, а разрешения определяют, что ему позволено. Этот урок расставляет настройки, а общую теорию вы найдёте в уроке библиотеки Безопасность LLM-приложений.

После урока вы сможете

  • Выбрать режим разрешений и написать правила allow, ask и deny
  • Объяснить, чем песочница отличается от правил и когда её включать
  • Защитить секреты и боевые системы от случайных и вредоносных действий агента
Содержание
  1. 01Режимы разрешений Claude Code
  2. 02Правила allow, ask, deny
  3. 03Песочница
  4. 04Секреты, внешние источники, деструктивные команды
  5. 05Что дальше

Режимы разрешений 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.

JSON
{
  "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) убирает и песочницу, и вопросы; документация называет его не рекомендуемым.

toml
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 как страховка. Если вы хотите, чтобы специалист проверил права, секреты и границы в проекте, где работает агент, посмотрите услугу аудита ИИ-кода.

Урок позади?

Следующий урок →

Тесты и git как страховка

Сделаем за васАудит MVP, созданного с помощью ИИСоздали MVP с помощью ИИ? Проверим доступы и роли, секреты, базу данных и RLS, API, тесты и деплой. Карта рисков, решение «оставить / исправить / заменить» и roadmap.Узнать об услуге →