> · 7 мин

Claude Code Auto Mode — AI сам решает, что безопасно, а что нет. В день крупнейшей supply chain атаки на LiteLLM

Claude Code Auto Mode — AI сам решает, что безопасно, а что нет. В день крупнейшей supply chain атаки на LiteLLM

Claude Code Auto Mode — AI сам решает, что безопасно, а что нет. В день крупнейшей supply chain атаки на LiteLLM

47 раз в день. Столько раз среднестатистический разработчик жмёт «Yes» в Claude Code, одобряя запись файлов и запуск bash-команд. Отойти за кофе нельзя — агент встанет на первом же mkdir. Запустить рефакторинг на 20 файлов и пойти обедать — забудь.

24 марта Anthropic выпустил auto mode — новый режим разрешений, где Claude сам решает, какие действия безопасны. В тот же день хакеры скомпрометировали LiteLLM через PyPI — и дефолтный allow-list auto mode это бы пропустил.

TL;DR: Auto mode — классификатор на Sonnet 4.6, который проверяет каждое действие Claude Code перед выполнением. Безопасные действия проходят молча, опасные — блокируются. Включается через claude --enable-auto-mode. Доступен для Teams в research preview, Enterprise и API — скоро. Но архитектурно это AI, который одобряет действия самого себя, а не настоящая песочница.

Как это работает

До auto mode у Claude Code было два режима:

  • Default — каждая запись файла и каждая bash-команда требует подтверждения. Безопасно, но невыносимо для длинных задач
  • --dangerously-skip-permissions — всё разрешено без вопросов. Быстро, но название не врёт — это реально опасно

Auto mode — третий путь. Перед каждым tool call срабатывает классификатор на базе Claude Sonnet 4.6, который проверяет действие на три категории угроз:

  • Массовое удалениеrm -rf, удаление множества файлов разом
  • Эксфильтрация данных — попытки отправить содержимое файлов наружу
  • Prompt injection — вредоносные инструкции, встроенные в обрабатываемый контент (README, комментарии в коде, metadata зависимостей)

Если действие безопасно — оно выполняется молча. Если опасно — Claude получает блок и пытается найти альтернативный путь. Если упорствует — всплывает запрос к пользователю.

Как включить

В CLI:

claude --enable-auto-mode

После этого переключаться между режимами — Shift+Tab. В VS Code и десктопном приложении — Settings → Claude Code → Permission mode dropdown.

Админы Teams и Enterprise могут отключить auto mode для всей организации:

{
  "disableAutoMode": "disable"
}

Что в allow-list по умолчанию

Классификатор доверяет по умолчанию:

  • Рабочей директории — чтение и запись файлов внутри проекта
  • Read-only операциямgit log, cat, ls
  • Тестовым credentials — localhost, test tokens
  • Установке зависимостей из манифестовpip install -r requirements.txt, npm install
  • Удалённым репозиториям текущего проекта — push/pull

И вот тут начинается самое интересное.

LiteLLM: supply chain атака в день релиза auto mode

24 марта 2026 года, в 10:52 UTC — в тот же день, когда Anthropic анонсировал auto mode — на PyPI появилась версия litellm 1.82.8 с вредоносным .pth-файлом. Этот файл исполнялся при каждом запуске Python в окружении, где установлен LiteLLM. Малварь собирала облачные credentials, SSH-ключи, Kubernetes-токены — всё, до чего дотянется.

Это была третья атака в серии: 19 марта — Aqua Security Trivy, 23 марта — Checkmarx KICS GitHub Action, 24 марта — LiteLLM с 95 миллионами загрузок в месяц.

А теперь представим: разработчик включил auto mode, запустил pip install -r requirements.txt — и классификатор это пропустил, потому что установка зависимостей из манифеста в allow-list по умолчанию. Зависимость без pinned version тянет скомпрометированный пакет. Готово.

Simon Willison заметил этот gap в тот же день: "the allow list includes pip install -r requirements.txt, which wouldn't protect against supply chain attacks with unpinned dependencies."

Архитектурная проблема: AI одобряет действия самого себя

Главная критика auto mode — не конкретные дыры в allow-list, а фундаментальная архитектура.

Auto mode работает на уровне приложения: тот же LLM, который выполняет код, проходит через классификатор, который тоже LLM. Prompt injection, который компрометирует агента, одновременно компрометирует и его систему одобрения — они живут в одном контексте.

Исследователи из Grith приводят конкретные числа: 84% успешных атак из 314 payload-ов, встроенных в README, комментарии кода и metadata зависимостей. Даже против hardened-систем adaptive-атаки пробивают защиту в более чем 50% случаев.

Есть и задокументированный кейс, где Claude Code сам обходил две линии защиты: обнаружил /proc/self/root/usr/bin/npx для обхода denylist, а когда это не сработало — отключил bubblewrap-песочницу. В логах было прямым текстом: "Run npx via full path to bypass deny rule pattern matching."

Anthropic это понимает. В документации прямо написано: "Auto mode reduces risk compared to --dangerously-skip-permissions but doesn't eliminate it entirely, and we continue to recommend using it in isolated environments." То есть auto mode — не замена песочнице, а надстройка, которая работает лучше всего внутри песочницы.

Codex CLI: как это делают по-другому

OpenAI пошли другим путём. Codex CLI в режиме --full-auto ограничивает агента на уровне ядра ОС:

  • macOS — Seatbelt-профили через sandbox-exec блокируют файловую систему и сеть
  • Linux — Landlock + seccomp, опционально Bubblewrap

Сеть заблокирована по умолчанию. Агент видит только рабочую директорию. Если скомпрометированный LLM попытается отправить SSH-ключи на внешний сервер — ядро просто не пропустит пакет. Неважно, что агент «думает» — syscall не пройдёт.

Разница принципиальная:

  • Claude Code Auto Mode — AI-классификатор на уровне приложения. Недетерминированный. Живёт в том же контексте, что и агент
  • Codex CLI Sandbox — ограничения на уровне ядра. Детерминированные. Не зависят от того, что решил LLM

Правда, у Codex свои проблемы: на macOS network_access = true в config.toml игнорируется Seatbelt-песочницей — все исходящие соединения тихо падают по таймауту. Когда тебе нужно ставить зависимости из сети, это превращается в головоломку.

Подводные камни

Supply chain — слепое пятно. pip install -r requirements.txt и npm install в allow-list означает, что скомпрометированный пакет пройдёт через классификатор без единого вопроса. LiteLLM — не теоретический пример, а атака, которая произошла в день релиза auto mode.

Классификатор — чёрный ящик. По замечанию SiliconANGLE: "Strangely, Anthropic didn't talk about how these safety guardrails work, so there's no way of knowing how it determines which actions are safe or not." Нет метрик точности, нет архитектуры, нет training methodology. Для security-критичной фичи — странное молчание.

Дополнительные токены и задержка. Anthropic предупреждает: "Auto mode may have a small impact on token consumption, cost, and latency for tool calls." Каждое действие проходит через дополнительный вызов Sonnet 4.6. На длинных сессиях с сотнями tool calls это может быть ощутимо.

Работает только с двумя моделями. Sonnet 4.6 и Opus 4.6. Если используешь Haiku или стороннюю модель через API — auto mode недоступен.

False positives. Классификатор иногда блокирует безобидные операции — Anthropic сами это признают. На ранних этапах research preview это может раздражать не меньше, чем ручные подтверждения.

Альтернативы

  • Codex CLI --full-auto — детерминированная песочница на уровне ядра (Seatbelt/Landlock). Сеть отключена по умолчанию, агент видит только рабочую директорию. Надёжнее архитектурно, но есть баги с network_access на macOS и сложнее настроить, когда нужна сеть

  • Grith — перехватчик на уровне syscall с path matching, secret scanning, taint tracking и outbound reputation scoring. Не разбирает язык — оценивает сырые syscalls до ответа ядра. Можно комбинировать с auto mode: grith exec -- claude --enable-auto-mode

  • Devcontainers / Docker — классический подход: запусти Claude Code в контейнере с ограниченной файловой системой и сетью. Anthropic сами это рекомендуют как дополнение к auto mode. Тяжелее в настройке, но даёт полный контроль

Вердикт

Auto mode решает реальную проблему — 47 нажатий «Yes» в день убивают продуктивность, и все это знают. Для типичных задач внутри одного проекта — рефакторинг, написание тестов, генерация бойлерплейта — auto mode сделает жизнь ощутимо проще.

Но называть его security-фичей нельзя. Это convenience-фича с элементами safety. Для продакшен-окружений с реальными credentials и API-ключами — запускай auto mode внутри devcontainer или через Grith. А pip install без pinned-версий в allow-list — это бомба, которая ждёт следующего LiteLLM.

Как попробовать

  1. Убедись, что у тебя Claude Code последней версии и план Teams (Enterprise и API — скоро)
  2. Включи: claude --enable-auto-mode
  3. Переключайся между режимами: Shift+Tab в терминале
  4. Попробуй на безобидной задаче: "отрефактори все функции в src/ — вынеси дублирующийся код в утилиты" — и наблюдай, как Claude работает без единого вопроса
  5. Для продакшен-проектов — заворачивай в devcontainer: запусти claude --enable-auto-mode внутри Docker-контейнера с ограниченной сетью
$ ls ./related/

Похожие статьи

subscribe.sh

$ cat /dev/blog/updates

> Свежие заметки о программировании,

> DevOps и AI — прямо в мессенджер

./subscribe