Что такое auto mode

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

На тарифах Pro, Max и Team auto mode - встроенный стартовый режим. Требуется поддерживаемая модель (Claude Opus 4.6 и новее, Sonnet 4.6 и новее, или Fable 5 на прямом API Anthropic); организация может отключить auto mode целиком через настройки. Auto mode снижает число запросов на подтверждение, но не гарантирует безопасность - это инструмент для задач, где вы в целом доверяете направлению работы, а не замена проверке чувствительных операций.

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

Список встроенных блокировок обширный, вот основное: скачивание и выполнение кода из интернета (вроде curl | bash), отправка чувствительных данных на внешние адреса, продакшн-деплои и миграции баз данных, массовое удаление в облачном хранилище, выдача прав IAM или доступа к репозиторию, необратимое удаление файлов, которые существовали до начала сессии, форс-пуш, слияние pull request без одобрения человека, запись в secret-менеджер, изменение DNS-записей или сертификатов.

Также под блокировку попадают команды с флагами, которые отключают защиту (вроде --insecure), запуск полностью автономного агента без песочницы и человеческого одобрения, и печать живых учётных данных в лог сессии или файл.

Что разрешено по умолчанию

Классификатор не тратит время на рутину: локальные файловые операции в рабочей папке, установка зависимостей из lock-файлов, чтение .env и отправка учётных данных на подходящий им API, безопасные HTTP-запросы на чтение. Пуш разрешён в любую ветку репозитория, с которым вы работаете, включая основную ветку - но не в ветку, чьё имя указывает на деплой или публикацию (например, production или gh-pages): такие пуши классификатор оценивает отдельно, как продакшн-деплой.

Почему рутинные операции всё равно блокируются

По умолчанию классификатор доверяет только рабочей папке и настроенным для неё git-remote. Пуш в корпоративную организацию на GitHub или запись в общий облачный бакет команды блокируются до тех пор, пока вы явно не добавите их в список доверенной инфраструктуры - блок autoMode.environment в настройках.

Как описать доверенную инфраструктуру

Записи в autoMode.environment - обычная проза, а не регулярные выражения: классификатор читает их как описание на естественном языке, примерно как вы объясняли бы инфраструктуру новому сотруднику. Настройка хранится в ~/.claude/settings.json для одного разработчика или в managed settings для всей организации.

~/.claude/settings.json
{
  "autoMode": {
    "environment": [
      "$defaults",
      "Source control: github.example.com/acme-corp and all repos under it",
      "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",
      "Trusted internal domains: *.corp.example.com, api.internal.example.com",
      "Key internal services: Jenkins at ci.example.com, Artifactory at artifacts.example.com"
    ]
  }
}

Строка "$defaults" сохраняет встроенные записи - свои добавляются до или после неё в том же массиве. Без этой строки список заменяется полностью, а вместе с ним теряются и встроенные проверки. Полезно описать: организацию и её основной сценарий использования Claude Code, все системы контроля версий, куда пушат разработчики, доверенные облачные бакеты, внутренние домены (API, дашборды, сервисы), ключевые внутренние сервисы - CI, реестр артефактов, внутренний package-реестр, а также чувствительные места - где хранятся персональные и конфиденциальные данные и что считается продакшном.

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

Автоматический черновик: /auto-mode-setup

Команда /auto-mode-setup просит Claude Code самостоятельно набросать записи autoMode.environment на основе CLAUDE.md, README, git-remote проекта и хостов, команд и бакетов, с которыми Claude уже работал в недавних сессиях этого проекта - сами сообщения пользователя при этом не читаются. Черновик показывается целиком, принимается или отклоняется одним решением, а после сохранения дописывается в ~/.claude/settings.json. Команда требует тариф Pro, Max или Team.

Свои правила: allow, soft_deny, hard_deny

Три дополнительных поля заменяют встроенные списки правил классификатора. Порядок приоритета внутри классификатора - четыре уровня: hard_deny блокирует безусловно, ни намерение пользователя, ни allow это не отменяют. soft_deny блокирует следующим - но пользовательское намерение или запись в allow могут снять блокировку. allow - это исключения из soft_deny. И наконец явное намерение пользователя снимает мягкую блокировку, если сообщение прямо и конкретно описывает то самое действие: просьба «наведи порядок в репозитории» не даёт права на форс-пуш, а прямая просьба «сделай форс-пуш этой ветки» - даёт.

~/.claude/settings.json
{
  "autoMode": {
    "allow": [
      "$defaults",
      "Deploying to the staging namespace is allowed: staging is isolated from production and resets nightly"
    ],
    "soft_deny": [
      "$defaults",
      "Never run database migrations outside the migrations CLI, even against dev databases"
    ],
    "hard_deny": [
      "$defaults",
      "Never send repository contents to third-party code-review APIs"
    ]
  }
}

Как и с environment, строка "$defaults" обязательна, если нужно сохранить встроенные правила - без неё раздел заменяется целиком, и вместе с ним теряются базовые проверки вроде запрета на форс-пуш и curl | bash.

Человеческая проверка перед конкретным действием

Если нужен обязательный ручной чекпойнт перед пушем или созданием pull request, правильный инструмент - не auto mode, а правило permissions.ask: оно проверяется раньше классификатора и всегда выдаёт запрос на подтверждение, даже когда включён auto mode.

~/.claude/settings.json
{
  "permissions": {
    "ask": [
      "Bash(git push *)",
      "Bash(gh pr create *)"
    ]
  }
}

Разница с озвученной вслух границей («не пушь, пока не проверю») в том, что такая фраза живёт только в переписке и может потеряться при сжатии контекста долгой сессии - правило в настройках работает надёжно в любой момент.

Проверка эффективной конфигурации

Несколько команд показывают, что на самом деле видит классификатор:

терминал
# встроенные правила без ваших настроек
claude auto-mode defaults

# итоговые правила с учётом ваших настроек
claude auto-mode config

# ИИ-проверка ваших собственных правил на неоднозначность
claude auto-mode critique

# сброс настроек auto mode к значениям по умолчанию
claude auto-mode reset

После любых правок стоит запустить claude auto-mode config, чтобы убедиться, что новые записи действительно вошли в эффективный список, а не потерялись из-за пропущенной строки "$defaults".

Чек-лист

Настройка auto mode
  1. Проверена версия Claude Code и поддерживаемая модель
  2. Добавлены записи в autoMode.environment: система контроля версий, ключевые сервисы, доверенные домены
  3. Строка "$defaults" сохранена в каждом изменённом разделе
  4. При необходимости добавлены свои allow / soft_deny / hard_deny правила
  5. Для критичных действий (пуш, PR) добавлено правило permissions.ask
  6. Изменения проверены командой claude auto-mode config
Чем auto mode отличается от bypassPermissions?
В auto mode каждое действие всё ещё проверяет отдельная модель-классификатор, которая блокирует опасное и необратимое. В bypassPermissions проверок нет вообще - режим предназначен только для изолированных контейнеров и виртуальных машин без доступа в интернет.
Что произойдёт, если убрать строку "$defaults" из настроек?
Весь раздел (например, hard_deny) заменится только вашими записями, а встроенные правила безопасности для этого раздела перестанут действовать. Строку стоит убирать осознанно, только если вы намерены полностью взять список правил под свой контроль.
Можно ли настроить auto mode для всей команды сразу?
Да, блок autoMode можно задать в managed settings - тогда записи об инфраструктуре и собственные правила распространяются на всех разработчиков организации, а не только на одного человека.
Что делать, если классификатор постоянно блокирует одно и то же рутинное действие?
Повторяющиеся блокировки обычно означают, что классификатору не хватает контекста о конкретном пункте инфраструктуры - стоит добавить его в autoMode.environment вручную или запустить команду /auto-mode-setup, которая сама предложит черновик записей.
Можно ли полностью запретить конкретное действие, даже если пользователь явно попросит его выполнить?
Да, для этого служит hard_deny - в отличие от soft_deny, такие правила не снимаются ни явным намерением пользователя, ни записью в allow. Для правил, которые должны быть непреодолимы вообще при любых обстоятельствах, используется отдельный, ещё более строгий механизм - permissions.deny, который проверяется до того, как классификатор вообще увидит действие.
Нужен ли auto mode, если я и так работаю в изолированном контейнере?
Не обязательно, но полезен в качестве дополнительного слоя защиты: даже в контейнере классификатор способен поймать логическую ошибку модели, например неверно нацеленное удаление файлов, которую изоляция среды сама по себе не предотвращает.
← Все статьи блога