SpyBara
Go Premium

code-mode.md 2026-11-13 23:02 UTC to 2026-11-14 03:01 UTC

No changes for this document in this history range.

2026
Fri 13 23:02

Выполнение вызовов инструментов из кода с помощью Code Mode

Попробуйте Code Mode — экспериментальную функцию, в которой Claude пишет JavaScript-код, выполняющий несколько вызовов инструментов за один шаг.

Code Mode меняет то, как Claude использует свои инструменты. Без Code Mode Claude запрашивает вызовы инструментов, таких как Bash, Read или Edit, напрямую и читает каждый результат, прежде чем решить, что делать дальше. С Code Mode Claude пишет фрагмент JavaScript-кода, который выполняет вызовы инструментов, а Claude Code запускает этот код в вашей сессии.

[!NOTE]

Code Mode — экспериментальная функция, по умолчанию отключённая. Она может измениться или быть удалена в любом релизе. Чтобы оставить отзыв, выполните /feedback.

Как работает Code Mode

В сессии с Code Mode вы по-прежнему описываете задачу в промпте, а Claude пишет JavaScript-код для её выполнения. Один фрагмент кода может запускать команды параллельно, использовать один результат в следующем вызове и возвращать ту часть вывода, которую Claude нужно прочитать.

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

const files = await $`rg -l "function retryPolicy" src`.text();
const target = files.trim().split("\n")[0];
await edit(target, "maxAttempts: 3", "maxAttempts: 5");
({ edited: target, tests: $`npm test -- retryPolicy`.nothrow() });

В диалоге вы видите вызовы инструментов, например diff правки, а не код. Чтобы прочитать код, нажмите Ctrl+O и откройте просмотрщик транскрипта. Каждый фрагмент кода отображается там в виде свёрнутой строки Code с подсказкой, как её развернуть.

Когда использовать Code Mode

Попробуйте Code Mode на задачах, требующих множества связанных вызовов инструментов, например:

  • Изменение, которое повторяется во многих файлах
  • Поиск, результаты которого нужно отфильтровать, прежде чем Claude их прочитает
  • Несколько независимых команд, которые можно выполнять одновременно

Ограничения Code Mode

Прежде чем включить Code Mode, убедитесь, что эти ограничения для вас приемлемы:

Требования

  • Версия: Claude Code v2.1.323 или новее, на любом канале релизов. Более старая версия запускается без Code Mode — с причиной it isn't open to your account yet или без неё
  • Аккаунт: подписка Claude или аккаунт Console. Использовать Code Mode через шлюз, Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform или Microsoft Foundry нельзя
  • Организация: ваша организация не использует ни конфигурацию HIPAA, ни нулевое хранение данных
  • Модель: Claude Opus 5.5, Sonnet 5.5, Haiku 5.5 или Fable 5.2
  • Интерфейс: интерактивная сессия claude в терминале. Code Mode не работает с -p, Agent SDK, панелью VS Code, приложением Desktop и облачными сессиями
  • Установка: нативная сборка Claude Code
  • Windows: установлен Git for Windows

Кроме того, Code Mode не запустится, если включены некоторые настройки, например вспомогательная программа для API-ключа, команды агентов, экспорт OpenTelemetry или DISABLE_TELEMETRY. Как исправить каждый из этих случаев, см. в разделе Code Mode не запускается.

Попробуйте Code Mode

Включите Code Mode, дайте Claude задачу и посмотрите на код, который написал Claude.

1. Проверьте версию

Выполните claude --version. Если версия старше v2.1.323, выполните claude update. Если вы на канале stable и обновление не доходит до v2.1.323, подождите, пока stable догонит, или переключитесь на latest.

2. Запустите Claude Code с включённым Code Mode

Установите для переменной окружения CLAUDE_CODE_EXPERIMENTAL_CODE_MODE значение 1. Чтобы попробовать Code Mode, задайте её в оболочке. Чтобы включить Code Mode для каждой новой сессии, задайте её в пользовательских настройках.

[tab] macOS, Linux, WSL

CLAUDE_CODE_EXPERIMENTAL_CODE_MODE=1 claude

[tab] Windows PowerShell

$env:CLAUDE_CODE_EXPERIMENTAL_CODE_MODE = "1"
claude

[tab] settings.json

Сохраните этот блок env в ~/.claude/settings.json и запустите claude:

{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_CODE_MODE": "1"
  }
}

Claude Code игнорирует эту переменную в файлах настроек проекта, поэтому клонированный вами репозиторий не может включить Code Mode за вас.

3. Подтвердите, что хотите использовать Code Mode

Перед вашей первой сессией с Code Mode Claude Code попросит подтверждения. Выберите Yes, turn on Code Mode. Claude Code перезапустится и покажет эту строку в верхней части сессии:

Code Mode (experimental) is on · this session can be resumed only with Code Mode on

Если вы видите другую строку или не видите никакой, см. раздел Code Mode не запускается.

4. Дайте Claude задачу с множеством вызовов инструментов

В знакомом вам проекте отправьте промпт, например такой:

Read every Markdown file in this project and list the links that point to local files that don't exist.

5. Прочитайте код, написанный Claude

Нажмите Ctrl+O и разверните строку Code, чтобы увидеть JavaScript-код, стоящий за вызовами инструментов. Нажмите Ctrl+O ещё раз, чтобы вернуться к диалогу.

[!WARNING]

Чтобы позже возобновить сессию с Code Mode, оставьте для CLAUDE_CODE_EXPERIMENTAL_CODE_MODE значение 1 при запуске claude --continue или claude --resume. При отключённом Code Mode Claude Code отказывается возобновлять такую сессию. Сессии, которые вы начали без Code Mode, возобновляются без Code Mode, даже если переменная задана.

Отключение Code Mode

Удалите CLAUDE_CODE_EXPERIMENTAL_CODE_MODE из оболочки и из ~/.claude/settings.json, а затем начните новую сессию. Также можно оставить переменную и изменить её значение на 0 в любом из этих мест. Если в одном месте задано 0, Code Mode остаётся отключённым, даже если в другом вы задали 1.

Блокировка Code Mode для вашей организации

Добавьте CLAUDE_CODE_EXPERIMENTAL_CODE_MODE со значением 0 в управляемые настройки, чтобы никто в вашей организации не мог использовать Code Mode:

{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_CODE_MODE": "0"
  }
}

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

Разрешения и долго выполняющийся код

Ваш режим разрешений определяет, как проверяется код Claude и можете ли вы общаться с Claude, пока код выполняется.

Проверки разрешений

Каждый вызов инструмента, который выполняет код Claude, проходит через ваши правила разрешений deny и ask и ваши хуки PreToolUse. Менять правило или matcher для инструмента, такого как Bash, не нужно. Помимо правил и хуков, в авторежиме код проверяет классификатор, а в режимах, которые запрашивают подтверждение, вы отвечаете на запросы разрешений:

Чтобы проверять сам код, напишите хук PreToolUse, который соответствует REPL — инструменту, выполняющему код Claude, — и читайте JavaScript-код из tool_input.code.

[!WARNING]

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

Долго выполняющийся код

Пока код выполняет долгую сборку или тест, Claude либо ждёт его, либо позволяет ему продолжаться в фоновом режиме:

  • Ожидание: Claude отвечает после завершения кода, а код останавливается через десять минут, включая время, которое вы провели над запросами разрешений
  • Фоновый режим: вы можете продолжать общаться с Claude, а код может выполняться до двух часов

Чтобы код выполнялся в фоновом режиме, начните сессию в авторежиме или в режиме bypassPermissions. Если Claude всё равно ждёт, проверьте текущий режим и то, как вы начали сессию:

  • Вы переключились на другой режим: нажимайте Shift+Tab, пока не вернётесь в режим, в котором начали
  • Вы начали в другом режиме или выбрали сессию из списка claude --resume: если авторежим вам доступен, выйдите, а затем выполните claude --continue --permission-mode auto с включённым Code Mode
  • Вы передали имена инструментов в --tools: начните заново в авторежиме без этого флага

Устранение неполадок

Code Mode не запускается

Строка Code Mode (experimental) isn't available в верхней части сессии означает, что Claude Code запустился без Code Mode. Причина указана в той же строке, и /status также её показывает. Найдите причину в этой таблице, внесите изменение и начните новую сессию. Если причины нет в списке, проверьте требования.

Причина содержит Что делать
it isn't open to your account yet Если ваша версия старше v2.1.323, обновитесь. В противном случае проверьте сетевое подключение и запустите заново. Если причина не исчезает, попробуйте ещё раз в другой день
it only works with the Anthropic API Удалите настройки, которые направляют запросы через облачного провайдера, шлюз или пользовательский ANTHROPIC_BASE_URL
it doesn't work with an API key helper Удалите apiKeyHelper, ANTHROPIC_AUTH_TOKEN и любые заголовки Authorization или X-Api-Key в ANTHROPIC_CUSTOM_HEADERS. Затем войдите в аккаунт или задайте ANTHROPIC_API_KEY
it only works with Opus 5.5, Sonnet 5.5 and later models Запустите с поддерживаемой моделью, например с --model opus. Haiku 5.5 и Fable 5.2 также подходят
it doesn't work in background jobs Запускайте на переднем плане, без --remote-control
it needs settings that Claude Code downloads from Anthropic Удалите переменную, которая отключает получение флагов функций, например DISABLE_TELEMETRY
OpenTelemetry is on Удалите CLAUDE_CODE_ENABLE_TELEMETRY и ENABLE_BETA_TRACING_DETAILED, если можете обойтись без экспорта OpenTelemetry
it doesn't yet work with an installed mod Отключите мод, который проверяет вызовы инструментов
it can't be used together with agent teams yet Удалите CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS
this launch's tool options Запускайте без --restricted, добавьте REPL в --tools и удалите REPL из --disallowedTools и ваших правил deny
couldn't save your answer Сделайте ~/.claude.json доступным для записи
your organization's settings don't allow it Спросите администратора об управляемой настройке

Если вы не видите строки о Code Mode, выполните claude --version. Если ваша версия старше v2.1.323, обновитесь. Затем убедитесь, что CLAUDE_CODE_EXPERIMENTAL_CODE_MODE имеет значение 1 в вашей оболочке или пользовательских настройках, и удалите любое значение 0 оттуда и из любого файла --settings.

Запрос разрешения с обратным отсчётом

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

Claude Code will automatically block this request in 1:59, to avoid holding up an unattended session

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

Tool call refused by a hook

Если Claude сообщает об отклонённом вызове инструмента, попросите его привести текст ошибки. Эти ошибки означают, что хук PreToolUse не вынес решения, и вызов отклоняется, даже если onFailure не задан:

  • the hook failed: при вызове из кода Claude ваш хук не смог запуститься, был принудительно завершён, завершился с кодом 126, 127 или кодом выше 128 либо вернул HTTP-ошибку или некорректный вывод. Исправьте хук
  • the hook did not finish: ваш хук превысил таймаут при вызове из кода Claude или при любом другом вызове инструмента после того, как Claude выполнил код в сессии. Увеличьте timeout хука

Чтобы вызовы выполнялись, когда хук command или http завершается с ошибкой или превышает таймаут, задайте для него "onFailure": "continue". Если хук command завершается с обычным кодом, например 1, вызов выполняется, если только вы не задали "onFailure": "block".

Вывод кода, задержанный хуком

Если Claude сообщает причину блокировки от хука там, где вы ожидали вывод кода Claude, проверьте ваши хуки UserPromptSubmit. Когда код может выполняться в фоновом режиме, хуки command, http и mcp_tool для этого события также запускаются для вывода кода. Чтобы пропустить вывод, измените хук так, чтобы он не блокировал, когда source в его входных данных равен poll_event.

Связанные ресурсы