Permission mode определяет, что Claude Code может выполнить без интерактивного подтверждения, и это первый рычаг доверия, который вы держите в руках. Режим Manual в интерфейсе соответствует конфигурационному значению default; с версии 2.1.200 CLI принимает и алиас manual. Важно понимать, что режим - это не про удобство, а про границу: сколько автономии вы отдаёте агенту, зависит от того, насколько знаком код и насколько дорога цена ошибки в этой конкретной работе.
Режимов несколько, и каждый разрешает свой набор действий без запроса. default (manual) не делает без спроса ничего, кроме чтения - для первого запуска и чувствительной работы. acceptEdits авторазрешает правки и ограниченный набор файловых команд в рабочей области - для быстрой итерации с последующим git diff. plan - исследование без изменения исходников. auto действует после фоновой проверки классификатором. dontAsk выполняет только заранее разрешённое. bypassPermissions - почти всё в обход обычного flow.
Переключение режимов в CLI устроено предсказуемо. Shift+Tab циклически проходит доступные режимы, и базовый цикл - Manual, Accept edits, Plan. dontAsk в этот цикл не входит; auto появляется только при выполнении требований аккаунта, модели и провайдера; bypassPermissions нужно отдельно разрешить при запуске или в настройках. Разово режим задают флагом --permission-mode, а постоянный - ключом defaultMode в permissions.
Полезно один раз свести режимы, их автономию и назначение в таблицу, чтобы выбирать осознанно. Ниже - карта от manual до bypass. К ней возвращаются в начале каждой задачи: знакомый код и дешёвая ошибка позволяют acceptEdits, незнакомая задача просит plan, а чувствительная работа с секретами и продом - manual. Режим - это не настройка "раз и навсегда", а решение под контекст конкретной сессии.
| Режим | Без запроса | Применение |
|---|---|---|
| default / manual | Только чтение | Первый запуск, чувствительная работа |
| acceptEdits | Правки и файловые команды в рабочей области | Быстрая итерация + git diff |
| plan | Исследование без изменения исходников | Незнакомая задача, архитектура |
| auto |
|---|
| Действия после проверки классификатором |
| Долгие задачи в доверенной области |
| dontAsk | Только заранее разрешённое | CI и закрытые сценарии |
|---|
| bypassPermissions | Почти всё в обход flow | Только одноразовый контейнер/VM |
|---|
Что именно меняют режимы, стоит понимать точно. acceptEdits авторазрешает правки и файловые команды вроде mkdir, rm, mv, cp - но только для путей внутри рабочей области или additionalDirectories; защищённые пути и остальные команды сохраняют ограничения. auto использует классификатор, оценивающий, не вышло ли действие за пределы запроса и не вызвано ли враждебным контентом; explicit ask всё равно спрашивает. dontAsk же просто отклоняет всё, что не разрешено заранее.
bypassPermissions нельзя считать "обычным auto", и это ключевое предупреждение. Даже в нём продолжают действовать explicit deny и ask, организация может требовать подтверждения для connector-инструментов, а MCP-инструмент - объявить requiresUserInteraction; Claude Code отдельно защищает часть удалений root и home. Но всё это не делает режим безопасным для основной рабочей машины. Официальная рекомендация - применять его только в изолированном одноразовом контейнере или VM без ценных данных; флаг --dangerously-skip-permissions назван опасным намеренно.
Для команды, ещё не настроившей политику, есть защищённый baseline. Начинают с default или plan; добавляют точечные allow, а не общий bypass; включают sandbox для shell; оставляют destructive-, deployment- и credential-действия в ask или deny; а auto делают только пользовательским или managed-решением - project-настройки не должны самовольно повышать автономность. Этот порядок даёт рабочую скорость, не открывая агенту то, что дорого откатывать.
Полезно один раз увидеть, как режим задаётся при запуске и в настройках, чтобы не путать разовое с постоянным. Ниже - примеры --permission-mode для plan, acceptEdits и закрытого неинтерактивного прогона с узким allowlist, плюс defaultMode в settings. Типичный провал - оставить bypass постоянным default на рабочей машине или ждать, что plan mode сам докажет правильность плана; правильный ход - режим под контекст, точечные allow и sandbox под shell.
claude --permission-mode plan # исследование
claude --permission-mode acceptEdits # авто-применение правок
# закрытый неинтерактивный запуск с узким allowlist
claude -p "проверь форматирование" --permission-mode dontAsk \
--allowedTools "Read,Grep,Glob,Bash(npm run lint:*)"
# постоянный default - в settings: { "permissions": { "defaultMode": "acceptEdits" } }