раздел 03 · подстраница 3
Режимы разрешений
У Claude Code четыре режима того, насколько свободно агент может действовать сам. От параноидально-аккуратного "спроси про каждый чих" до полного автопилота. Знать их обязательно - иначе либо замучаетесь подтверждать каждое действие, либо случайно дадите Claude снести /etc.
Зачем это
Claude - не текстовый ассистент, он реально исполняет команды на вашей машине. Между "написать diff" и "запустить rm -rf node_modules" - один tool-call. Режимы дают контроль над тем, что Claude может сделать без вашего "ок".
Четыре режима
default - спрашивать перед каждым Edit и Bash
accept-edits - Edit сразу, Bash всё ещё спрашивать
plan - вообще ничего не делать, только думать и предлагать
bypass-permissions - делать всё подряд без вопросов
Переключение - Shift+Tab (циклически между default → accept-edits → plan). Bypass отдельно, см. ниже.
default
Дефолтный режим. Перед каждым Edit (правка файла) и Bash (запуск команды) Claude показывает:
- что собирается сделать;
- diff (для Edit) или команду целиком (для Bash);
- три варианта: Yes, No, Yes для всех таких в этой сессии.
Claude wants to run:
npm install react-query
[y] yes / [n] no / [a] always allow npm install
Когда использовать: первое знакомство, незнакомый проект, любая работа на проде/сервере.
Плюсы: ничего не происходит без вашего ведома.
Минусы: бесконечные подтверждения. Через час "y, y, y, y, y" вы начнёте бить y не глядя - и пропустите опасную команду.
accept-edits
Edit-tool работает без подтверждений (Claude правит файлы сам), Bash всё равно просит. Самый удобный режим для повседневной работы внутри git-репозитория - всегда можно git diff и откатить.
Когда использовать: 80% задач после первого часа в проекте. У вас есть git, страховка от случайного Edit - откат.
[mode: accept-edits] # подсказка в нижней строке
plan
Самый интересный режим. Claude вообще не вызывает Edit и Bash - он только читает (Read, Grep, Glob) и предлагает план. В конце он покажет план целиком, и только после вашего "go" перейдёт в обычный режим и начнёт исполнять.
Когда использовать:
- Большая фича, где важно сначала договориться об архитектуре.
- Незнакомый проект - сначала пусть осмотрится и расскажет, что нашёл.
- Любая задача, где цена ошибки выше цены лишних 5 минут планирования.
Сценарий:
> /switch plan # или Shift+Tab до режима plan
> добавь оплату через Stripe в чекаут, в режиме plan
# Claude читает код, потом выдаёт:
План:
1. Установить stripe-node, добавить env STRIPE_SECRET_KEY
2. Создать app/api/checkout/session/route.ts
3. ...
Approve plan? [y/n]
После approve Claude автоматически выходит из plan и начинает исполнять.
bypass-permissions
Полный автопилот. Claude делает что хочет: правит, запускает bash, ходит в сеть - без единого подтверждения. Не переключается через Shift+Tab, включается флагом запуска или в /config:
claude --dangerously-skip-permissions
Когда использовать:
- В изолированной среде - Docker-контейнер, виртуалка, sandbox.
- В CI/CD pipeline'е - вы заранее знаете, что должно произойти.
- В чужой временной директории, где не страшно потерять данные.
Сравнение
| Режим | Edit без вопроса | Bash без вопроса | Read | Когда уместен | | ------------------ | :--------------: | :--------------: | :--: | --------------------------------- | | default | нет | нет | да | первый запуск, прод-среда | | accept-edits | да | нет | да | дейли-работа внутри git | | plan | нет | нет | да | старт большой задачи | | bypass-permissions | да | да | да | sandbox, CI, временные среды |
Гранулярные разрешения
Помимо режимов, можно настроить allow/deny-листы в ~/.claude/settings.json:
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git status)",
"Bash(git diff*)",
"Read(*)",
"Edit(src/**)"
],
"deny": [
"Bash(rm -rf *)",
"Bash(curl * | sh)",
"Edit(.env*)"
]
}
}
Команды из allow исполняются без подтверждения даже в default. Команды из deny не исполняются вообще, даже в bypass.
Антипаттерны
- Сидеть в bypass "потому что быстрее". Один раз случайно удалит важное - выльется в день восстановления.
- Никогда не использовать plan. Большие задачи без плана = большие правки наугад.
- Не настраивать deny-list. Минимальный набор (
rm -rf,git push --force, правки.env) экономит нервы.
Полезные ссылки
- Permission modes - официальная справка
- Settings reference - формат settings.json