раздел 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) экономит нервы.

Полезные ссылки