SpyBara
Go Premium

permission-modes.md 2026-10-01 23:59 UTC to 2026-10-02 15:01 UTC

This page contains 169 additions and 160 deletions.

2026
Thu 1 23:59 Fri 2 16:01

Выберите режим разрешений

Контролируйте, будет ли Claude просить разрешение перед редактированием файлов или выполнением команд. Переключайте режимы с помощью Shift+Tab в CLI, индикатора режима в VS Code или селектора режима в Desktop.

Режим разрешений определяет, какие действия Claude может выполнять в сеансе без предварительного запроса у вас. В режиме Manual Claude Code останавливается и просит вас перед большинством действий, которые редактируют файлы, запускают команды оболочки или обращаются в сеть. В режиме auto вторая модель, классификатор, проверяет действия вместо вас; как классификатор оценивает действия перечисляет, какие действия он проверяет и какие его пропускают.

С Claude Code версии 2.1.283 или позже режим auto является встроенным начальным режимом разрешений для интерактивных сеансов терминала и VS Code. В более ранних версиях это встроенный начальный режим разрешений только на планах Pro, Max и Team. Какой режим начинается в сеансе охватывает интерфейсы и параметры, которые изменяют начальный режим разрешений. Вы также можете изменить режим разрешений работающего сеанса в любое время.

Available modes

Каждый режим делает различный компромисс между удобством и контролем. В таблице ниже показано, что Claude может делать без запроса разрешения в каждом режиме. Manual режим отображается под его значением конфигурации, default.

Режим Что выполняется без запроса Лучше всего для
default Только чтение Проверка каждого действия самостоятельно, чувствительная работа
acceptEdits Чтение, редактирование файлов и распространённые команды файловой системы (mkdir, touch, mv, cp и т.д.) Итерация по коду, который вы проверяете
plan Чтение, плюс одобренные классификатором команды, когда режим auto доступен Изучение кодовой базы перед её изменением
auto Всё, с фоновыми проверками безопасности Длительные задачи, снижение усталости от запросов
dontAsk Чтение и предварительно одобренные инструменты; всё, что вызвало бы запрос, отклоняется Заблокированные CI и скрипты
bypassPermissions Всё Только изолированные контейнеры и виртуальные машины

Режим, который проверяет каждое действие, называется Manual в CLI, в claude --help, в расширениях VS Code и JetBrains, а также в настольном приложении. Его значение конфигурации — default, которое используют hooks и интеграции SDK. CLI принимает manual как псевдоним везде, где вы вводите значение, например claude --permission-mode manual или "defaultMode": "manual". Метка Manual и псевдоним manual требуют Claude Code v2.1.200 или более поздней версии. Метка настольного приложения не зависит от вашей версии CLI.

Записи в защищённые пути никогда не одобряются автоматически, кроме режима bypassPermissions и сеансов Plan Mode, где доступны разрешения на обход, то есть сеансов, запущенных способом, который помещает bypassPermissions в цикл режимов.

Режимы устанавливают базовый уровень. Наложите правила разрешений сверху, чтобы предварительно одобрить или заблокировать определённые инструменты. Правила отказа блокируют в каждом режиме, включая bypassPermissions. Правила отказа и запроса не применяются к EndConversation, пока Claude всё ещё имеет хотя бы один другой инструмент, который он может вызвать. Правила разрешения не имеют эффекта в bypassPermissions.

Actions no mode auto-approves

Claude Code не одобряет автоматически следующее ни в одном режиме, включая bypassPermissions. Каждый пункт ссылается на раздел, который говорит, что происходит вместо этого в каждом режиме:

  • Инструменты, соответствующие явному правилу запроса

  • Инструменты соединителя, которые ваша организация установила на ask, в сеансах, где эта настройка достигает Claude Code

  • Инструменты, требующие взаимодействия с пользователем: встроенный инструмент AskUserQuestion и MCP инструменты, отмеченные requiresUserInteraction

  • rm и rmdir удаления, нацеленные на критический путь, которые не одобряет ни одно правило разрешения или hook PreToolUse с "allow"

  • Защита от кросс-сеансового обмена сообщениями

  • Чтение вне рабочих директорий, пока permissions.blockReadsOutsideWorkingDirectories включено: распознанные команды Bash для чтения файлов и любой неизолированный повтор, который требует одобрения для запуска вне песочницы, запрашивают даже в режиме auto и режиме bypassPermissions. Требует Claude Code v2.1.257 или более поздней версии.

    Команда, которую парсер оболочки не может отследить, такая как команда, которая меняет директорию более одного раза или запускает подоболочку, запрашивает то же самое, даже если она не называет никакой внешний путь. Этот запрос не применяется, когда команда выполняется в песочнице и песочница обеспечивает блокировку.

Распространённые конфигурации

Режимы разрешений определяют, будет ли Claude просить перед действием, а песочница Bash и внешние границы изоляции определяют, что действие может достичь после запуска. Каждая строка ниже связывает цель с флагами или параметрами, которые вас туда доставляют, и необходимой изоляцией, как отправную точку. Доступные режимы перечисляют, что выполняется без запроса в каждом режиме.

Вы хотите Начните с Необходимая изоляция Примечания
Проверить каждое действие самостоятельно Режим Manual: claude --permission-mode default Нет Чувствительная работа, незнакомый код
Итерировать локально с меньшим количеством запросов, без классификатора Режим Manual плюс песочница Bash в режиме auto-allow: claude --permission-mode default, затем запустите /sandbox и выберите auto-allow Встроенная песочница Bash, на macOS, Linux и WSL2 Правила отказа по-прежнему применяются, и правила запроса, которые называют команду, такие как Bash(git push *), по-прежнему запрашивают. Чтобы включить песочницу из файла параметров вместо этого, установите sandbox.enabled на true
Исследовать перед изменением чего-либо claude --permission-mode plan Нет Claude Code блокирует редактирование до тех пор, пока вы не одобрите план
Работать в режиме auto без участия claude --permission-mode auto, встроенный начальный режим разрешений с v2.1.283 или позже Нет; песочница или контейнер добавляет защиту в глубину Требует поддерживаемую модель, и ваша организация может отключить режим auto
Запустить в CI с точным списком разрешений claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read" Нет, кроме того, что предоставляет ваш CI runner Облачные сеансы игнорируют dontAsk из файлов параметров
Запустить полностью автоматически внутри контейнера claude -p "<prompt>" --dangerously-skip-permissions Требуется: контейнер, виртуальная машина или runtime песочницы; на Linux и macOS запустите его как непривилегированный пользователь Облачные сеансы игнорируют этот режим из файлов параметров. В этом запуске -p несколько вызовов, которые по-прежнему запрашивают, отклоняются вместо этого

Песочница Bash и режим auto работают независимо и объединяются, за исключением случаев, перечисленных в разделе Режимы песочницы. Для полного взаимодействия см. Как песочница связана с разрешениями и режимами разрешений и Как изоляция связана с режимами разрешений.

Какой режим начинается в сеансе

Когда вы запускаете новый сеанс в терминале, Claude Code берёт режим разрешений из первого из них, который применяется:

  1. Флаг --permission-mode или --dangerously-skip-permissions

  2. permissions.defaultMode в файле параметров

    Если вы установите "auto" в .claude/settings.json или .claude/settings.local.json, значение не вступает в силу, и Claude Code затем использует встроенное значение по умолчанию вместо defaultMode из ~/.claude/settings.json. Если вы установите "bypassPermissions" в этих двух файлах, это также не вступает в силу, и сеанс начинается в режиме Manual. Другие значения применяются из любого файла параметров.

  3. Встроенное значение по умолчанию

Разговоры, которые расширение VS Code запускает, следуют собственному списку расширения в Переключение режимов разрешений. Для режима разрешений, в котором Claude Code запускает возобновленный сеанс, см. режим разрешений при возобновлении.

Встроенное значение по умолчанию auto требует Claude Code v2.1.228 или позже на macOS, Linux и WSL, и v2.1.233 или позже на нативной Windows. На более ранних версиях встроенное значение по умолчанию — Manual.

Встроенное значение по умолчанию зависит от того, как вы запускаете Claude Code. Первая строка, которая соответствует вашему сеансу, применяется. Таблица охватывает сеансы, которые вы запускаете в терминале или через расширение VS Code; для настольного приложения и claude.ai см. вкладки Desktop и Web в Переключение режимов разрешений.

Как вы запускаете Claude Code Встроенный начальный режим разрешений
Любой файл параметров устанавливает disableAutoMode на "disable" default
claude -p или Agent SDK default в сеансах, которые получают флаги функций. В сеансах, которые не получают, таких как на стороннем поставщике или с отключённой телеметрией, auto с Claude Code v2.1.285 или позже и default на более ранних версиях. Сеанс в организации, политика которой не предоставляет режим auto, начинается в default вместо этого
В терминале или через расширение VS Code auto с Claude Code v2.1.283 или позже; на более ранних версиях auto на планах Pro, Max или Team в сеансах, которые получают флаги функций, и default в противном случае

В вашем первом сеансе после установки или обновления, Claude Code может выбрать начальный режим разрешений до того, как прибудут его флаги функций. Этот сеанс может начаться в другом режиме разрешений, чем указано в таблице, и ваш следующий сеанс соответствует таблице.

Когда флаг, файл параметров или встроенное значение по умолчанию выбирает auto, но режим auto недоступен для сеанса, Claude Code запускает сеанс в режиме Manual вместо этого. Режим auto недоступен, когда сеанс не соответствует требованиям доступности, таким как файл параметров, отключающий его, или модель, которая его не поддерживает, или когда Anthropic временно отключила его на стороне сервера.

В первый раз, когда встроенное значение по умолчанию запускает один из ваших сеансов в режиме auto, Claude Code показывает уведомление, которое ссылается на эту страницу:

  • В терминале один раз в верхней части сеанса
  • В расширении VS Code как карточка на экране нового разговора, которая остаётся до тех пор, пока вы её не закроете

Если ваш ~/.claude/settings.json устанавливает defaultMode отличный от auto и ни один другой файл параметров не устанавливает его, ваши сеансы продолжают запускаться в этом режиме. На планах Pro, Max и Team, а также в сеансах, которые не получают флаги функций, Claude Code спрашивает один раз в терминале или в расширении VS Code, следует ли изменить параметр на режим auto. Если вы отклоните, ваш параметр остаётся как есть.

Начните в другом режиме разрешений

Вы можете установить начальный режим разрешений для одного сеанса или как значение по умолчанию для каждого сеанса на машине, в проекте или в организации. Когда более одного файла параметров устанавливает permissions.defaultMode, приоритет параметров решает, поэтому значение проекта или управляемое значение превосходит ~/.claude/settings.json. Чтобы изменить режим разрешений уже работающего сеанса, см. Переключение режимов разрешений.

Чтобы установить начальный режим разрешений для Сделайте это
Один сеанс, который вы собираетесь запустить Передайте режим разрешений как флаг, например claude --permission-mode default
Каждый сеанс терминала, который вы запускаете на этой машине Установите permissions.defaultMode в ~/.claude/settings.json. Для того, что читает расширение VS Code, см. Переключение режимов разрешений
Каждый сеанс терминала, который вы запускаете в одном проекте Установите permissions.defaultMode в .claude/settings.json проекта. Сеансы, которые вы запускаете в терминале, соблюдают каждое значение, кроме auto и bypassPermissions; сеансы, которые запускает расширение VS Code, не читают параметры проекта для начального режима разрешений
Каждый сеанс терминала в вашей организации Установите permissions.defaultMode в управляемые параметры. Сеансы терминала запускаются в этом режиме, и люди по-прежнему могут переключиться на режим auto; для того, что читает расширение VS Code, см. Переключение режимов разрешений. Чтобы удалить режим auto, чтобы никто не мог его выбрать, установите permissions.disableAutoMode на "disable" вместо этого

Этот пример делает каждый сеанс терминала на вашей машине начинающимся в режиме Manual, чьё значение конфигурации — default. Сохраните его в ~/.claude/settings.json:

{
  "permissions": {
    "defaultMode": "default"
  }
}

Следующий сеанс, который вы запускаете, показывает ⏸ manual mode on в строке состояния.

Переключение режимов разрешений

Каждый интерфейс имеет свой элемент управления для переключения режимов разрешений во время сеанса и свой способ выбора режима разрешений, в котором начинаются новые сеансы. Выберите ваш интерфейс, чтобы увидеть его элементы управления.

Во время сессии: нажмите Shift+Tab для циклического переключения режимов разрешений. Из auto первое нажатие переключает на default, а затем цикл идёт default → acceptEdits → plan. Дополнительные режимы вставляются после plan. Строка состояния показывает активный режим как серый ⏸ manual mode on для default, или как ⏵⏵ accept edits on, ⏸ plan mode on, ⏵⏵ auto mode on, ⏵⏵ don't ask on или ⏵⏵ bypass permissions on.

Следите за строкой состояния в этом ролике сессии, которая началась в авторежиме. При каждом нажатии Shift+Tab она меняется с auto mode on на manual mode on, accept edits on, plan mode on и обратно на auto mode on.

Автоматическое одобрение редактирования файлов с режимом acceptEdits

Режим acceptEdits позволяет Claude создавать и редактировать файлы в вашем рабочем каталоге без запроса. Строка состояния показывает ⏵⏵ accept edits on, пока этот режим активен.

В дополнение к редактированию файлов, режим acceptEdits автоматически одобряет распространённые команды Bash файловой системы: mkdir, touch, rm, rmdir, mv, cp и sed. Эти команды также автоматически одобряются при префиксе с безопасными переменными окружения, такими как LANG=C или NO_COLOR=1, или обёртками процессов, такими как timeout, nice или nohup. Как и редактирование файлов, автоматическое одобрение применяется только к путям внутри вашего рабочего каталога или additionalDirectories.

Каждый путь также проходит через проверку символических ссылок, поэтому запись, которая разрешается вне этой области, также не одобряется автоматически. Пути вне этой области, записи в защищённые пути, удаления rm и rmdir, нацеленные на критический путь, и все остальные команды Bash, кроме встроенного набора только для чтения, по-прежнему требуют запроса.

Когда инструмент PowerShell включен, режим acceptEdits также автоматически одобряет Set-Content, Add-Content, Clear-Content и Remove-Item на путях в области действия, вместе с их распространёнными псевдонимами. Применяются те же правила области действия и защищённых путей, и Remove-Item получает свою собственную проверку. Позиционный аргумент, содержащий символ кавычки, такой как апостроф в Set-Content .\notes.txt "It's done", по-прежнему требует запроса даже на путях в области действия, потому что Claude Code не может статически проверить аргумент, чьи цитируемые и нецитируемые прочтения отличаются. Передайте содержимое через именованный параметр, такой как -Value, чтобы избежать запроса.

Используйте acceptEdits, когда вы хотите проверить изменения в вашем редакторе или через git diff после того, как они будут сделаны, а не одобрять каждое редактирование в строке.

Нажмите Shift+Tab один раз из режима Manual, чтобы войти в него, или запустите его напрямую:

claude --permission-mode acceptEdits

Анализируйте перед редактированием с режимом plan

Режим Plan указывает Claude исследовать и предложить изменения без их внесения. Claude читает файлы, запускает команды оболочки для исследования и пишет план, но не редактирует ваш исходный код. За исключением интерактивных сеансов терминала с доступными разрешениями на обход, редактирования остаются заблокированными до тех пор, пока вы не одобрите план.

Что происходит с командой оболочки во время планирования, зависит от сеанса, и применяется первый из этих случаев, который совпадает:

  • Интерактивные сеансы терминала с доступными разрешениями на обход: ни классификатор, ни запрос не применяются к командам планирования. Пропустить все проверки с режимом bypassPermissions охватывает несколько вещей, которые по-прежнему требуют запроса там.
  • Режим auto доступен и параметр useAutoModeDuringPlan включен, что является значением по умолчанию: классификатор проверяет команды оболочки, отличные от критических удалений пути, вместо запроса у вас. Одобренные команды выполняются, и отклонённые блокируются.
  • Режим auto недоступен или useAutoModeDuringPlan отключен: команды вне встроенного набора только для чтения требуют одобрения, включая когда режим auto-allow песочницы включен.

Войдите в режим plan, нажав Shift+Tab или добавив префикс к одной подсказке с /plan. Вы также можете запустить в режиме plan из CLI:

claude --permission-mode plan

Нажмите Shift+Tab снова, чтобы выйти из режима plan без одобрения плана.

Проверьте и одобрите план

Когда план готов, Claude представляет его и спрашивает, как действовать дальше. Из этого запроса вы можете выбрать:

  • Да, и использовать режим auto: одобрить и запустить в режиме auto. Если режим auto недоступен для вашего сеанса, например потому что ваша организация его отключила, эта опция читается как Да, автоматически принять редактирование. Если вы запустили сеанс с включёнными разрешениями на обход, опция читается как Да, и переключиться на BYPASS PERMISSIONS (без дальнейших запросов) для этого сеанса вместо этого.
  • Да, вручную одобрить редактирование: одобрить и проверить каждое редактирование отдельно.
  • Нет, продолжить планирование: остаться в режиме plan и сказать Claude, что изменить.

Одобрение плана выходит из режима plan и переключает сеанс на режим разрешений, который описывает каждая опция одобрения, поэтому Claude начинает редактирование. Чтобы снова планировать, вернитесь в режим plan с помощью Shift+Tab или добавьте префикс к следующей подсказке с /plan.

Нажмите Ctrl+G, чтобы открыть предложенный план в текстовом редакторе по умолчанию и отредактировать его непосредственно перед тем, как Claude продолжит. Когда включена опция showClearContextOnPlanAccept, список получает первую опцию, которая одобряет план и очищает контекст планирования.

Принятие плана также даёт сеансу сгенерированное название на основе плана, если вы уже не назвали сеанс.

Установите режим plan как значение по умолчанию

Чтобы сделать режим plan значением по умолчанию для сеансов терминала проекта, установите defaultMode на plan в .claude/settings.json, размещённый как пример в Начните в другом режиме разрешений показывает. Разговоры, которые расширение VS Code запускает, не читают параметры проекта для начального режима разрешений. Там установите claudeCode.initialPermissionMode на plan в параметрах пользователя VS Code вместо этого.

Исключите запросы разрешений с помощью авторежима

Авторежим позволяет Claude выполнять действия без рутинных запросов разрешений. Отдельная модель-классификатор проверяет действия перед их выполнением и блокирует всё, что выходит за рамки вашего запроса, нацелено на нераспознанную инфраструктуру или выглядит как результат враждебного контента, который прочитал Claude. Явные правила ask по-прежнему вызывают запрос разрешения.

В Claude Code v2.1.283 и более поздних версиях авторежим является встроенным начальным режимом разрешений для интерактивных сессий в терминале и VS Code на всех планах и у всех провайдеров. В более ранних версиях он является встроенным начальным режимом разрешений только на планах Pro, Max и Team.

Классификатор также проверяет каждое сообщение, которое Claude отправляет другому агенту с помощью SendMessage, будь то простой текст или структурированное сообщение команды агентов, перед тем как Claude Code его доставит, как в авторежиме, так и в режиме планирования, когда классификатор проверяет команды; проверка отправки требует Claude Code v2.1.222 или более поздней версии.

По умолчанию классификатор не проверяет удаления с помощью rm и rmdir, нацеленные на критический путь, например rm -rf / или rm -rf ~. В разделе Критические пути описано, что с ними происходит в каждом режиме разрешений.

Авторежим также побуждает Claude продолжать работу, не останавливаясь для уточняющих вопросов, хотя Claude всё равно спрашивает, когда ваш промпт или скилл явно на это рассчитывает. Для более выраженного автономного поведения в режиме, который по-прежнему запрашивает у вас подтверждение, вместо этого установите стиль вывода Proactive.

Авторежим доступен только в том случае, если ваша учётная запись соответствует всем этим требованиям:

  • План: все планы.
  • Организация: на Team и Enterprise авторежим доступен по умолчанию. Администраторы могут отключить его для организации, установив permissions.disableAutoMode в значение "disable" в управляемых настройках.
  • Модель: в Anthropic API и Claude Platform on AWS — Claude Opus 4.6 или новее, Sonnet 4.6 или новее либо модель Fable. В Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry и сессиях Claude apps gateway с выполненным входом — только Claude Sonnet 5 или новее, Opus 4.7 или новее и модели Fable. Более старые модели, включая Sonnet 4.5, Opus 4.5, Haiku и модели claude-3, не поддерживаются ни у одного провайдера.
  • Провайдер: доступен по умолчанию в Anthropic API, Claude Platform on AWS, Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry и сессиях Claude apps gateway с выполненным входом.

Если Claude Code сообщает, что авторежим недоступен, сначала проверьте эти требования и то, не устанавливает ли какой-либо файл настроек disableAutoMode. Кроме того, Anthropic может отключить авторежим на стороне сервера, или сервер может отклонить авторежим для вашей учётной записи. Сессия, получившая любой из этих ответов, держит авторежим отключённым до своего завершения, поэтому позже начните новую сессию.

Отдельное сообщение, в котором названа модель и сказано, что авторежим «не может определить безопасность» действия, означает, что запрос классификатора завершился сбоем. Такой сбой обычно временный, но в Amazon Bedrock он может повторяться, пока ваша учётная запись не получит возможность вызывать названную модель. Причины и способы решения описаны в справочнике ошибок.

Если вы установили defaultMode: "auto" в настройках, а сессия в терминале запускается в режиме Manual без ошибки, вероятно, настройка находится в .claude/settings.json или .claude/settings.local.json. Значение auto из этих файлов не вступает в силу. Перенесите его в ~/.claude/settings.json. Для диалога, запущенного расширением VS Code, вместо этого проверьте собственный список расширения в разделе Переключение режимов разрешений.

Авторежим в Bedrock, Agent Platform или Foundry

В Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry и сессиях Claude apps gateway с выполненным входом авторежим доступен по умолчанию. Если ничто другое не задаёт режим разрешений, он также является встроенным начальным режимом разрешений в версиях, перечисленных в таблице того раздела. Чтобы выбрать начальный режим разрешений самостоятельно, установите permissions.defaultMode, как описано в разделе Запуск в другом режиме разрешений, или выберите режим разрешений в индикаторе режима расширения VS Code.

У этих провайдеров поддерживаются только Claude Sonnet 5 или новее, Opus 4.7 или новее и модели Fable. На любой другой модели сессия вместо этого запускается в режиме Manual.

Чтобы запретить разработчикам использовать авторежим, установите disableAutoMode в значение "disable" в управляемых настройках. Это удаляет auto из цикла Shift+Tab, а сессия, запущенная с --permission-mode auto, вместо этого запускается в режиме Manual. Сессия, уже работающая в авторежиме, выходит из него, когда настройка доходит до этой сессии из источника, развёрнутого администратором, и показывает auto mode disabled by settings. До v2.1.251 работающая сессия сохраняла авторежим до своего завершения.

В версиях с v2.1.158 по v2.1.206 авторежим у этих провайдеров был отключён, пока вы не установите CLAUDE_CODE_ENABLE_AUTO_MODE=1, и Claude Code игнорировал defaultMode: "auto" у этих провайдеров, если эта переменная не была также установлена. Переменная по-прежнему принимается для совместимости и начиная с v2.1.207 ни на что не влияет.

Проверка классификатором на стороне сервера

В авторежиме Claude Code может попросить сервер проверить действия, которые порядок принятия решений отправляет на проверку, в составе запросов к модели в рамках сессии, вместо отправки собственных запросов классификатора. Сервер запрашивают следующие сессии:

  • Прямое подключение к Anthropic API: в интерактивных сессиях в терминале, а также в сессиях -p, Agent SDK, расширения VS Code и десктопного приложения, независимо от вашего плана или типа учётной записи, по мере развёртывания функции Anthropic. В интерактивных сессиях в терминале требуется Claude Code v2.1.271 или новее на планах Pro, Max и Team и v2.1.278 или новее на планах Enterprise и в учётных записях Claude API. В сессиях -p, Agent SDK, расширения VS Code и десктопного приложения требуется Claude Code v2.1.281 или новее. Начиная с v2.1.282 сессия, которая не получает флаги функций, например потому что вы отключили телеметрию, по умолчанию запрашивает сервер в сессии любого типа.
  • Облачный провайдер либо LLM-шлюз или прокси: в Claude Platform on AWS, Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry, а также всякий раз, когда вы направляете ANTHROPIC_BASE_URL на LLM-шлюз или прокси, независимо от вашего плана. Запрос к серверу по умолчанию требует Claude Code v2.1.278 или новее.
  • Сессия Claude apps gateway с выполненным входом: требуется Claude Code v2.1.280 или новее

Там, где сервер проверяет действия, решение по ним определяют его вердикты. Возможны ещё два исхода:

  • Сервер не проверяет сессию: ответ завершается без результатов проверки, или сервер отвечает, что не проверяет эту сессию. Наиболее частые причины — LLM-шлюз или прокси, который отбрасывает запрос на проверку или её результаты, а также платформа, регион или учётные данные, для которых проверки на стороне сервера ещё недоступны. Claude Code переключается на собственные запросы классификатора. Как только этот резервный вариант закрепляется на оставшуюся часть сессии, Claude Code показывает уведомление о плате за запросы классификатора в учётных записях, где эти запросы оплачиваются.
  • Сервер не выносит вердикт по действию: Claude Code отклоняет действие, а не выполняет его без проверки. При любом подключении это происходит, когда ответ завершается до поступления результатов проверки или результаты приходят в форме, которую Claude Code не может прочитать. К любому из этих случаев может привести LLM-шлюз или прокси, который обрывает ответы или переписывает результаты. При прямом подключении к Anthropic API это также происходит, когда проверка на сервере для действия завершается сбоем, например по тайм-ауту. В разделе Сервер не вернул вердикт безопасности описаны сообщение об отклонении, что происходит при повторяющихся отклонениях и что делать.

Чтобы не запрашивать сервер и всегда использовать собственные запросы классификатора Claude Code, установите CLAUDE_CODE_AUTO_MODE_SERVER=0. При прямом подключении к Anthropic API эта переменная требует Claude Code v2.1.281 или новее. Значение 1 в этом случае включает серверную проверку в сессии, где её ещё нет, если только вы также не установили CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1. Если вы установили CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 и оставили CLAUDE_CODE_AUTO_MODE_SERVER незаданной, Claude Code также перестаёт запрашивать сервер, за исключением случаев, описанных в разделе Отключение предварительных возможностей.

Что классификатор блокирует по умолчанию

Классификатор доверяет вашему рабочему каталогу и remote-репозиториям, которые были для него настроены на момент запуска сессии. Remote, добавленный или перенаправленный во время сессии с помощью git remote add или git remote set-url, не считается доверенным, а всё остальное рассматривается как внешнее, пока вы не настроите доверенную инфраструктуру. До v2.1.200 remote-репозитории, добавленные посреди сессии, также считались доверенными.

Блокируется по умолчанию:

  • Загрузка и выполнение кода, например curl | bash
  • Отправка чувствительных данных на внешние эндпоинты
  • Развёртывания и миграции в production
  • Массовое удаление в облачном хранилище
  • Предоставление разрешений IAM или прав на репозиторий
  • Изменение общей инфраструктуры
  • Необратимое уничтожение файлов, существовавших до начала сессии
  • Force push
  • Коммит или push изменения, которое при запуске отправит секреты или чувствительные данные за пределы репозитория или расширит то, что раскрывает развёртывание. Сюда относятся CI workflow или конфигурация развёртывания, передающие секрет получателю, который его ещё не получает, скрипт или шаг настройки, который читает хранилище секретов и отправляет данные наружу, а также изменение конфигурации, расширяющее то, что публикует развёртывание, например настройка реестра, видимости, артефакта или sourcemap. Проверка действует на любой ветке, действует даже для общедоступного репозитория и срабатывает при коммите или push изменения независимо от того, запускает ли этот коммит или push конвейер; чтобы снять блокировку, нужно назвать эффект выполнения, а не только коммит или push. До v2.1.211 эта проверка ограничивалась веткой по умолчанию: push в неё блокировался, если он содержал чувствительный контент, изменения, скрытые или описанные не так, как вы просили, контент, перенесённый из-за пределов репозитория, или обходил проверку, которую вы запрашивали
  • git reset --hard, git checkout -- ., git restore ., git clean -fd, git stash drop или git stash clear, которые, по предположению классификатора, отбросят незафиксированные изменения
  • git commit --amend, если коммит в HEAD был создан не в этой сессии
  • Начиная с v2.1.198 — git commit --amend, если коммит в HEAD уже был отправлен через push. Изменение только сообщения не блокируется: --amend -m без новых подготовленных изменений для коммита, который Claude создал в этой сессии
  • terraform destroy, pulumi destroy, cdk destroy или terragrunt destroy, а также применение плана, который уничтожает ресурсы
  • Запись в менеджер секретов или изменение записей DNS либо сертификатов TLS
  • Слияние pull request, который не одобрил ни один человек, одобрение собственного pull request Claude или отключение проверок CI
  • Публикация комментария, который сам является командой для автоматизации, например atlantis apply или /deploy либо /merge бота
  • Переключение, постепенное включение или удаление feature-флага в production
  • Применение изменений инфраструктуры к защищённой области действия IaC, а также вывод узлов кластера из работы (drain) и их удаление
  • Запись в общий вычислительный кластер, выходящая за пределы названного вами ресурса, например селектор меток или --all, который затрагивает задания других пользователей
  • Создание ресурсов Kubernetes, которые работают на каждом узле или перехватывают трафик кластера, например DaemonSets и admission webhooks
  • Интерактивные оболочки или проброс портов на чувствительную удалённую цель
  • Открытие туннеля или обратной оболочки, делающих локальный сервис доступным из публичного интернета
  • Вывод действующих учётных данных или токена в транскрипт или файл
  • Доступ к расположению, указанному как расположение чувствительных данных в вашем окружении, или копирование данных из него. Начиная с v2.1.198 это также блокирует отправку данных из такого расположения аудитории, которую запись исключает
  • Установка пакета в обход вашего внутреннего реестра пакетов через публичный реестр. Начиная с v2.1.198 это также применяется, когда вы сообщили Claude в диалоге о существовании внутреннего реестра или зеркала, а не только когда такой реестр указан в вашем окружении
  • Запуск команды с флагом, отключающим защитный механизм, например --insecure
  • Запуск цикла автономного агента, который работает без подтверждения человеком или песочницы, например запущенного с --dangerously-skip-permissions или --no-sandbox. Начиная с v2.1.198 это также охватывает запуск стороннего агента или eval harness с отключёнными изоляцией и подтверждением каждого действия, например runner, запущенного с --yes-always
  • Действия браузера Claude in Chrome, которые могут отправить содержимое страницы, cookie или учётные данные за пределы источника

Некоторые из этих категорий зависят от записей окружения, таких как чувствительные удалённые цели и защищённые области действия IaC, которые можно сузить до конкретных имён.

Claude Code v2.1.198 и более поздних версий также блокирует по умолчанию следующее:

  • Удаление файлов в /tmp, $TMPDIR или другом общем каталоге временных файлов или кэша по подстановочному знаку, glob-шаблону или фильтру по возрасту, а не по конкретному указанному пути
  • Включение чувствительных сведений в контент, отправляемый, загружаемый, публикуемый или записываемый для других людей или в общие системы, если ваше собственное сообщение не разрешало передавать эти сведения данному получателю. Тексты PR и issue, сообщения коммитов и комментарии считаются таким исходящим контентом, когда репозиторий находится за пределами границы доверия или является общедоступным, включая собственные общедоступные репозитории вашей организации; внутренние пути к файлам, кодовые названия, данные из реальных ответов API, такие как адреса электронной почты или идентификаторы учётных записей, и идентификаторы инфраструктуры считаются чувствительными сведениями. Применение к PR, issue и сообщениям коммитов требует Claude Code v2.1.200 или новее. Реальные персональные данные из ответа API в тексте PR или issue, такие как адрес электронной почты, идентификатор учётной записи или организации либо метрика использования, требуют, чтобы вы назвали эти сведения и получателя, независимо от видимости репозитория или границы доверия. Эта проверка требует Claude Code v2.1.203 или новее
  • Отправка нажатий клавиш в собственную панель tmux Claude Code для управления его собственным интерфейсом, которую классификатор рассматривает как изменение Claude собственных разрешений или надзора за собой

Claude Code v2.1.200 и более поздних версий также блокирует по умолчанию следующее:

  • Комментирование, удаление или принудительное прохождение теста или проверки (assertion), защищающих поведение, связанное с безопасностью, например аутентификацию, контроль доступа, валидацию входных данных или изоляцию в песочнице
  • Удаление или уничтожение ресурса с состоянием, который Claude не создавал в этой сессии, когда не применяется более конкретное правило удаления и вы не назвали этот ресурс
  • Перенаправление базового URL API, эндпоинта прокси, получателя webhook или зеркала реестра на сторонний хост, не соответствующий задаче, в том числе в файлах-примерах, таких как .env.example
  • Изменение того, куда выполняются push, с помощью git remote set-url или git remote add, если вы не назвали новый remote
  • Push секретов, персональных или доверенных данных в репозиторий, известный как общедоступный, или push туда конфиденциальных материалов, не относящихся к собственной работе этого репозитория. Единственное исключение для персональных или доверенных данных — собственная тематика репозитория dotfiles, а контент из приватного репозитория, попадающий на любую общедоступную площадку, блокируется так же; оба уточнения требуют Claude Code v2.1.203 или новее. До v2.1.203 персональные данные относились к той же группе, что и конфиденциальные материалы, и блокировались, только если не относились к собственной работе репозитория. Если видимость репозитория не установлена, классификатор не блокирует действие только на этом основании; вместо этого он оценивает контент по другим правилам
  • Открытие pull request в другой репозиторий или организацию, создание форка с помощью gh repo fork или push в сторонний репозиторий, если вы не назвали эту внешнюю цель

Claude Code v2.1.203 и более поздних версий также блокирует по умолчанию следующее:

  • Попадание контента из чувствительного локального хранилища или из файла, имя, путь или тип которого указывает на его чувствительность, в коммит, push, текст PR или issue, gist или paste либо публикацию пакета, если вы не назвали и источник, и получателя. Сюда относятся транскрипты сессий и логи диалогов, скрытые каталоги с учётными данными и конфигурацией, такие как ключи SSH, облачные учётные данные, профили браузера и история оболочки, а также экспорты пользовательских данных, и то, что репозиторий приватный, блокировку не снимает

Claude Code v2.1.205 и более поздних версий также блокирует по умолчанию следующее:

  • Запись в транскрипты сессий Claude Code — файлы истории .jsonl в ~/.claude/projects/ или в настроенном вами каталоге конфигурации — напрямую или через shell-команду. Правило также распространяется на строки метаданных, которые Claude Code добавляет к каждой записи транскрипта для собственных проверок. Чтение транскрипта не блокируется

  • Рекурсивное принудительное удаление, например rm -rf "$VAR" или Remove-Item -Recurse -Force $dir, целью которого является переменная оболочки, нигде не присвоенная в диалоге, который видит классификатор, или glob-шаблон, начинающийся с такой переменной. Значение получено только из вывода более ранней команды, который классификатор никогда не получает, поэтому классификатор не может сверить цель удаления с другими правилами удаления. Блокировка снимается, когда вы называете точный удаляемый путь или когда Claude повторно запускает удаление, вписав в команду вычисленный буквальный путь. Удаления, цель которых классификатор может вычислить, не затрагиваются.

    Glob-шаблон непосредственно под переменной, как в rm -rf "$VAR"/*, вместо этого считается критическим путём. Цели Remove-Item, которые представляют собой просто * или заканчиваются на /* или \*, никогда не доходят до классификатора: Claude Code сразу их отклоняет.

Claude Code v2.1.257 и более поздних версий также блокирует по умолчанию следующее:

  • Запрос учётных данных у эндпоинта метаданных облачного экземпляра, например 169.254.169.254, или явная аутентификация облачного, кластерного или реестрового вызова с помощью собственного сервисного аккаунта или идентификатора узла машины
  • Обращение к публичному хосту иным путём, чем прямой запрос, например через туннель, обратную оболочку или конфигурацию резолвера или прокси, переписанную так, чтобы указывать вовне
  • Чтение учётных данных, принадлежащих хосту, а не вашей задаче, например сертификатов узла или данных аутентификации узла в реестре контейнеров
  • Подключение к соседним контейнерам, подам или виртуальным машинам, которые Claude не запускал, или к узлу, на котором работает контейнер, а также их сканирование

Если Claude Code работает в среде, где одно из этих действий должно быть разрешено, опишите такую конфигурацию в записи Host containment в autoMode.environment.

Claude Code v2.1.261 и более поздних версий также блокирует по умолчанию следующее:

  • Публикация или запись ссылки на общедоступный сервис для paste, диаграмм или обмена данными в сообщении, тексте PR или issue, документе или в любом другом месте, где ссылка будет открыта или загружена, когда сам URL содержит передаваемый контент, если вы не назвали этот сервис

Разрешено по умолчанию:

  • Локальные операции с файлами в вашем рабочем каталоге
  • Установка зависимостей, объявленных в ваших lock-файлах или манифестах
  • Чтение .env и отправка учётных данных в соответствующий им API
  • HTTP-запросы только для чтения
  • Push в любую ветку репозитория, в котором вы работаете, включая ветку по умолчанию. Это не распространяется на ветку, не являющуюся веткой по умолчанию, имя которой обозначает её как цель развёртывания или публикации, например production или gh-pages: push в неё классификатор оценивает отдельно. Содержимое push по-прежнему проверяется по другим правилам, правила permissions.deny по-прежнему могут блокировать команды push в том виде, в каком они написаны, в любом режиме, и собственная защита веток на стороне remote по-прежнему действует. До v2.1.211 по умолчанию разрешались только push в ветку, с которой вы начали, в ветки, созданные Claude, и рутинные push в ветку по умолчанию, а до v2.1.203 любой прямой push в ветку по умолчанию блокировался
  • Удаление именно тех заданий, которые Claude создал ранее в той же сессии
  • Чтение, проверка или написание кода, конфигураций и моделей угроз, связанных с безопасностью, в рамках вашей задачи
  • Сообщения между агентами, работающими вместе в одной многоагентной сессии
  • Отправка данных на доверенные домены, в бакеты и сервисы, которые вы указали в environment. Это распространяется только на передачу данных, а не на деструктивные операции или операции с учётными данными в той же инфраструктуре
  • Навигация Claude in Chrome на доверенный внутренний домен, localhost или названный вами URL

Команды в песочнице по умолчанию не получают доступа к сети. Claude указывает хосты, необходимые команде, в самой команде, классификатор проверяет их вместе с командой, и одобренный список открывает эти хосты только для этой одной команды. В разделе Разрешённые домены для отдельной команды описано, что список может и не может открыть и что происходит, когда команда обращается к неуказанному хосту.

Выполните claude auto-mode defaults, чтобы вывести полные списки правил в формате JSON. Если рутинные действия блокируются, администратор может добавить доверенные репозитории, бакеты и сервисы через настройку autoMode.environment: см. Настройка авторежима.

Push в любую ветку репозитория, в котором вы работаете, и создание pull request, соответствующего вашему запросу, выполняются без запроса разрешения, если только push или pull request не подпадают под список блокировок, например утечку секретов или чувствительных данных за пределы репозитория или pull request в другой репозиторий или организацию. Чтобы требовать проверки человеком перед этими командами, оставаясь в авторежиме, добавьте правила permissions.ask, которые сопоставляются с командой в том виде, в каком она написана: см. Типичные ограничения.

Первое чтение за пределами рабочих каталогов

Пока permissions.blockReadsOutsideWorkingDirectories отключена, чтение файлов в авторежиме выполняется без запроса разрешения, в том числе за пределами рабочих каталогов. Когда Claude впервые использует инструмент Read, Grep или Glob для пути за их пределами, Claude Code спрашивает, разрешить ли это чтение.

Запрос не появляется в неинтерактивных запусках -p и фоновых сессиях; чтение там выполняется как прежде.

Каким бы ни был ваш ответ, Claude продолжает работу:

  • Да, и и дальше разрешать любое чтение за пределами рабочих каталогов: чтение выполняется, последующие чтения за пределами рабочих каталогов выполняются как прежде, а Claude Code сохраняет ваш ответ, чтобы запрос больше не появлялся
  • Нет, и с этого момента блокировать чтение за пределами рабочих каталогов: в чтении отказано, а Claude Code устанавливает permissions.blockReadsOutsideWorkingDirectories в значение true в ваших пользовательских настройках, из-за чего файловые инструменты отказывают в таком чтении во всех последующих сессиях и во всех режимах разрешений. Чтобы позже позволить Claude прочитать такой путь, добавьте его каталог с помощью /add-dir или удалите эту настройку.
  • Нет, и спросить снова в следующий раз: в чтении отказано, и при следующем чтении за пределами рабочих каталогов запрос появится снова
  • Да, но спросить снова в следующий раз: чтение выполняется, ничего не сохраняется, и при следующем чтении за пределами рабочих каталогов запрос появится снова

Ограничения, которые вы задаёте в диалоге

Классификатор воспринимает ограничения, которые вы задаёте в диалоге, как сигнал к блокировке. Если вы скажете Claude «не делай push» или «подожди, пока я проверю, прежде чем развёртывать», классификатор заблокирует соответствующие действия, даже если правила по умолчанию их бы разрешили. Ограничение действует, пока вы не снимете его в одном из следующих сообщений. Собственное суждение Claude о том, что условие выполнено, его не снимает.

Ограничения не сохраняются как правила. Классификатор заново считывает их из транскрипта при каждой проверке, поэтому ограничение может быть потеряно, если сжатие контекста удалит сообщение, в котором оно было задано. Для надёжной гарантии вместо этого добавьте правило deny.

Подтверждения, которые вы даёте в диалоге

Если вы скажете Claude, что заблокированное действие разрешено, классификатор воспримет это как ваше подтверждение и может снять блокировку. От формулировки зависит, будет ли действие выполнено и насколько широко распространяется подтверждение:

  • Назовите действие и его конкретику: ваше сообщение должно назвать действие и конкретное обстоятельство, которое делает его опасным, например ветку для force push. Одно лишь упоминание глагола ничего не снимает, поэтому «можешь сделать force push» оставляет блокировку в силе.
  • Рассчитывайте на одно действие: подтверждение распространяется на названное вами деструктивное действие, поэтому последующее действие снова блокируется, если только вы не дали подтверждение как постоянное. Чтобы не подтверждать рутинный шаблон каждый раз по одному действию, добавьте его в autoMode.allow.
  • Некоторые блокировки остаются в силе: порядок приоритета классификатора определяет, какие блокировки может снять ваше подтверждение. Чтобы выполнить шаг, блокировку которого оно не снимает, выйдите из авторежима и ответьте на запрос разрешения.

Когда авторежим переключается на резервный вариант

Когда авторежим не может подтвердить действия вашей сессии, дальнейшее зависит от ситуации:

  • Заблокированное действие: Claude Code показывает уведомление и выводит действие в /permissions на вкладке Recently denied, где можно нажать r, чтобы повторить попытку с ручным подтверждением.
  • Повторяющиеся блокировки: если классификатор блокирует действие 3 раза подряд или 20 раз в сумме, авторежим приостанавливается, и Claude Code снова начинает запрашивать разрешения. Подтверждение запрошенного действия возобновляет авторежим. О том, как подсчитываются блокировки, см. Пороги повторяющихся блокировок.
  • Нет вердикта от классификатора: когда проверка безопасности, не связанная с авторежимом, отклоняет собственный запрос классификатора или ответ классификатора не удаётся разобрать, Claude Code отклоняет действие без уведомления и без записи в Recently denied. Какое сообщение показывается в каждом случае и что делать, см. в разделе Авторежим не может определить безопасность действия.
  • Нет вердикта от сервера: при проверке классификатором на стороне сервера Claude Code отклоняет действие, по которому сервер не вынес вердикт, и останавливает ход после десяти подряд ответов без вердикта. См. Сервер не вернул вердикт безопасности.
  • Переключение режима во время проверки: если вы переключаете режим разрешений, пока проверка классификатора ещё не завершена, Claude Code отбрасывает вердикт, который новый режим не запросил бы. Вместо этого вам показывается запрос подтверждения, либо действие автоматически отклоняется в режиме dontAsk.

Пороги повторяющихся блокировок

Пороги в 3 блокировки подряд и 20 блокировок в сумме не настраиваются. Общий счётчик сохраняется в течение сессии и сбрасывается только тогда, когда его собственный предел вызывает переключение на резервный вариант. Claude Code не учитывает отклонение ни в одном из порогов, если собственный запрос классификатора отклонила проверка безопасности, не связанная с авторежимом.

У неинтерактивного запуска -p без --permission-prompt-tool нет запроса разрешения, на который можно было бы переключиться. Когда повторяющиеся блокировки достигают порога, действие не выполняется, а Claude продолжает работу. Claude Code не останавливает запуск.

Повторяющиеся блокировки обычно означают, что классификатору не хватает контекста о вашей инфраструктуре. Используйте /feedback, чтобы сообщить о ложных срабатываниях, или попросите администратора настроить доверенную инфраструктуру.

Как авторежим оценивает действия

В следующих разделах описаны порядок, в котором Claude Code оценивает действие, то, как классификатор проверяет работу субагентов, и то, какие затраты и задержку добавляют вызовы классификатора.

Каждое действие проходит через фиксированный порядок принятия решений. Срабатывает первый подходящий шаг:
1. Действия, соответствующие вашим [правилам allow, ask или deny](/docs/ru/permissions#manage-permissions), разрешаются сразу, со следующими исключениями:
   * Запись в [защищённые пути](#protected-paths) направляется классификатору, даже если подходит правило allow
   * Никакое правило allow не одобряет удаления с помощью `rm` и `rmdir`, нацеленные на [критический путь](#critical-paths)
   * Инструменты MCP, помеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), запрашивают у вас подтверждение напрямую, даже если подходит правило allow; то же самое делают инструменты коннекторов, для которых [ваша организация установила `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, куда эта настройка доходит до Claude Code
   * Shell-команда, содержащая [разрешённые домены для отдельной команды](/docs/ru/sandboxing#per-command-allowed-domains-in-auto-mode), также направляется классификатору, даже если подходит правило allow, потому что правило одобряет команду, а не её хосты
   * Правила ask, сопоставляемые с содержимым команды, например `Bash(git push *)`, приводят к запросу разрешения
   * Запись, которую [проверка символических ссылок](/docs/ru/permissions#symlinks) разрешает в защищённый путь, вызывает запрос подтверждения, если путь, запрошенный Claude, сам по себе не защищён
2. Действия только для чтения и редактирование файлов в вашем рабочем каталоге одобряются автоматически, за исключением записи в [защищённые пути](#protected-paths) и [первого чтения за пределами рабочих каталогов](#first-read-outside-the-working-directories), которое вызывает запрос подтверждения
   * В сессии с [проверкой классификатором на стороне сервера](#server-side-classifier-review) shell-команды только для чтения и [выполняемые в песочнице](/docs/ru/sandboxing#sandbox-modes) ждут этой проверки и блокируются, если она их помечает
   * Запись внутри вашего рабочего каталога, которую [проверка символических ссылок](/docs/ru/permissions#symlinks) разрешает в расположение за его пределами, вызывает запрос подтверждения
   * Когда Claude читает [артефакт, созданный кем-то другим](/docs/ru/artifacts#read-an-artifact-shared-with-you), применяются случаи подтверждения, перечисленные в том разделе
3. Всё остальное направляется классификатору, кроме [удалений критических путей](#critical-paths) при их обработке по умолчанию. Инструменты коннекторов и инструменты MCP с `requiresUserInteraction`, которые запрашивают подтверждение напрямую на шаге 1, тоже никогда не доходят до классификатора, поэтому ни подтверждение, требуемое организацией, ни шаг получения согласия не одобряются автоматически
4. Если классификатор блокирует действие, Claude получает причину. В большинстве сессий причина указывает правило, с которым совпал классификатор, например `[Data Exfiltration]`, а не даёт письменное объяснение; см. [Просмотр отклонений](/docs/ru/auto-mode-config#review-denials)

Установленный вами [мод](/docs/ru/plugins/mods/overview), который обрабатывает `tool.check`, может одобрить действие до шага 3, и классификатор не проверяет действие, одобренное модом. См. [Расширение разрешений с помощью хуков](/docs/ru/permissions#extend-permissions-with-hooks).

При входе в авторежим широкие правила allow, дающие возможность выполнять произвольный код, отбрасываются:

* Универсальные `Bash(*)` или `PowerShell(*)`
* Интерпретаторы с подстановочными знаками, например `Bash(python*)`
* Команды запуска менеджеров пакетов
* Правила allow для `Agent`
* Правила allow для [`Monitor`](/docs/ru/tools-reference#monitor-tool), потому что Claude Code выполняет команды Monitor через оболочку

Узкие правила, например `Bash(npm test)`, остаются в силе. Claude Code восстанавливает отброшенные правила, когда вы выходите из авторежима. До v2.1.236 Claude Code оставлял правила allow для `Monitor` в силе в авторежиме, поэтому правило, совпадавшее со всем инструментом, одобряло команды Monitor без проверки классификатором.

Кроме того, перед командой, которая отбросила бы незафиксированную работу, например `git reset --hard` или `rm -rf`, Claude Code сам выполняет `git status` и показывает классификатору, есть ли подготовленные, изменённые или неотслеживаемые изменения. Claude Code сообщает о неотслеживаемых файлах в этой проверке, даже если конфигурация git репозитория задаёт `status.showUntrackedFiles=no`.

В запросах классификатора, которые отправляет сам Claude Code, классификатор видит сообщения пользователя, вызовы инструментов, кроме операций поиска только для чтения, таких как чтение файлов и поиск, а также содержимое вашего CLAUDE.md. Результаты инструментов из этих запросов удаляются, поэтому враждебный контент в файле или на веб-странице не может напрямую манипулировать классификатором.

Вы можете снабдить результат вызова аннотацией с помощью [поля `classifierContext` хука PostToolUse](/docs/ru/hooks#annotate-a-result-for-the-auto-mode-classifier), которое классификатор воспринимает как контекст, предоставленный приложением. Поле требует Claude Code v2.1.236 или новее.

Отдельный зонд на стороне сервера сканирует входящие результаты инструментов и помечает подозрительный контент до того, как Claude его прочитает. Подробнее о том, как эти уровни работают вместе, см. в [анонсе авторежима](https://claude.com/blog/auto-mode) и [подробном инженерном разборе](https://www.anthropic.com/engineering/claude-code-auto-mode).
Как авторежим обрабатывает субагентов

Классификатор проверяет работу субагентов в трёх точках:

  1. Перед запуском субагента оценивается описание делегированной задачи, поэтому задача, выглядящая опасной, блокируется в момент создания субагента.
  2. Во время работы субагента каждое его действие проходит через тот же порядок принятия решений, что и в родительской сессии, с теми же правилами блокировки и разрешения. Любой permissionMode во frontmatter субагента игнорируется.
  3. Когда субагент завершает работу, классификатор проверяет его работу и итоговый отчёт до того, как родитель прочитает отчёт. Если классификатор помечает работу или отчёт субагента либо отдельная проверка безопасности API отклоняет проверку, отчёт всё равно доставляется, но с предупреждением о безопасности в начале. Если классификатор недоступен для проверки, отчёт приходит с примечанием о том, что работу субагента нужно проверить, прежде чем на неё опираться.
Стоимость и задержка

По умолчанию классификатор работает на Claude Sonnet 5, а не на модели, выбранной через /model. Модель классификатора, которую Anthropic настраивает на стороне сервера, имеет приоритет над этим значением по умолчанию. Если модель вашей сессии — Claude Sonnet 4.6 или если availableModels исключает Sonnet 5, классификатор вместо этого работает на модели сессии либо на модели Opus, когда сессия работает на модели Fable. У провайдеров, отличных от Anthropic API, этим резервным вариантом Opus является модель, заданная в ANTHROPIC_DEFAULT_OPUS_MODEL, или Opus 5, если она не задана.

Первый запрос авторежима в сессии проверяет значение по умолчанию Sonnet 5: если запрос выполняется успешно, Sonnet 5 остаётся моделью классификатора для этой сессии, а если он завершается сбоем из-за недоступности модели, сессия использует резервный вариант.

На планах Enterprise и в учётных записях, использующих Claude API, Claude Platform on AWS, Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry, вызовы классификатора учитываются в вашем расходе токенов. Каждая проверка отправляет часть транскрипта вместе с ожидающим действием, добавляя один цикл запроса и ответа перед выполнением. Чтение и редактирование в рабочем каталоге вне защищённых путей обходят классификатор, поэтому накладные расходы возникают в основном из-за shell-команд и сетевых операций. Там, где сервер проверяет действия в составе запросов к модели в рамках сессии, отдельных вызовов классификатора, которые нужно учитывать, нет; см. Проверка классификатором на стороне сервера.

Доступ к сети в песочнице не добавляет запросов классификатора для каждого соединения. Классификатор оценивает хосты, указанные командой, вместе с самой командой в рамках одной проверки, а Claude Code сверяет каждое соединение с одобренным списком, не вызывая классификатор повторно.

Разрешить только предварительно одобренные инструменты с режимом dontAsk

Если вы установите режим dontAsk, Claude Code автоматически отклоняет каждый вызов инструмента, который иначе требовал бы запроса. Claude по-прежнему выполняет действия, которые не требуют одобрения в режиме Manual, такие как чтение файлов в ваших рабочих каталогах и команды Bash только для чтения, а также действия, соответствующие вашим правилам permissions.allow, и вызовы, одобренные hook PreToolUse. Используйте этот режим для конвейеров CI или ограниченных сред, где вы предварительно определяете, что Claude может делать; сеанс никогда не ждёт ввода. Строка состояния показывает ⏵⏵ don't ask on, пока этот режим активен.

Claude Code отклоняет вызовы, соответствующие вашим явным правилам ask, а не запрашивает их. Он также отклоняет встроенный инструмент AskUserQuestion даже если ваши правила разрешения совпадают, и делает то же самое с инструментами соединителя ваша организация установила на ask в сеансах, где это параметр достигает Claude Code. Он отклоняет инструменты MCP, отмеченные _meta["anthropic/requiresUserInteraction"] таким же образом, потому что их карточка одобрения требует ответа, который этот режим никогда не собирает; это требует Claude Code версии 2.1.199 или позже.

Удаления rm и rmdir, нацеленные на критический путь, такие как rm -rf / и rm -rf ~, отклоняются даже когда правило разрешения совпадает с ними или hook PreToolUse их одобряет.

Облачные сеансы игнорируют defaultMode: "dontAsk"; см. bypassPermissions для получения подробной информации.

Установите его при запуске с флагом:

claude --permission-mode dontAsk

Пропустить все проверки с режимом bypassPermissions

Режим bypassPermissions отключает запросы разрешений и проверки безопасности, чтобы вызовы инструментов выполнялись немедленно, включая записи в защищённые пути.

Действия, которые ни один режим не одобряет автоматически, по-прежнему требуют запроса в этом режиме. Чтение публичного артефакта другой организации требует вашего подтверждения, а этот режим его не запрашивает, поэтому Claude не может прочитать такой артефакт. Запреты Remove-Item в PowerShell также применяются в этом режиме.

Две гарантии обмена сообщениями между сеансами по-прежнему применяются в этом режиме, и в интерактивных сеансах режима plan, где доступны разрешения на обход:

  • Запрос одобрения isolatePeerMachines для сообщений вашим сеансам за пределами этой машины по-прежнему появляется.
  • Когда не применяется значение crossSessionInbound, Claude Code держит входящее сообщение от другого вашего сеанса для вашего одобрения и доставляет без запроса только когда отправляющий сеанс идентифицирует себя как также обходящий запросы разрешений. Если вы покидаете режим разрешений, пока сообщения удерживаются, Claude Code повторно применяет входящие правила и доставляет любое удерживаемое сообщение, которое они теперь принимают.

В интерактивных сеансах терминала с доступными разрешениями на обход Claude Code также не применяет блокировки режима plan. Claude по-прежнему инструктируется планировать без редактирования, но редактирование файла или команда оболочки, которую он пытается выполнить во время планирования, выполняется без запроса. Явные правила ask и удаления rm и rmdir, нацеленные на критический путь, по-прежнему требуют запроса.

Режим plan сохраняет свои блокировки везде, где Claude Code работает без интерактивного терминала, включая неинтерактивные запуски с -p, сеансы Agent SDK и беседы в панели чата расширения VS Code. Там --allow-dangerously-skip-permissions делает bypassPermissions доступным для выбора позже.

Вы не можете войти в bypassPermissions из сеанса, который вы запустили без него включённого. Включите его при запуске с permissions.defaultMode: "bypassPermissions" или с включающим флагом:

claude --permission-mode bypassPermissions

Флаг --dangerously-skip-permissions эквивалентен.

Claude Code отклоняет bypassPermissions в сеансе, который вы запускаете с --restricted. --restricted требует Claude Code v2.1.248 или позже.

В первый раз, когда вы запускаете интерактивный сеанс с этим режимом включённым, Claude Code показывает диалоговое окно предупреждения, просящее вас принять ответственность за действия, предпринятые без проверок разрешений:

  • Если вы согласитесь: Claude Code устанавливает skipDangerousModePermissionPrompt на true в ~/.claude/settings.json, поэтому более поздние сеансы пропускают диалоговое окно. Чтобы увидеть диалоговое окно снова, удалите ключ из этого файла или установите его на false. Справка skipDangerousModePermissionPrompt перечисляет другие файлы параметров, где вы или ваша организация можете установить его.
  • Если вы отклоните: Claude Code выходит.

В неинтерактивном режиме диалоговое окно не показывается, и фоновый сеанс, запущенный с --bg, отклоняется до тех пор, пока вы не приняли диалоговое окно в интерактивном сеансе.

На Linux и macOS Claude Code отклоняет запуск в этом режиме при запуске от пользователя root или под sudo:

--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons

Проверка пропускается автоматически внутри признанной песочницы. Чтобы запустить автономно в контейнере, используйте конфигурацию dev container, которая запускает Claude Code от непривилегированного пользователя.

Облачные сеансы не учитывают defaultMode: "bypassPermissions" или "dontAsk" из ваших файлов параметров, поэтому проверенные в репозитории параметры не могут запустить облачный сеанс в режиме bypass-permissions. Параметр игнорируется молча, и сеанс запускается в режиме разрешений, показанном в селекторе режима вместо этого. См. Переключение режимов разрешений для информации о том, какие режимы предлагают облачные сеансы.

Защищённые пути

Записи в небольшой набор путей никогда не одобряются автоматически, кроме режима bypassPermissions и интерактивных сеансов терминала в режиме планирования с доступными разрешениями на обход. Это предотвращает случайное повреждение состояния репозитория и собственной конфигурации Claude.

Режим Записи в защищённые пути
default, acceptEdits Требуют подтверждения
plan Разрешены в интерактивных сеансах терминала с доступными разрешениями на обход. В противном случае маршрутизируются классификатору, когда режим auto доступен во время планирования, и требуют подтверждения, когда он не доступен
auto Маршрутизируются классификатору
dontAsk Отклоняются
bypassPermissions Разрешены

В сеансе, запущенном с --restricted, который требует Claude Code v2.1.248 или позже, классификатор не может одобрить записи в защищённые пути.

В режимах, которые маршрутизируют записи в защищённые пути классификатору, запись, которую проверка символических ссылок разрешает в защищённый путь, требует вашего подтверждения вместо этого, когда путь, который запросил Claude, сам по себе не защищён.

Правила permissions.allow в файлах параметров не предварительно одобряют записи в защищённые пути. Проверка безопасности выполняется до того, как Claude Code оценивает правила allow из параметров, поэтому запись вроде Edit(.claude/**) в ~/.claude/settings.json или .claude/settings.json не изменяет результат для каждого режима в таблице выше. В режимах, которые требуют подтверждения, запрос для записи в папку .claude/ проекта или в ~/.claude/ может предложить один из этих вариантов, ограниченных сеансом:

  • Для папки .claude/ проекта: Да, и разрешить Claude редактировать файлы в папке .claude этого проекта для этого сеанса
  • Для ~/.claude/: Да, и разрешить Claude редактировать файлы в своей папке ~/.claude для этого сеанса

Защищённые каталоги:

  • .git
  • .config/git
  • .vscode
  • .idea
  • .husky
  • .cargo
  • .devcontainer
  • .yarn
  • .mvn
  • .claude, кроме .claude/worktrees, где Claude хранит свои собственные git worktrees
  • Каталог, который вы загрузили с помощью --plugin-dir, потому что Claude Code перезагружает и запускает код мода из него при изменении файла

Защищённые файлы:

  • .gitconfig, .gitmodules
  • .bashrc, .bash_profile, .bash_login, .bash_aliases, .bash_logout, .zshrc, .zprofile, .zshenv, .zlogin, .zlogout, .profile, .envrc
  • .npmrc, .yarnrc, .yarnrc.yml, .pnp.cjs, .pnp.loader.mjs, .pnpmfile.cjs, bunfig.toml, .bunfig.toml
  • .bazelrc, .bazelversion, .bazeliskrc
  • .pre-commit-config.yaml, lefthook.yml, lefthook.yaml, .lefthook.yml, .lefthook.yaml
  • gradle-wrapper.properties, maven-wrapper.properties
  • .devcontainer.json
  • .ripgreprc, pyrightconfig.json
  • .mcp.json, .claude.json

Критические пути

Критические пути — это каталоги, которые Claude Code защищает от команд rm и rmdir, такие как корневой каталог файловой системы, ваш домашний каталог и ваш рабочий каталог.

Claude Code никогда не позволяет правилу permissions.allow или hook PreToolUse, который возвращает "allow", одобрить команду rm или rmdir, которая нацелена на критический путь, даже в режимах, которые пропускают другие запросы. Этот автоматический выключатель защищает от ошибки модели. Совпадающее правило deny по-прежнему полностью блокирует команду.

Что происходит вместо этого, зависит от вашего режима разрешений. Remove-Item и встроенные команды cmd для удаления имеют свои собственные проверки, описанные в Remove-Item в PowerShell.

Какие пути являются критическими

Claude Code рассматривает цель rm или rmdir как критический путь, когда это любое из следующего:

  • Корневой каталог файловой системы
  • Каталоги верхнего уровня, то есть любой прямой потомок корня, такой как /usr, /etc или /data
  • Ваш домашний каталог
  • Корни дисков Windows и их каталоги верхнего уровня, такие как C:\ и C:\Windows
  • Ваш рабочий каталог и его родители
  • Ваши дополнительные рабочие каталоги и их родители, но только когда удаление — это glob под одним из них, такой как rm -rf <dir>/*. rm -rf <dir> на самом каталоге не вызывает эту проверку

Другие цели, которые считаются критическими путями

Claude Code также рассматривает следующие цели rm и rmdir как критические пути. Последний столбец объясняет, почему каждая из них считается критической.

Цель Пример Почему это считается критическим
Glob или косая черта непосредственно под переменной оболочки rm -rf "$DIR"/* Команда становится удалением из корня файловой системы, когда переменная пуста
Та же форма под позиционным параметром, таким как $1 или $@, когда ничто в команде не присваивает ему значение rm -rf "$1"/* Команда расширяется в удаление из корня
Переменная оболочки, за которой следует одно общее имя каталога верхнего уровня, такое как mnt, tmp, usr или Users rm -rf "$TMPDIR/mnt" Когда переменная расширяется пусто, команда удаляет /mnt
Переменная, которую та же команда присваивает из подстановки, выводящей каталог, такой как $(pwd) или $(git rev-parse --show-toplevel) D=$(pwd); rm -rf "$D" Значение может называть ваш рабочий каталог или корень репозитория
Цель, которая является только выводом подстановки команды, когда rm рекурсивна rm -rf "$(pwd)" Claude Code не может проверить цель перед запуском команды
Завершающая подстановка команды после критического пути rm -rf ~/$(cmd) Claude Code проверяет путь, который остался бы, если бы подстановка расширилась пусто, здесь ваш домашний каталог
Цель, которая состоит только из обратных косых черт rm -rf "\\" Git Bash на Windows читает одну обратную косую черту как корень текущего диска, поэтому проверка применяется на каждой платформе

Чтобы отключить проверку на цели, которая является только выводом подстановки команды, установите CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1 в окружении, которое запускает Claude Code.

Удаления внутри вложенных команд и встроенных скриптов

Claude Code также смотрит внутри этих конструкций:

  • Вложенные команды: подоболочка с (...), группа в фигурных скобках с { ...; }, подстановка команд с $(...) или обратные кавычки, или подстановка процесса с <(...). Claude Code находит удаление критического пути, находится ли оно внутри вложенной формы, как в (rm -rf ~) или echo "$(rm -rf ~)", или в другом месте той же команды.
  • Встроенные скрипты: Claude Code проверяет скрипт, переданный оболочке, такой как sh -c или bash -c, на предмет переменных оболочки и позиционных параметров целей.
    • Когда скрипт заключён в двойные кавычки, вызывающая оболочка расширяет его переменные перед тем, как внутренняя оболочка получит скрипт. В find . -name '*.tmp' -exec sh -c "rm -rf \"$1\"/*" _ {} \; команда расширяется в удаление из корня файловой системы один раз для каждого совпадения, и Claude Code рассматривает это как удаление критического пути.
    • Скрипт в одинарных кавычках, который привязывает $1 к реальному значению, как sh -c 'rm -rf "$1"/*' _ {}, не помечается.

Переписать помеченную команду

Как переписать команду, чтобы она прошла проверку, зависит от того, какие из других целей она использует:

  • Glob или косая черта под переменной, такой как $DIR: защитите каждое расширение так, чтобы оболочка остановилась с ошибкой, когда переменная не установлена или пуста, как в rm -rf "${DIR:?}"/*, или используйте буквальный путь. Удаление, чьи расширения защищены таким образом, проходит эту проверку, поэтому в режиме bypassPermissions оно выполняется без запроса, если другая критическая-путь проверка не помечает его.
  • Glob или косая черта под переменной, которая обычно установлена, такой как $HOME: используйте буквальный путь.
  • Переменная, присвоенная из подстановки, выводящей каталог: используйте буквальный путь. Защита "${D:?}" не очищает эту проверку, потому что переменная не пуста.
  • Цель, которая является только выводом подстановки команды: запустите подстановку самостоятельно сначала, а затем удалите буквальные пути, которые она выводит. Запрос говорит Claude сделать то же самое.

Для glob или косой черты под переменной запрос называет помеченную команду rm и говорит, как переписать её, чтобы проверка прошла.

Удаления критических путей в каждом режиме разрешений

Что Claude Code делает с удалением критического пути, зависит от вашего режима разрешений:

Режим Результат
default, acceptEdits Спрашивает вас одобрить его
plan Спрашивает вас одобрить его. Когда классификатор проверяет команды во время планирования и нет доступных разрешений на обход, обрабатывает это как в режиме auto
auto Спрашивает вас одобрить это в терминале с ограничением по времени. В других местах отклоняет это
dontAsk Отклоняет его
bypassPermissions Спрашивает вас одобрить это с ограничением по времени в терминале

Если явное правило ask совпадает с командой, Claude Code спрашивает вас вместо этого, даже в режиме auto и без ограничения по времени. В режимах, которые спрашивают, hook PermissionRequest может ответить на запрос.

Ограничения по времени и отклонения в режимах auto и bypassPermissions

В режимах auto и bypassPermissions запрос в терминале для удаления критического пути показывает обратный отсчёт в две минуты:

  • Если обратный отсчёт закончится до того, как вы ответите, Claude Code отклоняет команду и говорит Claude, что делать вместо этого, поэтому автоматический сеанс продолжает работать.
  • Нажмите любую клавишу, пока запрос открыт, чтобы остановить обратный отсчёт и оставить запрос в ожидании вашего ответа.
  • После трёх таких запросов, которые остаются без ответа в сеансе, Claude Code перестаёт их показывать и немедленно отклоняет дальнейшие удаления критических путей. Отправка нового сообщения начинает отсчёт заново.

В режиме auto, везде, где Claude Code не может показать вам запрос в терминале, он немедленно отклоняет команду, например в неинтерактивных запусках с -p, в сеансах Agent SDK и в панели чата расширения VS Code и приложении Desktop. Отклонение говорит Claude сообщить, что он хотел удалить, и оставить удаление вам.

Обработка auto и bypassPermissions требует Claude Code v2.1.281 или позже. Чтобы отключить это, установите CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT=1 в окружении, которое запускает Claude Code. В режиме auto удаления критических путей затем переходят к классификатору, а в режиме bypassPermissions запрос не имеет ограничения по времени.

Remove-Item в PowerShell

Когда вы включаете инструмент PowerShell, Claude Code даёт Remove-Item и встроенные команды cmd rd, rmdir, del и erase свои собственные проверки, отдельные от списка критических путей rm. Для Remove-Item результат зависит от цели, и первый совпадающий случай применяется:

  • Системные пути: корневой каталог файловой системы и его каталоги верхнего уровня, корни дисков и их каталоги верхнего уровня, и ваш домашний каталог. Claude Code отклоняет команду в каждом режиме, без запроса у вас.
  • Подстановочные знаки: голый * или любая цель, заканчивающаяся на /* или \*, включая glob под переменной оболочки, такой как $dir/*. Claude Code отклоняет команду в каждом режиме, без запроса у вас, перед тем как классификатор её видит.
  • Ваш рабочий каталог или один из его родителей, с -Recurse: Claude Code рассматривает команду как любую другую, которая требует одобрения в вашем режиме разрешений, поэтому он спрашивает вас в режимах, которые спрашивают, отправляет её классификатору в режиме auto и отклоняет её в режиме dontAsk. Режим bypassPermissions пропускает эту проверку.

Случай системных путей также применяется к rd, rmdir, del и erase, когда Claude запускает их через cmd, как в cmd /c rd /s /q C:\Users. По умолчанию Claude Code отклоняет такую команду в каждом режиме, без запроса у вас. Эта проверка cmd требует Claude Code v2.1.283 или позже.

При оценке цели cmd Claude Code рассматривает переменную PowerShell, которая следует за буквальным текстом, как пустую. Это делает cmd /c rd /s /q "C:\$name" удалением C:\, поэтому она также отклоняется. Завершающий подстановочный знак считается папкой, которую он очищает, поэтому cmd /c del /q C:\* отклоняется, а cmd /c del /q dist\* в вашем проекте — нет.

Чтобы отключить проверку cmd, установите CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY=1 в окружении, которое запускает Claude Code. Claude Code игнорирует эту переменную в блоке env файла параметров. Remove-Item на системном пути остаётся отклонённым в любом случае.

См. также

  • Permissions: правила allow, ask и deny; управляемые политики
  • Configure auto mode: скажите классификатору, какую инфраструктуру ваша организация доверяет
  • Hooks: пользовательская логика разрешений через hooks PreToolUse и PermissionRequest
  • Security: гарантии безопасности и лучшие практики
  • Sandboxing: изоляция файловой системы и сети для команд Bash
  • Non-interactive mode: запустите Claude Code с флагом -p