SpyBara
Go Premium

Documentation 2026-10-13 23:57 UTC to 2026-10-14 22:58 UTC

71 files changed +1,631 −983. View all changes and history on the product overview
2026
Fri 30 23:01 Thu 29 23:57 Wed 28 23:57 Tue 27 22:59 Mon 26 22:57 Sun 25 23:58 Sat 24 22:59 Fri 23 22:59 Thu 22 22:58 Wed 21 23:02 Tue 20 23:00 Mon 19 23:58 Sat 17 23:57 Fri 16 22:59 Thu 15 23:58 Wed 14 22:58 Tue 13 23:57 Sun 11 23:57 Sat 10 23:01 Fri 9 23:02 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

16 16 

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

18 18 

19* Для одного сеанса: запустите `claude --ax-screen-reader`.19* Для одной сессии: запустите `claude --ax-screen-reader`.

20* Для сеансов, запущенных из одной оболочки: установите переменную окружения `CLAUDE_AX_SCREEN_READER` на `1`. В Bash или Zsh запустите `export CLAUDE_AX_SCREEN_READER=1`. В PowerShell запустите `$env:CLAUDE_AX_SCREEN_READER = "1"`. Добавьте эту строку в профиль оболочки, чтобы сохранить её для будущих оболочек.20* Для сессий, запущенных из одной оболочки: установите переменную окружения `CLAUDE_AX_SCREEN_READER` на `1`. В Bash или Zsh запустите `export CLAUDE_AX_SCREEN_READER=1`. В PowerShell запустите `$env:CLAUDE_AX_SCREEN_READER = "1"`. Добавьте эту строку в профиль оболочки, чтобы сохранить её для будущих оболочек.

21* Для каждого сеанса на машине: добавьте `"axScreenReader": true` в ваш пользовательский [файл параметров](/docs/ru/settings). Параметр применяется в любом терминале, включая интегрированный терминал VS Code.21* Для каждой сессии на машине: добавьте `"axScreenReader": true` в ваш пользовательский [файл настроек](/docs/ru/settings). Настройка применяется в любом терминале, включая интегрированный терминал VS Code.

22 22 

23Если вы комбинируете методы, Claude Code применяет флаг [`--ax-screen-reader`](/docs/ru/cli-reference#cli-flags) над переменной окружения [`CLAUDE_AX_SCREEN_READER`](/docs/ru/env-vars#variables), и переменную над параметром [`axScreenReader`](/docs/ru/settings-reference#axscreenreader).23Если вы комбинируете методы, Claude Code применяет флаг [`--ax-screen-reader`](/docs/ru/cli-reference#cli-flags) над переменной окружения [`CLAUDE_AX_SCREEN_READER`](/docs/ru/env-vars#variables), и переменную над настройкой [`axScreenReader`](/docs/ru/settings-reference#axscreenreader).

24 24 

25Если вы используете Claude Code через SSH, установите переменную окружения или параметр на удаленной машине, где работает Claude Code.25Если вы используете Claude Code через SSH, установите переменную окружения или настройку на удаленной машине, где работает Claude Code.

26 26 

27Первая строка, которую выводит Claude Code, подтверждает режим: `[Screen Reader Mode: on via flag]`, `[Screen Reader Mode: on via env]` или `[Screen Reader Mode: on via settings]`.27Первая строка, которую выводит Claude Code, подтверждает режим: `[Screen Reader Mode: on via flag]`, `[Screen Reader Mode: on via env]` или `[Screen Reader Mode: on via settings]`.

28 28 

Details

855 855 

856Статус удаленного сервера также может измениться после того, как он сообщит `"connected"`. Когда соединение с ним разрывается во время сеанса, Claude Code переводит сервер обратно в `"pending"` во время [переподключения](/docs/ru/mcp#automatic-reconnection). Последующий вызов `mcpServerStatus()` в TypeScript или [`ClaudeSDKClient.get_mcp_status()`](/docs/ru/agent-sdk/python#methods) в Python может затем сообщить `"pending"` для сервера, который вы видели подключенным ранее, без каких-либо изменений конфигурации с вашей стороны.856Статус удаленного сервера также может измениться после того, как он сообщит `"connected"`. Когда соединение с ним разрывается во время сеанса, Claude Code переводит сервер обратно в `"pending"` во время [переподключения](/docs/ru/mcp#automatic-reconnection). Последующий вызов `mcpServerStatus()` в TypeScript или [`ClaudeSDKClient.get_mcp_status()`](/docs/ru/agent-sdk/python#methods) в Python может затем сообщить `"pending"` для сервера, который вы видели подключенным ранее, без каких-либо изменений конфигурации с вашей стороны.

857 857 

858После пяти неудачных попыток переподключения сервер сообщает `"failed"` или `"needs-auth"`, когда ему требуется повторная авторизация. Для повторной попытки вручную вызовите [`reconnectMcpServer()`](/docs/ru/agent-sdk/typescript#methods) в TypeScript или [`ClaudeSDKClient.reconnect_mcp_server()`](/docs/ru/agent-sdk/python#methods) в Python.858После пяти неудачных попыток переподключения сервер сообщает `"failed"` или `"needs-auth"`, когда ему требуется повторная авторизация. HTTP- или SSE-сервер в состоянии `"failed"` может вернуться в `"connected"` без какого-либо вызова с вашей стороны, поскольку после временной ошибки Claude Code продолжает [повторять попытки в фоновом режиме](/docs/ru/mcp#mid-session-drops-of-a-remote-server). Для повторной попытки вручную вызовите [`reconnectMcpServer()`](/docs/ru/agent-sdk/typescript#methods) в TypeScript или [`ClaudeSDKClient.reconnect_mcp_server()`](/docs/ru/agent-sdk/python#methods) в Python.

859 859 

860<h2 id="troubleshooting">860<h2 id="troubleshooting">

861 Troubleshooting861 Troubleshooting

Details

424 Контекст, который Claude Code добавляет вне системного приглашения424 Контекст, который Claude Code добавляет вне системного приглашения

425</h2>425</h2>

426 426 

427Системные напоминания — это сообщения, которые Claude Code добавляет в беседу во время сеанса, чтобы предоставить Claude контекст, например содержимое ваших файлов CLAUDE.md или примечание об изменении файла на диске. Claude Code отправляет их в беседу, а не в системное приглашение, поэтому они достигают Claude независимо от того, используете ли вы предустановку `claude_code` или передаёте собственную строку как `systemPrompt`.427Системные напоминания — это сообщения, которые Claude Code добавляет в диалог во время сессии, чтобы предоставить Claude контекст, например содержимое ваших файлов CLAUDE.md или примечание об изменении файла на диске. Claude Code отправляет их в диалоге, а не в системном промпте, поэтому большинство из них достигают Claude независимо от того, используете ли вы предустановку `claude_code` или передаёте собственную строку как `systemPrompt`.

428 428 

429В этом разделе рассматриваются [напоминания, которые с наибольшей вероятностью изменят поведение вашего агента](#reminders-claude-code-adds-to-the-conversation), как [отключить те, которые заменяет ваш агент](#turn-off-the-context-your-agent-replaces), и как [увидеть, что получил Claude](#see-what-claude-received) в конкретном запросе.429В этом разделе рассматриваются [напоминания, которые с наибольшей вероятностью изменят поведение вашего агента](#reminders-claude-code-adds-to-the-conversation), как [отключить те, которые заменяет ваш агент](#turn-off-the-context-your-agent-replaces), и как [увидеть, что получил Claude](#see-what-claude-received) в конкретном запросе.

430 430 


467| Каждый файл CLAUDE.md | Установите `CLAUDE_CODE_DISABLE_CLAUDE_MDS=1` |467| Каждый файл CLAUDE.md | Установите `CLAUDE_CODE_DISABLE_CLAUDE_MDS=1` |

468| Подсказки списка задач, примечания об изменённых файлах и список skills | Установите `CLAUDE_CODE_DISABLE_ATTACHMENTS=1` |468| Подсказки списка задач, примечания об изменённых файлах и список skills | Установите `CLAUDE_CODE_DISABLE_ATTACHMENTS=1` |

469 469 

470Встроенные инструкции Claude Code для коммитов и запросов на слияние — это не напоминание. Они являются частью описания инструмента Bash, поэтому они также достигают Claude при передаче пользовательского `systemPrompt`.470Установите `includeGitInstructions` в `false`, чтобы исключить встроенные инструкции для коммитов и pull request, которые являются частью описания инструмента Bash и достигают Claude даже при пользовательском `systemPrompt`. Однако при минимальном варианте по умолчанию, пользовательском `systemPrompt` или пользовательском агенте основного потока с собственным промптом сессия начинается без снимка статуса git.

471 471 

472Если вы установите `CLAUDE_CODE_DISABLE_ATTACHMENTS`, Claude Code также отправляет упоминания файлов `@` как простой текст вместо их расширения в содержимое файла. Список доступных subagents и уведомления о фоновых задачах всё ещё поступают.472Если вы установите `CLAUDE_CODE_DISABLE_ATTACHMENTS`, Claude Code также отправляет упоминания файлов `@` как простой текст вместо их раскрытия в содержимое файла. Список доступных субагентов и уведомления о фоновых задачах всё ещё поступают. Чтобы отключить только раскрытие упоминаний файлов `@`, вместо этого установите [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](/docs/ru/env-vars#variables) в Claude Code v2.1.299 или новее. Тогда Claude получает упомянутые пути и примечание о том, что их нужно прочитать с помощью файловых инструментов.

473 473 

474Следующий пример предназначен для агента, который несёт собственные правила коммитов в `append`. Он устанавливает оба ключа `attribution` на пустые строки для удаления трейлера и нижнего колонтитула и отключает `includeGitInstructions`, чтобы собственные инструкции рабочего процесса коммитов Claude Code не конкурировали с вашими:474Следующий пример предназначен для агента, который несёт собственные правила коммитов в `append`. Он устанавливает оба ключа `attribution` на пустые строки для удаления трейлера и нижнего колонтитула и отключает `includeGitInstructions`, чтобы собственные инструкции рабочего процесса коммитов Claude Code не конкурировали с вашими:

475 475 

Details

164| `mcpServers` | `(string \| object)[]` | Нет | Серверы MCP, доступные этому агенту, по имени или встроенной конфигурации |164| `mcpServers` | `(string \| object)[]` | Нет | Серверы MCP, доступные этому агенту, по имени или встроенной конфигурации |

165| `initialPrompt` | `string` | Нет | Автоматически отправляется как первый ход пользователя, когда этот агент работает как основной агент потока. Игнорируется, когда агент вызывается как подагент |165| `initialPrompt` | `string` | Нет | Автоматически отправляется как первый ход пользователя, когда этот агент работает как основной агент потока. Игнорируется, когда агент вызывается как подагент |

166| `maxTurns` | `number` | Нет | Максимальное количество ходов агента перед остановкой агента. Когда агент достигает лимита, Claude Code возвращает его вывод, отмеченный как частичный, и вы можете [возобновить агента](#resume-subagents) для продолжения. Отметка о частичности требует Claude Code v2.1.246 или позже |166| `maxTurns` | `number` | Нет | Максимальное количество ходов агента перед остановкой агента. Когда агент достигает лимита, Claude Code возвращает его вывод, отмеченный как частичный, и вы можете [возобновить агента](#resume-subagents) для продолжения. Отметка о частичности требует Claude Code v2.1.246 или позже |

167| `autoCompactWindow` | `number` | Нет | Уменьшить [окно автосжатия](/docs/ru/sub-agents#subagent-auto-compact-window) для этого агента, когда он работает как субагент, до количества токенов от `100000` до `1000000`. Требует TypeScript Agent SDK v0.3.296 или позже. [`AgentDefinition`](/docs/ru/agent-sdk/python#agentdefinition) в Python SDK не имеет этого поля |

167| `background` | `boolean` | Нет | Запустить этого агента как неблокирующую фоновую задачу при вызове |168| `background` | `boolean` | Нет | Запустить этого агента как неблокирующую фоновую задачу при вызове |

168| `omitClaudeMd` | `boolean` | Нет | Запустить этого агента без файлов CLAUDE.md пользователя, проекта и локальных файлов, когда он работает как подагент; управляемые файлы политики все еще загружаются. Игнорируется, когда агент работает как основной агент потока. Требует TypeScript Agent SDK v0.3.271 или позже. Python SDK [`AgentDefinition`](/docs/ru/agent-sdk/python#agentdefinition) не имеет этого поля |169| `omitClaudeMd` | `boolean` | Нет | Не включать пользовательский, проектный и локальный файлы CLAUDE.md в начальный контекст этого агента; управляемые файлы политики все еще загружаются. Игнорируется, когда агент работает как основной агент потока. Требует TypeScript Agent SDK v0.3.271 или позже. [`AgentDefinition`](/docs/ru/agent-sdk/python#agentdefinition) в Python SDK не имеет этого поля |

169| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | Нет | Уровень усилий рассуждения для этого агента |170| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | Нет | Уровень усилий рассуждения для этого агента |

170| `permissionMode` | `PermissionMode` | Нет | Режим разрешений для выполнения инструментов в этом агенте. [Правила наследования подагентов](/docs/ru/agent-sdk/permissions#available-modes) определяют, когда это применяется |171| `permissionMode` | `PermissionMode` | Нет | Режим разрешений для выполнения инструментов в этом агенте. [Правила наследования подагентов](/docs/ru/agent-sdk/permissions#available-modes) определяют, когда это применяется |

171 172 


200| Подагент получает | Подагент не получает |201| Подагент получает | Подагент не получает |

201| :- | :- |202| :- | :- |

202| Его собственное системное приглашение (`AgentDefinition.prompt`) и приглашение инструмента Agent | История разговора родителя или результаты инструментов |203| Его собственное системное приглашение (`AgentDefinition.prompt`) и приглашение инструмента Agent | История разговора родителя или результаты инструментов |

203| Project CLAUDE.md (загружается через [`settingSources`](/docs/ru/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources)), если агент не устанавливает [`omitClaudeMd`](#agentdefinition-configuration) | Предзагруженное содержимое навыков, если оно не указано в `AgentDefinition.skills` |204| Project CLAUDE.md (загружается через [`settingSources`](/docs/ru/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources)). Агент, который устанавливает [`omitClaudeMd`](#agentdefinition-configuration), начинает без него | Предзагруженное содержимое скиллов, если оно не указано в `AgentDefinition.skills` |

204| Определения инструментов (унаследованные от родителя или подмножество в `tools`, [отфильтрованные для фоновых запусков](/docs/ru/sub-agents#available-tools)) | Системное приглашение родителя |205| Определения инструментов (унаследованные от родителя или подмножество в `tools`, [отфильтрованные для фоновых запусков](/docs/ru/sub-agents#available-tools)) | Системное приглашение родителя |

205 206 

206<Note>207<Note>

Details

908 | "malformed"908 | "malformed"

909 | "not_honoured"909 | "not_honoured"

910 >;910 >;

911 claude_code_version?: string;

911};912};

912```913```

913 914 


922 923 

923Поле запроса `sdkMcpServerManifests` и поле ответа `sdk_mcp_manifests_parked` предназначены для внутрипроцессных [SDK MCP-серверов](/docs/ru/agent-sdk/custom-tools), созданных вами с помощью [`createSdkMcpServer()`](#createsdkmcpserver). Ваше приложение не задаёт и не читает ни одно из этих полей.924Поле запроса `sdkMcpServerManifests` и поле ответа `sdk_mcp_manifests_parked` предназначены для внутрипроцессных [SDK MCP-серверов](/docs/ru/agent-sdk/custom-tools), созданных вами с помощью [`createSdkMcpServer()`](#createsdkmcpserver). Ваше приложение не задаёт и не читает ни одно из этих полей.

924 925 

926`claude_code_version` — версия Claude Code процесса, выполняющего ходы сессии. Это то же значение, что содержится в init-сообщении [`SDKSystemMessage`](#sdksystemmessage), поэтому вы можете узнать версию CLI до первого хода.

927 

928* Поле требует Agent SDK v0.3.296 или новее, который включает Claude Code v2.1.296.

929* Если поле равно `undefined` и вы задали `pathToClaudeCodeExecutable`, укажите в нём Claude Code v2.1.296 или новее.

930 

925Ответ всегда сообщает `fast_mode_state`, а когда что-то блокирует [быстрый режим](/docs/ru/fast-mode), вместе с ним в `fast_mode_disabled_reason` передаётся код причины, чтобы вы могли объяснить заблокированное состояние, а не вычислять доступность заново. Оба поведения требуют Claude Code v2.1.219 или новее. До v2.1.219 ответ опускал `fast_mode_state`, когда быстрый режим был недоступен, и никогда не содержал причины. Коды причин и их значения см. в описании [`fast_mode_disabled_reason`](#sdkresultmessage) в сообщении с результатом.931Ответ всегда сообщает `fast_mode_state`, а когда что-то блокирует [быстрый режим](/docs/ru/fast-mode), вместе с ним в `fast_mode_disabled_reason` передаётся код причины, чтобы вы могли объяснить заблокированное состояние, а не вычислять доступность заново. Оба поведения требуют Claude Code v2.1.219 или новее. До v2.1.219 ответ опускал `fast_mode_state`, когда быстрый режим был недоступен, и никогда не содержал причины. Коды причин и их значения см. в описании [`fast_mode_disabled_reason`](#sdkresultmessage) в сообщении с результатом.

926 932 

927Обёртка управляющего ответа на успешный `initialize` также содержит массив `pending_permission_requests`. Это поле находится в самой обёртке ответа, а не в данных `SDKControlInitializeResponse` выше. Каждая запись — это полное сообщение `control_request` той же структуры `{ type: "control_request", request_id, request }`, которую сессия передаёт для запросов разрешений во время работы.933Обёртка управляющего ответа на успешный `initialize` также содержит массив `pending_permission_requests`. Это поле находится в самой обёртке ответа, а не в данных `SDKControlInitializeResponse` выше. Каждая запись — это полное сообщение `control_request` той же структуры `{ type: "control_request", request_id, request }`, которую сессия передаёт для запросов разрешений во время работы.


1218 skills?: string[];1224 skills?: string[];

1219 initialPrompt?: string;1225 initialPrompt?: string;

1220 maxTurns?: number;1226 maxTurns?: number;

1227 autoCompactWindow?: number;

1221 background?: boolean;1228 background?: boolean;

1222 omitClaudeMd?: boolean;1229 omitClaudeMd?: boolean;

1223 memory?: "user" | "project" | "local";1230 memory?: "user" | "project" | "local";


1238| `skills` | Нет | Массив имён скиллов для предварительной загрузки в контекст агента |1245| `skills` | Нет | Массив имён скиллов для предварительной загрузки в контекст агента |

1239| `initialPrompt` | Нет | Автоматически отправляется как первый ход пользователя, когда этот агент работает в качестве агента основного потока |1246| `initialPrompt` | Нет | Автоматически отправляется как первый ход пользователя, когда этот агент работает в качестве агента основного потока |

1240| `maxTurns` | Нет | Максимальное число ходов агента (циклов обращения к API) до остановки |1247| `maxTurns` | Нет | Максимальное число ходов агента (циклов обращения к API) до остановки |

1248| `autoCompactWindow` | Нет | Уменьшает [окно автосжатия](/docs/ru/sub-agents#subagent-auto-compact-window) для этого агента, когда он работает как субагент, до числа токенов от `100000` до `1000000`. Требуется TypeScript Agent SDK v0.3.296 или новее |

1241| `background` | Нет | Запускать этого агента при вызове как неблокирующую фоновую задачу |1249| `background` | Нет | Запускать этого агента при вызове как неблокирующую фоновую задачу |

1242| `omitClaudeMd` | Нет | Запускать этого агента без пользовательских, проектных и локальных файлов CLAUDE.md, когда он работает как субагент; файлы управляемой политики по-прежнему загружаются. Используйте для агентов, которые получают всё необходимое из промпта инструмента Agent. Игнорируется, когда этот агент работает в качестве агента основного потока. Требуется TypeScript Agent SDK v0.3.271 или новее |1250| `omitClaudeMd` | Нет | Исключить пользовательские, проектные и локальные файлы CLAUDE.md из начального контекста этого агента; файлы управляемой политики по-прежнему загружаются. Используйте для агентов, получающих всё необходимое из промпта инструмента Agent. Игнорируется, когда этот агент работает как агент основного потока. Требуется TypeScript Agent SDK v0.3.271 или новее |

1243| `memory` | Нет | Источник памяти для этого агента: `'user'`, `'project'` или `'local'` |1251| `memory` | Нет | Источник памяти для этого агента: `'user'`, `'project'` или `'local'` |

1244| `effort` | Нет | Уровень effort рассуждений для этого агента. Принимает название уровня или целое число |1252| `effort` | Нет | Уровень effort рассуждений для этого агента. Принимает название уровня или целое число |

1245| `permissionMode` | Нет | Режим разрешений для выполнения инструментов в этом агенте. Когда он применяется, определяют [правила наследования для субагентов](/docs/ru/agent-sdk/permissions#available-modes). См. [`PermissionMode`](#permissionmode) |1253| `permissionMode` | Нет | Режим разрешений для выполнения инструментов в этом агенте. Когда он применяется, определяют [правила наследования для субагентов](/docs/ru/agent-sdk/permissions#available-modes). См. [`PermissionMode`](#permissionmode) |


2434* `fromMode`: класс разрешений отправляющей сессии, `bypass` или `prompting`, объявленный хостом, который передаёт сообщение пира между вашими сессиями, например [настольным приложением](/docs/ru/desktop#work-across-sessions). Claude Code читает его в принимающей сессии, когда применяет [контроль входящих сообщений](/docs/ru/cross-session-messaging#control-inbound-messages). Требует Agent SDK v0.3.234 или позже.2442* `fromMode`: класс разрешений отправляющей сессии, `bypass` или `prompting`, объявленный хостом, который передаёт сообщение пира между вашими сессиями, например [настольным приложением](/docs/ru/desktop#work-across-sessions). Claude Code читает его в принимающей сессии, когда применяет [контроль входящих сообщений](/docs/ru/cross-session-messaging#control-inbound-messages). Требует Agent SDK v0.3.234 или позже.

2435* `senderTaskId`: ID задачи участника команды. Отсутствует для межсессионного пира.2443* `senderTaskId`: ID задачи участника команды. Отсутствует для межсессионного пира.

2436* `name`: отображаемое имя отправителя, нормализованное Claude Code: он удаляет управляющие, форматирующие и суррогатные кодовые точки Unicode, а также разделители строк и абзацев, затем обрезает пробелы и ограничивает результат 64 кодовыми точками с многоточием. Требует Claude Code v2.1.205 или позже.2444* `name`: отображаемое имя отправителя, нормализованное Claude Code: он удаляет управляющие, форматирующие и суррогатные кодовые точки Unicode, а также разделители строк и абзацев, затем обрезает пробелы и ограничивает результат 64 кодовыми точками с многоточием. Требует Claude Code v2.1.205 или позже.

2437* `body`: декодированное тело сообщения без конверта пира, побайтово совпадающее с тем, что видит модель. Всегда присутствует для сообщения участника команды; для межсессионного пира присутствует, только когда ход представляет собой ровно один конверт пира, сформированный Claude Code. Выполняйте рендеринг `name` и `body` вместо повторного разбора текста сообщения. Требует Claude Code v2.1.205 или позже.2445* `body`: декодированное тело сообщения с удалённой peer-обёрткой, побайтово совпадающее с тем, что видит модель. Присутствует для одиночного сообщения участника команды и отсутствует, когда несколько сообщений объединены; для узла из другой сессии присутствует, только если ход состоит ровно из одной peer-обёртки, сформированной Claude Code. Отображайте `name` и `body` вместо повторного разбора текста сообщения. До версии v2.1.299 объединённые сообщения сохраняли `body` первого сообщения. Требуется Claude Code v2.1.205 или новее.

2438* `fromSession`: ID сессии отправителя, которую может открыть хост; устанавливается хостом отправителя, чтобы ваш интерфейс мог ссылаться на отправляющую сессию. Как и `from`, это значение заявлено отправителем: используйте его только как цель навигации и не рассматривайте как доказательство идентичности отправителя. Требует Claude Code v2.1.216 или позже.2446* `fromSession`: ID сессии отправителя, которую может открыть хост; устанавливается хостом отправителя, чтобы ваш интерфейс мог ссылаться на отправляющую сессию. Как и `from`, это значение заявлено отправителем: используйте его только как цель навигации и не рассматривайте как доказательство идентичности отправителя. Требует Claude Code v2.1.216 или позже.

2439* `verifiedPeerPid`: ID процесса, который подключился к сокету межсессионного обмена сообщениями этой сессии, проверенный ядром и прочитанный из самого соединения, а не из данных сообщения. Используйте его, а не `from`, для идентификации отправителя: `from` может подделать любой процесс того же пользователя. Поле отсутствует, когда Claude Code не может его проверить, например в Windows или при поступлении не через сокет, поэтому отсутствие значения означает, что отправитель не проверен. Для ретранслируемого трафика оно идентифицирует ретранслятор, а не автора сообщения, а ID процессов могут переиспользоваться, поэтому рассматривайте его как сведения о происхождении, а не как токен аутентификации. Требует Claude Code v2.1.216 или позже.2447* `verifiedPeerPid`: ID процесса, который подключился к сокету межсессионного обмена сообщениями этой сессии, проверенный ядром и прочитанный из самого соединения, а не из данных сообщения. Используйте его, а не `from`, для идентификации отправителя: `from` может подделать любой процесс того же пользователя. Поле отсутствует, когда Claude Code не может его проверить, например в Windows или при поступлении не через сокет, поэтому отсутствие значения означает, что отправитель не проверен. Для ретранслируемого трафика оно идентифицирует ретранслятор, а не автора сообщения, а ID процессов могут переиспользоваться, поэтому рассматривайте его как сведения о происхождении, а не как токен аутентификации. Требует Claude Code v2.1.216 или позже.

2440 2448 


3444 offset?: number;3452 offset?: number;

3445 limit?: number;3453 limit?: number;

3446 pages?: string;3454 pages?: string;

3455 allow_large?: boolean;

3447};3456};

3448```3457```

3449 3458 

3450Читает файлы из локальной файловой системы, включая текст, изображения, PDF и Jupyter notebooks. Используйте `pages` для диапазонов страниц PDF (например, `"1-5"`).3459Читает файлы из локальной файловой системы, включая текст, изображения, PDF и Jupyter notebooks.

3460 

3461* Используйте `pages` для диапазонов страниц PDF (например, `"1-5"`).

3462* `allow_large` позволяет Claude прочитать текстовый файл сверх [обычных ограничений размера](/docs/ru/tools-reference#large-files), когда в контекстном окне сессии есть место. Требует Agent SDK v0.3.296 или позже, который включает Claude Code v2.1.296.

3451 3463 

3452Для PDF Claude получает содержимое файла внутри содержимого `tool_result` вызова Read. Чтение, которое возвращает [вывод](#tool-output-types) `pdf`, содержит блок сводки `text`, за которым следует блок `document`. Чтение, которое возвращает вывод `parts`, содержит блок сводки `text`, за которым следует один блок на каждую извлечённую страницу: блок `image` или блок `text`, называющий страницу, когда Claude Code не смог отобразить её как изображение. До Agent SDK v0.3.242 Claude Code доставлял содержимое файла как отдельное сообщение `user` после результата инструмента.3464Для PDF Claude получает содержимое файла внутри содержимого `tool_result` вызова Read. Чтение, которое возвращает [вывод](#tool-output-types) `pdf`, содержит блок сводки `text`, за которым следует блок `document`. Чтение, которое возвращает вывод `parts`, содержит блок сводки `text`, за которым следует один блок на каждую извлечённую страницу: блок `image` или блок `text`, называющий страницу, когда Claude Code не смог отобразить её как изображение. До Agent SDK v0.3.242 Claude Code доставлял содержимое файла как отдельное сообщение `user` после результата инструмента.

3453 3465 

agent-teams.md +2 −1

Details

270| **Список задач** | Общий список рабочих элементов, которые товарищи по команде берут и завершают |270| **Список задач** | Общий список рабочих элементов, которые товарищи по команде берут и завершают |

271| **Почтовый ящик** | Система обмена сообщениями для коммуникации между агентами |271| **Почтовый ящик** | Система обмена сообщениями для коммуникации между агентами |

272 272 

273Почтовый ящик каждого агента — это JSON-файл в `~/.claude/teams/{team-name}/inboxes/{agent-name}.json`. Claude Code проверяет каждую запись при чтении файла почтового ящика. Записи, которые не соответствуют формату сообщения, сообщаются как ошибки и удаляются из файла; действительные сообщения все еще доставляются. До версии 2.1.207 одна неправильно сформированная запись почтового ящика вызывала повторяющуюся ошибку каждую секунду и блокировала доставку для этого почтового ящика, пока вы не удалили файл вручную.273Почтовый ящик каждого агента — это JSON-файл в `~/.claude/teams/{team-name}/inboxes/{agent-name}.json`. Claude Code проверяет каждую запись при чтении файла почтового ящика. Записи, которые не соответствуют формату сообщения, регистрируются как ошибки и удаляются из файла; корректные сообщения по-прежнему доставляются.

274 274 

275Claude Code сообщает о сообщении как отправленном только когда запись в файл почтового ящика получателя успешна, независимо от того, является ли сообщение простым текстом или структурированным протокольным сообщением, таким как одобрение плана или запрос на завершение. Когда запись не удается, например, потому что диск заполнен или директория почтового ящика не доступна для записи, отправляющий агент получает ошибку и ничего не отправляется. См. [Failed to write to a teammate's inbox](/docs/ru/errors#failed-to-write-to-a-teammate-inbox) для сообщений об ошибках и шагов восстановления.275Claude Code сообщает о сообщении как отправленном только когда запись в файл почтового ящика получателя успешна, независимо от того, является ли сообщение простым текстом или структурированным протокольным сообщением, таким как одобрение плана или запрос на завершение. Когда запись не удается, например, потому что диск заполнен или директория почтового ящика не доступна для записи, отправляющий агент получает ошибку и ничего не отправляется. См. [Failed to write to a teammate's inbox](/docs/ru/errors#failed-to-write-to-a-teammate-inbox) для сообщений об ошибках и шагов восстановления.

276 276 


309* **`model`**: Claude Code использует `model` определения в любом режиме отображения, когда ваш запрос на порождение не называет один. См. [как Claude Code выбирает модель товарища по команде](#specify-teammates-and-models).309* **`model`**: Claude Code использует `model` определения в любом режиме отображения, когда ваш запрос на порождение не называет один. См. [как Claude Code выбирает модель товарища по команде](#specify-teammates-and-models).

310* **`disallowedTools`**: для участника команды, работающего в процессе, Claude Code удаляет инструменты из `disallowedTools` определения из набора участника. `SendMessage` и добавляемые инструменты Task остаются доступными, даже если они указаны в этом списке.310* **`disallowedTools`**: для участника команды, работающего в процессе, Claude Code удаляет инструменты из `disallowedTools` определения из набора участника. `SendMessage` и добавляемые инструменты Task остаются доступными, даже если они указаны в этом списке.

311* **`effort`**: для участника команды, работающего в процессе, Claude Code применяет [`effort`](/docs/ru/sub-agents#supported-frontmatter-fields) из определения согласно [правилам effort во frontmatter](/docs/ru/model-config#set-the-effort-level).311* **`effort`**: для участника команды, работающего в процессе, Claude Code применяет [`effort`](/docs/ru/sub-agents#supported-frontmatter-fields) из определения согласно [правилам effort во frontmatter](/docs/ru/model-config#set-the-effort-level).

312* **`autoCompactWindow`**: для участника команды, работающего в процессе, Claude Code применяет [`autoCompactWindow`](/docs/ru/sub-agents#supported-frontmatter-fields) из определения согласно [правилам этого поля](/docs/ru/sub-agents#subagent-auto-compact-window). Участник команды в разделенной панели игнорирует это поле. Требуется Claude Code v2.1.296 или новее.

312* **Body**: для товарища по команде в процессе Claude Code добавляет body определения к его системному запросу по умолчанию как дополнительные инструкции. Для товарища по команде в разделенной панели Claude Code использует body вместо его системного запроса по умолчанию.313* **Body**: для товарища по команде в процессе Claude Code добавляет body определения к его системному запросу по умолчанию как дополнительные инструкции. Для товарища по команде в разделенной панели Claude Code использует body вместо его системного запроса по умолчанию.

313* **`skills`**: Claude Code не применяет `skills` определения к товарищу по команде ни в одном режиме отображения. Товарищ по команде загружает skills из ваших параметров проекта и пользователя.314* **`skills`**: Claude Code не применяет `skills` определения к товарищу по команде ни в одном режиме отображения. Товарищ по команде загружает skills из ваших параметров проекта и пользователя.

314* **`mcpServers`**: для товарища по команде в разделенной панели Claude Code применяет `mcpServers` определения в соответствии с [правилами для этого поля](/docs/ru/sub-agents#scope-mcp-servers-to-a-subagent), которые охватывают сеанс, запущенный с `--agent`. Товарищ по команде в процессе игнорирует поле и загружает MCP servers из ваших параметров проекта и пользователя.315* **`mcpServers`**: для товарища по команде в разделенной панели Claude Code применяет `mcpServers` определения в соответствии с [правилами для этого поля](/docs/ru/sub-agents#scope-mcp-servers-to-a-subagent), которые охватывают сеанс, запущенный с `--agent`. Товарищ по команде в процессе игнорирует поле и загружает MCP servers из ваших параметров проекта и пользователя.

agent-view.md +20 −20

Details

26 Быстрый старт26 Быстрый старт

27</h2>27</h2>

28 28 

29Это пошаговое руководство охватывает основной цикл agent view: отправьте задачу, смотрите, как её строка обновляется по мере работы Claude, посмотрите, чтобы проверить её и ответить, а затем подключитесь для полной беседы. Сеанс, который вы отправляете, продолжает работать после закрытия agent view, поэтому вы можете уйти и вернуться к нему позже.29Это пошаговое руководство охватывает основной цикл agent view: отправьте задачу, смотрите, как её строка обновляется по мере работы Claude, посмотрите, чтобы проверить её и ответить, а затем подключитесь для полного диалога. Сессия, которую вы отправляете, продолжает работать после закрытия agent view, поэтому вы можете уйти и вернуться к ней позже.

30 30 

31<Steps>31<Steps>

32 <Step title="Открыть agent view">32 <Step title="Открыть agent view">


36 claude agents36 claude agents

37 ```37 ```

38 38 

39 Если вы ещё не приняли [диалог доверия рабочей области](/docs/ru/permissions#project-allow-rules-and-workspace-trust) для каталога, Claude Code показывает его перед открытием agent view, тот же диалог, который показывает `claude`. Примите, чтобы сохранить доверие для рабочей области и продолжить. Если вы отклоните, Claude Code выйдет без открытия agent view.39 Если вы ещё не приняли [диалоговое окно доверия рабочему пространству](/docs/ru/permissions#project-allow-rules-and-workspace-trust) для каталога, Claude Code показывает его перед открытием agent view — то же диалоговое окно, которое показывает `claude`. Примите его, чтобы сохранить доверие для рабочего пространства и продолжить. Если вы откажетесь, Claude Code завершит работу, не открывая agent view.

40 40 

41 Agent view открывается с вводом внизу и таблицей, которая заполняется по мере запуска сеансов. Нажмите `Esc` для возврата в вашу оболочку; если вы открыли agent view путём отправки сеанса в фон с помощью `←`, `Esc` вернёт вас к этой беседе вместо этого. Ваши сеансы продолжают работать, пока вас нет, и снова появляются в следующий раз, когда вы откроете agent view.41 Agent view открывается с полем ввода внизу и таблицей, которая заполняется по мере запуска сессий. Нажмите `Esc` для возврата в вашу оболочку; если вы открыли agent view, отправив сессию в фон с помощью `←`, `Esc` вместо этого вернёт вас к этому диалогу. Ваши сессии продолжают работать, пока вас нет, и снова появляются в следующий раз, когда вы откроете agent view.

42 </Step>42 </Step>

43 43 

44 <Step title="Отправить сеанс">44 <Step title="Отправить сессию">

45 Введите подсказку, описывающую задачу, и нажмите `Enter`. Запускается новый фоновый сеанс для этой задачи и появляется как строка, показывающая, работает ли он, ждёт ли вас или завершён. Новый сеанс использует модель, показанную в заголовке agent view. [Какой режим разрешений он запускает](#permission-mode-model-and-effort) зависит от того, как вы открыли agent view.45 Введите промпт, описывающий задачу, и нажмите `Enter`. Для этой задачи запускается новая фоновая сессия, которая появляется в виде строки, показывающей, работает ли она, ждёт ли вас или завершена. Новая сессия использует модель, показанную в заголовке agent view. [В каком режиме разрешений она запускается](#permission-mode-model-and-effort), зависит от того, как вы открыли agent view.

46 46 

47 Каждая подсказка, которую вы вводите здесь, запускает свой собственный новый сеанс. Ввод другой подсказки и нажатие `Enter` запускает второй сеанс рядом с первым, а не отправляет ему продолжение. Таким образом вы можете запустить несколько параллельно.47 Каждый промпт, который вы вводите здесь, запускает свою собственную новую сессию. Ввод другого промпта и нажатие `Enter` запускает вторую сессию рядом с первой, а не отправляет ей продолжение. Таким образом вы можете запустить несколько сессий параллельно.

48 48 

49 Каждый сеанс использует вашу квоту подписки независимо, поэтому см. [Ограничения](#limitations) перед отправкой множества сеансов одновременно.49 Каждая сессия расходует квоту вашей подписки независимо, поэтому ознакомьтесь с разделом [Ограничения](#limitations), прежде чем отправлять много сессий одновременно.

50 </Step>50 </Step>

51 51 

52 <Step title="Просмотр и ответ">52 <Step title="Просмотр и ответ">

53 Выберите строку с помощью клавиш со стрелками и нажмите `Space`, чтобы открыть панель просмотра. Она показывает самый последний результат сеанса или вопрос, на который он ждёт ответа, а не полную стенограмму. Введите ответ и нажмите `Enter`, чтобы отправить его, не покидая agent view.53 Выберите строку с помощью клавиш со стрелками и нажмите `Space`, чтобы открыть панель просмотра. Она показывает самый последний вывод сессии или вопрос, на который она ждёт ответа, а не полный транскрипт. Введите ответ и нажмите `Enter`, чтобы отправить его, не покидая agent view.

54 </Step>54 </Step>

55 55 

56 <Step title="Подключение и отключение">56 <Step title="Подключение и отключение">

57 Нажмите `Enter` или `→` на строке для подключения, когда вам нужна полная беседа. Сеанс захватывает терминал как полный интерактивный сеанс Claude Code. Нажмите `←` на пустой подсказке для отключения и возврата к таблице.57 Нажмите `Enter` или `→` на строке для подключения, когда вам нужен полный диалог. Сессия занимает терминал как полноценная интерактивная сессия Claude Code. Нажмите `←` на пустом промпте, чтобы отключиться и вернуться к таблице.

58 </Step>58 </Step>

59 59 

60 <Step title="Перенести существующий сеанс">60 <Step title="Перенести существующую сессию">

61 Этот шаг требует запущенного сеанса. Если вы следовали предыдущим шагам, у вас нет открытого сеанса в этом терминале, поэтому откройте обычный сеанс `claude` в другом терминале и сначала отправьте ему сообщение.61 Для этого шага нужна запущенная сессия. Если вы следовали предыдущим шагам, у вас нет открытой сессии в этом терминале, поэтому откройте обычную сессию `claude` в другом терминале и сначала отправьте ей сообщение.

62 62 

63 Чтобы переместить сеанс, который у вас уже открыт, в agent view, запустите `/bg` внутри него или нажмите `←` на пустой подсказке, чтобы отправить его в фон и открыть agent view за один шаг. В новом сеансе без сообщений `/bg` просит вас сначала отправить сообщение, а `←` работает сразу же. Сеанс продолжает работать и появляется как строка рядом с теми, которые вы отправили.63 Чтобы перенести уже открытую сессию в agent view, запустите в ней `/bg` или нажмите `←` на пустом промпте, чтобы отправить её в фон и открыть agent view за один шаг. В новой сессии без сообщений `/bg` просит вас сначала отправить сообщение, а `←` работает сразу. Сессия продолжает работать и появляется в виде строки рядом с теми, которые вы отправили.

64 </Step>64 </Step>

65</Steps>65</Steps>

66 66 

67Внутри обычного сеанса `claude` подсказка в нижнем колонтитуле `←` показывает количество фоновых агентов, которые ждут вас, например `← 2 agents`, и возвращается к `← for agents`, когда никто не требует ввода. Количество выше 99 отображается как `99+`. Количество обновляется примерно каждые десять секунд, пока терминал в фокусе, и немедленно, когда фокус возвращается. Оно кратко меняет цвет при изменении и при завершении агента, и когда фоновый сеанс завершается, пока никто не требует вашего ввода, оно кратко показывает количество завершённых, например `← 2 done`. Обе вспышки отключены, когда параметр [`prefersReducedMotion`](/docs/ru/settings-reference#prefersreducedmotion) включен, и подсказка скрыта в [режиме чтения с экрана](/docs/ru/accessibility).67Внутри обычной сессии `claude` подсказка `←` в нижней части промпта показывает количество фоновых агентов, которые ждут вас, например `← 2 agents`, и возвращается к `← for agents`, когда ни одному не требуется ввод. Количество больше 99 отображается как `99+`. Количество обновляется примерно каждые десять секунд, пока терминал в фокусе, и сразу же, когда фокус возвращается. Оно ненадолго меняет цвет при изменении и при завершении агента, а когда фоновая сессия завершается, пока ни одному агенту не требуется ваш ввод, оно ненадолго показывает количество завершённых, например `← 2 done`. Обе вспышки отключены, когда включена [настройка `prefersReducedMotion`](/docs/ru/settings-reference#prefersreducedmotion), а подсказка скрыта в [режиме чтения с экрана](/docs/ru/accessibility).

68 68 

69<h3 id="open-agent-view-by-default">69<h3 id="open-agent-view-by-default">

70 Открыть agent view по умолчанию70 Открыть agent view по умолчанию

71</h3>71</h3>

72 72 

73Чтобы `claude` без аргументов открывал agent view вместо новой беседы, включите параметр `/config`.73Чтобы `claude` без аргументов открывал agent view вместо нового диалога, включите настройку в `/config`.

74 74 

75<Steps>75<Steps>

76 <Step title="Включить параметр">76 <Step title="Включить настройку">

77 В обычном сеансе `claude` запустите `/config` и включите **Open agents view by default**. Чтобы пропустить меню, установите ключ [`defaultToAgentsView`](/docs/ru/settings-reference#defaulttoagentsview) напрямую:77 В обычной сессии `claude` запустите `/config` и включите **Open agents view by default**. Чтобы пропустить меню, задайте ключ [`defaultToAgentsView`](/docs/ru/settings-reference#defaulttoagentsview) напрямую:

78 78 

79 ```text theme={null}79 ```text theme={null}

80 /config defaultToAgentsView=true80 /config defaultToAgentsView=true


82 </Step>82 </Step>

83 83 

84 <Step title="Запустить Claude Code">84 <Step title="Запустить Claude Code">

85 Выйдите из сеанса, затем запустите `claude` без аргументов:85 Выйдите из сессии, затем запустите `claude` без аргументов:

86 86 

87 ```bash theme={null}87 ```bash theme={null}

88 claude88 claude

89 ```89 ```

90 90 

91 Agent view открывается вместо новой беседы.91 Agent view открывается вместо нового диалога.

92 </Step>92 </Step>

93</Steps>93</Steps>

94 94 

95Чтобы запустить обычный сеанс, пока параметр включен, передайте подсказку: `claude "fix the login test"`. Чтобы отключить параметр, запустите `/config defaultToAgentsView=false` в обычном сеансе или в сеансе, к которому вы подключаетесь из agent view.95Чтобы запустить обычную сессию, пока настройка включена, передайте промпт: `claude "fix the login test"`. Чтобы отключить настройку, запустите `/config defaultToAgentsView=false` в обычной сессии или в сессии, к которой вы подключаетесь из agent view.

96 96 

97<h2 id="monitor-sessions-with-agent-view">97<h2 id="monitor-sessions-with-agent-view">

98 Мониторинг сессий с помощью agent view98 Мониторинг сессий с помощью agent view


290 290 

291Строка, из которой вы нажали `←`, также сохраняет жирное, неприглушённое имя после того, как вы переместите выделение клавишами со стрелками или мышью, так что вы видите, из какой сессии пришли.291Строка, из которой вы нажали `←`, также сохраняет жирное, неприглушённое имя после того, как вы переместите выделение клавишами со стрелками или мышью, так что вы видите, из какой сессии пришли.

292 292 

293Если в момент нажатия `←` выполняется инструмент, Claude Code ждёт его завершения, прежде чем отправить сессию в фон, и Claude продолжает ответ в фоновой сессии. Нажмите `←` ещё раз, чтобы отправить в фон немедленно, не дожидаясь. Если выполняющуюся работу нельзя перенести в фоновую сессию, Claude Code сначала показывает диалоговое окно `Background this session?`, как и при [`/background`](#from-inside-a-session).293Если в момент нажатия `←` выполняется инструмент, Claude Code ждёт его завершения, прежде чем отправить сессию в фон, и Claude продолжает ответ в фоновой сессии. Нажмите `←` ещё раз, чтобы отправить в фон немедленно, не дожидаясь. Если выполняющуюся фоновую работу нельзя перенести в фоновую сессию, Claude Code сначала показывает диалоговое окно `Background this session?`, как и при [`/background`](#from-inside-a-session).

294 294 

295Примерно через десять секунд Claude Code отправляет сессию в фон, не дожидаясь дольше, за исключением, например, следующих случаев:295Примерно через десять секунд Claude Code отправляет сессию в фон, не дожидаясь дольше, за исключением, например, следующих случаев:

296 296 

Details

219 Кэширование учётных данных и время ожидания разрешения219 Кэширование учётных данных и время ожидания разрешения

220</h4>220</h4>

221 221 

222Claude Code разрешает цепочку поставщика учётных данных AWS по умолчанию один раз и сохраняет разрешённые учётные данные в памяти. Он повторно использует их до пяти минут перед истечением срока действия или в течение одного часа, когда у них нет срока действия, поэтому профиль на основе SSO запрашивает учётные данные из IAM Identity Center примерно один раз за время жизни учётных данных. Ошибка учётных данных из API очищает кэш, и повторная попытка разрешает свежие учётные данные. Требуется Claude Code v2.1.207 или позже.222Claude Code разрешает цепочку поставщика учётных данных AWS по умолчанию один раз и сохраняет разрешённые учётные данные в памяти. Он повторно использует их до пяти минут перед истечением срока действия или в течение одного часа, когда у них нет срока действия, поэтому профиль на основе SSO запрашивает учётные данные из IAM Identity Center примерно один раз за время жизни учётных данных. Ошибка учётных данных из API очищает кэш, и повторная попытка разрешает свежие учётные данные.

223 223 

224Кэш охватывает все способы получения учётных данных, перечисленные в начале этого шага, кроме API-ключа Amazon Bedrock, который не использует цепочку поставщика. Чтобы вместо этого разрешать цепочку при каждом запросе, установите [`CLAUDE_CODE_SKIP_AWS_CRED_CACHE=1`](/docs/ru/env-vars).224Кэш охватывает все способы получения учётных данных, перечисленные в начале этого шага, кроме API-ключа Amazon Bedrock, который не использует цепочку поставщика. Чтобы вместо этого разрешать цепочку при каждом запросе, установите [`CLAUDE_CODE_SKIP_AWS_CRED_CACHE=1`](/docs/ru/env-vars).

225 225 


276 276 

277`Expiration` является необязательным. Когда команда возвращает действительный ISO 8601 `Expiration`, Claude Code кэширует учётные данные до пяти минут перед этим временем. Без него учётные данные кэшируются на один час.277`Expiration` является необязательным. Когда команда возвращает действительный ISO 8601 `Expiration`, Claude Code кэширует учётные данные до пяти минут перед этим временем. Без него учётные данные кэшируются на один час.

278 278 

279Когда вы настраиваете `awsCredentialExport` без `awsAuthRefresh`, Claude Code использует экспортированные учётные данные напрямую и не переразрешает цепочку поставщика учётных данных AWS по умолчанию при запуске. Требуется Claude Code v2.1.206 или позже.279Когда вы настраиваете `awsCredentialExport` без `awsAuthRefresh`, Claude Code использует экспортированные учётные данные напрямую и не переразрешает цепочку поставщика учётных данных AWS по умолчанию при запуске.

280 280 

281<h3 id="3-configure-claude-code">281<h3 id="3-configure-claude-code">

282 3. Настройте Claude Code282 3. Настройте Claude Code


358* Чтобы использовать Haiku для фоновых задач, установите `ANTHROPIC_DEFAULT_HAIKU_MODEL` на ID модели, который доступен в вашем аккаунте.358* Чтобы использовать Haiku для фоновых задач, установите `ANTHROPIC_DEFAULT_HAIKU_MODEL` на ID модели, который доступен в вашем аккаунте.

359 359 

360<Warning>360<Warning>

361 Модели Opus имеют более высокую цену за токен, чем модели Sonnet, поэтому развёртывание, которое не закрепляет основную модель, будет выставлено по цене Opus после обновления до v2.1.207 или позже. Чтобы сохранить Sonnet 4.5 в качестве основной модели, установите `ANTHROPIC_MODEL` на его полный ID модели. Развёртывание, которое управляет значением по умолчанию с помощью `ANTHROPIC_DEFAULT_SONNET_MODEL` и не устанавливает `ANTHROPIC_DEFAULT_OPUS_MODEL`, сохраняет свою управляемую модель Sonnet в качестве значения по умолчанию.361 Модели Opus имеют более высокую цену за токен, чем модели Sonnet, поэтому, если вы не закрепите основную модель, оплата будет взиматься по цене Opus. Чтобы использовать Sonnet 4.5 в качестве основной модели, установите `ANTHROPIC_MODEL` на его полный ID модели. Развёртывание, которое управляет значением по умолчанию с помощью `ANTHROPIC_DEFAULT_SONNET_MODEL` и не устанавливает `ANTHROPIC_DEFAULT_OPUS_MODEL`, сохраняет свою управляемую модель Sonnet в качестве значения по умолчанию.

362</Warning>362</Warning>

363 363 

364До v2.1.280 основная модель на Amazon Bedrock по умолчанию была Opus 5, и псевдоним `opus` разрешался в Opus 5 с v2.1.219. На v2.1.207 через v2.1.218 основная модель на Amazon Bedrock по умолчанию была Opus 4.8, и псевдоним `opus` разрешался в Opus 4.8. До v2.1.207 основная модель по умолчанию была Sonnet 4.5, псевдоним `opus` разрешался в Opus 4.6, и фоновые задачи всегда использовали основную модель.364До v2.1.280 основная модель на Amazon Bedrock по умолчанию была Opus 5, и псевдоним `opus` разрешался в Opus 5 с v2.1.219. В версиях с v2.1.207 по v2.1.218 основная модель на Amazon Bedrock по умолчанию была Opus 4.8, и псевдоним `opus` разрешался в Opus 4.8.

365 365 

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

367 367 

artifacts.md +1 −1

Details

188 188 

189Ваш [режим разрешений](/docs/ru/permission-modes) определяет, что делает Claude, когда приходит отправленный комментарий:189Ваш [режим разрешений](/docs/ru/permission-modes) определяет, что делает Claude, когда приходит отправленный комментарий:

190 190 

191* **Claude отвечает самостоятельно**: когда ваш режим разрешений позволяет Claude опубликовать ответ без вашего разрешения, Claude читает тред и отвечает, и редактирует артефакт, когда комментарий просит об изменении. Вы видите `Auto-replied to comment thread on Artifact: <name>` или `Auto-edited Artifact: <name> in response to a comment thread`.191* **Claude отвечает самостоятельно**: если вы находитесь в режиме разрешений, который позволяет Claude опубликовать ответ, не спрашивая вас, Claude читает тред и отвечает. Вы видите `Auto-replied to comment thread on Artifact: <name>`.

192* **Claude ждёт вас**: вне режима плана, когда публикация ответа потребует вашего одобрения, вы видите `Comments are waiting on Artifact: <name>`. Claude затем просит у вас одобрение на чтение треда и снова на публикацию ответа.192* **Claude ждёт вас**: вне режима плана, когда публикация ответа потребует вашего одобрения, вы видите `Comments are waiting on Artifact: <name>`. Claude затем просит у вас одобрение на чтение треда и снова на публикацию ответа.

193* **Claude делает паузу в режиме плана**: вы видите `Comments are waiting on Artifact: <name>`, и Claude не отвечает до тех пор, пока вы не выйдете из режима плана и не попросите его прочитать и ответить.193* **Claude делает паузу в режиме плана**: вы видите `Comments are waiting on Artifact: <name>`, и Claude не отвечает до тех пор, пока вы не выйдете из режима плана и не попросите его прочитать и ответить.

194 194 

Details

1074 1074 

1075Конфигурация [телеметрии](#telemetry) шлюза отправляет `OTEL_EXPORTER_OTLP_ENDPOINT`, поэтому установка `telemetry.forward_to` вызывает диалог на каждом интерактивном клиенте. Диалог защищает машину разработчика от скомпрометированного или враждебного шлюза, а не организацию от разработчика.1075Конфигурация [телеметрии](#telemetry) шлюза отправляет `OTEL_EXPORTER_OTLP_ENDPOINT`, поэтому установка `telemetry.forward_to` вызывает диалог на каждом интерактивном клиенте. Диалог защищает машину разработчика от скомпрометированного или враждебного шлюза, а не организацию от разработчика.

1076 1076 

1077[Неинтерактивный запуск](/docs/ru/server-managed-settings#security-approval-dialogs), например `claude -p`, сессия Agent SDK или сессия во вкладке Code в Claude Desktop, не может показать диалог. Он применяет переданные настройки только для этого запуска и не записывает их как подтверждённые, поэтому следующая интерактивная сессия разработчика всё равно покажет диалог. До v2.1.207 неинтерактивный запуск сохранял настройки как подтверждённые, и никакая последующая интерактивная сессия не показывала для них диалог.1077[Неинтерактивный запуск](/docs/ru/server-managed-settings#security-approval-dialogs), например `claude -p`, сессия Agent SDK или сессия во вкладке Code в Claude Desktop, не может показать диалог. Он применяет переданные настройки только для этого запуска и не запоминает их как подтверждённые, поэтому следующая интерактивная сессия разработчика всё равно покажет диалог.

1078 1078 

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

1080 1080 

Details

298 298 

299Облачные сеансы поддерживают [встроенные команды](/docs/ru/commands), которые выводят текстовый результат. Команды, которые работают только в интерфейсе терминала, такие как `/plugin` или `/resume`, недоступны. Команды, которые открывают средство выбора или панель в терминале, ведут себя иначе в облачных сеансах:299Облачные сеансы поддерживают [встроенные команды](/docs/ru/commands), которые выводят текстовый результат. Команды, которые работают только в интерфейсе терминала, такие как `/plugin` или `/resume`, недоступны. Команды, которые открывают средство выбора или панель в терминале, ведут себя иначе в облачных сеансах:

300 300 

301* **`/model`, `/effort`, `/color` и `/rename`**: передайте значение как аргумент, например `/model sonnet`, вместо открытия средства выбора терминала или ползунка. Формы аргументов требуют Claude Code v2.1.205 или более поздней версии в окружении сеанса и следуют [примечаниям доступности](/docs/ru/commands#all-commands) каждой команды.301* **`/model`, `/effort`, `/color` и `/rename`**: передайте значение как аргумент, например `/model sonnet`, вместо открытия средства выбора терминала или ползунка. Формы аргументов следуют [примечаниям доступности](/docs/ru/commands#all-commands) каждой команды.

302* **`/fast`**: переключает [быстрый режим](/docs/ru/fast-mode#use-fast-mode-in-cloud-sessions) для сеанса, когда быстрый режим [доступен в вашей учётной записи](/docs/ru/fast-mode#requirements). Требует Claude Code v2.1.271 или более поздней версии в окружении сеанса.302* **`/fast`**: переключает [быстрый режим](/docs/ru/fast-mode#use-fast-mode-in-cloud-sessions) для сеанса, когда быстрый режим [доступен в вашей учётной записи](/docs/ru/fast-mode#requirements). Требует Claude Code v2.1.271 или более поздней версии в окружении сеанса.

303* **`/config`**: в веб-версии открывает раздел Claude Code ваших параметров вместо установки значения, и текст после команды, включая `key=value`, игнорируется. Чтобы изменить параметр облачного сеанса, установите [переменную окружения](/docs/ru/cloud-environments#set-environment-variables) в окружении или в сеансе с одним репозиторием зафиксируйте ключ в файле `.claude/settings.json` этого репозитория. [Параметры в облачных сеансах](/docs/ru/settings#settings-in-cloud-sessions) перечисляет, что читает каждый сеанс.303* **`/config`**: в веб-версии открывает раздел Claude Code ваших параметров вместо установки значения, и текст после команды, включая `key=value`, игнорируется. Чтобы изменить параметр облачного сеанса, установите [переменную окружения](/docs/ru/cloud-environments#set-environment-variables) в окружении или в сеансе с одним репозиторием зафиксируйте ключ в файле `.claude/settings.json` этого репозитория. [Параметры в облачных сеансах](/docs/ru/settings#settings-in-cloud-sessions) перечисляет, что читает каждый сеанс.

304 304 


420* **Изолированные виртуальные машины**: каждая сессия запускается в изолированной, управляемой Anthropic виртуальной машине. Сессии, которые ваша организация маршрутизирует в [самостоятельно размещённое окружение](/docs/ru/self-hosted-environments), запускаются на вашей собственной инфраструктуре вместо этого, где изоляция — это ответственность вашего развёртывания420* **Изолированные виртуальные машины**: каждая сессия запускается в изолированной, управляемой Anthropic виртуальной машине. Сессии, которые ваша организация маршрутизирует в [самостоятельно размещённое окружение](/docs/ru/self-hosted-environments), запускаются на вашей собственной инфраструктуре вместо этого, где изоляция — это ответственность вашего развёртывания

421* <span id="default-allowed-domains" />**Элементы управления сетевым доступом**: в окружениях, размещённых Anthropic, сетевой доступ ограничен по умолчанию и может быть отключен. См. [Сетевой доступ](/docs/ru/cloud-environments#network-access) для уровней доступа, [доменов, разрешённых по умолчанию](/docs/ru/cloud-environments#default-allowed-domains), и трафика, который не проходит через список разрешений. В самостоятельно размещённом окружении вы ограничиваете исходящий трафик сессии на вашей собственной границе сети. При запуске с отключённым сетевым доступом Claude Code всё ещё может общаться с API Anthropic, что может позволить данным выйти из виртуальной машины.421* <span id="default-allowed-domains" />**Элементы управления сетевым доступом**: в окружениях, размещённых Anthropic, сетевой доступ ограничен по умолчанию и может быть отключен. См. [Сетевой доступ](/docs/ru/cloud-environments#network-access) для уровней доступа, [доменов, разрешённых по умолчанию](/docs/ru/cloud-environments#default-allowed-domains), и трафика, который не проходит через список разрешений. В самостоятельно размещённом окружении вы ограничиваете исходящий трафик сессии на вашей собственной границе сети. При запуске с отключённым сетевым доступом Claude Code всё ещё может общаться с API Anthropic, что может позволить данным выйти из виртуальной машины.

422* **Защита учётных данных**: в окружениях, размещённых Anthropic, учётные данные git и ключи подписи остаются вне песочницы, и прокси аутентифицирует от имени сессии с ограниченными учётными данными. В самостоятельно размещённом окружении ваше развёртывание предоставляет учётные данные git; см. [Configure git](/docs/ru/self-hosted-environments-deploy#configure-git)422* **Защита учётных данных**: в окружениях, размещённых Anthropic, учётные данные git и ключи подписи остаются вне песочницы, и прокси аутентифицирует от имени сессии с ограниченными учётными данными. В самостоятельно размещённом окружении ваше развёртывание предоставляет учётные данные git; см. [Configure git](/docs/ru/self-hosted-environments-deploy#configure-git)

423* **Сетевые секреты**: в окружениях, размещённых Anthropic, на планах Pro и Max, ключи, которые вы [добавляете в облачное окружение](/docs/ru/cloud-environments#add-network-secrets), остаются вне песочницы так же, прикреплённые к совпадающим запросам после того, как они покидают сессию. Самостоятельно размещённое окружение не имеет сетевых секретов, и планы Team и Enterprise их ещё не имеют423* **Сетевые секреты**: в окружениях, размещённых Anthropic, ключи, которые вы [добавляете в облачное окружение](/docs/ru/cloud-environments#add-network-secrets), остаются вне песочницы так же, прикреплённые к совпадающим запросам после того, как они покидают сессию. Самостоятельно размещённое окружение не имеет сетевых секретов

424* **Безопасный анализ**: код анализируется и изменяется в изолированной среде сессии перед созданием PR424* **Безопасный анализ**: код анализируется и изменяется в изолированной среде сессии перед созданием PR

425 425 

426<h2 id="troubleshooting">426<h2 id="troubleshooting">


472| Сообщение | Что оно означает |472| Сообщение | Что оно означает |

473| - | - |473| - | - |

474| `Cloud sessions aren't available with <provider>. They run on Anthropic's infrastructure and require an Anthropic account.` | Claude Code настроен на использование стороннего поставщика. В сообщении поставщик указан под тем названием, которое используется в вашей конфигурации, например `Amazon Bedrock` или `Google Vertex AI`. Удалите конфигурацию этого поставщика, например, сбросив `CLAUDE_CODE_USE_BEDROCK`, и войдите с аккаунтом Anthropic (`claude auth login`). |474| `Cloud sessions aren't available with <provider>. They run on Anthropic's infrastructure and require an Anthropic account.` | Claude Code настроен на использование стороннего поставщика. В сообщении поставщик указан под тем названием, которое используется в вашей конфигурации, например `Amazon Bedrock` или `Google Vertex AI`. Удалите конфигурацию этого поставщика, например, сбросив `CLAUDE_CODE_USE_BEDROCK`, и войдите с аккаунтом Anthropic (`claude auth login`). |

475| `Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.` | Политика организации `allow_remote_sessions` отключена. |475| `Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.` | Политика организации `allow_remote_sessions` отключена; см. [Cloud sessions are disabled by your organization's policy](/docs/ru/errors#cloud-sessions-are-disabled-by-your-organizations-policy). Если вместо этого в сообщении указаны учётные данные, которые использует эта сессия, см. [Cloud sessions use your claude.ai login](/docs/ru/errors#cloud-sessions-use-your-claude-ai-login). |

476| `Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.` | Claude Code не смог получить политику вашей организации, поэтому отклоняет отправку, а не предполагает, что облачные сессии разрешены. Проверьте сетевое подключение и повторите попытку. |476| `Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.` | Claude Code ещё не завершил загрузку политики вашей организации, поэтому отклоняет отправку, а не предполагает, что облачные сессии разрешены. Проверьте сетевое подключение и повторите попытку. |

477| `Cloud sessions aren't available:`, за которым следует причина | Не удалось загрузить политику вашей организации, и оставшаяся часть сообщения объясняет, почему. Устраните указанную в нём причину; см. [Couldn't verify your organization's policy for cloud sessions](/docs/ru/errors#couldnt-verify-your-organizations-policy-for-cloud-sessions). |

477| `Attaching to an existing cloud session is not enabled for your account.` | Вы запустили `--cloud <session-id>` без `-p`. Отправьте сообщение с помощью `claude -p "your message" --cloud <session-id>`. |478| `Attaching to an existing cloud session is not enabled for your account.` | Вы запустили `--cloud <session-id>` без `-p`. Отправьте сообщение с помощью `claude -p "your message" --cloud <session-id>`. |

478| `Session not found: <id>` | ID или URL не соответствует сессии, к которой у вас есть доступ. Сверьте его с URL сессии claude.ai/code. |479| `Session not found: <id>` | ID или URL не соответствует сессии, к которой у вас есть доступ. Сверьте его с URL сессии claude.ai/code. |

479| `cloud session <id> is archived and cannot accept new messages` | Сессия была заархивирована. Вместо этого начните новую сессию. |480| `cloud session <id> is archived and cannot accept new messages` | Сессия была заархивирована. Вместо этого начните новую сессию. |

Details

1525| - | - | - |1525| - | - | - |

1526| `skills/<name>/SKILL.md` | `name`, `description`, `when_to_use`, `argument-hint`, `arguments`, `disable-model-invocation`, `user-invocable`, `allowed-tools`, `disallowed-tools`, `model`, `effort`, `context`, `agent`, `background`, `hooks`, `paths`, `shell`, `metadata`, `license`, `compatibility` | [Skill frontmatter](/docs/ru/skills#frontmatter-reference) |1526| `skills/<name>/SKILL.md` | `name`, `description`, `when_to_use`, `argument-hint`, `arguments`, `disable-model-invocation`, `user-invocable`, `allowed-tools`, `disallowed-tools`, `model`, `effort`, `context`, `agent`, `background`, `hooks`, `paths`, `shell`, `metadata`, `license`, `compatibility` | [Skill frontmatter](/docs/ru/skills#frontmatter-reference) |

1527| `commands/*.md` | The skill fields except `name` and `paths` | [Skill frontmatter](/docs/ru/skills#frontmatter-reference) |1527| `commands/*.md` | The skill fields except `name` and `paths` | [Skill frontmatter](/docs/ru/skills#frontmatter-reference) |

1528| `agents/*.md` | `name`, `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `maxTurns`, `skills`, `mcpServers`, `hooks`, `memory`, `background`, `effort`, `isolation`, `color`, `initialPrompt`, `omitClaudeMd`, `experimental` | [Subagent frontmatter](/docs/ru/sub-agents#supported-frontmatter-fields) |1528| `agents/*.md` | `name`, `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `maxTurns`, `autoCompactWindow`, `skills`, `mcpServers`, `hooks`, `memory`, `background`, `effort`, `isolation`, `color`, `initialPrompt`, `omitClaudeMd`, `experimental` | [Frontmatter субагента](/docs/ru/sub-agents#supported-frontmatter-fields) |

1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Output style frontmatter](/docs/ru/output-styles#frontmatter) |1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Output style frontmatter](/docs/ru/output-styles#frontmatter) |

1530| `rules/*.md` | `paths` | [Rule frontmatter](/docs/ru/memory#rules-frontmatter-reference) |1530| `rules/*.md` | `paths` | [Rule frontmatter](/docs/ru/memory#rules-frontmatter-reference) |

1531 1531 

Details

289 289 

290Claude Platform on AWS использует те же идентификаторы моделей, что и прямой API Claude.290Claude Platform on AWS использует те же идентификаторы моделей, что и прямой API Claude.

291 291 

292Псевдонимы по умолчанию `fable`, `opus`, `sonnet` и `haiku` разрешаются в встроенные значения по умолчанию Claude Code для Claude Platform on AWS, которые могут отставать от последнего выпуска. Без `ANTHROPIC_DEFAULT_OPUS_MODEL` псевдоним `opus` разрешается в Opus 5.5. До версии v2.1.280 он разрешался в Opus 5 с версии v2.1.219, в Opus 4.8 с версии v2.1.207, и в Opus 4.7 до этого.292Псевдонимы по умолчанию `fable`, `opus`, `sonnet` и `haiku` разрешаются во встроенные значения по умолчанию Claude Code для Claude Platform on AWS, которые могут отставать от последнего выпуска. Без `ANTHROPIC_DEFAULT_OPUS_MODEL` псевдоним `opus` разрешается в Opus 5.5. До версии v2.1.280 он разрешался в Opus 5 с версии v2.1.219 и в Opus 4.8 с версии v2.1.207.

293 293 

294Если вы развертываете Claude Code для команды, явно закрепите идентификаторы моделей, чтобы новый выпуск не переместил всех сразу:294Если вы развертываете Claude Code для команды, явно закрепите идентификаторы моделей, чтобы новый выпуск не переместил всех сразу:

295 295 

Details

414 414 

415* Скиллы, субагенты и команды: добавьте их коммитом в репозиторий, который вы добавили в проект, например скилл в `.claude/skills/<skill-name>/SKILL.md`. Каждый облачный поток клонирует каждый репозиторий проекта и загружает `.claude/skills/`, `.claude/agents/` и `.claude/commands/` из каждого из них, поэтому скилл, добавленный коммитом в один репозиторий, доступен в каждом облачном потоке. Облачные потоки также загружают [скиллы, которые вы включили для своего аккаунта claude.ai](/docs/ru/skills#skills-in-cowork-and-cloud-sessions).415* Скиллы, субагенты и команды: добавьте их коммитом в репозиторий, который вы добавили в проект, например скилл в `.claude/skills/<skill-name>/SKILL.md`. Каждый облачный поток клонирует каждый репозиторий проекта и загружает `.claude/skills/`, `.claude/agents/` и `.claude/commands/` из каждого из них, поэтому скилл, добавленный коммитом в один репозиторий, доступен в каждом облачном потоке. Облачные потоки также загружают [скиллы, которые вы включили для своего аккаунта claude.ai](/docs/ru/skills#skills-in-cowork-and-cloud-sessions).

416* Плагины: добавьте их в **Project settings > Plugins**; они загружаются в каждый новый облачный поток. Плагины, которые репозиторий объявляет в своём `.claude/settings.json`, [не загружаются в облачных потоках](/docs/ru/cloud-environments#what-carries-over-from-your-setup).416* Плагины: добавьте их в **Project settings > Plugins**; они загружаются в каждый новый облачный поток. Плагины, которые репозиторий объявляет в своём `.claude/settings.json`, [не загружаются в облачных потоках](/docs/ru/cloud-environments#what-carries-over-from-your-setup).

417* MCP-серверы: облачные потоки получают свои инструменты MCP из коннекторов вашего аккаунта claude.ai — это MCP-серверы, которые вы один раз подключаете на [claude.ai/customize/connectors](https://claude.ai/customize/connectors) или через ссылку **Manage connectors** в **Project settings > Environment**. Каждый облачный поток может использовать их все без настройки для каждого проекта. У самого диалога проекта нет коннекторов, поэтому работу, требующую коннектора, отправляйте как задачу для облачного потока. В проекте с одним репозиторием облачные потоки также загружают MCP-серверы из [`.mcp.json`](/docs/ru/cloud-environments#what-carries-over-from-your-setup) этого репозитория. В разделе [Как коннекторы попадают в Claude Code](/docs/ru/mcp#how-connectors-reach-claude-code) перечислены правила для облачных сессий и настройки, отключающие коннекторы.417* MCP-серверы: облачные потоки получают свои инструменты MCP из коннекторов вашего аккаунта claude.ai — это MCP-серверы, которые вы один раз подключаете на [claude.ai/customize/connectors](https://claude.ai/customize/connectors). Каждый облачный поток может использовать их все без настройки для каждого проекта. У самого диалога проекта нет коннекторов, поэтому работу, требующую коннектора, отправляйте как задачу для облачного потока. В проекте с одним репозиторием облачные потоки также загружают MCP-серверы из [`.mcp.json`](/docs/ru/cloud-environments#what-carries-over-from-your-setup) этого репозитория. В разделе [Как коннекторы попадают в Claude Code](/docs/ru/mcp#how-connectors-reach-claude-code) перечислены правила для облачных сессий и настройки, отключающие коннекторы.

418* Инструменты командной строки и пакеты: установите их в [скрипте настройки](/docs/ru/cloud-environments#setup-scripts) среды.418* Инструменты командной строки и пакеты: установите их в [скрипте настройки](/docs/ru/cloud-environments#setup-scripts) среды.

419 419 

420Чтобы увидеть, какие коннекторы есть у работающего облачного потока в claude.ai/code, откройте поток и выберите **Connectors** в меню **+** рядом с его полем ввода сообщения. Отключение коннектора там удаляет его из этого потока и сохраняет это как значение по умолчанию для вашего аккаунта, поэтому новые потоки и чаты claude.ai начинаются без него, пока вы снова его не включите. Облачный поток подхватывает коннектор, который вы добавили или переподключили, после следующего отправленного ему сообщения.420Чтобы увидеть, какие коннекторы есть у работающего облачного потока в claude.ai/code, откройте поток и выберите **Connectors** в меню **+** рядом с его полем ввода сообщения. Отключение коннектора там удаляет его из этого потока и сохраняет это как значение по умолчанию для вашего аккаунта, поэтому новые потоки и чаты claude.ai начинаются без него, пока вы снова его не включите. Облачный поток подхватывает коннектор, который вы добавили или переподключили, после следующего отправленного ему сообщения.


435| Инструкции проекта | Memory | [Постоянные правила](#give-a-project-standing-context), которые получает каждый новый поток |435| Инструкции проекта | Memory | [Постоянные правила](#give-a-project-standing-context), которые получает каждый новый поток |

436| Репозитории проекта | Environment | Репозитории, которые клонируют новые потоки |436| Репозитории проекта | Environment | Репозитории, которые клонируют новые потоки |

437| Облачная среда | Environment | [Облачная среда](#choose-an-environment-for-threads), в которой работают новые потоки |437| Облачная среда | Environment | [Облачная среда](#choose-an-environment-for-threads), в которой работают новые потоки |

438| Connectors | Environment | Ссылка для управления claude.ai connectors, которые получают потоки |

439| Plugins | Plugins | Plugins, которые загружаются в каждый новый поток |438| Plugins | Plugins | Plugins, которые загружаются в каждый новый поток |

440| Usage | Usage | [Использование токенов](#usage-and-cost) по потокам и по моделям |439| Usage | Usage | [Использование токенов](#usage-and-cost) по потокам и по моделям |

441| Memory | Memory | Файлы [памяти](#give-a-project-standing-context) проекта |440| Memory | Memory | Файлы [памяти](#give-a-project-standing-context) проекта |

Details

10 Облачные среды применяются к [облачным сеансам](/docs/ru/claude-code-on-the-web), которые доступны на планах Pro, Max и Team, а также для пользователей Enterprise с [премиум-местами или местами Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).10 Облачные среды применяются к [облачным сеансам](/docs/ru/claude-code-on-the-web), которые доступны на планах Pro, Max и Team, а также для пользователей Enterprise с [премиум-местами или местами Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).

11</Note>11</Note>

12 12 

13Каждая [облачная сессия](/docs/ru/claude-code-on-the-web) выполняется в облачной среде. Вы можете настроить среду, чтобы разрешить или запретить [доступ в сеть](#access-levels), [установить переменные окружения](#set-environment-variables) для сессии, на планах Pro и Max сохранять [сетевые секреты](#add-network-secrets), которые сессии используют, не видя их, и запускать [скрипт настройки](#setup-scripts) перед тем, как Claude начнёт работу.13Каждая [облачная сессия](/docs/ru/claude-code-on-the-web) выполняется в облачной среде. Вы можете настроить среду, чтобы разрешить или запретить [доступ в сеть](#access-levels), [установить переменные окружения](#set-environment-variables) для сессии, сохранять [сетевые секреты](#add-network-secrets), которые сессии используют, не видя их, и запускать [скрипт настройки](#setup-scripts) перед тем, как Claude начнёт работу.

14 14 

15Одни и те же среды применяются везде, где вы запускаете облачный сеанс: [приложение Desktop](/docs/ru/desktop), [мобильное приложение Claude](/docs/ru/mobile), ваш браузер на [claude.ai/code](https://claude.ai/code), терминал с [`claude --cloud`](/docs/ru/claude-code-on-the-web#from-terminal-to-cloud), [процедуры](/docs/ru/routines) и [Claude Tag](https://claude.com/docs/claude-tag/overview). Каждая из этих поверхностей также может маршрутизировать в [самостоятельно размещённую среду](/docs/ru/self-hosted-environments). [Доступность и ограничения](/docs/ru/self-hosted-environments#availability-and-limitations) охватывает то, что Claude ещё не может использовать, когда сеанс Claude Tag работает в одной.15Одни и те же среды применяются везде, где вы запускаете облачный сеанс: [приложение Desktop](/docs/ru/desktop), [мобильное приложение Claude](/docs/ru/mobile), ваш браузер на [claude.ai/code](https://claude.ai/code), терминал с [`claude --cloud`](/docs/ru/claude-code-on-the-web#from-terminal-to-cloud), [процедуры](/docs/ru/routines) и [Claude Tag](https://claude.com/docs/claude-tag/overview). Каждая из этих поверхностей также может маршрутизировать в [самостоятельно размещённую среду](/docs/ru/self-hosted-environments). [Доступность и ограничения](/docs/ru/self-hosted-environments#availability-and-limitations) охватывает то, что Claude ещё не может использовать, когда сеанс Claude Tag работает в одной.

16 16 


44 Настройка вашей среды44 Настройка вашей среды

45</h2>45</h2>

46 46 

47Создавайте, редактируйте и архивируйте среды из селектора среды, который вы достигаете на [claude.ai/code](https://claude.ai/code) после [веб-подключения](/docs/ru/web-quickstart), или из поля ввода сообщения в [приложении Desktop](/docs/ru/desktop#cloud-sessions). Среды, которые вы создаёте, являются личными для вашей учётной записи; [общие среды](#organization-shared-environments), созданные владельцем, появляются в том же селекторе. Смотрите [Установленные инструменты](#installed-tools) для того, что доступно без какой-либо конфигурации.47Добавляйте, редактируйте и архивируйте среды из селектора среды под полем сообщения на экране, где вы начинаете новую сессию на [claude.ai/code](https://claude.ai/code). Чтобы попасть на этот экран, пройдите [веб-подключение](/docs/ru/web-quickstart). Для приложения Desktop смотрите [Облачные сессии](/docs/ru/desktop#cloud-sessions). Среды, которые вы создаёте, являются личными для вашей учётной записи; [общие среды](#organization-shared-environments), созданные пользователем с ролью Owner, появляются в селекторе рядом с ними. Смотрите [Установленные инструменты](#installed-tools), чтобы узнать, что доступно без какой-либо настройки.

48 

49Селектор отображается только до тех пор, пока вы не отправите первое сообщение новой сессии. Чтобы отредактировать среду своей работающей облачной сессии, выберите значок-стрелку после названия сессии вверху, затем выберите **Edit cloud environment**.

48 50 

49<Steps>51<Steps>

50 <Step title="Откройте селектор среды">52 <Step title="Откройте селектор среды">

51 На [claude.ai/code](https://claude.ai/code) выберите облачный значок, показывающий имя текущей среды, в строке над полем сообщения. Нет страницы параметров или прямого URL для селектора.53 На экране новой сессии выберите первый элемент управления в строке под полем сообщения.

52 

53 <Frame>

54 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-selector.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=cc2813a5664519eaf5a89d793ce5af26" alt="Селектор среды открыт над полем сообщения на claude.ai/code. Облачная кнопка, показывающая имя среды Default, находится в строке над полем сообщения. Открытое меню содержит строку Local с метками Download и Desktop only, раздел Cloud, где среда Default выбрана с галочкой и показывает значок параметров при наведении, опцию Add cloud environment и раздел Remote Control с инструкциями по установке." width="1672" height="682" data-path="images/cloud-environment-selector.png" />

55 </Frame>

56 </Step>54 </Step>

57 55 

58 <Step title="Добавьте или отредактируйте среду">56 <Step title="Добавьте или отредактируйте среду">

59 Выберите **Cloud** для отображения ваших сред. Затем выберите **Add cloud environment** или наведите на существующую среду и выберите значок параметров, который появляется справа.57 * **Добавление среды**: выберите **New environment** внизу меню, чтобы открыть диалог **New environment**. Заполните форму и выберите **Add environment**. После этого ваша новая сессия использует добавленную среду.

58 * **Редактирование среды**: найдите её строку под **Cloud**. Если **Cloud** — это одна строка, выберите её, чтобы открыть список. Если вашей среды нет под **Cloud**, выберите строку **More** под этим заголовком. Наведите указатель на строку среды и выберите значок настроек, который появляется справа, чтобы открыть её диалог.

60 59 

61 Диалог включает имя, уровень сетевого доступа, переменные окружения и скрипт установки. Когда вы редактируете существующую облачную среду на плане Pro или Max, диалог также включает [сетевые секреты](#add-network-secrets).60 Диалог включает имя, уровень сетевого доступа, переменные окружения и скрипт установки. Чтобы сохранить ключ, который сессии используют, не видя его, смотрите [Добавление сетевых секретов](#add-network-secrets).

62 

63 <Frame>

64 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="Диалог New cloud environment. Поле Name с заполнителем Default, селектор Network access установлен на Trusted со ссылками на политику сети и уровни доступа, поле Environment variables, показывающее текст-заполнитель в формате .env с примечанием, что значения видны всем, кто использует среду, поле Setup script, описанное как скрипт Bash, который запускается при запуске нового сеанса перед запуском Claude Code, и кнопки Cancel и Create environment." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />

65 </Frame>

66 </Step>61 </Step>

67</Steps>62</Steps>

68 63 


91 86 

92Облачный сеанс также устанавливает некоторые переменные сам, когда запускается. Для [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/ru/claude-code-on-the-web#manage-context) значение, которое устанавливает сеанс, переопределяет то, которое вы добавляете здесь, поэтому добавление этого ключа здесь не имеет эффекта.87Облачный сеанс также устанавливает некоторые переменные сам, когда запускается. Для [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/ru/claude-code-on-the-web#manage-context) значение, которое устанавливает сеанс, переопределяет то, которое вы добавляете здесь, поэтому добавление этого ключа здесь не имеет эффекта.

93 88 

94Любой, кто использует среду, может читать значения. На планах Pro и Max вместо этого используйте [сетевой секрет](#add-network-secrets) для ключа, который прокси агента может прикрепить к запросу. [Запросы, которые никогда не получают секрет](#requests-that-never-get-the-credential), перечислены там.89Любой, кто использует среду, может читать значения. В среде, размещённой Anthropic, вместо этого используйте [сетевой секрет](#add-network-secrets) для ключа, который прокси агента может прикрепить к запросу. [Запросы, которые никогда не получают секрет](#requests-that-never-get-the-credential), перечислены там.

95 90 

96<span id="add-api-credentials" />91<span id="add-api-credentials" />

97 92 


101 96 

102Сетевой секрет — это API-ключ или токен, который вы сохраняете в облачной среде, чтобы Claude мог вызывать этот API из любой сессии в среде, не видя ключа. Прокси агента Anthropic добавляет ключ к запросам для перечисленных вами хостов после того, как каждый запрос покидает виртуальную машину сессии, поэтому сам ключ остаётся за пределами виртуальной машины.97Сетевой секрет — это API-ключ или токен, который вы сохраняете в облачной среде, чтобы Claude мог вызывать этот API из любой сессии в среде, не видя ключа. Прокси агента Anthropic добавляет ключ к запросам для перечисленных вами хостов после того, как каждый запрос покидает виртуальную машину сессии, поэтому сам ключ остаётся за пределами виртуальной машины.

103 98 

104Сетевые секреты доступны на планах Pro и Max. На планах Team и Enterprise они пока недоступны, поэтому раздел **Network secrets** не появляется в диалоге среды на этих планах.99Сетевые секреты доступны на планах Pro, Max, Team и Enterprise. Чтобы проверить, можете ли вы добавить секрет самостоятельно, смотрите [Требования](#requirements).

105 100 

106<h4 id="requirements">101<h4 id="requirements">

107 Требования102 Требования


109 104 

110Эти требования определяют, можете ли вы добавить секрет и может ли прокси агента использовать его после добавления:105Эти требования определяют, можете ли вы добавить секрет и может ли прокси агента использовать его после добавления:

111 106 

112* **Роль**: роль администратора организации в вашей организации claude.ai107* **Роль**: на планах Pro, Max и Team вы можете добавлять и удалять секреты в своих собственных средах независимо от вашей роли. На Team и Enterprise пользователи с ролью Owner имеют роль администратора организации в вашей организации claude.ai, а пользователи с ролью Admin — нет, что меняет то, что вы видите в следующих случаях:

113 * На Team и Enterprise её держат владельцы, а администраторы нет108 * **Ваша собственная среда на Enterprise**: с ролью администратора организации вы добавляете и удаляете секреты. Без неё раздел **Network secrets** показывает секреты под примечанием «Only an organization admin can add or delete network secrets», без кнопки **Add secret** и кнопки удаления. Попросите пользователя с ролью Owner добавить секрет в [общую среду](#organization-shared-environments), а затем запускайте свои сессии там

114 * На Pro и Max вы её держите в своей собственной организации109 * **Общая среда**: пользователи с ролью Owner [добавляют и удаляют её секреты](#add-a-credential) в настройках администратора. Без роли администратора организации попросите пользователя с ролью Owner добавить секрет, потому что в диалоге среды нет раздела **Network secrets**

110 * **Ваша собственная среда на Team**: без роли администратора организации кнопка **Add secret** открывает [сокращённую форму](#add-a-secret-without-the-role), которая принимает один хост

115* **Тип среды**: облачная среда, размещённая Anthropic, которая уже существует. У [самостоятельно размещённой среды](/docs/ru/self-hosted-environments) нет сетевых секретов111* **Тип среды**: облачная среда, размещённая Anthropic, которая уже существует. У [самостоятельно размещённой среды](/docs/ru/self-hosted-environments) нет сетевых секретов

116* **Доступность API**: API принимает соединения из интернета, потому что запросы выходят из сети Anthropic112* **Доступность API**: API принимает соединения из интернета, потому что запросы выходят из сети Anthropic

117* **Ключи шифрования**: если ваша организация использует управляемые клиентом ключи шифрования, вы не можете сохранять сетевые секреты113* **Ключи шифрования**: если ваша организация использует управляемые клиентом ключи шифрования, вы не можете сохранять сетевые секреты


122 118 

123Вы добавляете секреты по одному и не можете редактировать секрет после добавления. Чтобы изменить хосты или значение секрета, удалите его и добавьте снова.119Вы добавляете секреты по одному и не можете редактировать секрет после добавления. Чтобы изменить хосты или значение секрета, удалите его и добавьте снова.

124 120 

121Чтобы добавить секрет в [общую среду](#organization-shared-environments), откройте её для редактирования на странице **Cloud environments** в [настройках администратора](https://claude.ai/admin-settings), затем продолжите шаг 1 с раздела **Network secrets**. Если вы используете план Team и не имеете [роли администратора организации](#requirements), выполните шаг 1 в своей собственной среде, затем [заполните сокращённую форму](#add-a-secret-without-the-role).

122 

125<Steps>123<Steps>

126 <Step title="Откройте сетевые секреты среды">124 <Step title="Откройте сетевые секреты среды">

127 [Откройте среду для редактирования](#configure-your-environment) на [claude.ai/code](https://claude.ai/code). В диалоге **Edit environment** найдите раздел **Network secrets**. Вы увидите секреты, уже добавленные в среду, каждый с хостами, к которым он применяется.125 [Откройте среду для редактирования](#configure-your-environment) на [claude.ai/code](https://claude.ai/code). В диалоге **Edit cloud environment** найдите раздел **Network secrets**. Вы увидите секреты, уже добавленные в среду, каждый с хостами, к которым он применяется.

128 </Step>126 </Step>

129 127 

130 <Step title="Добавьте секрет">128 <Step title="Добавьте секрет">

131 Выберите **Add secret** и заполните форму. Оставьте **Credential type** по умолчанию, **Bearer**, для API-ключа, который передаётся в заголовке запроса, и заполните эти поля:129 Выберите **Add secret** и заполните форму. Оставьте **Secret type** по умолчанию, **Bearer**, для API-ключа, который передаётся в заголовке запроса, и заполните эти поля:

132 130 

133 * **Name**: метка для секрета, например `Internal billing API`131 * **Name**: метка для секрета, например `Internal billing API`

134 * **Allowed websites**: хосты API, например `api.example.com`. Префикс `*.` соответствует любому поддомену132 * **Allowed websites**: хосты API, например `api.example.com`. Префикс `*.` соответствует любому поддомену

135 * **Custom headers**: одна строка для заголовка, который несёт ключ. Строка начинается с `Authorization` в качестве **Name** заголовка и `Bearer` в качестве его **Prefix**; вставьте сам ключ в качестве **Value**. Для заголовка вроде `X-Api-Key`, который принимает значение без префикса, измените имя и очистите префикс133 * **Custom headers**: одна строка для заголовка, который несёт ключ. Строка начинается с `Authorization` в качестве **Name** заголовка и `Bearer` в качестве его **Prefix**; вставьте сам ключ в качестве **Value**. Для заголовка вроде `X-Api-Key`, который принимает значение без префикса, измените имя и очистите префикс

136 134 

137 Для API, который использует другой способ аутентификации, выберите другой **Credential type**. Это тот же список, который [Claude Tag](https://claude.com/docs/claude-tag/overview), интеграция со Slack для планов Team и Enterprise, предлагает для [соединений](https://claude.com/docs/claude-tag/admins/add-connections).135 Для API, который использует другой способ аутентификации, выберите другой **Secret type**. Это тот же список, который [Claude Tag](https://claude.com/docs/claude-tag/overview), интеграция со Slack для планов Team и Enterprise, предлагает для [соединений](https://claude.com/docs/claude-tag/admins/add-connections).

138 </Step>136 </Step>

139 137 

140 <Step title="Сохраните секрет">138 <Step title="Сохраните секрет">

141 Выберите **Connect**. Секрет появляется в списке со своими хостами и сохраняется без кнопки **Save changes** диалога. После сохранения просмотреть значение снова нельзя.139 Выберите **Add**. Секрет появляется в списке со своими хостами и сохраняется без кнопки **Save changes** диалога. После сохранения просмотреть значение снова нельзя.

142 </Step>140 </Step>

143</Steps>141</Steps>

144 142 

145Чтобы убедиться, что секрет работает, запустите сессию в среде и попросите Claude вызвать API, например с помощью `curl`. API отвечает так, как если бы ключ был в запросе, а ключ не появляется ни в переменных окружения сессии, ни в каком-либо файле. Если вместо этого список помечает секрет как **Not sent**, примечание под ним объясняет причину и что делать. Два секрета, хосты которых пересекаются без точного совпадения, не получают отметки, и прокси агента отправляет только один из них.143Чтобы убедиться, что секрет работает, запустите сессию в среде и попросите Claude вызвать API, например с помощью `curl`. API отвечает так, как если бы ключ был в запросе, а ключ не появляется ни в переменных окружения сессии, ни в каком-либо файле. Если вместо этого список помечает секрет как **Not sent**, примечание под ним объясняет причину и что делать. Два секрета, хосты которых пересекаются без точного совпадения, не получают отметки, и прокси агента отправляет только один из них.

146 144 

145<h4 id="add-a-secret-without-the-role">

146 Добавление секрета на плане Team без роли администратора организации

147</h4>

148 

149Если вы используете план Team и не имеете [роли администратора организации](#requirements), форма **Add secret** принимает один секрет для одного хоста. Выберите **Add secret** в [разделе **Network secrets**](#add-a-credential) вашей среды, заполните эти поля, затем нажмите кнопку **Add secret** в форме:

150 

151* **Host**: единственный хост, который получает секрет, например `api.example.com`. Форма не принимает подстановочный знак `*.`

152* **Name**: необязательная метка для секрета

153* **Secret type**: **Token** для ключа, который передаётся в заголовке запроса, или **Username and password**. Для токена вставьте ключ в качестве **Value**

154 

147<h4 id="which-requests-get-the-credential">155<h4 id="which-requests-get-the-credential">

148 Какие запросы получают секрет156 Какие запросы получают секрет

149</h4>157</h4>


175 Архивирование среды183 Архивирование среды

176</h3>184</h3>

177 185 

178Чтобы архивировать одну из ваших собственных сред, откройте её для редактирования и выберите **Archive**. Владелец архивирует [общую среду](#organization-shared-environments) со страницы **Cloud environments** в параметрах администратора. Вы не можете удалить среду, только архивировать её.186Чтобы архивировать одну из ваших собственных сред, откройте её для редактирования, выберите **Archive environment** и подтвердите. Если среда [общая для вашей организации](#organization-shared-environments), её вместо этого архивирует пользователь с ролью Owner со страницы **Cloud environments** в [настройках администратора](https://claude.ai/admin-settings), поэтому обратитесь к Owner, если вы сами не являетесь им. Вы не можете удалить среду, только архивировать её.

179 187 

180Архивирование влияет на новые сеансы, а не на работающие:188Архивирование влияет на новые сеансы, а не на работающие:

181 189 


199 207 

200Владельцы выбирают [среду по умолчанию](#the-default-environment) организации отдельно на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).208Владельцы выбирают [среду по умолчанию](#the-default-environment) организации отдельно на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

201 209 

202Сессии каждого участника в общей среде считывают её переменные, поэтому не включайте в них секреты. [Сетевые секреты](#add-network-secrets), которые дают сессиям ключ, недоступный им для чтения, пока недоступны на планах Team и Enterprise.210Чтобы дать сессиям общей среды ключ, который они не могут прочитать, добавьте [сетевой секрет](#add-network-secrets) при редактировании среды на странице **Cloud environments**. Не включайте секреты в её переменные, потому что их считывают сессии каждого участника.

203 211 

204<h3 id="set-the-environment-a-claude-tag-channel-uses">212<h3 id="set-the-environment-a-claude-tag-channel-uses">

205 Установка среды, которую использует канал Claude Tag213 Установка среды, которую использует канал Claude Tag


216 224 

217Каждая среда устанавливает один уровень сетевого доступа, который контролирует исходящие соединения, которые могут устанавливать её сеансы. Уровень по умолчанию, **Trusted**, разрешает реестры пакетов и другие [домены в списке разрешённых](#default-allowed-domains); **Custom** использует ваш собственный список доменов.225Каждая среда устанавливает один уровень сетевого доступа, который контролирует исходящие соединения, которые могут устанавливать её сеансы. Уровень по умолчанию, **Trusted**, разрешает реестры пакетов и другие [домены в списке разрешённых](#default-allowed-domains); **Custom** использует ваш собственный список доменов.

218 226 

219Чтобы изменить сетевой доступ среды, [откройте её для редактирования](#configure-your-environment) и используйте селектор **Network access** в диалоговом окне. [Общая среда](#organization-shared-environments) открывается там в режиме только для чтения, поэтому владелец изменяет её сетевой доступ со страницы **Cloud environments** в [параметрах администратора](https://claude.ai/admin-settings). Значок облака, который открывает селектор, появляется на поверхностях приложения, перечисленных в разделе [Среда по умолчанию](#the-default-environment), и в [редакторе процедур](/docs/ru/routines#environments-and-network-access); личные среды не имеют отдельной страницы в параметрах вашего аккаунта claude.ai.227Чтобы изменить сетевой доступ среды, [откройте её для редактирования](#configure-your-environment) и используйте селектор **Network access** в диалоговом окне. [Общая среда](#organization-shared-environments) открывается там в режиме только для чтения, поэтому Owner изменяет её сетевой доступ со страницы **Cloud environments** в [настройках администратора](https://claude.ai/admin-settings). Элемент управления, который открывает селектор, появляется в интерфейсах приложения, перечисленных в разделе [Среда по умолчанию](#the-default-environment), и в [редакторе routine](/docs/ru/routines#environments-and-network-access); личные среды не имеют отдельной страницы в настройках вашего аккаунта claude.ai.

220 228 

221Когда вы изменяете сетевой доступ среды, размещённой в Anthropic, её существующие сеансы следуют новому параметру в течение примерно минуты для запросов, которые проходят через [список разрешённых сетей](#access-levels) сеанса. Вам не нужно начинать новый сеанс.229Когда вы изменяете сетевой доступ среды, размещённой в Anthropic, её существующие сеансы следуют новому параметру в течение примерно минуты для запросов, которые проходят через [список разрешённых сетей](#access-levels) сеанса. Вам не нужно начинать новый сеанс.

222 230 


274* **Учётные данные Git**: git-клиент внутри виртуальной машины использует ограниченные учётные данные, которые прокси проверяет и заменяет на ваш реальный токен GitHub.282* **Учётные данные Git**: git-клиент внутри виртуальной машины использует ограниченные учётные данные, которые прокси проверяет и заменяет на ваш реальный токен GitHub.

275* **Запросы API**: запросы от встроенных инструментов GitHub и от `gh` под [заполнителем `proxy-injected`](#work-with-github-issues-and-pull-requests) отправляются с подставленными вашими реальными учётными данными.283* **Запросы API**: запросы от встроенных инструментов GitHub и от `gh` под [заполнителем `proxy-injected`](#work-with-github-issues-and-pull-requests) отправляются с подставленными вашими реальными учётными данными.

276* **Ограничения push**: прокси отклоняет удаление веток и push чего-либо, кроме ветки, например тега. Он не ограничивает, какие ветки может обновлять push. Для этого используйте правила защиты веток или rulesets на GitHub.284* **Ограничения push**: прокси отклоняет удаление веток и push чего-либо, кроме ветки, например тега. Он не ограничивает, какие ветки может обновлять push. Для этого используйте правила защиты веток или rulesets на GitHub.

277* **Область действия репозиториев**: прокси обслуживает запросы GitHub API для репозиториев, прикреплённых к сессии. Запрос API к другому репозиторию получает 403 с сообщением, которое начинается с `GitHub access to` и содержит `is not enabled for this session`.285* **Область действия репозиториев**: прокси обслуживает запросы GitHub API для репозиториев, прикреплённых к сессии. Запрос API к другому репозиторию получает 403 с сообщением, которое начинается с `GitHub access to` и содержит `is not enabled for this session`. Архив исходного кода, который вы загружаете по URL `github.com/{owner}/{repo}/archive/` или `codeload.github.com`, получает ту же ошибку 403, если репозиторий не прикреплён, даже если он публичный.

278* **Ограничения GraphQL**: прокси отклоняет запросы к эндпоинту GraphQL GitHub с ошибкой 403, сообщение которой начинается с `GitHub GraphQL is not available from Claude Code sessions` и указывает резервный вариант REST, `gh api repos/{owner}/{repo}/...`. Подкоманды `gh`, использующие GraphQL, такие как `gh pr` и `gh issue`, получают ту же ошибку 403. Ограничение применяется к каждому запросу через прокси независимо от предоставленных вами учётных данных, поэтому установленный вами `GH_TOKEN` получает ту же ошибку 403. Claude не может обратиться через прокси к API GitHub, которые существуют только в GraphQL, например Projects v2.286* **Ограничения GraphQL**: прокси отклоняет запросы к эндпоинту GraphQL GitHub с ошибкой 403, сообщение которой начинается с `GitHub GraphQL is not available from Claude Code sessions` и указывает резервный вариант REST, `gh api repos/{owner}/{repo}/...`. Подкоманды `gh`, использующие GraphQL, такие как `gh pr` и `gh issue`, получают ту же ошибку 403. Ограничение применяется к каждому запросу через прокси независимо от предоставленных вами учётных данных, поэтому установленный вами `GH_TOKEN` получает ту же ошибку 403. Claude не может обратиться через прокси к API GitHub, которые существуют только в GraphQL, например Projects v2.

279 287 

280Зафиксированные файлы из публичных репозиториев поступают через `raw.githubusercontent.com`, который обрабатывает [прокси безопасности](#security-proxy). Этот домен находится в списке [Trusted](#default-allowed-domains) по умолчанию, поэтому эти файлы остаются доступными, если [уровень доступа](#access-levels) среды их не исключает.288Зафиксированные файлы из публичных репозиториев поступают через `raw.githubusercontent.com`, который обрабатывает [прокси безопасности](#security-proxy). Этот домен находится в списке [Trusted](#default-allowed-domains) по умолчанию, поэтому эти файлы остаются доступными, если [уровень доступа](#access-levels) среды их не исключает.


318| Плагины, включённые только в ваших пользовательских настройках | Нет | Пользовательский `enabledPlugins` находится в `~/.claude/settings.json` на вашей машине |326| Плагины, включённые только в ваших пользовательских настройках | Нет | Пользовательский `enabledPlugins` находится в `~/.claude/settings.json` на вашей машине |

319| MCP-серверы, которые вы добавили с помощью `claude mcp add` в области действия по умолчанию local или в области действия user | Нет | Они записываются в `~/.claude.json` на вашей машине, а не в репозиторий. Добавьте сервер с помощью `claude mcp add --scope project`, который записывает [`.mcp.json`](/docs/ru/mcp#project-scope) репозитория, и закоммитьте этот файл. Сессия с одним репозиторием загружает его |327| MCP-серверы, которые вы добавили с помощью `claude mcp add` в области действия по умолчанию local или в области действия user | Нет | Они записываются в `~/.claude.json` на вашей машине, а не в репозиторий. Добавьте сервер с помощью `claude mcp add --scope project`, который записывает [`.mcp.json`](/docs/ru/mcp#project-scope) репозитория, и закоммитьте этот файл. Сессия с одним репозиторием загружает его |

320| Транспортные переменные в блоке `env` файла `.claude/settings.json` вашего репозитория, такие как `NODE_EXTRA_CA_CERTS` и [переменные клиентского сертификата mTLS](/docs/ru/network-config#mtls-authentication) | Нет | Среда хостинга управляет API-соединением сессии, поэтому Claude Code игнорирует эти ключи и отмечает каждый проигнорированный ключ в отладочном логе сессии |328| Транспортные переменные в блоке `env` файла `.claude/settings.json` вашего репозитория, такие как `NODE_EXTRA_CA_CERTS` и [переменные клиентского сертификата mTLS](/docs/ru/network-config#mtls-authentication) | Нет | Среда хостинга управляет API-соединением сессии, поэтому Claude Code игнорирует эти ключи и отмечает каждый проигнорированный ключ в отладочном логе сессии |

321| API-ключи и токены для сервисов, которые вызывает Claude | На планах Pro и Max, как [сетевые секреты](#add-network-secrets) | Вы добавляете ключ один раз в среду, и прокси агента прикрепляет его к запросам к перечисленным вами хостам. Ключ, который прокси агента [не может прикрепить](#requests-that-never-get-the-credential), или любой ключ на плане Team или Enterprise остаётся в переменной окружения |329| API-ключи и токены для сервисов, которые вызывает Claude | В среде, размещённой Anthropic, как [сетевые секреты](#add-network-secrets) | Вы добавляете ключ один раз в среду, и прокси агента прикрепляет его к запросам к перечисленным вами хостам. Ключ, который прокси агента [не может прикрепить](#requests-that-never-get-the-credential), остаётся в переменной окружения |

322| Интерактивная аутентификация, такая как AWS SSO | Нет | Не поддерживается. SSO требует входа через браузер, который невозможен в облачной сессии |330| Интерактивная аутентификация, такая как AWS SSO | Нет | Не поддерживается. SSO требует входа через браузер, который невозможен в облачной сессии |

323 331 

324Чтобы сделать вашу собственную конфигурацию доступной в облачных сессиях, закоммитьте её в репозиторий.332Чтобы сделать вашу собственную конфигурацию доступной в облачных сессиях, закоммитьте её в репозиторий.

325 333 

326Любой, кто использует среду, может читать её переменные окружения и скрипт настройки. Об этом говорит примечание в диалоге под **Environment variables**, которое также предупреждает не размещать там секреты. На планах Pro и Max вместо этого храните ключ, который прокси агента может прикрепить, как [сетевой секрет](#add-network-secrets).334Любой, кто использует среду, может читать её переменные окружения и скрипт настройки. Об этом говорит примечание в диалоге под **Environment variables**, которое также предупреждает не размещать там секреты. В среде, размещённой Anthropic, вместо этого храните ключ, который прокси агента может прикрепить, как [сетевой секрет](#add-network-secrets).

327 335 

328<h4 id="add-personal-preferences-without-committing-to-the-repo">336<h4 id="add-personal-preferences-without-committing-to-the-repo">

329 Добавление личных предпочтений без коммита в репозиторий337 Добавление личных предпочтений без коммита в репозиторий

code-review.md +0 −2

Details

155* У вас должен быть доступ на запись, обслуживание или администратор к репозиторию155* У вас должен быть доступ на запись, обслуживание или администратор к репозиторию

156* PR должен быть открыт156* PR должен быть открыт

157 157 

158Если репозиторий принадлежит организации и ваше членство в этой организации является приватным, что является стандартным поведением GitHub, GitHub не идентифицирует вас для Claude как члена. Claude может по-прежнему реагировать на ваш комментарий с 👀, но не запускает проверку, если вы не были добавлены в репозиторий напрямую как сотрудник, даже если команда или базовые разрешения организации дают вам доступ на запись. Чтобы исправить это, [сделайте ваше членство в организации публичным](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/publicizing-or-hiding-organization-membership) или попросите администратора репозитория добавить вас в репозиторий как сотрудника.

159 

160В отличие от автоматических триггеров, ручные триггеры запускаются на черновиках PR, так как явный запрос сигнализирует, что вы хотите проверку сейчас независимо от статуса черновика.158В отличие от автоматических триггеров, ручные триггеры запускаются на черновиках PR, так как явный запрос сигнализирует, что вы хотите проверку сейчас независимо от статуса черновика.

161 159 

162Если проверка уже запущена на этом PR, запрос ставится в очередь до завершения текущей проверки. Вы можете отслеживать прогресс через проверку на PR.160Если проверка уже запущена на этом PR, запрос ставится в очередь до завершения текущей проверки. Вы можете отслеживать прогресс через проверку на PR.

commands.md +6 −6

Details

67| `/branch [name]` | Создать ветку текущего разговора в этой точке, чтобы вы могли попробовать другое направление без потери разговора в его текущем состоянии. Переключает вас в ветку и сохраняет оригинал, к которому вы можете вернуться с помощью `/resume`. Чтобы запустить копию как отдельную [фоновую сессию](/docs/ru/agent-view) вместо переключения в неё, используйте `/fork`; чтобы передать побочную задачу [субагенту](/docs/ru/sub-agents), который отчитывается обратно в этот разговор, используйте `/subtask` |67| `/branch [name]` | Создать ветку текущего разговора в этой точке, чтобы вы могли попробовать другое направление без потери разговора в его текущем состоянии. Переключает вас в ветку и сохраняет оригинал, к которому вы можете вернуться с помощью `/resume`. Чтобы запустить копию как отдельную [фоновую сессию](/docs/ru/agent-view) вместо переключения в неё, используйте `/fork`; чтобы передать побочную задачу [субагенту](/docs/ru/sub-agents), который отчитывается обратно в этот разговор, используйте `/subtask` |

68| `/btw [question]` | Задать [побочный вопрос](/docs/ru/interactive-mode#side-questions-with-%2Fbtw) о текущей сессии без добавления в разговор. Если вы запустите `/btw` без вопроса, Claude Code показывает ваш самый последний побочный вопрос, чтобы вы могли просмотреть более ранние ответы; если вы ещё не задавали его, Claude Code выводит строку использования. До версии 2.1.212 `/btw` требовал вопрос |68| `/btw [question]` | Задать [побочный вопрос](/docs/ru/interactive-mode#side-questions-with-%2Fbtw) о текущей сессии без добавления в разговор. Если вы запустите `/btw` без вопроса, Claude Code показывает ваш самый последний побочный вопрос, чтобы вы могли просмотреть более ранние ответы; если вы ещё не задавали его, Claude Code выводит строку использования. До версии 2.1.212 `/btw` требовал вопрос |

69| `/bug [report]` | Сообщить об ошибке или поделиться своим разговором. Вы выбираете, сколько истории сессии включить, и подтверждаете на экране согласия перед отправкой чего-либо. Когда вы вошли в Anthropic при подключении первой стороны, отчёт идёт в Anthropic; у поставщика третьей стороны или без учётных данных Anthropic Claude Code записывает отчёт в [локальный архив под `~/.claude/feedback-bundles/`](/docs/ru/data-usage#telemetry-services), который вы пересылаете сами. В [расширении VS Code](/docs/ru/vs-code#use-the-prompt-box) `/bug` открывает собственный диалог обратной связи расширения; требует Claude Code v2.1.229 или позже. Когда вы запускаете его во время ответа Claude, Claude Code открывает диалог сразу же. До версии 2.1.232 Claude Code ставил команду в очередь до завершения хода. Псевдоним: `/share`. До версии 2.1.212 `/bug` и `/share` были псевдонимами `/feedback` |69| `/bug [report]` | Сообщить об ошибке или поделиться своим разговором. Вы выбираете, сколько истории сессии включить, и подтверждаете на экране согласия перед отправкой чего-либо. Когда вы вошли в Anthropic при подключении первой стороны, отчёт идёт в Anthropic; у поставщика третьей стороны или без учётных данных Anthropic Claude Code записывает отчёт в [локальный архив под `~/.claude/feedback-bundles/`](/docs/ru/data-usage#telemetry-services), который вы пересылаете сами. В [расширении VS Code](/docs/ru/vs-code#use-the-prompt-box) `/bug` открывает собственный диалог обратной связи расширения; требует Claude Code v2.1.229 или позже. Когда вы запускаете его во время ответа Claude, Claude Code открывает диалог сразу же. До версии 2.1.232 Claude Code ставил команду в очередь до завершения хода. Псевдоним: `/share`. До версии 2.1.212 `/bug` и `/share` были псевдонимами `/feedback` |

70| `/cd <path>` | Переместить эту сессию в новый рабочий каталог, сохраняя разговор. Введите частичный путь, чтобы увидеть предложения соответствующих каталогов; нажмите `Tab` для принятия. Предложения требуют Claude Code v2.1.206 или позже. Для того, что Claude Code применяет из нового каталога сразу же при перемещении, и как `/cd` отличается от `/add-dir`, см. [Переместить сессию в другой каталог](/docs/ru/permissions#move-the-session-to-another-directory) |70| `/cd <path>` | Переместить эту сессию в новый рабочий каталог, сохраняя диалог. Введите частичный путь, чтобы увидеть предложения соответствующих каталогов; нажмите `Tab` для принятия. Чтобы узнать, что Claude Code применяет из нового каталога сразу после перемещения и чем `/cd` отличается от `/add-dir`, см. [Переместить сессию в другой каталог](/docs/ru/permissions#move-the-session-to-another-directory) |

71| `/chrome` | Настроить параметры [Claude в Chrome](/docs/ru/chrome) |71| `/chrome` | Настроить параметры [Claude в Chrome](/docs/ru/chrome) |

72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/ru/skills#bundled-skills).** Загрузить справочный материал [Claude API](https://platform.claude.com/docs/en/api/overview) и [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) для языка вашего проекта. Также активируется автоматически, когда ваш код импортирует `anthropic` или `@anthropic-ai/sdk`. Для того, что делает каждая подкоманда и какую версию она требует, см. [Работать над проектами Claude API](/docs/ru/skills#work-on-claude-api-projects) |72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/ru/skills#bundled-skills).** Загрузить справочный материал [Claude API](https://platform.claude.com/docs/en/api/overview) и [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) для языка вашего проекта. Также активируется автоматически, когда ваш код импортирует `anthropic` или `@anthropic-ai/sdk`. Для того, что делает каждая подкоманда и какую версию она требует, см. [Работать над проектами Claude API](/docs/ru/skills#work-on-claude-api-projects) |

73| `/claude-in-chrome [task]` | **[Skill](/docs/ru/skills#bundled-skills).** Попросить Claude выполнить задачу в вашем браузере, такую как тестирование страницы, заполнение формы или чтение логов консоли, через [Claude в Chrome](/docs/ru/chrome). Доступно, когда интеграция Chrome включена для сессии, например с `claude --chrome`, или когда Claude Code может предложить [установить расширение](/docs/ru/chrome#install-the-extension-when-claude-asks) |73| `/claude-in-chrome [task]` | **[Skill](/docs/ru/skills#bundled-skills).** Попросить Claude выполнить задачу в вашем браузере, такую как тестирование страницы, заполнение формы или чтение логов консоли, через [Claude в Chrome](/docs/ru/chrome). Доступно, когда интеграция Chrome включена для сессии, например с `claude --chrome`, или когда Claude Code может предложить [установить расширение](/docs/ru/chrome#install-the-extension-when-claude-asks) |

74| `/clear [name]` | Начать новый разговор с пустым контекстом. Передайте имя для обозначения предыдущего разговора в средстве выбора `/resume`. Чтобы освободить контекст, продолжая тот же разговор, используйте `/compact` вместо этого. Возобновите предыдущий разговор с помощью `/resume`, или, в том же процессе Claude Code, восстановите его из [записи предыдущей сессии меню перемотки](/docs/ru/checkpointing#rewind-past-a-cleared-conversation). Псевдонимы: `/reset`, `/new` |74| `/clear [name]` | Начать новый разговор с пустым контекстом. Передайте имя для обозначения предыдущего разговора в средстве выбора `/resume`. Чтобы освободить контекст, продолжая тот же разговор, используйте `/compact` вместо этого. Возобновите предыдущий разговор с помощью `/resume`, или, в том же процессе Claude Code, восстановите его из [записи предыдущей сессии меню перемотки](/docs/ru/checkpointing#rewind-past-a-cleared-conversation). Псевдонимы: `/reset`, `/new` |

75| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | **[Skill](/docs/ru/skills#bundled-skills).** Проверить текущий diff или номер PR, ветку или путь, который вы передаёте, на наличие ошибок корректности. В зависимости от вашей модели и уровня усилия, проверка также охватывает возможности очистки. Передайте `--fix` для применения результатов, `--comment` для их публикации на GitHub PR или GitLab merge request, или `ultra` для запуска глубокой [облачной проверки](/docs/ru/ultrareview). Публикация в GitLab merge request требует Claude Code v2.1.257 или позже. С `ultra` на целевом `github.com` PR передайте `--post` для предварительного выбора [публикации готовых результатов на PR](/docs/ru/ultrareview#post-findings-to-the-pull-request) в диалоге запуска; `--post` требует Claude Code v2.1.227 или позже. См. [Проверить diff локально](/docs/ru/code-review#review-a-diff-locally) для уровней усилия, нацеливания и того, как это связано с `/simplify`. Псевдоним: `/review` |75| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | **[Skill](/docs/ru/skills#bundled-skills).** Проверить текущий diff или номер PR, ветку или путь, который вы передаёте, на наличие ошибок корректности. В зависимости от вашей модели и уровня усилия, проверка также охватывает возможности очистки. Передайте `--fix` для применения результатов, `--comment` для их публикации на GitHub PR или GitLab merge request, или `ultra` для запуска глубокой [облачной проверки](/docs/ru/ultrareview). Публикация в GitLab merge request требует Claude Code v2.1.257 или позже. С `ultra` на целевом `github.com` PR передайте `--post` для предварительного выбора [публикации готовых результатов на PR](/docs/ru/ultrareview#post-findings-to-the-pull-request) в диалоге запуска; `--post` требует Claude Code v2.1.227 или позже. См. [Проверить diff локально](/docs/ru/code-review#review-a-diff-locally) для уровней усилия, нацеливания и того, как это связано с `/simplify`. Псевдоним: `/review` |

76| `/color [color\|default]` | Установить цвет строки промпта для текущей сессии. Доступные цвета: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Используйте `default` для сброса или запустите без аргумента для выбора случайного цвета. Когда [Remote Control](/docs/ru/remote-control) подключён, цвет синхронизируется с claude.ai/code. Также доступно в неинтерактивном режиме (`-p`); требует Claude Code v2.1.205 или позже |76| `/color [color\|default]` | Установить цвет строки промпта для текущей сессии. Доступные цвета: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Используйте `default` для сброса или запустите без аргумента для выбора случайного цвета. Когда [Remote Control](/docs/ru/remote-control) подключён, цвет синхронизируется с claude.ai/code. Также доступно в неинтерактивном режиме (`-p`) |

77| `/compact [instructions]` | Освободить контекст путём суммирования разговора до сих пор. Опционально передайте инструкции фокуса для суммирования. См. [как сжатие обрабатывает правила, skills и файлы памяти](/docs/ru/context-window#what-survives-compaction) |77| `/compact [instructions]` | Освободить контекст путём суммирования разговора до сих пор. Опционально передайте инструкции фокуса для суммирования. См. [как сжатие обрабатывает правила, skills и файлы памяти](/docs/ru/context-window#what-survives-compaction) |

78| `/config [key=value ...]` | Открыть интерфейс [Параметры](/docs/ru/settings) для настройки темы, модели, [стиля вывода](/docs/ru/output-styles) и других предпочтений. Передайте одну или несколько пар `key=value` для установки параметра напрямую без открытия интерфейса, например `/config thinking=false`, `/config theme=dark` или `/config model=sonnet`. Форма `key=value` также работает в неинтерактивном режиме (`-p`) и из мобильного приложения Claude через [Remote Control](/docs/ru/remote-control). Форма `key=value` не может включить параметр, который требует вашего подтверждения на панели, такой как [`autoContinueAtUsageLimit`](/docs/ru/interactive-mode#turn-automatic-continue-off), хотя может его отключить. Запустите `/config --help` для списка принимаемых ключей. Псевдоним: `/settings` |78| `/config [key=value ...]` | Открыть интерфейс [Параметры](/docs/ru/settings) для настройки темы, модели, [стиля вывода](/docs/ru/output-styles) и других предпочтений. Передайте одну или несколько пар `key=value` для установки параметра напрямую без открытия интерфейса, например `/config thinking=false`, `/config theme=dark` или `/config model=sonnet`. Форма `key=value` также работает в неинтерактивном режиме (`-p`) и из мобильного приложения Claude через [Remote Control](/docs/ru/remote-control). Форма `key=value` не может включить параметр, который требует вашего подтверждения на панели, такой как [`autoContinueAtUsageLimit`](/docs/ru/interactive-mode#turn-automatic-continue-off), хотя может его отключить. Запустите `/config --help` для списка принимаемых ключей. Псевдоним: `/settings` |

79| `/context [all]` | Визуализировать текущее использование контекста как цветную сетку. Показывает предложения оптимизации для контекстно-тяжёлых инструментов, раздутия памяти и предупреждения о ёмкости. Когда разговор превышает контекстное окно, вывод включает [предупреждение](/docs/ru/errors#context-exceeds-the-token-limit), показывающее, насколько вы превышаете лимит и какая команда освобождает место. В [полноэкранном режиме](/docs/ru/fullscreen) `/context` сворачивает разбор по элементам, чтобы сетка оставалась видимой. Передайте `all` для развёртывания |79| `/context [all]` | Визуализировать текущее использование контекста как цветную сетку. Показывает предложения оптимизации для контекстно-тяжёлых инструментов, раздутия памяти и предупреждения о ёмкости. Когда разговор превышает контекстное окно, вывод включает [предупреждение](/docs/ru/errors#context-exceeds-the-token-limit), показывающее, насколько вы превышаете лимит и какая команда освобождает место. В [полноэкранном режиме](/docs/ru/fullscreen) `/context` сворачивает разбор по элементам, чтобы сетка оставалась видимой. Передайте `all` для развёртывания |


91| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Установить [уровень усилия](/docs/ru/model-config#adjust-effort-level): `low` до `xhigh`, `max`, или `auto`; `status` выводит его. `ultracode` или `ultracode on` включает [ultracode](/docs/ru/workflows#let-claude-decide-with-ultracode) для сессии на текущем уровне, и `ultracode off` выключает его; ключ [`ultracode`](/docs/ru/settings-reference#ultracode) сохраняется. `max` только для сессии. Аргументы `on` и `off` и сохранение текущего уровня требуют Claude Code v2.1.284 или позже. До версии 2.1.284 `/effort ultracode` устанавливал сессию на `xhigh`, и `/effort ultracode off` не удавался с `Invalid argument`. Запустите его во время ответа Claude и, после подтверждения [предупреждения о кэше](/docs/ru/prompt-caching#changing-effort-level), если Claude Code показывает его, Claude Code применяет новый уровень к следующему запросу в этом ходу. До версии 2.1.242 Claude Code решал из флага функции, который он получал от Anthropic, запускать ли команду в середине хода или ставить её в очередь до завершения хода, и всегда ставил её в очередь в сессии, которая не [получает флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching), такой как на [поставщике третьей стороны](/docs/ru/third-party-integrations). Работает в `-p` |91| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Установить [уровень усилия](/docs/ru/model-config#adjust-effort-level): `low` до `xhigh`, `max`, или `auto`; `status` выводит его. `ultracode` или `ultracode on` включает [ultracode](/docs/ru/workflows#let-claude-decide-with-ultracode) для сессии на текущем уровне, и `ultracode off` выключает его; ключ [`ultracode`](/docs/ru/settings-reference#ultracode) сохраняется. `max` только для сессии. Аргументы `on` и `off` и сохранение текущего уровня требуют Claude Code v2.1.284 или позже. До версии 2.1.284 `/effort ultracode` устанавливал сессию на `xhigh`, и `/effort ultracode off` не удавался с `Invalid argument`. Запустите его во время ответа Claude и, после подтверждения [предупреждения о кэше](/docs/ru/prompt-caching#changing-effort-level), если Claude Code показывает его, Claude Code применяет новый уровень к следующему запросу в этом ходу. До версии 2.1.242 Claude Code решал из флага функции, который он получал от Anthropic, запускать ли команду в середине хода или ставить её в очередь до завершения хода, и всегда ставил её в очередь в сессии, которая не [получает флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching), такой как на [поставщике третьей стороны](/docs/ru/third-party-integrations). Работает в `-p` |

92| `/exit` | Выйти из CLI. В прикреплённой [фоновой сессии](/docs/ru/agent-view#attach-to-a-session) это отсоединяет и сессия продолжает работать. Псевдоним: `/quit` |92| `/exit` | Выйти из CLI. В прикреплённой [фоновой сессии](/docs/ru/agent-view#attach-to-a-session) это отсоединяет и сессия продолжает работать. Псевдоним: `/quit` |

93| `/export [filename]` | Экспортировать текущий разговор как простой текст. С именем файла записывает напрямую в этот файл. Без него открывает диалог для копирования в буфер обмена или сохранения в файл |93| `/export [filename]` | Экспортировать текущий разговор как простой текст. С именем файла записывает напрямую в этот файл. Без него открывает диалог для копирования в буфер обмена или сохранения в файл |

94| `/fast [on\|off]` | Переключить [быстрый режим](/docs/ru/fast-mode) включен или выключен. Запустите его во время ответа Claude и Claude Code переключает быстрый режим без ожидания завершения хода, хотя текущий ход завершается с его исходной скоростью. До версии 2.1.242 Claude Code решал из флага функции, который он получал от Anthropic, запускать ли команду в середине хода или ставить её в очередь до завершения хода, и всегда ставил её в очередь в сессии, которая не [получает флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching). Доступность в неинтерактивном режиме с `-p` ограничена; см. [Переключить быстрый режим](/docs/ru/fast-mode#toggle-fast-mode). Требует Claude Code v2.1.205 или позже |94| `/fast [on\|off]` | Переключить [быстрый режим](/docs/ru/fast-mode) включен или выключен. Запустите его во время ответа Claude и Claude Code переключает быстрый режим без ожидания завершения хода, хотя текущий ход завершается с его исходной скоростью. До версии 2.1.242 Claude Code решал из флага функции, который он получал от Anthropic, запускать ли команду в середине хода или ставить её в очередь до завершения хода, и всегда ставил её в очередь в сессии, которая не [получает флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching). Доступность в неинтерактивном режиме с `-p` ограничена; см. [Переключить быстрый режим](/docs/ru/fast-mode#toggle-fast-mode) |

95| `/feedback [report]` | Отправить отзыв о продукте о Claude Code. Открывает тот же диалог, что и [`/bug`](#all-commands), с тем же шагом согласия, правилами отправки и поведением в середине хода. В сессиях с [отзывом, составленным Claude](/docs/ru/tools-reference#sendfeedback-tool-behavior), `/feedback` без аргумента открывает очередь черновиков вместо этого, где вы просматриваете, редактируете, отправляете или отклоняете черновики, которые Claude поставил в очередь; очередь включает опцию для написания нового отчёта в диалоге. С аргументом, и для `/bug` всегда диалог открывается напрямую |95| `/feedback [report]` | Отправить отзыв о продукте о Claude Code. Открывает тот же диалог, что и [`/bug`](#all-commands), с тем же шагом согласия, правилами отправки и поведением в середине хода. В сессиях с [отзывом, составленным Claude](/docs/ru/tools-reference#sendfeedback-tool-behavior), `/feedback` без аргумента открывает очередь черновиков вместо этого, где вы просматриваете, редактируете, отправляете или отклоняете черновики, которые Claude поставил в очередь; очередь включает опцию для написания нового отчёта в диалоге. С аргументом, и для `/bug` всегда диалог открывается напрямую |

96| `/fewer-permission-prompts` | **[Skill](/docs/ru/skills#bundled-skills).** Сканировать ваши транскрипты на предмет распространённых вызовов инструментов Bash и MCP только для чтения, затем добавить приоритизированный список разрешённых инструментов в проект `.claude/settings.json` для уменьшения запросов разрешений |96| `/fewer-permission-prompts` | **[Skill](/docs/ru/skills#bundled-skills).** Сканировать ваши транскрипты на предмет распространённых вызовов инструментов Bash и MCP только для чтения, затем добавить приоритизированный список разрешённых инструментов в проект `.claude/settings.json` для уменьшения запросов разрешений |

97| `/focus` | Переключить представление фокуса, которое показывает только ваш последний промпт, однострочное резюме вызова инструмента с diffstats редактирования и финальный ответ. Резюме вызова инструмента также подсчитывает субагентов, запущенных в ходу, и сворачивает завершённые уведомления фоновых задач в один счёт. Выбор сохраняется между сессиями; установите [`viewMode`](/docs/ru/settings-reference#viewmode) в настройках для переопределения. Доступно только в [полноэкранном рендеринге](/docs/ru/fullscreen). Из [Remote Control](/docs/ru/remote-control) клиента запустите `/focus [on\|off]` для включения или отключения представления фокуса для текущей сессии только, без изменения вашего сохранённого выбора; это требует Claude Code v2.1.281 или позже. [Расширение VS Code](/docs/ru/vs-code#use-the-prompt-box) предлагает свой собственный вид Focus как переключатель меню команд, сохранённый как параметр расширения, независимый от `viewMode` |97| `/focus` | Переключить представление фокуса, которое показывает только ваш последний промпт, однострочное резюме вызова инструмента с diffstats редактирования и финальный ответ. Резюме вызова инструмента также подсчитывает субагентов, запущенных в ходу, и сворачивает завершённые уведомления фоновых задач в один счёт. Выбор сохраняется между сессиями; установите [`viewMode`](/docs/ru/settings-reference#viewmode) в настройках для переопределения. Доступно только в [полноэкранном рендеринге](/docs/ru/fullscreen). Из [Remote Control](/docs/ru/remote-control) клиента запустите `/focus [on\|off]` для включения или отключения представления фокуса для текущей сессии только, без изменения вашего сохранённого выбора; это требует Claude Code v2.1.281 или позже. [Расширение VS Code](/docs/ru/vs-code#use-the-prompt-box) предлагает свой собственный вид Focus как переключатель меню команд, сохранённый как параметр расширения, независимый от `viewMode` |


111| `/login` | Войти в вашу учётную запись Anthropic |111| `/login` | Войти в вашу учётную запись Anthropic |

112| `/logout` | Выйти из вашей учётной записи Anthropic |112| `/logout` | Выйти из вашей учётной записи Anthropic |

113| `/loop [interval] [prompt]` | **[Skill](/docs/ru/skills#bundled-skills).** Запускать промпт повторно, пока сессия остаётся открытой. Опустите интервал и Claude [самостоятельно устанавливает темп между итерациями](/docs/ru/scheduled-tasks#let-claude-choose-the-interval). Опустите промпт и Claude запускает [встроенный промпт обслуживания](/docs/ru/scheduled-tasks#run-the-built-in-maintenance-prompt) или ваш [`loop.md`](/docs/ru/scheduled-tasks#customize-the-default-prompt-with-loop-md). Пример: `/loop 5m check if the deploy finished`. См. [Запускать промпты по расписанию](/docs/ru/scheduled-tasks). Псевдоним: `/proactive` |113| `/loop [interval] [prompt]` | **[Skill](/docs/ru/skills#bundled-skills).** Запускать промпт повторно, пока сессия остаётся открытой. Опустите интервал и Claude [самостоятельно устанавливает темп между итерациями](/docs/ru/scheduled-tasks#let-claude-choose-the-interval). Опустите промпт и Claude запускает [встроенный промпт обслуживания](/docs/ru/scheduled-tasks#run-the-built-in-maintenance-prompt) или ваш [`loop.md`](/docs/ru/scheduled-tasks#customize-the-default-prompt-with-loop-md). Пример: `/loop 5m check if the deploy finished`. См. [Запускать промпты по расписанию](/docs/ru/scheduled-tasks). Псевдоним: `/proactive` |

114| `/mcp [reconnect (<server>\|all)\|enable\|disable [<server>\|all]]` | Управлять подключениями MCP-серверов и аутентификацией OAuth. Запустите без аргумента, чтобы открыть интерактивный список, или передайте `reconnect`, `enable` или `disable` с именем сервера или `all`, чтобы изменить состояние подключения, не открывая его. `reconnect all` [повторяет попытку подключения для каждого сервера, который завершился с ошибкой или требует аутентификации](/docs/ru/mcp#retry-failed-servers-yourself). В неинтерактивном режиме (`-p`) запуск без аргумента выводит текстовое резюме статуса серверов вместо открытия списка; требует Claude Code v2.1.205 или позже |114| `/mcp [reconnect (<server>\|all)\|enable\|disable [<server>\|all]]` | Управлять подключениями MCP-серверов и аутентификацией OAuth. Запустите без аргумента, чтобы открыть интерактивный список, или передайте `reconnect`, `enable` или `disable` с именем сервера или `all`, чтобы изменить состояние подключения, не открывая его. `reconnect all` [повторяет попытку подключения для каждого сервера, который завершился с ошибкой или требует аутентификации](/docs/ru/mcp#retry-failed-servers-yourself). В неинтерактивном режиме (`-p`) запуск без аргумента выводит текстовое резюме статуса серверов вместо открытия списка |

115| `/memory` | Редактировать файлы `CLAUDE.md`, включить или отключить [автоматическую память](/docs/ru/memory#auto-memory) и просмотреть записи автоматической памяти |115| `/memory` | Редактировать файлы `CLAUDE.md`, включить или отключить [автоматическую память](/docs/ru/memory#auto-memory) и просмотреть записи автоматической памяти |

116| `/mobile` | Показать QR код для загрузки мобильного приложения Claude. Псевдонимы: `/ios`, `/android` |116| `/mobile` | Показать QR код для загрузки мобильного приложения Claude. Псевдонимы: `/ios`, `/android` |

117| `/model [model]` | Переключить модель AI и сохранить её как вашу по умолчанию для новых сессий. Для моделей, которые это поддерживают, используйте стрелки влево/вправо для [регулировки уровня усилия](/docs/ru/model-config#adjust-effort-level). Без аргумента открывает средство выбора; нажмите `s` на строке для переключения только для текущей сессии. См. [когда Claude Code просит вас подтвердить переключение](/docs/ru/prompt-caching#switching-models). После подтверждения переключения, если Claude Code спрашивает, Claude Code применяет изменение без ожидания завершения текущего ответа. До версии 2.1.242 Claude Code решал из флага функции, который он получал от Anthropic, запускать ли команду в середине хода или ставить её в очередь до завершения хода, и всегда ставил её в очередь в сессии, которая не [получает флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching), такой как на [поставщике третьей стороны](/docs/ru/third-party-integrations). Также доступно в неинтерактивном режиме (`-p`) с аргументом модели вместо средства выбора, где он применяется только к текущей сессии и не сохраняется как ваша по умолчанию; требует Claude Code v2.1.205 или позже |117| `/model [model]` | Переключить модель AI и сохранить её как вашу по умолчанию для новых сессий. Для моделей, которые это поддерживают, используйте стрелки влево/вправо для [регулировки уровня усилия](/docs/ru/model-config#adjust-effort-level). Без аргумента открывает средство выбора; нажмите `s` на строке для переключения только для текущей сессии. См. [когда Claude Code просит вас подтвердить переключение](/docs/ru/prompt-caching#switching-models). После подтверждения переключения, если Claude Code спрашивает, Claude Code применяет изменение без ожидания завершения текущего ответа. До версии 2.1.242 Claude Code решал из флага функции, который он получал от Anthropic, запускать ли команду в середине хода или ставить её в очередь до завершения хода, и всегда ставил её в очередь в сессии, которая не [получает флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching), такой как на [поставщике третьей стороны](/docs/ru/third-party-integrations). Также доступно в неинтерактивном режиме (`-p`) с аргументом модели вместо средства выбора, где он применяется только к текущей сессии и не сохраняется как ваша по умолчанию; требует Claude Code v2.1.205 или позже |


130| `/release-notes` | Просмотреть журнал изменений в интерактивном средстве выбора версий. Выберите конкретную версию для просмотра её примечаний к выпуску или выберите показать все версии. Примечания появляются в вашем транскрипте без входа в разговор, который видит Claude |130| `/release-notes` | Просмотреть журнал изменений в интерактивном средстве выбора версий. Выберите конкретную версию для просмотра её примечаний к выпуску или выберите показать все версии. Примечания появляются в вашем транскрипте без входа в разговор, который видит Claude |

131| `/reload-plugins [--force]` | Перезагрузить все активные [плагины](/docs/ru/plugins/overview) для применения ожидающих изменений без перезапуска. Сообщает счёты для каждого перезагруженного компонента и отмечает любые ошибки загрузки. Когда перезагрузка изменит, какие инструменты MCP загружены и инвалидирует кэш промптов, команда предупреждает и пропускает, если вы не передадите `--force`. Также доступно в неинтерактивном режиме (`-p`), Agent SDK и приложении рабочего стола, где оно запускается только на входе, введённом напрямую в сессию и не применяет изменения MCP-серверов плагинов; требует Claude Code v2.1.260 или позже. См. [Применить изменения плагинов без перезапуска](/docs/ru/plugins/cli-reference#reload-plugins) |131| `/reload-plugins [--force]` | Перезагрузить все активные [плагины](/docs/ru/plugins/overview) для применения ожидающих изменений без перезапуска. Сообщает счёты для каждого перезагруженного компонента и отмечает любые ошибки загрузки. Когда перезагрузка изменит, какие инструменты MCP загружены и инвалидирует кэш промптов, команда предупреждает и пропускает, если вы не передадите `--force`. Также доступно в неинтерактивном режиме (`-p`), Agent SDK и приложении рабочего стола, где оно запускается только на входе, введённом напрямую в сессию и не применяет изменения MCP-серверов плагинов; требует Claude Code v2.1.260 или позже. См. [Применить изменения плагинов без перезапуска](/docs/ru/plugins/cli-reference#reload-plugins) |

132| `/reload-skills` | Повторно сканировать каталоги [skill](/docs/ru/skills) и команд, чтобы skills добавленные или изменённые на диске во время сессии стали доступны без перезапуска. Сообщает, сколько skills доступно и сколько было добавлено или удалено |132| `/reload-skills` | Повторно сканировать каталоги [skill](/docs/ru/skills) и команд, чтобы skills добавленные или изменённые на диске во время сессии стали доступны без перезапуска. Сообщает, сколько skills доступно и сколько было добавлено или удалено |

133| `/remote-control` | Сделать эту сессию доступной для [Remote Control](/docs/ru/remote-control) из claude.ai. Запуск при выходе выводит, что Remote Control требует подписку claude.ai и говорит вам как войти; до версии 2.1.206 это сообщало `Unknown command: /remote-control`. Псевдоним: `/rc` |133| `/remote-control` | Сделать эту сессию доступной для [Remote Control](/docs/ru/remote-control) из claude.ai. Если запустить команду, не выполнив вход, она сообщит, что для Remote Control требуется подписка claude.ai, и подскажет, как войти. Псевдоним: `/rc` |

134| `/remote-env` | Выбрать [облачное окружение](/docs/ru/cloud-environments#select-an-environment-from-the-cli) по умолчанию для облачных сессий, которые вы запускаете из CLI |134| `/remote-env` | Выбрать [облачное окружение](/docs/ru/cloud-environments#select-an-environment-from-the-cli) по умолчанию для облачных сессий, которые вы запускаете из CLI |

135| `/rename [name]` | Переименовать текущую сессию и показать имя на строке промпта. Без имени автоматически создаёт одно из истории разговора. Также доступно в неинтерактивном режиме (`-p`); требует Claude Code v2.1.205 или позже. Из каждого интерфейса переименования, включая claude.ai и приложение рабочего стола, Claude Code заменяет управляющие и невидимые символы в новом имени пробелами и ограничивает имя 200 символами. Если имя пусто после удаления невидимых символов, Claude Code отклоняет его и показывает `That name is empty once invisible characters are removed. Usage: /rename <name>`. Замена символов и ограничение длины требуют Claude Code v2.1.221 или позже |135| `/rename [name]` | Переименовать текущую сессию и показать имя на строке промпта. Без имени автоматически создаёт одно из истории разговора. Также доступно в неинтерактивном режиме (`-p`). Из каждого интерфейса переименования, включая claude.ai и приложение рабочего стола, Claude Code заменяет управляющие и невидимые символы в новом имени пробелами и ограничивает имя 200 символами. Если имя пусто после удаления невидимых символов, Claude Code отклоняет его и показывает `That name is empty once invisible characters are removed. Usage: /rename <name>`. Замена символов и ограничение длины требуют Claude Code v2.1.221 или позже |

136| `/resume [session]` | Возобновить разговор по ID или имени или открыть средство выбора сессии. [Фоновые сессии](/docs/ru/agent-view) появляются в средстве выбора отмеченные с `bg`. Возобновление одной, которая всё ещё работает, из средства выбора или по ID или имени, [открывает эту сессию](/docs/ru/sessions#resume-a-running-background-session): ваш текущий разговор переходит в фон и этот терминал прикрепляется к работающей. Нажмите `←` на пустом промпте для возврата в представление агента, которое также перечисляет разговор, который вы оставили. До версии 2.1.285 Claude Code отказывал и говорил вам открыть сессию с `claude attach` или остановить её сначала. Псевдоним: `/continue` |136| `/resume [session]` | Возобновить разговор по ID или имени или открыть средство выбора сессии. [Фоновые сессии](/docs/ru/agent-view) появляются в средстве выбора отмеченные с `bg`. Возобновление одной, которая всё ещё работает, из средства выбора или по ID или имени, [открывает эту сессию](/docs/ru/sessions#resume-a-running-background-session): ваш текущий разговор переходит в фон и этот терминал прикрепляется к работающей. Нажмите `←` на пустом промпте для возврата в представление агента, которое также перечисляет разговор, который вы оставили. До версии 2.1.285 Claude Code отказывал и говорил вам открыть сессию с `claude attach` или остановить её сначала. Псевдоним: `/continue` |

137| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | Псевдоним [`/code-review`](/docs/ru/code-review#review-a-diff-locally): проверяет текущий diff или номер PR, ветку или путь, который вы передаёте, такой как `/review 1234`, и принимает те же уровни усилия и флаги. Без заданного уровня проверка повторно использует последний уровень от `low` до `max`, который вы вводили; см. [Проверить diff локально](/docs/ru/code-review#review-a-diff-locally) для точных правил. Для глубокой облачной проверки используйте [`/code-review ultra`](/docs/ru/ultrareview). До версии 2.1.223 `/review` была отдельной командой, которая запускала однопроходную проверку только для чтения GitHub pull request по номеру, перечисляя открытые PR для выбора при запуске без аргумента; с v2.1.186 по v2.1.201 она запускала тот же многоагентный движок, что и `/code-review medium` |137| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | Псевдоним [`/code-review`](/docs/ru/code-review#review-a-diff-locally): проверяет текущий diff или номер PR, ветку или путь, который вы передаёте, такой как `/review 1234`, и принимает те же уровни усилия и флаги. Без заданного уровня проверка повторно использует последний уровень от `low` до `max`, который вы вводили; см. [Проверить diff локально](/docs/ru/code-review#review-a-diff-locally) для точных правил. Для глубокой облачной проверки используйте [`/code-review ultra`](/docs/ru/ultrareview). До версии 2.1.223 `/review` была отдельной командой, которая запускала однопроходную проверку только для чтения GitHub pull request по номеру, перечисляя открытые PR для выбора при запуске без аргумента; с v2.1.186 по v2.1.201 она запускала тот же многоагентный движок, что и `/code-review medium` |

138| `/rewind` | Перемотать разговор и/или код к предыдущей точке или суммировать из выбранного сообщения. См. [checkpointing](/docs/ru/checkpointing). Псевдонимы: `/checkpoint`, `/undo` |138| `/rewind` | Перемотать разговор и/или код к предыдущей точке или суммировать из выбранного сообщения. См. [checkpointing](/docs/ru/checkpointing). Псевдонимы: `/checkpoint`, `/undo` |

Details

419 * Вы можете ссылаться на несколько файлов в одном сообщении (например, "@file1.js and @file2.js")419 * Вы можете ссылаться на несколько файлов в одном сообщении (например, "@file1.js and @file2.js")

420</Tip>420</Tip>

421 421 

422Чтобы ссылки `@` не включали в ваше сообщение содержимое файлов и списки каталогов, задайте [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](/docs/ru/env-vars#variables) в вашей оболочке или пользовательских настройках. Тогда Claude получает указанные вами пути с пометкой прочитать их с помощью своих файловых инструментов. Для этой переменной требуется Claude Code v2.1.299 или новее, и Claude Code игнорирует её в настройках проекта и локальных настройках.

423 

422***424***

423 425 

424<h3 id="run-claude-on-a-schedule">426<h3 id="run-claude-on-a-schedule">

Details

1602| Системный промпт и стиль вывода | Оба по-прежнему применяются |1602| Системный промпт и стиль вывода | Оба по-прежнему применяются |

1603| CLAUDE.md в корне проекта и правила без области действия | Повторно внедряются с диска |1603| CLAUDE.md в корне проекта и правила без области действия | Повторно внедряются с диска |

1604| Автоматическая память | Повторно внедряется с диска |1604| Автоматическая память | Повторно внедряется с диска |

1605| [Снимок Git status](/docs/ru/settings-reference#includegitinstructions) | Claude Code читает свежий снимок из вашего репозитория |1605| [Снимок Git status](/docs/ru/settings-reference#includegitinstructions) | Если сессия началась со снимком, Claude Code читает свежий снимок из вашего репозитория |

1606| План, который Claude написал в [режиме планирования](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode) | Повторно внедряется с диска |1606| План, который Claude написал в [режиме планирования](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode) | Повторно внедряется с диска |

1607| Правила с frontmatter `paths:` | Claude Code перезагружает их [по требованию](/docs/ru/memory#path-specific-rules) |1607| Правила с frontmatter `paths:` | Claude Code перезагружает их [по требованию](/docs/ru/memory#path-specific-rules) |

1608| Вложенные CLAUDE.md в подкаталогах | Claude Code перезагружает их [по требованию](/docs/ru/memory#how-claude-md-files-load) |1608| Вложенные CLAUDE.md в подкаталогах | Claude Code перезагружает их [по требованию](/docs/ru/memory#how-claude-md-files-load) |


1622 Когда ваш контекст заполняется1622 Когда ваш контекст заполняется

1623</h2>1623</h2>

1624 1624 

1625Claude Code автоматически компактирует по мере приближения к лимиту, поэтому полное контекстное окно не завершает ваш сеанс. Автоматический проход работает так же, как шаг `/compact` на временной шкале. Смотрите [Когда контекст заполняется](/docs/ru/how-claude-code-works#when-context-fills-up) для того, что он сохраняет.1625Claude Code автоматически сжимает контекст по мере приближения к лимиту, поэтому заполненное контекстное окно не завершает вашу сессию. Автоматический проход работает так же, как шаг `/compact` на временной шкале. Смотрите [Когда контекст заполняется](/docs/ru/how-claude-code-works#when-context-fills-up), чтобы узнать, что он сохраняет. О том, когда Claude Code также сжимает диалог, оставленный без активности, смотрите [сжатие контекста при простое](/docs/ru/settings-reference#idlecompaction).

1626 1626 

1627Вы также можете действовать перед автоматическим проходом:1627Вы также можете действовать перед автоматическим проходом:

1628 1628 

Details

128* **Допускайте вызов изнутри себя.** Claude Code применяет launcher к каждому вложенному self-spawn, поэтому launcher, который получает исключительный ресурс, должен обнаружить, что он его уже держит.128* **Допускайте вызов изнутри себя.** Claude Code применяет launcher к каждому вложенному self-spawn, поэтому launcher, который получает исключительный ресурс, должен обнаружить, что он его уже держит.

129* **Не пишите в терминал перед запуском Claude Code.** Все, что напечатано перед `exec`, сообщается как причина сбоя, если сеанс умирает перед инициализацией.129* **Не пишите в терминал перед запуском Claude Code.** Все, что напечатано перед `exec`, сообщается как причина сбоя, если сеанс умирает перед инициализацией.

130* **Не полагайтесь на то, как записаны аргументы.** Значение флага может прийти как отдельный аргумент, `--flag value`, или вместе с флагом, `--flag=value`. Форма, которую использует флаг, может меняться от версии к версии.130* **Не полагайтесь на то, как записаны аргументы.** Значение флага может прийти как отдельный аргумент, `--flag value`, или вместе с флагом, `--flag=value`. Форма, которую использует флаг, может меняться от версии к версии.

131* **Запускайте `exec` из каталога, в котором был запущен launcher.** Claude Code работает в каталоге, в котором запускается, поэтому launcher, меняющий каталог, может запустить сессию не в том проекте. Если launcher должен войти в пространство имён или песочницу, которая сбрасывает рабочий каталог, вернитесь в исходный каталог внутри неё перед `exec`.

131 132 

132<h3 id="format-of-the-launcher-value">133<h3 id="format-of-the-launcher-value">

133 Формат значения launcher134 Формат значения launcher

Details

170| Skill не появляется в `/skills` | Файл skill находится в `.claude/skills/name.md` вместо папки | Используйте папку с `SKILL.md` внутри: `.claude/skills/name/SKILL.md`. |170| Skill не появляется в `/skills` | Файл skill находится в `.claude/skills/name.md` вместо папки | Используйте папку с `SKILL.md` внутри: `.claude/skills/name/SKILL.md`. |

171| Skill появляется в `/skills`, но Claude никогда его не вызывает | Skill имеет `disable-model-invocation: true` в своём frontmatter или его описание не совпадает с тем, как вы формулируете запрос | Проверьте значок в `/skills`: метка "user-only" означает, что Claude не будет его запускать самостоятельно. См. [skill invocation](/docs/ru/skills). |171| Skill появляется в `/skills`, но Claude никогда его не вызывает | Skill имеет `disable-model-invocation: true` в своём frontmatter или его описание не совпадает с тем, как вы формулируете запрос | Проверьте значок в `/skills`: метка "user-only" означает, что Claude не будет его запускать самостоятельно. См. [skill invocation](/docs/ru/skills). |

172| Инструкции в `CLAUDE.md` подпапки кажутся игнорируемыми | Файлы подпапок загружаются по требованию, а не при запуске сессии | Чтобы загрузить `CLAUDE.md` подпапки, попросите Claude прочитать другой файл в этой подпапке. См. [когда загружаются файлы подпапок](/docs/ru/memory#how-claude-md-files-load). |172| Инструкции в `CLAUDE.md` подпапки кажутся игнорируемыми | Файлы подпапок загружаются по требованию, а не при запуске сессии | Чтобы загрузить `CLAUDE.md` подпапки, попросите Claude прочитать другой файл в этой подпапке. См. [когда загружаются файлы подпапок](/docs/ru/memory#how-claude-md-files-load). |

173| Subagent игнорирует инструкции `CLAUDE.md` | Встроенные агенты Explore и Plan пропускают `CLAUDE.md`. Пользовательские subagents загружают его так же, как основной диалог, если только его определение не устанавливает [`omitClaudeMd`](/docs/ru/sub-agents#supported-frontmatter-fields) | Для Explore или Plan переформулируйте инструкцию в своём делегирующем prompt. Для subagent, который устанавливает `omitClaudeMd`, удалите это поле. Для любого другого пользовательского subagent поместите критические инструкции в тело файла агента, которое становится системным prompt агента. См. [что загружается при запуске](/docs/ru/sub-agents#what-loads-at-startup). |173| Субагент игнорирует инструкции `CLAUDE.md` | Встроенные агенты Explore и Plan пропускают `CLAUDE.md` при запуске. Пользовательский субагент загружает его так же, как основной диалог, если только в его определении не задано [`omitClaudeMd`](/docs/ru/sub-agents#supported-frontmatter-fields) | Для Explore или Plan переформулируйте инструкцию в своём делегирующем промпте. Для субагента, который устанавливает `omitClaudeMd`, удалите это поле. Для любого другого пользовательского субагента поместите критические инструкции в тело файла агента, которое становится системным промптом агента. См. [что загружается при запуске](/docs/ru/sub-agents#what-loads-at-startup). |

174| Логика очистки никогда не запускается в конце сессии | Нет настроенного `SessionEnd` hook | Добавьте `SessionEnd` hook в `settings.json`. См. [hook events list](/docs/ru/hooks#hook-events). |174| Логика очистки никогда не запускается в конце сессии | Нет настроенного `SessionEnd` hook | Добавьте `SessionEnd` hook в `settings.json`. См. [hook events list](/docs/ru/hooks#hook-events). |

175| MCP серверы в `.mcp.json` никогда не загружаются | Файл находится под `.claude/` или его серверы находятся под ключом верхнего уровня `servers`, как в VS Code `mcp.json`, вместо `mcpServers` | Конфигурация MCP проекта находится в корне репозитория как `.mcp.json`, а не внутри `.claude/`, с серверами под ключом `mcpServers`. См. [MCP configuration](/docs/ru/mcp). |175| MCP серверы в `.mcp.json` никогда не загружаются | Файл находится под `.claude/` или его серверы находятся под ключом верхнего уровня `servers`, как в VS Code `mcp.json`, вместо `mcpServers` | Конфигурация MCP проекта находится в корне репозитория как `.mcp.json`, а не внутри `.claude/`, с серверами под ключом `mcpServers`. См. [MCP configuration](/docs/ru/mcp). |

176| MCP серверы добавлены под `mcpServers` в `settings.json`, но никогда не появляются | `settings.json` не читает ключ `mcpServers` | Определите серверы проекта в `.mcp.json` в корне репозитория или запустите `claude mcp add --scope user` для серверов с областью пользователя. См. [MCP configuration](/docs/ru/mcp). |176| MCP серверы добавлены под `mcpServers` в `settings.json`, но никогда не появляются | `settings.json` не читает ключ `mcpServers` | Определите серверы проекта в `.mcp.json` в корне репозитория или запустите `claude mcp add --scope user` для серверов с областью пользователя. См. [MCP configuration](/docs/ru/mcp). |

desktop.md +133 −9

Details

101| **Accept edits** | `acceptEdits` | Claude автоматически принимает редактирование файлов и общие команды файловой системы, такие как `mkdir`, `touch` и `mv`, но всё ещё спрашивает перед выполнением других команд терминала. Используйте это, когда вы доверяете изменениям файлов и хотите более быструю итерацию. |101| **Accept edits** | `acceptEdits` | Claude автоматически принимает редактирование файлов и общие команды файловой системы, такие как `mkdir`, `touch` и `mv`, но всё ещё спрашивает перед выполнением других команд терминала. Используйте это, когда вы доверяете изменениям файлов и хотите более быструю итерацию. |

102| **Plan** | `plan` | Claude читает файлы и выполняет команды для исследования, затем предлагает план без редактирования вашего исходного кода. Хорошо подходит для сложных задач, когда вы хотите сначала проверить подход. |102| **Plan** | `plan` | Claude читает файлы и выполняет команды для исследования, затем предлагает план без редактирования вашего исходного кода. Хорошо подходит для сложных задач, когда вы хотите сначала проверить подход. |

103| **Auto** | `auto` | Claude работает без рутинных запросов разрешения; перед выполнением действий, таких как shell-команды и сетевые запросы, фоновый классификатор проверяет, что они соответствуют вашему запросу. Появляется, когда [авторежим доступен](#auto-mode-availability); отдельного переключателя Settings для этого нет. |103| **Auto** | `auto` | Claude работает без рутинных запросов разрешения; перед выполнением действий, таких как shell-команды и сетевые запросы, фоновый классификатор проверяет, что они соответствуют вашему запросу. Появляется, когда [авторежим доступен](#auto-mode-availability); отдельного переключателя Settings для этого нет. |

104| **Bypass permissions** | `bypassPermissions` | Claude работает без запросов разрешения, за исключением [действий, которые ни один режим не одобряет автоматически](/docs/ru/permission-modes#actions-no-mode-auto-approves), классификаторов безопасности, когда Claude [действует на внешних сайтах](#browse-external-sites), или действий рабочего стола, где Claude всегда спрашивает в первую очередь, таких как [архивирование сессии](#work-across-sessions). Эквивалентно `--dangerously-skip-permissions` в CLI. На планах Pro и Max включите это в Settings → Claude Code в разделе "Allow bypass permissions mode"; на планах Team и Enterprise переключателя Settings нет, и вместо этого политика организации его контролирует. Используйте это только в sandboxed контейнерах или виртуальных машинах. |104| **Bypass permissions** | `bypassPermissions` | Claude работает без запросов разрешения, за исключением [действий, которые ни один режим не одобряет автоматически](/docs/ru/permission-modes#actions-no-mode-auto-approves), классификаторов безопасности, когда Claude [действует на внешних сайтах](#browse-external-sites), или действий в приложении для рабочего стола, таких как удаление сессии (но не [её архивирование](#work-across-sessions)). Эквивалентно `--dangerously-skip-permissions` в CLI. На планах Pro и Max включите это в Settings → Claude Code в разделе "Allow bypass permissions mode"; на планах Team и Enterprise переключателя Settings нет, и вместо этого политика организации его контролирует. Используйте это только в sandboxed контейнерах или виртуальных машинах. |

105 105 

106Более ранние версии вкладки Code обозначали эти режимы как Ask permissions, Auto accept edits и Plan mode.106Более ранние версии вкладки Code обозначали эти режимы как Ask permissions, Auto accept edits и Plan mode.

107 107 


131 131 

132Панель Browser также может открывать статические HTML файлы, PDF-файлы, изображения и видео из вашего проекта. Нажмите на путь HTML, PDF, изображения или видео в чате, чтобы открыть его там.132Панель Browser также может открывать статические HTML файлы, PDF-файлы, изображения и видео из вашего проекта. Нажмите на путь HTML, PDF, изображения или видео в чате, чтобы открыть его там.

133 133 

134<Note>

135 В [сессии SSH](#ssh-sessions) Claude не может открыть ваше приложение в панели Browser, потому что там у него нет инструментов этой панели. Чтобы посмотреть на приложение самостоятельно, [перенаправьте его порт на ваш компьютер](#reach-a-port-on-the-remote-machine).

136</Note>

137 

134Из панели Browser вы можете:138Из панели Browser вы можете:

135 139 

136* Взаимодействовать с вашим запущенным приложением прямо в панели Browser140* Взаимодействовать с вашим запущенным приложением прямо в панели Browser


218 222 

219<Note>223<Note>

220 Мониторинг PR требует, чтобы [GitHub CLI (`gh`)](https://cli.github.com/) был установлен и аутентифицирован на вашей машине. Если `gh` не установлен, Desktop предложит вам установить его в первый раз, когда вы попытаетесь создать PR.224 Мониторинг PR требует, чтобы [GitHub CLI (`gh`)](https://cli.github.com/) был установлен и аутентифицирован на вашей машине. Если `gh` не установлен, Desktop предложит вам установить его в первый раз, когда вы попытаетесь создать PR.

225 

226 В [сессии SSH](#ssh-sessions) настройте `git` и `gh` на удалённой машине до того, как нажмёте **Create PR**, потому что Claude отправляет ветку и выполняет `gh pr create` именно там. Установите `gh` там самостоятельно, потому что в сессии SSH Desktop не предлагает это сделать. Затем проверьте там, что `git push` работает и что `gh auth status` сообщает, что вы вошли в систему.

221</Note>227</Note>

222 228 

223<h2 id="arrange-your-workspace">229<h2 id="arrange-your-workspace">


453 459 

454Claude Code применяет четыре механизма безопасности между сессиями:460Claude Code применяет четыре механизма безопасности между сессиями:

455 461 

456* Перед архивированием любой сессии Claude сначала спрашивает вас. Вы видите карточку подтверждения в каждом режиме разрешений, включая Auto и Bypass permissions.462* Перед тем как Claude архивирует сессию, вы видите карточку подтверждения, кроме авторежима и режима Bypass permissions, в которых Claude может архивировать сессию без неё. Чтобы получать запрос, переключитесь в режим Manual.

457* Через этот интерфейс Claude не может отправлять сообщения между сессиями из сессии, за которой никто не наблюдает, например из запуска запланированной задачи, и не может доставлять сообщения в такую сессию.463* Через этот интерфейс Claude не может отправлять сообщения между сессиями из сессии, за которой никто не наблюдает, например из запуска запланированной задачи, и не может доставлять сообщения в такую сессию.

458* Claude Code проверяет каждое сообщение из этого интерфейса на соответствие [настройкам входящих сообщений](/docs/ru/cross-session-messaging#control-inbound-messages) получающей сессии, даже если в самой получающей сессии нет [обмена сообщениями между сессиями](/docs/ru/cross-session-messaging#availability). Если вы задали для [`crossSessionInbound`](/docs/ru/settings-reference#crosssessioninbound) значение `refuse` в получающей сессии, Claude Code отбрасывает сообщения из этого интерфейса. Claude Code сообщает об отказе приложению Claude для рабочего стола. До версии 2.1.234 Claude Code отбрасывал каждое сообщение из этого интерфейса, адресованное получающей сессии без обмена сообщениями между сессиями.464* Claude Code проверяет каждое сообщение из этого интерфейса на соответствие [настройкам входящих сообщений](/docs/ru/cross-session-messaging#control-inbound-messages) получающей сессии, даже если в самой получающей сессии нет [обмена сообщениями между сессиями](/docs/ru/cross-session-messaging#availability). Если вы задали для [`crossSessionInbound`](/docs/ru/settings-reference#crosssessioninbound) значение `refuse` в получающей сессии, Claude Code отбрасывает сообщения из этого интерфейса. Claude Code сообщает об отказе приложению Claude для рабочего стола. До версии 2.1.234 Claude Code отбрасывал каждое сообщение из этого интерфейса, адресованное получающей сессии без обмена сообщениями между сессиями.

459* Claude Code цитирует каждое входящее сообщение и указывает сессию, которая его отправила, а Claude при действиях по такому сообщению по-прежнему следует собственным настройкам разрешений получающей сессии.465* Claude Code цитирует каждое входящее сообщение и указывает сессию, которая его отправила, а Claude при действиях по такому сообщению по-прежнему следует собственным настройкам разрешений получающей сессии.


546 552 

547[Skills](/docs/ru/skills) расширяют возможности Claude. Claude загружает их автоматически, когда они релевантны, или вы можете вызвать один напрямую: введите `/` в поле подсказки или нажмите кнопку **+** и выберите **Slash commands**, чтобы просмотреть доступные. Это включает [встроенные команды](/docs/ru/commands), ваши [пользовательские skills](/docs/ru/skills#create-your-first-skill), skills проекта из вашей кодовой базы и skills из любых [установленных плагинов](/docs/ru/plugins/install). Выберите один, и он появится выделенным в поле ввода. Введите вашу задачу после него и отправьте как обычно.553[Skills](/docs/ru/skills) расширяют возможности Claude. Claude загружает их автоматически, когда они релевантны, или вы можете вызвать один напрямую: введите `/` в поле подсказки или нажмите кнопку **+** и выберите **Slash commands**, чтобы просмотреть доступные. Это включает [встроенные команды](/docs/ru/commands), ваши [пользовательские skills](/docs/ru/skills#create-your-first-skill), skills проекта из вашей кодовой базы и skills из любых [установленных плагинов](/docs/ru/plugins/install). Выберите один, и он появится выделенным в поле ввода. Введите вашу задачу после него и отправьте как обычно.

548 554 

549Вы можете отправить команду, пока Claude работает, так же как любое другое сообщение, и сеанс вернётся в режим ожидания после завершения хода. До версии 2.1.206 команда, отправленная во время хода, могла оставить сеанс в состоянии выполнения, и сообщения, которые вы отправили впоследствии, не доставлялись.555Вы можете отправить команду, пока Claude работает, так же как любое другое сообщение, и сессия вернётся в режим ожидания после завершения хода.

550 556 

551Локальные сеансы загружают ваши личные skills из `~/.claude/skills/`. Сеанс [SSH](#ssh-sessions) читает `~/.claude/skills/` из домашней директории удалённого хоста, а не с вашей машины.557Локальные сеансы загружают ваши личные skills из `~/.claude/skills/`. Сеанс [SSH](#ssh-sessions) читает `~/.claude/skills/` из домашней директории удалённого хоста, а не с вашей машины.

552 558 


693 699 

694* **`true`**: Claude находит и использует свободный порт автоматически. Подходит для большинства dev-серверов.700* **`true`**: Claude находит и использует свободный порт автоматически. Подходит для большинства dev-серверов.

695* **`false`**: Claude выходит с ошибкой. Используйте это, когда ваш сервер должен использовать конкретный порт, например для обратных вызовов OAuth или списков разрешений CORS.701* **`false`**: Claude выходит с ошибкой. Используйте это, когда ваш сервер должен использовать конкретный порт, например для обратных вызовов OAuth или списков разрешений CORS.

696* **Не установлено (по умолчанию)**: Claude спрашивает, нужен ли серверу этот точный порт, затем сохраняет ваш ответ.702* **Не установлено (по умолчанию)**: ваш сервер получает следующий свободный порт, как и при `true`, за исключением одного случая, описанного ниже. До Claude Desktop v2.37337.0 Claude вместо этого спрашивает, нужен ли серверу именно этот порт, а затем сохраняет ваш ответ в `launch.json`.

697 703 

698Когда Claude выбирает другой порт, он передаёт назначенный порт вашему серверу через переменную окружения `PORT`.704Если ваш предпочтительный порт занят, а `autoPort` не установлен, ваш сервер остаётся остановленным, когда выполняются все следующие условия:

705 

706* Вы запускаете сервер через скрипт `npm`, `yarn`, `pnpm` или `bun`.

707* Ваш предпочтительный порт жёстко задан в этом скрипте, или Claude не может проанализировать скрипт.

708* Вы не передаёте порт в `runtimeArgs`.

709 

710В этом случае освободите порт, удалите жёстко заданное значение или измените `port`, чтобы он совпадал со скриптом. Установка `"autoPort": true` вместо этого работает только для скрипта, который читает `PORT`.

711 

712Сделайте так, чтобы ваш сервер читал свой порт из переменной окружения `PORT`, которая содержит назначенный порт. Когда Claude переносит ваш сервер на другой порт, он также переписывает значение `--port` или `-p` в `runtimeArgs`, чтобы оно совпадало.

699 713 

700<h4 id="examples">714<h4 id="examples">

701 Примеры715 Примеры


840 854 

841Удалённой машине с Linux или macOS нужны поддерживаемый процессор, SSH-сервер с SFTP, папка установки, не смонтированная с `noexec`, работающая оболочка и доступ к сети. Проверьте каждое требование перед подключением или когда соединение не удаётся после входа:855Удалённой машине с Linux или macOS нужны поддерживаемый процессор, SSH-сервер с SFTP, папка установки, не смонтированная с `noexec`, работающая оболочка и доступ к сети. Проверьте каждое требование перед подключением или когда соединение не удаётся после входа:

842 856 

843* **Система**: процессор x86\_64 или arm64. Машина также должна соответствовать [системным требованиям](/docs/ru/setup#system-requirements) Claude Code.857* **Система**: процессор x86\_64 или arm64. Машина также должна соответствовать [системным требованиям](/docs/ru/setup#system-requirements) Claude Code. На Linux для Claude Code требуется glibc 2.17 или более поздней версии либо musl. Чтобы узнать, что используется на машине, выполните там `ldd --version`. В дистрибутиве на основе musl, например Alpine Linux, также установите [пакеты, которые нужны Claude Code](/docs/ru/setup#alpine-linux-and-musl-based-distributions).

844* **SFTP**: SSH-сервер должен предоставлять подсистему SFTP, которую включает строка `Subsystem sftp` в его `sshd_config`. Чтобы проверить, подключитесь к тому же хосту и порту с помощью `sftp` в терминале на вашем компьютере. Работающий сервер показывает приглашение `sftp>`.858* **SFTP**: SSH-сервер должен предоставлять подсистему SFTP, которую включает строка `Subsystem sftp` в его `sshd_config`. Чтобы проверить, подключитесь к тому же хосту и порту с помощью `sftp` в терминале на вашем компьютере. Работающий сервер показывает приглашение `sftp>`.

845* **Сессии на одно соединение**: Desktop на macOS и Linux открывает несколько сессий в одном SSH-соединении. Если `sshd_config` сервера задаёт `MaxSessions 1`, увеличьте значение, например до значения OpenSSH по умолчанию, равного 10.859* **Сессии на одно соединение**: Desktop на macOS и Linux открывает несколько сессий в одном SSH-соединении. Если `sshd_config` сервера задаёт `MaxSessions 1`, увеличьте значение, например до значения OpenSSH по умолчанию, равного 10.

846* **Папка установки**: Desktop устанавливает вспомогательную программу и Claude Code в `~/.claude/remote/` в вашем домашнем каталоге. Он запускает их оттуда, поэтому эта папка не может находиться в файловой системе, смонтированной с `noexec`. Выделите около 1 ГБ дискового пространства в домашнем каталоге каждого подключающегося пользователя.860* **Папка установки**: Desktop устанавливает вспомогательную программу и Claude Code в `~/.claude/remote/` в вашем домашнем каталоге. Он запускает их оттуда, поэтому эта папка не может находиться в файловой системе, смонтированной с `noexec`. Выделите около 1 ГБ дискового пространства в домашнем каталоге каждого подключающегося пользователя. О том, что хранится в этой папке, см. [Файлы и процессы на удалённой машине](#files-and-processes-on-the-remote-machine).

847* **Оболочка**: оболочка, заданная для вашей учётной записи на удалённой машине, должна выполнять команды, отправленные через SSH, как это делают Bash, Zsh и `sh`861* **Оболочка**: оболочка, заданная для вашей учётной записи на удалённой машине, должна выполнять команды, отправленные через SSH, как это делают Bash, Zsh и `sh`

848* **Сеть**: Claude Code работает на удалённой машине и выполняет сетевые запросы оттуда, поэтому машине нужен [доступ к сети, который требуется Claude Code](/docs/ru/network-config#network-access-requirements). Если машина не может загрузить Claude Code, Desktop загружает его на вашем компьютере и выгружает на машину. Остальные запросы Claude Code по-прежнему отправляются с удалённой машины.862* **Сеть**: Claude Code работает на удалённой машине и выполняет сетевые запросы оттуда, поэтому машине нужен [доступ к сети, который требуется Claude Code](/docs/ru/network-config#network-access-requirements). Если машина не может загрузить Claude Code, Desktop загружает его на вашем компьютере и выгружает на машину. Остальные запросы Claude Code по-прежнему отправляются с удалённой машины.

849 863 


878 892 

879Введите `devbox` в поле **SSH host**.893Введите `devbox` в поле **SSH host**.

880 894 

895<h5 id="use-variables-from-your-shell-in-a-proxycommand">

896 Использование переменных из вашей оболочки в `ProxyCommand`

897</h5>

898 

899Чтобы использовать собственную переменную окружения в команде `ProxyCommand` или `Match exec`, экспортируйте её в файле запуска оболочки, например `~/.zshrc`, затем закройте и снова откройте Desktop. При запуске Desktop считывает то, что экспортирует ваша оболочка входа, и хранит эти значения, пока вы его не закроете.

900 

901Для этого требуется Claude Desktop v2.37337.0 или более поздней версии и команда `env`, которая принимает `-0`; это можно проверить, выполнив `env -0` в терминале на вашем компьютере.

902 

881<h5 id="raise-the-ssh-connection-timeout">903<h5 id="raise-the-ssh-connection-timeout">

882 Увеличение таймаута SSH-соединения904 Увеличение таймаута SSH-соединения

883</h5>905</h5>


894 916 

895`ssh` использует первое найденное для хоста значение, поэтому размещайте запись выше любой записи `Host *`, которая задаёт `ConnectTimeout`. Чтобы убедиться, выполните `ssh -G devbox` в терминале на вашем компьютере. Его вывод содержит `connecttimeout 120`. После изменения значения закройте и снова откройте Desktop.917`ssh` использует первое найденное для хоста значение, поэтому размещайте запись выше любой записи `Host *`, которая задаёт `ConnectTimeout`. Чтобы убедиться, выполните `ssh -G devbox` в терминале на вашем компьютере. Его вывод содержит `connecttimeout 120`. После изменения значения закройте и снова откройте Desktop.

896 918 

919<h5 id="forwarding-settings-that-desktop-leaves-off">

920 Настройки переадресации, которые Desktop оставляет выключенными

921</h5>

922 

923В своём соединении с удалённой машиной Desktop оставляет `ForwardAgent`, `ForwardX11`, `LocalForward`, `RemoteForward`, `DynamicForward` и `Tunnel` выключенными, даже если ваша конфигурация SSH их включает. В [терминале](#run-commands-in-the-terminal) или команде `!` ваши настройки переадресации будут применяться [лишь иногда](#limits-while-desktop-is-disconnected), потому что Desktop может запустить там отдельный `ssh`, который им следует.

924 

925* **Чтобы получить доступ к порту на удалённой машине**: [перенаправьте его самостоятельно](#reach-a-port-on-the-remote-machine)

926* **Чтобы использовать собственные ключи с удалённой машины**: настройте учётные данные на самой удалённой машине, например для `git push`

927 

928Чтобы Desktop не перенаправлял ваш SSH-агент или порт, выполните `ssh -G devbox` в терминале на вашем компьютере. Затем выполните команду снова так, как её может выполнить Desktop, со значениями `hostname` и `user`, которые она выводит, например `ssh -G -o HostName=devbox.internal.example.com -l alice devbox`. Второй вывод может показать настройки из блока `Match`, которые первый пропускает.

929 

930Найдите в обоих выводах строку `forwardagent` с любым значением, кроме `no`, и строки, начинающиеся с `localforward`, `remoteforward` или `dynamicforward`. Если найдёте такую, удалите эту настройку из вашей конфигурации SSH. Сделайте то же самое для хоста, к которому ваш `ProxyCommand` подключается с помощью `ssh`.

931 

932<h4 id="reach-a-port-on-the-remote-machine">

933 Доступ к порту на удалённой машине

934</h4>

935 

936Чтобы открыть сервер, работающий на удалённой машине, например dev-сервер на порту 3000, перенаправьте порт самостоятельно. В терминале на вашем компьютере выполните `ssh` с `-L` и хостом, к которому вы подключаетесь, например `devbox`:

937 

938```bash theme={null}

939ssh -N -L 3000:localhost:3000 devbox

940```

941 

942Если в соединении вы заполнили **SSH port** или **SSH key (optional)**, добавьте `-p` или `-i` с тем же значением. Оставьте эту команду работающей и откройте `http://localhost:3000` в браузере на вашем компьютере, чтобы получить доступ к порту 3000 удалённой машины. Если `ssh` выводит `open failed: administratively prohibited`, попросите администратора машины разрешить TCP-переадресацию, которой управляет `AllowTcpForwarding` в `sshd_config` SSH-сервера.

943 

897<h4 id="windows-remote-machines">944<h4 id="windows-remote-machines">

898 Удалённые машины с Windows945 Удалённые машины с Windows

899</h4>946</h4>


925Claude Code работает как процесс на удалённой машине под управлением фонового помощника, который Desktop устанавливает там, поэтому ему не нужно ваше SSH-соединение, чтобы продолжать работу. Поведение, описанное в этом разделе, требует Claude Desktop v2.31226.0 или более поздней версии.972Claude Code работает как процесс на удалённой машине под управлением фонового помощника, который Desktop устанавливает там, поэтому ему не нужно ваше SSH-соединение, чтобы продолжать работу. Поведение, описанное в этом разделе, требует Claude Desktop v2.31226.0 или более поздней версии.

926 973 

927<Warning>974<Warning>

928 Если вы входите в Desktop с учётной записью Claude, не рассчитывайте, что задача будет выполняться всю ночь. Desktop продлевает вход для задачи только пока Desktop запущен и подключён, поэтому срок действия входа задачи может истечь после отключения, и тогда задача остановится. Сколько времени остаётся на момент отключения, бывает по-разному.975 Если вы входите в Desktop с учётной записью Claude, не рассчитывайте, что задача будет выполняться всю ночь. Desktop продлевает вход для задачи только пока Desktop запущен и подключён, поэтому срок действия входа задачи может истечь после отключения, и тогда задача остановится. Сколько времени остаётся на момент отключения, бывает по-разному, и это может быть всего несколько минут.

929 976 

930 Проделанная работа остаётся на удалённой машине, и, вернувшись, вы можете продолжить, отправив сообщение.977 Проделанная работа остаётся на удалённой машине, и, вернувшись, вы можете продолжить, отправив сообщение.

931 978 


1076 1123 

1077Для этого поля требуется Claude Desktop v1.44121.0 или более поздней версии. Если ваша организация ограничивает папки, которые могут использовать сессии, Desktop скрывает это поле и хранит worktree внутри проекта.1124Для этого поля требуется Claude Desktop v1.44121.0 или более поздней версии. Если ваша организация ограничивает папки, которые могут использовать сессии, Desktop скрывает это поле и хранит worktree внутри проекта.

1078 1125 

1126<h4 id="files-and-processes-on-the-remote-machine">

1127 Файлы и процессы на удалённой машине

1128</h4>

1129 

1130Desktop устанавливает вспомогательную программу и Claude Code в `~/.claude/remote/` в домашнем каталоге каждого пользователя, который подключается к удалённой машине с Linux или macOS. Помощник не прослушивает ни один сетевой порт, но Claude Code и запускаемые им программы, такие как MCP-серверы и серверы разработки, могут это делать.

1131 

1132| Папка | Содержимое |

1133| - | - |

1134| `~/.claude/remote/srv/` | Помощник, по одной папке на версию |

1135| `~/.claude/remote/ccd-cli/` | Claude Code, по одному файлу на версию |

1136| `~/.claude/remote/run/` | Файлы времени выполнения помощника, такие как его сокет и лог, по одной папке на каждый подключающийся компьютер |

1137| `~/.claude/remote/plugins/` | Плагины, которые Desktop копирует с компьютера пользователя |

1138| [`~/.claude/uploads/`](/docs/ru/claude-directory#clear-local-data) | Файлы, которые пользователь прикрепляет к сообщениям, по одной папке на сессию |

1139 

1140Чтобы вывести список процессов одного пользователя, выполните `pgrep -fl "$HOME/.claude/remote/"` на удалённой машине от имени этого пользователя или подставив домашний каталог пользователя вместо `$HOME`:

1141 

1142* **Помощник**: один или несколько процессов `server` для каждого подключающегося компьютера

1143* **Claude Code**: процессы, которые помощник запускает для сессий пользователя, каждый из файла, названного по его версии, например `2.1.295-…`

1144 

1145Desktop обращается к помощнику через SSH-соединение пользователя, по Unix-сокету `rpc.sock` в папке помощника внутри `~/.claude/remote/run/`. Кроме root, другие пользователи машины не могут подключиться к этому сокету, потому что у него режим 600, а у его папки — режим 700.

1146 

1147О том, когда помощник останавливается сам, см. [Ограничения, пока Desktop отключён](#limits-while-desktop-is-disconnected).

1148 

1149Чтобы удалить помощник и Claude Code для одного пользователя:

1150 

1151<Steps>

1152 <Step title="Закройте Desktop">

1153 Закройте Desktop на каждом компьютере, с которого подключается пользователь. При следующем подключении он снова устанавливает обе программы, а переподключиться он может самостоятельно.

1154 </Step>

1155 

1156 <Step title="Завершите процессы">

1157 Войдя на удалённую машину под этим пользователем, выполните `kill` с каждым идентификатором процесса, который выводит [`pgrep`](#files-and-processes-on-the-remote-machine).

1158 </Step>

1159 

1160 <Step title="Удалите папку">

1161 Удалите `~/.claude/remote/`. Чтобы удалить собственные файлы Claude Code в `~/.claude/` и `~/.claude.json`, см. [Удаление файлов конфигурации](/docs/ru/setup#remove-configuration-files).

1162 </Step>

1163</Steps>

1164 

1165<h5 id="end-one-session’s-process">

1166 Завершение процесса одной сессии

1167</h5>

1168 

1169Чтобы завершить процесс Claude Code одной сессии, [архивируйте сессию](#work-in-parallel-with-sessions) в Desktop, пока Desktop подключён к удалённой машине. Процесс продолжает работать после того, как его задача выполнена, и после того, как вы закроете Desktop.

1170 

1171Прежде чем архивировать сессию, у которой есть worktree, см. [Параллельная работа с сессиями](#work-in-parallel-with-sessions).

1172 

1173<h5 id="see-who-connected-to-the-remote-machine">

1174 Как узнать, кто подключался к удалённой машине

1175</h5>

1176 

1177Чтобы узнать, кто подключался к удалённой машине, прочитайте лог SSH-сервера на этой машине, где вход из Desktop выглядит так же, как вход из терминала. С Desktop на macOS или Linux ожидайте запись при каждом подключении Desktop, а не по одной на каждую сессию.

1178 

1179<h4 id="use-mcp-servers-set-up-on-the-remote-machine">

1180 Использование MCP-серверов, настроенных на удалённой машине

1181</h4>

1182 

1183Чтобы использовать [MCP-сервер](/docs/ru/mcp) из `~/.claude.json` или `.mcp.json` проекта в SSH-сессии, настройте его в этих файлах на удалённой машине. Claude Code запускает их stdio-серверы там, поэтому установите команды, которые выполняют эти серверы, на удалённой машине. О серверах из `claude_desktop_config.json` см. [Ограничения, пока Desktop отключён](#limits-while-desktop-is-disconnected).

1184 

1079<h4 id="open-an-ssh-session-from-a-link">1185<h4 id="open-an-ssh-session-from-a-link">

1080 Открытие SSH-сессии по ссылке1186 Открытие SSH-сессии по ссылке

1081</h4>1187</h4>


1207* **Cowork**: ни один из ключей не применяется к сессиям [Cowork](https://claude.com/docs/cowork/overview) или запланированным задачам Cowork1313* **Cowork**: ни один из ключей не применяется к сессиям [Cowork](https://claude.com/docs/cowork/overview) или запланированным задачам Cowork

1208* **Облачные сессии**: ни один из ключей не влияет на доступность [облачных сессий](#cloud-sessions). Чтобы отключить их, используйте настройку **Cloud sessions** в разделе [Элементы управления Admin console](#admin-console-controls).1314* **Облачные сессии**: ни один из ключей не влияет на доступность [облачных сессий](#cloud-sessions). Чтобы отключить их, используйте настройку **Cloud sessions** в разделе [Элементы управления Admin console](#admin-console-controls).

1209 1315 

1210При адаптации примера проверьте имена хостов и версию Desktop:1316При адаптации примера проверьте имена хостов, версию Desktop и права доступа к файлу:

1211 1317 

1212* **Имена хостов**: убедитесь, что шаблон в `sshHostAllowlist` совпадает с именем хоста каждой записи `sshConfigs` без `user@`, иначе разработчики не смогут к нему подключиться. О том, как Desktop сопоставляет имя хоста, см. [Ограничение SSH-хостов, к которым могут подключаться пользователи](#restrict-which-ssh-hosts-users-can-connect-to).1318* **Имена хостов**: убедитесь, что шаблон в `sshHostAllowlist` совпадает с именем хоста каждой записи `sshConfigs` без `user@`, иначе разработчики не смогут к нему подключиться. О том, как Desktop сопоставляет имя хоста, см. [Ограничение SSH-хостов, к которым могут подключаться пользователи](#restrict-which-ssh-hosts-users-can-connect-to).

1213* **Версия**: для `disableDesktopLocalSessions` требуется Claude Desktop v1.37937.0 или более поздней версии1319* **Версия**: для `disableDesktopLocalSessions` требуется Claude Desktop v1.37937.0 или более поздней версии

1320* **Права доступа к файлу**: убедитесь, что учётная запись каждого разработчика на компьютере может читать файл управляемых настроек. Desktop не применяет ключи из файла, который учётная запись не может прочитать, и Claude Code тоже [запускается без них](/docs/ru/managed-settings#find-entries-claude-code-dropped).

1214 1321 

1215Поместите все три ключа в один [управляемый источник](/docs/ru/managed-settings#how-claude-code-combines-managed-sources) — тот, который имеет наивысший приоритет среди доставляемых вами. Если вы доставляете [серверные управляемые настройки](/docs/ru/server-managed-settings), также храните копию трёх ключей в политике MDM или файле управляемых настроек с наивысшим приоритетом на каждом компьютере. Desktop получает серверные управляемые настройки при запуске, и копия на компьютере действует до тех пор, пока получение не завершится успешно.1322Поместите все три ключа в один [управляемый источник](/docs/ru/managed-settings#how-claude-code-combines-managed-sources) — тот, который имеет наивысший приоритет среди доставляемых вами. Если вы доставляете [серверные управляемые настройки](/docs/ru/server-managed-settings), также храните копию трёх ключей в политике MDM или файле управляемых настроек с наивысшим приоритетом на каждом компьютере. Desktop получает серверные управляемые настройки при запуске, и копия на компьютере действует до тех пор, пока получение не завершится успешно.

1216 1323 


1558 1665 

1559Если переключатели MCP server не реагируют или серверы не подключаются на Windows, проверьте, что сервер правильно настроен в ваших параметрах, перезагрузите приложение, проверьте, что процесс сервера работает в Task Manager, и проверьте логи сервера на ошибки подключения.1666Если переключатели MCP server не реагируют или серверы не подключаются на Windows, проверьте, что сервер правильно настроен в ваших параметрах, перезагрузите приложение, проверьте, что процесс сервера работает в Task Manager, и проверьте логи сервера на ошибки подключения.

1560 1667 

1668<h3 id="ssh-connection-fails-after-you-log-in">

1669 SSH-подключение не удаётся после входа

1670</h3>

1671 

1672Найдите в этой таблице заголовок карточки или код, которым заканчивается сообщение об ошибке, затем выполните действие из последнего столбца. Чтобы увидеть сообщение, выберите **View details** на карточке сбоя.

1673 

1674| Заголовок на карточке | Код | Что делать |

1675| - | - | - |

1676| `<host>'s SSH server has SFTP turned off` | `[SFTP_UNAVAILABLE]` | Включите SFTP в `sshd_config` сервера, как описано в разделе [требования к удалённой машине](#remote-machine-requirements-for-ssh-sessions) |

1677| `SFTP doesn't start on <host>` | `[SFTP_NOT_STARTED]` | Подключитесь к тому же хосту с помощью `sftp` в терминале на вашем компьютере, чтобы увидеть, что мешает запуску, затем проверьте настройки и файлы, указанные в сообщении Desktop |

1678| `<host> allows too few SSH sessions per connection` | `[SESSION_LIMIT]` | Увеличьте `MaxSessions` в `sshd_config` сервера, например до значения OpenSSH по умолчанию, равного 10 |

1679| `<host> is out of disk space` | `[ENOSPC]` или `[EDQUOT]` | Освободите место или квоту на удалённой машине, в вашем домашнем каталоге или в `/tmp` |

1680| `This computer is out of disk space` | `[ENOSPC]` или `[EDQUOT]` в сообщении, которое начинается с `Couldn't prepare the deploy locally` | Освободите место на вашем компьютере |

1681| `Claude Code won't start on <host>` | `[CLI_UNRESPONSIVE]` | Подождите минуту, затем повторите попытку. Если сбой повторяется, выполните на удалённой машине команду, указанную в сообщении, чтобы проверить, отвечает ли там Claude Code. |

1682 

1683Для любого другого сообщения проверьте [требования к удалённой машине](#remote-machine-requirements-for-ssh-sessions).

1684 

1561<h3 id="app-won’t-quit">1685<h3 id="app-won’t-quit">

1562 Приложение не закрывается1686 Приложение не закрывается

1563</h3>1687</h3>

env-vars.md +10 −4

Details

268| `CLAUDE_CODE_DISABLE_FAST_MODE` | Установите `1`, чтобы отключить [быстрый режим](/docs/ru/fast-mode) |268| `CLAUDE_CODE_DISABLE_FAST_MODE` | Установите `1`, чтобы отключить [быстрый режим](/docs/ru/fast-mode) |

269| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Установите `1`, чтобы отключить опросы о качестве сессии «How is Claude doing?». Опросы также отключаются, если задана `DISABLE_TELEMETRY`, `DO_NOT_TRACK` или `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, если только `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` не включает их снова. Чтобы задать частоту выборки вместо полного отключения, используйте настройку [`feedbackSurveyRate`](/docs/ru/settings-reference#feedbacksurveyrate). См. [Опросы о качестве сессии](/docs/ru/data-usage#session-quality-surveys) |269| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Установите `1`, чтобы отключить опросы о качестве сессии «How is Claude doing?». Опросы также отключаются, если задана `DISABLE_TELEMETRY`, `DO_NOT_TRACK` или `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, если только `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` не включает их снова. Чтобы задать частоту выборки вместо полного отключения, используйте настройку [`feedbackSurveyRate`](/docs/ru/settings-reference#feedbacksurveyrate). См. [Опросы о качестве сессии](/docs/ru/data-usage#session-quality-surveys) |

270| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Установите `1`, чтобы отключить [чекпоинты](/docs/ru/checkpointing) файлов. Команда `/rewind` не сможет восстанавливать изменения кода. Переопределяет настройку [`fileCheckpointingEnabled`](/docs/ru/settings-reference#filecheckpointingenabled) |270| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Установите `1`, чтобы отключить [чекпоинты](/docs/ru/checkpointing) файлов. Команда `/rewind` не сможет восстанавливать изменения кода. Переопределяет настройку [`fileCheckpointingEnabled`](/docs/ru/settings-reference#filecheckpointingenabled) |

271| `CLAUDE_CODE_DISABLE_FILE_MENTIONS` | Задайте `1`, чтобы Claude Code не разворачивал [упоминания `@`](/docs/ru/common-workflows#reference-files-and-directories) файлов и каталогов. Вместо этого Claude получает упомянутые пути с примечанием прочитать их с помощью своих файловых инструментов. Игнорируется в [проектных и локальных настройках](/docs/ru/settings-reference#variables-claude-code-ignores-in-env). Требуется Claude Code v2.1.299 или новее |

271| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Установите `1`, чтобы удалить из контекста Claude встроенные инструкции по рабочему процессу коммитов и PR, а также снимок статуса git. Полезно, если вы используете собственные скиллы для рабочего процесса git. Если задана, имеет приоритет над настройкой [`includeGitInstructions`](/docs/ru/settings-reference#includegitinstructions) |272| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Установите `1`, чтобы удалить из контекста Claude встроенные инструкции по рабочему процессу коммитов и PR, а также снимок статуса git. Полезно, если вы используете собственные скиллы для рабочего процесса git. Если задана, имеет приоритет над настройкой [`includeGitInstructions`](/docs/ru/settings-reference#includegitinstructions) |

272| `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` | Установите `1`, чтобы Claude Code не анализировал скрипты, передаваемые оболочке через `-c`, например `bash -c 'rm -rf ~'`, на предмет удаления [критических путей](/docs/ru/permission-modes#removals-inside-nested-commands-and-inline-scripts). Claude Code по-прежнему проверяет цели в виде переменных оболочки и позиционных параметров в таких скриптах, а остальные проверки критических путей продолжают работать. Задайте её в окружении, из которого запускается Claude Code, поскольку Claude Code игнорирует копию, доставленную через блок `env` настроек. Требуется Claude Code v2.1.288 или новее |273| `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` | Установите `1`, чтобы Claude Code не анализировал скрипты, передаваемые оболочке через `-c`, например `bash -c 'rm -rf ~'`, на предмет удаления [критических путей](/docs/ru/permission-modes#removals-inside-nested-commands-and-inline-scripts). Claude Code по-прежнему проверяет цели в виде переменных оболочки и позиционных параметров в таких скриптах, а остальные проверки критических путей продолжают работать. Задайте её в окружении, из которого запускается Claude Code, поскольку Claude Code игнорирует копию, доставленную через блок `env` настроек. Требуется Claude Code v2.1.288 или новее |

273| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Задайте `1`, чтобы предотвратить автоматическое переназначение Opus 4 и Opus 4.1 на текущую версию Opus в Anthropic API. Используйте, если вы намеренно хотите закрепить более старую модель. Переназначение не выполняется в Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry |274| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Задайте `1`, чтобы предотвратить автоматическое переназначение Opus 4 и Opus 4.1 на текущую версию Opus в Anthropic API. Используйте, если вы намеренно хотите закрепить более старую модель. Переназначение не выполняется в Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry |


328| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Переопределяет адрес хоста, используемый для подключения к расширению IDE. По умолчанию Claude Code автоматически определяет правильный адрес, включая маршрутизацию из WSL в Windows |329| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Переопределяет адрес хоста, используемый для подключения к расширению IDE. По умолчанию Claude Code автоматически определяет правильный адрес, включая маршрутизацию из WSL в Windows |

329| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Установите `1`, чтобы пропустить автоматическую установку расширений IDE. Эквивалентно присвоению [`autoInstallIdeExtension`](/docs/ru/settings-reference#autoinstallideextension) значения `false` |330| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Установите `1`, чтобы пропустить автоматическую установку расширений IDE. Эквивалентно присвоению [`autoInstallIdeExtension`](/docs/ru/settings-reference#autoinstallideextension) значения `false` |

330| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Установите `1`, чтобы пропустить проверку записей lock-файла IDE при подключении. Используйте, когда автоподключение не находит вашу IDE, хотя она запущена |331| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Установите `1`, чтобы пропустить проверку записей lock-файла IDE при подключении. Используйте, когда автоподключение не находит вашу IDE, хотя она запущена |

332| `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` | Размер контекста в токенах, начиная с которого к диалогу применяется [сжатие контекста при простое](/docs/ru/settings-reference#idlecompaction) (по умолчанию: `200000`). Принимает положительное целое число; всё остальное игнорируется. Значения ниже `100000` повышаются до `100000` — наименьшего порога. Сжатие при простое по умолчанию включено для диалогов, которые соответствуют его условиям. Чтобы отключить его, установите `idleCompaction` в `false`. Требуется Claude Code v2.1.290 или новее |

331| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | Сколько [субагентов](/docs/ru/sub-agents#concurrent-subagent-limit) может выполняться в одной сессии, прежде чем инструмент Agent откажется запускать ещё одного (по умолчанию: 20). Принимает положительное целое число, записанное цифрами; всё остальное игнорируется, поэтому переменная может изменить ограничение, но не отключить его. Требуется Claude Code v2.1.217 или новее |333| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | Сколько [субагентов](/docs/ru/sub-agents#concurrent-subagent-limit) может выполняться в одной сессии, прежде чем инструмент Agent откажется запускать ещё одного (по умолчанию: 20). Принимает положительное целое число, записанное цифрами; всё остальное игнорируется, поэтому переменная может изменить ограничение, но не отключить его. Требуется Claude Code v2.1.217 или новее |

332| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Переопределяет размер контекстного окна, который Claude Code предполагает для активной модели. Начиная с v2.1.193 то, как оно применяется, зависит от того, как Claude Code определяет ID модели; см. [Исправление окна для шлюза или пользовательского ID модели](/docs/ru/model-config#correct-the-window-for-a-gateway-or-custom-model-id). Используйте это при маршрутизации через `ANTHROPIC_BASE_URL` к модели, контекстное окно которой не совпадает со встроенным размером для её имени |334| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Переопределяет размер контекстного окна, который Claude Code предполагает для активной модели. Начиная с v2.1.193 то, как оно применяется, зависит от того, как Claude Code определяет ID модели; см. [Исправление окна для шлюза или пользовательского ID модели](/docs/ru/model-config#correct-the-window-for-a-gateway-or-custom-model-id). Используйте это при маршрутизации через `ANTHROPIC_BASE_URL` к модели, контекстное окно которой не совпадает со встроенным размером для её имени |

333| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Максимальная длина в символах каждого описания инструмента MCP и инструкций каждого MCP-сервера, которые Claude Code отправляет модели (по умолчанию: 2048). Claude Code [обрезает более длинный текст](/docs/ru/mcp#for-mcp-server-authors). Принимает положительное целое число, записанное цифрами. Всё остальное игнорируется, и применяется значение по умолчанию. Требуется Claude Code v2.1.280 или новее |335| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Максимальная длина в символах каждого описания инструмента MCP и инструкций каждого MCP-сервера, которые Claude Code отправляет модели. Заданное значение заменяет оба [ограничения по умолчанию](/docs/ru/mcp#for-mcp-server-authors): 4096 и 16384 для описания инструмента, который Claude загружает через поиск инструментов. Более длинный текст Claude Code обрезает. Принимает положительное целое число цифрами. Всё остальное игнорируется, и применяются значения по умолчанию. Требуется Claude Code v2.1.280 или новее |

334| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Задаёт максимальное количество выходных токенов для большинства запросов. Значения по умолчанию и верхние пределы зависят от модели; см. [максимальное количество выходных токенов](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Claude Code снижает значение, превышающее предел модели, до этого предела. Для ID модели, который Claude Code не может сопоставить с известной ему моделью, значение по умолчанию — 32000, а предел — 128000. Увеличение этого значения уменьшает эффективное контекстное окно, доступное до срабатывания [автосжатия](/docs/ru/costs#reduce-token-usage) |336| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Задаёт максимальное количество выходных токенов для большинства запросов. Значения по умолчанию и верхние пределы зависят от модели; см. [максимальное количество выходных токенов](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Claude Code снижает значение, превышающее предел модели, до этого предела. Для ID модели, который Claude Code не может сопоставить с известной ему моделью, значение по умолчанию — 32000, а предел — 128000. Увеличение этого значения уменьшает эффективное контекстное окно, доступное до срабатывания [автосжатия](/docs/ru/costs#reduce-token-usage) |

335| `CLAUDE_CODE_MAX_RETRIES` | Переопределяет количество повторных попыток для неудачных запросов к API (по умолчанию: 10). Начиная с v2.1.186 ограничено значением 15; начиная с v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` повышает значение по умолчанию и снимает ограничение. Для автономных сессий, которым нужно пережидать более длительные сбои, вместо этого задайте `CLAUDE_CODE_RETRY_WATCHDOG` |337| `CLAUDE_CODE_MAX_RETRIES` | Переопределяет количество повторных попыток для неудачных запросов к API (по умолчанию: 10). Начиная с v2.1.186 ограничено значением 15; начиная с v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` повышает значение по умолчанию и снимает ограничение. Для автономных сессий, которым нужно пережидать более длительные сбои, вместо этого задайте `CLAUDE_CODE_RETRY_WATCHDOG` |

336| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | Удалена в v2.1.224 и теперь ни на что не влияет. Ранее ограничивала общее количество [субагентов](/docs/ru/sub-agents), которых Claude мог запустить с помощью инструмента Agent за одну сессию (по умолчанию: 200); запуск сверх ограничения завершался ошибкой `Subagent spawn limit reached`. [Ограничение на количество одновременных субагентов](/docs/ru/sub-agents#concurrent-subagent-limit) и [ограничение глубины](/docs/ru/sub-agents#let-subagents-spawn-their-own-subagents) по-прежнему действуют |338| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | Удалена в v2.1.224 и теперь ни на что не влияет. Ранее ограничивала общее количество [субагентов](/docs/ru/sub-agents), которых Claude мог запустить с помощью инструмента Agent за одну сессию (по умолчанию: 200); запуск сверх ограничения завершался ошибкой `Subagent spawn limit reached`. [Ограничение на количество одновременных субагентов](/docs/ru/sub-agents#concurrent-subagent-limit) и [ограничение глубины](/docs/ru/sub-agents#let-subagents-spawn-their-own-subagents) по-прежнему действуют |


359| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Интервал обновления динамических заголовков OpenTelemetry в миллисекундах (по умолчанию: 1740000 / 29 минут). См. [Динамические заголовки](/docs/ru/monitoring-usage#dynamic-headers) |361| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Интервал обновления динамических заголовков OpenTelemetry в миллисекундах (по умолчанию: 1740000 / 29 минут). См. [Динамические заголовки](/docs/ru/monitoring-usage#dynamic-headers) |

360| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Таймаут в миллисекундах для завершения работы экспортёра OpenTelemetry при выключении (по умолчанию: 2000). Увеличьте, если метрики теряются при выходе. См. [Мониторинг](/docs/ru/monitoring-usage) |362| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Таймаут в миллисекундах для завершения работы экспортёра OpenTelemetry при выключении (по умолчанию: 2000). Увеличьте, если метрики теряются при выходе. См. [Мониторинг](/docs/ru/monitoring-usage) |

361| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | Начальная задержка в миллисекундах (вместо 500 по умолчанию) экспоненциальной задержки между [автоматическими повторными попытками](/docs/ru/errors#tune-retry-behavior) запроса, который API отклоняет с ошибкой перегрузки `529`. Увеличьте её, чтобы распределить повторные попытки на более длительный период, когда API работает на пределе мощности. Укажите целое число миллисекунд от 500 до 32000 цифрами; любое другое значение Claude Code считает незаданным. Не действует, если `CLAUDE_CODE_RETRY_WATCHDOG` установлена в `1` или если отклонённый запрос был отправлен в [быстром режиме](/docs/ru/fast-mode#handle-rate-limits). Требуется Claude Code v2.1.292 или новее |363| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | Начальная задержка в миллисекундах (вместо 500 по умолчанию) экспоненциальной задержки между [автоматическими повторными попытками](/docs/ru/errors#tune-retry-behavior) запроса, который API отклоняет с ошибкой перегрузки `529`. Увеличьте её, чтобы распределить повторные попытки на более длительный период, когда API работает на пределе мощности. Укажите целое число миллисекунд от 500 до 32000 цифрами; любое другое значение Claude Code считает незаданным. Не действует, если `CLAUDE_CODE_RETRY_WATCHDOG` установлена в `1` или если отклонённый запрос был отправлен в [быстром режиме](/docs/ru/fast-mode#handle-rate-limits). Требуется Claude Code v2.1.292 или новее |

364| `CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS` | Верхний предел в миллисекундах (вместо 32000 по умолчанию) экспоненциальной задержки между [автоматическими повторными попытками](/docs/ru/errors#tune-retry-behavior) запроса, который API отклоняет с ошибкой перегрузки `529`. Увеличьте его, чтобы более поздние повторные попытки продолжали отдаляться друг от друга, когда API работает на пределе мощности. Указывайте целое число миллисекунд от 32000 до 64000 цифрами; любое другое значение Claude Code считает незаданным. Не действует, когда `CLAUDE_CODE_RETRY_WATCHDOG` установлена в `1` или когда отклонённый запрос был отправлен в [быстром режиме](/docs/ru/fast-mode#handle-rate-limits). Требуется Claude Code v2.1.296 или новее |

362| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | Установите `1`, чтобы Claude Code запускал команду обновления вашего менеджера пакетов в фоне, когда доступна новая версия. Применяется к установкам через Homebrew и WinGet. Другие менеджеры пакетов по-прежнему показывают команду обновления, не запуская её. См. [Автоматические обновления](/docs/ru/setup#auto-updates) |365| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | Установите `1`, чтобы Claude Code запускал команду обновления вашего менеджера пакетов в фоне, когда доступна новая версия. Применяется к установкам через Homebrew и WinGet. Другие менеджеры пакетов по-прежнему показывают команду обновления, не запуская её. См. [Автоматические обновления](/docs/ru/setup#auto-updates) |

363| `CLAUDE_CODE_PERFORCE_MODE` | Установите `1`, чтобы включить защиту от записи с учётом Perforce. Если задано, Edit, Write и NotebookEdit завершаются с ошибкой и подсказкой `p4 edit <file>`, если у целевого файла отсутствует бит записи для владельца, который Perforce снимает у синхронизированных файлов, пока `p4 edit` не откроет их. Это не позволяет Claude Code обходить отслеживание изменений Perforce |366| `CLAUDE_CODE_PERFORCE_MODE` | Установите `1`, чтобы включить защиту от записи с учётом Perforce. Если задано, Edit, Write и NotebookEdit завершаются с ошибкой и подсказкой `p4 edit <file>`, если у целевого файла отсутствует бит записи для владельца, который Perforce снимает у синхронизированных файлов, пока `p4 edit` не откроет их. Это не позволяет Claude Code обходить отслеживание изменений Perforce |

364| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Переопределяет корневой каталог плагинов. Несмотря на название, задаёт родительский каталог, а не сам кэш: маркетплейсы и кэш плагинов находятся в подкаталогах по этому пути. По умолчанию `~/.claude/plugins` |367| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Переопределяет корневой каталог плагинов. Несмотря на название, задаёт родительский каталог, а не сам кэш: маркетплейсы и кэш плагинов находятся в подкаталогах по этому пути. По умолчанию `~/.claude/plugins` |


380| `CLAUDE_CODE_REMOTE_SESSION_ID` | В [облачных сессиях](/docs/ru/claude-code-on-the-web) автоматически устанавливается в ID текущей сессии. Считывайте её, чтобы сформировать ссылку на транскрипт сессии. См. [Ссылка из вывода на сессию](/docs/ru/cloud-environments#link-output-back-to-the-session) |383| `CLAUDE_CODE_REMOTE_SESSION_ID` | В [облачных сессиях](/docs/ru/claude-code-on-the-web) автоматически устанавливается в ID текущей сессии. Считывайте её, чтобы сформировать ссылку на транскрипт сессии. См. [Ссылка из вывода на сессию](/docs/ru/cloud-environments#link-output-back-to-the-session) |

381| `CLAUDE_CODE_RESTRICTED` | Установите `1`, чтобы запустить сессию в ограниченном режиме, — то же, что передать [`--restricted`](/docs/ru/cli-reference#cli-flags). Claude Code игнорирует эту переменную в блоке `env` файла настроек. Требуется Claude Code v2.1.248 или новее |384| `CLAUDE_CODE_RESTRICTED` | Установите `1`, чтобы запустить сессию в ограниченном режиме, — то же, что передать [`--restricted`](/docs/ru/cli-reference#cli-flags). Claude Code игнорирует эту переменную в блоке `env` файла настроек. Требуется Claude Code v2.1.248 или новее |

382| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Установите `1`, чтобы автоматически возобновлять работу, если предыдущая сессия завершилась посреди хода. Используется в режиме SDK, чтобы модель продолжала работу без повторной отправки промпта из SDK. Чтобы отключить это, удалите переменную или установите `0`. Для панели чата VS Code см. [Продолжение диалогов после перезагрузки](/docs/ru/vs-code#continue-conversations-after-a-reload) |385| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Установите `1`, чтобы автоматически возобновлять работу, если предыдущая сессия завершилась посреди хода. Используется в режиме SDK, чтобы модель продолжала работу без повторной отправки промпта из SDK. Чтобы отключить это, удалите переменную или установите `0`. Для панели чата VS Code см. [Продолжение диалогов после перезагрузки](/docs/ru/vs-code#continue-conversations-after-a-reload) |

383| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Максимальный возраст в миллисекундах последнего сообщения транскрипта, при котором сессия, завершившаяся посреди хода, автоматически продолжается при возобновлении. Если последнее сообщение старше этого предела, Claude Code пропускает автоматическое возобновление `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` и его сообщение продолжения `CLAUDE_CODE_RESUME_PROMPT`, и сессия запускается в режиме ожидания, чтобы вы продолжили явно. Незаданное значение или `0` означает отсутствие предела, за исключением того, что ход, последний запрос которого завершился ошибкой API, возобновляется, только пока этой ошибке меньше шести часов. Положительное значение ограничивает каждый ход, включая такие; отрицательное или нечисловое значение задаёт предел в один час. Скрипты запуска для долго работающих агентов могут задавать эту переменную, чтобы перезапуск со старым транскриптом не выполнял повторно устаревший промпт. Claude Code сам устанавливает предел в один час, когда перезапускает аварийно завершившуюся сессию [agent view](/docs/ru/agent-view), унаследовавшую диалог от интерактивной сессии. Требуется Claude Code v2.1.211 или новее |386| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Максимальный возраст в миллисекундах последнего сообщения транскрипта, при котором сессия, завершившаяся посреди хода, автоматически продолжается при возобновлении. Если последнее сообщение старше этого предела, Claude Code пропускает автоматическое возобновление `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` и его сообщение продолжения `CLAUDE_CODE_RESUME_PROMPT`, и сессия запускается в режиме простоя, чтобы вы продолжили явно. Незаданное значение или `0` не устанавливают предела, за исключением того, что некоторые ходы возобновляются только в течение шести часов после их последнего сообщения, например ход, завершившийся ошибкой API. Положительное значение ограничивает все ходы, включая эти; отрицательное или нечисловое значение применяет предел в один час. Скрипты запуска долгоработающих агентов могут задать её, чтобы перезапуск со старым транскриптом не выполнял повторно устаревший промпт. Claude Code сам устанавливает предел в один час, когда перезапускает аварийно завершившуюся сессию [agent view](/docs/ru/agent-view), унаследовавшую диалог от интерактивной сессии. Требуется Claude Code v2.1.211 или новее |

384| `CLAUDE_CODE_RESUME_PROMPT` | Переопределяет сообщение продолжения, которое Claude Code отправляет Claude, когда `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` продолжает прерванный ход вместо повторной отправки его промпта, или когда вы возобновляете [отложенный вызов инструмента](/docs/ru/hooks#defer-a-tool-call-for-later) с `-p`. По умолчанию `Continue from where you left off.`. При пустой строке используется значение по умолчанию |387| `CLAUDE_CODE_RESUME_PROMPT` | Переопределяет сообщение продолжения, которое Claude Code отправляет Claude, когда `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` продолжает прерванный ход вместо повторной отправки его промпта, или когда вы возобновляете [отложенный вызов инструмента](/docs/ru/hooks#defer-a-tool-call-for-later) с `-p`. По умолчанию `Continue from where you left off.`. При пустой строке используется значение по умолчанию |

385| `CLAUDE_CODE_RETRY_WATCHDOG` | Установите `1` для автономных сессий, таких как обвязки для оценки, задания CI или удалённые обработчики. Бесконечно повторяет попытки при ошибках нехватки мощности `429` и `529` вместо сбоя после `CLAUDE_CODE_MAX_RETRIES` попыток. Claude Code сразу завершается с ошибкой, когда запрос со стандартной скоростью получает `429`, сообщающий о лимите расходов или исчерпании кредитов использования, даже если это [ограничение расходов шлюза](/docs/ru/errors#spend-limit-reached), которое сбрасывается по расписанию. До v2.1.239 watchdog бесконечно повторял такие запросы. Для запросов в быстром режиме см. [Обработка ограничений частоты запросов](/docs/ru/fast-mode#handle-rate-limits). Watchdog увеличивает паузу между попытками до 5 минут или до сброса лимита, если ответ содержит время сброса ограничения частоты запросов, поэтому сессия, достигшая лимита использования, пережидает оставшееся окно. В v2.1.199 и новее он также повышает количество повторных попыток по умолчанию для других временных ошибок, таких как ошибки сервера, таймауты и разрывы соединения, до 300, что соответствует примерно трём часам ожидания, и снимает ограничение в 15 для `CLAUDE_CODE_MAX_RETRIES`, если вы задали эту переменную явно. Требуется Claude Code v2.1.186 или новее |388| `CLAUDE_CODE_RETRY_WATCHDOG` | Установите `1` для автономных сессий, таких как обвязки для оценки, задания CI или удалённые обработчики. Бесконечно повторяет попытки при ошибках нехватки мощности `429` и `529` вместо сбоя после `CLAUDE_CODE_MAX_RETRIES` попыток. Claude Code сразу завершается с ошибкой, когда запрос со стандартной скоростью получает `429`, сообщающий о лимите расходов или исчерпании кредитов использования, даже если это [ограничение расходов шлюза](/docs/ru/errors#spend-limit-reached), которое сбрасывается по расписанию. До v2.1.239 watchdog бесконечно повторял такие запросы. Для запросов в быстром режиме см. [Обработка ограничений частоты запросов](/docs/ru/fast-mode#handle-rate-limits). Watchdog увеличивает паузу между попытками до 5 минут или до сброса лимита, если ответ содержит время сброса ограничения частоты запросов, поэтому сессия, достигшая лимита использования, пережидает оставшееся окно. В v2.1.199 и новее он также повышает количество повторных попыток по умолчанию для других временных ошибок, таких как ошибки сервера, таймауты и разрывы соединения, до 300, что соответствует примерно трём часам ожидания, и снимает ограничение в 15 для `CLAUDE_CODE_MAX_RETRIES`, если вы задали эту переменную явно. Требуется Claude Code v2.1.186 или новее |

386| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` | Максимальное время в миллисекундах, которое каждый запрос к API тратит на пережидание ошибок `429` и `529`, когда задана `CLAUDE_CODE_RETRY_WATCHDOG`. По истечении этого времени следующая такая ошибка завершает запрос. Укажите положительное целое число цифрами, например `1800000` для 30 минут. Если переменная не задана, ожидание не ограничено. Требуется Claude Code v2.1.295 или новее |389| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` | Максимальное время в миллисекундах, которое каждый запрос к API тратит на пережидание ошибок `429` и `529`, когда задана `CLAUDE_CODE_RETRY_WATCHDOG`. По истечении этого времени следующая такая ошибка завершает запрос. Укажите положительное целое число цифрами, например `1800000` для 30 минут. Если переменная не задана, ожидание не ограничено. Требуется Claude Code v2.1.295 или новее |


437| `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` | Когда `CLAUDE_AUTO_BACKGROUND_TASKS` установлена в `1`, задаёт, сколько Claude Code ждёт перед каждым напоминанием Claude проверить [фоновых субагентов](/docs/ru/sub-agents#run-subagents-in-foreground-or-background), которые всё ещё выполняются. Принимает одно или несколько разделённых запятыми значений ожидания в целых секундах от `1` до `86400`, например `600` или `600,1800,3600`. Каждое значение — это время ожидания перед следующим напоминанием, а последнее значение повторяется. Принимаются только цифры; любое другое значение или запись считается незаданной. Если не задана, напоминаний нет. Требуется Claude Code v2.1.283 или новее |440| `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` | Когда `CLAUDE_AUTO_BACKGROUND_TASKS` установлена в `1`, задаёт, сколько Claude Code ждёт перед каждым напоминанием Claude проверить [фоновых субагентов](/docs/ru/sub-agents#run-subagents-in-foreground-or-background), которые всё ещё выполняются. Принимает одно или несколько разделённых запятыми значений ожидания в целых секундах от `1` до `86400`, например `600` или `600,1800,3600`. Каждое значение — это время ожидания перед следующим напоминанием, а последнее значение повторяется. Принимаются только цифры; любое другое значение или запись считается незаданной. Если не задана, напоминаний нет. Требуется Claude Code v2.1.283 или новее |

438| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | Сколько агентов одновременно выполняет один запуск [рабочего процесса](/docs/ru/workflows), от `1` до `256`. По умолчанию запуск выполняет до 16 агентов одновременно, меньше, если Claude Code доступно меньше процессоров; вызовы `agent()` в очереди ждут освобождения слота. Транскрипт каждого выполняющегося агента хранится в памяти Claude Code, поэтому более высокие значения увеличивают потребление оперативной памяти. Принимаются только цифры; значения вне диапазона и другие записи оставляют значение по умолчанию. Требуется Claude Code v2.1.269 или новее |441| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | Сколько агентов одновременно выполняет один запуск [рабочего процесса](/docs/ru/workflows), от `1` до `256`. По умолчанию запуск выполняет до 16 агентов одновременно, меньше, если Claude Code доступно меньше процессоров; вызовы `agent()` в очереди ждут освобождения слота. Транскрипт каждого выполняющегося агента хранится в памяти Claude Code, поэтому более высокие значения увеличивают потребление оперативной памяти. Принимаются только цифры; значения вне диапазона и другие записи оставляют значение по умолчанию. Требуется Claude Code v2.1.269 или новее |

439| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | Верхний предел в миллисекундах для времени, в течение которого агент [рабочего процесса](/docs/ru/workflows) ждёт начала первого ответа родственного агента с тем же префиксом, прежде чем отправить собственный первый запрос. Когда разветвление запускает несколько агентов с общим [префиксом кэша промптов](/docs/ru/workflows#prompt-caching-in-a-fan-out), Claude Code задерживает всех агентов, кроме первого, не дольше этого времени, чтобы остальные считывали кэшированный префикс, а не обрабатывали его каждый без кэша. По умолчанию `5000`. Установите `0`, чтобы отключить ожидание. Когда задана `DISABLE_PROMPT_CACHING`, агенты никогда не ждут. Требуется Claude Code v2.1.229 или новее |442| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | Верхний предел в миллисекундах для времени, в течение которого агент [рабочего процесса](/docs/ru/workflows) ждёт начала первого ответа родственного агента с тем же префиксом, прежде чем отправить собственный первый запрос. Когда разветвление запускает несколько агентов с общим [префиксом кэша промптов](/docs/ru/workflows#prompt-caching-in-a-fan-out), Claude Code задерживает всех агентов, кроме первого, не дольше этого времени, чтобы остальные считывали кэшированный префикс, а не обрабатывали его каждый без кэша. По умолчанию `5000`. Установите `0`, чтобы отключить ожидание. Когда задана `DISABLE_PROMPT_CACHING`, агенты никогда не ждут. Требуется Claude Code v2.1.229 или новее |

443| `CLAUDE_CODE_YOU_SHOULD_KNOW_DEBUG` | Установите `1`, чтобы над промптом отображалась строка для каждой из трёх последних проверок, выполненных [модом You should know](/docs/ru/interactive-mode#you-should-know-suggestions) в этой сессии. Используйте, чтобы убедиться, что мод выполняет проверки, когда заметки не появляются. Требуется Claude Code v2.1.287 или новее |

440| `CLAUDE_CONFIG_DIR` | Переопределить каталог конфигурации (по умолчанию: `~/.claude`). Все настройки, история сессий и плагины хранятся по этому пути. Об учётных данных см. [где Claude Code хранит учётные данные](/docs/ru/authentication#credential-management). Полезно для параллельной работы с несколькими учётными записями: например, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`. Задайте её в оболочке, пользовательских настройках или управляемых настройках. В файле настроек укажите [абсолютный путь](#in-settings-files). Игнорируется в [настройках проекта и локальных настройках](/docs/ru/settings-reference#variables-claude-code-ignores-in-env) |444| `CLAUDE_CONFIG_DIR` | Переопределить каталог конфигурации (по умолчанию: `~/.claude`). Все настройки, история сессий и плагины хранятся по этому пути. Об учётных данных см. [где Claude Code хранит учётные данные](/docs/ru/authentication#credential-management). Полезно для параллельной работы с несколькими учётными записями: например, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`. Задайте её в оболочке, пользовательских настройках или управляемых настройках. В файле настроек укажите [абсолютный путь](#in-settings-files). Игнорируется в [настройках проекта и локальных настройках](/docs/ru/settings-reference#variables-claude-code-ignores-in-env) |

441| `CLAUDE_DISABLE_ADOPT` | Установите значение `1`, чтобы останавливать выполняющуюся фоновую работу вместо её переноса, когда вы переводите сессию в фон нажатием `←` или командой [`/background`](/docs/ru/agent-view#from-inside-a-session). Claude Code просит подтвердить перевод в фон, а затем останавливает задачи, которые иначе были бы перенесены. Требуется Claude Code v2.1.195 или новее |445| `CLAUDE_DISABLE_ADOPT` | Установите значение `1`, чтобы останавливать выполняющуюся фоновую работу вместо её переноса, когда вы переводите сессию в фон нажатием `←` или командой [`/background`](/docs/ru/agent-view#from-inside-a-session). Claude Code просит подтвердить перевод в фон, а затем останавливает задачи, которые иначе были бы перенесены. Требуется Claude Code v2.1.195 или новее |

442| `CLAUDE_EFFORT` | Автоматически устанавливается в подпроцессах инструмента Bash и командах хуков в значение [уровня effort](/docs/ru/model-config#adjust-effort-level), действующего на момент запуска подпроцесса: `low`, `medium`, `high`, `xhigh` или `max`. Совпадает с полем `effort.level`, передаваемым [хукам](/docs/ru/hooks). Устанавливается, только если текущая модель поддерживает параметр effort |446| `CLAUDE_EFFORT` | Автоматически устанавливается в подпроцессах инструмента Bash и командах хуков в значение [уровня effort](/docs/ru/model-config#adjust-effort-level), действующего на момент запуска подпроцесса: `low`, `medium`, `high`, `xhigh` или `max`. Совпадает с полем `effort.level`, передаваемым [хукам](/docs/ru/hooks). Устанавливается, только если текущая модель поддерживает параметр effort |


452| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | Удалена в v2.1.260 и теперь ни на что не влияет. Ранее ограничивала в миллисекундах время выполнения [фоновой shell-команды](/docs/ru/interactive-mode#background-bash-commands), запущенной [субагентом](/docs/ru/sub-agents), со значением по умолчанию 60 минут. См. [правила времени жизни фоновых команд](/docs/ru/tools-reference#background-commands) |456| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | Удалена в v2.1.260 и теперь ни на что не влияет. Ранее ограничивала в миллисекундах время выполнения [фоновой shell-команды](/docs/ru/interactive-mode#background-bash-commands), запущенной [субагентом](/docs/ru/sub-agents), со значением по умолчанию 60 минут. См. [правила времени жизни фоновых команд](/docs/ru/tools-reference#background-commands) |

453| `DEBUG` | Установите значение `1`, чтобы включить режим отладки, что эквивалентно запуску с [`--debug`](/docs/ru/cli-reference#cli-flags). Логи отладки записываются в `~/.claude/debug/<session-id>.txt` или по пути, заданному `CLAUDE_CODE_DEBUG_LOGS_DIR`. Режим отладки включают только истинные значения `1`, `true`, `yes` и `on`, поэтому шаблоны пространств имён вроде `DEBUG=express:*`, заданные для других инструментов, его не активируют |457| `DEBUG` | Установите значение `1`, чтобы включить режим отладки, что эквивалентно запуску с [`--debug`](/docs/ru/cli-reference#cli-flags). Логи отладки записываются в `~/.claude/debug/<session-id>.txt` или по пути, заданному `CLAUDE_CODE_DEBUG_LOGS_DIR`. Режим отладки включают только истинные значения `1`, `true`, `yes` и `on`, поэтому шаблоны пространств имён вроде `DEBUG=express:*`, заданные для других инструментов, его не активируют |

454| `DISABLE_AUTOUPDATER` | Установите значение `1`, чтобы отключить автоматические фоновые обновления. Ручная команда `claude update` продолжает работать. Используйте `DISABLE_UPDATES`, чтобы заблокировать и то, и другое |458| `DISABLE_AUTOUPDATER` | Установите значение `1`, чтобы отключить автоматические фоновые обновления. Ручная команда `claude update` продолжает работать. Используйте `DISABLE_UPDATES`, чтобы заблокировать и то, и другое |

455| `DISABLE_AUTO_COMPACT` | Установите значение `1`, чтобы отключить автоматическое сжатие контекста при приближении к лимиту контекста. Ручная команда `/compact` остаётся доступной. Используйте, когда хотите явно контролировать момент сжатия. Переопределяет настройку [`autoCompactEnabled`](/docs/ru/settings-reference#autocompactenabled) |459| `DISABLE_AUTO_COMPACT` | Задайте `1`, чтобы отключить автоматическое сжатие контекста при приближении к пределу контекста, а также [сжатие при простое](/docs/ru/settings-reference#idlecompaction). Ручная команда `/compact` остаётся доступной. Используйте, если хотите явно контролировать момент сжатия контекста. Переопределяет настройку [`autoCompactEnabled`](/docs/ru/settings-reference#autocompactenabled) |

456| `DISABLE_COMPACT` | Установите значение `1`, чтобы отключить любое сжатие контекста: и автоматическое, и ручную команду `/compact` |460| `DISABLE_COMPACT` | Установите значение `1`, чтобы отключить любое сжатие контекста: и автоматическое, и ручную команду `/compact` |

457| `DISABLE_COST_WARNINGS` | Установите значение `1`, чтобы отключить предупреждения о стоимости |461| `DISABLE_COST_WARNINGS` | Установите значение `1`, чтобы отключить предупреждения о стоимости |

458| `DISABLE_DOCTOR_COMMAND` | Установите значение `1`, чтобы скрыть скилл проверки установки [`/doctor`](/docs/ru/commands#all-commands) и его псевдоним `/checkup`. Полезно для управляемых развёртываний, где пользователи не должны запускать диагностику установки из сессии. Не влияет на команду терминала `claude doctor`. До v2.1.205 эта переменная скрывала команду экрана диагностики `/doctor` |462| `DISABLE_DOCTOR_COMMAND` | Установите значение `1`, чтобы скрыть скилл проверки установки [`/doctor`](/docs/ru/commands#all-commands) и его псевдоним `/checkup`. Полезно для управляемых развёртываний, где пользователи не должны запускать диагностику установки из сессии. Не влияет на команду терминала `claude doctor`. До v2.1.205 эта переменная скрывала команду экрана диагностики `/doctor` |


478| `ENABLE_CLAUDEAI_MCP_SERVERS` | Установите значение `false`, чтобы Claude Code не получал [MCP-серверы claude.ai](/docs/ru/mcp#use-mcp-servers-from-claude-ai). По умолчанию включено для вошедших пользователей. Чтобы отключить для отдельного проекта или организации, используйте вместо этого настройку [`disableClaudeAiConnectors`](/docs/ru/settings-reference#disableclaudeaiconnectors) |482| `ENABLE_CLAUDEAI_MCP_SERVERS` | Установите значение `false`, чтобы Claude Code не получал [MCP-серверы claude.ai](/docs/ru/mcp#use-mcp-servers-from-claude-ai). По умолчанию включено для вошедших пользователей. Чтобы отключить для отдельного проекта или организации, используйте вместо этого настройку [`disableClaudeAiConnectors`](/docs/ru/settings-reference#disableclaudeaiconnectors) |

479| `ENABLE_PROMPT_CACHING_1H` | Установите значение `1`, чтобы запрашивать [TTL кэша промптов](/docs/ru/prompt-caching#cache-lifetime) в 1 час вместо стандартных 5 минут. Предназначено для пользователей API-ключей, [Amazon Bedrock](/docs/ru/amazon-bedrock), [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai), [Microsoft Foundry](/docs/ru/microsoft-foundry) и [Claude Platform on AWS](/docs/ru/claude-platform-on-aws). Пользователи подписки в пределах включённого использования получают TTL в 1 час автоматически в [основном диалоге](/docs/ru/prompt-caching#which-ttl-each-request-gets). Пользователи подписки, расходующие [кредиты использования](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), могут задать её, чтобы сохранить TTL в 1 час. Запись в кэш с TTL в 1 час тарифицируется по более высокой ставке. Чтобы выбирать TTL для каждой группы запросов, используйте `CLAUDE_CODE_PROMPT_CACHE_TTL` и `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, которые имеют приоритет над этой переменной |483| `ENABLE_PROMPT_CACHING_1H` | Установите значение `1`, чтобы запрашивать [TTL кэша промптов](/docs/ru/prompt-caching#cache-lifetime) в 1 час вместо стандартных 5 минут. Предназначено для пользователей API-ключей, [Amazon Bedrock](/docs/ru/amazon-bedrock), [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai), [Microsoft Foundry](/docs/ru/microsoft-foundry) и [Claude Platform on AWS](/docs/ru/claude-platform-on-aws). Пользователи подписки в пределах включённого использования получают TTL в 1 час автоматически в [основном диалоге](/docs/ru/prompt-caching#which-ttl-each-request-gets). Пользователи подписки, расходующие [кредиты использования](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), могут задать её, чтобы сохранить TTL в 1 час. Запись в кэш с TTL в 1 час тарифицируется по более высокой ставке. Чтобы выбирать TTL для каждой группы запросов, используйте `CLAUDE_CODE_PROMPT_CACHE_TTL` и `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, которые имеют приоритет над этой переменной |

480| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Устаревшая. Используйте вместо неё `ENABLE_PROMPT_CACHING_1H` |484| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Устаревшая. Используйте вместо неё `ENABLE_PROMPT_CACHING_1H` |

481| `ENABLE_TOOL_SEARCH` | Управляет [поиском инструментов MCP](/docs/ru/mcp#scale-with-mcp-tool-search). Если переменная не задана, Claude Code по умолчанию откладывает загрузку всех инструментов MCP. Однако он по-прежнему загружает их сразу на моделях Google Cloud's Agent Platform, предшествующих поколению Claude 4.5, в развёртывании Microsoft Foundry, размещённом в Azure, и когда `ANTHROPIC_BASE_URL` указывает на хост, не принадлежащий Anthropic. `true` всегда откладывает загрузку и отправляет бета-заголовок, кроме тех же моделей Agent Platform и развёртываний Microsoft Foundry; запросы завершаются ошибкой на прокси, которые не поддерживают `tool_reference`. `auto` загружает сразу, если определения инструментов занимают не более 10% контекста. `auto:N` задаёт собственный порог, например `auto:5` для 5%. `false` загружает все инструменты сразу. Заданное вами значение игнорируется, если установлена `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`. До v2.1.221 Claude Code отключал поиск инструментов для всех моделей в Google Cloud's Agent Platform, если вы не задавали этой переменной значение `true` |485| `ENABLE_TOOL_SEARCH` | Управляет [MCP Tool Search](/docs/ru/mcp#scale-with-mcp-tool-search). Если переменная не задана, Claude Code по умолчанию откладывает загрузку всех инструментов MCP, а если `ANTHROPIC_BASE_URL` указывает на сторонний хост, вместо этого загружает их сразу. `true` сохраняет отложенную загрузку и на таком хосте. `auto` загружает инструменты сразу, когда их определения укладываются в 10% контекста. `auto:N` задаёт пользовательский порог, например `auto:5` для 5%. `false` загружает все инструменты сразу. О моделях и развёртываниях, которые загружают все инструменты сразу независимо от этого значения, см. [Настройка поиска инструментов](/docs/ru/mcp#configure-tool-search) |

482| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Установите любое непустое значение, например `1`, чтобы Claude Code прекращал повторные попытки при повторяющихся ошибках перегрузки для любой модели, если резервная модель не настроена. **Значение `0` или `false` также включает это поведение**, в отличие от большинства переменных включения/выключения; удалите переменную, чтобы восстановить поведение повторных попыток по умолчанию. Без неё Claude Code прекращает повторные попытки таким образом для моделей, которые он распознаёт как модели Opus, Fable или Mythos, когда вы проходите аутентификацию с API-ключом или через [стороннего провайдера](/docs/ru/third-party-integrations), а не с подпиской Claude. В Claude Code v2.1.160 или новее Claude Code при повторяющихся ошибках перегрузки для любой основной модели переключается на настроенную вами [цепочку резервных моделей](/docs/ru/model-config#fallback-model-chains), поэтому эта переменная не влияет на переключение на резервную модель |486| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Установите любое непустое значение, например `1`, чтобы Claude Code прекращал повторные попытки при повторяющихся ошибках перегрузки для любой модели, если резервная модель не настроена. **Значение `0` или `false` также включает это поведение**, в отличие от большинства переменных включения/выключения; удалите переменную, чтобы восстановить поведение повторных попыток по умолчанию. Без неё Claude Code прекращает повторные попытки таким образом для моделей, которые он распознаёт как модели Opus, Fable или Mythos, когда вы проходите аутентификацию с API-ключом или через [стороннего провайдера](/docs/ru/third-party-integrations), а не с подпиской Claude. В Claude Code v2.1.160 или новее Claude Code при повторяющихся ошибках перегрузки для любой основной модели переключается на настроенную вами [цепочку резервных моделей](/docs/ru/model-config#fallback-model-chains), поэтому эта переменная не влияет на переключение на резервную модель |

483| `FORCE_AUTOUPDATE_PLUGINS` | Установите значение `1`, чтобы принудительно автоматически обновлять плагины, даже если основной механизм автообновления отключён через `DISABLE_AUTOUPDATER` |487| `FORCE_AUTOUPDATE_PLUGINS` | Установите значение `1`, чтобы принудительно автоматически обновлять плагины, даже если основной механизм автообновления отключён через `DISABLE_AUTOUPDATER` |

484| `FORCE_HYPERLINK` | Установите значение `1`, чтобы включить кликабельные гиперссылки OSC 8, когда ваш терминал их поддерживает, но это не определяется автоматически, или `0`, чтобы отключить их. Если переменная не задана, Claude Code включает гиперссылки, только когда обнаруживает поддержку терминалом. Claude Code разбирает это значение как число, а не логическое значение, поэтому значения вроде `false`, `no` или `off` включают гиперссылки, а не отключают их. [Значок PR или merge request](/docs/ru/interactive-mode#pr-review-status) в нижней строке отображается как гиперссылка, даже когда Claude Code не может обнаружить поддержку терминалом, например через SSH. Установите `0`, чтобы отображать значок как обычный текст |488| `FORCE_HYPERLINK` | Установите значение `1`, чтобы включить кликабельные гиперссылки OSC 8, когда ваш терминал их поддерживает, но это не определяется автоматически, или `0`, чтобы отключить их. Если переменная не задана, Claude Code включает гиперссылки, только когда обнаруживает поддержку терминалом. Claude Code разбирает это значение как число, а не логическое значение, поэтому значения вроде `false`, `no` или `off` включают гиперссылки, а не отключают их. [Значок PR или merge request](/docs/ru/interactive-mode#pr-review-status) в нижней строке отображается как гиперссылка, даже когда Claude Code не может обнаружить поддержку терминалом, например через SSH. Установите `0`, чтобы отображать значок как обычный текст |


593* Запустить [`claude import` или команду `/import`](/docs/ru/cli-reference#cli-commands)597* Запустить [`claude import` или команду `/import`](/docs/ru/cli-reference#cli-commands)

594* Запустить [`/skill-doctor`](/docs/ru/skills#find-unused-skills) или открыть его отчёт на вкладке **Stats** в `/plugin`598* Запустить [`/skill-doctor`](/docs/ru/skills#find-unused-skills) или открыть его отчёт на вкладке **Stats** в `/plugin`

595* Синхронизировать [скиллы](/docs/ru/skills#where-synced-skills-load) и [плагины](/docs/ru/plugins/loading#synced-plugins), включённые для вашей учётной записи claude.ai, с вашими сессиями в терминале599* Синхронизировать [скиллы](/docs/ru/skills#where-synced-skills-load) и [плагины](/docs/ru/plugins/loading#synced-plugins), включённые для вашей учётной записи claude.ai, с вашими сессиями в терминале

600* Включить [мод You should know](/docs/ru/interactive-mode#you-should-know-suggestions)

596* Использовать [инструмент-советник](/docs/ru/advisor#requirements)601* Использовать [инструмент-советник](/docs/ru/advisor#requirements)

597* Читать [комментарии к артефакту](/docs/ru/artifacts#collect-comments-on-an-artifact) или отвечать на них602* Читать [комментарии к артефакту](/docs/ru/artifacts#collect-comments-on-an-artifact) или отвечать на них

598* Поручать Claude читать [публичный артефакт другой организации](/docs/ru/artifacts#read-an-artifact-shared-with-you)603* Поручать Claude читать [публичный артефакт другой организации](/docs/ru/artifacts#read-an-artifact-shared-with-you)


600* Получать [отзывы, составленные Claude](/docs/ru/tools-reference#sendfeedback-tool-behavior), которые Claude Code включает через загружаемый флаг605* Получать [отзывы, составленные Claude](/docs/ru/tools-reference#sendfeedback-tool-behavior), которые Claude Code включает через загружаемый флаг

601* Добиться того, чтобы Claude [воспринимал большие вставки как вставленный, а не набранный текст](/docs/ru/terminal-config#how-claude-treats-pasted-text); содержимое за заполнителем `[Pasted text #N]` поступает к Claude без пометки606* Добиться того, чтобы Claude [воспринимал большие вставки как вставленный, а не набранный текст](/docs/ru/terminal-config#how-claude-treats-pasted-text); содержимое за заполнителем `[Pasted text #N]` поступает к Claude без пометки

602* Добиться того, чтобы Claude Code [исключал MCP-инструменты, схему входных данных которых API отклонил бы](/docs/ru/mcp#tools-with-invalid-input-schemas); он всё равно отправляет схему, и запрос, который её содержит, завершается [ошибкой 400, указывающей инструмент по его позиции](/docs/ru/errors#tool-input-schema-is-invalid)607* Добиться того, чтобы Claude Code [исключал MCP-инструменты, схему входных данных которых API отклонил бы](/docs/ru/mcp#tools-with-invalid-input-schemas); он всё равно отправляет схему, и запрос, который её содержит, завершается [ошибкой 400, указывающей инструмент по его позиции](/docs/ru/errors#tool-input-schema-is-invalid)

608* Добиться того, чтобы Claude Code [сжимал длинный диалог, пока ваша сессия в терминале простаивает](/docs/ru/settings-reference#idlecompaction), незадолго до истечения срока действия часового кэша промптов

603 609 

604<h3 id="first-session-after-an-install-or-upgrade">610<h3 id="first-session-after-an-install-or-upgrade">

605 Первая сессия после установки или обновления611 Первая сессия после установки или обновления

errors.md +161 −10

Details

134| `proxy refused the connection` | [Network](#the-proxy-refused-the-connection) |134| `proxy refused the connection` | [Network](#the-proxy-refused-the-connection) |

135| `403` с `GitHub GraphQL is not available from Claude Code sessions` в облачной сессии | [GitHub proxy](/docs/ru/cloud-environments#github-proxy) |135| `403` с `GitHub GraphQL is not available from Claude Code sessions` в облачной сессии | [GitHub proxy](/docs/ru/cloud-environments#github-proxy) |

136| `The cloud environments service returned an empty response` / `The cloud environments service returned a response in an unexpected format` | [Network](#the-cloud-environments-service-returned-an-empty-or-unexpected-response) |136| `The cloud environments service returned an empty response` / `The cloud environments service returned a response in an unexpected format` | [Network](#the-cloud-environments-service-returned-an-empty-or-unexpected-response) |

137| `Failed to fetch session from Sessions API: Failed to fetch session logs` | [Network](#failed-to-fetch-session-from-sessions-api) |

137| `Couldn't reconnect to your Remote Control session` | [Network](#couldnt-reconnect-to-your-remote-control-session) |138| `Couldn't reconnect to your Remote Control session` | [Network](#couldnt-reconnect-to-your-remote-control-session) |

138| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [Network](#sessions-ended-while-this-machine-was-offline) |139| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [Network](#sessions-ended-while-this-machine-was-offline) |

139| `Couldn't share the transcript.` | [Network](#couldnt-share-the-transcript) |140| `Couldn't share the transcript.` | [Network](#couldnt-share-the-transcript) |


153| `Request too large for the API's 32MB request limit` | [Request errors](#request-too-large) |154| `Request too large for the API's 32MB request limit` | [Request errors](#request-too-large) |

154| `Image was too large` | [Request errors](#image-was-too-large) |155| `Image was too large` | [Request errors](#image-was-too-large) |

155| `Unable to resize image` | [Request errors](#unable-to-resize-image) |156| `Unable to resize image` | [Request errors](#unable-to-resize-image) |

157| `Request rejected as unprocessable by the model` | [Request errors](#request-rejected-as-unprocessable-by-the-model) |

156| `PDF too large` / `PDF is password protected` / `pdftoppm is not installed` | [Request errors](#pdf-errors) |158| `PDF too large` / `PDF is password protected` / `pdftoppm is not installed` | [Request errors](#pdf-errors) |

157| `Extra inputs are not permitted` | [Request errors](#extra-inputs-are-not-permitted) |159| `Extra inputs are not permitted` | [Request errors](#extra-inputs-are-not-permitted) |

158| `API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid` / `Property keys should match pattern` | [Request errors](#tool-input-schema-is-invalid) |160| `API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid` / `Property keys should match pattern` | [Request errors](#tool-input-schema-is-invalid) |

161| `Tool "mcp__<server>__<tool>" is not sent to Claude: its name has <N> characters and the API accepts at most 128` | [Request errors](#mcp-tool-name-over-128-characters) |

162| `tools.N.custom.name: String should have at most 128 characters` | [Request errors](#mcp-tool-name-over-128-characters) |

159| `tool_use.name: String should have at most 200 characters` | [Request errors](#tool-use-name-over-200-characters) |163| `tool_use.name: String should have at most 200 characters` | [Request errors](#tool-use-name-over-200-characters) |

160| `There's an issue with the selected model` | [Request errors](#theres-an-issue-with-the-selected-model) |164| `There's an issue with the selected model` | [Request errors](#theres-an-issue-with-the-selected-model) |

161| `Model ... is not a recognized model id` | [Request errors](#model-is-not-a-recognized-model-id) |165| `Model ... is not a recognized model id` | [Request errors](#model-is-not-a-recognized-model-id) |


198| `Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.` | [Command-line errors](#conflict-between-a-system-prompt-flag-and-its-file-form) |202| `Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.` | [Command-line errors](#conflict-between-a-system-prompt-flag-and-its-file-form) |

199| `Cloud sessions cannot be created from a --restricted session` | [Command-line errors](#cloud-sessions-cannot-be-created-from-a-restricted-session) |203| `Cloud sessions cannot be created from a --restricted session` | [Command-line errors](#cloud-sessions-cannot-be-created-from-a-restricted-session) |

200| `Cloud sessions are disabled by your organization's policy` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |204| `Cloud sessions are disabled by your organization's policy` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |

201| `Couldn't verify your organization's policy for cloud sessions` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |205| `Cloud sessions use your claude.ai login`, в конце отказа по политике, в котором указаны учётные данные | [Command-line errors](#cloud-sessions-use-your-claude-ai-login) |

206| `Couldn't verify your organization's policy for cloud sessions` | [Command-line errors](#couldnt-verify-your-organizations-policy-for-cloud-sessions) |

207| `Cloud sessions aren't available:`, за которым следует причина, по которой не удалось загрузить политику вашей организации | [Command-line errors](#couldnt-verify-your-organizations-policy-for-cloud-sessions) |

202| `Cloud sessions need a claude.ai sign-in` | [Unable to get organization UUID](/docs/ru/claude-code-on-the-web#unable-to-get-organization-uuid) |208| `Cloud sessions need a claude.ai sign-in` | [Unable to get organization UUID](/docs/ru/claude-code-on-the-web#unable-to-get-organization-uuid) |

209| `Nothing was stashed: "<path>" is now a folder in place of a tracked file or link` / `are now folders in place of tracked files or links` | [Command-line errors](#nothing-was-stashed-because-a-folder-replaced-a-tracked-file) |

203| `Error: --json-schema is not a valid JSON Schema` | [Command-line errors](#the-json-schema-value-is-not-a-valid-json-schema) |210| `Error: --json-schema is not a valid JSON Schema` | [Command-line errors](#the-json-schema-value-is-not-a-valid-json-schema) |

204| `Error: Invalid --agents configuration:` | [Command-line errors](#invalid-agents-configuration) |211| `Error: Invalid --agents configuration:` | [Command-line errors](#invalid-agents-configuration) |

205| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Command-line errors](#invalid-agents-configuration) |212| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Command-line errors](#invalid-agents-configuration) |


259| `Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load` | [Command-line errors](#output-styles-are-saved-to-local-settings-which-this-session-doesnt-load) |266| `Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load` | [Command-line errors](#output-styles-are-saved-to-local-settings-which-this-session-doesnt-load) |

260| `/recap only runs when you ask for it yourself in this session` | [Command-line errors](#recap-only-runs-when-you-ask-for-it-yourself) |267| `/recap only runs when you ask for it yourself in this session` | [Command-line errors](#recap-only-runs-when-you-ask-for-it-yourself) |

261| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Plugin errors](#plugin-eval-is-currently-in-early-access) |268| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Plugin errors](#plugin-eval-is-currently-in-early-access) |

269| `cannot be evaluated where sessions load it` | [Test plugins with evals](/docs/ru/plugin-evals#cannot-be-evaluated-where-sessions-load-it) |

262| `Marketplace "<name>" is registered from an untrusted source` | [Plugin errors](#marketplace-is-registered-from-an-untrusted-source) |270| `Marketplace "<name>" is registered from an untrusted source` | [Plugin errors](#marketplace-is-registered-from-an-untrusted-source) |

263| `Claude Code refuses the marketplace name "<name>"` | [Plugin errors](#claude-code-refuses-the-marketplace-name) |271| `Claude Code refuses the marketplace name "<name>"` | [Plugin errors](#claude-code-refuses-the-marketplace-name) |

264| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [Plugin errors](#claude-code-refuses-the-marketplace-name) |272| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [Plugin errors](#claude-code-refuses-the-marketplace-name) |


358| `Claude Code's fullscreen renderer didn't finish starting last time on this machine` / `Claude Code's fullscreen renderer has repeatedly failed to start on this machine` | [Fullscreen rendering](/docs/ru/fullscreen#fullscreen-renderer-didnt-finish-starting) |366| `Claude Code's fullscreen renderer didn't finish starting last time on this machine` / `Claude Code's fullscreen renderer has repeatedly failed to start on this machine` | [Fullscreen rendering](/docs/ru/fullscreen#fullscreen-renderer-didnt-finish-starting) |

359| `Claude Code exited after an unrecoverable interface error (...)` | [Configuration warnings](#exited-after-an-unrecoverable-interface-error) |367| `Claude Code exited after an unrecoverable interface error (...)` | [Configuration warnings](#exited-after-an-unrecoverable-interface-error) |

360| `Agent descriptions are over the 15.0k-token limit` | [Configuration warnings](#agent-descriptions-are-over-the-15000-token-limit) |368| `Agent descriptions are over the 15.0k-token limit` | [Configuration warnings](#agent-descriptions-are-over-the-15000-token-limit) |

369| `hook needs quotes around a path with a space` | [Configuration warnings](#hook-needs-quotes-around-a-path-with-a-space) |

361| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [Configuration warnings](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |370| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [Configuration warnings](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |

371| `N skill or command names refused: run with --debug to see which ([names]), rename, then restart` | [Configuration warnings](#skill-or-command-name-refused) |

362| `Ignoring N permissions.allow entries from ... this workspace has not been trusted` | [Configuration warnings](#workspace-has-not-been-trusted) |372| `Ignoring N permissions.allow entries from ... this workspace has not been trusted` | [Configuration warnings](#workspace-has-not-been-trusted) |

363| `is a network path, which cannot be added as a working directory` | [Configuration warnings](#working-directory-is-a-network-path) |373| `is a network path, which cannot be added as a working directory` | [Configuration warnings](#working-directory-is-a-network-path) |

364| `Remote managed settings failed to load (<cause>)` | [Configuration warnings](#remote-managed-settings-failed-to-load) |374| `Remote managed settings failed to load (<cause>)` | [Configuration warnings](#remote-managed-settings-failed-to-load) |


447| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/ru/env-vars) | не установлено | Установите значение `1` в автоматических сессиях, таких как задания CI, чтобы повторять ошибки пропускной способности `429` и `529` бесконечно вместо отказа после `CLAUDE_CODE_MAX_RETRIES` попыток. Claude Code сразу завершается с ошибкой, когда запрос со стандартной скоростью получает `429`, который сообщает о лимите расходов или исчерпанных кредитах использования, даже если это `429` от [gateway spend cap](#spend-limit-reached), который сбрасывается по расписанию. До v2.1.239 сторож повторял такие запросы бесконечно. Для запросов в быстром режиме см. [Handle rate limits](/docs/ru/fast-mode#handle-rate-limits). На v2.1.199 или позже он также повышает количество повторных попыток по умолчанию для других временных ошибок, таких как ошибки сервера, таймауты и разорванные соединения, до 300, примерно три часа задержки, и удаляет ограничение 15 на `CLAUDE_CODE_MAX_RETRIES`, если вы явно установите эту переменную. |457| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/ru/env-vars) | не установлено | Установите значение `1` в автоматических сессиях, таких как задания CI, чтобы повторять ошибки пропускной способности `429` и `529` бесконечно вместо отказа после `CLAUDE_CODE_MAX_RETRIES` попыток. Claude Code сразу завершается с ошибкой, когда запрос со стандартной скоростью получает `429`, который сообщает о лимите расходов или исчерпанных кредитах использования, даже если это `429` от [gateway spend cap](#spend-limit-reached), который сбрасывается по расписанию. До v2.1.239 сторож повторял такие запросы бесконечно. Для запросов в быстром режиме см. [Handle rate limits](/docs/ru/fast-mode#handle-rate-limits). На v2.1.199 или позже он также повышает количество повторных попыток по умолчанию для других временных ошибок, таких как ошибки сервера, таймауты и разорванные соединения, до 300, примерно три часа задержки, и удаляет ограничение 15 на `CLAUDE_CODE_MAX_RETRIES`, если вы явно установите эту переменную. |

448| [`CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`](/docs/ru/env-vars) | не установлено | Максимальное время в миллисекундах, которое каждый запрос к API тратит на ожидание при ошибках `429` и `529`, когда установлена `CLAUDE_CODE_RETRY_WATCHDOG`. Если переменная не установлена, время ожидания не ограничено. Требуется Claude Code v2.1.295 или позже. |458| [`CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`](/docs/ru/env-vars) | не установлено | Максимальное время в миллисекундах, которое каждый запрос к API тратит на ожидание при ошибках `429` и `529`, когда установлена `CLAUDE_CODE_RETRY_WATCHDOG`. Если переменная не установлена, время ожидания не ограничено. Требуется Claude Code v2.1.295 или позже. |

449| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](/docs/ru/env-vars) | 500 | Начальная задержка в миллисекундах для экспоненциальной задержки между повторными попытками запроса, который API отклоняет с ошибкой перегрузки `529`. Увеличьте её, вплоть до 32000, чтобы распределить повторные попытки на более длительный период, когда API работает на пределе пропускной способности. Не действует, если `CLAUDE_CODE_RETRY_WATCHDOG` установлена в `1` или если отклонённый запрос был отправлен в [быстром режиме](/docs/ru/fast-mode#handle-rate-limits). Требуется Claude Code v2.1.292 или позже. |459| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](/docs/ru/env-vars) | 500 | Начальная задержка в миллисекундах для экспоненциальной задержки между повторными попытками запроса, который API отклоняет с ошибкой перегрузки `529`. Увеличьте её, вплоть до 32000, чтобы распределить повторные попытки на более длительный период, когда API работает на пределе пропускной способности. Не действует, если `CLAUDE_CODE_RETRY_WATCHDOG` установлена в `1` или если отклонённый запрос был отправлен в [быстром режиме](/docs/ru/fast-mode#handle-rate-limits). Требуется Claude Code v2.1.292 или позже. |

460| [`CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS`](/docs/ru/env-vars) | 32000 | Верхний предел в миллисекундах для экспоненциальной задержки между повторными попытками запроса, который API отклоняет с ошибкой перегрузки `529`. Увеличьте его, вплоть до 64000, чтобы последующие повторные попытки продолжали всё сильнее разноситься во времени, когда API работает на пределе пропускной способности. Не действует, если `CLAUDE_CODE_RETRY_WATCHDOG` установлена в `1` или если отклонённый запрос был отправлен в [быстром режиме](/docs/ru/fast-mode#handle-rate-limits). Требуется Claude Code v2.1.296 или позже. |

450| [`API_TIMEOUT_MS`](/docs/ru/env-vars) | 600000 | Таймаут для каждого запроса в миллисекундах. Повысьте его для медленных сетей или прокси. Он также ограничивает, как долго Claude Code ждёт заголовков ответа, как описано в [No response from API](#no-response-from-api). |461| [`API_TIMEOUT_MS`](/docs/ru/env-vars) | 600000 | Таймаут для каждого запроса в миллисекундах. Повысьте его для медленных сетей или прокси. Он также ограничивает, как долго Claude Code ждёт заголовков ответа, как описано в [No response from API](#no-response-from-api). |

451| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](/docs/ru/env-vars) | не установлено | Лимит повторных отправок [непотокового запроса](#streaming-response-ended-before-any-complete-data-was-received), который завершается по таймауту. При достижении лимита запрос завершается с ошибкой. Ответ Claude, генерация которого занимает больше времени, чем таймаут, снова завершается по таймауту при каждой повторной отправке, поэтому установите небольшое число, например `0`, чтобы получить ошибку быстрее. Каждая непотоковая попытка завершается по таймауту через 300 секунд в локальной сессии или через `API_TIMEOUT_MS`, если вы задали положительное значение. Требуется Claude Code v2.1.285 или позже. |462| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](/docs/ru/env-vars) | не установлено | Лимит повторных отправок [непотокового запроса](#streaming-response-ended-before-any-complete-data-was-received), который завершается по таймауту. При достижении лимита запрос завершается с ошибкой. Ответ Claude, генерация которого занимает больше времени, чем таймаут, снова завершается по таймауту при каждой повторной отправке, поэтому установите небольшое число, например `0`, чтобы получить ошибку быстрее. Каждая непотоковая попытка завершается по таймауту через 300 секунд в локальной сессии или через `API_TIMEOUT_MS`, если вы задали положительное значение. Требуется Claude Code v2.1.285 или позже. |

452| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/ru/env-vars) | не установлено | Дедлайн в миллисекундах для первого байта ответа потокового запроса. Требуется Claude Code v2.1.242 или позже. О том, как Claude Code выбирает дедлайн, когда эта переменная не установлена, см. [No response from API](#no-response-from-api). |463| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/ru/env-vars) | не установлено | Дедлайн в миллисекундах для первого байта ответа потокового запроса. Требуется Claude Code v2.1.242 или позже. О том, как Claude Code выбирает дедлайн, когда эта переменная не установлена, см. [No response from API](#no-response-from-api). |


2045Эти шаги изменяют одну из ваших собственных сред. [Общая среда организации](/docs/ru/cloud-environments#organization-shared-environments) открывается в селекторе только для чтения, поэтому попросите Owner изменить её сетевой доступ на странице **Cloud environments** в [настройках администратора](https://claude.ai/admin-settings).2056Эти шаги изменяют одну из ваших собственных сред. [Общая среда организации](/docs/ru/cloud-environments#organization-shared-environments) открывается в селекторе только для чтения, поэтому попросите Owner изменить её сетевой доступ на странице **Cloud environments** в [настройках администратора](https://claude.ai/admin-settings).

2046 2057 

2047* Откройте среду для редактирования либо из [формы routine](/docs/ru/routines#environments-and-network-access), либо из [селектора сред](/docs/ru/cloud-environments#configure-your-environment), где вы запускаете облачные сессии.2058* Откройте среду для редактирования либо из [формы routine](/docs/ru/routines#environments-and-network-access), либо из [селектора сред](/docs/ru/cloud-environments#configure-your-environment), где вы запускаете облачные сессии.

2048* В диалоговом окне **Edit environment** измените **Network access** с **Trusted** на **Custom**, затем добавьте заблокированный домен в **Allowed domains**. Вводите по одному домену в строке. Установите флажок **Also include default list of common package managers**, чтобы сохранить [список разрешённых доменов по умолчанию](/docs/ru/cloud-environments#default-allowed-domains) вместе с вашими доменами. Если нужен неограниченный доступ, выберите вместо этого **Full**.2059* В диалоговом окне **Edit cloud environment** измените **Network access** с **Trusted** на **Custom**, затем добавьте заблокированный домен в **Allowed domains**. Вводите по одному домену в строке. Установите флажок **Also include default list of common package managers**, чтобы сохранить [список разрешённых доменов по умолчанию](/docs/ru/cloud-environments#default-allowed-domains) вместе с вашими доменами. Если нужен неограниченный доступ, выберите вместо этого **Full**.

2049* Нажмите **Save changes**. Следующий запуск использует обновлённый список разрешённых доменов. Для уже открытой облачной сессии см. [когда изменение сетевого доступа применяется к существующим сессиям](/docs/ru/cloud-environments#network-access).2060* Нажмите **Save changes**. Следующий запуск использует обновлённый список разрешённых доменов. Для уже открытой облачной сессии см. [когда изменение сетевого доступа применяется к существующим сессиям](/docs/ru/cloud-environments#network-access).

2050 2061 

2051Уровни доступа и список разрешённых доменов по умолчанию описаны в разделе [Сетевой доступ](/docs/ru/cloud-environments#network-access). Эта политика не влияет на локальные сессии CLI.2062Уровни доступа и список разрешённых доменов по умолчанию описаны в разделе [Сетевой доступ](/docs/ru/cloud-environments#network-access). Эта политика не влияет на локальные сессии CLI.


2097 2108 

2098До версии v2.1.236 Claude Code вместо этих сообщений показывал необработанную ошибку JavaScript TypeError.2109До версии v2.1.236 Claude Code вместо этих сообщений показывал необработанную ошибку JavaScript TypeError.

2099 2110 

2111<h3 id="failed-to-fetch-session-from-sessions-api">

2112 Failed to fetch session from Sessions API

2113</h3>

2114 

2115Это сообщение означает, что Claude Code нашёл [облачную сессию, которую вы попросили перенести в терминал](/docs/ru/claude-code-on-the-web#from-cloud-to-terminal), но не смог прочитать историю её диалога с серверов Anthropic, поэтому не открыл её:

2116 

2117```text theme={null}

2118Failed to fetch session from Sessions API: Failed to fetch session logs

2119```

2120 

2121Вы видите его после `claude --teleport`, `/teleport` или выбора сессии в списке [`/tasks`](/docs/ru/commands). `claude --teleport <session-id>` выводит его и завершает работу с кодом 1.

2122 

2123**Что делать:**

2124 

2125* Повторите тот же перенос сессии. Если он завершится так же, [сообщите о проблеме](#report-an-error)

2126 

2127До версии v2.1.296 Claude Code не повторял неудавшееся чтение, и после такого сбоя мог открыть сессию с пустым диалогом и сообщить об успехе вместо вывода этого сообщения.

2128 

2100<h3 id="couldnt-reconnect-to-your-remote-control-session">2129<h3 id="couldnt-reconnect-to-your-remote-control-session">

2101 Couldn't reconnect to your Remote Control session2130 Couldn't reconnect to your Remote Control session

2102</h3>2131</h3>


2344* Если сообщение указывает на лимит разрешения или размера, уменьшите или пересожмите изображение ниже этого лимита перед прикреплением.2373* Если сообщение указывает на лимит разрешения или размера, уменьшите или пересожмите изображение ниже этого лимита перед прикреплением.

2345* Если сообщение называет причину, например CMYK JPEG, анимированный WebP или возможно повреждённый файл, пересохраните изображение в формате, предложенном в сообщении, и прикрепите его снова.2374* Если сообщение называет причину, например CMYK JPEG, анимированный WebP или возможно повреждённый файл, пересохраните изображение в формате, предложенном в сообщении, и прикрепите его снова.

2346 2375 

2376<h3 id="request-rejected-as-unprocessable-by-the-model">

2377 Request rejected as unprocessable by the model

2378</h3>

2379 

2380API отклонил запрос как такой, который модель не может обработать. Это собственное сообщение API.

2381 

2382```text theme={null}

2383API Error: 400 Request rejected as unprocessable by the model (too many or oversized images, or unsupported parameters)

2384```

2385 

2386Claude Code может удалить самые старые изображения и документы из отклонённого запроса и отправить его снова. До v2.1.290 Claude Code не удалял изображения при таком отказе, поэтому длинная сессия, накопившая сотни изображений, могла завершаться этой ошибкой на каждом ходе.

2387 

2388**Что делать:**

2389 

2390* Если сообщение продолжает появляться в диалоге с изображениями или документами, удалите их самостоятельно. Дважды нажмите Esc, чтобы вернуться назад за ходы, которые их добавили, или выполните `/clear`, чтобы начать заново.

2391 

2347<h3 id="pdf-errors">2392<h3 id="pdf-errors">

2348 PDF errors2393 PDF errors

2349</h3>2394</h3>


2413* Удалите или [отключите](/docs/ru/mcp#disable-a-server-without-removing-it) MCP-сервер, объявляющий недопустимую схему. Ошибка указывает инструмент только по позиции. В v2.1.216 и новее проверьте лог каждого сервера на наличие строки с именем инструмента, чья схема входных данных будет отклонена. Если ни один лог его не называет, отключайте серверы по одному.2458* Удалите или [отключите](/docs/ru/mcp#disable-a-server-without-removing-it) MCP-сервер, объявляющий недопустимую схему. Ошибка указывает инструмент только по позиции. В v2.1.216 и новее проверьте лог каждого сервера на наличие строки с именем инструмента, чья схема входных данных будет отклонена. Если ни один лог его не называет, отключайте серверы по одному.

2414* Если вы поддерживаете сервер, исправьте `input_schema` инструмента. Схема должна быть допустимой JSON Schema, а имена свойств верхнего уровня должны иметь длину от 1 до 64 символов и содержать только буквы и цифры ASCII, `_`, `.` и `-`. См. раздел [Tools with invalid input schemas](/docs/ru/mcp#tools-with-invalid-input-schemas).2459* Если вы поддерживаете сервер, исправьте `input_schema` инструмента. Схема должна быть допустимой JSON Schema, а имена свойств верхнего уровня должны иметь длину от 1 до 64 символов и содержать только буквы и цифры ASCII, `_`, `.` и `-`. См. раздел [Tools with invalid input schemas](/docs/ru/mcp#tools-with-invalid-input-schemas).

2415 2460 

2461<h3 id="mcp-tool-name-over-128-characters">

2462 MCP tool name over 128 characters

2463</h3>

2464 

2465MCP-сервер предоставляет инструмент, полное имя которого, например `mcp__<server>__<tool>`, длиннее 128 символов, которые принимает API. Claude Code [не включает этот инструмент в список инструментов, отправляемых Claude](/docs/ru/mcp#tools-with-names-longer-than-128-characters), а остальные инструменты сервера продолжают работать. В сессии, которую вы запускаете из оболочки с помощью `claude --debug`, Claude Code записывает это сообщение в отладочный лог `~/.claude/debug/<session-id>.txt`:

2466 

2467```text theme={null}

2468Tool "mcp__<server>__<tool>" is not sent to Claude: its name has <N> characters and the API accepts at most 128

2469```

2470 

2471**Что делать:**

2472 

2473* Если вы поддерживаете сервер, сократите имя инструмента.

2474* Если сервер указан в вашей [конфигурации MCP](/docs/ru/mcp#mcp-installation-scopes), задайте ему там более короткое имя, например `db` вместо `analytics-database`. Затем обновите всё, что ссылается на сервер или его инструменты по старому имени, например [правила разрешений](/docs/ru/permissions#mcp) и [matcher хуков](/docs/ru/hooks#match-mcp-tools).

2475* Если [сервер входит в состав плагина](/docs/ru/mcp#plugin-provided-mcp-servers), полное имя инструмента также включает имя плагина. Попросите сопровождающего плагина сократить имя сервера или инструмента.

2476 

2477До версии 2.1.292 Claude Code всё равно отправлял этот инструмент, и API отклонял каждый запрос, который его содержал, с ошибкой `API Error: 400 ... tools.N.custom.name: String should have at most 128 characters`.

2478 

2416<h3 id="tool-use-name-over-200-characters">2479<h3 id="tool-use-name-over-200-characters">

2417 tool\_use.name over 200 characters2480 tool\_use.name over 200 characters

2418</h3>2481</h3>


3022 3085 

3023Это сообщение появляется, когда вы [создаёте облачную сессию из терминала](/docs/ru/claude-code-on-the-web#from-terminal-to-cloud), и когда вы отправляете команду, которой нужны облачные сессии, например `/teleport`, `/remote-env` или `/web-setup`. До v2.1.268 отправка одной из этих команд возвращала [`Unknown command`](#unknown-command).3086Это сообщение появляется, когда вы [создаёте облачную сессию из терминала](/docs/ru/claude-code-on-the-web#from-terminal-to-cloud), и когда вы отправляете команду, которой нужны облачные сессии, например `/teleport`, `/remote-env` или `/web-setup`. До v2.1.268 отправка одной из этих команд возвращала [`Unknown command`](#unknown-command).

3024 3087 

3025Это политика организации на стороне сервера, поэтому её нельзя переопределить локальными настройками, переменными окружения или флагами CLI.3088Если сообщение вместо этого называет учётные данные, которые использует эта сессия, и заканчивается на `Cloud sessions use your claude.ai login.`, см. [Cloud sessions use your claude.ai login](#cloud-sessions-use-your-claude-ai-login). Если Claude Code вообще не смог загрузить политику вашей организации, вы увидите [другое сообщение](#couldnt-verify-your-organizations-policy-for-cloud-sessions).

3026 

3027Если Claude Code ещё не загрузил политику вашей организации или не может её получить, эти команды вместо этого отвечают `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.`

3028 3089 

3029**Что делать:**3090**Что делать:**

3030 3091 

3031* Попросите [Owner](/docs/ru/server-managed-settings#access-control) в вашей организации включить облачные сессии в настройках администратора Claude Code на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)3092* Попросите [Owner](/docs/ru/server-managed-settings#access-control) в вашей организации включить облачные сессии в настройках администратора Claude Code на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

3032* Если в сообщении сказано, что не удалось проверить политику, проверьте сетевое подключение, затем перезапустите Claude Code и повторите попытку3093 

3094<h3 id="cloud-sessions-use-your-claude-ai-login">

3095 Cloud sessions use your claude.ai login

3096</h3>

3097 

3098Когда [отказ по политике](#cloud-sessions-are-disabled-by-your-organizations-policy) называет учётные данные, которые использует эта сессия, и заканчивается этим предложением, Claude Code проверил политику облачных сессий той организации, которая выдала эти учётные данные. Эта организация может отличаться от той, к которой относится ваш вход в claude.ai:

3099 

3100```text theme={null}

3101Cloud sessions are disabled by your organization's policy. This session is using ANTHROPIC_API_KEY, so Claude Code checked the policy for the organization that key belongs to. Cloud sessions use your claude.ai login.

3102```

3103 

3104Последнее предложение означает, что облачные сессии работают с вашим входом в claude.ai, а не с этими учётными данными. Эта форма появляется, когда вы запускаете, возобновляете облачную сессию или отправляете ей сообщение из оболочки, например с `--cloud` или `--teleport`. До v2.1.296 Claude Code и в этом случае выводил форму, предлагающую обратиться к администратору организации.

3105 

3106<h3 id="couldnt-verify-your-organizations-policy-for-cloud-sessions">

3107 Couldn't verify your organization's policy for cloud sessions

3108</h3>

3109 

3110Эти сообщения означают, что Claude Code не смог загрузить политику вашей организации, которую он проверяет перед тем, как создать, возобновить [облачную сессию](/docs/ru/claude-code-on-the-web) или отправить ей сообщение. Пока запрос политики не завершился, сообщение выглядит так:

3111 

3112```text theme={null}

3113Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.

3114```

3115 

3116Внутри сессии это сообщение выдаёт и команда, которой нужны облачные сессии, например `/teleport` или `/web-setup`. Это происходит даже там, где ваша оболочка вывела бы форму `Cloud sessions aren't available:`, а второе предложение звучит как `Check your network connection, then restart Claude Code and try again.`

3117 

3118Когда запрос политики уже завершился ошибкой, сообщение указывает, что именно не удалось. Это относится к случаям, когда вы запускаете, возобновляете облачную сессию или отправляете ей сообщение из оболочки с флагом вроде `--cloud` или `--teleport`. Если нет маршрута до API, сообщение выглядит так:

3119 

3120```text theme={null}

3121Cloud sessions aren't available: couldn't reach api.anthropic.com to load your organization's policy. Check your network or proxy.

3122```

3123 

3124Другие сбои начинаются так же, но называют свою причину, например прокси, отклонивший запрос с HTTP 403, ошибку сервера или учётные данные, которые API не принял. Если API не принял учётные данные, которые эта сессия использует вместо вашего входа в claude.ai, например переменную окружения `ANTHROPIC_API_KEY`, сообщение может также назвать их и предложить их сбросить:

3125 

3126```text theme={null}

3127Cloud sessions aren't available: api.anthropic.com didn't accept this session's credentials when Claude Code asked for your organization's policy. Cloud sessions use your claude.ai login. ANTHROPIC_API_KEY is set, so this session is using API-key auth — unset it (or run in a shell without it) to use cloud sessions.

3128```

3129 

3130До v2.1.296 при этих сбоях тоже выводилось сообщение `Couldn't verify`.

3131 

3132**Что делать:**

3133 

3134* При сообщении `Couldn't verify` проверьте сетевое подключение и повторите попытку. Внутри сессии сначала перезапустите Claude Code

3135* При сообщении `Cloud sessions aren't available:` сделайте то, чего требует указанная причина, например проверьте прокси или сбросьте названные учётные данные, затем выполните команду снова

3136 

3137<h3 id="nothing-was-stashed-because-a-folder-replaced-a-tracked-file">

3138 Nothing was stashed because a folder replaced a tracked file

3139</h3>

3140 

3141Это сообщение означает, что в вашей рабочей копии папка теперь находится там, где раньше был отслеживаемый git файл или ссылка. Оно появляется после того, как вы выбираете вариант stash при переносе [облачной сессии](/docs/ru/claude-code-on-the-web#from-cloud-to-terminal) в терминал, например с помощью `claude --teleport` или `/teleport`. Stash такого состояния мог бы удалить файлы внутри папки, поэтому Claude Code отказывается выполнять stash и оставляет рабочую копию и индекс без изменений:

3142 

3143```text wrap theme={null}

3144Error: Nothing was stashed: "f" is now a folder in place of a tracked file or link, and stashing could delete what's in it for good. Commit the change or move the folder somewhere else, then try again.

3145```

3146 

3147**Что делать:**

3148 

3149* Сделайте коммит изменения или переместите папку в другое место, как указано в сообщении, затем снова выполните teleport

3033 3150 

3034<h3 id="the-json-schema-value-is-not-a-valid-json-schema">3151<h3 id="the-json-schema-value-is-not-a-valid-json-schema">

3035 Значение `--json-schema` не является допустимой JSON Schema3152 Значение `--json-schema` не является допустимой JSON Schema


3427 3544 

3428Claude Code показывает ту же ошибку для любого скилла, который [внедряет динамический контекст](/docs/ru/skills#when-an-injected-command-fails), и неудачная внедрённая команда прерывает вызов этого скилла. Две родственные строки появляются ещё до выполнения команды:3545Claude Code показывает ту же ошибку для любого скилла, который [внедряет динамический контекст](/docs/ru/skills#when-an-injected-command-fails), и неудачная внедрённая команда прерывает вызов этого скилла. Две родственные строки появляются ещё до выполнения команды:

3429 3546 

3430* `Shell command permission check failed for pattern "..."`: проверка разрешений команды её не пропустила. В разделе [Проверки разрешений для внедрённых команд](/docs/ru/skills#permission-checks-on-injected-commands) описано, какие результаты приводят к прерыванию в каждом режиме разрешений и как заранее одобрить команду с помощью `allowed-tools`3547* `Shell command permission check failed for pattern "..."`: проверка разрешений не разрешила команду. В разделе [Проверки разрешений для внедрённых команд](/docs/ru/skills#permission-checks-on-injected-commands) описано, какие результаты приводят к прерыванию в каждом режиме разрешений и как заранее одобрить команду с помощью `allowed-tools`

3431* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: frontmatter скилла требует bash на компьютере, где его нет. Установите Git for Windows или измените frontmatter на `shell: powershell`. См. [Как выполняются внедрённые команды](/docs/ru/skills#how-injected-commands-run)3548* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: frontmatter скилла требует bash на компьютере, где его нет. Установите Git for Windows или измените frontmatter на `shell: powershell`. См. [Как выполняются внедрённые команды](/docs/ru/skills#how-injected-commands-run)

3432 3549 

3433**Что делать:**3550**Что делать:**


3577 3694 

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

3579* **Вы передали базовую ветку, которая уже была в вашем клоне**: подсказка гласит ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3696* **Вы передали базовую ветку, которая уже была в вашем клоне**: подсказка гласит ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3580* **Вы передали базовую ветку, которой не было в вашем клоне**: Claude Code получил её из origin перед сравнением. Подсказка гласит ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; если Claude Code не может определить, является ли ваш клон неполным (shallow), он вместо этого предлагает `git fetch --unshallow origin`. До v2.1.221 подсказка предлагала `git fetch --unshallow origin` для каждой полученной базовой ветки, а в полном клоне эта команда завершается ошибкой `fatal: --unshallow on a complete repository does not make sense`.3697* **Вы передали базовую ветку, которой не было в клоне**: Claude Code получил её из origin перед сравнением. Подсказка звучит как ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; если Claude Code не может определить, является ли клон поверхностным, он вместо этого предлагает `git fetch --unshallow origin`. До v2.1.221 подсказка предлагала `git fetch --unshallow origin` для каждой полученной базовой ветки, а в полном клоне эта команда завершается ошибкой `fatal: --unshallow on a complete repository does not make sense`.

3581 3698 

3582**Что делать:**3699**Что делать:**

3583 3700 


3835 Claude Code couldn't restart3952 Claude Code couldn't restart

3836</h3>3953</h3>

3837 3954 

3838Claude Code выполнял перезапуск, например чтобы переключиться на полноэкранный рендеринг или выйти из него после выполнения [`/tui`](/docs/ru/fullscreen#enable-fullscreen-rendering). Он закрыл сессию, но не смог запустить новый процесс, поэтому вывел это сообщение и завершился со статусом 1:3955Если в этом сообщении сказано, что ваш диалог сохранён, значит, диалог находится на диске и вы можете продолжить его с того места, где он остановился. Claude Code перезапускал себя, например, чтобы переключиться на полноэкранный рендеринг или обратно после выполнения [`/tui`](/docs/ru/fullscreen#enable-fullscreen-rendering), и не смог запустить новый процесс, поэтому завершился со статусом 1:

3839 3956 

3840```text theme={null}3957```text theme={null}

3841Claude Code couldn't restart. Your conversation is saved. Start Claude Code again and run /resume to pick it up.3958Claude Code couldn't restart. Your conversation is saved. Start Claude Code again and run /resume to pick it up.


3845 3962 

3846**Что делать:**3963**Что делать:**

3847 3964 

3848* Снова выполните `claude` в оболочке из того же каталога. Если в сообщении было сказано, что диалог сохранён, выполните [`/resume`](/docs/ru/sessions#resume-a-session) в новой сессии и выберите его3965* Снова выполните `claude` в своей оболочке. Если в сообщении сказано, что ваш диалог сохранён, выполните [`/resume`](/docs/ru/sessions#resume-a-session) в новой сессии и выберите диалог. Если его нет в списке, [расширьте средство выбора сессий](/docs/ru/sessions#where-the-session-picker-looks)

3849* Если перезапуски продолжают завершаться ошибкой, запустите Claude Code из оболочки командой [`claude --debug-file claude-debug.log`](/docs/ru/cli-reference#cli-flags). Если перезапуск из этой сессии не удастся, файл `claude-debug.log` в каталоге запуска будет содержать строку `Failed to relaunch:` с ошибкой операционной системы. Приложите эту строку, когда будете [сообщать о проблеме](#report-an-error)3966* Если перезапуски продолжают завершаться ошибкой, запустите Claude Code из оболочки командой [`claude --debug-file claude-debug.log`](/docs/ru/cli-reference#cli-flags). Если перезапуск из этой сессии не удастся, файл `claude-debug.log` в каталоге запуска будет содержать строку `Failed to relaunch:` с ошибкой операционной системы. Приложите эту строку, когда будете [сообщать о проблеме](#report-an-error)

3850 3967 

3851<h3 id="couldnt-open-claude-desktop">3968<h3 id="couldnt-open-claude-desktop">


5366* Сократите frontmatter `description` ваших файлов агентов или попросите Claude сократить их для вас.5483* Сократите frontmatter `description` ваших файлов агентов или попросите Claude сократить их для вас.

5367* Удалите файлы агентов, которые вы больше не используете.5484* Удалите файлы агентов, которые вы больше не используете.

5368 5485 

5486<h3 id="hook-needs-quotes-around-a-path-with-a-space">

5487 Hook needs quotes around a path with a space

5488</h3>

5489 

5490Это уведомление в представлении диалога означает, что скрипт хука не запустился, потому что его путь содержит пробел и не заключён в кавычки. Речь идёт о хуке [`asyncRewake`](/docs/ru/hooks#run-hooks-in-the-background) в форме shell-команды. В его `command` за интерпретатором, например `python3`, следует заполнитель пути без кавычек, а итоговый путь содержит пробел.

5491 

5492Уведомление начинается с имени события хука и называет скрипт:

5493 

5494```text theme={null}

5495Stop hook needs quotes around a path with a space (check.py)

5496```

5497 

5498**Что делать:**

5499 

5500* В `command` хука, который запускает указанный в уведомлении скрипт, заключите путь в двойные кавычки. В JSON-файле это записывается как `"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/hooks/check.py\""`.

5501 

5369<h3 id="a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved">5502<h3 id="a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved">

5370 A skill, command, or workflow wasn't loaded because its name is reserved5503 A skill, command, or workflow wasn't loaded because its name is reserved

5371</h3>5504</h3>


5386 5519 

5387До версии 2.1.282 Claude Code загружал skills и commands с этими именами.5520До версии 2.1.282 Claude Code загружал skills и commands с этими именами.

5388 5521 

5522<h3 id="skill-or-command-name-refused">

5523 Skill or command name refused

5524</h3>

5525 

5526Это уведомление при запуске означает, что Claude Code отклонил имя как минимум одного [скилла или пользовательской команды](/docs/ru/skills), поэтому элемент не загрузился или загрузился без поля `name`:

5527 

5528```text theme={null}

55291 skill or command name refused: run with --debug to see which ([names]), rename, then restart — a name may not hold hidden, direction-changing or blank-like characters, < or >, or be over 256 characters

5530```

5531 

5532* **Не загружен**: Claude Code отклонил имя, под которым известен скилл или команда, например имя каталога, имя файла команды или её подпапки. Элемент отсутствует в меню `/`, и Claude не может его вызвать. Соответствующая строка в логе отладки выглядит как `<name> is not offered`.

5533* **Поле `name` проигнорировано**: Claude Code отклонил поле frontmatter `name` скилла. Скилл всё равно загружается, но меню `/` не показывает значение `name`, и ввод этого значения не вызывает скилл. Соответствующая строка в логе отладки выглядит как `<name value> is not shown for <skill>`.

5534 

5535**Что делать:**

5536 

5537* Запустите Claude Code из оболочки командой `claude --debug` и найдите в [логе отладки](/docs/ru/debug-your-config) `[names]`. Для каждого имени, учтённого в уведомлении, там есть одна строка. В этой строке некоторые скрытые символы записаны в виде кодов, например `\u{200B}` для пробела нулевой ширины, чтобы вы видели, где они находятся.

5538* Удалите [символы, которые не может содержать имя скилла](/docs/ru/skills#characters-a-skill-name-cant-hold), переименовав папку или файл либо отредактировав строку `name:`, или сократите имя длиннее 256 символов. Затем перезапустите сессию, если только файл не находится в каталоге, который Claude Code [отслеживает на изменения](/docs/ru/skills#live-change-detection). Если скилл взят из плагина, который написали не вы, попросите автора плагина переименовать его.

5539 

5389<h3 id="workspace-has-not-been-trusted">5540<h3 id="workspace-has-not-been-trusted">

5390 Workspace has not been trusted5541 Workspace has not been trusted

5391</h3>5542</h3>

Details

220</table>220</table>

221 221 

222<span id="fn1" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>1</sup> На Google Cloud's Agent Platform веб-поиск доступен для Opus 4, Sonnet 4, Haiku 4.5 и более поздних моделей.<br />222<span id="fn1" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>1</sup> На Google Cloud's Agent Platform веб-поиск доступен для Opus 4, Sonnet 4, Haiku 4.5 и более поздних моделей.<br />

223<span id="fn2" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>2</sup> На этих поставщиках авторежим поддерживает только Claude Sonnet 5 или более поздние версии, Opus 4.7 или более поздние версии, Haiku 5.5 и модели Fable. См. [Конфигурация авторежима](/docs/ru/auto-mode-config). Для режима разрешений, в котором сессия начинается на этих поставщиках, см. [В каком режиме начинается сессия](/docs/ru/permission-modes#which-mode-a-session-starts-in). В версиях с v2.1.158 по v2.1.206 авторежим на этих поставщиках также требовал установки `CLAUDE_CODE_ENABLE_AUTO_MODE=1`; v2.1.207 удалил это требование.<br />223<span id="fn2" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>2</sup> На этих поставщиках авторежим поддерживает только Claude Sonnet 5 или более поздние версии, Opus 4.7 или более поздние версии, Haiku 5.5 и модели Fable. См. [Конфигурация авторежима](/docs/ru/auto-mode-config). Для режима разрешений, в котором сессия начинается на этих поставщиках, см. [В каком режиме начинается сессия](/docs/ru/permission-modes#which-mode-a-session-starts-in).<br />

224<span id="fn3" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>3</sup> В соответствии с вашим соглашением с поставщиком облачных услуг.<br />224<span id="fn3" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>3</sup> В соответствии с вашим соглашением с поставщиком облачных услуг.<br />

225<span id="fn4" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>4</sup> Только панель управления и API. [Contribution metrics](/docs/ru/analytics#enable-contribution-metrics) требует организацию claude.ai Team или Enterprise.<br />225<span id="fn4" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>4</sup> Только панель управления и API. [Contribution metrics](/docs/ru/analytics#enable-contribution-metrics) требует организацию claude.ai Team или Enterprise.<br />

226<span id="fn5" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>5</sup> Требует Claude Code v2.1.224 или более поздней версии на macOS и Linux, включая Linux внутри WSL 2. На нативной Windows требует Claude Code v2.1.234 или более поздней версии. При аутентификации с помощью API-ключа передача сообщений доступна только на одной машине. На Amazon Bedrock, Claude Platform на AWS, Google Cloud's Agent Platform и Microsoft Foundry передача сообщений доступна только на одной машине и требует Claude Code v2.1.248 или более поздней версии. Claude может найти ваши [облачные сессии](/docs/ru/claude-code-on-the-web) и ваши сессии на других машинах только из сессии, подключённой к [Remote Control](/docs/ru/remote-control). Для подключения вам нужен вход в claude.ai и выполнение других [требований Remote Control](/docs/ru/remote-control#requirements). См. [Передача сообщений сессиям на других машинах](/docs/ru/cross-session-messaging#message-sessions-on-other-machines).226<span id="fn5" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>5</sup> Требует Claude Code v2.1.224 или более поздней версии на macOS и Linux, включая Linux внутри WSL 2. На нативной Windows требует Claude Code v2.1.234 или более поздней версии. При аутентификации с помощью API-ключа передача сообщений доступна только на одной машине. На Amazon Bedrock, Claude Platform на AWS, Google Cloud's Agent Platform и Microsoft Foundry передача сообщений доступна только на одной машине и требует Claude Code v2.1.248 или более поздней версии. Claude может найти ваши [облачные сессии](/docs/ru/claude-code-on-the-web) и ваши сессии на других машинах только из сессии, подключённой к [Remote Control](/docs/ru/remote-control). Для подключения вам нужен вход в claude.ai и выполнение других [требований Remote Control](/docs/ru/remote-control#requirements). См. [Передача сообщений сессиям на других машинах](/docs/ru/cross-session-messaging#message-sessions-on-other-machines).

Details

282 282 

283 **Стоимость контекста:** Низкая до использования. Skills только пользователя имеют нулевую стоимость до вызова.283 **Стоимость контекста:** Низкая до использования. Skills только пользователя имеют нулевую стоимость до вызова.

284 284 

285 **В subagents:** Skills работают по-другому в subagents. Вместо загрузки по требованию, skills, указанные в поле `skills:` subagent, полностью предварительно загружаются в его контекст при запуске. Subagents всё ещё могут обнаруживать и вызывать unlisted project, user и plugin skills через инструмент Skill.285 **В subagents:** Skills работают по-другому в subagents. Вместо загрузки по требованию, skills, указанные в поле `skills` субагента, полностью предварительно загружаются в его контекст при запуске. Субагенты по-прежнему могут обнаруживать и вызывать не указанные в списке скиллы проекта, пользователя и плагинов через инструмент Skill.

286 286 

287 <Tip>Используйте `disable-model-invocation: true` для скиллов с побочными эффектами. Это экономит контекст и гарантирует, что они запускаются только тогда, когда вы называете их.</Tip>287 <Tip>Используйте `disable-model-invocation: true` для скиллов с побочными эффектами. Это экономит контекст и гарантирует, что они запускаются только тогда, когда вы называете их.</Tip>

288 </Tab>288 </Tab>


312 312 

313 **Что загружается:** Свежий, изолированный контекст, содержащий:313 **Что загружается:** Свежий, изолированный контекст, содержащий:

314 314 

315 * Системный prompt агента, а не системный prompt Claude Code315 * Собственный системный промпт агента, а не системный промпт Claude Code

316 * Полный контент skills, указанных в поле `skills:` агента316 * Полный контент skills, указанных в поле `skills:` агента

317 * CLAUDE.md и статус git, за исключением встроенных агентов Explore и Plan [которые опускают оба](/docs/ru/sub-agents#what-loads-at-startup), и агента, чьё определение устанавливает [`omitClaudeMd`](/docs/ru/sub-agents#supported-frontmatter-fields), пропускает пользовательские, проектные и локальные файлы CLAUDE.md317 * CLAUDE.md и статус git. Встроенные агенты Explore и Plan [не получают ни того, ни другого](/docs/ru/sub-agents#what-loads-at-startup), а агент, чьё определение устанавливает [`omitClaudeMd`](/docs/ru/sub-agents#supported-frontmatter-fields), запускается без пользовательского, проектного и локального файлов CLAUDE.md.

318 * Любой контекст, который основной агент передаёт в prompt318 * Любой контекст, который основной агент передаёт в промпте

319 319 

320 Для [fork](/docs/ru/sub-agents#fork-the-current-conversation), Claude Code загружает разговор родителя до сих пор, системный prompt и инструменты вместо.320 Для [fork](/docs/ru/sub-agents#fork-the-current-conversation), Claude Code загружает разговор родителя до сих пор, системный prompt и инструменты вместо.

321 321 

Details

22 22 

23| Функция | Поддержка GHES | Примечания |23| Функция | Поддержка GHES | Примечания |

24| :- | :- | :- |24| :- | :- | :- |

25| Cloud sessions | ✅ Поддерживается | Владелец подключает экземпляр GHES один раз; разработчики используют `claude --cloud` или [claude.ai/code](https://claude.ai/code) как обычно |25| Облачные сессии | ✅ Поддерживается | Владелец подключает экземпляр GHES один раз; разработчики используют `claude --cloud` или [claude.ai/code](https://claude.ai/code) |

26| Проверка кода | ✅ Поддерживается | Те же автоматизированные проверки PR, что и на github.com |26| Проверка кода | ✅ Поддерживается | Те же автоматизированные проверки PR, что и на github.com |

27| Claude Security | ✅ Поддерживается | Доступно в открытой бета-версии для планов Enterprise на [claude.ai/security](https://claude.ai/security) |27| Claude Security | ✅ Поддерживается | Доступно в открытой бета-версии для планов Enterprise на [claude.ai/security](https://claude.ai/security) |

28| Teleport sessions | ✅ Поддерживается | Перемещайте сессии между облаком и терминалом с помощью `--teleport` |28| Teleport sessions | ✅ Поддерживается | Перемещайте сессии между облаком и терминалом с помощью `--teleport` |


35 Настройка администратором35 Настройка администратором

36</h2>36</h2>

37 37 

38Пользователь с ролью Owner подключает ваш экземпляр GHES к Claude Code один раз. После этого разработчики в вашей организации смогут использовать репозитории GHES без какой-либо дополнительной конфигурации. Вам нужна роль Owner или Primary Owner в вашей организации Claude и разрешение на создание GitHub Apps на вашем экземпляре GHES.38Пользователь с ролью Owner подключает ваш экземпляр GHES к Claude Code один раз. Вам нужна роль Owner или Primary Owner в вашей организации Claude и разрешение на создание GitHub Apps на вашем экземпляре GHES.

39 39 

40Управляемая настройка генерирует манифест GitHub App и перенаправляет вас на ваш экземпляр GHES для создания приложения в один клик. Если ваша среда блокирует поток перенаправления, доступна [альтернативная ручная настройка](#manual-setup).40Управляемая настройка генерирует манифест GitHub App и перенаправляет вас на ваш экземпляр GHES для создания приложения в один клик. Если ваша среда блокирует поток перенаправления, доступна [альтернативная ручная настройка](#manual-setup).

41 41 


103 Рабочий процесс разработчика103 Рабочий процесс разработчика

104</h2>104</h2>

105 105 

106После того как ваш администратор подключит экземпляр GHES, конфигурация на стороне разработчика не требуется. Claude Code автоматически обнаруживает имя хоста GHES из git remote в вашем рабочем каталоге.106Claude Code автоматически обнаруживает имя хоста GHES из git remote в вашем рабочем каталоге.

107 107 

108Клонируйте репозиторий из вашего экземпляра GHES как обычно, заменив `github.example.com` и путь репозитория на имя хоста GHES и репозиторий:108Клонируйте репозиторий из вашего экземпляра GHES как обычно, заменив `github.example.com` и путь репозитория на имя хоста GHES и репозиторий:

109 109 


228 228 

229Если `claude --cloud` завершается с ошибкой клонирования, убедитесь, что владелец завершил настройку для вашего экземпляра GHES и что GitHub App установлено на репозитории, над которым вы работаете. Попросите владельца, который подключил экземпляр, подтвердить, что имя хоста, зарегистрированное в параметрах Claude, совпадает с именем хоста в вашем git remote.229Если `claude --cloud` завершается с ошибкой клонирования, убедитесь, что владелец завершил настройку для вашего экземпляра GHES и что GitHub App установлено на репозитории, над которым вы работаете. Попросите владельца, который подключил экземпляр, подтвердить, что имя хоста, зарегистрированное в параметрах Claude, совпадает с именем хоста в вашем git remote.

230 230 

231Если сессия останавливается с сообщением "Authentication failed while accessing the repository", возможно, вы не подключили свою собственную учётную запись GitHub Enterprise. Подключите её через средство выбора репозитория на [claude.ai/code](https://claude.ai/code), затем запустите новую сессию.

232 

231<h3 id="marketplace-add-fails-with-a-policy-error">233<h3 id="marketplace-add-fails-with-a-policy-error">

232 Добавление маркетплейса не удаётся с ошибкой политики234 Добавление маркетплейса не удаётся с ошибкой политики

233</h3>235</h3>

Details

261* Чтобы использовать Haiku для фоновых задач, установите `ANTHROPIC_DEFAULT_HAIKU_MODEL` на ID модели, который доступен в вашем проекте.261* Чтобы использовать Haiku для фоновых задач, установите `ANTHROPIC_DEFAULT_HAIKU_MODEL` на ID модели, который доступен в вашем проекте.

262 262 

263<Warning>263<Warning>

264 Модели Opus имеют более высокую цену за токен, чем модели Sonnet, поэтому развертывание, которое не закрепляет основную модель, будет тарифицироваться по тарифу Opus после обновления до версии 2.1.207 или позже. Чтобы сохранить Sonnet 4.5 в качестве основной модели, установите `ANTHROPIC_MODEL` на его полный ID модели. Развертывание, которое управляет значением по умолчанию с помощью `ANTHROPIC_DEFAULT_SONNET_MODEL` и не устанавливает `ANTHROPIC_DEFAULT_OPUS_MODEL`, сохраняет свою управляемую модель Sonnet в качестве значения по умолчанию.264 Модели Opus имеют более высокую цену за токен, чем модели Sonnet, поэтому если вы не закрепите основную модель, тарификация будет производиться по тарифу Opus. Чтобы использовать Sonnet 4.5 в качестве основной модели, установите `ANTHROPIC_MODEL` на его полный ID модели. Развертывание, которое управляет значением по умолчанию с помощью `ANTHROPIC_DEFAULT_SONNET_MODEL` и не устанавливает `ANTHROPIC_DEFAULT_OPUS_MODEL`, сохраняет свою управляемую модель Sonnet в качестве значения по умолчанию.

265</Warning>265</Warning>

266 266 

267До версии 2.1.280 основная модель на Google Cloud's Agent Platform по умолчанию была Opus 5, и псевдоним `opus` разрешался в Opus 5 с версии 2.1.219. На версиях 2.1.207 по 2.1.218 основная модель на Google Cloud's Agent Platform по умолчанию была Opus 4.8, и псевдоним `opus` разрешался в Opus 4.8. До версии 2.1.207 основная модель по умолчанию была Sonnet 4.5, псевдоним `opus` разрешался в Opus 4.6, и фоновые задачи всегда использовали основную модель.267До версии 2.1.280 основная модель на Google Cloud's Agent Platform по умолчанию была Opus 5, и псевдоним `opus` разрешался в Opus 5 с версии 2.1.219. На версиях 2.1.207 по 2.1.218 основная модель на Google Cloud's Agent Platform по умолчанию была Opus 4.8, и псевдоним `opus` разрешался в Opus 4.8.

268 268 

269Для дальнейшей настройки моделей:269Для дальнейшей настройки моделей:

270 270 

headless.md +6 −6

Details

38 Начните быстрее с режима bare38 Начните быстрее с режима bare

39</h3>39</h3>

40 40 

41Добавьте `--bare` для сокращения времени запуска путём пропуска автоматического обнаружения хуков, скиллов, пользовательских команд, [субагентов](/docs/ru/sub-agents), установленных плагинов, MCP-серверов, автоматической памяти и CLAUDE.md. Без этого `claude -p` загружает тот же [контекст](/docs/ru/how-claude-code-works#the-context-window), что и интерактивная сессия, включая всё, что настроено в рабочем каталоге или `~/.claude`.41Добавьте `--bare` для сокращения времени запуска путём пропуска автоматического обнаружения хуков, скиллов, пользовательских команд, [субагентов](/docs/ru/sub-agents), установленных плагинов, MCP-серверов, автоматической памяти и CLAUDE.md. Без него `claude -p` обнаруживает и загружает их так же, как интерактивная сессия, включая всё, что настроено в рабочем каталоге или `~/.claude`.

42 42 

43Режим bare полезен для CI и скриптов, где вам нужен одинаковый результат на каждой машине. Хук в `~/.claude` коллеги или MCP-сервер в `.mcp.json` проекта не будут запущены, потому что режим bare никогда их не читает. Каталог, который вы указываете с помощью `--add-dir`, является частичным исключением: режим bare загружает скиллы из его папки `.claude/skills/`, но всё ещё пропускает его папки `.claude/commands/` и `.claude/agents/`. [Скиллы из дополнительных каталогов](/docs/ru/skills#skills-from-additional-directories) охватывает то, что загружается и что не загружается.43Режим bare полезен для CI и скриптов, где вам нужен одинаковый результат на каждой машине. Хук в `~/.claude` коллеги или MCP-сервер в `.mcp.json` проекта не будут запущены, потому что режим bare никогда их не читает. Каталог, который вы указываете с помощью `--add-dir`, является частичным исключением: режим bare загружает скиллы из его папки `.claude/skills/`, но всё ещё пропускает его папки `.claude/commands/` и `.claude/agents/`. [Скиллы из дополнительных каталогов](/docs/ru/skills#skills-from-additional-directories) охватывает то, что загружается и что не загружается.

44 44 


184 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'184 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'

185```185```

186 186 

187Если значение не является допустимой JSON Schema, `claude` завершается с `Error: --json-schema is not a valid JSON Schema`, за которым следует диагностика валидатора. Claude Code принимает схемы, использующие ключевое слово `format`, такие как `"format": "email"`, но рассматривает `format` как аннотацию и не применяет его. До версии 2.1.205 Claude Code молча игнорировал недопустимую схему и возвращал неструктурированный текст, а также рассматривал любую схему, содержащую `format`, как недопустимую.187Если значение не является допустимой JSON Schema, `claude` завершается с `Error: --json-schema is not a valid JSON Schema`, за которым следует диагностика валидатора. Claude Code принимает схемы, использующие ключевое слово `format`, такие как `"format": "email"`, но рассматривает `format` как аннотацию и не применяет его.

188 188 

189<Tip>189<Tip>

190 Используйте инструмент, такой как [jq](https://jqlang.org/), для разбора ответа и извлечения определённых полей:190 Используйте инструмент, такой как [jq](https://jqlang.org/), для разбора ответа и извлечения определённых полей:


281Событие `system/init` сообщает метаданные сессии, включая модель, инструменты, MCP-серверы и загруженные плагины. Это первое событие в потоке, если ему не предшествуют события запуска:281Событие `system/init` сообщает метаданные сессии, включая модель, инструменты, MCP-серверы и загруженные плагины. Это первое событие в потоке, если ему не предшествуют события запуска:

282 282 

283* События `plugin_install`, когда задана [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/ru/env-vars).283* События `plugin_install`, когда задана [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/ru/env-vars).

284* [События `hook_started`, `hook_progress` и `hook_response`](/docs/ru/agent-sdk/typescript#sdkhookstartedmessage), пока выполняется настроенный хук [`SessionStart`](/docs/ru/hooks#sessionstart) или [`Setup`](/docs/ru/hooks#setup). Они передаются в потоке по мере их создания хуком. Claude Code версий с 2.1.169 по 2.1.203 доставлял их одной партией после завершения хука, всё равно раньше `system/init`; версия 2.1.204 восстановила доставку в реальном времени.284* [События `hook_started`, `hook_progress` и `hook_response`](/docs/ru/agent-sdk/typescript#sdkhookstartedmessage), пока выполняется настроенный хук [`SessionStart`](/docs/ru/hooks#sessionstart) или [`Setup`](/docs/ru/hooks#setup). Они передаются в потоке по мере их создания хуком.

285 285 

286Событие также содержит опциональный массив строк `capabilities`, называющих поведения протокола, которые реализует эта версия Claude Code, такие как `interrupt_receipt_v1` или `interrupt_cancel_queued_v1`. Проверяйте его для обнаружения возможностей вместо сравнения строк версий и игнорируйте значения, которые вы не распознаёте. Поле требует Claude Code версии 2.1.205 или новее и отсутствует в более ранних версиях. См. [`SDKSystemMessage`](/docs/ru/agent-sdk/typescript#sdksystemmessage) для списка возможностей.286Событие также содержит опциональный массив строк `capabilities`, называющих поведения протокола, которые реализует эта версия Claude Code, такие как `interrupt_receipt_v1` или `interrupt_cancel_queued_v1`. Проверяйте его для обнаружения возможностей вместо сравнения строк версий и игнорируйте значения, которые вы не распознаёте. См. [`SDKSystemMessage`](/docs/ru/agent-sdk/typescript#sdksystemmessage) для списка возможностей.

287 287 

288<h4 id="fail-ci-when-a-plugin-or-mcp-server-doesn’t-load">288<h4 id="fail-ci-when-a-plugin-or-mcp-server-doesn’t-load">

289 Сбой CI, когда плагин или MCP-сервер не загружается289 Сбой CI, когда плагин или MCP-сервер не загружается


388 388 

389 * Вызываемые пользователем [скиллы](/docs/ru/skills) и пользовательские команды работают. Включите `/skill-name` в строку промпта, и Claude Code развернёт её перед запуском.389 * Вызываемые пользователем [скиллы](/docs/ru/skills) и пользовательские команды работают. Включите `/skill-name` в строку промпта, и Claude Code развернёт её перед запуском.

390 * Встроенные команды, которые работают только в интерфейсе терминала, такие как `/login`, недоступны.390 * Встроенные команды, которые работают только в интерфейсе терминала, такие как `/login`, недоступны.

391 * `/model`, `/effort`, `/fast`, `/color` и `/rename` принимают значение как аргумент, например `/model sonnet`, а `/mcp` без аргумента выводит текстовую сводку состояния серверов. Эти формы требуют Claude Code версии 2.1.205 или новее и следуют [примечаниям о доступности](/docs/ru/commands#all-commands) каждой команды.391 * `/model`, `/effort`, `/fast`, `/color` и `/rename` принимают значение как аргумент, например `/model sonnet`, а `/mcp` без аргумента выводит текстовую сводку состояния серверов. Эти формы следуют [примечаниям о доступности](/docs/ru/commands#all-commands) каждой команды.

392 * Чтобы изменить настройку, передайте `key=value` в `/config`, например `/config thinking=false`.392 * Чтобы изменить настройку, передайте `key=value` в `/config`, например `/config thinking=false`.

393 * `/output-style <style>` переключает [стили вывода](/docs/ru/output-styles), а `/output-style` без аргумента выводит их список. Требует Claude Code версии 2.1.269 или новее.393 * `/output-style <style>` переключает [стили вывода](/docs/ru/output-styles), а `/output-style` без аргумента выводит их список. Требует Claude Code версии 2.1.269 или новее.

394</Note>394</Note>


407 407 

408В скрипте `"$1"` обозначает первый аргумент, который вы передаёте в командной строке. Запустите `bash review.sh 123`, и оболочка заменит `"$1"` на `123`, поэтому скрипт получит diff для PR 123. Claude Code выводит рецензию в виде JSON, с текстом в поле `result`.408В скрипте `"$1"` обозначает первый аргумент, который вы передаёте в командной строке. Запустите `bash review.sh 123`, и оболочка заменит `"$1"` на `123`, поэтому скрипт получит diff для PR 123. Claude Code выводит рецензию в виде JSON, с текстом в поле `result`.

409 409 

410См. [флаги системного промпта](/docs/ru/cli-reference#system-prompt-flags) для дополнительных параметров, включая `--system-prompt` для полной замены промпта по умолчанию.410См. [флаги системного промпта](/docs/ru/cli-reference#system-prompt-flags) для дополнительных параметров, включая `--system-prompt` для полной замены промпта по умолчанию. Если вы заменяете его, запуск также начинается без [снимка состояния git](/docs/ru/settings-reference#includegitinstructions).

411 411 

412<h3 id="continue-conversations">412<h3 id="continue-conversations">

413 Продолжение диалогов413 Продолжение диалогов

hipaa-setup.md +1 −0

Details

228| `--cloud`, `/teleport` и [Remote Control](/docs/ru/remote-control) отклоняются | [Облачные сессии](/docs/ru/claude-code-on-the-web) и Remote Control отключены |228| `--cloud`, `/teleport` и [Remote Control](/docs/ru/remote-control) отклоняются | [Облачные сессии](/docs/ru/claude-code-on-the-web) и Remote Control отключены |

229| `/feedback` и `/bug` недоступны | Отправка отзывов отключена |229| `/feedback` и `/bug` недоступны | Отправка отзывов отключена |

230| Claude не может опубликовать [артефакт](/docs/ru/artifacts) | Публикация артефактов отключена |230| Claude не может опубликовать [артефакт](/docs/ru/artifacts) | Публикация артефактов отключена |

231| Инструменты MCP загружаются в контекст заранее | [MCP Tool Search](/docs/ru/mcp#configure-tool-search) отключён. Ни `ENABLE_TOOL_SEARCH`, ни управляемые настройки не включают его снова |

231| MCP-сервер или хук, который читает `ANTHROPIC_API_KEY`, перестаёт проходить аутентификацию | Claude Code [удаляет учётные данные Anthropic](#anthropic-credentials-in-commands-hooks-and-mcp-servers) из запускаемых им процессов |232| MCP-сервер или хук, который читает `ANTHROPIC_API_KEY`, перестаёт проходить аутентификацию | Claude Code [удаляет учётные данные Anthropic](#anthropic-credentials-in-commands-hooks-and-mcp-servers) из запускаемых им процессов |

232| Ограничения сохраняются после `/login` в другую организацию | Статус HIPAA действует до перезапуска Claude Code |233| Ограничения сохраняются после `/login` в другую организацию | Статус HIPAA действует до перезапуска Claude Code |

233 234 

hooks.md +462 −436

Details

827 827 

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

829 829 

830* **Успех**: ваш хук завершается с кодом 0. Claude Code применяет все поля [вывода JSON](#json-output), которые вывел ваш хук, и действие выполняется, если эти поля не блокируют и не отклоняют его.830* **Успех**: ваш хук завершается с кодом 0. Claude Code применяет все поля [вывода JSON](#json-output), которые вывел ваш хук, и действие выполняется, если эти поля не блокируют и не отклоняют его. Исключение описано в разделе [Хуки, запускающие фоновый процесс](#hooks-that-start-a-background-process).

831* **Блокирующая ошибка**: ваш хук завершается с кодом 2. Для [событий, которые могут блокировать](#exit-code-2-behavior-per-event), Claude Code останавливает действие.831* **Блокирующая ошибка**: ваш хук завершается с кодом 2. Для [событий, которые могут блокировать](#exit-code-2-behavior-per-event), Claude Code останавливает действие.

832* **Неблокирующая ошибка**: ваш хук завершается с любым другим кодом или завершается сбоем иным образом, например не запускается или выводит некорректный JSON. Действие выполняется, а для таких событий, как `PreToolUse`, в транскрипте отображается уведомление `<hook name> hook error`. Если вы хотите, чтобы хук, завершившийся сбоем, блокировал действие, установите [`onFailure: "block"`](#block-the-action-when-a-hook-fails).832* **Неблокирующая ошибка**: ваш хук завершается с любым другим кодом или завершается сбоем иным образом, например не запускается или выводит некорректный JSON. Действие выполняется, а для таких событий, как `PreToolUse`, в транскрипте отображается уведомление `<hook name> hook error`. Если вы хотите, чтобы хук, завершившийся сбоем, блокировал действие, установите [`onFailure: "block"`](#block-the-action-when-a-hook-fails).

833 833 


932* Хук `command`, `http` или `mcp_tool`, превысивший таймаут, не блокирует вызов инструмента. Вызов продолжается через обычный [процесс разрешений](/docs/ru/permissions), поэтому не рассчитывайте, что зависший хук сработает как защитный барьер. Чтобы блокировать вызов при превышении таймаута хуком `command` или `http`, установите [`onFailure: "block"`](#block-the-action-when-a-hook-fails).932* Хук `command`, `http` или `mcp_tool`, превысивший таймаут, не блокирует вызов инструмента. Вызов продолжается через обычный [процесс разрешений](/docs/ru/permissions), поэтому не рассчитывайте, что зависший хук сработает как защитный барьер. Чтобы блокировать вызов при превышении таймаута хуком `command` или `http`, установите [`onFailure: "block"`](#block-the-action-when-a-hook-fails).

933* [Callback-хук Agent SDK](/docs/ru/agent-sdk/hooks), превысивший свой таймаут, [блокирует вызов инструмента](#pretooluse).933* [Callback-хук Agent SDK](/docs/ru/agent-sdk/hooks), превысивший свой таймаут, [блокирует вызов инструмента](#pretooluse).

934 934 

935<h4 id="hooks-that-start-a-background-process">

936 Хуки, запускающие фоновый процесс

937</h4>

938 

939Если ваш командный хук принимает решение в фоновом процессе и завершается, то отказ, который этот процесс выводит после того, как Claude Code перестал читать вывод, не блокирует вызов инструмента. Для хука, который не является [асинхронным](#run-hooks-in-the-background), Claude Code заканчивает чтение вывода хука вскоре после завершения собственного процесса хука.

940 

941Выводите решение до запуска фонового процесса и перенаправляйте stdout и stderr этого процесса. Если ваш скрипт выводит разрешение, а затем запускает фоновый процесс, не перенаправив его stdout и stderr, Claude Code блокирует вызов инструмента. Ошибка хука содержит `refusing to honor the suspect capture`.

942 

943Этот скрипт хука `PreToolUse` выводит решение с помощью `policy-check.sh`, а затем загружает метрики в фоновом режиме:

944 

945```bash theme={null}

946#!/bin/bash

947"$CLAUDE_PROJECT_DIR"/.claude/hooks/policy-check.sh || exit $?

948"$CLAUDE_PROJECT_DIR"/.claude/hooks/upload-metrics.sh >/dev/null 2>&1 &

949```

950 

951Остальная часть скрипта делает следующее:

952 

953* **`|| exit $?`**: делает код выхода проверки собственным кодом выхода хука, поэтому проверка, завершающаяся с кодом 2 для отказа, по-прежнему блокирует. Иначе хук завершается с кодом последней строки, то есть 0.

954* **`>/dev/null 2>&1 &`**: запускает `upload-metrics.sh` в фоновом режиме с перенаправленным выводом, чтобы он не удерживал вывод хука открытым.

955 

956Чтобы проверить скрипт, сделайте так, чтобы `policy-check.sh` завершался с кодом 2, а затем вызовите инструмент, которому соответствует хук. Вызов инструмента будет заблокирован.

957 

935<h4 id="block-the-action-when-a-hook-fails">958<h4 id="block-the-action-when-a-hook-fails">

936 Блокировка действия при сбое хука959 Блокировка действия при сбое хука

937</h4>960</h4>


1245 События хуков1268 События хуков

1246</h2>1269</h2>

1247 1270 

1248Каждое событие соответствует точке жизненного цикла Claude Code, в которой могут выполняться хуки. Разделы ниже упорядочены в соответствии с жизненным циклом: от настройки сессии через агентный цикл до завершения сессии. В каждом разделе описано, когда срабатывает событие, какие значения matcher оно поддерживает, какие входные данные JSON получает и как управлять поведением через вывод.1271Каждое событие соответствует точке в жизненном цикле Claude Code, в которой могут выполняться хуки. Разделы ниже упорядочены в соответствии с жизненным циклом: от настройки сессии через агентный цикл до завершения сессии. В каждом разделе описано, когда срабатывает событие, какие значения matcher оно поддерживает, какие входные данные JSON получает и как управлять поведением через вывод.

1249 1272 

1250<h3 id="sessionstart">1273<h3 id="sessionstart">

1251 SessionStart1274 SessionStart

1252</h3>1275</h3>

1253 1276 

1254Выполняется, когда Claude Code начинает новую сессию или возобновляет существующую. Полезно для загрузки контекста разработки, например существующих задач или недавних изменений в вашей кодовой базе, или для настройки переменных окружения. Для статического контекста, которому не требуется скрипт, используйте вместо этого [CLAUDE.md](/docs/ru/memory).1277Выполняется, когда Claude Code начинает новую сессию или возобновляет существующую. Полезно для загрузки контекста разработки, например существующих issues или недавних изменений в вашей кодовой базе, или для настройки переменных окружения. Для статического контекста, который не требует скрипта, используйте вместо этого [CLAUDE.md](/docs/ru/memory).

1255 1278 

1256SessionStart выполняется в каждой сессии, поэтому такие хуки должны работать быстро. Поддерживаются только хуки `type: "command"` и `type: "mcp_tool"`. О том, когда выполняются хуки `mcp_tool`, см. [Поля хуков инструментов MCP](#mcp-tool-hook-fields).1279SessionStart выполняется в каждой сессии, поэтому такие хуки должны работать быстро. Поддерживаются только хуки `type: "command"` и `type: "mcp_tool"`. О том, когда выполняются хуки `mcp_tool`, см. [Поля хука MCP-инструмента](#mcp-tool-hook-fields).

1257 1280 

1258Значение matcher соответствует тому, как была запущена сессия:1281Значение matcher соответствует тому, как была запущена сессия:

1259 1282 


1265| `compact` | Автоматическое или ручное сжатие контекста |1288| `compact` | Автоматическое или ручное сжатие контекста |

1266| `fork` | Новая сессия, ответвлённая от существующей: `--fork-session` вместе с `--resume` или `--continue`, фоновая копия `/fork`, `/branch` или диалог, который вы [переводите в фон](/docs/ru/agent-view#from-inside-a-session) |1289| `fork` | Новая сессия, ответвлённая от существующей: `--fork-session` вместе с `--resume` или `--continue`, фоновая копия `/fork`, `/branch` или диалог, который вы [переводите в фон](/docs/ru/agent-view#from-inside-a-session) |

1267 1290 

1268До версии v2.1.214 ответвлённые сессии сообщали источник `"resume"`.1291До v2.1.214 ответвлённые сессии сообщали источник `"resume"`.

1269 1292 

1270Когда вы запускаете интерактивную сессию, возобновляете диалог при запуске с помощью `--continue` или `--resume` или выполняете `/clear`, хуки SessionStart выполняются в фоне. Вы можете сразу начать печатать, а возобновлённый диалог появляется, не дожидаясь хуков. Первый ответ Claude всё равно ждёт завершения хуков, чтобы их контекст дошёл до Claude.1293Когда вы начинаете интерактивную сессию, возобновляете диалог при запуске с `--continue` или `--resume` или выполняете `/clear`, хуки SessionStart выполняются в фоне. Вы можете сразу начать вводить текст, а возобновлённый диалог появляется, не дожидаясь хуков. Первый ответ Claude всё равно ждёт завершения хуков, чтобы их контекст дошёл до Claude.

1271 1294 

1272Когда вы переключаетесь между диалогами с помощью `/resume` внутри сессии, переключение, наоборот, ждёт завершения хуков. Если вы выполните `/clear` или переключитесь на другой диалог, пока фоновые хуки ещё выполняются, ничего из того, что они вернут, не применяется к сессии.1295Когда вы переключаете диалоги с помощью `/resume` внутри сессии, переключение, напротив, ждёт завершения хуков. Если вы выполните `/clear` или переключитесь на другой диалог, пока фоновые хуки ещё выполняются, ничто из того, что они вернут, не применится к сессии.

1273 1296 

1274То же ожидание действует и при запуске, включая возобновлённую сессию: промпт, отправленный, пока хуки SessionStart ещё выполняются, не дойдёт до Claude, пока они не завершатся.1297То же ожидание действует и при запуске, включая возобновлённую сессию: промпт, который вы отправляете, пока хуки SessionStart ещё выполняются, не дойдёт до Claude, пока они не завершатся.

1275 1298 

1276Во время любого из этих ожиданий нажмите `Esc`, чтобы вернуть промпт в поле ввода, не отправляя его. Хуки продолжают выполняться.1299Во время любого из этих ожиданий нажмите `Esc`, чтобы вернуть промпт в поле ввода, не отправляя его. Хуки продолжат выполняться.

1277 1300 

1278<h4 id="sessionstart-input">1301<h4 id="sessionstart-input">

1279 Входные данные SessionStart1302 Входные данные SessionStart


1284| Поле | Описание |1307| Поле | Описание |

1285| :- | :- |1308| :- | :- |

1286| `source` | Как началась сессия: `"startup"` для новых сессий, `"resume"` для возобновлённых сессий, `"clear"` после `/clear`, `"compact"` после сжатия контекста или `"fork"` для новой сессии, ответвлённой от существующей |1309| `source` | Как началась сессия: `"startup"` для новых сессий, `"resume"` для возобновлённых сессий, `"clear"` после `/clear`, `"compact"` после сжатия контекста или `"fork"` для новой сессии, ответвлённой от существующей |

1287| `model` | Идентификатор активной модели. Может отсутствовать, например после `/clear` или когда сессия восстановлена через восстановление диалога, поэтому проверяйте наличие поля перед его чтением |1310| `model` | Идентификатор активной модели. Может отсутствовать, например после `/clear` или когда сессия восстанавливается через восстановление диалога, поэтому проверяйте наличие поля перед чтением |

1288| `agent_type` | Имя агента; присутствует, когда вы запускаете Claude Code с `claude --agent <name>` |1311| `agent_type` | Имя агента; присутствует, когда вы запускаете Claude Code с `claude --agent <name>` |

1289| `session_title` | Пользовательское название сессии; присутствует, если оно задано, например через `--name`, `/rename`, вывод `sessionTitle` хука или `renameSession()` в Agent SDK. Хук, который выдаёт `sessionTitle`, может сначала проверить это поле, чтобы не перезаписать существующее пользовательское название |1312| `session_title` | Пользовательское название сессии; присутствует, когда оно задано, например с помощью `--name`, `/rename`, вывода `sessionTitle` хука или `renameSession()` в Agent SDK. Хук, который выводит `sessionTitle`, может сначала проверить это поле, чтобы не перезаписать существующее пользовательское название |

1290 1313 

1291У сессии, которой вы не дали имя, всё равно может быть [сгенерированное название](/docs/ru/sessions#name-your-sessions). Такое название не является пользовательским и не появляется в `session_title`.1314Сессия, которой вы не дали имя, всё равно может иметь [сгенерированное название](/docs/ru/sessions#name-your-sessions). Такое название не является пользовательским и не появляется в `session_title`.

1292 1315 

1293Когда `source` равен `"resume"` или `"fork"` и транскрипт содержит хотя бы один ответ Claude, хуки SessionStart также получают четыре поля, перечисленные ниже. Ваш хук может использовать их, чтобы до первого запроса сообщить, во что обойдётся возобновление устаревшего диалога, например в [`systemMessage`](#json-output). Для этих полей требуется Claude Code v2.1.251 или новее.1316Когда `source` равен `"resume"` или `"fork"` и транскрипт содержит хотя бы один ответ Claude, хуки SessionStart также получают четыре поля ниже. Ваш хук может использовать их, чтобы до первого запроса сообщить, во что обойдётся возобновление устаревшего диалога, например в [`systemMessage`](#json-output). Для этих полей требуется Claude Code v2.1.251 или новее.

1294 1317 

1295| Поле | Описание |1318| Поле | Описание |

1296| :- | :- |1319| :- | :- |

1297| `seconds_since_last_response` | Реальное время в секундах с момента последнего ответа в возобновлённом транскрипте |1320| `seconds_since_last_response` | Реальное время в секундах с момента последнего ответа в возобновлённом транскрипте |

1298| `context_tokens` | Токены, которые первый запрос возобновлённой сессии повторно отправляет в качестве промпта |1321| `context_tokens` | Токены, которые первый запрос возобновлённой сессии повторно отправляет в качестве промпта |

1299| `prompt_cache_likely_expired` | `true`, когда последний ответ старше [срока жизни кэша промптов](/docs/ru/prompt-caching#cache-lifetime) сессии или когда последующее сжатие контекста заменило кэшированный диалог |1322| `prompt_cache_likely_expired` | `true`, когда последний ответ старше [времени жизни кэша промптов](/docs/ru/prompt-caching#cache-lifetime) сессии или когда последующее сжатие контекста заменило кэшированный диалог |

1300| `estimated_cache_write_usd` | Оценочная стоимость в долларах США записи `context_tokens` в кэш промптов на модели сессии, без учёта ответа |1323| `estimated_cache_write_usd` | Оценочная стоимость в долларах США записи `context_tokens` в кэш промптов на модели сессии, без учёта ответа |

1301 1324 

1302В этом примере показаны входные данные для сессии, возобновлённой через 90 минут после её последнего ответа:1325В этом примере показаны входные данные для сессии, возобновлённой через 90 минут после её последнего ответа:


1320 Управление решениями SessionStart1343 Управление решениями SessionStart

1321</h4>1344</h4>

1322 1345 

1323Хук SessionStart может добавлять контекст для Claude, задавать первое сообщение пользователя, устанавливать название сессии, отслеживать файлы и перезагружать скиллы. Для каждого из этих действий верните соответствующее поле в дополнение к [полям вывода JSON](#json-output), доступным всем хукам:1346Хук SessionStart может добавить контекст для Claude, задать первое сообщение пользователя, задать название сессии, отслеживать файлы и перезагружать скиллы. Для каждого из этих действий верните соответствующее поле в дополнение к [полям вывода JSON](#json-output), доступным всем хукам:

1324 1347 

1325| Поле | Описание |1348| Поле | Описание |

1326| :- | :- |1349| :- | :- |

1327| `additionalContext` | Строка, добавляемая в контекст Claude в начале диалога, до первого промпта. О том, как доставляется текст и что в него помещать, см. [Добавление контекста для Claude](#add-context-for-claude) |1350| `additionalContext` | Строка, добавляемая в контекст Claude в начале диалога, перед первым промптом. О том, как доставляется текст и что в него включать, см. [Добавление контекста для Claude](#add-context-for-claude) |

1328| `initialUserMessage` | Строка, используемая как первое сообщение пользователя в сессии в [неинтерактивном режиме](/docs/ru/headless) с флагом `-p`. Она становится первым ходом, даже если вы не передаёте промпт. Переданный вами промпт следует за ней как следующий ход |1351| `initialUserMessage` | Строка, используемая как первое сообщение пользователя в сессии в [неинтерактивном режиме](/docs/ru/headless) с флагом `-p`. Она становится первым ходом, даже если вы не передаёте промпт. Переданный вами промпт следует следующим ходом |

1329| `sessionTitle` | Устанавливает название сессии с тем же эффектом, что и `/rename`. Применяется, когда `source` равно `"startup"`, `"resume"` или `"fork"` |1352| `sessionTitle` | Задаёт название сессии с тем же эффектом, что и `/rename`. Применяется, когда `source` равен `"startup"`, `"resume"` или `"fork"` |

1330| `watchPaths` | Массив абсолютных путей для отслеживания событий [FileChanged](#filechanged) во время этой сессии |1353| `watchPaths` | Массив абсолютных путей для отслеживания событий [FileChanged](#filechanged) в этой сессии |

1331| `reloadSkills` | Логическое значение. Если `true`, Claude Code повторно сканирует каталоги [скиллов](/docs/ru/skills) и команд после завершения хуков SessionStart. См. [Перезагрузка скиллов, устанавливаемых хуком](#reload-skills-that-a-hook-installs) |1354| `reloadSkills` | Логическое значение. Если `true`, Claude Code повторно сканирует каталоги [скиллов](/docs/ru/skills) и команд после завершения хуков SessionStart. См. [Перезагрузка скиллов, которые устанавливает хук](#reload-skills-that-a-hook-installs) |

1332 1355 

1333Этот вывод добавляет контекст и даёт сессии название:1356Этот вывод добавляет контекст и даёт сессии имя:

1334 1357 

1335```json theme={null}1358```json theme={null}

1336{1359{


1342}1365}

1343```1366```

1344 1367 

1345Хук, который только добавляет контекст, может просто вывести его без формирования JSON, поскольку Claude Code добавляет [обычный текстовый stdout](#exit-code-0) хука SessionStart в контекст Claude.1368Хук, который только добавляет контекст, может просто напечатать его, не формируя JSON, поскольку Claude Code добавляет [обычный текстовый stdout](#exit-code-0) хука SessionStart в контекст Claude.

1346 1369 

1347Если хук SessionStart вашего плагина предоставляет `initialUserMessage` или `sessionTitle`, установите плагин до начала сессии. Claude Code игнорирует оба поля от плагина, установка которого завершается после того, как хуки SessionStart уже отработали.1370Если хук SessionStart вашего плагина задаёт `initialUserMessage` или `sessionTitle`, установите плагин до начала сессии. Claude Code игнорирует оба поля от плагина, установка которого завершается после того, как хуки SessionStart уже выполнились.

1348 1371 

1349<h4 id="reload-skills-that-a-hook-installs">1372<h4 id="reload-skills-that-a-hook-installs">

1350 Перезагрузка скиллов, устанавливаемых хуком1373 Перезагрузка скиллов, которые устанавливает хук

1351</h4>1374</h4>

1352 1375 

1353Чтобы скиллы, устанавливаемые хуком SessionStart, стали доступны в той же сессии, верните `reloadSkills`. Обнаружение скиллов обычно выполняется до завершения хуков SessionStart, поэтому без этого поля файлы, которые хук записывает в `~/.claude/skills/` или `.claude/skills/`, могут отсутствовать при выполнении первого промпта.1376Чтобы скиллы, которые устанавливает хук SessionStart, стали доступны в той же сессии, верните `reloadSkills`. Обнаружение скиллов обычно выполняется до завершения хуков SessionStart, поэтому без этого поля файлы, которые хук записывает в `~/.claude/skills/` или `.claude/skills/`, могут отсутствовать при выполнении первого промпта.

1354 1377 

1355В этом примере синхронизируется общий репозиторий скиллов и запрашивается повторное сканирование:1378Этот пример синхронизирует общий репозиторий скиллов и запрашивает повторное сканирование:

1356 1379 

1357```bash theme={null}1380```bash theme={null}

1358#!/bin/bash1381#!/bin/bash


1363echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'1386echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

1364```1387```

1365 1388 

1366URL репозитория — это заглушка. Замените его адресом вашего собственного репозитория скиллов.1389URL репозитория — это заглушка. Замените его на свой репозиторий скиллов.

1367 1390 

1368<h4 id="persist-environment-variables">1391<h4 id="persist-environment-variables">

1369 Сохранение переменных окружения1392 Сохранение переменных окружения

1370</h4>1393</h4>

1371 1394 

1372Хуки SessionStart имеют доступ к переменной окружения `CLAUDE_ENV_FILE`, которая предоставляет путь к файлу, где можно сохранить переменные окружения для shell-команд, которые Claude выполняет позже в сессии.1395Хуки SessionStart имеют доступ к переменной окружения `CLAUDE_ENV_FILE`, которая указывает путь к файлу, где можно сохранить переменные окружения для shell-команд, которые Claude выполняет позже в сессии.

1373 1396 

1374Чтобы задать отдельные переменные окружения, запишите инструкции `export` в `CLAUDE_ENV_FILE`. Используйте добавление (`>>`), чтобы сохранить переменные, заданные другими хуками:1397Чтобы задать отдельные переменные окружения, запишите операторы `export` в `CLAUDE_ENV_FILE`. Используйте дозапись (`>>`), чтобы сохранить переменные, заданные другими хуками:

1375 1398 

1376```bash theme={null}1399```bash theme={null}

1377#!/bin/bash1400#!/bin/bash


1385exit 01408exit 0

1386```1409```

1387 1410 

1388Чтобы зафиксировать все изменения окружения, внесённые командами настройки, сравните экспортированные переменные до и после:1411Чтобы зафиксировать все изменения окружения от команд настройки, сравните экспортированные переменные до и после:

1389 1412 

1390```bash theme={null}1413```bash theme={null}

1391#!/bin/bash1414#!/bin/bash


1412 Сохранённые переменные в командах PowerShell1435 Сохранённые переменные в командах PowerShell

1413</h5>1436</h5>

1414 1437 

1415Команды [PowerShell](/docs/ru/tools-reference#powershell-tool) тоже получают переменные из `CLAUDE_ENV_FILE` в Claude Code v2.1.296 или новее, но PowerShell никогда не выполняет этот файл. Вместо этого Claude Code считывает из него присваивания и копирует их в окружение команды PowerShell. Это происходит, только если каждая строка относится к одному из следующих видов — во всём, что записали все хуки в этой сессии, и в любом скрипте, на который вы [указали `CLAUDE_ENV_FILE`](/docs/ru/env-vars) перед запуском:1438Команды [PowerShell](/docs/ru/tools-reference#powershell-tool) тоже получают переменные из `CLAUDE_ENV_FILE` в Claude Code v2.1.296 или новее, но PowerShell никогда не выполняет этот файл. Вместо этого Claude Code считывает из него присваивания и копирует их в окружение команды PowerShell. Это происходит, только если каждая строка относится к одному из следующих видов — во всём, что записали все хуки в этой сессии, и в любом скрипте, на который вы [установили `CLAUDE_ENV_FILE`](/docs/ru/env-vars) до запуска:

1416 1439 

1417* Пустая строка или комментарий `#`1440* Пустая строка или комментарий `#`

1418* Одно присваивание в начале строки в форме `export NAME=value`, `declare -x NAME=value` или `NAME=value` со значением, которое Bash использовал бы ровно в том виде, как оно написано, состоящим из любого сочетания следующих частей: текст без кавычек, содержащий только буквы, цифры и символы `_ @ % + = : , . / -`, текст в одинарных кавычках и текст в двойных кавычках, где любые `$`, обратная кавычка или `"` внутри экранированы обратной косой чертой1441* Одно присваивание в начале строки, записанное как `export NAME=value`, `declare -x NAME=value` или `NAME=value`, со значением, которое Bash использовал бы в точности как написано, составленным из любого сочетания следующих частей: текст без кавычек, использующий только буквы, цифры и символы `_ @ % + = : , . / -`, текст в одинарных кавычках и текст в двойных кавычках, где любые `$`, обратная кавычка или `"` внутри экранированы обратной косой чертой

1419 1442 

1420Если какая-либо строка другого вида, например `export PATH="$PATH:./node_modules/.bin"` с неэкранированным `$PATH`, команда `source` или строки `$'...'`, которые выводит `direnv export bash`, команды PowerShell не получают ни одной переменной, а `claude --debug` записывает в лог `Session environment is not all plain assignments`. Команды Bash по-прежнему получают их все. В Windows команды PowerShell также не получают переменную, значение которой содержит `/` или `\`, потому что Git Bash и Windows записывают пути по-разному. Команда PowerShell, [изолированная в песочнице](/docs/ru/sandboxing), не получает ни одной переменной.1443Если какая-либо строка имеет другой вид, например `export PATH="$PATH:./node_modules/.bin"` с неэкранированным `$PATH`, команда `source` или строки `$'...'`, которые печатает `direnv export bash`, команды PowerShell не получают ни одной переменной, а `claude --debug` записывает в лог `Session environment is not all plain assignments`. Команды Bash по-прежнему получают их все. В Windows команды PowerShell также не получают переменную, значение которой содержит `/` или `\`, поскольку Git Bash и Windows записывают пути по-разному. Команда PowerShell, выполняемая [в песочнице](/docs/ru/sandboxing), не получает ни одной переменной.

1421 1444 

1422<Note>1445<Note>

1423 `CLAUDE_ENV_FILE` доступна для хуков SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged) и [FileChanged](#filechanged). Другие события хуков не имеют доступа к этой переменной, как и хук, который выполняется в PowerShell — через [`"shell": "powershell"`](#command-hook-fields) или по умолчанию в Windows без Git Bash.1446 `CLAUDE_ENV_FILE` доступна для хуков SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged) и [FileChanged](#filechanged). Другие события хуков не имеют доступа к этой переменной, как и хук, выполняемый в PowerShell, будь то через [`"shell": "powershell"`](#command-hook-fields) или по умолчанию в Windows без Git Bash.

1424</Note>1447</Note>

1425 1448 

1426<h3 id="setup">1449<h3 id="setup">

1427 Setup1450 Setup

1428</h3>1451</h3>

1429 1452 

1430Срабатывает только при запуске Claude Code с `--init-only` либо с `--init` или `--maintenance` в [неинтерактивном режиме](/docs/ru/headless) с флагом `-p`. При обычном запуске не срабатывает. Используйте его для одноразовой установки зависимостей или плановой очистки, которую вы явно запускаете из CI или скриптов, отдельно от обычного запуска сессии. Для инициализации на уровне каждой сессии используйте вместо этого [SessionStart](#sessionstart).1453Срабатывает, только когда вы запускаете Claude Code с `--init-only` либо с `--init` или `--maintenance` в [неинтерактивном режиме](/docs/ru/headless) с флагом `-p`. При обычном запуске не срабатывает. Используйте его для однократной установки зависимостей или плановой очистки, которую вы явно запускаете из CI или скриптов, отдельно от обычного начала сессии. Для инициализации на уровне каждой сессии используйте вместо этого [SessionStart](#sessionstart).

1431 1454 

1432Значение matcher соответствует флагу CLI, который вызвал хук:1455Значение matcher соответствует флагу CLI, который запустил хук:

1433 1456 

1434| Matcher | Когда срабатывает |1457| Matcher | Когда срабатывает |

1435| :- | :- |1458| :- | :- |


1438 1461 

1439Когда вы выполняете `claude --init-only`, Claude Code запускает хуки Setup и хуки `SessionStart` с matcher `startup`, а затем завершает работу, не начиная диалог.1462Когда вы выполняете `claude --init-only`, Claude Code запускает хуки Setup и хуки `SessionStart` с matcher `startup`, а затем завершает работу, не начиная диалог.

1440 1463 

1441Когда вы начинаете или продолжаете диалог с `-p`, нужно также передать промпт — в качестве аргумента или через stdin. Промпт можно не передавать, если хук `SessionStart` предоставляет [`initialUserMessage`](#sessionstart-decision-control) или если вы возобновляете сессию с [отложенным вызовом инструмента](#defer-a-tool-call-for-later).1464Когда вы начинаете или продолжаете диалог с `-p`, необходимо также передать промпт — как аргумент или через stdin. Промпт можно не передавать, если хук `SessionStart` задаёт [`initialUserMessage`](#sessionstart-decision-control) или если вы возобновляете сессию с [отложенным вызовом инструмента](#defer-a-tool-call-for-later).

1442 1465 

1443При успешном выполнении `--init-only` ничего не выводит в терминал. Чтобы убедиться, что хуки выполнились, запустите `claude --debug-file <path> --init-only`, заменив `<path>` на расположение файла лога, и проверьте в логе записи хуков Setup и SessionStart.1466При успешном выполнении `--init-only` ничего не выводит в терминал. Чтобы убедиться, что хуки выполнились, запустите `claude --debug-file <path> --init-only`, заменив `<path>` расположением файла лога, и проверьте в логе записи хуков Setup и SessionStart.

1444 1467 

1445Поскольку Setup срабатывает не при каждом запуске, плагин, которому нужна установленная зависимость, не может полагаться только на Setup. Практичный подход — проверять наличие зависимости при первом использовании и устанавливать её при отсутствии, например хуком или скиллом, который проверяет наличие `${CLAUDE_PLUGIN_DATA}/node_modules` и выполняет `npm install`, если его нет. О том, где хранить установленные зависимости, см. [постоянный каталог данных](/docs/ru/plugins/components#path-variables-and-persistent-data). Если вы распространяете плагин через маркетплейс, этот подход может не понадобиться: Claude Code [автоматически устанавливает подходящие зависимости пакетов Node.js](/docs/ru/plugins/loading#node-js-package-dependencies) при кэшировании плагина.1468Поскольку Setup срабатывает не при каждом запуске, плагин, которому нужна установленная зависимость, не может полагаться только на Setup. Практичный подход — проверять наличие зависимости при первом использовании и устанавливать её при отсутствии, например хук или скилл, который проверяет наличие `${CLAUDE_PLUGIN_DATA}/node_modules` и выполняет `npm install`, если её нет. О том, где хранить установленные зависимости, см. [каталог постоянных данных](/docs/ru/plugins/components#path-variables-and-persistent-data). Если вы распространяете плагин через маркетплейс, этот подход может не понадобиться: Claude Code [автоматически устанавливает подходящие зависимости пакетов Node.js](/docs/ru/plugins/loading#node-js-package-dependencies) при кэшировании плагина.

1446 1469 

1447<h4 id="setup-input">1470<h4 id="setup-input">

1448 Входные данные Setup1471 Входные данные Setup


1464 Управление решениями Setup1487 Управление решениями Setup

1465</h4>1488</h4>

1466 1489 

1467Хуки Setup не могут блокировать; выполнение продолжается при любом коде выхода. При любом коде выхода Claude Code отбрасывает [поля вывода JSON](#json-output) хука Setup, такие как `systemMessage`, `continue` и `hookSpecificOutput.additionalContext`. С `-p` stdout, stderr и код выхода хука Setup появляются в выводе запуска только как [события `hook_response`](/docs/ru/headless#read-session-metadata), когда вы запускаете с `--output-format stream-json --verbose`.1490Хуки Setup не могут блокировать; выполнение продолжается при любом коде выхода. При любом коде выхода Claude Code отбрасывает [поля вывода JSON](#json-output) хука Setup, такие как `systemMessage`, `continue` и `hookSpecificOutput.additionalContext`. С `-p` stdout, stderr и код выхода хука Setup появляются в выводе запуска только как [события `hook_response`](/docs/ru/headless#read-session-metadata), если вы запускаете с `--output-format stream-json --verbose`.

1468 1491 

1469Хуки Setup имеют доступ к `CLAUDE_ENV_FILE`. Переменные, записанные в этот файл, сохраняются для последующих команд Bash в сессии, как и в [хуках SessionStart](#persist-environment-variables). Для `Setup` выполняются только хуки `type: "command"`. Хук `type: "mcp_tool"` для `Setup` всегда пропускается, как описано в разделе [Поля хуков инструментов MCP](#mcp-tool-hook-fields).1492Хуки Setup имеют доступ к `CLAUDE_ENV_FILE`. Переменные, записанные в этот файл, сохраняются для последующих команд Bash в сессии, как в [хуках SessionStart](#persist-environment-variables). На `Setup` выполняются только хуки `type: "command"`. Хук `type: "mcp_tool"` на `Setup` всегда пропускается, как описано в разделе [Поля хука MCP-инструмента](#mcp-tool-hook-fields).

1470 1493 

1471<h3 id="instructionsloaded">1494<h3 id="instructionsloaded">

1472 InstructionsLoaded1495 InstructionsLoaded

1473</h3>1496</h3>

1474 1497 

1475Срабатывает, когда файл `CLAUDE.md` или `.claude/rules/*.md` загружается в контекст. Это событие срабатывает при запуске сессии для файлов, загружаемых сразу, и повторно позже, когда файлы загружаются отложенно, например когда Claude обращается к подкаталогу, содержащему вложенный `CLAUDE.md`, или когда срабатывают условные правила с frontmatter `paths:`. Хук не поддерживает блокировку или управление решениями. Он выполняется асинхронно в целях наблюдаемости.1498Срабатывает, когда файл `CLAUDE.md` или `.claude/rules/*.md` загружается в контекст. Это событие срабатывает в начале сессии для файлов, загружаемых сразу, и позже при отложенной загрузке файлов, например когда Claude обращается к подкаталогу, содержащему вложенный `CLAUDE.md`, или когда срабатывают условные правила с frontmatter `paths:`. Хук не поддерживает блокировку или управление решениями. Он выполняется асинхронно для целей наблюдаемости.

1476 1499 

1477Это событие не срабатывает, когда Claude [читает `AGENTS.md` напрямую](/docs/ru/memory#agents-md) через настройку **Project instructions**. Оно срабатывает, когда `CLAUDE.md` импортирует ваш `AGENTS.md` — с `load_reason`, равным `include`, как и для любого другого импортируемого файла, — а также когда `CLAUDE.md` является символической ссылкой на него, как при обычной загрузке `CLAUDE.md`.1500Это событие не срабатывает, когда Claude [читает `AGENTS.md` напрямую](/docs/ru/memory#agents-md) через настройку **Project instructions**. Оно срабатывает, когда `CLAUDE.md` импортирует ваш `AGENTS.md` — с `load_reason`, равным `include`, как для любого другого импортированного файла, — и когда `CLAUDE.md` является символической ссылкой на него — как обычная загрузка `CLAUDE.md`.

1478 1501 

1479Matcher сопоставляется с `load_reason`. Например, используйте `"matcher": "session_start"`, чтобы срабатывать только для файлов, загруженных при запуске сессии, или `"matcher": "path_glob_match|nested_traversal"`, чтобы срабатывать только при отложенной загрузке.1502Matcher сопоставляется с `load_reason`. Например, используйте `"matcher": "session_start"`, чтобы срабатывать только для файлов, загружаемых в начале сессии, или `"matcher": "path_glob_match|nested_traversal"`, чтобы срабатывать только при отложенных загрузках.

1480 1503 

1481<h4 id="instructionsloaded-input">1504<h4 id="instructionsloaded-input">

1482 Входные данные InstructionsLoaded1505 Входные данные InstructionsLoaded


1488| :- | :- |1511| :- | :- |

1489| `file_path` | Абсолютный путь к загруженному файлу инструкций |1512| `file_path` | Абсолютный путь к загруженному файлу инструкций |

1490| `memory_type` | Область действия файла: `"User"`, `"Project"`, `"Local"` или `"Managed"` |1513| `memory_type` | Область действия файла: `"User"`, `"Project"`, `"Local"` или `"Managed"` |

1491| `load_reason` | Почему файл был загружен: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"` или `"compact"`. Значение `"compact"` используется, когда файлы инструкций повторно загружаются после сжатия контекста |1514| `load_reason` | Почему файл был загружен: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"` или `"compact"`. Значение `"compact"` возникает, когда файлы инструкций повторно загружаются после сжатия контекста |

1492| `globs` | Glob-шаблоны путей из frontmatter `paths:` файла, если они есть. Присутствует только при загрузках `path_glob_match` |1515| `globs` | Glob-шаблоны путей из frontmatter `paths:` файла, если есть. Присутствует только для загрузок `path_glob_match` |

1493| `trigger_file_path` | Путь к файлу, обращение к которому вызвало эту загрузку, для отложенных загрузок |1516| `trigger_file_path` | Путь к файлу, обращение к которому вызвало эту загрузку, для отложенных загрузок |

1494| `parent_file_path` | Путь к родительскому файлу инструкций, который включил этот, для загрузок `include` |1517| `parent_file_path` | Путь к родительскому файлу инструкций, который включил этот файл, для загрузок `include` |

1495 1518 

1496```json theme={null}1519```json theme={null}

1497{1520{


1516</h3>1539</h3>

1517 1540 

1518Выполняется при отправке промпта, до того как Claude его обработает. Это позволяет1541Выполняется при отправке промпта, до того как Claude его обработает. Это позволяет

1519добавлять дополнительный контекст на основе промпта или диалога, проверять промпты или1542добавлять дополнительный контекст на основе промпта/диалога, проверять промпты или

1520блокировать определённые типы промптов.1543блокировать определённые типы промптов.

1521 1544 

1522Хуки `UserPromptSubmit` срабатывают не только на промпты, которые вы вводите. Claude Code также запускает их, когда:1545Хуки `UserPromptSubmit` срабатывают не только на промпты, которые вы вводите. Claude Code также запускает их, когда:

1523 1546 

1524* срабатывает [запланированная задача](/docs/ru/scheduled-tasks), включая итерацию `/loop`1547* Срабатывает [запланированная задача](/docs/ru/scheduled-tasks), включая итерацию `/loop`

1525* [фоновый субагент](/docs/ru/sub-agents#run-subagents-in-foreground-or-background) отчитывается перед сессией, которая его запустила1548* [Фоновый субагент](/docs/ru/sub-agents#run-subagents-in-foreground-or-background) отчитывается перед сессией, которая его запустила

1526* [другая сессия отправляет сообщение](/docs/ru/cross-session-messaging) в ваш основной диалог1549* [Другая сессия отправляет сообщение](/docs/ru/cross-session-messaging) в ваш основной диалог

1527 1550 

1528Хуки `UserPromptSubmit` имеют таймаут по умолчанию 30 секунд для типов `command`, `http` и `mcp_tool` — меньше, чем стандартные 600 секунд для этих типов в большинстве других событий. Поскольку этот хук выполняется перед каждым промптом и блокирует обработку моделью до своего завершения, зависший хук останавливает сессию. Если вашему хуку нужно больше времени, задайте поле `timeout` в записи хука.1551Хуки `UserPromptSubmit` имеют таймаут по умолчанию 30 секунд для типов `command`, `http` и `mcp_tool` — меньше, чем 600 секунд по умолчанию для этих типов в большинстве других событий. Поскольку этот хук выполняется перед каждым промптом и блокирует обработку моделью до своего завершения, зависший хук останавливает сессию. Если вашему хуку нужно больше времени, задайте поле `timeout` в записи хука.

1529 1552 

1530За исключением command-хука, запущенного с [`async: true`](#run-hooks-in-the-background), command-, HTTP- или MCP tool-хук `UserPromptSubmit`, достигший таймаута, отменяется, а его вывод, включая любой `additionalContext`, отбрасывается. Промпт всё равно доходит до Claude, но без этого контекста. Чтобы вместо этого заблокировать промпт, задайте [`onFailure: "block"`](#block-the-action-when-a-hook-fails) для command- или HTTP-хука. В транскрипте отображается уведомление с именем хука, сработавшим таймаутом и сообщением о том, что вывод был отброшен.1553За исключением командного хука, запускаемого с [`async: true`](#run-hooks-in-the-background), хук `UserPromptSubmit` типа command, HTTP или MCP-инструмент, достигший таймаута, отменяется, а его вывод, включая любой `additionalContext`, отбрасывается. Промпт всё равно доходит до Claude, но без этого контекста. Чтобы вместо этого заблокировать промпт, задайте [`onFailure: "block"`](#block-the-action-when-a-hook-fails) для командного или HTTP-хука. В транскрипте отображается уведомление с именем хука, сработавшим таймаутом и сообщением о том, что вывод был отброшен.

1531 1554 

1532[Хук обратного вызова Agent SDK](/docs/ru/agent-sdk/hooks) для `UserPromptSubmit`, достигший таймаута, блокирует промпт с сообщением, в котором названы хук и таймаут, поскольку обратный вызов в этом месте может выступать в роли шлюза политики, который не должен при сбое пропускать всё подряд. Сессия продолжается. До версии v2.1.208 таймаут обратного вызова для этого события завершал ход с ошибкой выполнения.1555[Callback-хук Agent SDK](/docs/ru/agent-sdk/hooks) на `UserPromptSubmit`, достигший таймаута, блокирует промпт с сообщением, в котором указаны хук и таймаут, поскольку callback в этом месте может выполнять роль контроля политики, который не должен при сбое пропускать всё. Сессия продолжается. До v2.1.208 таймаут callback на этом событии завершал ход с ошибкой выполнения.

1533 1556 

1534<h4 id="userpromptsubmit-input">1557<h4 id="userpromptsubmit-input">

1535 Входные данные UserPromptSubmit1558 Входные данные UserPromptSubmit

1536</h4>1559</h4>

1537 1560 

1538Помимо [общих входных полей](#common-input-fields), хуки UserPromptSubmit получают поле `prompt`, содержащее отправленный текст. Вставленное содержимое, свёрнутое в заполнитель `[Pasted text #N]`, поступает развёрнутым на своём месте. В сессиях, где Claude Code [помечает вставленный текст для Claude](/docs/ru/terminal-config#how-claude-treats-pasted-text), это развёрнутое содержимое находится между строкой `<pasted_content id="…">` и строкой `</pasted_content id="…">`, поэтому учитывайте эти строки, если ваш хук разбирает промпт.1561Помимо [общих входных полей](#common-input-fields), хуки UserPromptSubmit получают поле `prompt`, содержащее отправленный текст. Вставленное содержимое, свёрнутое в заглушку `[Pasted text #N]`, поступает развёрнутым на своём месте. В сессиях, где Claude Code [помечает вставленный текст для Claude](/docs/ru/terminal-config#how-claude-treats-pasted-text), это развёрнутое содержимое находится между строкой `<pasted_content id="…">` и строкой `</pasted_content id="…">`, поэтому учитывайте эти строки, если ваш хук разбирает промпт.

1539 1562 

1540Хуки UserPromptSubmit также получают `session_title`, когда у сессии есть пользовательское название, с тем же значением, что и у [поля `session_title` в SessionStart](#sessionstart-input).1563Хуки UserPromptSubmit также получают `session_title`, когда у сессии есть пользовательское название, с тем же значением, что и [поле `session_title` в SessionStart](#sessionstart-input).

1541 1564 

1542```json theme={null}1565```json theme={null}

1543{1566{


1554 Управление решениями UserPromptSubmit1577 Управление решениями UserPromptSubmit

1555</h4>1578</h4>

1556 1579 

1557Хуки `UserPromptSubmit` могут управлять тем, будет ли обработан отправленный промпт, и добавлять контекст. Доступны все [поля вывода JSON](#json-output).1580Хуки `UserPromptSubmit` могут управлять тем, обрабатывается ли отправленный промпт, и добавлять контекст. Доступны все [поля вывода JSON](#json-output).

1558 1581 

1559Есть два способа добавить контекст в диалог при коде выхода 0:1582Есть два способа добавить контекст в диалог при коде выхода 0:

1560 1583 

1561* **Обычный текст в stdout**: Claude Code добавляет в контекст Claude stdout, который он [обрабатывает как обычный текст](#exit-code-0)1584* **Обычный текстовый stdout**: Claude Code добавляет stdout, который он [считает обычным текстом](#exit-code-0), в контекст Claude

1562* **JSON с `additionalContext`**: используйте формат JSON ниже для более тонкого управления. Поле `additionalContext` добавляется как контекст1585* **JSON с `additionalContext`**: используйте формат JSON ниже для большего контроля. Поле `additionalContext` добавляется как контекст

1563 1586 

1564Ни один из каналов не создаёт видимой записи в транскрипте. Обычный stdout и значение `additionalContext` внедряются каждый как системное напоминание, начинающееся с имени хука; Claude читает оба. Чтобы убедиться в доставке, проверьте [лог отладки](#debug-hooks).1587Ни один из каналов не создаёт видимой записи в транскрипте. Обычный stdout и значение `additionalContext` внедряются каждое как системное напоминание, начинающееся с имени хука; Claude читает оба. Чтобы подтвердить доставку, проверьте [лог отладки](#debug-hooks).

1565 1588 

1566Чтобы заблокировать промпт, верните объект JSON с `decision`, равным `"block"`:1589Чтобы заблокировать промпт, верните объект JSON с `decision`, равным `"block"`:

1567 1590 

1568| Поле | Описание |1591| Поле | Описание |

1569| :- | :- |1592| :- | :- |

1570| `decision` | `"block"` останавливает промпт до того, как он дойдёт до Claude. Не указывайте, чтобы разрешить обработку промпта |1593| `decision` | `"block"` останавливает промпт до того, как он дойдёт до Claude. Не указывайте, чтобы разрешить продолжение |

1571| `reason` | Показывается пользователю, когда `decision` равен `"block"`. Не добавляется в контекст |1594| `reason` | Показывается пользователю, когда `decision` равен `"block"`. Не добавляется в контекст |

1572| `additionalContext` | Строка, добавляемая в контекст Claude вместе с отправленным промптом. См. [Добавление контекста для Claude](#add-context-for-claude) |1595| `additionalContext` | Строка, добавляемая в контекст Claude вместе с отправленным промптом. См. [Добавление контекста для Claude](#add-context-for-claude) |

1573| `sessionTitle` | Задаёт название сессии. Используйте, чтобы автоматически именовать сессии на основе содержимого промпта |1596| `sessionTitle` | Задаёт название сессии. Используйте для автоматического именования сессий на основе содержимого промпта |

1574| `suppressOriginalPrompt` | Если `true` и хук блокирует промпт, текст промпта не включается в сообщение о блокировке. См. [Что остаётся после заблокированного промпта](#what-a-blocked-prompt-leaves-behind) |1597| `suppressOriginalPrompt` | Если `true`, когда хук блокирует промпт, текст промпта не включается в сообщение о блокировке. См. [Что остаётся после заблокированного промпта](#what-a-blocked-prompt-leaves-behind) |

1575 1598 

1576Хук, который блокирует, завершаясь с кодом 2, обрабатывается так же, как `reason`: сообщение о блокировке показывает пользователю текст из stderr, и он не добавляется в контекст.1599Хук, который блокирует через выход с кодом 2, обрабатывается так же, как `reason`: сообщение о блокировке показывает пользователю текст stderr, и он не добавляется в контекст.

1577 1600 

1578```json theme={null}1601```json theme={null}

1579{1602{


1592 Что остаётся после заблокированного промпта1615 Что остаётся после заблокированного промпта

1593</h4>1616</h4>

1594 1617 

1595Заблокированный промпт никогда не доходит до Claude, но его текст удаляется не отовсюду. По умолчанию сообщение о блокировке, показываемое пользователю, заканчивается строкой `Original prompt:`, за которой следует отправленный текст, и Claude Code записывает это сообщение в файл транскрипта сессии на диске. Чтобы исключить текст из сообщения, выведите JSON с `"suppressOriginalPrompt": true` внутри `hookSpecificOutput`. Это работает независимо от того, блокирует ли хук через `decision: "block"` или завершением с кодом 2.1618Заблокированный промпт никогда не доходит до Claude, но его текст удаляется не везде. По умолчанию сообщение о блокировке, показываемое пользователю, заканчивается строкой `Original prompt:`, за которой следует отправленный текст, и Claude Code записывает это сообщение в файл транскрипта сессии на диске. Чтобы исключить текст из сообщения, выведите JSON с `"suppressOriginalPrompt": true` внутри `hookSpecificOutput`. Это работает независимо от того, блокирует ли хук через `decision: "block"` или через выход с кодом 2.

1596 1619 

1597`suppressOriginalPrompt` изменяет только сообщение о блокировке. Отправленный текст всё равно может оказаться в локальных файлах, таких как транскрипт сессии и история промптов, поэтому блокирующий хук — не способ уберечь секрет от записи на диск. Чтобы ограничить или удалить эти файлы, см. [Хранение в открытом виде](/docs/ru/claude-directory#plaintext-storage) и [Очистка локальных данных](/docs/ru/claude-directory#clear-local-data).1620`suppressOriginalPrompt` изменяет только сообщение о блокировке. Отправленный текст всё равно может оказаться в локальных файлах, таких как транскрипт сессии и история ваших промптов, поэтому блокирующий хук не является способом не допустить попадания секрета на диск. Чтобы ограничить или удалить эти файлы, см. [Хранение в открытом виде](/docs/ru/claude-directory#plaintext-storage) и [Очистка локальных данных](/docs/ru/claude-directory#clear-local-data).

1598 1621 

1599<h3 id="userpromptexpansion">1622<h3 id="userpromptexpansion">

1600 UserPromptExpansion1623 UserPromptExpansion

1601</h3>1624</h3>

1602 1625 

1603Выполняется, когда введённая пользователем команда разворачивается в промпт до того, как дойти до Claude. Используйте его, чтобы блокировать прямой вызов определённых команд, внедрять контекст для конкретного скилла или логировать, какие команды вызывают пользователи. Например, хук с matcher `deploy` может блокировать `/deploy`, если нет файла одобрения, а хук с matcher для скилла ревью может добавлять чек-лист ревью команды в качестве `additionalContext`.1626Выполняется, когда введённая пользователем команда разворачивается в промпт до того, как дойти до Claude. Используйте это, чтобы блокировать прямой вызов определённых команд, внедрять контекст для конкретного скилла или логировать, какие команды вызывают пользователи. Например, хук с matcher `deploy` может блокировать `/deploy`, если нет файла подтверждения, а хук, соответствующий скиллу ревью, может добавлять чек-лист ревью команды в качестве `additionalContext`.

1604 1627 

1605Это событие покрывает путь, который не покрывает `PreToolUse`: хук `PreToolUse`, сопоставленный с инструментом `Skill`, срабатывает только когда Claude вызывает инструмент, а прямой ввод `/skillname` обходит `PreToolUse`. `UserPromptExpansion` срабатывает на этом прямом пути.1628Это событие покрывает путь, который не покрывает `PreToolUse`: хук `PreToolUse`, соответствующий инструменту `Skill`, срабатывает только когда Claude вызывает этот инструмент, а прямой ввод `/skillname` обходит `PreToolUse`. `UserPromptExpansion` срабатывает на этом прямом пути.

1606 1629 

1607Сопоставляется с `command_name`. Оставьте matcher пустым, чтобы срабатывать на каждую команду промптового типа.1630Сопоставляется с `command_name`. Оставьте matcher пустым, чтобы срабатывать на каждую команду типа prompt.

1608 1631 

1609<h4 id="userpromptexpansion-input">1632<h4 id="userpromptexpansion-input">

1610 Входные данные UserPromptExpansion1633 Входные данные UserPromptExpansion

1611</h4>1634</h4>

1612 1635 

1613Помимо [общих входных полей](#common-input-fields), хуки UserPromptExpansion получают `expansion_type`, `command_name`, `command_args`, `command_source` и исходную строку `prompt`. Поле `expansion_type` равно `slash_command` для скиллов и пользовательских команд или `mcp_prompt` для промптов MCP-серверов.1636Помимо [общих входных полей](#common-input-fields), хуки UserPromptExpansion получают `expansion_type`, `command_name`, `command_args`, `command_source` и исходную строку `prompt`. Поле `expansion_type` равно `slash_command` для скиллов и пользовательских команд или `mcp_prompt` для промптов MCP-сервера.

1614 1637 

1615```json theme={null}1638```json theme={null}

1616{1639{


1631 Управление решениями UserPromptExpansion1654 Управление решениями UserPromptExpansion

1632</h4>1655</h4>

1633 1656 

1634Хуки `UserPromptExpansion` могут блокировать разворачивание или добавлять контекст. Доступны все [поля вывода JSON](#json-output).1657Хуки `UserPromptExpansion` могут блокировать развёртывание или добавлять контекст. Доступны все [поля вывода JSON](#json-output).

1635 1658 

1636| Поле | Описание |1659| Поле | Описание |

1637| :- | :- |1660| :- | :- |

1638| `decision` | `"block"` не даёт команде развернуться. Не указывайте, чтобы разрешить продолжение |1661| `decision` | `"block"` предотвращает развёртывание команды. Не указывайте, чтобы разрешить продолжение |

1639| `reason` | Показывается пользователю, когда `decision` равен `"block"` |1662| `reason` | Показывается пользователю, когда `decision` равен `"block"` |

1640| `additionalContext` | Строка, добавляемая в контекст Claude вместе с развёрнутым промптом. См. [Добавление контекста для Claude](#add-context-for-claude) |1663| `additionalContext` | Строка, добавляемая в контекст Claude вместе с развёрнутым промптом. См. [Добавление контекста для Claude](#add-context-for-claude) |

1641 1664 

1642Хук, который блокирует, завершаясь с кодом 2, обрабатывается так же, как `reason`: сообщение о блокировке показывает пользователю текст из stderr.1665Хук, который блокирует через выход с кодом 2, обрабатывается так же, как `reason`: сообщение о блокировке показывает пользователю текст stderr.

1643 1666 

1644```json theme={null}1667```json theme={null}

1645{1668{


1656 MessageDisplay1679 MessageDisplay

1657</h3>1680</h3>

1658 1681 

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

1660 1683 

1661Используйте MessageDisplay, чтобы:1684Используйте MessageDisplay, чтобы:

1662 1685 

1663* удалять разметку markdown для минималистичного отображения1686* убирать markdown для минималистичного отображения

1664* преобразовывать текст, который приложение на Agent SDK показывает своим пользователям1687* преобразовывать текст, который приложение на Agent SDK показывает своим пользователям

1665* скрывать API-ключи или внутренние имена хостов в ответах Claude1688* скрывать API-ключи или внутренние имена хостов из ответов Claude

1666 1689 

1667Claude Code удерживает каждый пакет, пока ваш хук не вернёт результат, поэтому хук должен работать быстро. Если хук завершается ошибкой или по таймауту, Claude Code отображает исходный текст. Таймаут по умолчанию для этого события — 10 секунд; если вашему хуку нужно больше времени, задайте поле `timeout` в записи хука.1690Claude Code удерживает каждую партию, пока ваш хук не вернёт результат, поэтому хук должен работать быстро. Если хук завершается с ошибкой или по таймауту, Claude Code отображает исходный текст. Таймаут по умолчанию для этого события — 10 секунд; если вашему хуку нужно больше времени, задайте поле `timeout` в записи хука.

1668 1691 

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

1670 1693 

1671MessageDisplay не поддерживает matcher и срабатывает для каждого сообщения ассистента, которое выводит текст потоком; сообщения без текста, например ответы, состоящие только из вызовов инструментов, его не вызывают.1694MessageDisplay не поддерживает matcher и срабатывает для каждого сообщения ассистента, которое передаёт текст в потоке; сообщения без текста, например ответы, состоящие только из вызовов инструментов, его не вызывают.

1672 1695 

1673В неинтерактивных запусках, включая запросы Agent SDK и `claude -p`, MessageDisplay выполняется один раз на сообщение ассистента, а не один раз на пакет строк. Единственный вызов приходит после завершения сообщения и содержит полный текст сообщения: `index` равен `0`, `final` равен `true`, а `delta` содержит всё сообщение. Хук, собирающий текст `delta` для каждого сообщения, получает один и тот же общий текст в обоих режимах.1696В неинтерактивных запусках, включая запросы Agent SDK и `claude -p`, MessageDisplay выполняется один раз на сообщение ассистента, а не один раз на партию строк. Единственный вызов поступает после завершения сообщения и содержит полный текст сообщения: `index` равен `0`, `final` равен `true`, а `delta` содержит всё сообщение. Хук, собирающий текст `delta` для каждого сообщения, получает в обоих режимах одинаковый итоговый текст.

1674 1697 

1675<h4 id="messagedisplay-input">1698<h4 id="messagedisplay-input">

1676 Входные данные MessageDisplay1699 Входные данные MessageDisplay

1677</h4>1700</h4>

1678 1701 

1679Помимо [общих входных полей](#common-input-fields), хуки MessageDisplay получают идентификаторы хода и сообщения, позицию этого вызова внутри сообщения и новый текст в `delta`. Границы пакетов зависят от того, как поступает поток текста, поэтому используйте `index` и `final` для отслеживания продвижения по сообщению, а не рассчитывайте на определённую группировку строк.1702Помимо [общих входных полей](#common-input-fields), хуки MessageDisplay получают идентификаторы хода и сообщения, позицию этого вызова в сообщении и новый текст в `delta`. Границы партий зависят от того, как передаётся текст в потоке, поэтому используйте `index` и `final` для отслеживания продвижения по сообщению, а не рассчитывайте на определённую группировку строк.

1680 1703 

1681| Поле | Описание |1704| Поле | Описание |

1682| :- | :- |1705| :- | :- |

1683| `turn_id` | UUID текущего хода |1706| `turn_id` | UUID текущего хода |

1684| `message_id` | UUID отображаемого сообщения ассистента. Одинаков для всех пакетов одного сообщения. Это не идентификатор API `msg_…`, поэтому его нельзя сопоставить с идентификаторами сообщений в транскрипте |1707| `message_id` | UUID отображаемого сообщения ассистента. Неизменен во всех партиях одного сообщения. Это не id `msg_…` из API, поэтому его нельзя сопоставить с id сообщений в транскрипте |

1685| `index` | Индекс этого пакета внутри сообщения, начиная с нуля |1708| `index` | Индекс этой партии в сообщении, начиная с нуля |

1686| `final` | `true` для последнего пакета сообщения. У каждого сообщения ровно один финальный пакет |1709| `final` | `true` в последней партии сообщения. У каждого сообщения ровно одна финальная партия |

1687| `delta` | Новые завершённые строки с момента предыдущего пакета, включая завершающие символы новой строки. Всегда целые строки, кроме финального пакета, который может заканчиваться посреди строки. В интерактивных запусках delta финального пакета пуста, если сообщение заканчивается символом новой строки, поэтому считайте сигналом конца сообщения `final`, а не непустую delta. В запусках Agent SDK и `claude -p` единственный вызов содержит всё сообщение |1710| `delta` | Строки, завершённые с момента предыдущей партии, включая завершающие символы новой строки. Всегда целые строки, кроме финальной партии, которая может заканчиваться посреди строки. В интерактивных запусках delta финальной партии пуста, если сообщение заканчивается символом новой строки, поэтому считайте сигналом конца сообщения `final`, а не непустую delta. В запусках Agent SDK и `claude -p` единственный вызов содержит всё сообщение |

1688 1711 

1689```json theme={null}1712```json theme={null}

1690{1713{


1704 Вывод MessageDisplay1727 Вывод MessageDisplay

1705</h4>1728</h4>

1706 1729 

1707Помимо [полей вывода JSON](#json-output), доступных всем хукам, хуки MessageDisplay могут возвращать `displayContent`, чтобы заменить delta на экране:1730Помимо [полей вывода JSON](#json-output), доступных всем хукам, хуки MessageDisplay могут вернуть `displayContent`, чтобы заменить delta на экране:

1708 1731 

1709| Поле | Описание |1732| Поле | Описание |

1710| :- | :- |1733| :- | :- |

1711| `displayContent` | Текст, отображаемый вместо delta. Не указывайте, чтобы отобразить исходный текст |1734| `displayContent` | Текст, отображаемый вместо delta. Не указывайте, чтобы отобразить оригинал |

1712 1735 

1713Хуки MessageDisplay не имеют управления решениями. Они не могут заблокировать сообщение или изменить то, что хранится в транскрипте или отправляется Claude. Claude Code использует `displayContent` из их вывода JSON и отбрасывает `systemMessage` и `continue`.1736Хуки MessageDisplay не имеют управления решениями. Они не могут блокировать сообщение или изменять то, что сохраняется в транскрипте или отправляется Claude. Claude Code учитывает `displayContent` из их вывода JSON и отбрасывает `systemMessage` и `continue`.

1714 1737 

1715Этот пример удаляет форматирование markdown из ответов Claude для отображения обычным текстом. Скрипт читает каждый пакет из stdin, удаляет из `delta` маркеры полужирного начертания и обратные кавычки встроенного кода и возвращает результат в виде `displayContent`.1738Этот пример убирает форматирование markdown из ответов Claude для отображения обычным текстом. Скрипт считывает каждую партию из stdin, удаляет из `delta` маркеры полужирного шрифта и обратные кавычки встроенного кода и возвращает результат как `displayContent`.

1716 1739 

1717<Tabs>1740<Tabs>

1718 <Tab title="macOS/Linux">1741 <Tab title="macOS/Linux">


1736 }1759 }

1737 ```1760 ```

1738 1761 

1739 Сохраните этот скрипт в `.claude/hooks/plain-display.sh` в вашем проекте и сделайте его исполняемым с помощью `chmod +x`:1762 Сохраните этот скрипт в `.claude/hooks/plain-display.sh` в своём проекте и сделайте его исполняемым с помощью `chmod +x`:

1740 1763 

1741 ```bash theme={null}1764 ```bash theme={null}

1742 #!/bin/bash1765 #!/bin/bash


1773 1796 

1774 Флаг `-NoProfile` пропускает загрузку вашего профиля PowerShell, чтобы хук запускался быстро, а `-ExecutionPolicy Bypass` позволяет PowerShell выполнить локальный файл скрипта.1797 Флаг `-NoProfile` пропускает загрузку вашего профиля PowerShell, чтобы хук запускался быстро, а `-ExecutionPolicy Bypass` позволяет PowerShell выполнить локальный файл скрипта.

1775 1798 

1776 Сохраните этот скрипт в `.claude/hooks/plain-display.ps1` в вашем проекте:1799 Сохраните этот скрипт в `.claude/hooks/plain-display.ps1` в своём проекте:

1777 1800 

1778 ```powershell theme={null}1801 ```powershell theme={null}

1779 $batch = [Console]::In.ReadToEnd() | ConvertFrom-Json1802 $batch = [Console]::In.ReadToEnd() | ConvertFrom-Json


1788 </Tab>1811 </Tab>

1789</Tabs>1812</Tabs>

1790 1813 

1791Пакеты без разметки markdown проходят без изменений. Если скрипт завершается ошибкой, например из-за отсутствия `jq`, Claude Code отображает исходный текст и отмечает сбой только в [отладочном выводе](#debug-hooks), а не в сессии.1814Партии без markdown проходят без изменений. Если скрипт завершается с ошибкой, например из-за отсутствия `jq`, Claude Code отображает исходный текст и отмечает сбой только в [выводе отладки](#debug-hooks), а не в сессии.

1792 1815 

1793<h3 id="pretooluse">1816<h3 id="pretooluse">

1794 PreToolUse1817 PreToolUse

1795</h3>1818</h3>

1796 1819 

1797Выполняется после того, как Claude сформирует параметры инструмента, и до обработки вызова инструмента. Сопоставляется с любым именем инструмента, кроме `EndConversation`: со встроенными инструментами, такими как `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion` и `ExitPlanMode`, а также с любыми [именами инструментов MCP](#match-mcp-tools).1820Выполняется после того, как Claude сформирует параметры инструмента, и до обработки вызова инструмента. Сопоставляется с любым именем инструмента, кроме `EndConversation`: встроенными инструментами, такими как `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion` и `ExitPlanMode`, а также любыми [именами MCP-инструментов](#match-mcp-tools).

1798 1821 

1799Чтобы запускать хук при изменении конкретного файла на диске, независимо от того, что его записало, используйте [FileChanged](#filechanged) вместо сопоставления инструментов редактирования файлов по имени. В отличие от PreToolUse, Claude Code запускает хуки FileChanged после изменения, и у них нет управления решениями, поэтому они не могут заблокировать запись.1822Чтобы запускать хук при изменении конкретного файла на диске, независимо от того, что его записало, используйте [FileChanged](#filechanged) вместо сопоставления инструментов редактирования файлов по имени. В отличие от PreToolUse, Claude Code запускает хуки FileChanged после изменения, и у них нет управления решениями, поэтому они не могут заблокировать запись.

1800 1823 

1801<Warning>1824<Warning>

1802 PreToolUse выполняется только когда Claude вызывает инструмент. Файлы, на которые вы [ссылаетесь с помощью `@` в промпте](/docs/ru/common-workflows#reference-files-and-directories), добавляются без вызова инструмента: Claude Code вставляет их содержимое при формировании промпта, поэтому для них не срабатывает ни один хук PreToolUse, включая хуки с matcher `Read`. Чтобы запретить определённые пути в ссылках `@`, используйте вместо этого [правило запрета `Read`](/docs/ru/permissions#read-and-edit).1825 PreToolUse выполняется только тогда, когда Claude вызывает инструмент. По умолчанию файлы, на которые вы [ссылаетесь с помощью `@` в промпте](/docs/ru/common-workflows#reference-files-and-directories), добавляются без какого-либо вызова инструмента. Claude Code вставляет их содержимое при формировании промпта, поэтому для них не срабатывает ни один хук PreToolUse, включая хуки, соответствующие `Read`. PreToolUse также не срабатывает для [`EndConversation`](/docs/ru/tools-reference#endconversation-tool-behavior).

1826 

1827 Вы можете блокировать определённые пути в ссылках `@` или отключить вставку:

1803 1828 

1804 PreToolUse также не срабатывает для [`EndConversation`](/docs/ru/tools-reference#endconversation-tool-behavior).1829 * **Блокировка определённых путей**: добавьте для них [правило запрета `Read`](/docs/ru/permissions#read-and-edit)

1830 * **Отключение вставки**: задайте [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](/docs/ru/env-vars#variables) в своей оболочке, пользовательских настройках или управляемых настройках. Тогда Claude получает упомянутые пути с пометкой прочитать их с помощью своих файловых инструментов. Если он это делает, выполняются соответствующие хуки PreToolUse. Для этой переменной требуется Claude Code v2.1.299 или новее, и Claude Code игнорирует её в настройках проекта и локальных настройках.

1805</Warning>1831</Warning>

1806 1832 

1807Используйте [управление решениями PreToolUse](#pretooluse-decision-control), чтобы разрешить, запретить, запросить подтверждение или отложить вызов инструмента.1833Используйте [управление решениями PreToolUse](#pretooluse-decision-control), чтобы разрешить, запретить, запросить подтверждение или отложить вызов инструмента.

1808 1834 

1809[Хук обратного вызова Agent SDK](/docs/ru/agent-sdk/hooks) для `PreToolUse`, превысивший свой таймаут, блокирует вызов инструмента, и Claude получает результат с ошибкой, в котором указан таймаут. Явный запрет, возвращённый другим хуком, по-прежнему имеет приоритет.1835[Callback-хук Agent SDK](/docs/ru/agent-sdk/hooks) на `PreToolUse`, превысивший таймаут, блокирует вызов инструмента, и Claude получает результат с ошибкой, указывающий на таймаут. Явный запрет, возвращённый другим хуком, по-прежнему имеет приоритет.

1810 1836 

1811<h4 id="pretooluse-input">1837<h4 id="pretooluse-input">

1812 Входные данные PreToolUse1838 Входные данные PreToolUse


1814 1840 

1815Помимо [общих входных полей](#common-input-fields), хуки PreToolUse получают `tool_name`, `tool_input` и `tool_use_id`.1841Помимо [общих входных полей](#common-input-fields), хуки PreToolUse получают `tool_name`, `tool_input` и `tool_use_id`.

1816 1842 

1817Для [инструмента MCP](#match-mcp-tools) входные данные также содержат `mcp_server` — объект с `name` сервера и полем `source`, указывающим, откуда взято определение сервера. Значения `source` включают `plugin`, `sdk` и области действия конфигурации, такие как `user` и `project`. В [`McpServerProvenance`](/docs/ru/agent-sdk/typescript#mcpserverprovenance) в справочнике Agent SDK перечислены все значения и указано, как обращаться с незнакомым значением. Принимайте решения о доверии на основе `source`, а не `name` или префикса имени инструмента `mcp__<server>__`. Для поля `mcp_server` требуется Claude Code v2.1.274 или новее.1843Для [MCP-инструмента](#match-mcp-tools) входные данные также содержат `mcp_server` — объект с `name` сервера и `source`, указывающим, откуда взято определение сервера. Значения `source` включают `plugin`, `sdk` и области действия конфигурации, такие как `user` и `project`. [`McpServerProvenance`](/docs/ru/agent-sdk/typescript#mcpserverprovenance) в справочнике Agent SDK перечисляет их все и описывает, как обрабатывать нераспознанное значение. Основывайте решения о доверии на `source`, а не на `name` или префиксе имени инструмента `mcp__<server>__`. Для поля `mcp_server` требуется Claude Code v2.1.274 или новее.

1818 1844 

1819Для файловых инструментов `Write`, `Edit` и `Read` значение `tool_input.file_path` всегда абсолютное:1845Для файловых инструментов `Write`, `Edit` и `Read` значение `tool_input.file_path` всегда абсолютное:

1820 1846 

1821* Claude Code разворачивает `~` и относительные пути до запуска хуков, поэтому хук, сопоставляющий пути, нельзя обойти через `~` или относительное написание того же пути1847* Claude Code раскрывает `~` и относительные пути до выполнения хуков, поэтому хук, сопоставляющий пути, нельзя обойти через `~` или относительную запись того же пути

1822* В Windows путь приходит с разделителями-обратными слешами, даже если ваш хук выполняется в Git Bash, где `$PWD` выглядит как `/c/project`1848* В Windows путь поступает с обратными косыми чертами в качестве разделителей, даже если ваш хук выполняется в Git Bash, где `$PWD` выглядит как `/c/project`

1823* Сравнение, записанное с прямыми слешами, например проверка `/src/`, никогда не совпадёт с путём с обратными слешами, и вызов инструмента продолжится так, будто хуку нечего было блокировать1849* Сравнение, записанное с прямыми косыми чертами, например проверка `/src/`, никогда не совпадёт с путём с обратными косыми чертами, и вызов инструмента продолжится так, будто хуку нечего было блокировать

1824* Нормализуйте разделители перед сравнением: `FILE_PATH="${FILE_PATH//\\//}"` в Bash или `file_path.replace("\\", "/")` в Python, а затем сопоставляйте сегмент пути, например `/src/`, а не привязывайтесь к началу через `^`, поскольку путь абсолютный1850* Нормализуйте разделители перед сравнением: `FILE_PATH="${FILE_PATH//\\//}"` в Bash или `file_path.replace("\\", "/")` в Python, а затем сопоставляйте сегмент пути, например `/src/`, а не привязывайтесь к началу с помощью `^`, поскольку путь абсолютный

1825 1851 

1826Вызов `Write` в Windows передаёт:1852Вызов `Write` в Windows передаёт:

1827 1853 


1854| `timeout` | number | `120000` | Необязательный таймаут в миллисекундах. Значения выше [максимума](/docs/ru/tools-reference#bash-tool-behavior) уменьшаются до максимума, а не отклоняются |1880| `timeout` | number | `120000` | Необязательный таймаут в миллисекундах. Значения выше [максимума](/docs/ru/tools-reference#bash-tool-behavior) уменьшаются до максимума, а не отклоняются |

1855| `run_in_background` | boolean | `false` | Выполнять ли команду в фоне |1881| `run_in_background` | boolean | `false` | Выполнять ли команду в фоне |

1856 1882 

1857Когда команда Bash изменяет файлы в репозитории Git, Claude Code может записывать, что изменилось. Он записывает изменения во всех режимах разрешений, если запись включена настройкой [`bashEditDiffEnabled`](/docs/ru/settings-reference#basheditdiffenabled); в описании этой настройки указано, какие файлы могут её задавать. В противном случае он записывает их только в авторежиме и режиме `bypassPermissions`, и только когда Claude Code направляет Claude редактировать файлы через Bash. Задайте `bashEditDiffEnabled` значение `false`, чтобы отключить запись. Фоновые команды и команды только для чтения не содержат diff.1883Когда команда Bash изменяет файлы в репозитории Git, Claude Code может записывать, что изменилось. Он записывает изменения в любом режиме разрешений, когда это включено настройкой [`bashEditDiffEnabled`](/docs/ru/settings-reference#basheditdiffenabled); в описании этой настройки указано, какие файлы могут её задавать. В противном случае он записывает их только в авторежиме и режиме `bypassPermissions`, и только когда Claude Code направляет Claude редактировать файлы через Bash. Задайте `bashEditDiffEnabled` равным `false`, чтобы отключить запись. Фоновые команды и команды только для чтения не содержат diff.

1858 1884 

1859Затем ваш [хук PostToolUse](#posttooluse) получает изменённые файлы в `tool_response.bashEditDiff`. Список охватывает то, что изменилось в репозитории во время выполнения команды. Файлы, игнорируемые Git, и файлы в подмодулях не перечисляются. Требуется Claude Code v2.1.269 или новее.1885Затем ваш [хук PostToolUse](#posttooluse) получает изменённые файлы в `tool_response.bashEditDiff`. Список охватывает то, что изменилось в репозитории во время выполнения команды. Файлы, которые игнорирует Git, и файлы в подмодулях не перечисляются. Требуется Claude Code v2.1.269 или новее.

1860 1886 

1861<Note>1887<Note>

1862 Список формируется по возможности и находится в стадии публичной беты. Claude Code может пропустить изменение, включить файл, который одновременно изменил другой процесс, или остановиться на своих ограничениях размера. Структура поля может измениться. Используйте список, чтобы найти, что нужно проверить, а не для применения политики.1888 Список формируется по принципу «насколько возможно» и доступен в публичной бета-версии. Claude Code может пропустить изменение, включить файл, который одновременно изменил другой процесс, или остановиться на своих ограничениях размера. Структура поля может измениться. Используйте список, чтобы найти, что проверить, а не для принудительного применения политики.

1863</Note>1889</Note>

1864 1890 

1865`changedFiles` и `files` перечисляют, что изменила команда; остальные поля сообщают, насколько полон и надёжен этот список.1891`changedFiles` и `files` перечисляют то, что изменила команда; остальные поля указывают, насколько полон и надёжен этот список.

1866 1892 

1867| Поле | Тип | Пример | Описание |1893| Поле | Тип | Пример | Описание |

1868| :- | :- | :- | :- |1894| :- | :- | :- | :- |

1869| `changedFiles` | array | `["/path/to/src/app.ts"]` | Абсолютные пути файлов, изменённых командой, не более 200. Присутствует, когда `files` содержит diff или `moreFiles` больше нуля |1895| `changedFiles` | array | `["/path/to/src/app.ts"]` | Абсолютные пути файлов, изменённых командой, не более 200. Присутствует всякий раз, когда `files` содержит diff или `moreFiles` больше нуля |

1870| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diff не более 5 изменённых файлов, для отображения. `created` или `deleted` равно `true` для файла, который команда добавила или удалила |1896| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diff до 5 изменённых файлов для отображения. `created` или `deleted` равно `true` для файла, который команда добавила или удалила |

1871| `moreFiles` | number | `2` | Количество изменённых файлов без diff в `files` |1897| `moreFiles` | number | `2` | Количество изменённых файлов без diff в `files` |

1872| `unavailable` | boolean | `true` | Задаётся, когда diff неполон или его не удалось получить |1898| `unavailable` | boolean | `true` | Устанавливается, когда diff неполон или его не удалось получить |

1873| `skipped` | boolean | `true` | Задаётся для команды Git, которая перемещает рабочее дерево, например `git checkout` или `git stash`, поэтому Claude Code не получает diff |1899| `skipped` | boolean | `true` | Устанавливается для команды Git, которая перемещает рабочее дерево, например `git checkout` или `git stash`, поэтому Claude Code не получает diff |

1874| `shared` | boolean | `true` | Задаётся, когда другой вызов инструмента Bash, например вызов субагента, выполнялся в том же репозитории в то же время, поэтому некоторые перечисленные изменения могут относиться к той команде |1900| `shared` | boolean | `true` | Устанавливается, когда другой вызов инструмента Bash, например от субагента, выполнялся в том же репозитории в то же время, поэтому некоторые перечисленные изменения могут принадлежать той команде |

1875 1901 

1876<a id="powershell" />1902<a id="powershell" />

1877 1903 


1890| `timeout` | number | `120000` | Необязательный таймаут в миллисекундах |1916| `timeout` | number | `120000` | Необязательный таймаут в миллисекундах |

1891| `run_in_background` | boolean | `false` | Выполнять ли команду в фоне |1917| `run_in_background` | boolean | `false` | Выполнять ли команду в фоне |

1892 1918 

1893В хуках, которые проверяют shell-команды, используйте matcher `Bash|PowerShell`, чтобы охватить оба инструмента:1919В хуках, проверяющих shell-команды, используйте matcher `Bash|PowerShell`, чтобы они охватывали оба инструмента:

1894 1920 

1895* В Windows везде, где включён инструмент PowerShell, Claude считает PowerShell основной оболочкой и направляет shell-команды через неё.1921* В Windows везде, где включён инструмент PowerShell, Claude считает PowerShell основной оболочкой и направляет shell-команды через него.

1896* В Windows без Git Bash инструмент включается автоматически, и Claude Code вообще не регистрирует инструмент Bash.1922* В Windows без Git Bash инструмент включается автоматически, и Claude Code вообще не регистрирует инструмент Bash.

1897* Хук, сопоставленный только с `Bash`, там никогда не сработает.1923* Хук, соответствующий только `Bash`, там никогда не срабатывает.

1898 1924 

1899<h5 id="write">1925<h5 id="write">

1900 Write1926 Write


1947 Grep1973 Grep

1948</h5>1974</h5>

1949 1975 

1950Ищет по содержимому файлов с помощью регулярных выражений.1976Ищет в содержимом файлов с помощью регулярных выражений.

1951 1977 

1952| Поле | Тип | Пример | Описание |1978| Поле | Тип | Пример | Описание |

1953| :- | :- | :- | :- |1979| :- | :- | :- | :- |


1979| Поле | Тип | Пример | Описание |2005| Поле | Тип | Пример | Описание |

1980| :- | :- | :- | :- |2006| :- | :- | :- | :- |

1981| `query` | string | `"react hooks best practices"` | Поисковый запрос |2007| `query` | string | `"react hooks best practices"` | Поисковый запрос |

1982| `allowed_domains` | array | `["docs.example.com"]` | Необязательно: включать только результаты с этих доменов |2008| `allowed_domains` | array | `["docs.example.com"]` | Необязательно: включать результаты только с этих доменов |

1983| `blocked_domains` | array | `["spam.example.com"]` | Необязательно: исключать результаты с этих доменов |2009| `blocked_domains` | array | `["spam.example.com"]` | Необязательно: исключать результаты с этих доменов |

1984 2010 

1985<h5 id="agent">2011<h5 id="agent">


1995| `subagent_type` | string | `"Explore"` | Тип используемого специализированного агента |2021| `subagent_type` | string | `"Explore"` | Тип используемого специализированного агента |

1996| `model` | string | `"sonnet"` | Необязательный псевдоним модели для переопределения модели по умолчанию |2022| `model` | string | `"sonnet"` | Необязательный псевдоним модели для переопределения модели по умолчанию |

1997 2023 

1998Когда вызов Agent на переднем плане завершается, ваш [хук PostToolUse](#posttooluse) получает результат субагента и телеметрию запуска в `tool_response`. Читайте эти поля, чтобы изучить запуск; для сводок по токенам и стоимости по всем субагентам используйте [счётчики токенов и стоимости](/docs/ru/monitoring-usage#token-counter) с фильтром `query_source` `"subagent"`, поскольку `totalTokens` и `usage` охватывают только последний запрос:2024Когда вызов Agent на переднем плане завершается, ваш [хук PostToolUse](#posttooluse) получает результат субагента и телеметрию запуска в `tool_response`. Читайте эти поля, чтобы проанализировать запуск; для сводных данных по токенам и стоимости по всем субагентам используйте [счётчики токенов и стоимости](/docs/ru/monitoring-usage#token-counter), отфильтрованные по `query_source` `"subagent"`, поскольку `totalTokens` и `usage` охватывают только последний запрос:

1999 2025 

2000| Поле | Тип | Пример | Описание |2026| Поле | Тип | Пример | Описание |

2001| :- | :- | :- | :- |2027| :- | :- | :- | :- |

2002| `status` | string | `"completed"` | `"completed"` для субагентов на переднем плане, `"async_launched"` для фоновых субагентов. Субагенты по умолчанию выполняются в фоне, поэтому вызов Agent без `run_in_background` также даёт `"async_launched"` |2028| `status` | string | `"completed"` | `"completed"` для субагентов на переднем плане, `"async_launched"` для фоновых субагентов. Субагенты по умолчанию выполняются в фоне, поэтому вызов Agent без `run_in_background` также даёт `"async_launched"` |

2003| `agentId` | string | `"a4d2c8f1e0b3a297"` | Идентификатор запуска субагента |2029| `agentId` | string | `"a4d2c8f1e0b3a297"` | Идентификатор запуска субагента |

2004| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Финальные текстовые блоки субагента или, для субагента, чей отчёт передаётся через `SubagentHandback`, вместо них краткая заметка об этой передаче |2030| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Финальные текстовые блоки субагента или, для субагента, чей отчёт передаётся через `SubagentHandback`, вместо них — краткая заметка об этой передаче |

2005| `resolvedModel` | string | `"claude-sonnet-4-5"` | Модель, на которой субагент начал работу; может отличаться от запрошенной модели |2031| `resolvedModel` | string | `"claude-sonnet-4-5"` | Модель, на которой запустился субагент; может отличаться от запрошенной модели |

2006| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Использованные модели по порядку, с объединением последовательных повторов; задаётся только когда модель сменилась во время запуска. Требуется Claude Code v2.1.212 или новее |2032| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Использованные модели по порядку, с объединением последовательных повторов; задаётся только если модель менялась во время запуска. Требуется Claude Code v2.1.212 или новее |

2007| `totalTokens` | number | `12450` | Количество токенов из последнего запроса API субагента: входные, выходные и кэш-токены вместе. Это не итог за весь запуск |2033| `totalTokens` | number | `12450` | Количество токенов из последнего API-запроса субагента: входные, выходные и кэш-токены вместе. Это не итог за весь запуск |

2008| `totalDurationMs` | number | `48211` | Реальная длительность запуска субагента |2034| `totalDurationMs` | number | `48211` | Реальная длительность запуска субагента |

2009| `totalToolUseCount` | number | `7` | Количество вызовов инструментов, сделанных субагентом |2035| `totalToolUseCount` | number | `7` | Количество вызовов инструментов, сделанных субагентом |

2010| `usage` | object | `{"input_tokens": 8320, ...}` | Разбивка токенов по типам для последнего запроса API: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |2036| `usage` | object | `{"input_tokens": 8320, ...}` | Разбивка токенов последнего API-запроса по типам: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |

2011 2037 

2012В Claude Code v2.1.271 или новее субагент, работающий с инструментом [`SubagentHandback`](/docs/ru/tools-reference), который Claude Code предоставляет в [авторежиме](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), передаёт свой отчёт через этот инструмент, а не возвращает его текстом. Поле `content` его результата `completed` тогда содержит краткую заметку об этой передаче, а не сам отчёт. Чтобы прочитать отчёт, сопоставьте хук `PreToolUse` или `PostToolUse` с `SubagentHandback` и прочитайте `tool_input.message`.2038В Claude Code v2.1.271 или новее субагент, работающий с инструментом [`SubagentHandback`](/docs/ru/tools-reference), который Claude Code предоставляет в [авторежиме](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), передаёт свой отчёт через этот инструмент, а не возвращает его как текст. Тогда поле `content` его результата `completed` содержит краткую заметку об этой передаче, а не сам отчёт. Чтобы прочитать отчёт, настройте хук `PreToolUse` или `PostToolUse` с matcher `SubagentHandback` и читайте `tool_input.message`.

2013 2039 

2014Для фоновых субагентов инструмент возвращает результат, когда задача переходит в фон, поэтому `tool_response` не содержит полей использования: фоновый запуск возвращается немедленно, а задача на переднем плане, которую Claude Code переводит в фон во время выполнения, возвращается в момент этого перехода. Он содержит `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile` и `resolvedModel`.2040Для фоновых субагентов инструмент возвращает результат, когда задача переходит в фон, поэтому `tool_response` не содержит полей использования: фоновый запуск возвращается сразу, а задача на переднем плане, которую Claude Code переводит в фон во время выполнения, возвращается в момент этого перехода. Он содержит `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile` и `resolvedModel`.

2015 2041 

2016В ответе `completed` поле `resolvedModel` называет модель, на которой субагент начал работу; она может отличаться от значения `model` в `tool_input`, например когда применяется `availableModels` или другое переопределение. В ответе `async_launched` поле `resolvedModel` называет модель, использовавшуюся в момент перевода агента в фон, поэтому смена модели, произошедшая до перевода в фон, отражается там. Для `modelsUsed` и поведения `resolvedModel` на момент перевода в фон требуется Claude Code v2.1.212 или новее.2042В ответе `completed` поле `resolvedModel` указывает модель, на которой запустился субагент; она может отличаться от значения `model` в `tool_input`, например когда применяется `availableModels` или другое переопределение. В ответе `async_launched` поле `resolvedModel` указывает модель, использовавшуюся в момент перехода агента в фон, поэтому смена модели, произошедшая до перехода в фон, отражается там. Для `modelsUsed` и поведения `resolvedModel` на момент перехода в фон требуется Claude Code v2.1.212 или новее.

2017 2043 

2018<a id="askuserquestion" />2044<a id="askuserquestion" />

2019 2045 


2026| Поле | Тип | Пример | Описание |2052| Поле | Тип | Пример | Описание |

2027| :- | :- | :- | :- |2053| :- | :- | :- | :- |

2028| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React", "description": "Component library"}, {"label": "Vue", "description": "Progressive framework"}], "multiSelect": false}]` | Вопросы для показа, каждый со строкой `question`, кратким `header`, массивом `options` и необязательным флагом `multiSelect` |2054| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React", "description": "Component library"}, {"label": "Vue", "description": "Progressive framework"}], "multiSelect": false}]` | Вопросы для показа, каждый со строкой `question`, кратким `header`, массивом `options` и необязательным флагом `multiSelect` |

2029| `answers` | object | `{"Which framework?": "React"}` | Необязательно. Сопоставляет текст вопроса с меткой выбранного варианта. В ответах с множественным выбором метки объединяются через запятые. Claude не задаёт это поле; передайте его через `updatedInput`, чтобы отвечать программно |2055| `answers` | object | `{"Which framework?": "React"}` | Необязательно. Сопоставляет текст вопроса с меткой выбранного варианта. Ответы с множественным выбором объединяют метки через запятые. Claude не задаёт это поле; передайте его через `updatedInput`, чтобы отвечать программно |

2030 2056 

2031<h5 id="exitplanmode">2057<h5 id="exitplanmode">

2032 ExitPlanMode2058 ExitPlanMode


2038| :- | :- | :- | :- |2064| :- | :- | :- | :- |

2039| `plan` | string | `"## Refactor auth\n1. Extract..."` | Содержимое плана в Markdown. Внедряется из файла плана на диске |2065| `plan` | string | `"## Refactor auth\n1. Extract..."` | Содержимое плана в Markdown. Внедряется из файла плана на диске |

2040| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Путь к файлу плана. Внедряется |2066| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Путь к файлу плана. Внедряется |

2041| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Устаревшее. Claude Code принимает это поле, но игнорирует его. До версии v2.1.205 оно содержало разрешения на основе промптов, которые Claude запрашивал для реализации плана |2067| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Устаревшее. Claude Code принимает поле, но игнорирует его. До v2.1.205 оно содержало разрешения на основе промптов, которые Claude запрашивал для реализации плана |

2042 2068 

2043В `PostToolUse` поле `tool_response` — это объект с полями `plan` и `filePath`, содержащими утверждённый план, а также внутренними флагами состояния. Читайте содержимое плана из `tool_response.plan`, а не перечитывайте файл с диска.2069В `PostToolUse` `tool_response` — это объект с полями `plan` и `filePath`, содержащими утверждённый план, а также внутренними флагами статуса. Читайте содержимое плана из `tool_response.plan`, а не перечитывайте файл с диска.

2044 2070 

2045<h4 id="pretooluse-decision-control">2071<h4 id="pretooluse-decision-control">

2046 Управление решениями PreToolUse2072 Управление решениями PreToolUse

2047</h4>2073</h4>

2048 2074 

2049Хуки `PreToolUse` могут управлять тем, будет ли выполнен вызов инструмента. В отличие от других хуков, использующих поле `decision` верхнего уровня, PreToolUse возвращает своё решение внутри объекта `hookSpecificOutput`. Это даёт более богатые возможности управления: четыре исхода (разрешить, запретить, запросить подтверждение или отложить), а также возможность изменить входные данные инструмента перед выполнением.2075Хуки `PreToolUse` могут управлять тем, будет ли выполнен вызов инструмента. В отличие от других хуков, использующих поле `decision` верхнего уровня, PreToolUse возвращает своё решение внутри объекта `hookSpecificOutput`. Это даёт более богатые возможности управления: четыре исхода (allow, deny, ask или defer), а также возможность изменять входные данные инструмента перед выполнением.

2050 2076 

2051| Поле | Описание |2077| Поле | Описание |

2052| :- | :- |2078| :- | :- |

2053| `permissionDecision` | `"allow"` пропускает запрос разрешения, за исключением [действий, которые не подтверждаются автоматически ни в одном режиме](/docs/ru/permission-modes#actions-no-mode-auto-approves), [чтения с сетевых путей](/docs/ru/permissions#network-paths), а также `AskUserQuestion` и `ExitPlanMode`, которым нужен [`updatedInput` в паре с ним](#allow-with-updatedinput). `"deny"` предотвращает вызов инструмента. `"ask"` просит пользователя подтвердить. `"defer"` корректно завершает работу, чтобы инструмент можно было возобновить позже. [Правила запрета и подтверждения](/docs/ru/permissions#manage-permissions) по-прежнему проверяются независимо от того, что возвращает хук |2079| `permissionDecision` | `"allow"` пропускает запрос разрешения, за исключением [действий, которые не одобряет автоматически ни один режим](/docs/ru/permission-modes#actions-no-mode-auto-approves), [чтения по сетевым путям](/docs/ru/permissions#network-paths), а также `AskUserQuestion` и `ExitPlanMode`, для которых нужен [`updatedInput` в паре с ним](#allow-with-updatedinput). `"deny"` предотвращает вызов инструмента. `"ask"` просит пользователя подтвердить. `"defer"` корректно завершает работу, чтобы инструмент можно было возобновить позже. [Правила запрета и запроса](/docs/ru/permissions#manage-permissions) всё равно оцениваются независимо от того, что возвращает хук |

2054| `permissionDecisionReason` | Для `"ask"` показывается пользователю в запросе разрешения. Когда Claude Code [отклоняет вызов](/docs/ru/headless#turn-off-permission-prompts-in-unattended-runs) в запуске `-p`, где никто не может ответить на этот запрос, Claude вместо этого читает причину в результате инструмента. Для `"deny"` показывается Claude. Для `"allow"` и `"defer"` записывается только в [лог отладки](#debug-hooks) |2080| `permissionDecisionReason` | Для `"ask"` показывается пользователю в запросе разрешения. Когда Claude Code [запрещает вызов](/docs/ru/headless#turn-off-permission-prompts-in-unattended-runs) в запуске `-p`, где никто не может ответить на этот запрос, Claude вместо этого читает причину в результате инструмента. Для `"deny"` показывается Claude. Для `"allow"` и `"defer"` записывается только в [лог отладки](#debug-hooks) |

2055| `updatedInput` | Изменяет входные параметры инструмента перед выполнением. Заменяет весь объект входных данных, поэтому включайте неизменённые поля вместе с изменёнными. Claude Code проверяет правила разрешений и [пригодность к автоматическому переводу в фон](/docs/ru/tools-reference#foreground-commands-that-move-to-the-background) команды Bash по входным данным, которые возвращает ваш хук, а не по тем, что отправил Claude. Сочетайте с `"allow"` для автоматического одобрения или с `"ask"`, чтобы показать пользователю изменённые входные данные. Для `"defer"` игнорируется |2081| `updatedInput` | Изменяет входные параметры инструмента перед выполнением. Заменяет весь объект входных данных, поэтому включайте неизменённые поля вместе с изменёнными. Claude Code оценивает правила разрешений и [пригодность команды Bash для автоматического перевода в фон](/docs/ru/tools-reference#foreground-commands-that-move-to-the-background) по входным данным, которые возвращает ваш хук, а не по тем, что отправил Claude. Сочетайте с `"allow"` для автоматического одобрения или с `"ask"`, чтобы показать пользователю изменённые входные данные. Для `"defer"` игнорируется |

2056| `additionalContext` | Строка, добавляемая в контекст Claude вместе с результатом инструмента. Игнорируется, когда `permissionDecision` равен `"defer"`. См. [Добавление контекста для Claude](#add-context-for-claude) |2082| `additionalContext` | Строка, добавляемая в контекст Claude вместе с результатом инструмента. Игнорируется, когда `permissionDecision` равен `"defer"`. См. [Добавление контекста для Claude](#add-context-for-claude) |

2057 2083 

2058Когда несколько хуков PreToolUse возвращают разные решения, приоритет такой: `deny` > `defer` > `ask` > `allow`.2084Когда несколько хуков PreToolUse возвращают разные решения, приоритет таков: `deny` > `defer` > `ask` > `allow`.

2059 2085 

2060Хук, который блокирует, завершаясь с кодом 2, обрабатывается так же, как `"deny"`: Claude видит сообщение из stderr как причину отказа.2086Хук, который блокирует через выход с кодом 2, обрабатывается так же, как `"deny"`: Claude видит сообщение stderr как причину запрета.

2061 2087 

2062Когда хук возвращает `"ask"`, запрос разрешения, показываемый пользователю, содержит метку, указывающую, откуда взялся хук: `[settings]` для хука из любого файла настроек или из frontmatter агента, `[plugin:<name>]` для хука плагина или `[skill]` для хука из frontmatter скилла. Это помогает пользователям понять, какой источник конфигурации запрашивает подтверждение.2088Когда хук возвращает `"ask"`, запрос разрешения, показываемый пользователю, содержит метку, указывающую, откуда взят хук: `[settings]` для хука из любого файла настроек или из frontmatter агента, `[plugin:<name>]` для хука плагина или `[skill]` для хука из frontmatter скилла. Это помогает пользователям понять, какой источник конфигурации запрашивает подтверждение.

2063 2089 

2064`"ask"` от хука также принудительно вызывает запрос разрешения в [авторежиме](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode): классификатор по-прежнему может отклонить вызов инструмента, но не может одобрить его молча. До версии v2.1.211 классификатор мог одобрить команду Bash, выполняемую вне [песочницы](/docs/ru/sandboxing), не показывая запрос, затребованный хуком; при этом классификатор всё равно применял к этой команде собственные правила безопасности, а `"deny"` от хука всегда соблюдался.2090`"ask"` хука также принудительно вызывает запрос разрешения в [авторежиме](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode): классификатор по-прежнему может запретить вызов инструмента, но не может молча его одобрить. До v2.1.211 классификатор мог одобрить команду Bash, выполняемую вне [песочницы](/docs/ru/sandboxing), не показывая запрос, которого требовал хук; классификатор всё равно применял к этой команде собственные правила безопасности, а `"deny"` хука всегда соблюдался.

2065 2091 

2066```json theme={null}2092```json theme={null}

2067{2093{


2078```2104```

2079 2105 

2080<Note>2106<Note>

2081 Ранее PreToolUse использовал поля верхнего уровня `decision` и `reason`, но для этого события они объявлены устаревшими. Используйте вместо них `hookSpecificOutput.permissionDecision` и `hookSpecificOutput.permissionDecisionReason`. Устаревшие значения `"approve"` и `"block"` соответствуют `"allow"` и `"deny"`. Другие события, такие как PostToolUse и Stop, продолжают использовать поля верхнего уровня `decision` и `reason` в качестве текущего формата.2107 Ранее PreToolUse использовал поля `decision` и `reason` верхнего уровня, но для этого события они объявлены устаревшими. Используйте вместо них `hookSpecificOutput.permissionDecision` и `hookSpecificOutput.permissionDecisionReason`. Устаревшие значения `"approve"` и `"block"` соответствуют `"allow"` и `"deny"`. Другие события, такие как PostToolUse и Stop, по-прежнему используют `decision` и `reason` верхнего уровня в качестве текущего формата.

2082</Note>2108</Note>

2083 2109 

2084<h4 id="allow-with-updatedinput">2110<h4 id="allow-with-updatedinput">

2085 Инструменты, требующие взаимодействия с пользователем2111 Инструменты, требующие взаимодействия с пользователем

2086</h4>2112</h4>

2087 2113 

2088`AskUserQuestion` и `ExitPlanMode` требуют взаимодействия с пользователем. В [неинтерактивном режиме](/docs/ru/headless) с флагом `-p` Claude Code предлагает их только когда у запуска есть [хост разрешений](/docs/ru/headless#turn-off-permission-prompts-in-unattended-runs), который принимает запрос, например обратный вызов `canUseTool` в Agent SDK.2114`AskUserQuestion` и `ExitPlanMode` требуют взаимодействия с пользователем. В [неинтерактивном режиме](/docs/ru/headless) с флагом `-p` Claude Code предлагает их, только если у запуска есть [хост разрешений](/docs/ru/headless#turn-off-permission-prompts-in-unattended-runs), принимающий запрос, например callback `canUseTool` в Agent SDK.

2089 2115 

2090Хук `PreToolUse` удовлетворяет этому требованию, если делает следующее:2116Хук `PreToolUse` удовлетворяет этому требованию, если он делает следующее:

2091 2117 

20921. Читает входные данные инструмента из stdin21181. Считывает входные данные инструмента из stdin

20932. Собирает ответ через ваш собственный интерфейс21192. Собирает ответ через ваш собственный интерфейс

20943. Возвращает `permissionDecision: "allow"` вместе с `updatedInput`, содержащим ответ, чтобы инструмент выполнился без запроса21203. Возвращает `permissionDecision: "allow"` вместе с `updatedInput`, содержащим ответ, чтобы инструмент выполнился без запроса

2095 2121 


2117}2143}

2118```2144```

2119 2145 

2120Инструмент MCP, который сервер помечает с помощью [`_meta["anthropic/requiresUserInteraction"]`](/docs/ru/mcp#require-approval-for-a-specific-tool), устроен строже: хук не может пропустить его запрос подтверждения с помощью `"allow"`, с `updatedInput` или без него, поскольку Claude Code не может убедиться, что хук провёл взаимодействие, необходимое инструменту.2146MCP-инструмент, который сервер помечает с помощью [`_meta["anthropic/requiresUserInteraction"]`](/docs/ru/mcp#require-approval-for-a-specific-tool), обрабатывается строже: хук не может пропустить его запрос подтверждения с помощью `"allow"`, с `updatedInput` или без, поскольку Claude Code не может убедиться, что хук собрал взаимодействие, необходимое инструменту.

2121 2147 

2122<h4 id="defer-a-tool-call-for-later">2148<h4 id="defer-a-tool-call-for-later">

2123 Отложить вызов инструмента на потом2149 Отложить вызов инструмента на потом

2124</h4>2150</h4>

2125 2151 

2126`"defer"` предназначен для интеграций, которые запускают `claude -p` как подпроцесс и читают его вывод JSON, например приложения на Agent SDK или пользовательского интерфейса, построенного поверх Claude Code. Он позволяет вызывающему процессу приостановить Claude на вызове инструмента, собрать входные данные через собственный интерфейс и продолжить с того же места. Claude Code учитывает это значение только в [неинтерактивном режиме](/docs/ru/headless) с флагом `-p`. В интерактивных сессиях он записывает в лог предупреждение и игнорирует результат хука.2152`"defer"` предназначен для интеграций, которые запускают `claude -p` как подпроцесс и читают его вывод JSON, например приложение на Agent SDK или пользовательский интерфейс, построенный поверх Claude Code. Он позволяет вызывающему процессу приостановить Claude на вызове инструмента, собрать входные данные через свой интерфейс и продолжить с того же места. Claude Code учитывает это значение только в [неинтерактивном режиме](/docs/ru/headless) с флагом `-p`. В интерактивных сессиях он записывает в лог предупреждение и игнорирует результат хука.

2127 2153 

2128Типичный случай — инструмент `AskUserQuestion`: Claude хочет что-то спросить у пользователя, но нет терминала, в котором можно ответить. Запуск `-p` предлагает `AskUserQuestion` только когда у него есть [хост разрешений](/docs/ru/headless#turn-off-permission-prompts-in-unattended-runs), например инструмент MCP, передаваемый через `--permission-prompt-tool`, поэтому начинайте запуск с ним. Цикл работает так:2154Типичный случай — инструмент `AskUserQuestion`: Claude хочет что-то спросить у пользователя, но терминала для ответа нет. Запуск `-p` предлагает `AskUserQuestion` только при наличии [хоста разрешений](/docs/ru/headless#turn-off-permission-prompts-in-unattended-runs), например MCP-инструмента, который вы передаёте через `--permission-prompt-tool`, поэтому начинайте запуск с ним. Цикл работает так:

2129 2155 

21301. Claude вызывает `AskUserQuestion`. Срабатывает хук `PreToolUse`.21561. Claude вызывает `AskUserQuestion`. Срабатывает хук `PreToolUse`.

21312. Хук возвращает `permissionDecision: "defer"`. Инструмент не выполняется. Процесс завершается с `stop_reason: "tool_deferred"`, а ожидающий вызов инструмента сохраняется в транскрипте.21572. Хук возвращает `permissionDecision: "defer"`. Инструмент не выполняется. Процесс завершается с `stop_reason: "tool_deferred"`, а ожидающий вызов инструмента сохраняется в транскрипте.

21323. Вызывающий процесс читает `deferred_tool_use` из результата SDK, показывает вопрос в собственном интерфейсе и ждёт ответа.21583. Вызывающий процесс читает `deferred_tool_use` из результата SDK, показывает вопрос в своём интерфейсе и ждёт ответа.

21334. Вызывающий процесс выполняет `claude -p --resume <session-id>` с тем же хостом разрешений. Тот же вызов инструмента снова вызывает `PreToolUse`.21594. Вызывающий процесс выполняет `claude -p --resume <session-id>` с тем же хостом разрешений. Тот же вызов инструмента снова вызывает `PreToolUse`.

21345. Хук возвращает `permissionDecision: "allow"` с ответом в `updatedInput`. Инструмент выполняется, и Claude продолжает работу.21605. Хук возвращает `permissionDecision: "allow"` с ответом в `updatedInput`. Инструмент выполняется, и Claude продолжает работу.

2135 2161 


2149}2175}

2150```2176```

2151 2177 

2152Ограничений по таймауту или количеству повторных попыток нет. Сессия хранится на диске, пока вы её не возобновите, с учётом очистки по сроку хранения [`cleanupPeriodDays`](/docs/ru/settings-reference#cleanupperioddays), которая по умолчанию удаляет файлы сессий через 30 дней в соответствии с [правилами очистки по сроку хранения](/docs/ru/claude-directory#cleaned-up-automatically). Если ответ не готов к моменту возобновления, хук может снова вернуть `"defer"`, и процесс завершится так же. Вызывающий процесс сам решает, когда выйти из цикла, в итоге вернув из хука `"allow"` или `"deny"`.2178Нет ни таймаута, ни ограничения на повторные попытки. Сессия остаётся на диске, пока вы её не возобновите, с учётом очистки по сроку хранения [`cleanupPeriodDays`](/docs/ru/settings-reference#cleanupperioddays), которая по умолчанию удаляет файлы сессий через 30 дней согласно [правилам очистки по сроку хранения](/docs/ru/claude-directory#cleaned-up-automatically). Если ответ не готов к моменту возобновления, хук может снова вернуть `"defer"`, и процесс завершится так же. Вызывающий процесс сам решает, когда выйти из цикла, в конечном итоге возвращая из хука `"allow"` или `"deny"`.

2153 2179 

2154`"defer"` работает, только когда Claude делает в ходе один вызов инструмента. Если Claude делает несколько вызовов инструментов одновременно, `"defer"` игнорируется с предупреждением, и инструмент проходит обычный процесс проверки разрешений. Это ограничение существует потому, что при возобновлении можно повторно выполнить только один инструмент: нельзя отложить один вызов из пакета, не оставив остальные неразрешёнными.2180`"defer"` работает, только когда Claude делает один вызов инструмента за ход. Если Claude делает несколько вызовов инструментов одновременно, `"defer"` игнорируется с предупреждением, и инструмент проходит обычную процедуру проверки разрешений. Это ограничение существует потому, что при возобновлении можно повторно выполнить только один инструмент: нет способа отложить один вызов из пакета, не оставив остальные неразрешёнными.

2155 2181 

2156Если отложенный инструмент больше недоступен при возобновлении, процесс завершается с `stop_reason: "tool_deferred_unavailable"` и `is_error: true` до срабатывания хука. Это происходит, когда MCP-сервер, предоставлявший инструмент, не подключён в возобновлённой сессии. Данные `deferred_tool_use` всё равно включаются, чтобы вы могли определить, какой инструмент пропал.2182Если отложенный инструмент больше недоступен при возобновлении, процесс завершается с `stop_reason: "tool_deferred_unavailable"` и `is_error: true` до срабатывания хука. Это происходит, когда MCP-сервер, предоставлявший инструмент, не подключён для возобновлённой сессии. Данные `deferred_tool_use` всё равно включаются, чтобы вы могли определить, какой инструмент пропал.

2157 2183 

2158<Note>2184<Note>

2159 Чтобы возобновить отложенную сессию в режиме планирования, передайте [`--permission-prompt-tool`](/docs/ru/cli-reference#cli-flags) вместе с `--resume`, чтобы Claude Code мог представить план на утверждение. Другие условия см. в разделе [Возобновление в режиме планирования с `-p`](/docs/ru/sessions#resume-in-plan-mode-with-p). Требуется Claude Code v2.1.246 или новее.2185 Чтобы возобновить отложенную сессию в режиме планирования, передайте [`--permission-prompt-tool`](/docs/ru/cli-reference#cli-flags) вместе с `--resume`, чтобы Claude Code мог представить план на утверждение. Прочие условия см. в разделе [Возобновление в режиме планирования с `-p`](/docs/ru/sessions#resume-in-plan-mode-with-p). Требуется Claude Code v2.1.246 или новее.

2160 2186 

2161 При возобновлении с `-p` Claude Code не восстанавливает никакой другой сохранённый режим разрешений. Он запускается в том режиме разрешений, в котором запустился бы новый запуск `claude -p`, поэтому снова передайте `--permission-mode` или `--dangerously-skip-permissions`, если отложенная сессия их использовала. При возобновлении с `claude --resume <session-id>` без `-p` Claude Code восстанавливает сохранённый режим разрешений, за исключениями, перечисленными в разделе [режим разрешений при возобновлении](/docs/ru/sessions#permission-mode-on-resume).2187 При возобновлении с `-p` Claude Code не восстанавливает никакой другой сохранённый режим разрешений. Он начинает запуск в том режиме разрешений, в котором начался бы новый запуск `claude -p`, поэтому снова передайте `--permission-mode` или `--dangerously-skip-permissions`, если отложенная сессия их использовала. При возобновлении с `claude --resume <session-id>` без `-p` Claude Code восстанавливает сохранённый режим разрешений, за исключениями, перечисленными в разделе [режим разрешений при возобновлении](/docs/ru/sessions#permission-mode-on-resume).

2162</Note>2188</Note>

2163 2189 

2164<h3 id="permissionrequest">2190<h3 id="permissionrequest">

2165 PermissionRequest2191 PermissionRequest

2166</h3>2192</h3>

2167 2193 

2168Выполняется, когда Claude Code собирается запросить у вас разрешение на использование инструмента. В сессиях, которые не могут показать запрос, например у фоновых субагентов в [неинтерактивном режиме](/docs/ru/headless), Claude Code всё равно запускает эти хуки, и если ни один хук не возвращает решение, он отклоняет вызов инструмента. Для вызова, который доходит до `--permission-prompt-tool` или [обратного вызова `canUseTool`](/docs/ru/agent-sdk/permissions) в Agent SDK, хуки выполняются параллельно с вашим хостом, и применяется решение того, кто решит первым.2194Выполняется, когда Claude Code собирается запросить у вас разрешение на использование инструмента. В сессиях, которые не могут показать запрос, например у фоновых субагентов в [неинтерактивном режиме](/docs/ru/headless), Claude Code всё равно запускает эти хуки, и если ни один хук не вернёт решение, он запрещает вызов инструмента. Для вызова, который доходит до `--permission-prompt-tool` или [callback `canUseTool`](/docs/ru/agent-sdk/permissions) в Agent SDK, хуки выполняются параллельно с вашим хостом, и применяется решение того, кто примет его первым.

2169Используйте [управление решениями PermissionRequest](#permissionrequest-decision-control), чтобы разрешать или запрещать от имени пользователя.2195Используйте [управление решениями PermissionRequest](#permissionrequest-decision-control), чтобы разрешать или запрещать от имени пользователя.

2170 2196 

2171Используйте это событие, когда вам нужен сигнал в тот момент, когда Claude запрашивает разрешение на использование инструмента. Claude Code запускает хук [Notification](#notification) с типом `permission_prompt` только после того, как запрос прождёт около шести секунд.2197Используйте это событие, когда вам нужен сигнал в тот момент, когда Claude запрашивает разрешение на использование инструмента. Claude Code запускает хук [Notification](#notification) с типом `permission_prompt` только после того, как запрос прождёт около шести секунд.

2172 2198 

2173Claude Code не запускает хуки PermissionRequest для [сетевого запроса](/docs/ru/sandboxing#network-isolation) команды в песочнице. Чтобы получить сигнал об этом запросе, используйте тип уведомления `permission_prompt`.2199Claude Code не запускает хуки PermissionRequest для [сетевого запроса](/docs/ru/sandboxing#network-isolation) команды, выполняемой в песочнице. Чтобы получить сигнал для такого запроса, используйте тип уведомления `permission_prompt`.

2174 2200 

2175Сопоставляется с именем инструмента, с теми же значениями, что и PreToolUse.2201Сопоставляется с именем инструмента, с теми же значениями, что и PreToolUse.

2176 2202 


2178 Входные данные PermissionRequest2204 Входные данные PermissionRequest

2179</h4>2205</h4>

2180 2206 

2181Хуки PermissionRequest получают поля `tool_name` и `tool_input`, как хуки PreToolUse, но без `tool_use_id`. Для инструмента MCP они также получают объект [`mcp_server`](#pretooluse-input). Необязательный массив `permission_suggestions` содержит [обновления разрешений](#permission-update-entries), которые Claude Code предлагает для этого запроса, например добавление правила разрешения или изменение режима разрешений.2207Хуки PermissionRequest получают поля `tool_name` и `tool_input`, как и хуки PreToolUse, но без `tool_use_id`. Для инструмента MCP они также получают объект [`mcp_server`](#pretooluse-input). Необязательный массив `permission_suggestions` содержит [обновления разрешений](#permission-update-entries), которые Claude Code предлагает для этого запроса, например добавление разрешающего правила или изменение режима разрешений.

2182 2208 

2183Массив `permission_suggestions` не является точным списком вариантов, которые вы видите, поскольку каждое диалоговое окно разрешения формирует собственные варианты. Некоторые диалоговые окна, например для редактирования файлов, вообще не читают этот массив и выводят варианты из самого запроса. Диалоговое окно, которое его читает, всё равно может скрыть вариант, предложение для которого остаётся в массиве, например когда [`allowManagedPermissionRulesOnly`](/docs/ru/settings-reference#allowmanagedpermissionrulesonly) скрывает варианты сохранения правил. Оно также может предлагать варианты без соответствующей записи предложения, например [**Yes, and switch to auto mode**](/docs/ru/permission-modes#switch-permission-modes), который меняет режим разрешений напрямую, а не через обновление разрешений.2209Массив `permission_suggestions` не является точным списком вариантов, которые вы видите, поскольку каждое диалоговое окно разрешения формирует собственные варианты. Некоторые диалоговые окна, например окно для правок файлов, вообще не читают этот массив и получают варианты из самого запроса. Диалоговое окно, которое читает массив, всё равно может скрыть вариант, предложение для которого остаётся в массиве, например когда [`allowManagedPermissionRulesOnly`](/docs/ru/settings-reference#allowmanagedpermissionrulesonly) скрывает варианты сохранения правил. Оно также может предлагать варианты, для которых нет записи в предложениях, например [**Yes, and switch to auto mode**](/docs/ru/permission-modes#switch-permission-modes), который меняет режим разрешений напрямую, а не через обновление разрешений.

2184 2210 

2185Хуки PreToolUse выполняются перед каждым вызовом инструмента, независимо от того, требуется ли разрешение. Хуки PermissionRequest выполняются только когда Claude Code собирается запросить у вас разрешение или когда он иначе автоматически отклонил бы вызов, который не может показать запрос. Ни одно из этих событий не срабатывает для [`EndConversation`](/docs/ru/tools-reference#endconversation-tool-behavior).2211Хуки PreToolUse запускаются перед каждым вызовом инструмента, независимо от того, требуется ли для него разрешение. Хуки PermissionRequest запускаются только тогда, когда Claude Code собирается запросить у вас разрешение, или когда он в противном случае автоматически отклонил бы вызов, для которого невозможно показать запрос. Ни одно из этих событий не срабатывает для [`EndConversation`](/docs/ru/tools-reference#endconversation-tool-behavior).

2186 2212 

2187```json theme={null}2213```json theme={null}

2188{2214{


2211 Управление решениями PermissionRequest2237 Управление решениями PermissionRequest

2212</h4>2238</h4>

2213 2239 

2214Хуки `PermissionRequest` могут разрешать или отклонять запросы разрешений. Помимо [полей вывода JSON](#json-output), доступных всем хукам, скрипт хука может возвращать объект `decision` со следующими полями, специфичными для события:2240Хуки `PermissionRequest` могут разрешать или отклонять запросы разрешений. Помимо [полей вывода JSON](#json-output), доступных всем хукам, ваш скрипт хука может вернуть объект `decision` со следующими полями, специфичными для события:

2215 2241 

2216| Поле | Описание |2242| Поле | Описание |

2217| :- | :- |2243| :- | :- |

2218| `behavior` | `"allow"` предоставляет разрешение, `"deny"` отклоняет его. [Правила запрета и подтверждения](/docs/ru/permissions#manage-permissions) всё равно применяются, поэтому хук, вернувший `"allow"`, не переопределяет подходящее правило запрета |2244| `behavior` | `"allow"` предоставляет разрешение, `"deny"` отклоняет его. [Правила запрета и запроса](/docs/ru/permissions#manage-permissions) всё равно проверяются, поэтому хук, возвращающий `"allow"`, не переопределяет совпадающее правило запрета |

2219| `updatedInput` | Только для `"allow"`: изменяет входные параметры инструмента перед выполнением. Заменяет весь объект входных данных, поэтому включайте неизменённые поля вместе с изменёнными. Изменённые входные данные повторно проверяются по правилам запрета и подтверждения |2245| `updatedInput` | Только для `"allow"`: изменяет входные параметры инструмента перед выполнением. Заменяет весь входной объект, поэтому включайте неизменённые поля вместе с изменёнными. Изменённые входные данные повторно проверяются на соответствие правилам запрета и запроса |

2220| `updatedPermissions` | Только для `"allow"`: массив [записей обновления разрешений](#permission-update-entries) для применения, например добавление правила разрешения или изменение режима разрешений сессии |2246| `updatedPermissions` | Только для `"allow"`: массив [записей обновления разрешений](#permission-update-entries) для применения, например добавление разрешающего правила или изменение режима разрешений сессии |

2221| `message` | Только для `"deny"`: сообщает Claude, почему в разрешении отказано |2247| `message` | Только для `"deny"`: сообщает Claude, почему разрешение было отклонено |

2222| `interrupt` | Только для `"deny"`: если `true`, останавливает Claude |2248| `interrupt` | Только для `"deny"`: если `true`, останавливает Claude |

2223 2249 

2224Хук, завершающийся с кодом 2 без объекта `decision`, оставляет процесс разрешений без изменений, а его stderr отбрасывается. Чтобы предоставить или отклонить запрос, верните объект `decision`.2250Хук, завершающийся с кодом 2 без объекта `decision`, оставляет процесс обработки разрешения без изменений, а его stderr отбрасывается. Чтобы предоставить или отклонить запрос, верните объект `decision`.

2225 2251 

2226```json theme={null}2252```json theme={null}

2227{2253{


2241 Записи обновления разрешений2267 Записи обновления разрешений

2242</h4>2268</h4>

2243 2269 

2244Выходное поле `updatedPermissions` и [входное поле `permission_suggestions`](#permissionrequest-input) используют один и тот же массив объектов-записей. У каждой записи есть поле `type`, которое определяет остальные её поля, и поле `destination`, которое определяет, куда записывается изменение.2270Поле вывода `updatedPermissions` и [поле ввода `permission_suggestions`](#permissionrequest-input) используют один и тот же массив объектов-записей. Каждая запись имеет поле `type`, определяющее её остальные поля, и поле `destination`, которое управляет тем, куда записывается изменение.

2245 2271 

2246| `type` | Поля | Действие |2272| `type` | Поля | Эффект |

2247| :- | :- | :- |2273| :- | :- | :- |

2248| `addRules` | `rules`, `behavior`, `destination` | Добавляет правила разрешений. `rules` — это массив объектов `{toolName, ruleContent?}`. Опустите `ruleContent`, чтобы правило соответствовало всему инструменту. `behavior` принимает значение `"allow"`, `"deny"` или `"ask"` |2274| `addRules` | `rules`, `behavior`, `destination` | Добавляет правила разрешений. `rules` — массив объектов `{toolName, ruleContent?}`. Опустите `ruleContent`, чтобы правило соответствовало всему инструменту. `behavior` принимает значения `"allow"`, `"deny"` или `"ask"` |

2249| `replaceRules` | `rules`, `behavior`, `destination` | Заменяет все правила с указанным `behavior` в `destination` на переданные `rules` |2275| `replaceRules` | `rules`, `behavior`, `destination` | Заменяет все правила с указанным `behavior` в `destination` на переданные `rules` |

2250| `removeRules` | `rules`, `behavior`, `destination` | Удаляет совпадающие правила с указанным `behavior` |2276| `removeRules` | `rules`, `behavior`, `destination` | Удаляет совпадающие правила с указанным `behavior` |

2251| `setMode` | `mode`, `destination` | Изменяет режим разрешений. Допустимые режимы: `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan`, а также `manual` как псевдоним для `default` |2277| `setMode` | `mode`, `destination` | Изменяет режим разрешений. Допустимые режимы: `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan`, а также `manual` как псевдоним для `default` |

2252| `addDirectories` | `directories`, `destination` | Добавляет рабочие каталоги. `directories` — это массив строк с путями |2278| `addDirectories` | `directories`, `destination` | Добавляет рабочие каталоги. `directories` — массив строк с путями |

2253| `removeDirectories` | `directories`, `destination` | Удаляет рабочие каталоги |2279| `removeDirectories` | `directories`, `destination` | Удаляет рабочие каталоги |

2254 2280 

2255<Note>2281<Note>

2256 `setMode` со значением `bypassPermissions` действует только в том случае, если вы запустили сессию с уже доступным режимом обхода: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` или `permissions.defaultMode: "bypassPermissions"` в [пользовательских настройках, `--settings` или управляемых настройках](/docs/ru/settings-reference#permissions-defaultmode). В противном случае обновление ничего не делает. Обновление также ничего не делает, когда [`permissions.disableBypassPermissionsMode`](/docs/ru/permissions#managed-settings) отключает этот режим или когда сессия запускается в [ограниченном режиме](/docs/ru/cli-reference#cli-flags).2282 `setMode` с `bypassPermissions` вступает в силу, только если вы запустили сессию, когда режим обхода уже был доступен: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` или `permissions.defaultMode: "bypassPermissions"` в [пользовательских настройках, `--settings` или управляемых настройках](/docs/ru/settings-reference#permissions-defaultmode). В противном случае обновление ничего не делает. Обновление также ничего не делает, когда [`permissions.disableBypassPermissionsMode`](/docs/ru/permissions#managed-settings) отключает этот режим или когда сессия запускается в [ограниченном режиме](/docs/ru/cli-reference#cli-flags).

2257 2283 

2258 `bypassPermissions` никогда не сохраняется как `defaultMode`, независимо от `destination`.2284 `bypassPermissions` никогда не сохраняется как `defaultMode`, независимо от `destination`.

2259</Note>2285</Note>

2260 2286 

2261Поле `destination` в каждой записи определяет, останется ли изменение только в памяти или будет сохранено в файл настроек.2287Поле `destination` в каждой записи определяет, останется ли изменение в памяти или будет сохранено в файл настроек.

2262 2288 

2263| `destination` | Куда записывается |2289| `destination` | Куда записывается |

2264| :- | :- |2290| :- | :- |

2265| `session` | только в памяти, отбрасывается при завершении сессии |2291| `session` | только в памяти, отбрасывается по завершении сессии |

2266| `localSettings` | `.claude/settings.local.json` |2292| `localSettings` | `.claude/settings.local.json` |

2267| `projectSettings` | `.claude/settings.json` |2293| `projectSettings` | `.claude/settings.json` |

2268| `userSettings` | `~/.claude/settings.json` |2294| `userSettings` | `~/.claude/settings.json` |

2269 2295 

2270Хук может вернуть одну из полученных `permission_suggestions` в качестве собственного вывода `updatedPermissions`.2296Хук может вернуть одно из полученных `permission_suggestions` в качестве собственного вывода `updatedPermissions`.

2271 2297 

2272<h3 id="posttooluse">2298<h3 id="posttooluse">

2273 PostToolUse2299 PostToolUse

2274</h3>2300</h3>

2275 2301 

2276Выполняется сразу после успешного завершения инструмента.2302Запускается сразу после успешного завершения инструмента.

2277 2303 

2278Сопоставляется по имени инструмента, значения те же, что и для PreToolUse.2304Сопоставляется по имени инструмента, с теми же значениями, что и PreToolUse.

2279 2305 

2280Используйте более широкое сопоставление, когда имя инструмента не подходит в качестве фильтра:2306Используйте более широкое сопоставление, когда имя инструмента не подходит в качестве фильтра:

2281 2307 

2282* Чтобы запускать хук после успешного завершения любого инструмента, опустите `matcher` или задайте ему значение `"*"`. Тогда ваш хук может сам определить, что изменилось, например выполнив `git status --porcelain`, который также выводит неотслеживаемые файлы, пропускаемые `git diff`. Для неудавшихся вызовов инструментов добавьте тот же хук в [PostToolUseFailure](#posttoolusefailure).2308* Чтобы запускать хук после успешного завершения любого инструмента, опустите `matcher` или установите его в `"*"`. Тогда ваш хук может сам определить, что изменилось, например выполнив `git status --porcelain`, который также перечисляет неотслеживаемые файлы, пропускаемые `git diff`. Для вызовов инструментов, завершившихся с ошибкой, добавьте тот же хук в [PostToolUseFailure](#posttoolusefailure).

2283* Чтобы запускать хук при изменении определённого файла на диске, независимо от того, что его записало, используйте [FileChanged](#filechanged). Claude Code не запускает хук `PostToolUse` с matcher `Edit|Write`, когда тот же файл перезаписывает команда `Bash` или процесс вне Claude Code.2309* Чтобы запускать хук при изменении определённого файла на диске, независимо от того, кто его записал, используйте [FileChanged](#filechanged). Claude Code не запускает хук `PostToolUse` с matcher `Edit|Write`, когда тот же файл перезаписывает команда `Bash` или процесс вне Claude Code.

2284 2310 

2285<h4 id="posttooluse-input">2311<h4 id="posttooluse-input">

2286 Входные данные PostToolUse2312 Входные данные PostToolUse

2287</h4>2313</h4>

2288 2314 

2289Хуки `PostToolUse` срабатывают после того, как инструмент уже успешно выполнился. Входные данные включают как `tool_input` — аргументы, переданные инструменту, — так и `tool_response` — возвращённый им результат. Точная схема обоих полей зависит от инструмента. Пути в `tool_input` для файловых инструментов приходят в том же формате, что и для [PreToolUse](#pretooluse-input): всегда абсолютные, с нативными разделителями платформы, то есть с обратными слешами в Windows. Для инструмента MCP входные данные также содержат объект [`mcp_server`](#pretooluse-input).2315Хуки `PostToolUse` срабатывают после того, как инструмент уже успешно выполнился. Входные данные включают как `tool_input` — аргументы, переданные инструменту, так и `tool_response` — возвращённый им результат. Точная схема обоих полей зависит от инструмента. Пути в `tool_input` файловых инструментов приходят в том же формате, что и для [PreToolUse](#pretooluse-input): всегда абсолютные, с нативными разделителями платформы, то есть с обратными слешами в Windows. Для инструмента MCP входные данные также содержат объект [`mcp_server`](#pretooluse-input).

2290 2316 

2291```json theme={null}2317```json theme={null}

2292{2318{


2311 2337 

2312| Поле | Описание |2338| Поле | Описание |

2313| :- | :- |2339| :- | :- |

2314| `duration_ms` | Необязательное. Время выполнения инструмента в миллисекундах. Не включает время, проведённое в запросах разрешения и хуках PreToolUse |2340| `duration_ms` | Необязательное. Время выполнения инструмента в миллисекундах. Не включает время, проведённое в запросах разрешений и хуках PreToolUse |

2315 2341 

2316<h4 id="posttooluse-decision-control">2342<h4 id="posttooluse-decision-control">

2317 Управление решениями PostToolUse2343 Управление решениями PostToolUse

2318</h4>2344</h4>

2319 2345 

2320Хуки `PostToolUse` могут передавать Claude обратную связь после выполнения инструмента. Помимо [выходных полей JSON](#json-output), доступных всем хукам, ваш скрипт хука может возвращать следующие поля, специфичные для события:2346Хуки `PostToolUse` могут предоставлять Claude обратную связь после выполнения инструмента. Помимо [полей вывода JSON](#json-output), доступных всем хукам, ваш скрипт хука может вернуть следующие поля, специфичные для события:

2321 2347 

2322| Поле | Описание |2348| Поле | Описание |

2323| :- | :- |2349| :- | :- |

2324| `decision` | `"block"` добавляет `reason` рядом с результатом инструмента. Claude по-прежнему видит исходный вывод; чтобы заменить его, используйте `updatedToolOutput` |2350| `decision` | `"block"` добавляет `reason` рядом с результатом инструмента. Claude по-прежнему видит исходный вывод; чтобы заменить его, используйте `updatedToolOutput` |

2325| `reason` | Пояснение, показываемое Claude, когда `decision` равно `"block"` |2351| `reason` | Объяснение, показываемое Claude, когда `decision` равно `"block"` |

2326| `additionalContext` | Строка, добавляемая в контекст Claude вместе с результатом инструмента. См. [Добавление контекста для Claude](#add-context-for-claude) |2352| `additionalContext` | Строка, добавляемая в контекст Claude вместе с результатом инструмента. См. [Добавление контекста для Claude](#add-context-for-claude) |

2327| `classifierContext` | Короткая заметка о результате этого вызова для классификатора [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), а не для Claude. См. [Аннотирование результата для классификатора авторежима](#annotate-a-result-for-the-auto-mode-classifier). Требуется Claude Code v2.1.236 или новее |2353| `classifierContext` | Краткое примечание о результате этого вызова, предназначенное для классификатора [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), а не для Claude. См. [Аннотирование результата для классификатора авторежима](#annotate-a-result-for-the-auto-mode-classifier). Требуется Claude Code v2.1.236 или новее |

2328| `updatedToolOutput` | Заменяет вывод инструмента переданным значением до того, как он будет отправлен Claude. Значение должно соответствовать форме вывода инструмента |2354| `updatedToolOutput` | Заменяет вывод инструмента указанным значением до отправки его Claude. Значение должно соответствовать форме вывода инструмента |

2329| `updatedMCPToolOutput` | Заменяет вывод только для [инструментов MCP](#match-mcp-tools). Предпочтительнее использовать `updatedToolOutput`, который работает для всех инструментов |2355| `updatedMCPToolOutput` | Заменяет вывод только для [инструментов MCP](#match-mcp-tools). Предпочтительнее использовать `updatedToolOutput`, который работает для всех инструментов |

2330 2356 

2331В примере ниже заменяется вывод вызова `Bash`. Значение замены соответствует форме вывода инструмента `Bash`:2357Пример ниже заменяет вывод вызова `Bash`. Значение замены соответствует форме вывода инструмента `Bash`:

2332 2358 

2333```json theme={null}2359```json theme={null}

2334{2360{


2346```2372```

2347 2373 

2348<Warning>2374<Warning>

2349 `updatedToolOutput` меняет только то, что видит Claude. К моменту срабатывания хука инструмент уже выполнился, поэтому все записанные файлы, выполненные команды или отправленные сетевые запросы уже вступили в силу. Телеметрия, такая как спаны инструментов OpenTelemetry и аналитические события, также фиксирует исходный вывод до запуска хука. Чтобы предотвратить или изменить вызов инструмента до его выполнения, используйте вместо этого хук [PreToolUse](#pretooluse).2375 `updatedToolOutput` изменяет только то, что видит Claude. К моменту срабатывания хука инструмент уже выполнился, поэтому все записанные файлы, выполненные команды или отправленные сетевые запросы уже вступили в силу. Телеметрия, такая как спаны инструментов OpenTelemetry и аналитические события, также фиксирует исходный вывод до запуска хука. Чтобы предотвратить или изменить вызов инструмента до его выполнения, используйте вместо этого хук [PreToolUse](#pretooluse).

2350 2376 

2351 Значение замены должно соответствовать форме вывода инструмента. Встроенные инструменты возвращают структурированные объекты, а не простые строки. Например, `Bash` возвращает объект с полями `stdout`, `stderr`, `interrupted` и `isImage`. Для встроенных инструментов значение, не соответствующее схеме вывода инструмента, игнорируется, и используется исходный вывод. Вывод инструментов MCP передаётся без проверки схемы. Удаление сведений об ошибках, которые нужны Claude, может привести к тому, что он продолжит работу на основе ложного предположения.2377 Значение замены должно соответствовать форме вывода инструмента. Встроенные инструменты возвращают структурированные объекты, а не простые строки. Например, `Bash` возвращает объект с полями `stdout`, `stderr`, `interrupted` и `isImage`. Для встроенных инструментов значение, не соответствующее схеме вывода инструмента, игнорируется, и используется исходный вывод. Вывод инструментов MCP передаётся без проверки схемы. Удаление сведений об ошибках, которые нужны Claude, может привести к тому, что он продолжит работу на основе ложного предположения.

2352</Warning>2378</Warning>


2355 Аннотирование результата для классификатора авторежима2381 Аннотирование результата для классификатора авторежима

2356</h4>2382</h4>

2357 2383 

2358Верните `classifierContext`, чтобы отправить короткую заметку о результате вызова инструмента классификатору [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), а не Claude. Классификатор [никогда не получает сами результаты инструментов](/docs/ru/permission-modes#how-the-classifier-evaluates-actions), поэтому это поле — поддерживаемый способ сообщить ему что-либо о том, что вернул вызов, прежде чем он будет проверять последующие действия. Для этого поля требуется Claude Code v2.1.236 или новее.2384Верните `classifierContext`, чтобы отправить краткое примечание о результате вызова инструмента классификатору [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), а не Claude. Классификатор [никогда не получает сами результаты инструментов](/docs/ru/permission-modes#how-the-classifier-evaluates-actions), поэтому это поле — поддерживаемый способ сообщить ему что-то о том, что вернул вызов, прежде чем он будет проверять последующие действия. Для этого поля требуется Claude Code v2.1.236 или новее.

2359 2385 

2360В примере ниже классификатору сообщается, откуда получен вывод запроса:2386Пример ниже сообщает классификатору, откуда получен вывод запроса:

2361 2387 

2362```json theme={null}2388```json theme={null}

2363{2389{


2368}2394}

2369```2395```

2370 2396 

2371Какой вес классификатор придаёт заметке, зависит от того, где вы настроили хук:2397Какой вес классификатор придаёт примечанию, зависит от того, где вы настроили хук:

2372 2398 

2373* **Хуки, настроенные в Claude Code**: для хуков из файлов настроек, плагинов, скиллов и frontmatter агентов классификатор рассматривает заметку как непроверенный контекст, предоставленный приложением. Заметка никогда не устанавливает намерение пользователя, и если в ней утверждается, что вы что-то одобрили или запросили, классификатор сверяет это утверждение с вашими собственными сообщениями в диалоге2399* **Хуки, настроенные в Claude Code**: для хуков из файлов настроек, плагинов, скиллов и frontmatter агентов классификатор рассматривает примечание как непроверенный контекст, предоставленный приложением. Примечание никогда не устанавливает намерение пользователя, и если оно утверждает, что вы что-то одобрили или запросили, классификатор сверяет это утверждение с вашими собственными сообщениями в диалоге

2374* **Внутрипроцессные обратные вызовы Agent SDK**: когда приложение, встраивающее Claude Code, регистрирует хук как [обратный вызов TypeScript SDK](/docs/ru/agent-sdk/hooks) и возвращает заметку во время активной сессии, классификатор может рассматривать переданное в заметке утверждение пользователя как намерение пользователя. Такое утверждение может удовлетворить требование согласия, которое классификатор принял бы из отправленного вами сообщения, но оно никогда не снимает блокировку, которую не смогло бы снять и ваше собственное сообщение. После возобновления сессии Claude Code рассматривает восстановленные заметки как непроверенный контекст. Когда хуки из обеих групп аннотируют один и тот же вызов, классификатор рассматривает объединённую заметку как непроверенную2400* **Внутрипроцессные обратные вызовы Agent SDK**: когда приложение, встраивающее Claude Code, регистрирует хук как [обратный вызов TypeScript SDK](/docs/ru/agent-sdk/hooks) и возвращает примечание во время активной сессии, классификатор может учитывать переданное в примечании утверждение пользователя как намерение пользователя. Такое утверждение может удовлетворить требование согласия, которое классификатор принял бы от отправленного вами сообщения, но оно никогда не снимает блокировку, которую не смогло бы снять и ваше собственное сообщение. После возобновления сессии Claude Code рассматривает восстановленные примечания как непроверенный контекст. Когда хуки из обеих групп аннотируют один и тот же вызов, классификатор рассматривает объединённое примечание как непроверенное

2375 2401 

2376Claude Code применяет следующие ограничения при доставке заметки:2402При доставке примечания Claude Code применяет следующие ограничения:

2377 2403 

2378* **Длина**: Claude Code ограничивает заметки для одного вызова инструмента 2000 символами и обрезает остальное. Ограничение общее для всех хуков, отвечающих на этот вызов2404* **Длина**: Claude Code ограничивает примечания для одного вызова инструмента 2000 символами и обрезает остальное. Ограничение общее для всех хуков, отвечающих на этот вызов

2379* **Только синхронные ответы**: Claude Code игнорирует это поле в ответе хука, который [выполняется в фоне](#run-hooks-in-the-background), потому что такой ответ приходит уже после того, как Claude Code зафиксирует результат инструмента2405* **Только синхронные ответы**: Claude Code игнорирует это поле в ответе хука, который [выполняется в фоне](#run-hooks-in-the-background), поскольку такой ответ приходит после того, как Claude Code записал результат инструмента

2380* **Вызовы, которые классификатор не фиксирует**: транскрипт классификатора опускает поиск только для чтения, такой как чтение файлов и поиск. Claude Code отбрасывает заметку, прикреплённую к одному из таких вызовов2406* **Вызовы, которые классификатор не записывает**: транскрипт классификатора не включает операции только для чтения, такие как чтение файлов и поиск. Claude Code отбрасывает примечание, прикреплённое к одному из таких вызовов

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

2382 2408 

2383<Warning>2409<Warning>

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

2385</Warning>2411</Warning>

2386 2412 

2387<h3 id="posttoolusefailure">2413<h3 id="posttoolusefailure">

2388 PostToolUseFailure2414 PostToolUseFailure

2389</h3>2415</h3>

2390 2416 

2391Выполняется, когда инструмент, начавший выполнение, завершается с ошибкой: инструмент выбросил ошибку или инструмент MCP вернул результат с ошибкой. Используйте его, чтобы логировать сбои, отправлять оповещения или давать Claude корректирующую обратную связь.2417Запускается, когда инструмент, начавший выполнение, завершается с ошибкой: инструмент выбросил ошибку или инструмент MCP вернул результат с ошибкой. Используйте это для логирования сбоев, отправки оповещений или предоставления Claude корректирующей обратной связи.

2392 2418 

2393Сопоставляется по имени инструмента, значения те же, что и для PreToolUse.2419Сопоставляется по имени инструмента, с теми же значениями, что и PreToolUse.

2394 2420 

2395<Note>2421<Note>

2396 Это событие не срабатывает для вызовов инструментов, отклонённых до выполнения: неизвестное имя инструмента, входные данные, не прошедшие проверку схемы или специфичную для инструмента проверку, либо отказ в разрешении. Отклонения при проверке возвращаются как результаты `tool_use_error` и происходят до запуска хуков, поэтому они не вызывают ни `PreToolUse`, ни `PostToolUseFailure`. Отказы в разрешении вызывают `PreToolUse`, но не это событие; см. [PermissionDenied](#permissiondenied).2422 Это событие не срабатывает для вызовов инструментов, отклонённых до выполнения: неизвестное имя инструмента, входные данные, не прошедшие проверку схемы или специфичную для инструмента валидацию, или отказ в разрешении. Отклонения при валидации возвращаются как результаты `tool_use_error` и происходят до запуска хуков, поэтому не вызывают ни `PreToolUse`, ни `PostToolUseFailure`. Отказы в разрешении вызывают `PreToolUse`, но не это событие; см. [PermissionDenied](#permissiondenied).

2397</Note>2423</Note>

2398 2424 

2399<h4 id="posttoolusefailure-input">2425<h4 id="posttoolusefailure-input">


2423 2449 

2424| Поле | Описание |2450| Поле | Описание |

2425| :- | :- |2451| :- | :- |

2426| `error` | Строка с описанием того, что пошло не так. Формат зависит от инструмента, завершившегося с ошибкой |2452| `error` | Строка, описывающая, что пошло не так. Формат зависит от инструмента, завершившегося с ошибкой |

2427| `is_interrupt` | Необязательное логическое значение. True, когда сбой дошёл до Claude Code как прерывание, а не как ошибка, о которой сообщил инструмент. Отмена работающего инструмента не вызывает этот хук; вместо этого результат инструмента содержит сообщение о прерывании |2453| `is_interrupt` | Необязательное логическое значение. True, когда сбой дошёл до Claude Code как прерывание, а не как ошибка, о которой сообщил инструмент. Отмена выполняющегося инструмента не вызывает этот хук; вместо этого результат инструмента содержит сообщение о прерывании |

2428| `duration_ms` | Необязательное. Время выполнения инструмента в миллисекундах. Не включает время, проведённое в запросах разрешения и хуках PreToolUse |2454| `duration_ms` | Необязательное. Время выполнения инструмента в миллисекундах. Не включает время, проведённое в запросах разрешений и хуках PreToolUse |

2429 2455 

2430Строка `error`, как правило, совпадает с текстом, который Claude получает в качестве результата неудавшегося инструмента. Её формат зависит от инструмента и типа сбоя. Ориентируйте логику хука на `tool_name`, `is_interrupt` и первую строку `Exit code N`; остальную часть строки рассматривайте как текст для отображения, а не как стабильный формат.2456Строка `error` обычно совпадает с текстом, который Claude получает как результат неудавшегося инструмента. Её формат зависит от инструмента и сбоя. Ориентируйте свой хук на `tool_name`, `is_interrupt` и первую строку `Exit code N`; остальную часть строки рассматривайте как текст для отображения, а не как стабильный формат.

2431 2457 

2432* Для Bash и PowerShell команда, которая выполнилась и завершилась, даёт первую строку `Exit code N`, а затем весь вывод команды одним блоком, в котором stdout и stderr перемешаны2458* Для Bash и PowerShell команда, которая выполнилась и завершилась, даёт первую строку `Exit code N`, а затем любой вывод команды одним блоком, где stdout и stderr перемежаются

2433* Данные события также могут содержать просто сообщение о сбое без строки с кодом выхода, если Claude Code не смог запустить сам процесс оболочки2459* Данные события также могут содержать просто сообщение о сбое без строки с кодом выхода, когда Claude Code не смог запустить сам процесс оболочки

2434* Claude Code обрезает середину длинных строк, вставляя маркер `... [N characters truncated] ...`, и может добавлять собственные строки, например `Command timed out after 2m 0s`2460* Claude Code обрезает длинные строки посередине вокруг маркера `... [N characters truncated] ...` и может вставлять собственные строки, например `Command timed out after 2m 0s`

2435 2461 

2436<h4 id="posttoolusefailure-decision-control">2462<h4 id="posttoolusefailure-decision-control">

2437 Управление решениями PostToolUseFailure2463 Управление решениями PostToolUseFailure

2438</h4>2464</h4>

2439 2465 

2440Хуки `PostToolUseFailure` могут передавать Claude контекст после сбоя инструмента. Помимо [выходных полей JSON](#json-output), доступных всем хукам, ваш скрипт хука может возвращать следующие поля, специфичные для события:2466Хуки `PostToolUseFailure` могут предоставлять Claude контекст после сбоя инструмента. Помимо [полей вывода JSON](#json-output), доступных всем хукам, ваш скрипт хука может вернуть следующие поля, специфичные для события:

2441 2467 

2442| Поле | Описание |2468| Поле | Описание |

2443| :- | :- |2469| :- | :- |


2456 PostToolBatch2482 PostToolBatch

2457</h3>2483</h3>

2458 2484 

2459Выполняется один раз после того, как все вызовы инструментов в пакете завершены, перед тем как Claude Code отправит следующий запрос модели. `PostToolUse` срабатывает один раз для каждого инструмента, а значит, срабатывает параллельно, когда Claude делает параллельные вызовы инструментов. `PostToolBatch` срабатывает ровно один раз с полным пакетом, поэтому это подходящее место для внедрения контекста, который зависит от набора выполненных инструментов, а не от какого-то одного инструмента. Для этого события нет matcher.2485Запускается один раз после того, как все вызовы инструментов в пакете завершены, до того как Claude Code отправит следующий запрос модели. `PostToolUse` срабатывает один раз для каждого инструмента, а значит, срабатывает параллельно, когда Claude делает параллельные вызовы инструментов. `PostToolBatch` срабатывает ровно один раз со всем пакетом, поэтому это подходящее место для внедрения контекста, который зависит от набора выполненных инструментов, а не от какого-либо одного инструмента. Для этого события нет matcher.

2460 2486 

2461<h4 id="posttoolbatch-input">2487<h4 id="posttoolbatch-input">

2462 Входные данные PostToolBatch2488 Входные данные PostToolBatch

2463</h4>2489</h4>

2464 2490 

2465Помимо [общих входных полей](#common-input-fields), хуки PostToolBatch получают `tool_calls` — массив, описывающий каждый вызов инструмента в пакете:2491Помимо [общих полей входных данных](#common-input-fields), хуки PostToolBatch получают `tool_calls` — массив, описывающий каждый вызов инструмента в пакете:

2466 2492 

2467```json theme={null}2493```json theme={null}

2468{2494{


2488}2514}

2489```2515```

2490 2516 

2491`tool_response` содержит то же содержимое, которое модель получает в соответствующем блоке `tool_result`. Значение — это сериализованная строка или массив блоков содержимого, точно в том виде, в каком его выдал инструмент. Для `Read` это означает текст с префиксами номеров строк, а не сырое содержимое файла. Ответы могут быть большими, поэтому разбирайте только нужные вам поля.2517`tool_response` содержит то же содержимое, которое модель получает в соответствующем блоке `tool_result`. Значение — это сериализованная строка или массив блоков содержимого, ровно в том виде, в каком его выдал инструмент. Для `Read` это означает текст с префиксами номеров строк, а не необработанное содержимое файла. Ответы могут быть большими, поэтому разбирайте только нужные поля.

2492 2518 

2493<Note>2519<Note>

2494 Форма `tool_response` отличается от формы в `PostToolUse`. `PostToolUse` передаёт структурированный объект `Output` инструмента, например `{filePath: "...", type: "create"}` для `Write`; `PostToolBatch` передаёт сериализованное содержимое `tool_result`, которое видит модель.2520 Форма `tool_response` отличается от формы в `PostToolUse`. `PostToolUse` передаёт структурированный объект `Output` инструмента, например `{filePath: "...", type: "create"}` для `Write`; `PostToolBatch` передаёт сериализованное содержимое `tool_result`, которое видит модель.


2498 Управление решениями PostToolBatch2524 Управление решениями PostToolBatch

2499</h4>2525</h4>

2500 2526 

2501Хуки `PostToolBatch` могут внедрять контекст для Claude. Помимо [выходных полей JSON](#json-output), доступных всем хукам, ваш скрипт хука может возвращать следующие поля, специфичные для события:2527Хуки `PostToolBatch` могут внедрять контекст для Claude. Помимо [полей вывода JSON](#json-output), доступных всем хукам, ваш скрипт хука может вернуть следующие поля, специфичные для события:

2502 2528 

2503| Поле | Описание |2529| Поле | Описание |

2504| :- | :- |2530| :- | :- |

2505| `additionalContext` | Строка контекста, внедряемая один раз перед следующим вызовом модели. Подробности доставки, что в неё помещать и как возобновлённые сессии обрабатывают прошлые значения, см. в разделе [Добавление контекста для Claude](#add-context-for-claude) |2531| `additionalContext` | Строка контекста, внедряемая один раз перед следующим вызовом модели. См. [Добавление контекста для Claude](#add-context-for-claude), где описаны подробности доставки, что в неё помещать и как возобновлённые сессии обрабатывают прошлые значения |

2506 2532 

2507```json theme={null}2533```json theme={null}

2508{2534{


2513}2539}

2514```2540```

2515 2541 

2516Возврат `decision: "block"` или `continue: false` останавливает агентный цикл перед следующим вызовом модели. Сообщение о блокировке берётся из JSON-поля `reason` или `stopReason` либо из stderr при коде выхода 2. Вы видите его как предупреждение в транскрипте, и оно остаётся в диалоге, поэтому Claude видит его, когда диалог продолжается.2542Возврат `decision: "block"` или `continue: false` останавливает агентный цикл перед следующим вызовом модели. Сообщение о блокировке берётся из JSON-поля `reason` или `stopReason` либо из stderr при коде выхода 2. Вы видите его как предупреждение в транскрипте, и оно остаётся в диалоге, поэтому Claude видит его при продолжении диалога.

2517 2543 

2518<h3 id="permissiondenied">2544<h3 id="permissiondenied">

2519 PermissionDenied2545 PermissionDenied

2520</h3>2546</h3>

2521 2547 

2522Выполняется, когда [авторежим](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) отклоняет вызов инструмента, в том числе когда он отклоняет вызов без вердикта классификатора, потому что [проверка безопасности, отдельная от авторежима, отклонила собственный запрос классификатора](/docs/ru/errors#auto-mode-cannot-determine-the-safety-of-an-action) или его ответ не удалось разобрать. Этот хук срабатывает только в авторежиме: он не запускается, когда вы вручную отклоняете диалоговое окно разрешения, когда хук `PreToolUse` блокирует вызов или когда срабатывает правило `deny`. Используйте его, чтобы логировать отказы, корректировать конфигурацию или сообщать модели, что она может повторить попытку вызова инструмента.2548Запускается, когда [авторежим](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) отклоняет вызов инструмента, в том числе когда он отклоняет его без вердикта классификатора, потому что [проверка безопасности, отдельная от авторежима, отклонила собственный запрос классификатора](/docs/ru/errors#auto-mode-cannot-determine-the-safety-of-an-action) или его ответ не удалось разобрать. Этот хук срабатывает только в авторежиме: он не запускается, когда вы вручную отклоняете диалоговое окно разрешения, когда хук `PreToolUse` блокирует вызов или когда срабатывает правило `deny`. Используйте его для логирования отказов, корректировки конфигурации или для того, чтобы сообщить модели, что она может повторить попытку вызова инструмента.

2523 2549 

2524Сопоставляется по имени инструмента, значения те же, что и для PreToolUse.2550Сопоставляется по имени инструмента, с теми же значениями, что и PreToolUse.

2525 2551 

2526<h4 id="permissiondenied-input">2552<h4 id="permissiondenied-input">

2527 Входные данные PermissionDenied2553 Входные данные PermissionDenied

2528</h4>2554</h4>

2529 2555 

2530Помимо [общих входных полей](#common-input-fields), хуки PermissionDenied получают `tool_name`, `tool_input`, `tool_use_id` и `reason`. Для инструмента MCP они также получают объект [`mcp_server`](#pretooluse-input).2556Помимо [общих полей входных данных](#common-input-fields), хуки PermissionDenied получают `tool_name`, `tool_input`, `tool_use_id` и `reason`. Для инструмента MCP они также получают объект [`mcp_server`](#pretooluse-input).

2531 2557 

2532```json theme={null}2558```json theme={null}

2533{2559{


2548 2574 

2549| Поле | Описание |2575| Поле | Описание |

2550| :- | :- |2576| :- | :- |

2551| `reason` | Причина отказа. Для вердикта классификатора в большинстве сессий в ней указывается сработавшее правило в квадратных скобках, например `[Data Exfiltration]`; другие формы см. в разделе [Просмотр отказов](/docs/ru/auto-mode-config#review-denials). Для [отказа без вердикта](#permissiondenied-decision-control) она начинается с `Auto mode could not evaluate this action and is blocking it for safety`. Для отказа из-за недоступности модели классификатора это фиксированный текст `Classifier unavailable` |2577| `reason` | Причина отказа. Для вердикта классификатора в большинстве сессий содержит название сработавшего правила в квадратных скобках, например `[Data Exfiltration]`; другие формы см. в разделе [Просмотр отказов](/docs/ru/auto-mode-config#review-denials). Для [отказа без вердикта](#permissiondenied-decision-control) начинается с `Auto mode could not evaluate this action and is blocking it for safety`. Для отказа из-за недоступности модели классификатора это фиксированный текст `Classifier unavailable` |

2552 2578 

2553<h4 id="permissiondenied-decision-control">2579<h4 id="permissiondenied-decision-control">

2554 Управление решениями PermissionDenied2580 Управление решениями PermissionDenied

2555</h4>2581</h4>

2556 2582 

2557Хуки PermissionDenied могут сообщить модели, что она может повторить попытку отклонённого вызова инструмента. Верните JSON-объект с `hookSpecificOutput.retry`, равным `true`:2583Хуки PermissionDenied могут сообщить модели, что она может повторить попытку отклонённого вызова инструмента. Верните JSON-объект с `hookSpecificOutput.retry`, установленным в `true`:

2558 2584 

2559```json theme={null}2585```json theme={null}

2560{2586{


2567 2593 

2568Когда `retry` равно `true`, Claude Code добавляет в диалог сообщение, сообщающее модели, что она может повторить попытку вызова инструмента. Сам отказ Claude Code не отменяет. Если ваш хук не возвращает JSON или возвращает `retry: false`, отказ остаётся в силе, и модель получает исходное сообщение об отклонении.2594Когда `retry` равно `true`, Claude Code добавляет в диалог сообщение, сообщающее модели, что она может повторить попытку вызова инструмента. Сам отказ Claude Code не отменяет. Если ваш хук не возвращает JSON или возвращает `retry: false`, отказ остаётся в силе, и модель получает исходное сообщение об отклонении.

2569 2595 

2570Claude Code игнорирует `retry: true`, когда классификатор не вынес [вердикта по действию](/docs/ru/errors#auto-mode-cannot-determine-the-safety-of-an-action): его ответ не удалось разобрать или проверка безопасности, отдельная от авторежима, отклонила собственный запрос классификатора. Для таких отказов Claude Code уже сообщает модели в сообщении об отклонении, следует ли повторить попытку позже или двигаться дальше.2596Claude Code игнорирует `retry: true`, когда классификатор [не вынес вердикта по действию](/docs/ru/errors#auto-mode-cannot-determine-the-safety-of-an-action): его ответ не удалось разобрать или проверка безопасности, отдельная от авторежима, отклонила собственный запрос классификатора. Для таких отказов Claude Code уже сообщает модели в сообщении об отклонении, следует ли повторить попытку позже или двигаться дальше.

2571 2597 

2572<h3 id="notification">2598<h3 id="notification">

2573 Notification2599 Notification

2574</h3>2600</h3>

2575 2601 

2576Выполняется, когда Claude Code отправляет уведомления. Сопоставляется по типу уведомления. Опустите matcher, чтобы запускать хуки для всех типов уведомлений.2602Запускается, когда Claude Code отправляет уведомления. Сопоставляется по типу уведомления. Опустите matcher, чтобы запускать хуки для всех типов уведомлений.

2577 2603 

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

2579 2605 

2580| Matcher | Когда срабатывает |2606| Matcher | Когда срабатывает |

2581| :- | :- |2607| :- | :- |

2582| `permission_prompt` | Claude нужно, чтобы вы подтвердили использование инструмента или [сетевой запрос](/docs/ru/sandboxing#network-isolation) команды в песочнице, и запрос ожидает около шести секунд |2608| `permission_prompt` | Claude нужно ваше подтверждение для использования инструмента или [сетевого запроса](/docs/ru/sandboxing#network-isolation) команды в песочнице, и запрос ожидает около шести секунд |

2583| `idle_prompt` | Claude закончил отвечать около 60 секунд назад, и с тех пор вы ничего не вводили |2609| `idle_prompt` | Claude закончил отвечать около 60 секунд назад, и с тех пор вы ничего не вводили |

2584| `auth_success` | Аутентификация завершена |2610| `auth_success` | Аутентификация завершена |

2585| `elicitation_dialog` | MCP-сервер открывает форму запроса данных, и вы ничего не вводили около шести секунд |2611| `elicitation_dialog` | MCP-сервер открывает форму запроса данных, и вы ничего не вводили около шести секунд |

2586| `elicitation_url_dialog` | MCP-сервер просит вас открыть URL в браузере, и вы ничего не вводили около шести секунд |2612| `elicitation_url_dialog` | MCP-сервер просит вас открыть URL в браузере, и вы ничего не вводили около шести секунд |

2587| `elicitation_complete` | MCP-сервер сообщает, что [запрос данных в режиме URL](#elicitation-input) завершён |2613| `elicitation_complete` | MCP-сервер сообщает, что [запрос данных в режиме URL](#elicitation-input) завершён |

2588| `elicitation_response` | Ответ на запрос данных MCP отправлен обратно серверу |2614| `elicitation_response` | Ответ на запрос данных MCP отправлен обратно на сервер |

2589| `agent_needs_input` | Фоновая сессия начинает ждать вашего ввода, пока в терминале открыт [вид агентов](/docs/ru/agent-view). Также срабатывает, когда терминальная сессия показывает вам [вопрос о настройке терминала участника команды агентов](/docs/ru/agent-teams#choose-a-display-mode) или уведомление авторежима о [плате за запросы классификатора](/docs/ru/auto-mode-classifier-billing), и вы ничего не вводили около шести секунд |2615| `agent_needs_input` | Фоновая сессия начинает ожидать вашего ввода, пока в терминале открыт [вид агентов](/docs/ru/agent-view). Также срабатывает, когда терминальная сессия показывает вам [вопрос о настройке терминала от участника команды агентов](/docs/ru/agent-teams#choose-a-display-mode) или уведомление авторежима о [плате за запросы классификатора](/docs/ru/auto-mode-classifier-billing), и вы ничего не вводили около шести секунд |

2590| `agent_completed` | Фоновая сессия завершается или завершается со сбоем. Срабатывает только пока в терминале открыт [вид агентов](/docs/ru/agent-view) |2616| `agent_completed` | Фоновая сессия завершается или завершается с ошибкой. Срабатывает, только пока в терминале открыт [вид агентов](/docs/ru/agent-view) |

2591| `quota_auto_resume_fired` | Claude Code продолжает вашу задачу после того, как её приостановил лимит использования claude.ai: в момент сброса или раньше, если какое-то ваше действие в Claude Code во время ожидания, например добавление кредитов использования, повышение тарифа или смена модели, снова делает использование доступным, с [исключением для настройки модели](/docs/ru/interactive-mode#wait-for-a-usage-limit-to-reset) |2617| `quota_auto_resume_fired` | Claude Code продолжает вашу задачу после того, как её приостановил лимит использования claude.ai: в момент сброса или раньше, когда какое-то ваше действие в Claude Code во время ожидания, например добавление кредитов использования, повышение тарифа или смена модели, снова делает использование доступным, с [исключением для настройки модели](/docs/ru/interactive-mode#wait-for-a-usage-limit-to-reset) |

2592| `quota_auto_resume_stale` | Лимит использования claude.ai сбросился, пока ваш компьютер находился в спящем режиме более 30 минут. Claude Code ждёт, пока вы нажмёте `Enter`, вместо того чтобы продолжить. После более короткого сна он продолжает работу и вместо этого вызывает `quota_auto_resume_fired` |2618| `quota_auto_resume_stale` | Лимит использования claude.ai сбросился, пока ваш компьютер находился в спящем режиме более 30 минут. Claude Code ждёт, пока вы нажмёте `Enter`, вместо того чтобы продолжить. После более короткого сна он продолжает работу и вместо этого срабатывает `quota_auto_resume_fired` |

2593| `quota_auto_resume_disabled` | Claude Code прекращает ожидание сброса лимита использования claude.ai, не продолжая вашу задачу: [`autoContinueAtUsageLimit`](/docs/ru/settings-reference#autocontinueatusagelimit) отключена или сброс сместился более чем на 24 часа вперёд во время ожидания, начатого Claude Code самостоятельно, продолженная задача снова и снова упиралась в лимит или продолжение было заблокировано до того, как дошло до модели. Не срабатывает, когда вы нажимаете `Esc` или `Ctrl+C` или выбираете **Don't continue automatically** |2619| `quota_auto_resume_disabled` | Claude Code прекращает ожидание лимита использования claude.ai, не продолжая вашу задачу: [`autoContinueAtUsageLimit`](/docs/ru/settings-reference#autocontinueatusagelimit) был отключён или сброс сместился более чем на 24 часа вперёд во время ожидания, которое Claude Code начал самостоятельно, продолженная задача продолжала упираться в лимит, или продолжение было заблокировано до того, как дошло до модели. Не срабатывает, когда вы нажимаете `Esc` или `Ctrl+C` или выбираете **Don't continue automatically** |

2594 2620 

2595Для типов `quota_auto_resume_fired`, `quota_auto_resume_stale` и `quota_auto_resume_disabled` требуется Claude Code v2.1.234 или новее.2621Для типов `quota_auto_resume_fired`, `quota_auto_resume_stale` и `quota_auto_resume_disabled` требуется Claude Code v2.1.234 или новее.

2596 2622 

2597В терминальных сессиях для `permission_prompt` при сетевом запросе команды в песочнице требуется Claude Code v2.1.246 или новее.2623В терминальных сессиях для `permission_prompt` при сетевом запросе команды в песочнице требуется Claude Code v2.1.246 или новее.

2598 2624 

2599Для `agent_needs_input` при вопросе о настройке терминала участника команды требуется Claude Code v2.1.248 или новее.2625Для `agent_needs_input` при вопросе участника команды о настройке терминала требуется Claude Code v2.1.248 или новее.

2600 2626 

2601<Note>2627<Note>

2602 Типы `permission_prompt`, `idle_prompt`, `elicitation_dialog` и `elicitation_url_dialog` используют те же тайминги, что и уведомления рабочего стола, поэтому в терминальных сессиях вы увидите их, только если кажется, что вы отошли от терминала:2628 Типы `permission_prompt`, `idle_prompt`, `elicitation_dialog` и `elicitation_url_dialog` используют то же время срабатывания, что и уведомления на рабочем столе, поэтому в терминальных сессиях вы видите их, только когда кажется, что вы отошли от терминала:

2603 2629 

2604 * Ожидайте `permission_prompt`, когда вы ничего не вводили около шести секунд. Таймер запускается при появлении запроса разрешения, и каждое нажатие клавиши откладывает его. Чтобы запускать хук сразу, когда Claude запрашивает разрешение на использование инструмента, используйте вместо этого [PermissionRequest](#permissionrequest).2630 * Ожидайте `permission_prompt`, когда вы ничего не вводили около шести секунд. Таймер запускается при появлении запроса разрешения, и каждое нажатие клавиши откладывает его. Чтобы запускать хук сразу, когда Claude запрашивает разрешение на использование инструмента, используйте вместо этого [PermissionRequest](#permissionrequest).

2605 * Ожидайте `idle_prompt` примерно через 60 секунд после того, как Claude закончит отвечать, и только если вы с тех пор ничего не вводили и ни один фоновый агент, например фоновый [субагент](/docs/ru/sub-agents), больше не работает. Claude Code не отправляет `idle_prompt`, пока ждёт сброса лимита использования claude.ai. Когда ожидание заканчивается само, вместо этого срабатывает один из типов `quota_auto_resume_*`.2631 * Ожидайте `idle_prompt` примерно через 60 секунд после того, как Claude закончит отвечать, и только если вы с тех пор ничего не вводили и ни один фоновый агент, например фоновый [субагент](/docs/ru/sub-agents), всё ещё не выполняется. Claude Code не отправляет `idle_prompt`, пока ожидает сброса лимита использования claude.ai. Когда ожидание завершается само по себе, вместо этого срабатывает один из типов `quota_auto_resume_*`.

2606 * Ожидайте `elicitation_dialog` для формы запроса данных или `elicitation_url_dialog` для запроса URL в браузере, когда вы ничего не вводили около шести секунд. Оба используют тот же шестисекундный порог, что и `permission_prompt`: таймер запускается при появлении диалогового окна, и каждое нажатие клавиши откладывает его.2632 * Ожидайте `elicitation_dialog` для формы запроса данных или `elicitation_url_dialog` для запроса URL в браузере, когда вы ничего не вводили около шести секунд. Оба используют тот же шестисекундный порог, что и `permission_prompt`: таймер запускается при появлении диалогового окна, и каждое нажатие клавиши откладывает его.

2607 2633 

2608 Запрос разрешения или запрос данных, который поступает, пока на экране открыто другое диалоговое окно, сохраняет тот же шестисекундный порог, отсчитываемый с момента поступления запроса. Уведомление о нём может дойти до вас, пока запрос всё ещё ждёт за открытым диалоговым окном.2634 Запрос разрешения или запрос данных, поступивший, пока на экране открыто другое диалоговое окно, сохраняет тот же шестисекундный порог, отсчитываемый от момента поступления запроса. Его уведомление может дойти до вас, пока запрос ещё ожидает за открытым диалоговым окном.

2609</Note>2635</Note>

2610 2636 

2611Claude Code иначе рассчитывает время для `permission_prompt` в сессиях, где он отправляет запросы разрешения в [обратный вызов `canUseTool`](/docs/ru/agent-sdk/user-input) Agent SDK — именно так Claude Desktop и расширение VS Code размещают Claude Code:2637Claude Code иначе определяет время срабатывания `permission_prompt` в сессиях, где он отправляет запросы разрешений в [обратный вызов `canUseTool`](/docs/ru/agent-sdk/user-input) Agent SDK — именно так Claude Desktop и расширение VS Code размещают Claude Code:

2612 2638 

2613* Ожидайте `permission_prompt` примерно через шесть секунд после того, как Claude запросит разрешение. Claude Code не откладывает его, пока вы вводите текст.2639* Ожидайте `permission_prompt` примерно через шесть секунд после того, как Claude запросит разрешение. Claude Code не откладывает его, пока вы вводите текст.

2614* Если вы или хук [PermissionRequest](#permissionrequest) ответите раньше, Claude Code не запускает `permission_prompt`.2640* Если вы или хук [PermissionRequest](#permissionrequest) ответите раньше, Claude Code не запускает `permission_prompt`.

2615* Задайте [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/ru/env-vars) значение `1`, чтобы отключить `permission_prompt` в этих сессиях.2641* Установите [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/ru/env-vars) в `1`, чтобы отключить `permission_prompt` в этих сессиях.

2616 2642 

2617До v2.1.233 `permission_prompt` в этих сессиях не срабатывал.2643До v2.1.233 `permission_prompt` в этих сессиях не срабатывал.

2618 2644 

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

2620 2646 

2621```json theme={null}2647```json theme={null}

2622{2648{


2649 Входные данные Notification2675 Входные данные Notification

2650</h4>2676</h4>

2651 2677 

2652Помимо [общих входных полей](#common-input-fields), хуки Notification получают `message` с текстом уведомления, необязательный `title` и `notification_type`, указывающий, какой тип сработал.2678Помимо [общих полей входных данных](#common-input-fields), хуки Notification получают `message` с текстом уведомления, необязательный `title` и `notification_type`, указывающий, какой тип сработал.

2653 2679 

2654```json theme={null}2680```json theme={null}

2655{2681{


2663}2689}

2664```2690```

2665 2691 

2666Хуки Notification не могут блокировать или изменять уведомления. Claude Code отбрасывает их поля `systemMessage` и `continue`, но по-прежнему выводит [`terminalSequence`](#emit-terminal-notifications), на чём основан пример с уведомлением рабочего стола. Хуки Notification предназначены для побочных действий, например для пересылки уведомления во внешний сервис.2692Хуки Notification не могут блокировать или изменять уведомления. Claude Code отбрасывает их поля `systemMessage` и `continue`, но по-прежнему выводит [`terminalSequence`](#emit-terminal-notifications), на что и опирается пример уведомления на рабочем столе. Хуки Notification предназначены для побочных эффектов, например пересылки уведомления во внешний сервис.

2667 2693 

2668<h3 id="subagentstart">2694<h3 id="subagentstart">

2669 SubagentStart2695 SubagentStart

2670</h3>2696</h3>

2671 2697 

2672Выполняется, когда Claude запускает субагента с помощью инструмента Agent, когда Claude [возобновляет субагента](/docs/ru/sub-agents#resume-subagents), а также каждый раз, когда внутрипроцессный участник [команды агентов](/docs/ru/agent-teams) обрабатывает новое сообщение. Поддерживает matcher для фильтрации по имени типа агента. Для встроенных агентов это имя агента, например `general-purpose`, `Explore` или `Plan`. Для [пользовательских субагентов](/docs/ru/sub-agents) это поле `name` из frontmatter агента, а не имя файла.2698Запускается, когда Claude порождает субагента с помощью инструмента Agent, когда Claude [возобновляет субагента](/docs/ru/sub-agents#resume-subagents), а также каждый раз, когда внутрипроцессный участник [команды агентов](/docs/ru/agent-teams) обрабатывает новое сообщение. Поддерживает matcher для фильтрации по имени типа агента. Для встроенных агентов это имя агента, например `general-purpose`, `Explore` или `Plan`. Для [пользовательских субагентов](/docs/ru/sub-agents) это поле `name` из frontmatter агента, а не имя файла.

2673 2699 

2674Для субагентов, поставляемых [плагином](/docs/ru/plugins/overview), тип агента — это идентификатор в области плагина, например `my-plugin:reviewer`, а не просто имя из frontmatter. Двоеточие переводит имя в области плагина на путь регулярных выражений, поэтому для точного совпадения закрепите matcher с помощью `^` и `$`: `^my-plugin:reviewer$`.2700Для субагентов, поставляемых [плагином](/docs/ru/plugins/overview), тип агента — это идентификатор в области плагина, например `my-plugin:reviewer`, а не просто имя из frontmatter. Двоеточие переводит имя в области плагина на путь регулярных выражений, поэтому для точного совпадения привяжите matcher с помощью `^` и `$`: `^my-plugin:reviewer$`.

2675 2701 

2676<h4 id="subagentstart-input">2702<h4 id="subagentstart-input">

2677 Входные данные SubagentStart2703 Входные данные SubagentStart

2678</h4>2704</h4>

2679 2705 

2680Помимо [общих входных полей](#common-input-fields), хуки SubagentStart получают `agent_id` с уникальным идентификатором субагента и `agent_type` с именем агента, по которому фильтрует matcher.2706Помимо [общих полей входных данных](#common-input-fields), хуки SubagentStart получают `agent_id` с уникальным идентификатором субагента и `agent_type` с именем агента, по которому фильтрует matcher.

2681 2707 

2682```json theme={null}2708```json theme={null}

2683{2709{


2690}2716}

2691```2717```

2692 2718 

2693Хуки SubagentStart не могут блокировать создание субагента, но могут внедрять контекст в субагента. Помимо [выходных полей JSON](#json-output), доступных всем хукам, вы можете вернуть:2719Хуки SubagentStart не могут блокировать создание субагента, но могут внедрять контекст в субагента. Помимо [полей вывода JSON](#json-output), доступных всем хукам, вы можете вернуть:

2694 2720 

2695| Поле | Описание |2721| Поле | Описание |

2696| :- | :- |2722| :- | :- |


2705}2731}

2706```2732```

2707 2733 

2708Когда хук снова запускается для того же субагента, Claude Code внедряет возвращённый контекст только в том случае, если контекст субагента ещё не содержит копию из предыдущего запуска. Копия, внедрённая при запуске, остаётся на месте, сохраняя [кэш промптов](/docs/ru/prompt-caching#subagents-and-the-cache) субагента нетронутым. После того как [автосжатие](/docs/ru/sub-agents#auto-compaction) отбросит эту копию, Claude Code снова внедряет контекст следующего запуска.2734Когда хук снова запускается для того же субагента, Claude Code внедряет возвращённый контекст, только если контекст субагента ещё не содержит копию из предыдущего запуска. Копия, внедрённая при запуске, остаётся на месте, сохраняя [кэш промптов](/docs/ru/prompt-caching#subagents-and-the-cache) субагента нетронутым. После того как [автосжатие](/docs/ru/sub-agents#auto-compaction) отбросит эту копию, Claude Code снова внедряет контекст следующего запуска.

2709 2735 

2710<h3 id="subagentstop">2736<h3 id="subagentstop">

2711 SubagentStop2737 SubagentStop

2712</h3>2738</h3>

2713 2739 

2714Выполняется, когда субагент Claude Code закончил отвечать. Сопоставляется по типу агента, значения те же, что и для SubagentStart.2740Запускается, когда субагент Claude Code закончил отвечать. Сопоставляется по типу агента, с теми же значениями, что и SubagentStart.

2715 2741 

2716<h4 id="subagentstop-input">2742<h4 id="subagentstop-input">

2717 Входные данные SubagentStop2743 Входные данные SubagentStop

2718</h4>2744</h4>

2719 2745 

2720Помимо [общих входных полей](#common-input-fields), хуки SubagentStop получают `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path` и `last_assistant_message`. Поле `agent_type` — это значение, используемое для фильтрации matcher. `transcript_path` — это транскрипт основной сессии, а `agent_transcript_path` — собственный транскрипт субагента, хранящийся во вложенной папке `subagents/`. Поле `last_assistant_message` содержит текстовое содержимое финального ответа субагента, поэтому хуки могут получить к нему доступ без разбора файла транскрипта.2746Помимо [общих полей входных данных](#common-input-fields), хуки SubagentStop получают `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path` и `last_assistant_message`. Поле `agent_type` — это значение, используемое для фильтрации через matcher. `transcript_path` — это транскрипт основной сессии, а `agent_transcript_path` — собственный транскрипт субагента, хранящийся во вложенной папке `subagents/`. Поле `last_assistant_message` содержит текстовое содержимое финального ответа субагента, поэтому хуки могут получить к нему доступ без разбора файла транскрипта.

2721 2747 

2722Не каждое событие SubagentStop исходит от субагента, запущенного Claude. Claude Code также запускает внутренних агентов для некоторых собственных функций, таких как [предложения промптов](/docs/ru/interactive-mode#prompt-suggestions) и [побочные вопросы `/btw`](/docs/ru/interactive-mode#side-questions-with-%2Fbtw), и SubagentStop срабатывает и при завершении одного из них. Для таких событий `agent_type` — это имя агента, от имени которого работает сама сессия, например заданное с помощью [`--agent`](/docs/ru/cli-reference#cli-flags) или [настройки `agent`](/docs/ru/settings-reference#agent), и пустая строка, если сессия работает без него.2748Не каждое событие SubagentStop исходит от субагента, порождённого Claude. Claude Code также запускает внутренних агентов для некоторых своих функций, таких как [предложения промптов](/docs/ru/interactive-mode#prompt-suggestions) и [побочные вопросы `/btw`](/docs/ru/interactive-mode#side-questions-with-%2Fbtw), и SubagentStop срабатывает и тогда, когда один из них завершается. Для таких событий `agent_type` — это имя агента, под которым выполняется сама сессия, например заданное с помощью [`--agent`](/docs/ru/cli-reference#cli-flags) или [настройки `agent`](/docs/ru/settings-reference#agent), и пустая строка, когда сессия выполняется без него.

2723 2749 

2724`matcher`, в котором указаны типы агентов, не соответствует пустому `agent_type`. Хук, у которого matcher опущен, равен `""` или `"*"` либо является регулярным выражением, соответствующим пустой строке, запускается и для событий с пустым `agent_type`.2750`matcher`, в котором указаны типы агентов, не совпадает с пустым `agent_type`. Хук, у которого matcher опущен, равен `""` или `"*"` либо является регулярным выражением, совпадающим с пустой строкой, запускается и для событий с пустым `agent_type`.

2725 2751 

2726В Claude Code v2.1.271 или новее субагент, работающий с инструментом [`SubagentHandback`](/docs/ru/tools-reference), доставляет свой отчёт через этот инструмент перед остановкой. Поле `last_assistant_message` в этом случае содержит заключительный текст субагента, если он есть, и это не доставленный отчёт. Отчёт — это входное поле `message` этого вызова, которое хук `PreToolUse` или `PostToolUse` с matcher `SubagentHandback` получает как `tool_input.message`.2752В Claude Code v2.1.271 или новее субагент, работающий с инструментом [`SubagentHandback`](/docs/ru/tools-reference), передаёт свой отчёт через этот инструмент перед остановкой. Тогда поле `last_assistant_message` содержит заключительный текст субагента, если он есть, который не является переданным отчётом. Отчёт — это входной параметр `message` того вызова, который хук `PreToolUse` или `PostToolUse` с matcher на `SubagentHandback` получает как `tool_input.message`.

2727 2753 

2728Хуки SubagentStop также получают массивы `background_tasks` и `session_crons`, описанные в разделе [Входные данные Stop](#stop-input). Оба массива относятся к родительской сессии, а не к субагенту.2754Хуки SubagentStop также получают массивы `background_tasks` и `session_crons`, описанные в разделе [Входные данные Stop](#stop-input). Оба массива относятся к родительской сессии, а не к субагенту.

2729 2755 


2744}2770}

2745```2771```

2746 2772 

2747Хуки SubagentStop используют тот же формат управления решениями, что и [хуки Stop](#stop-decision-control), включая `hookSpecificOutput.additionalContext` с `hookEventName`, равным `"SubagentStop"`, для обратной связи без ошибки, которая продолжает работу субагента. Возврат `decision: "block"` с `reason` продолжает работу субагента и передаёт ему `reason` в качестве следующей инструкции. Хук, который блокирует, завершаясь с кодом 2, передаёт своё сообщение из stderr тем же способом. Чтобы внедрить контекст в родительскую сессию после возврата субагента, используйте вместо этого хук [`PostToolUse`](#posttooluse) для инструмента `Agent`.2773Хуки SubagentStop используют тот же формат управления решениями, что и [хуки Stop](#stop-decision-control), включая `hookSpecificOutput.additionalContext` с `hookEventName`, установленным в `"SubagentStop"`, для обратной связи, не являющейся ошибкой, которая продолжает работу субагента. Возврат `decision: "block"` с `reason` продолжает работу субагента и передаёт `reason` субагенту как его следующую инструкцию. Хук, блокирующий с кодом выхода 2, передаёт своё сообщение из stderr тем же способом. Чтобы внедрить контекст в родительскую сессию после возврата субагента, используйте вместо этого хук [`PostToolUse`](#posttooluse) на инструменте `Agent`.

2748 2774 

2749<h3 id="taskcreated">2775<h3 id="taskcreated">

2750 TaskCreated2776 TaskCreated

2751</h3>2777</h3>

2752 2778 

2753Выполняется, когда задача создаётся с помощью инструмента `TaskCreate`. Используйте его, чтобы обеспечивать соблюдение соглашений об именовании, требовать описания задач или предотвращать создание определённых задач. В [сессии без инструментов Task](/docs/ru/tools-reference#task-tool-availability) это событие не срабатывает.2779Запускается, когда задача создаётся с помощью инструмента `TaskCreate`. Используйте это для соблюдения соглашений об именовании, требования описаний задач или предотвращения создания определённых задач. В [сессии без инструментов Task](/docs/ru/tools-reference#task-tool-availability) это событие не срабатывает.

2754 2780 

2755Хуки TaskCreated не поддерживают matcher и срабатывают при каждом возникновении события.2781Хуки TaskCreated не поддерживают matcher и срабатывают при каждом возникновении события.

2756 2782 


2758 Входные данные TaskCreated2784 Входные данные TaskCreated

2759</h4>2785</h4>

2760 2786 

2761Помимо [общих входных полей](#common-input-fields), хуки TaskCreated получают `task_id`, `task_subject` и, при наличии, `task_description`, `teammate_name` и `team_name`.2787Помимо [общих полей входных данных](#common-input-fields), хуки TaskCreated получают `task_id`, `task_subject` и, при наличии, `task_description`, `teammate_name` и `team_name`.

2762 2788 

2763```json theme={null}2789```json theme={null}

2764{2790{


2780| `task_subject` | Заголовок задачи |2806| `task_subject` | Заголовок задачи |

2781| `task_description` | Подробное описание задачи. Может отсутствовать |2807| `task_description` | Подробное описание задачи. Может отсутствовать |

2782| `teammate_name` | Имя участника команды, создающего задачу. Может отсутствовать |2808| `teammate_name` | Имя участника команды, создающего задачу. Может отсутствовать |

2783| `team_name` | Устаревшее. Имя команды, производное от сессии; будет удалено в одном из будущих выпусков |2809| `team_name` | Устаревшее. Имя команды, производное от сессии; будет удалено в будущем выпуске |

2784| `agent_id` | В этом событии [общее входное поле](#common-input-fields) идентифицирует субагента или [внутрипроцессного участника команды](/docs/ru/agent-teams#choose-a-display-mode), создающего задачу. Может отсутствовать. Требуется Claude Code v2.1.290 или новее |2810| `agent_id` | Для этого события [общее поле входных данных](#common-input-fields) идентифицирует субагента или [внутрипроцессного участника команды](/docs/ru/agent-teams#choose-a-display-mode), создающего задачу. Может отсутствовать. Требуется Claude Code v2.1.290 или новее |

2785 2811 

2786<h4 id="taskcreated-decision-control">2812<h4 id="taskcreated-decision-control">

2787 Управление решениями TaskCreated2813 Управление решениями TaskCreated

2788</h4>2814</h4>

2789 2815 

2790Хук TaskCreated может заблокировать создание с помощью кода выхода 2 или решения в JSON. В обоих случаях Claude Code удаляет задачу и возвращает ваше сообщение Claude как ошибку инструмента. Claude Code игнорирует `continue: false` от этого события, и Claude продолжает работу.2816Хук TaskCreated может заблокировать создание с помощью кода выхода 2 или решения в JSON. В любом случае Claude Code удаляет задачу и возвращает ваше сообщение Claude как ошибку инструмента. Claude Code игнорирует `continue: false` от этого события, и Claude продолжает работу.

2791 2817 

2792* **Код выхода 2**: Claude Code возвращает текст из stderr в качестве сообщения.2818* **Код выхода 2**: Claude Code возвращает текст из stderr в качестве сообщения.

2793* **JSON `{"decision": "block", "reason": "..."}`**: Claude Code возвращает `reason` в качестве сообщения.2819* **JSON `{"decision": "block", "reason": "..."}`**: Claude Code возвращает `reason` в качестве сообщения.

2794 2820 

2795В этом примере блокируются задачи, заголовки которых не соответствуют требуемому формату:2821Этот пример блокирует задачи, заголовки которых не соответствуют требуемому формату:

2796 2822 

2797```bash theme={null}2823```bash theme={null}

2798#!/bin/bash2824#!/bin/bash


2811 TaskCompleted2837 TaskCompleted

2812</h3>2838</h3>

2813 2839 

2814Выполняется, когда задача помечается как выполненная. Это происходит в двух ситуациях: когда любой агент явно помечает задачу как выполненную с помощью инструмента TaskUpdate или когда участник [команды агентов](/docs/ru/agent-teams) завершает свой ход с задачами в процессе выполнения. Используйте его, чтобы обеспечивать соблюдение критериев завершения, например прохождение тестов или проверок линтера, прежде чем задачу можно будет закрыть.2840Запускается, когда задача помечается как завершённая. Это происходит в двух ситуациях: когда любой агент явно помечает задачу как завершённую через инструмент TaskUpdate или когда участник [команды агентов](/docs/ru/agent-teams) заканчивает свой ход с задачами в процессе выполнения. Используйте это для соблюдения критериев завершения, таких как прохождение тестов или проверок линтера, прежде чем задачу можно будет закрыть.

2815 2841 

2816Хуки TaskCompleted не поддерживают matcher и срабатывают при каждом возникновении события.2842Хуки TaskCompleted не поддерживают matcher и срабатывают при каждом возникновении события.

2817 2843 


2819 Входные данные TaskCompleted2845 Входные данные TaskCompleted

2820</h4>2846</h4>

2821 2847 

2822Помимо [общих входных полей](#common-input-fields), хуки TaskCompleted получают `task_id`, `task_subject` и, при наличии, `task_description`, `teammate_name` и `team_name`.2848Помимо [общих полей входных данных](#common-input-fields), хуки TaskCompleted получают `task_id`, `task_subject` и, при наличии, `task_description`, `teammate_name` и `team_name`.

2823 2849 

2824```json theme={null}2850```json theme={null}

2825{2851{


2842| `task_subject` | Заголовок задачи |2868| `task_subject` | Заголовок задачи |

2843| `task_description` | Подробное описание задачи. Может отсутствовать |2869| `task_description` | Подробное описание задачи. Может отсутствовать |

2844| `teammate_name` | Имя участника команды, завершающего задачу. Может отсутствовать |2870| `teammate_name` | Имя участника команды, завершающего задачу. Может отсутствовать |

2845| `team_name` | Устаревшее. Имя команды, производное от сессии; будет удалено в одном из будущих выпусков |2871| `team_name` | Устаревшее. Имя команды, производное от сессии; будет удалено в будущем выпуске |

2846| `agent_id` | В этом событии [общее входное поле](#common-input-fields) идентифицирует субагента или [внутрипроцессного участника команды](/docs/ru/agent-teams#choose-a-display-mode), завершающего задачу. Может отсутствовать. Требуется Claude Code v2.1.290 или новее |2872| `agent_id` | Для этого события [общее поле входных данных](#common-input-fields) идентифицирует субагента или [внутрипроцессного участника команды](/docs/ru/agent-teams#choose-a-display-mode), завершающего задачу. Может отсутствовать. Требуется Claude Code v2.1.290 или новее |

2847 2873 

2848<h4 id="taskcompleted-decision-control">2874<h4 id="taskcompleted-decision-control">

2849 Управление решениями TaskCompleted2875 Управление решениями TaskCompleted


2851 2877 

2852Хуки TaskCompleted поддерживают два способа управления завершением задачи:2878Хуки TaskCompleted поддерживают два способа управления завершением задачи:

2853 2879 

2854* **Код выхода 2**: задача не помечается как выполненная, а сообщение из stderr передаётся модели в качестве обратной связи.2880* **Код выхода 2**: задача не помечается как завершённая, а сообщение из stderr передаётся модели в качестве обратной связи.

2855* **JSON `{"continue": false, "stopReason": "..."}`**: когда событие вызвано завершением хода участника команды, полностью останавливает участника команды, аналогично поведению хука `Stop`. `stopReason` показывается пользователю. Когда событие вызвано инструментом `TaskUpdate`, Claude Code игнорирует `continue: false`; код выхода 2 по-прежнему блокирует завершение.2881* **JSON `{"continue": false, "stopReason": "..."}`**: когда событие вызвано завершением хода участника команды, полностью останавливает участника команды, аналогично поведению хука `Stop`. `stopReason` показывается пользователю. Когда событие вызвано инструментом `TaskUpdate`, Claude Code игнорирует `continue: false`; код выхода 2 по-прежнему блокирует завершение.

2856 2882 

2857В этом примере запускаются тесты и блокируется завершение задачи, если они не проходят:2883Этот пример запускает тесты и блокирует завершение задачи, если они не проходят:

2858 2884 

2859```bash theme={null}2885```bash theme={null}

2860#!/bin/bash2886#!/bin/bash


2874 Stop2900 Stop

2875</h3>2901</h3>

2876 2902 

2877Выполняется, когда основной агент Claude Code закончил отвечать. Не выполняется, если2903Запускается, когда основной агент Claude Code закончил отвечать. Не запускается, если

2878остановка произошла из-за прерывания пользователем. Ошибки API вместо этого вызывают2904остановка произошла из-за прерывания пользователем. Ошибки API вместо этого вызывают

2879[StopFailure](#stopfailure).2905[StopFailure](#stopfailure).

2880 2906 

2881<Tip>2907<Tip>

2882 Команда [`/goal`](/docs/ru/goal) — это встроенное сокращение для хука Stop на основе промпта, действующего в рамках сессии. Используйте её, когда хотите, чтобы Claude продолжал работать до выполнения условия, не создавая конфигурацию хука.2908 Команда [`/goal`](/docs/ru/goal) — это встроенный быстрый способ создать хук Stop на основе промпта в рамках сессии. Используйте её, когда хотите, чтобы Claude продолжал работать до достижения условия, не создавая конфигурацию хука.

2883</Tip>2909</Tip>

2884 2910 

2885<h4 id="stop-input">2911<h4 id="stop-input">

2886 Входные данные Stop2912 Входные данные Stop

2887</h4>2913</h4>

2888 2914 

2889Помимо [общих входных полей](#common-input-fields), хуки Stop получают `stop_hook_active`, `last_assistant_message`, `background_tasks` и `session_crons`. Поле `stop_hook_active` равно `true`, когда Claude Code уже продолжает работу в результате хука остановки. Проверяйте это значение или обрабатывайте транскрипт, чтобы избежать блокировки по условию, которое никогда не будет выполнено.2915Помимо [общих полей входных данных](#common-input-fields), хуки Stop получают `stop_hook_active`, `last_assistant_message`, `background_tasks` и `session_crons`. Поле `stop_hook_active` равно `true`, когда Claude Code уже продолжает работу в результате хука остановки. Проверяйте это значение или обрабатывайте транскрипт, чтобы избежать блокировки по условию, которое никогда не выполнится.

2890 2916 

2891Claude Code применяет ограничение в 8 последовательных продолжений: после того как хуки остановки продолжили ход восемь раз подряд, Claude Code переопределяет следующую блокировку и завершает ход. Счётчик последовательных продолжений сбрасывается каждый раз, когда Claude вызывает инструмент. Чтобы повысить ограничение, задайте [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/ru/env-vars).2917Claude Code применяет ограничение в 8 последовательных продолжений: после того как хуки остановки продолжили ход восемь раз подряд, Claude Code переопределяет следующую блокировку и завершает ход. Счётчик последовательных продолжений сбрасывается каждый раз, когда Claude вызывает инструмент. Чтобы повысить ограничение, установите [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/ru/env-vars).

2892 2918 

2893Поле `last_assistant_message` содержит текстовое содержимое финального ответа Claude, поэтому хуки могут получить к нему доступ без разбора файла транскрипта. Для хуков, работающих с только что завершённым ходом, например хуков чтения вслух или уведомлений, используйте это поле, а не чтение `transcript_path`: не во всех версиях гарантируется, что файл транскрипта содержит финальное сообщение в момент Stop.2919Поле `last_assistant_message` содержит текстовое содержимое финального ответа Claude, поэтому хуки могут получить к нему доступ без разбора файла транскрипта. Для хуков, которые работают с только что завершённым ходом, например хуков чтения вслух или уведомлений, используйте это поле, а не чтение `transcript_path`: не во всех версиях гарантируется, что файл транскрипта содержит финальное сообщение в момент Stop.

2894 2920 

2895Массивы `background_tasks` и `session_crons` позволяют хукам отличать ситуацию «сессия завершена» от ситуации «сессия приостановлена в ожидании фоновой работы, которая её снова разбудит». Оба массива присутствуют, когда реестр задач доступен, и пусты, когда ничего не выполняется и не запланировано.2921Массивы `background_tasks` и `session_crons` позволяют хукам отличать «сессия завершена» от «сессия приостановлена в ожидании фоновой работы, которая её разбудит». Оба массива присутствуют, когда реестр задач доступен, и пусты, когда ничего не выполняется и не запланировано.

2896 2922 

2897Каждая запись в `background_tasks` описывает одну выполняемую задачу и использует следующие поля:2923Каждая запись в `background_tasks` описывает одну выполняющуюся задачу и использует следующие поля:

2898 2924 

2899| Поле | Описание |2925| Поле | Описание |

2900| :- | :- |2926| :- | :- |

2901| `id` | Идентификатор задачи |2927| `id` | Идентификатор задачи |

2902| `type` | Понятная метка типа задачи, например `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session` или `MCP task`. Каждая метка указывает, какая функция Claude Code создала задачу. Для нераспознанных типов используется исходный дискриминант |2928| `type` | Понятная метка типа задачи, например `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session` или `MCP task`. Каждая метка указывает, какая функция Claude Code создала задачу. Для нераспознанных типов используется необработанный дискриминант |

2903| `status` | Текущий статус задачи |2929| `status` | Текущий статус задачи |

2904| `description` | Описание в свободной форме, ограниченное 1000 символами, с маркером `… [+N chars]` внутри строки при обрезке |2930| `description` | Текстовое описание, ограниченное 1000 символами, с маркером `… [+N chars]` внутри строки при обрезке |

2905| `command` | Командная строка оболочки, ограниченная 1000 символами. Присутствует только для задач `shell` |2931| `command` | Командная строка оболочки, ограниченная 1000 символами. Присутствует только для задач `shell` |

2906| `agent_type` | Имя типа субагента. Присутствует только для задач `subagent` |2932| `agent_type` | Имя типа субагента. Присутствует только для задач `subagent` |

2907| `server` | Имя MCP-сервера. Присутствует только для задач `monitor` и `MCP task` |2933| `server` | Имя MCP-сервера. Присутствует только для задач `monitor` и `MCP task` |

2908| `tool` | Имя инструмента MCP. Присутствует только для задач `monitor` и `MCP task` |2934| `tool` | Имя инструмента MCP. Присутствует только для задач `monitor` и `MCP task` |

2909| `name` | Имя workflow. Присутствует только для задач `workflow` |2935| `name` | Имя workflow. Присутствует только для задач `workflow` |

2910 2936 

2911Каждая запись в `session_crons` описывает одно запланированное пробуждение в рамках сессии, полученное из `CronCreate`, `ScheduleWakeup` и `/loop`:2937Каждая запись в `session_crons` описывает одно запланированное пробуждение в рамках сессии, созданное через `CronCreate`, `ScheduleWakeup` и `/loop`:

2912 2938 

2913| Поле | Описание |2939| Поле | Описание |

2914| :- | :- |2940| :- | :- |

2915| `id` | Идентификатор задачи cron |2941| `id` | Идентификатор задачи cron |

2916| `schedule` | Выражение cron, например `0 9 * * 1-5` |2942| `schedule` | Выражение cron, например `0 9 * * 1-5` |

2917| `recurring` | `false` для одноразовых пробуждений, расписание которых задаёт одно время срабатывания, `true` для задач, срабатывающих повторно при каждом совпадении |2943| `recurring` | `false` для одноразовых пробуждений, расписание которых кодирует единственное время срабатывания, `true` для задач, повторно срабатывающих при каждом совпадении |

2918| `prompt` | Промпт, отправляемый при срабатывании cron, ограниченный 1000 символами с тем же маркером `… [+N chars]` |2944| `prompt` | Промпт, отправляемый при срабатывании cron, ограниченный 1000 символами с тем же маркером `… [+N chars]` |

2919 2945 

2920В этом примере показаны входные данные Stop с одной выполняемой задачей оболочки и одним повторяющимся cron:2946Этот пример показывает входные данные Stop с одной выполняющейся задачей оболочки и одним повторяющимся cron:

2921 2947 

2922```json theme={null}2948```json theme={null}

2923{2949{


2952 Управление решениями Stop2978 Управление решениями Stop

2953</h4>2979</h4>

2954 2980 

2955Хуки `Stop` и `SubagentStop` могут управлять тем, продолжит ли Claude работу. Помимо [выходных полей JSON](#json-output), доступных всем хукам, ваш скрипт хука может возвращать следующие поля, специфичные для события:2981Хуки `Stop` и `SubagentStop` могут управлять тем, продолжит ли Claude работу. Помимо [полей вывода JSON](#json-output), доступных всем хукам, ваш скрипт хука может вернуть следующие поля, специфичные для события:

2956 2982 

2957| Поле | Описание |2983| Поле | Описание |

2958| :- | :- |2984| :- | :- |

2959| `decision` | `"block"` не даёт Claude остановиться. Опустите, чтобы разрешить Claude остановиться |2985| `decision` | `"block"` не даёт Claude остановиться. Опустите, чтобы позволить Claude остановиться |

2960| `reason` | Обязательно, когда `decision` равно `"block"`. Сообщает Claude, почему ему следует продолжить |2986| `reason` | Обязательно, когда `decision` равно `"block"`. Сообщает Claude, почему он должен продолжить |

2961| `hookSpecificOutput.additionalContext` | Обратная связь для Claude, не являющаяся ошибкой. Диалог продолжается, чтобы Claude мог на неё отреагировать, но, в отличие от `decision: "block"`, в транскрипте она отображается как обратная связь хука, а не как ошибка хука |2987| `hookSpecificOutput.additionalContext` | Обратная связь для Claude, не являющаяся ошибкой. Диалог продолжается, чтобы Claude мог на неё отреагировать, но, в отличие от `decision: "block"`, она показывается в транскрипте как обратная связь хука, а не как ошибка хука |

2962 2988 

2963Хук, который блокирует, завершаясь с кодом 2, обрабатывается так же, как `reason`: Claude получает сообщение из stderr в качестве пояснения, почему ему следует продолжить.2989Хук, блокирующий с кодом выхода 2, обрабатывается так же, как `reason`: Claude получает сообщение из stderr в качестве объяснения, почему он должен продолжить.

2964 2990 

2965```json theme={null}2991```json theme={null}

2966{2992{


2969}2995}

2970```2996```

2971 2997 

2972Используйте `additionalContext`, когда хук работает как задумано и даёт Claude указания, например «запусти набор тестов перед завершением». Он продолжает диалог с теми же защитами от зацикливания, что и `decision: "block"`, а именно входным полем `stop_hook_active` и ограничением в 8 последовательных продолжений, но транскрипт помечает его как `Stop hook feedback`, и уведомление об ошибке хука не показывается:2998Используйте `additionalContext`, когда хук работает так, как задумано, и даёт Claude указания, например «запусти набор тестов перед завершением». Он продолжает диалог с теми же защитами от зацикливания, что и `decision: "block"`, а именно входным полем `stop_hook_active` и ограничением в 8 последовательных продолжений, но транскрипт помечает его как `Stop hook feedback`, и уведомление об ошибке хука не показывается:

2973 2999 

2974```json theme={null}3000```json theme={null}

2975{3001{


2984 StopFailure3010 StopFailure

2985</h3>3011</h3>

2986 3012 

2987Выполняется вместо [Stop](#stop), когда ход завершается из-за ошибки API. Claude Code игнорирует вывод и код выхода хука, за исключением [`terminalSequence`](#emit-terminal-notifications). Используйте его, чтобы логировать сбои, отправлять оповещения или выполнять действия по восстановлению, когда Claude не может завершить ответ из-за ограничений частоты запросов, проблем с аутентификацией или других ошибок API.3013Запускается вместо [Stop](#stop), когда ход завершается из-за ошибки API. Claude Code игнорирует вывод и код выхода хука, за исключением [`terminalSequence`](#emit-terminal-notifications). Используйте это для логирования сбоев, отправки оповещений или выполнения действий по восстановлению, когда Claude не может завершить ответ из-за ограничений частоты запросов, проблем с аутентификацией или других ошибок API.

2988 3014 

2989<h4 id="stopfailure-input">3015<h4 id="stopfailure-input">

2990 Входные данные StopFailure3016 Входные данные StopFailure

2991</h4>3017</h4>

2992 3018 

2993Помимо [общих входных полей](#common-input-fields), хуки StopFailure получают `error`, необязательное `error_details` и необязательное `last_assistant_message`. Поле `error` определяет тип ошибки и используется для фильтрации matcher.3019Помимо [общих полей входных данных](#common-input-fields), хуки StopFailure получают `error`, необязательное `error_details` и необязательное `last_assistant_message`. Поле `error` определяет тип ошибки и используется для фильтрации через matcher.

2994 3020 

2995| Поле | Описание |3021| Поле | Описание |

2996| :- | :- |3022| :- | :- |

2997| `error` | Тип ошибки: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error` или `unknown` |3023| `error` | Тип ошибки: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error` или `unknown` |

2998| `error_details` | Дополнительные сведения об ошибке, если они доступны |3024| `error_details` | Дополнительные сведения об ошибке, если доступны |

2999| `last_assistant_message` | Отрисованный текст ошибки, показанный в диалоге. В отличие от `Stop` и `SubagentStop`, где это поле содержит разговорный вывод Claude, для `StopFailure` оно содержит саму строку ошибки API, например `"API Error: Rate limit reached"` |3025| `last_assistant_message` | Отображаемый текст ошибки, показанный в диалоге. В отличие от `Stop` и `SubagentStop`, где это поле содержит разговорный вывод Claude, для `StopFailure` оно содержит саму строку ошибки API, например `"API Error: Rate limit reached"` |

3000 3026 

3001```json theme={null}3027```json theme={null}

3002{3028{


3016 TeammateIdle3042 TeammateIdle

3017</h3>3043</h3>

3018 3044 

3019Выполняется, когда участник [команды агентов](/docs/ru/agent-teams) вот-вот перейдёт в режим простоя после завершения своего хода. Используйте его, чтобы обеспечивать контроль качества до того, как участник команды прекратит работу, например требовать прохождения проверок линтера или проверять наличие выходных файлов.3045Запускается, когда участник [команды агентов](/docs/ru/agent-teams) собирается перейти в режим простоя после завершения своего хода. Используйте это для применения контрольных проверок качества до того, как участник команды прекратит работу, например для требования прохождения проверок линтера или проверки наличия выходных файлов.

3020 3046 

3021Хуки TeammateIdle не поддерживают matcher и срабатывают при каждом возникновении события.3047Хуки TeammateIdle не поддерживают matcher и срабатывают при каждом возникновении события.

3022 3048 


3024 Входные данные TeammateIdle3050 Входные данные TeammateIdle

3025</h4>3051</h4>

3026 3052 

3027Помимо [общих входных полей](#common-input-fields), хуки TeammateIdle получают `teammate_name` и `team_name`.3053Помимо [общих полей входных данных](#common-input-fields), хуки TeammateIdle получают `teammate_name` и `team_name`.

3028 3054 

3029```json theme={null}3055```json theme={null}

3030{3056{


3040 3066 

3041| Поле | Описание |3067| Поле | Описание |

3042| :- | :- |3068| :- | :- |

3043| `teammate_name` | Имя участника команды, который вот-вот перейдёт в режим простоя |3069| `teammate_name` | Имя участника команды, который собирается перейти в режим простоя |

3044| `team_name` | Устаревшее. Имя команды, производное от сессии; будет удалено в одном из будущих выпусков |3070| `team_name` | Устаревшее. Имя команды, производное от сессии; будет удалено в будущем выпуске |

3045| `agent_id` | В этом событии [общее входное поле](#common-input-fields) идентифицирует [внутрипроцессного участника команды](/docs/ru/agent-teams#choose-a-display-mode), который вот-вот перейдёт в режим простоя. Может отсутствовать. Требуется Claude Code v2.1.290 или новее |3071| `agent_id` | Для этого события [общее поле входных данных](#common-input-fields) идентифицирует [внутрипроцессного участника команды](/docs/ru/agent-teams#choose-a-display-mode), который собирается перейти в режим простоя. Может отсутствовать. Требуется Claude Code v2.1.290 или новее |

3046 3072 

3047<h4 id="teammateidle-decision-control">3073<h4 id="teammateidle-decision-control">

3048 Управление решениями TeammateIdle3074 Управление решениями TeammateIdle


3053* **Код выхода 2**: участник команды получает сообщение из stderr в качестве обратной связи и продолжает работу вместо перехода в режим простоя.3079* **Код выхода 2**: участник команды получает сообщение из stderr в качестве обратной связи и продолжает работу вместо перехода в режим простоя.

3054* **JSON `{"continue": false, "stopReason": "..."}`**: полностью останавливает участника команды, аналогично поведению хука `Stop`. `stopReason` показывается пользователю.3080* **JSON `{"continue": false, "stopReason": "..."}`**: полностью останавливает участника команды, аналогично поведению хука `Stop`. `stopReason` показывается пользователю.

3055 3081 

3056В этом примере проверяется наличие артефакта сборки, прежде чем разрешить участнику команды перейти в режим простоя:3082Этот пример проверяет наличие артефакта сборки, прежде чем позволить участнику команды перейти в режим простоя:

3057 3083 

3058```bash theme={null}3084```bash theme={null}

3059#!/bin/bash3085#!/bin/bash


3070 ConfigChange3096 ConfigChange

3071</h3>3097</h3>

3072 3098 

3073Выполняется, когда файл конфигурации изменяется во время сессии. Используйте его для аудита изменений настроек, обеспечения соблюдения политик безопасности или блокировки несанкционированных изменений файлов конфигурации.3099Запускается, когда файл конфигурации изменяется во время сессии. Используйте это для аудита изменений настроек, применения политик безопасности или блокировки несанкционированных изменений файлов конфигурации.

3074 3100 

3075Claude Code запускает хуки ConfigChange, когда изменяется файл настроек, файл управляемой политики или файл скилла. Для управляемой политики он запускает их только при изменении `managed-settings.json` или файла в `managed-settings.d/`. [Настройки, управляемые сервером](/docs/ru/server-managed-settings), и изменения управляемых настроек macOS или политики реестра Windows он применяет без запуска хуков. В WSL с [`wslInheritsWindowsSettings`](/docs/ru/settings-reference#wslinheritswindowssettings) он также применяет изменённый файл управляемых настроек на стороне Windows при опросе политики без запуска хуков.3101Claude Code запускает хуки ConfigChange, когда изменяется файл настроек, файл управляемой политики или файл скилла. Для управляемой политики он запускает их, только когда изменяется `managed-settings.json` или файл в `managed-settings.d/`. [Настройки, управляемые сервером](/docs/ru/server-managed-settings), а также изменения управляемых настроек macOS или политики реестра Windows он применяет без запуска хуков. В WSL с [`wslInheritsWindowsSettings`](/docs/ru/settings-reference#wslinheritswindowssettings) он также применяет изменённый файл управляемых настроек на стороне Windows при опросе политики без запуска хуков.

3076 3102 

3077Matcher фильтрует по источнику конфигурации:3103Matcher фильтрует по источнику конфигурации:

3078 3104 


3084| `policy_settings` | Изменяется `managed-settings.json` или файл в `managed-settings.d/` |3110| `policy_settings` | Изменяется `managed-settings.json` или файл в `managed-settings.d/` |

3085| `skills` | Изменяется файл скилла в `.claude/skills/` |3111| `skills` | Изменяется файл скилла в `.claude/skills/` |

3086 3112 

3087В этом примере все изменения конфигурации записываются в журнал для аудита безопасности:3113Этот пример записывает в лог все изменения конфигурации для аудита безопасности:

3088 3114 

3089```json theme={null}3115```json theme={null}

3090{3116{


3108 Входные данные ConfigChange3134 Входные данные ConfigChange

3109</h4>3135</h4>

3110 3136 

3111Помимо [общих входных полей](#common-input-fields), хуки ConfigChange получают `source` и, при наличии, `file_path`. Поле `source` указывает, какой тип конфигурации изменился, а `file_path` содержит путь к конкретному изменённому файлу.3137Помимо [общих полей входных данных](#common-input-fields), хуки ConfigChange получают `source` и, при наличии, `file_path`. Поле `source` указывает, какой тип конфигурации изменился, а `file_path` содержит путь к конкретному изменённому файлу.

3112 3138 

3113```json theme={null}3139```json theme={null}

3114{3140{


3125 Управление решениями ConfigChange3151 Управление решениями ConfigChange

3126</h4>3152</h4>

3127 3153 

3128Хуки ConfigChange могут блокировать вступление изменений конфигурации в силу. Используйте код выхода 2 или JSON-поле `decision`, чтобы предотвратить изменение. При блокировке новые настройки не применяются к текущей сессии.3154Хуки ConfigChange могут блокировать вступление изменений конфигурации в силу. Используйте код выхода 2 или JSON-поле `decision`, чтобы предотвратить изменение. При блокировке новые настройки не применяются к работающей сессии.

3129 3155 

3130| Поле | Описание |3156| Поле | Описание |

3131| :- | :- |3157| :- | :- |


3139}3165}

3140```3166```

3141 3167 

3142Изменения `policy_settings` нельзя заблокировать. Хуки по-прежнему срабатывают для источников `policy_settings`, когда изменяется файл управляемых настроек на компьютере, поэтому вы можете использовать их для записи этих изменений в журнал, но любое решение о блокировке игнорируется. Это гарантирует, что настройки, управляемые организацией, всегда вступают в силу. Claude Code не запускает хуки `ConfigChange`, когда [настройки, управляемые сервером](/docs/ru/server-managed-settings), поступают или обновляются.3168Изменения `policy_settings` нельзя заблокировать. Хуки по-прежнему срабатывают для источников `policy_settings`, когда изменяется файл управляемых настроек на машине, поэтому вы можете использовать их для записи этих правок в лог, но любое решение о блокировке игнорируется. Это гарантирует, что корпоративные управляемые настройки всегда вступают в силу. Claude Code не запускает хуки `ConfigChange`, когда [настройки, управляемые сервером](/docs/ru/server-managed-settings), поступают или обновляются.

3143 3169 

3144Claude Code учитывает решение о блокировке из JSON-вывода хука ConfigChange и отбрасывает `systemMessage` и `continue`. Заблокированное изменение не выводит никакого сообщения ни вам, ни Claude, независимо от того, блокируете ли вы с помощью `reason` или через stderr с кодом выхода 2. Claude Code лишь записывает строку в отладочный лог.3170Claude Code выполняет решение о блокировке из JSON-вывода хука ConfigChange и отбрасывает `systemMessage` и `continue`. Заблокированное изменение не выводит никакого сообщения ни вам, ни Claude, независимо от того, блокируете ли вы его с помощью `reason` или через stderr с кодом выхода 2. Claude Code лишь записывает строку в отладочный лог.

3145 3171 

3146<h3 id="cwdchanged">3172<h3 id="cwdchanged">

3147 CwdChanged3173 CwdChanged

3148</h3>3174</h3>

3149 3175 

3150Выполняется, когда shell-команда в основном диалоге изменяет рабочий каталог, например когда Claude выполняет команду `cd`. Используйте его, чтобы реагировать на смену каталога: перезагружать переменные окружения, активировать наборы инструментов для конкретного проекта или автоматически запускать скрипты настройки. Работает в паре с [FileChanged](#filechanged) для таких инструментов, как [direnv](https://direnv.net/), которые управляют окружением для каждого каталога.3176Запускается, когда shell-команда в основном диалоге изменяет рабочий каталог, например когда Claude выполняет команду `cd`. Используйте это для реакции на смену каталога: перезагрузки переменных окружения, активации специфичных для проекта наборов инструментов или автоматического запуска скриптов настройки. Работает в паре с [FileChanged](#filechanged) для таких инструментов, как [direnv](https://direnv.net/), которые управляют окружением для каждого каталога.

3151 3177 

3152Хуки CwdChanged имеют доступ к [`CLAUDE_ENV_FILE`](#persist-environment-variables). Переменные, записанные в этот файл, сохраняются для последующих команд Bash до следующего события CwdChanged, когда Claude Code их очищает.3178Хуки CwdChanged имеют доступ к [`CLAUDE_ENV_FILE`](#persist-environment-variables). Переменные, записанные в этот файл, сохраняются в последующих командах Bash до следующего события CwdChanged, когда Claude Code очищает их.

3153 3179 

3154CwdChanged не поддерживает matcher и срабатывает при каждом возникновении события.3180CwdChanged не поддерживает matcher и срабатывает при каждом возникновении события.

3155 3181 


3157 Входные данные CwdChanged3183 Входные данные CwdChanged

3158</h4>3184</h4>

3159 3185 

3160Помимо [общих входных полей](#common-input-fields), хуки CwdChanged получают `old_cwd` и `new_cwd`.3186Помимо [общих полей входных данных](#common-input-fields), хуки CwdChanged получают `old_cwd` и `new_cwd`.

3161 3187 

3162```json theme={null}3188```json theme={null}

3163{3189{


3174 Вывод CwdChanged3200 Вывод CwdChanged

3175</h4>3201</h4>

3176 3202 

3177Помимо [выходных полей JSON](#json-output), доступных всем хукам, хуки CwdChanged могут возвращать `watchPaths`, чтобы динамически задавать, за какими путями к файлам следит [FileChanged](#filechanged):3203Помимо [полей вывода JSON](#json-output), доступных всем хукам, хуки CwdChanged могут вернуть `watchPaths`, чтобы динамически задать, за какими путями к файлам следит [FileChanged](#filechanged):

3178 3204 

3179| Поле | Описание |3205| Поле | Описание |

3180| :- | :- |3206| :- | :- |

3181| `watchPaths` | Массив абсолютных путей. Заменяет текущий динамический список наблюдения. За путями из вашей конфигурации `matcher` наблюдение ведётся всегда. Возврат пустого массива очищает динамический список, что типично при входе в новый каталог |3207| `watchPaths` | Массив абсолютных путей. Заменяет текущий динамический список отслеживания. Пути из вашей конфигурации `matcher` отслеживаются всегда. Возврат пустого массива очищает динамический список, что типично при входе в новый каталог |

3182 3208 

3183У хуков CwdChanged нет управления решениями. Они не могут заблокировать смену каталога.3209У хуков CwdChanged нет управления решениями. Они не могут заблокировать смену каталога.

3184 3210 

3185Claude Code считывает `watchPaths` и `systemMessage` из их JSON-вывода и отбрасывает `continue`. В интерактивных сессиях он показывает `systemMessage` как короткое уведомление в терминале. Сообщение не попадает в поток сообщений SDK.3211Claude Code читает `watchPaths` и `systemMessage` из их JSON-вывода и отбрасывает `continue`. В интерактивных сессиях он показывает `systemMessage` как короткое уведомление в терминале. Сообщение не попадает в поток сообщений SDK.

3186 3212 

3187<h3 id="directoryadded">3213<h3 id="directoryadded">

3188 DirectoryAdded3214 DirectoryAdded

3189</h3>3215</h3>

3190 3216 

3191Выполняется после того, как вы добавляете рабочий каталог посреди сессии с помощью команды `/add-dir` или после того, как клиент SDK добавляет его с помощью управляющего запроса `register_repo_root`. Используйте его, чтобы подготовить только что добавленный репозиторий, например установить его зависимости.3217Запускается после того, как вы добавляете рабочий каталог посреди сессии с помощью команды `/add-dir`, или после того, как SDK-клиент добавляет его с помощью управляющего запроса `register_repo_root`. Используйте это для подготовки только что добавленного репозитория, например для установки его зависимостей.

3192 3218 

3193Claude Code не вызывает это событие, когда:3219Claude Code не вызывает это событие, когда:

3194 3220 

3195* Вы передаёте каталог с помощью флага запуска `--add-dir`; такие каталоги покрывает [SessionStart](#sessionstart)3221* Вы передаёте каталог с флагом запуска `--add-dir`; эти каталоги охватывает [SessionStart](#sessionstart)

3196* Вы добавляете каталог на вкладке Workspace в `/permissions`3222* Вы добавляете каталог на вкладке Workspace в `/permissions`

3197* Вы добавляете каталог, который уже является рабочим каталогом или находится внутри него3223* Вы добавляете каталог, который уже является рабочим каталогом или находится внутри него

3198 3224 


3205| Matcher | Когда срабатывает |3231| Matcher | Когда срабатывает |

3206| :- | :- |3232| :- | :- |

3207| `slash_command` | Вы добавляете каталог с помощью `/add-dir` |3233| `slash_command` | Вы добавляете каталог с помощью `/add-dir` |

3208| `register_repo_root` | Клиент SDK добавляет каталог с помощью управляющего запроса `register_repo_root` |3234| `register_repo_root` | SDK-клиент добавляет каталог с помощью управляющего запроса `register_repo_root` |

3209 3235 

3210<h4 id="directoryadded-input">3236<h4 id="directoryadded-input">

3211 Входные данные DirectoryAdded3237 Входные данные DirectoryAdded

3212</h4>3238</h4>

3213 3239 

3214Помимо [общих входных полей](#common-input-fields), хуки DirectoryAdded получают `directory` и `source`.3240Помимо [общих полей входных данных](#common-input-fields), хуки DirectoryAdded получают `directory` и `source`.

3215 3241 

3216| Поле | Описание |3242| Поле | Описание |

3217| :- | :- |3243| :- | :- |


3229}3255}

3230```3256```

3231 3257 

3232У хуков DirectoryAdded нет управления решениями. Они не могут заблокировать добавление, которое уже завершено к моменту запуска хука. Claude Code отбрасывает поле `continue` из их JSON-вывода, а остальное выводит по-разному в зависимости от источника:3258У хуков DirectoryAdded нет управления решениями. Они не могут заблокировать добавление, которое уже завершено к моменту запуска хука. Claude Code отбрасывает поле `continue` из их JSON-вывода, а остальное обрабатывает по-разному в зависимости от источника:

3233 3259 

3234* `slash_command`: Claude Code передаёт `systemMessage` хука Claude в качестве контекста на следующем ходе диалога, а не показывает его вам. Количество неудавшихся хуков отображается в транскрипте. Полный вывод сбоев записывается в отладочный лог3260* `slash_command`: Claude Code передаёт `systemMessage` хука Claude как контекст на следующем ходе диалога, а не показывает его вам. В транскрипте появляется количество хуков, завершившихся с ошибкой. Полный вывод ошибок записывается в отладочный лог

3235* `register_repo_root`: Claude Code записывает вывод `systemMessage` и вывод сбоев только в отладочный лог3261* `register_repo_root`: Claude Code записывает вывод `systemMessage` и вывод ошибок только в отладочный лог

3236 3262 

3237<h3 id="filechanged">3263<h3 id="filechanged">

3238 FileChanged3264 FileChanged

3239</h3>3265</h3>

3240 3266 

3241Выполняется, когда отслеживаемый файл изменяется на диске. Claude Code обнаруживает изменения с помощью наблюдателя файловой системы, а не путём проверки вызовов инструментов, поэтому он запускает хук независимо от того, что изменило файл: вызов инструмента `Edit` или `Write`, скрипт, который Claude запускает с помощью `Bash`, или процесс полностью вне Claude Code. Типичное применение — перезагрузка переменных окружения при изменении файлов конфигурации проекта.3267Запускается, когда отслеживаемый файл изменяется на диске. Claude Code обнаруживает изменения с помощью наблюдателя файловой системы, а не путём анализа вызовов инструментов, поэтому запускает хук независимо от того, что изменило файл: вызов инструмента `Edit` или `Write`, скрипт, который Claude запускает через `Bash`, или процесс полностью вне Claude Code. Типичный сценарий использования — перезагрузка переменных окружения при изменении файлов конфигурации проекта.

3242 3268 

3243`matcher` для этого события выполняет две роли:3269`matcher` для этого события выполняет две роли:

3244 3270 

3245* **Построение списка наблюдения**: значение разбивается по `|`, и каждый сегмент регистрируется как буквальное имя файла в рабочем каталоге, поэтому `".envrc|.env"` отслеживает ровно эти два файла. Шаблоны регулярных выражений здесь бесполезны: значение вроде `^\.env` будет отслеживать файл с буквальным именем `^\.env`.3271* **Формирование списка отслеживания**: значение разбивается по `|`, и каждый сегмент регистрируется как буквальное имя файла в рабочем каталоге, поэтому `".envrc|.env"` отслеживает ровно эти два файла. Регулярные выражения здесь бесполезны: значение вроде `^\.env` будет отслеживать файл с буквальным именем `^\.env`.

3246* **Фильтрация запускаемых хуков**: когда отслеживаемый файл изменяется, то же значение фильтрует, какие группы хуков запускаются, по стандартным [правилам matcher](#matcher-patterns) относительно базового имени изменённого файла.3272* **Фильтрация запускаемых хуков**: когда отслеживаемый файл изменяется, то же значение фильтрует, какие группы хуков запускаются, по стандартным [правилам matcher](#matcher-patterns) применительно к базовому имени изменённого файла.

3247 3273 

3248В этом примере нормализуются окончания строк в `data.csv` после любого изменения, включая перезапись файла командой `Bash` или внешним скриптом:3274Этот пример нормализует окончания строк в `data.csv` после любого изменения, включая перезапись файла командой `Bash` или внешним скриптом:

3249 3275 

3250```json theme={null}3276```json theme={null}

3251{3277{


3265}3291}

3266```3292```

3267 3293 

3268Хук считывает абсолютный путь к изменённому файлу из поля `file_path` [входных данных JSON](#filechanged-input) в stdin. Его проверка с помощью `grep` ищет то же, что удаляет `perl`, — CR в конце строки, поэтому запуск после нормализации завершается, не трогая файл. Менее строгая проверка приводит к бесконечному циклу, потому что `perl -i` перезаписывает файл, даже если ничего не заменяет, а Claude Code снова запускает хук после каждой перезаписи. Сохраните этот скрипт в `/path/to/normalize-line-endings.sh` и сделайте его исполняемым:3294Хук считывает абсолютный путь изменённого файла из поля `file_path` [входных данных JSON](#filechanged-input) на stdin. Его проверка `grep` ищет то же, что удаляет `perl`, — символ CR в конце строки, поэтому запуск после нормализации завершается, не затрагивая файл. Более мягкая проверка приводит к бесконечному циклу, потому что `perl -i` перезаписывает файл, даже если ничего не заменяет, а Claude Code запускает хук снова после каждой перезаписи. Сохраните этот скрипт по пути `/path/to/normalize-line-endings.sh` и сделайте его исполняемым:

3269 3295 

3270```bash theme={null}3296```bash theme={null}

3271#!/bin/bash3297#!/bin/bash


3275fi3301fi

3276```3302```

3277 3303 

3278Чтобы убедиться, что хук работает, попросите Claude дописать строку с CRLF в `data.csv` с помощью команды `Bash`. Claude Code запустит хук, и в итоге файл будет содержать окончания строк LF.3304Чтобы убедиться, что хук работает, попросите Claude добавить строку с CRLF в `data.csv` командой `Bash`. Claude Code запустит хук, и в файле останутся окончания LF.

3279 3305 

3280Чтобы отслеживать файлы, которые нельзя назвать заранее, возвращайте из хука [`watchPaths`](#filechanged-output) для динамического обновления списка наблюдения. Claude Code запускает наблюдателя только тогда, когда что-то называет файл для отслеживания, поэтому заполните список группой FileChanged, matcher которой называет хотя бы один файл, или хуком [SessionStart](#sessionstart-decision-control) либо [CwdChanged](#cwdchanged), который возвращает `watchPaths`. Matcher по-прежнему фильтрует, какие группы хуков запускаются при изменении отслеживаемого файла, поэтому для группы, обрабатывающей динамические пути, опустите matcher: такой matcher соответствует каждому отслеживаемому файлу и ничего не добавляет в список наблюдения. Matcher `"*"` также соответствует каждому файлу, но Claude Code регистрирует его в списке наблюдения, как и любое другое значение, — как буквальный файл с именем `*`.3306Чтобы отслеживать файлы, имена которых нельзя указать заранее, возвращайте [`watchPaths`](#filechanged-output) из хука для динамического обновления списка отслеживания. Claude Code запускает наблюдатель только тогда, когда что-то указывает файл для отслеживания, поэтому заполните список группой FileChanged, matcher которой называет хотя бы один файл, или хуком [SessionStart](#sessionstart-decision-control) или [CwdChanged](#cwdchanged), возвращающим `watchPaths`. Matcher по-прежнему фильтрует, какие группы хуков запускаются при изменении отслеживаемого файла, поэтому для группы, обрабатывающей динамические пути, не указывайте matcher: тогда он соответствует каждому отслеживаемому файлу и ничего не добавляет в список отслеживания. Matcher `"*"` тоже соответствует каждому файлу, но Claude Code регистрирует его в списке отслеживания как любое другое значение — как файл с буквальным именем `*`.

3281 3307 

3282Хуки FileChanged имеют доступ к [`CLAUDE_ENV_FILE`](#persist-environment-variables). Переменные, записанные в этот файл, сохраняются для последующих команд Bash до следующего события [CwdChanged](#cwdchanged), когда Claude Code их очищает.3308Хуки FileChanged имеют доступ к [`CLAUDE_ENV_FILE`](#persist-environment-variables). Переменные, записанные в этот файл, сохраняются для последующих команд Bash до следующего события [CwdChanged](#cwdchanged), когда Claude Code их очищает.

3283 3309 


3304```3330```

3305 3331 

3306<h4 id="filechanged-output">3332<h4 id="filechanged-output">

3307 Вывод FileChanged3333 Выходные данные FileChanged

3308</h4>3334</h4>

3309 3335 

3310Помимо [выходных полей JSON](#json-output), доступных всем хукам, хуки FileChanged могут возвращать `watchPaths`, чтобы динамически обновлять, за какими путями к файлам ведётся наблюдение:3336Помимо [полей вывода JSON](#json-output), доступных всем хукам, хуки FileChanged могут возвращать `watchPaths` для динамического обновления отслеживаемых путей файлов:

3311 3337 

3312| Поле | Описание |3338| Поле | Описание |

3313| :- | :- |3339| :- | :- |

3314| `watchPaths` | Массив абсолютных путей. Заменяет текущий динамический список наблюдения. За путями из вашей конфигурации `matcher` наблюдение ведётся всегда. Используйте это, когда ваш скрипт хука обнаруживает дополнительные файлы для отслеживания на основе изменённого файла |3340| `watchPaths` | Массив абсолютных путей. Заменяет текущий динамический список отслеживания. Пути из конфигурации `matcher` отслеживаются всегда. Используйте это, когда скрипт хука обнаруживает дополнительные файлы для отслеживания на основе изменённого файла |

3315 3341 

3316У хуков FileChanged нет управления решениями. Они не могут предотвратить изменение файла.3342Хуки FileChanged не управляют решениями. Они не могут предотвратить изменение файла.

3317 3343 

3318Claude Code считывает `watchPaths` и `systemMessage` из их JSON-вывода и отбрасывает `continue`. В интерактивных сессиях он показывает `systemMessage` как короткое уведомление в терминале. Сообщение не попадает в поток сообщений SDK.3344Claude Code считывает `watchPaths` и `systemMessage` из их вывода JSON и отбрасывает `continue`. В интерактивных сессиях `systemMessage` показывается как краткое уведомление в терминале. Сообщение не попадает в поток сообщений SDK.

3319 3345 

3320<h3 id="worktreecreate">3346<h3 id="worktreecreate">

3321 WorktreeCreate3347 WorktreeCreate


3323 3349 

3324Запускается, когда Claude Code создаёт worktree, например в таких случаях:3350Запускается, когда Claude Code создаёт worktree, например в таких случаях:

3325 3351 

3326* Вы запускаете сессию с помощью `claude --worktree`3352* Вы запускаете сессию командой `claude --worktree`

3327* Claude создаёт worktree во время сессии и переключается в него с помощью инструмента [`EnterWorktree`](/docs/ru/tools-reference)3353* Claude создаёт worktree во время сессии и переключается в него с помощью инструмента [`EnterWorktree`](/docs/ru/tools-reference)

3328* [Субагент использует `isolation: "worktree"`](/docs/ru/sub-agents#choose-the-subagent-scope)3354* [Субагент использует `isolation: "worktree"`](/docs/ru/sub-agents#choose-the-subagent-scope)

3329* [Рабочий процесс](/docs/ru/workflows#migrate-many-files-in-parallel) запускает агента в собственном worktree3355* [Рабочий процесс](/docs/ru/workflows#migrate-many-files-in-parallel) запускает агента в собственном worktree

3330* Claude Code изолирует [фоновую сессию](/docs/ru/agent-view#how-file-edits-are-isolated) в собственном worktree3356* Claude Code изолирует [фоновую сессию](/docs/ru/agent-view#how-file-edits-are-isolated) в собственном worktree

3331* [`claude remote-control`](/docs/ru/remote-control#start-a-remote-control-session) в режиме `worktree` запускает сессию в собственном worktree3357* [`claude remote-control`](/docs/ru/remote-control#start-a-remote-control-session) в режиме `worktree` запускает сессию в собственном worktree

3332 3358 

3333Когда Claude выполняет `git worktree add` через инструмент Bash, а не вызывает `EnterWorktree`, ваш хук WorktreeCreate не запускается. Чтобы проверить или заблокировать эту команду, добавьте хук [`PreToolUse`](#pretooluse) с matcher `Bash`.3359Если Claude выполняет `git worktree add` через инструмент Bash вместо вызова `EnterWorktree`, ваш хук WorktreeCreate не запускается. Чтобы проверить или заблокировать эту команду, добавьте хук [`PreToolUse`](#pretooluse) с matcher `Bash`.

3334 3360 

3335По умолчанию Claude Code создаёт изолированную рабочую копию с помощью `git worktree`. Настройка хука WorktreeCreate заменяет это стандартное поведение git, позволяя использовать другую систему контроля версий, например SVN, Perforce или Mercurial.3361По умолчанию Claude Code создаёт изолированную рабочую копию с помощью `git worktree`. Настройка хука WorktreeCreate заменяет это стандартное поведение git, позволяя использовать другую систему контроля версий, например SVN, Perforce или Mercurial.

3336 3362 

3337Поскольку хук полностью заменяет стандартное поведение, [`.worktreeinclude`](/docs/ru/worktrees#copy-gitignored-files-into-worktrees) не обрабатывается. Если вам нужно скопировать в новый worktree локальные файлы конфигурации, например `.env`, сделайте это внутри скрипта хука.3363Поскольку хук полностью заменяет стандартное поведение, [`.worktreeinclude`](/docs/ru/worktrees#copy-gitignored-files-into-worktrees) не обрабатывается. Если нужно скопировать локальные файлы конфигурации, такие как `.env`, в новый worktree, делайте это в скрипте хука.

3338 3364 

3339Хук должен вернуть путь к каталогу созданного worktree. Claude Code использует этот путь как рабочий каталог изолированной сессии. О том, как каждый тип хука возвращает путь, см. в разделе [Вывод WorktreeCreate](#worktreecreate-output).3365Хук должен вернуть путь к созданному каталогу worktree. Claude Code использует этот путь как рабочий каталог для изолированной сессии. О том, как каждый тип хука возвращает путь, см. [Выходные данные WorktreeCreate](#worktreecreate-output).

3340 3366 

3341Claude Code учитывает успешность выполнения хука и возвращённый путь, а `systemMessage` и `continue` отбрасывает.3367Claude Code учитывает успешность хука и возвращённый путь и отбрасывает `systemMessage` и `continue`.

3342 3368 

3343Этот пример создаёт рабочую копию SVN и выводит путь, который будет использовать Claude Code. Замените URL репозитория на свой:3369Этот пример создаёт рабочую копию SVN и выводит путь для использования в Claude Code. Замените URL репозитория своим:

3344 3370 

3345```json theme={null}3371```json theme={null}

3346{3372{


3359}3385}

3360```3386```

3361 3387 

3362Хук считывает `name` worktree из входных данных JSON в stdin, извлекает свежую копию в новый каталог и выводит путь к каталогу. Именно `echo` в последней строке Claude Code считывает как путь к worktree. Перенаправляйте любой другой вывод в stderr, чтобы он не мешал пути.3388Хук считывает `name` worktree из входных данных JSON на stdin, извлекает свежую копию в новый каталог и выводит путь к каталогу. `echo` в последней строке — это то, что Claude Code считывает как путь к worktree. Перенаправляйте любой другой вывод в stderr, чтобы он не мешал пути.

3363 3389 

3364<h4 id="worktreecreate-input">3390<h4 id="worktreecreate-input">

3365 Входные данные WorktreeCreate3391 Входные данные WorktreeCreate

3366</h4>3392</h4>

3367 3393 

3368Помимо [общих входных полей](#common-input-fields), хуки WorktreeCreate получают поле `name`. Это идентификатор-слаг нового worktree, заданный пользователем или сгенерированный автоматически, например `bold-oak-a3f2`.3394Помимо [общих входных полей](#common-input-fields), хуки WorktreeCreate получают поле `name`. Это slug-идентификатор нового worktree, заданный пользователем или сгенерированный автоматически, например `bold-oak-a3f2`.

3369 3395 

3370```json theme={null}3396```json theme={null}

3371{3397{


3378```3404```

3379 3405 

3380<h4 id="worktreecreate-output">3406<h4 id="worktreecreate-output">

3381 Вывод WorktreeCreate3407 Выходные данные WorktreeCreate

3382</h4>3408</h4>

3383 3409 

3384Хуки WorktreeCreate не используют стандартную модель решений «разрешить/заблокировать». Вместо этого результат определяется успехом или неудачей хука. Хук должен вернуть путь к каталогу созданного worktree:3410Хуки WorktreeCreate не используют стандартную модель решений разрешения/блокировки. Вместо этого результат определяется успехом или неудачей хука. Хук должен вернуть путь к созданному каталогу worktree:

3385 3411 

3386* **Командные хуки** (`type: "command"`): выведите путь последней непустой строкой stdout. Claude Code удаляет управляющие последовательности ANSI перед чтением этой строки, поэтому баннеры запуска оболочки, выведенные до вашего `echo`, игнорируются. Перенаправляйте любой другой вывод хука в stderr.3412* **Хуки команд** (`type: "command"`): выведите путь последней непустой строкой stdout. Claude Code удаляет escape-коды ANSI перед чтением этой строки, поэтому баннеры запуска оболочки, выведенные до вашего `echo`, игнорируются. Перенаправляйте любой другой вывод хука в stderr.

3387* **HTTP-хуки** (`type: "http"`): верните `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` в теле ответа.3413* **HTTP-хуки** (`type: "http"`): верните `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` в теле ответа.

3388 3414 

3389Если хук завершается с ошибкой или не выдаёт путь, создание worktree завершается ошибкой.3415Если хук завершается неудачей или не выдаёт путь, создание worktree завершается ошибкой.

3390 3416 

3391Claude Code разрешает относительный путь относительно каталога, в котором выполнялся хук, сворачивая в нём любые сегменты `.` или `..`. Если полученный путь не является каталогом, в который Claude Code может перейти, сессия выводит ошибку с указанием пути и завершается с кодом выхода 1.3417Claude Code разрешает относительный путь относительно каталога, в котором выполнялся хук, сворачивая в нём любые сегменты `.` или `..`. Если полученный путь не является каталогом, в который Claude Code может войти, сессия выводит ошибку с указанием пути и завершается с кодом 1.

3392 3418 

3393Claude Code отклоняет абсолютный путь, содержащий сегменты `.` или `..`, а также любой путь, проходящий через символическую ссылку ниже корня репозитория, поскольку символическая ссылка, закоммиченная в репозиторий, может перенаправить worktree за его пределы. В ошибке указывается отклонённый компонент. Возвращайте нормализованный путь, который не проходит через символическую ссылку внутри репозитория. До v2.1.216 создание worktree следовало пути хука без такой проверки.3419Claude Code отклоняет абсолютный путь, содержащий сегменты `.` или `..`, а также любой путь, проходящий через символическую ссылку ниже корня репозитория, поскольку символическая ссылка, закоммиченная в репозиторий, может перенаправить worktree за его пределы. В ошибке указывается отклонённый компонент. Возвращайте нормализованный путь, который не проходит через символическую ссылку внутри репозитория. До v2.1.216 создание worktree следовало пути хука без этой проверки.

3394 3420 

3395<h3 id="worktreeremove">3421<h3 id="worktreeremove">

3396 WorktreeRemove3422 WorktreeRemove


3398 3424 

3399Запускается, когда Claude Code очищает worktree, созданный вашим хуком [`WorktreeCreate`](#worktreecreate). Событие срабатывает, когда:3425Запускается, когда Claude Code очищает worktree, созданный вашим хуком [`WorktreeCreate`](#worktreecreate). Событие срабатывает, когда:

3400 3426 

3401* Вы выходите из интерактивной [сессии в worktree](/docs/ru/worktrees#start-claude-in-a-worktree) и соглашаетесь удалить worktree, когда Claude Code спрашивает об этом3427* Вы выходите из интерактивной [сессии worktree](/docs/ru/worktrees#start-claude-in-a-worktree) и выбираете удаление worktree в ответ на запрос Claude Code

3402* Вы выходите из интерактивной сессии в worktree, которой не [дали имя](/docs/ru/sessions#name-your-sessions), Claude Code не находит изменённых или неотслеживаемых файлов и удаляет worktree, не спрашивая вас3428* Вы выходите из интерактивной сессии worktree, которой не [дали имя](/docs/ru/sessions#name-your-sessions), Claude Code не находит изменённых или неотслеживаемых файлов и удаляет worktree без запроса

3403* Вы удаляете [фоновую сессию](/docs/ru/agent-view#what-deleting-a-session-removes), которая работает в этом worktree3429* Вы удаляете [фоновую сессию](/docs/ru/agent-view#what-deleting-a-session-removes), работающую в worktree

3404* Вы просите Claude выйти и удалить worktree во время сессии, и Claude удаляет его с помощью инструмента [`ExitWorktree`](/docs/ru/tools-reference)3430* Вы просите Claude выйти и удалить worktree во время сессии, и Claude удаляет его инструментом [`ExitWorktree`](/docs/ru/tools-reference)

3405* Сессия, запущенная [`claude remote-control`](/docs/ru/remote-control#start-a-remote-control-session) в режиме `worktree`, завершается без сбоя, и Claude Code не находит в её worktree изменённых или неотслеживаемых файлов и новых коммитов3431* Сессия, которую [`claude remote-control`](/docs/ru/remote-control#start-a-remote-control-session) запустил в режиме `worktree`, завершается без сбоя, и Claude Code не находит в её worktree изменённых или неотслеживаемых файлов и новых коммитов

3406* Вы останавливаете `claude remote-control`, пока запущенные им в режиме `worktree` сессии ещё работают, и Claude Code не находит в их worktree изменённых или неотслеживаемых файлов и новых коммитов3432* Вы останавливаете `claude remote-control`, пока запущенные им в режиме `worktree` сессии ещё работают, и Claude Code не находит в их worktree изменённых или неотслеживаемых файлов и новых коммитов

3407 3433 

3408Когда субагент или агент рабочего процесса завершает работу, Claude Code сохраняет worktree, созданный для него вашим хуком WorktreeCreate, и не запускает ваш хук WorktreeRemove. Удалите эти worktree самостоятельно, когда работа будет завершена.3434Когда субагент или агент рабочего процесса завершает работу, Claude Code сохраняет worktree, созданный для него вашим хуком WorktreeCreate, и не запускает хук WorktreeRemove. Удаляйте такие worktree самостоятельно, когда работа завершена.

3409 3435 

3410Claude Code не запрашивает подтверждение перед запуском вашего хука при вызове `ExitWorktree` или очистке `claude remote-control`. `ExitWorktree` отказывается удалять созданный хуком worktree, если в вызове не передан [`discard_changes: true`](/docs/ru/agent-sdk/typescript#exitworktree), поэтому на этом пути ваш хук является последней проверкой.3436Claude Code не запрашивает подтверждение перед запуском хука для вызова `ExitWorktree` или очистки `claude remote-control`. `ExitWorktree` отказывается удалять созданный хуком worktree, если вызов не передаёт [`discard_changes: true`](/docs/ru/agent-sdk/typescript#exitworktree), что делает ваш хук последней проверкой на этом пути.

3411 3437 

3412Claude Code ищет изменённые или неотслеживаемые файлы с помощью Git, поэтому не находит их в worktree, который не является Git-checkout и не находится внутри него, даже если в каталоге есть незакоммиченная работа. Проверяйте наличие такой работы в хуке WorktreeRemove, прежде чем он что-либо удалит.3438Claude Code использует git для поиска изменённых или неотслеживаемых файлов, поэтому не находит их в worktree, который не является git-checkout и не находится внутри него, даже если в каталоге есть незакоммиченная работа. Проверяйте наличие такой работы в хуке WorktreeRemove, прежде чем он что-либо удалит.

3413 3439 

3414Для worktree на основе git Claude Code выполняет очистку автоматически с помощью `git worktree remove`. Если вы настроили хук WorktreeCreate, добавьте к нему хук WorktreeRemove для управления очисткой:3440Для worktree на основе git Claude Code автоматически выполняет очистку с помощью `git worktree remove`. Если вы настроили хук WorktreeCreate, дополните его хуком WorktreeRemove, чтобы управлять очисткой:

3415 3441 

3416* **Нет хука WorktreeRemove**: Claude Code использует git как резервный вариант для удаления при выходе или через `ExitWorktree` и сохраняет worktree, когда очистку выполняет `claude remote-control`:3442* **Нет хука WorktreeRemove**: Claude Code использует git как резервный вариант при удалении на выходе или через `ExitWorktree` и сохраняет worktree при очистке `claude remote-control`:

3417 * **Вы выходите из сессии worktree или Claude вызывает `ExitWorktree`**: Claude Code удаляет путь, возвращённый вашим хуком WorktreeCreate, так же, как это сделала бы `git worktree remove --force`, поэтому worktree, который распознаёт git, удаляется. Worktree, который git не распознаёт, например созданный вашим хуком с помощью системы контроля версий, отличной от git, остаётся на диске.3443 * **Вы выходите из сессии worktree или Claude вызывает `ExitWorktree`**: Claude Code удаляет путь, возвращённый хуком WorktreeCreate, так же, как это сделал бы `git worktree remove --force`, поэтому worktree, распознаваемый git, удаляется. Worktree, который git не распознаёт, например созданный хуком с системой контроля версий, отличной от git, остаётся на диске.

3418 * **`claude remote-control` очищает worktree сессии**: worktree остаётся на диске, а терминал, в котором работает `claude remote-control`, показывает `worktree removal failed, kept: <path>`.3444 * **`claude remote-control` очищает worktree сессии**: worktree остаётся на диске, а терминал, в котором работает `claude remote-control`, показывает `worktree removal failed, kept: <path>`.

3419 * **Вы удаляете фоновую сессию**: см. [Что удаляется при удалении сессии](/docs/ru/agent-view#what-deleting-a-session-removes).3445 * **Вы удаляете фоновую сессию**: см. [Что удаляется при удалении сессии](/docs/ru/agent-view#what-deleting-a-session-removes).

3420* **Хук завершается с кодом 0**: worktree считается удалённым. Claude Code больше ничего не считывает из хука, поэтому убедитесь, что ваш хук удалил каталог.3446* **Хук завершается с кодом 0**: worktree считается удалённым. Claude Code больше ничего не считывает из хука, поэтому убедитесь, что хук удалил каталог.

3421* **Хук завершается с ненулевым кодом**: удаление завершается неудачей, если каталог по пути `worktree_path` после этого всё ещё существует, и worktree остаётся на диске без резервного варианта через Git. Хук, который удалил каталог перед завершением с ненулевым кодом, считается успешно удалившим worktree. О том, как сообщается об ошибке, см. в разделе [Входные данные WorktreeRemove](#worktreeremove-input).3447* **Хук завершается с ненулевым кодом**: удаление завершается неудачей, если каталог по пути `worktree_path` после этого всё ещё существует, и worktree остаётся на диске без резервного варианта через git. Хук, удаливший каталог перед завершением с ненулевым кодом, считается выполнившим удаление. О том, как сообщается о неудаче, см. [Входные данные WorktreeRemove](#worktreeremove-input).

3422 3448 

3423Claude Code никогда не удаляет ветку, принадлежащую worktree, созданному хуком, поскольку знает только путь, возвращённый вашим хуком WorktreeCreate. Если ваш хук WorktreeCreate создаёт ветку, удаляйте её в хуке WorktreeRemove.3449Claude Code никогда не удаляет ветку, принадлежащую созданному хуком worktree, потому что знает только путь, возвращённый хуком WorktreeCreate. Если хук WorktreeCreate создаёт ветку, удаляйте её в хуке WorktreeRemove.

3424 3450 

3425Claude Code отбрасывает [поля вывода JSON](#json-output) хука WorktreeRemove, такие как `systemMessage` и `continue`.3451Claude Code отбрасывает [поля вывода JSON](#json-output) хука WorktreeRemove, такие как `systemMessage` и `continue`.

3426 3452 

3427При удалении фоновой сессии Claude Code проверяет сохранённый путь к worktree перед запуском хука и отклоняет путь, который является символической ссылкой или проходит через неё ниже корня репозитория. На этом пути хук запускается для worktree, в котором ещё есть файлы, только если вы подтверждаете удаление в [представлении агентов](/docs/ru/agent-view#what-deleting-a-session-removes); для такого worktree [`claude rm`](/docs/ru/agent-view#manage-sessions-from-the-shell) вместо этого сохраняет сессию и worktree. До v2.1.216 хук запускался для сохранённого пути без этих проверок.3453При удалении фоновой сессии Claude Code проверяет сохранённый путь worktree перед запуском хука и отклоняет путь, который является символической ссылкой или проходит через неё ниже корня репозитория. На этом пути хук запускается для worktree, всё ещё содержащего файлы, только если вы подтверждаете удаление в [представлении агентов](/docs/ru/agent-view#what-deleting-a-session-removes); для такого worktree [`claude rm`](/docs/ru/agent-view#manage-sessions-from-the-shell) вместо этого сохраняет сессию и worktree. До v2.1.216 хук запускался для сохранённого пути без этих проверок.

3428 3454 

3429Claude Code передаёт путь, возвращённый WorktreeCreate, как `worktree_path` во входных данных хука. Этот пример считывает этот путь и удаляет каталог:3455Claude Code передаёт путь, возвращённый WorktreeCreate, как `worktree_path` во входных данных хука. Этот пример считывает этот путь и удаляет каталог:

3430 3456 


3461}3487}

3462```3488```

3463 3489 

3464Результат определяется кодом выхода хука WorktreeRemove. Когда хук завершается с ненулевым кодом и каталог по пути `worktree_path` после этого всё ещё существует, удаление завершается неудачей:3490Результат определяется кодом выхода хука WorktreeRemove. Если хук завершается с ненулевым кодом, а каталог по пути `worktree_path` после этого всё ещё существует, удаление завершается неудачей:

3465 3491 

3466* Worktree остаётся на диске, а команда хука и его stderr попадают в [лог отладки](#debug-hooks).3492* Worktree остаётся на диске, а команда хука и его stderr попадают в [отладочный лог](#debug-hooks).

3467* Если вы удаляли фоновую сессию, сессия тоже остаётся. Сообщение об отказе в [agent view](/docs/ru/agent-view#what-deleting-a-session-removes) сообщает, как завершился хук, например `exited 1`, цитирует начало его stderr и указывает, удалит ли повторное удаление сессии каталог в любом случае.3493* Если вы удаляли фоновую сессию, сессия тоже сохраняется. Сообщение об отказе в [представлении агентов](/docs/ru/agent-view#what-deleting-a-session-removes) сообщает, как завершился хук, например `exited 1`, цитирует начало его stderr и указывает, удалит ли повторное удаление сессии каталог в любом случае.

3468* Если `claude remote-control` очищал worktree сессии, терминал, в котором он работает, показывает `worktree removal failed, kept: <path>`.3494* Если `claude remote-control` очищал worktree сессии, терминал, в котором он работает, показывает `worktree removal failed, kept: <path>`.

3469 3495 

3470<h3 id="precompact">3496<h3 id="precompact">


3478| Matcher | Когда срабатывает |3504| Matcher | Когда срабатывает |

3479| :- | :- |3505| :- | :- |

3480| `manual` | `/compact` |3506| `manual` | `/compact` |

3481| `auto` | Автосжатие, когда диалог достигает [окна автосжатия](/docs/ru/model-config#set-the-auto-compact-window) |3507| `auto` | Автосжатие, когда диалог достигает [окна автосжатия](/docs/ru/model-config#set-the-auto-compact-window), и [сжатие при простое](/docs/ru/settings-reference#idlecompaction) |

3482 3508 

3483Завершитесь с кодом 2, чтобы заблокировать сжатие. Для ручного `/compact` сообщение из stderr показывается пользователю. Также можно заблокировать сжатие, вернув JSON с `"decision": "block"`.3509Завершитесь с кодом 2, чтобы заблокировать сжатие. Для ручного `/compact` сообщение из stderr показывается пользователю. Также можно заблокировать сжатие, вернув JSON с `"decision": "block"`.

3484 3510 

3485Блокировка автоматического сжатия действует по-разному в зависимости от момента срабатывания. Если сжатие было запущено заранее, до достижения лимита контекста, Claude Code пропускает его, и диалог продолжается без сжатия. Если сжатие было запущено для восстановления после ошибки лимита контекста, уже возвращённой API, исходная ошибка отображается, и текущий запрос завершается неудачей.3511Блокировка автоматического сжатия имеет разные последствия в зависимости от момента срабатывания. Если сжатие было запущено заблаговременно, до достижения лимита контекста, Claude Code пропускает его, и диалог продолжается без сжатия. Если сжатие было запущено для восстановления после ошибки лимита контекста, уже возвращённой API, исходная ошибка выводится, и текущий запрос завершается неудачей.

3486 3512 

3487Claude Code отбрасывает поля `systemMessage` и `continue` хука PreCompact.3513Claude Code отбрасывает поля `systemMessage` и `continue` хука PreCompact.

3488 3514 


3490 Входные данные PreCompact3516 Входные данные PreCompact

3491</h4>3517</h4>

3492 3518 

3493Помимо [общих входных полей](#common-input-fields), хуки PreCompact получают `trigger` и `custom_instructions`. Для `manual` поле `custom_instructions` содержит то, что пользователь передаёт в `/compact`, и равно `null`, если он ничего не передаёт. Для `auto` поле `custom_instructions` равно `null`.3519Помимо [общих входных полей](#common-input-fields), хуки PreCompact получают `trigger` и `custom_instructions`. Для `manual` поле `custom_instructions` содержит то, что пользователь передаёт в `/compact`, и равно `null`, если ничего не передано. Для `auto` поле `custom_instructions` равно `null`.

3494 3520 

3495```json theme={null}3521```json theme={null}

3496{3522{


3507 PostCompact3533 PostCompact

3508</h3>3534</h3>

3509 3535 

3510Запускается после того, как Claude Code завершает операцию сжатия контекста. Используйте это событие, чтобы реагировать на новое сжатое состояние, например чтобы записать сгенерированную сводку в лог или обновить внешнее состояние. Claude Code отбрасывает поля `systemMessage` и `continue` хука PostCompact.3536Запускается после того, как Claude Code завершает операцию сжатия контекста. Используйте это событие, чтобы реагировать на новое сжатое состояние, например чтобы записать в лог сгенерированную сводку или обновить внешнее состояние. Claude Code отбрасывает поля `systemMessage` и `continue` хука PostCompact.

3511 3537 

3512Применяются те же значения matcher, что и для `PreCompact`:3538Применяются те же значения matcher, что и для `PreCompact`:

3513 3539 

3514| Matcher | Когда срабатывает |3540| Matcher | Когда срабатывает |

3515| :- | :- |3541| :- | :- |

3516| `manual` | После `/compact` |3542| `manual` | После `/compact` |

3517| `auto` | После автосжатия, когда диалог достигает [окна автосжатия](/docs/ru/model-config#set-the-auto-compact-window) |3543| `auto` | После автосжатия, когда диалог достигает [окна автосжатия](/docs/ru/model-config#set-the-auto-compact-window), и после [сжатия при простое](/docs/ru/settings-reference#idlecompaction) |

3518 3544 

3519<h4 id="postcompact-input">3545<h4 id="postcompact-input">

3520 Входные данные PostCompact3546 Входные данные PostCompact


3539 PreModelSwitch3565 PreModelSwitch

3540</h3>3566</h3>

3541 3567 

3542Запускается до того, как Claude Code применит смену модели, запрошенную вами или клиентом. Используйте его, чтобы заблокировать смену, потребовать подтверждения или показать, во что обойдётся смена, до того как она произойдёт.3568Запускается перед тем, как Claude Code применит переключение модели, запрошенное вами или клиентом. Используйте его, чтобы заблокировать переключение, потребовать подтверждения или показать, во что обойдётся переключение, до того как оно произойдёт.

3543 3569 

3544PreModelSwitch требует Claude Code v2.1.251 или новее. Claude Code запускает его для следующих запросов:3570PreModelSwitch требует Claude Code v2.1.251 или новее. Claude Code запускает его для следующих запросов:

3545 3571 

3546* `/model <name>` и окно выбора `/model`3572* `/model <name>` и окно выбора `/model`

3547* Окно выбора модели `Option+P` или `Alt+P`3573* Окно выбора модели `Option+P` или `Alt+P`

3548* Настройка Model в `/config`3574* Настройка Model в `/config`

3549* Включение [быстрого режима](/docs/ru/fast-mode), когда это меняет модель сессии3575* Включение [быстрого режима](/docs/ru/fast-mode), если это меняет модель сессии

3550* Запрос `set_model` или смена модели в запросе `apply_flag_settings` от хоста [Agent SDK](/docs/ru/agent-sdk/typescript#query-object) или [Remote Control](/docs/ru/remote-control)3576* Запрос `set_model` или изменение модели в запросе `apply_flag_settings` от хоста [Agent SDK](/docs/ru/agent-sdk/typescript#query-object) или [Remote Control](/docs/ru/remote-control)

3551 3577 

3552Claude Code не запускает хуки PreModelSwitch для смен, которые выполняет самостоятельно, например при [автоматическом переключении на резервную модель](/docs/ru/model-config#automatic-model-fallback) или восстановлении модели при возобновлении сессии. Такие изменения доходят только до [PostModelSwitch](#postmodelswitch).3578Claude Code не запускает хуки PreModelSwitch для переключений, которые он выполняет сам, например при [автоматическом переключении на резервную модель](/docs/ru/model-config#automatic-model-fallback) или восстановлении модели при возобновлении сессии. Такие изменения доходят только до [PostModelSwitch](#postmodelswitch).

3553 3579 

3554Claude Code сравнивает matcher с каноническим именем модели, на которую переключается сессия, игнорируя суффикс `[1m]`. Псевдоним, например `opus`, идентификатор модели с датой и идентификатор конкретного провайдера, например идентификатор модели Amazon Bedrock, — все соответствуют одному каноническому имени, к которому они разрешаются, поэтому `claude-opus-5` охватывает все варианты написания Opus 5.3580Claude Code сравнивает matcher с каноническим именем модели, на которую переключается сессия, игнорируя суффикс `[1m]`. Псевдоним, например `opus`, идентификатор модели с датой и идентификатор конкретного провайдера, например идентификатор модели Amazon Bedrock, соответствуют одному каноническому имени, в которое они разрешаются, поэтому `claude-opus-5` охватывает все варианты написания Opus 5.

3555 3581 

3556Когда Claude Code не может определить каноническое имя целевой модели, например для пользовательского идентификатора модели, который знает только ваш [LLM-шлюз](/docs/ru/llm-gateway), он запускает все хуки PreModelSwitch независимо от matcher. Поэтому блокирующий хук должен проверять `to_model` из своих входных данных, а не полагаться только на matcher.3582Если Claude Code не может определить каноническое имя целевой модели, например для пользовательского идентификатора модели, известного только вашему [LLM-шлюзу](/docs/ru/llm-gateway), он запускает каждый хук PreModelSwitch независимо от matcher. Поэтому блокирующий хук должен проверять `to_model` из входных данных, а не полагаться только на matcher.

3557 3583 

3558Записывайте matcher как точное имя, список через `|`, например `claude-opus-4-6|claude-opus-5`, или регулярное выражение, например `.*opus.*`. В этом примере используется matcher с точным именем, а также проверяется `to_model` из входных данных хука, поэтому он отклоняет переключение на Opus 4.6, завершаясь с кодом 2, и пропускает любую другую целевую модель:3584Записывайте matcher как точное имя, список через `|`, например `claude-opus-4-6|claude-opus-5`, или регулярное выражение, например `.*opus.*`. Этот пример использует matcher с точным именем и дополнительно проверяет `to_model` из входных данных хука, поэтому он отклоняет переключение на Opus 4.6, завершаясь с кодом 2, и пропускает любую другую целевую модель:

3559 3585 

3560<Tabs>3586<Tabs>

3561 <Tab title="macOS/Linux">3587 <Tab title="macOS/Linux">


3581 </Tab>3607 </Tab>

3582 3608 

3583 <Tab title="Windows (PowerShell)">3609 <Tab title="Windows (PowerShell)">

3584 Зарегистрируйте командный хук, который запускает скрипт через PowerShell:3610 Зарегистрируйте хук команды, который запускает скрипт через PowerShell:

3585 3611 

3586 ```json theme={null}3612 ```json theme={null}

3587 {3613 {


3608 }3634 }

3609 ```3635 ```

3610 3636 

3611 Сохраните этот скрипт в файл `.claude/hooks/block-opus-46.ps1` в вашем проекте:3637 Сохраните этот скрипт в `.claude/hooks/block-opus-46.ps1` в вашем проекте:

3612 3638 

3613 ```powershell theme={null}3639 ```powershell theme={null}

3614 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json3640 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json


3621 </Tab>3647 </Tab>

3622</Tabs>3648</Tabs>

3623 3649 

3624Чтобы убедиться, что хук работает, выполните `/model claude-opus-4-6` в сессии, использующей другую модель. Claude Code сохранит текущую модель и сообщит, что хук PreModelSwitch заблокировал смену, указав ваше сообщение в качестве причины.3650Чтобы убедиться, что хук работает, выполните `/model claude-opus-4-6` в сессии с другой моделью. Claude Code сохранит текущую модель и сообщит, что хук PreModelSwitch заблокировал переключение, указав ваше сообщение в качестве причины.

3625 3651 

3626<h4 id="premodelswitch-input">3652<h4 id="premodelswitch-input">

3627 Входные данные PreModelSwitch3653 Входные данные PreModelSwitch

3628</h4>3654</h4>

3629 3655 

3630Помимо [общих входных полей](#common-input-fields), хуки PreModelSwitch получают поля из этой таблицы. Последние пять описывают стоимость повторной отправки диалога новой модели, чтобы хук мог показать эту сумму до смены.3656Помимо [общих входных полей](#common-input-fields), хуки PreModelSwitch получают поля из этой таблицы. Последние пять описывают стоимость повторной отправки диалога новой модели, чтобы хук мог показать эту цифру до переключения.

3631 3657 

3632| Поле | Тип | Описание |3658| Поле | Тип | Описание |

3633| :- | :- | :- |3659| :- | :- | :- |

3634| `from_model` | string | Идентификатор модели, с которой происходит смена |3660| `from_model` | string | Идентификатор модели, с которой выполняется переключение |

3635| `to_model` | string | Идентификатор модели, на которую происходит смена. Matcher сравнивается с каноническим именем этой модели |3661| `to_model` | string | Идентификатор модели, на которую выполняется переключение. Matcher сравнивается с каноническим именем этой модели |

3636| `requested_model` | string или `null` | Модель, указанная в запросе: псевдоним, например `opus`, полный идентификатор модели или `null`, если запрос был на модель по умолчанию |3662| `requested_model` | string или `null` | Модель, указанная в запросе: псевдоним, например `opus`, полный идентификатор модели или `null`, если запрашивалась модель по умолчанию |

3637| `source` | string | Откуда пришёл запрос: `"command"` для `/model <name>`, настройки Model в `/config` или включения быстрого режима; `"picker"` для окна выбора модели; `"sdk"` для запроса `set_model` или смены модели в запросе `apply_flag_settings` от хоста Agent SDK или Remote Control |3663| `source` | string | Откуда пришёл запрос: `"command"` для `/model <name>`, настройки Model в `/config` или включения быстрого режима; `"picker"` для окна выбора модели; `"sdk"` для запроса `set_model` или изменения модели в запросе `apply_flag_settings` от хоста Agent SDK или Remote Control |

3638| `context_tokens` | number | Токены, которые следующий запрос повторно отправит в качестве промпта: сумма входных токенов, токенов чтения кэша, создания кэша и выходных токенов последнего ответа в основном диалоге. `0` до первого ответа |3664| `context_tokens` | number | Токены, которые следующий запрос отправит повторно в качестве промпта: сумма входных токенов, токенов чтения кэша, создания кэша и выходных токенов последнего ответа в основном диалоге. `0` до первого ответа |

3639| `prompt_cache_warm` | boolean | Вероятно ли, что кэш промптов текущей модели всё ещё «тёплый», то есть смена приведёт к его потере |3665| `prompt_cache_warm` | boolean | Вероятно ли, что кэш промптов текущей модели ещё «тёплый», то есть переключение приведёт к его потере |

3640| `cache_ttl` | string | [Время жизни кэша промптов](/docs/ru/prompt-caching#cache-lifetime), которое Claude Code запрашивает для этой сессии: `"5m"` или `"1h"` |3666| `cache_ttl` | string | [Время жизни кэша промптов](/docs/ru/prompt-caching#cache-lifetime), которое Claude Code запрашивает для этой сессии: `"5m"` или `"1h"` |

3641| `estimated_cache_write_usd` | number | Оценочная стоимость в долларах США записи `context_tokens` в кэш промптов на `to_model` по тарифу `cache_ttl`, без учёта следующего ответа. Серверу может не понадобиться повторно кэшировать весь контекст, поэтому рассматривайте это значение как оценку |3667| `estimated_cache_write_usd` | number | Оценочная стоимость в долларах США записи `context_tokens` в кэш промптов на `to_model` по тарифу `cache_ttl`, без учёта следующего ответа. Серверу может не потребоваться повторно кэшировать весь контекст, поэтому считайте это оценкой |

3642| `pricing` | string | Как Claude Code рассчитал `estimated_cache_write_usd`: `"configured"` — по собственным тарифам вашей организации, если она их настроила, `"catalog"` — по прейскурантной цене, или `"default"`, когда цена `to_model` неизвестна и Claude Code принял тариф по умолчанию |3668| `pricing` | string | Как Claude Code рассчитал `estimated_cache_write_usd`: `"configured"` — по собственным тарифам вашей организации, если она их настроила, `"catalog"` — по прейскурантной цене, или `"default"` — если цена `to_model` неизвестна и Claude Code использовал тариф по умолчанию |

3643 3669 

3644В этом примере показаны входные данные для `/model opus` в сессии, использующей Sonnet 5:3670Этот пример показывает входные данные для `/model opus` в сессии с Sonnet 5:

3645 3671 

3646```json theme={null}3672```json theme={null}

3647{3673{


3665 Управление решениями PreModelSwitch3691 Управление решениями PreModelSwitch

3666</h4>3692</h4>

3667 3693 

3668Хуки `PreModelSwitch` могут отменить смену, попросить пользователя подтвердить её или позволить ей выполниться. Код выхода 2 или `decision: "block"` верхнего уровня отменяет смену.3694Хуки `PreModelSwitch` могут отменить переключение, попросить пользователя подтвердить его или разрешить его выполнение. Код выхода 2 или `decision: "block"` на верхнем уровне отменяет переключение.

3669 3695 

3670Для более тонкого управления возвращайте `permissionDecision` и `permissionDecisionReason` в объекте `hookSpecificOutput`, как для [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` принимает `"allow"`, `"deny"` и `"ask"`. Он не принимает `"defer"`, `updatedInput` или `additionalContext`. В таблице ниже описаны оба поля:3696Для более тонкого управления возвращайте `permissionDecision` и `permissionDecisionReason` в объекте `hookSpecificOutput`, как в [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` принимает `"allow"`, `"deny"` и `"ask"`. Он не принимает `"defer"`, `updatedInput` или `additionalContext`. В таблице ниже описаны оба поля:

3671 3697 

3672| Поле | Описание |3698| Поле | Описание |

3673| :- | :- |3699| :- | :- |

3674| `permissionDecision` | `"allow"` выполняет смену и пропускает [подтверждение, которое Claude Code показывает, пока кэш промптов «тёплый»](/docs/ru/prompt-caching#switching-models). `"deny"` отменяет смену. `"ask"` просит пользователя подтвердить её |3700| `permissionDecision` | `"allow"` продолжает и пропускает [подтверждение, которое Claude Code показывает, пока кэш промптов «тёплый»](/docs/ru/prompt-caching#switching-models). `"deny"` отменяет переключение. `"ask"` просит пользователя подтвердить его |

3675| `permissionDecisionReason` | Для `"deny"` показывается пользователю как причина блокировки смены или возвращается как ошибка для запроса `set_model`. Для `"ask"` показывается в запросе подтверждения. Игнорируется для `"allow"` |3701| `permissionDecisionReason` | Для `"deny"` показывается пользователю как причина блокировки переключения или возвращается как ошибка для запроса `set_model`. Для `"ask"` показывается в запросе подтверждения. Игнорируется для `"allow"` |

3676 3702 

3677Показать запрос `"ask"` может только `/model` в интерактивной сессии. На всех остальных интерфейсах, включая неинтерактивный режим с флагом `-p`, `/config` и запросы `set_model`, Claude Code рассматривает `"ask"` как отказ.3703Только `/model` в интерактивной сессии может показать запрос `"ask"`. Во всех остальных интерфейсах, включая неинтерактивный режим с флагом `-p`, `/config` и запросы `set_model`, Claude Code рассматривает `"ask"` как отказ.

3678 3704 

3679Этот пример просит пользователя подтвердить смену и приводит количество токенов из `context_tokens`:3705Этот пример просит пользователя подтвердить переключение и приводит количество токенов из `context_tokens`:

3680 3706 

3681```json theme={null}3707```json theme={null}

3682{3708{


3688}3714}

3689```3715```

3690 3716 

3691Когда несколько хуков PreModelSwitch возвращают разные решения, приоритет таков: `deny` > `ask` > `allow`.3717Когда несколько хуков PreModelSwitch возвращают разные решения, приоритет такой: `deny` > `ask` > `allow`.

3692 3718 

3693Claude Code показывает пользователю любое `systemMessage`, возвращённое вашим хуком, независимо от решения, поэтому хук, сообщающий о стоимости, может вернуть `{"systemMessage": "..."}` и завершиться с кодом 0.3719Claude Code показывает пользователю любое `systemMessage`, возвращённое хуком, независимо от решения, поэтому хук для отчёта о стоимости может вернуть `{"systemMessage": "..."}` и завершиться с кодом 0.

3694 3720 

3695Хук PreModelSwitch, который не ответил до истечения таймаута, блокирует переключение. О том, что делает таймаут для других событий, см. [Таймауты](#timeouts). Таймаут по умолчанию для этого события — 30 секунд. `PreModelSwitch` запускает только хуки `command`, `http` и `mcp_tool`, поэтому значения по умолчанию для `prompt` и `agent` не применяются.3721Хук PreModelSwitch, не ответивший до истечения таймаута, блокирует переключение. О том, что делает таймаут для других событий, см. [Таймауты](#timeouts). Таймаут по умолчанию для этого события — 30 секунд. `PreModelSwitch` запускает только хуки `command`, `http` и `mcp_tool`, поэтому значения по умолчанию для `prompt` и `agent` не применяются.

3696 3722 

3697Хук, который завершается с кодом, отличным от 0 или 2, и не выводит JSON-решение, считается неблокирующей ошибкой, как описано в разделе [Другие коды выхода](#other-exit-codes).3723Хук, завершившийся с кодом, отличным от 0 или 2, и не выводящий решения в JSON, считается неблокирующей ошибкой, как описано в разделе [Другие коды выхода](#other-exit-codes).

3698 3724 

3699<h3 id="postmodelswitch">3725<h3 id="postmodelswitch">

3700 PostModelSwitch3726 PostModelSwitch

3701</h3>3727</h3>

3702 3728 

3703Запускается после смены модели сессии. Используйте его, чтобы давать Claude указания для конкретной модели, не редактируя каждый CLAUDE.md, например инструкцию для всей организации, действующую для определённых моделей.3729Запускается после изменения модели сессии. Используйте его, чтобы дать Claude указания для конкретной модели без редактирования каждого CLAUDE.md, например инструкцию уровня организации, применимую к определённым моделям.

3704 3730 

3705PostModelSwitch требует Claude Code v2.1.251 или новее. Он не может блокировать, поскольку модель уже сменилась. Claude Code запускает хуки PostModelSwitch после любого из следующих изменений:3731PostModelSwitch требует Claude Code v2.1.251 или новее. Он не может блокировать, потому что модель уже изменилась. Claude Code запускает хуки PostModelSwitch после любого из следующих изменений:

3706 3732 

3707* Смена, запрошенная вами или клиентом3733* Переключение, запрошенное вами или клиентом

3708* [Автоматическое переключение на резервную модель](/docs/ru/model-config#automatic-model-fallback), которое меняет модель сессии3734* [Автоматическое переключение на резервную модель](/docs/ru/model-config#automatic-model-fallback), которое меняет модель сессии

3709* Вход в режим планирования или выход из него при настройке, такой как [`opusplan`](/docs/ru/model-config#opusplan-model-setting)3735* Вход в режим планирования или выход из него при настройке, такой как [`opusplan`](/docs/ru/model-config#opusplan-model-setting)

3710* Восстановление модели Claude Code при возобновлении сессии3736* Восстановление модели Claude Code при возобновлении сессии

3711 3737 

3712Claude Code не запускает хуки PostModelSwitch, когда ход обслуживает модель из [цепочки резервных моделей](/docs/ru/model-config#fallback-model-chains), поскольку такая замена длится один ход и не меняет модель сессии.3738Claude Code не запускает хуки PostModelSwitch, когда ход обслуживает модель из [цепочки резервных моделей](/docs/ru/model-config#fallback-model-chains), потому что такая замена длится один ход и не меняет модель сессии.

3713 3739 

3714Matcher подчиняется тем же правилам, что и для [PreModelSwitch](#premodelswitch): Claude Code сравнивает его с каноническим именем модели, на которую переключилась сессия.3740Matcher подчиняется тем же правилам, что и в [PreModelSwitch](#premodelswitch): Claude Code сравнивает его с каноническим именем модели, на которую переключилась сессия.

3715 3741 

3716Этот пример добавляет указания всякий раз, когда модель сессии меняется на любую модель Opus:3742Этот пример добавляет указания всякий раз, когда модель сессии меняется на любую модель Opus:

3717 3743 


3733}3759}

3734```3760```

3735 3761 

3736Чтобы убедиться, что хук работает, переключитесь на модель Opus в сессии, использующей другую модель, например выполните `/model opus` в сессии Sonnet, а затем спросите Claude, какие указания у него есть относительно текущей модели.3762Чтобы убедиться, что хук работает, переключитесь на модель Opus в сессии с другой моделью, например выполните `/model opus` в сессии Sonnet, а затем спросите Claude, какие у него есть указания относительно текущей модели.

3737 3763 

3738<h4 id="postmodelswitch-input">3764<h4 id="postmodelswitch-input">

3739 Входные данные PostModelSwitch3765 Входные данные PostModelSwitch

3740</h4>3766</h4>

3741 3767 

3742Хуки PostModelSwitch получают те же поля, что и [PreModelSwitch](#premodelswitch-input), с `hook_event_name`, равным `"PostModelSwitch"`, и двумя дополнительными значениями `source`: `"auto"` для автоматического переключения на резервную модель или другого изменения, которое Claude Code выполнил самостоятельно, и `"resume"` для модели, восстановленной при возобновлении сессии.3768Хуки PostModelSwitch получают те же поля, что и [PreModelSwitch](#premodelswitch-input), при этом `hook_event_name` равно `"PostModelSwitch"`, и есть ещё два значения `source`: `"auto"` для автоматического переключения на резервную модель или другого изменения, сделанного Claude Code самостоятельно, и `"resume"` для модели, восстановленной при возобновлении сессии.

3743 3769 

3744`requested_model` равно `null`, когда `source` равно `"auto"`. Когда `source` равно `"resume"`, это сохранённая настройка модели, которую восстановил Claude Code.3770`requested_model` равно `null`, когда `source` равно `"auto"`. Когда `source` равно `"resume"`, это сохранённая настройка модели, которую восстановил Claude Code.

3745 3771 


3747 Управление решениями PostModelSwitch3773 Управление решениями PostModelSwitch

3748</h4>3774</h4>

3749 3775 

3750Claude Code берёт [обычный текстовый stdout](#exit-code-0) вашего хука при коде выхода 0 или `additionalContext` из вывода JSON и передаёт его Claude вместе со следующим запросом после смены. Помимо [полей вывода JSON](#json-output), доступных всем хукам, можно вернуть:3776Claude Code берёт [простой текст stdout](#exit-code-0) вашего хука при коде выхода 0 или `additionalContext` из вывода JSON и передаёт его Claude со следующим запросом после переключения. Помимо [полей вывода JSON](#json-output), доступных всем хукам, можно вернуть:

3751 3777 

3752| Поле | Описание |3778| Поле | Описание |

3753| :- | :- |3779| :- | :- |

3754| `additionalContext` | Строка, добавляемая в контекст Claude со следующим запросом. См. [Добавление контекста для Claude](#add-context-for-claude) |3780| `additionalContext` | Строка, добавляемая в контекст Claude со следующим запросом. См. [Добавление контекста для Claude](#add-context-for-claude) |

3755 3781 

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

3757 3783 

3758<h3 id="sessionend">3784<h3 id="sessionend">

3759 SessionEnd3785 SessionEnd

3760</h3>3786</h3>

3761 3787 

3762Запускается при завершении сессии Claude Code. Полезен для задач очистки, записи статистики3788Запускается при завершении сессии Claude Code. Полезен для задач очистки, записи

3763сессии в лог или сохранения состояния сессии. Поддерживает matcher для фильтрации по причине выхода.3789статистики сессии в лог или сохранения состояния сессии. Поддерживает matcher для фильтрации по причине выхода.

3764 3790 

3765Поле `reason` во входных данных хука указывает, почему сессия завершилась:3791Поле `reason` во входных данных хука указывает, почему сессия завершилась:

3766 3792 

3767| Причина | Описание |3793| Причина | Описание |

3768| :- | :- |3794| :- | :- |

3769| `clear` | Сессия очищена командой `/clear` |3795| `clear` | Сессия очищена командой `/clear` |

3770| `resume` | Сессия переключена через интерактивную команду `/resume` |3796| `resume` | Сессия переключена через интерактивную `/resume` |

3771| `logout` | Пользователь вышел из системы |3797| `logout` | Пользователь вышел из системы |

3772| `prompt_input_exit` | Пользователь вышел, когда было видно поле ввода промпта |3798| `prompt_input_exit` | Пользователь вышел, пока было видно поле ввода промпта |

3773| `other` | Другие причины выхода |3799| `other` | Другие причины выхода |

3774| `bypass_permissions_disabled` | Удалено в v2.1.234; Claude Code его не отправляет. Уберите его из своих matcher для `SessionEnd` |3800| `bypass_permissions_disabled` | Удалено в v2.1.234; Claude Code его не отправляет. Уберите его из matcher для `SessionEnd` |

3775 3801 

3776<h4 id="sessionend-input">3802<h4 id="sessionend-input">

3777 Входные данные SessionEnd3803 Входные данные SessionEnd


3791 3817 

3792Хуки SessionEnd не управляют решениями. Они не могут заблокировать завершение сессии, но могут выполнять задачи очистки. Claude Code отбрасывает их [поля вывода JSON](#json-output), такие как `systemMessage`.3818Хуки SessionEnd не управляют решениями. Они не могут заблокировать завершение сессии, но могут выполнять задачи очистки. Claude Code отбрасывает их [поля вывода JSON](#json-output), такие как `systemMessage`.

3793 3819 

3794Таймаут по умолчанию для хуков SessionEnd — 1,5 секунды. Он применяется, когда вы выходите, выполняете `/clear` или переключаете сессии с помощью интерактивной команды `/resume`. Дать хуку больше времени можно двумя способами:3820Таймаут по умолчанию для хуков SessionEnd — 1,5 секунды. Он действует, когда вы выходите, выполняете `/clear` или переключаете сессии через интерактивную `/resume`. Дать хуку больше времени можно двумя способами:

3795 3821 

3796* **`timeout` для отдельного хука**: задайте `timeout` в конфигурации этого хука. Общий лимит времени автоматически увеличивается до наибольшего значения `timeout` отдельного хука в ваших файлах настроек, но не более 60 секунд. Если вы увеличиваете лимит таким способом, хук без собственного `timeout` по-прежнему использует значение по умолчанию. Таймауты, заданные для хуков, предоставляемых плагинами, не увеличивают лимит.3822* **`timeout` для отдельного хука**: задайте `timeout` в конфигурации этого хука. Общий лимит времени автоматически увеличивается до наибольшего значения `timeout` отдельного хука в ваших файлах настроек, но не более 60 секунд. Если вы увеличиваете лимит таким образом, хук без собственного `timeout` по-прежнему сохраняет значение по умолчанию. Таймауты, заданные для хуков из плагинов, не увеличивают лимит.

3797* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**: задайте эту переменную окружения в миллисекундах, чтобы явно переопределить лимит. Заданное значение также становится таймаутом для каждого хука без собственного `timeout`.3823* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**: задайте эту переменную окружения в миллисекундах, чтобы явно переопределить лимит. Заданное значение также становится таймаутом для каждого хука без собственного `timeout`.

3798 3824 

3799Этот пример устанавливает лимит в 5 секунд:3825Этот пример устанавливает лимит в 5 секунд:


3802CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude3828CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude

3803```3829```

3804 3830 

3805До v2.1.268 `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` увеличивала только общий лимит, а хук без собственного `timeout` всё равно прерывался через 1,5 секунды.3831До v2.1.268 `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` увеличивала только общий лимит, а хук без собственного `timeout` всё равно отменялся через 1,5 секунды.

3806 3832 

3807<h3 id="elicitation">3833<h3 id="elicitation">

3808 Elicitation3834 Elicitation

3809</h3>3835</h3>

3810 3836 

3811Запускается, когда MCP-сервер запрашивает ввод пользователя в процессе выполнения задачи. По умолчанию Claude Code показывает интерактивное диалоговое окно, в котором пользователь может ответить. Хуки могут перехватить этот запрос и ответить программно, полностью пропустив диалоговое окно.3837Запускается, когда MCP-сервер запрашивает ввод пользователя посреди задачи. По умолчанию Claude Code показывает интерактивное диалоговое окно для ответа пользователя. Хуки могут перехватить этот запрос и ответить программно, полностью пропуская диалоговое окно.

3812 3838 

3813Полный пример хука с записью в настройках и скриптом см. в разделе [Ответ на запрос формы из скрипта](#answer-a-form-request-from-a-script).3839Полный хук с записью в настройках и скриптом см. в разделе [Ответ на запрос формы из скрипта](#answer-a-form-request-from-a-script).

3814 3840 

3815Поле matcher сопоставляется с именем MCP-сервера.3841Поле matcher сопоставляется с именем MCP-сервера.

3816 3842 


3818 Входные данные Elicitation3844 Входные данные Elicitation

3819</h4>3845</h4>

3820 3846 

3821Помимо [общих входных полей](#common-input-fields), хуки Elicitation получают поля `mcp_server_name`, `message` и необязательные поля `mode`, `url`, `elicitation_id` и `requested_schema`.3847Помимо [общих входных полей](#common-input-fields), хуки Elicitation получают `mcp_server_name`, `message` и необязательные поля `mode`, `url`, `elicitation_id` и `requested_schema`.

3822 3848 

3823Для запроса в режиме формы — самого распространённого случая:3849Для elicitation в режиме формы, наиболее распространённого случая:

3824 3850 

3825```json theme={null}3851```json theme={null}

3826{3852{


3840}3866}

3841```3867```

3842 3868 

3843Для запроса в режиме URL, используемого для аутентификации через браузер:3869Для elicitation в режиме URL, используемого для аутентификации через браузер:

3844 3870 

3845```json theme={null}3871```json theme={null}

3846{3872{


3856```3882```

3857 3883 

3858<h4 id="elicitation-output">3884<h4 id="elicitation-output">

3859 Вывод Elicitation3885 Выходные данные Elicitation

3860</h4>3886</h4>

3861 3887 

3862Хук Elicitation может ответить на запрос за пользователя, отклонить или отменить его либо оставить его диалоговому окну. Чтобы ответить, отклонить или отменить, завершитесь с кодом 0 и выведите объект `hookSpecificOutput` с `action`. Сервер получает ваш ответ, и диалоговое окно не появляется. Каждая строка этой таблицы показывает, что вернуть для одного исхода и что получает MCP-сервер:3888Хук Elicitation может ответить на запрос вместо пользователя, отклонить или отменить его либо оставить его диалоговому окну. Чтобы ответить, отклонить или отменить, завершитесь с кодом 0 и выведите объект `hookSpecificOutput` с `action`. Сервер получит ваш ответ, и диалоговое окно не появится. Каждая строка этой таблицы показывает, что вернуть для одного исхода и что получит MCP-сервер:

3863 3889 

3864| Чтобы | Верните | Сервер получает |3890| Чтобы | Верните | Сервер получит |

3865| :- | :- | :- |3891| :- | :- | :- |

3866| Ответить за пользователя | `"action": "accept"` со значениями полей формы в `content` | `accept` с вашим `content` |3892| Ответить вместо пользователя | `"action": "accept"` со значениями полей формы в `content` | `accept` с вашим `content` |

3867| Отклонить запрос | `"action": "decline"` | `decline` |3893| Отклонить запрос | `"action": "decline"` | `decline` |

3868| Отменить запрос | `"action": "cancel"` | `cancel` |3894| Отменить запрос | `"action": "cancel"` | `cancel` |

3869| Оставить запрос пользователю | Нет вывода, код выхода 0 | Ответ пользователя из [диалогового окна](/docs/ru/mcp#respond-to-mcp-elicitation-requests) |3895| Оставить запрос пользователю | Без вывода, с кодом выхода 0 | Ответ пользователя из [диалогового окна](/docs/ru/mcp#respond-to-mcp-elicitation-requests) |

3870 3896 

3871Этот вывод отвечает на запрос в режиме формы, показанный в разделе [Входные данные Elicitation](#elicitation-input). Ключи в `content` — это имена свойств из `requested_schema` этого запроса:3897Этот вывод отвечает на запрос в режиме формы, показанный в разделе [Входные данные Elicitation](#elicitation-input). Ключи в `content` — это имена свойств из `requested_schema` этого запроса:

3872 3898 


3893}3919}

3894```3920```

3895 3921 

3896В диалоговом окне выбор **Decline** отправляет `decline`, а нажатие `Esc` отправляет `cancel`, поэтому возвращайте то, что вы хотите, чтобы увидел сервер.3922В диалоговом окне выбор **Decline** отправляет `decline`, а нажатие `Esc` отправляет `cancel`, поэтому возвращайте тот вариант, который должен увидеть сервер.

3897 3923 

3898Для запроса в режиме URL хук, возвращающий `accept`, пропускает диалоговое окно, поэтому URL так и не открывается.3924Для запроса в режиме URL хук, возвращающий `accept`, пропускает диалоговое окно, поэтому URL так и не открывается.

3899 3925 

3900Claude Code отбрасывает `reason`, `systemMessage` и `continue` из вывода JSON хука Elicitation, какое бы `action` вы ни вернули.3926Claude Code отбрасывает `reason`, `systemMessage` и `continue` из вывода JSON хука Elicitation, какой бы `action` вы ни вернули.

3901 3927 

3902<h4 id="other-ways-to-decline-an-elicitation">3928<h4 id="other-ways-to-decline-an-elicitation">

3903 Другие способы отклонить запрос elicitation3929 Другие способы отклонить elicitation

3904</h4>3930</h4>

3905 3931 

3906Ваш хук также может отклонить запрос следующими способами. Сервер получает тот же `decline`, что и при `"action": "decline"`:3932Хук также может отклонить запрос следующими способами. Сервер получит тот же `decline`, что и для `"action": "decline"`:

3907 3933 

3908* **Завершение с кодом 2**: Claude Code игнорирует `hookSpecificOutput`, выведенный тем же хуком3934* **Завершение с кодом 2**: Claude Code игнорирует `hookSpecificOutput`, выведенный тем же хуком

3909* **Вывод `"decision": "block"` верхнего уровня**: блокировка переопределяет `action` в том же выводе3935* **Вывод `"decision": "block"` на верхнем уровне**: блокировка переопределяет `action` в том же выводе

3910 3936 

3911Когда одному запросу соответствует несколько хуков, отклонение от одного из них переопределяет `accept` или `cancel` от другого.3937Когда одному запросу соответствует несколько хуков, отклонение от одного из них переопределяет `accept` или `cancel` от другого.

3912 3938 

3913Этот скрипт отклоняет запросы в режиме URL и оставляет запросы форм диалоговому окну:3939Этот скрипт отклоняет запросы в режиме URL и оставляет запросы формы диалоговому окну:

3914 3940 

3915```bash theme={null}3941```bash theme={null}

3916#!/bin/bash3942#!/bin/bash


3919fi3945fi

3920```3946```

3921 3947 

3922Ни пользователь, ни сервер не видят, почему ваш хук отклонил запрос, поскольку Claude Code не показывает ваш stderr или ваш `reason`.3948Ни пользователь, ни сервер не видят, почему хук отклонил запрос, потому что Claude Code не показывает ваш stderr или ваш `reason`.

3923 3949 

3924Claude Code игнорировал `decision` верхнего уровня от хуков `Elicitation` и `ElicitationResult` начиная с v2.1.105 и до исправления в v2.1.284.3950Claude Code игнорировал `decision` верхнего уровня от хуков `Elicitation` и `ElicitationResult`, начиная с v2.1.105 и до исправления в v2.1.284.

3925 3951 

3926<h4 id="answer-a-form-request-from-a-script">3952<h4 id="answer-a-form-request-from-a-script">

3927 Ответ на запрос формы из скрипта3953 Ответ на запрос формы из скрипта

3928</h4>3954</h4>

3929 3955 

3930Этот пример отвечает за пользователя на один повторяющийся вопрос. MCP-сервер с именем `issue-tracker` запрашивает в форме ключ проекта, а хук подставляет `DOCS`. Скрипт принимает запрос, когда `project_key` — единственное поле формы. Для любого другого запроса он ничего не выводит, поэтому появляется диалоговое окно.3956Этот пример отвечает на один повторяющийся вопрос вместо пользователя. MCP-сервер с именем `issue-tracker` запрашивает ключ проекта в форме, и хук подставляет `DOCS`. Скрипт принимает запрос, когда `project_key` — единственное поле формы. Для любого другого запроса он ничего не выводит, поэтому появляется диалоговое окно.

3931 3957 

3932<Tabs>3958<Tabs>

3933 <Tab title="macOS/Linux">3959 <Tab title="macOS/Linux">

3934 Зарегистрируйте командный хук для события в файле настроек, указав имя сервера в качестве matcher:3960 Зарегистрируйте хук команды для этого события в файле настроек, указав имя сервера в качестве matcher:

3935 3961 

3936 ```json theme={null}3962 ```json theme={null}

3937 {3963 {


3952 }3978 }

3953 ```3979 ```

3954 3980 

3955 Сохраните этот скрипт в файл `.claude/hooks/answer-project-key.sh` в вашем проекте и сделайте его исполняемым с помощью `chmod +x`:3981 Сохраните этот скрипт в `.claude/hooks/answer-project-key.sh` в вашем проекте и сделайте его исполняемым с помощью `chmod +x`:

3956 3982 

3957 ```bash theme={null}3983 ```bash theme={null}

3958 #!/bin/bash3984 #!/bin/bash


3966 </Tab>3992 </Tab>

3967 3993 

3968 <Tab title="Windows (PowerShell)">3994 <Tab title="Windows (PowerShell)">

3969 Зарегистрируйте командный хук, который запускает скрипт через PowerShell, указав имя сервера в качестве matcher:3995 Зарегистрируйте хук команды, который запускает скрипт через PowerShell, указав имя сервера в качестве matcher:

3970 3996 

3971 ```json theme={null}3997 ```json theme={null}

3972 {3998 {


3993 }4019 }

3994 ```4020 ```

3995 4021 

3996 Сохраните этот скрипт в файл `.claude/hooks/answer-project-key.ps1` в вашем проекте:4022 Сохраните этот скрипт в `.claude/hooks/answer-project-key.ps1` в вашем проекте:

3997 4023 

3998 ```powershell theme={null}4024 ```powershell theme={null}

3999 $request = [Console]::In.ReadToEnd() | ConvertFrom-Json4025 $request = [Console]::In.ReadToEnd() | ConvertFrom-Json


4012 </Tab>4038 </Tab>

4013</Tabs>4039</Tabs>

4014 4040 

4015Чтобы убедиться, что хук работает, запустите Claude Code командой `claude --debug` и дайте Claude задачу, при которой сервер запросит ключ проекта. Диалоговое окно не появится, а в [логе отладки](#debug-hooks) будет строка, заканчивающаяся на `Elicitation resolved by hook: {"action":"accept","content":{"project_key":"DOCS"}}`.4041Чтобы убедиться, что хук работает, запустите Claude Code командой `claude --debug` и дайте Claude задачу, при которой сервер запросит ключ проекта. Диалоговое окно не появится, а в [отладочном логе](#debug-hooks) будет строка, заканчивающаяся на `Elicitation resolved by hook: {"action":"accept","content":{"project_key":"DOCS"}}`.

4016 4042 

4017<h3 id="elicitationresult">4043<h3 id="elicitationresult">

4018 ElicitationResult4044 ElicitationResult

4019</h3>4045</h3>

4020 4046 

4021Запускается после того, как пользователь ответил на запрос elicitation от MCP. Хуки могут просматривать, изменять или блокировать ответ до его отправки обратно MCP-серверу.4047Запускается после того, как пользователь отвечает на elicitation MCP. Хуки могут просматривать, изменять или блокировать ответ до его отправки обратно MCP-серверу.

4022 4048 

4023Когда хук [Elicitation](#elicitation) отвечает на запрос, Claude Code отправляет этот ответ серверу без запуска хуков ElicitationResult.4049Когда хук [Elicitation](#elicitation) отвечает на запрос, Claude Code отправляет этот ответ серверу, не запуская хуки ElicitationResult.

4024 4050 

4025Поле matcher сопоставляется с именем MCP-сервера.4051Поле matcher сопоставляется с именем MCP-сервера.

4026 4052 


4028 Входные данные ElicitationResult4054 Входные данные ElicitationResult

4029</h4>4055</h4>

4030 4056 

4031Помимо [общих входных полей](#common-input-fields), хуки ElicitationResult получают поля `mcp_server_name`, `action` и необязательные поля `mode`, `elicitation_id` и `content`.4057Помимо [общих входных полей](#common-input-fields), хуки ElicitationResult получают `mcp_server_name`, `action` и необязательные поля `mode`, `elicitation_id` и `content`.

4032 4058 

4033```json theme={null}4059```json theme={null}

4034{4060{


4044```4070```

4045 4071 

4046<h4 id="elicitationresult-output">4072<h4 id="elicitationresult-output">

4047 Вывод ElicitationResult4073 Выходные данные ElicitationResult

4048</h4>4074</h4>

4049 4075 

4050Хук ElicitationResult может пропустить ответ пользователя, изменить его значения или заблокировать его. Чтобы изменить или заблокировать ответ, завершитесь с кодом 0 и выведите объект `hookSpecificOutput` с `action`. Каждая строка этой таблицы показывает, что вернуть для одного исхода и что получает MCP-сервер:4076Хук ElicitationResult может пропустить ответ пользователя, изменить его значения или заблокировать его. Чтобы изменить или заблокировать ответ, завершитесь с кодом 0 и выведите объект `hookSpecificOutput` с `action`. Каждая строка этой таблицы показывает, что вернуть для одного исхода и что получит MCP-сервер:

4051 4077 

4052| Чтобы | Верните | Сервер получает |4078| Чтобы | Верните | Сервер получит |

4053| :- | :- | :- |4079| :- | :- | :- |

4054| Пропустить ответ | Нет вывода, код выхода 0 | Ответ пользователя без изменений |4080| Пропустить ответ | Без вывода, с кодом выхода 0 | Ответ пользователя без изменений |

4055| Изменить отправленные значения | `"action": "accept"` с новыми значениями в `content` | `accept` с вашим `content` вместо значений пользователя |4081| Изменить отправленные значения | `"action": "accept"` с новыми значениями в `content` | `accept` с вашим `content` вместо значений пользователя |

4056| Заблокировать ответ | `"action": "decline"` | `decline` без значений пользователя |4082| Заблокировать ответ | `"action": "decline"` | `decline` без значений пользователя |

4057| Отменить запрос | `"action": "cancel"` | `cancel` вместе со значениями, отправленными пользователем. Чтобы скрыть их, верните `"decline"` |4083| Отменить запрос | `"action": "cancel"` | `cancel` вместе со значениями, отправленными пользователем. Чтобы не передавать их, верните `"decline"` |

4058 4084 

4059Этот вывод изменяет ответ, показанный в разделе [Входные данные ElicitationResult](#elicitationresult-input), так что сервер получает `alice@example.com` там, где пользователь отправил `alice`:4085Этот вывод изменяет ответ, показанный в разделе [Входные данные ElicitationResult](#elicitationresult-input), так что сервер получает `alice@example.com` вместо отправленного пользователем `alice`:

4060 4086 

4061```json theme={null}4087```json theme={null}

4062{4088{


4070}4096}

4071```4097```

4072 4098 

4073Ваш `content` заменяет весь объект `content` пользователя, поэтому включайте поля, которые вы не меняете. Возвращайте вместе с ним `action`, поскольку Claude Code игнорирует `hookSpecificOutput` без `action`.4099Ваш `content` заменяет весь объект `content` пользователя, поэтому включайте и поля, которые не изменяете. Возвращайте вместе с ним `action`, потому что Claude Code игнорирует `hookSpecificOutput` без `action`.

4074 4100 

4075Хуки ElicitationResult также запускаются, когда пользователь отклоняет или отменяет запрос, и ваше `action` заменяет его действие. Прежде чем вернуть `accept`, проверьте, что `action` во входных данных равно `accept`, иначе ваш хук превратит отклонённый запрос в принятый. Этот скрипт вносит то же изменение, когда пользователь принял запрос, сохраняет остальные поля и в противном случае ничего не выводит:4101Хуки ElicitationResult также запускаются, когда пользователь отклоняет или отменяет запрос, и ваш `action` заменяет его действие. Прежде чем возвращать `accept`, проверяйте, что `action` во входных данных равен `accept`, иначе хук превратит отклонённый запрос в принятый. Этот скрипт вносит то же изменение, если пользователь принял запрос, сохраняет остальные поля и в противном случае ничего не выводит:

4076 4102 

4077```bash theme={null}4103```bash theme={null}

4078#!/bin/bash4104#!/bin/bash


4094}4120}

4095```4121```

4096 4122 

4097Код выхода 2 и `"decision": "block"` верхнего уровня также блокируют ответ. В разделе [Другие способы отклонить запрос elicitation](#other-ways-to-decline-an-elicitation) описано, какой из них действует, когда хук их сочетает, что видит пользователь и какие версии игнорировали `decision`.4123Код выхода 2 и `"decision": "block"` на верхнем уровне также блокируют ответ. В разделе [Другие способы отклонить elicitation](#other-ways-to-decline-an-elicitation) описано, какой из вариантов действует, когда хук их сочетает, что видит пользователь и какие версии игнорировали `decision`.

4098 4124 

4099Claude Code отбрасывает `reason`, `systemMessage` и `continue` из вывода JSON хука ElicitationResult, какое бы `action` вы ни вернули.4125Claude Code отбрасывает `reason`, `systemMessage` и `continue` из вывода JSON хука ElicitationResult, какой бы `action` вы ни вернули.

4100 4126 

4101<h2 id="prompt-based-hooks">4127<h2 id="prompt-based-hooks">

4102 Prompt-based hooks4128 Prompt-based hooks


4351* **Единственным содержимым stdout**: когда ответ — единственный текст в stdout, он может занимать несколько строк, например отформатированный вывод `jq`. Для ответа на нескольких строках требуется Claude Code v2.1.295 или новее.4377* **Единственным содержимым stdout**: когда ответ — единственный текст в stdout, он может занимать несколько строк, например отформатированный вывод `jq`. Для ответа на нескольких строках требуется Claude Code v2.1.295 или новее.

4352* **На отдельной строке**: асинхронный хук может выводить в stdout другой текст, если ответ целиком умещается на отдельной строке, например при использовании `jq -c`.4378* **На отдельной строке**: асинхронный хук может выводить в stdout другой текст, если ответ целиком умещается на отдельной строке, например при использовании `jq -c`.

4353 4379 

4354Claude Code проверяет, что JSON ответ соответствует той же [схеме выходных данных](#json-output), что и синхронные hooks, и отбрасывает любое поле, значение которого имеет неправильный тип, например `systemMessage`, который не является строкой, вместо его доставки. Запустите с `--debug` для просмотра предупреждения, называющего каждое отброшенное поле. До версии v2.1.202 неправильно сформированный JSON выход из асинхронного hook мог привести к сбою сеанса, и сбой повторялся каждый раз при возобновлении сеанса.4380Claude Code проверяет, что JSON-ответ соответствует той же [схеме выходных данных](#json-output), что и у синхронных хуков, и отбрасывает любое поле, значение которого имеет неправильный тип, например `systemMessage`, который не является строкой, вместо его доставки. Запустите с `--debug` для просмотра предупреждения, называющего каждое отброшенное поле.

4355 4381 

4356Уведомления о завершении асинхронного hook подавляются по умолчанию. Чтобы их увидеть, включите подробный режим с помощью `Ctrl+O` или запустите Claude Code с `--verbose`.4382Уведомления о завершении асинхронного hook подавляются по умолчанию. Чтобы их увидеть, включите подробный режим с помощью `Ctrl+O` или запустите Claude Code с `--verbose`.

4357 4383 

Details

4 4 

5# Интерактивный режим5# Интерактивный режим

6 6 

7> Полный справочник по сочетаниям клавиш, режимам ввода и интерактивным функциям в сеансах Claude Code.7> Полный справочник по сочетаниям клавиш, режимам ввода и интерактивным функциям в сессиях Claude Code.

8 8 

9<h2 id="keyboard-shortcuts">9<h2 id="keyboard-shortcuts">

10 Сочетания клавиш10 Сочетания клавиш


491 491 

492Чтобы отключить предложения подсказок во всей организации, установите `promptSuggestionEnabled` в `false` в [управляемых параметрах](/docs/ru/managed-settings). Также установите `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` в `false` под управляемым ключом [`env`](/docs/ru/settings-reference#env), чтобы пользователи не могли повторно включить их с помощью собственной переменной окружения.492Чтобы отключить предложения подсказок во всей организации, установите `promptSuggestionEnabled` в `false` в [управляемых параметрах](/docs/ru/managed-settings). Также установите `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` в `false` под управляемым ключом [`env`](/docs/ru/settings-reference#env), чтобы пользователи не могли повторно включить их с помощью собственной переменной окружения.

493 493 

494<h2 id="you-should-know-suggestions">

495 Подсказки You should know

496</h2>

497 

498«You should know» ищет что-то одно, что вам следует знать, но что вы могли упустить, например компромисс, который Claude выбрал, не упомянув его явно, или результат, который может быть неверным. Обнаружив такое, он показывает короткую заметку над полем ввода промпта:

499 

500```text theme={null}

501✦ Heads up · There was a change to how folder sharing starts in June, which may have bumped usage metrics artificially.

502 1: Learn more 2: Knew this already 0: Dismiss

503```

504 

505Это один из [встроенных модов](/docs/ru/plugins/mods/overview#mods-built-into-claude-code) Claude Code — плагин, встроенный в Claude Code и по умолчанию отключённый. Требуется Claude Code v2.1.287 или новее.

506 

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

508 

509Если мод доступен для вашей организации, `/plugin` показывает его в списке, когда вы подключаетесь к Claude API напрямую с учётной записью claude.ai или API-ключом Console. Он не отображается, если вы подключаетесь через [LLM-шлюз](/docs/ru/llm-gateway) или [шлюз приложений Claude](/docs/ru/claude-apps-gateway) либо получаете ключ из [`apiKeyHelper`](/docs/ru/settings-reference#apikeyhelper). Даже при прямом подключении он не отображается в следующих сессиях:

510 

511* Сессия, которая [не загружает флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching), от которых зависит мод, например сессия с установленной переменной `DISABLE_TELEMETRY`

512* [Первая сессия после установки или обновления](/docs/ru/env-vars#first-session-after-an-install-or-upgrade), флаги которой ещё не получены

513 

514Чтобы включить его, выполните в промпте Claude Code:

515 

516```text theme={null}

517/plugin enable cc-plugin-you-should-know@builtin

518```

519 

520Если `/plugin` не показывает мод, команда включения отвечает `Plugin "cc-plugin-you-should-know@builtin" is not installed in this project`.

521 

522<h3 id="cost-of-checks">

523 Стоимость проверок

524</h3>

525 

526Пока мод включён, проверки выполняются как фоновые запросы к той же модели, которую использует ваша сессия, и учитываются в лимитах использования вашего плана или в расходах на API. Каждая проверка отправляет то, что уже находится в контексте Claude, то есть диалог на текущий момент вместе с результатами инструментов, а затем собственные инструкции мода и текст ваших недавних заметок. Часть с диалогом считывается из [кэша промптов](/docs/ru/prompt-caching) сессии на тех же условиях, что и следующий запрос самого Claude. Инструкции объёмом в несколько тысяч токенов и ответ побочного агента оплачиваются полностью при каждой проверке.

527 

528Чтобы наблюдать за проверками, установите [`CLAUDE_CODE_YOU_SHOULD_KNOW_DEBUG=1`](/docs/ru/env-vars) в оболочке перед запуском Claude Code.

529 

530<h3 id="answer-a-note">

531 Ответ на заметку

532</h3>

533 

534Введите цифру варианта отдельно в пустое поле ввода промпта. Заметка предлагает следующие варианты:

535 

536* **Learn more**: открывает краткое пояснение под заметкой с собственными вариантами:

537 * **Understood**: закрывает его и помечает тему как известную

538 * **Chat in main session**: цитирует заметку в поле ввода промпта, чтобы вы могли добавить вопрос и отправить его Claude

539 * **Dismiss**: закрывает его, не помечая тему как известную

540* **Knew this already**: закрывает заметку и помечает тему как известную.

541* **Dismiss**: закрывает заметку.

542 

543Основной агент не видит заметку, если вы не отправите её с помощью **Chat in main session**.

544 

545Claude Code хранит ваши недавние заметки и темы, помеченные как известные, в файле, имя которого начинается с `cc-plugin-you-should-know`, в каталоге `~/.claude/plugins/store/`. Каждая проверка в этой и последующих сессиях передаёт их побочному агенту как те, которые не следует повторять. Claude Code удаляет этот файл, если в течение [`cleanupPeriodDays`](/docs/ru/settings-reference#cleanupperioddays) ни одна сессия не читала и не записывала его. Чтобы очистить их раньше, удалите этот файл, когда ни одна сессия не запущена.

546 

547<h3 id="turn-off-you-should-know">

548 Отключение You should know

549</h3>

550 

551Чтобы отключить You should know, воспользуйтесь одним из следующих способов:

552 

553* В промпте Claude Code выполните `/plugin disable cc-plugin-you-should-know@builtin` или отключите его на вкладке **Installed** в `/plugin`

554* После того как вы выберете **Dismiss** в заметке, не открывая сначала **Learn more**, выберите **Turn off suggestions** в строке `Dismissed.`, которая исчезает через 20 секунд

555 

494<h2 id="emoji-shortcodes">556<h2 id="emoji-shortcodes">

495 Emoji shortcodes557 Emoji shortcodes

496</h2>558</h2>

Details

257 257 

258Перечислите каталоги в `sparsePaths`, а не отдельные файлы. Файлы на уровне корня, такие как `package.json`, `tsconfig.base.json` и файлы блокировки, всегда проверяются наряду с каталогами, которые вы перечисляете. Каталоги на уровне корня нет, поэтому включите `.claude` в список, если вы хотите, чтобы `.claude/settings.json` или `.claude/rules/` корня репозитория были доступны внутри worktree. Для project skills, agents и commands см. [What worktrees share with the main checkout](/docs/ru/worktrees#what-worktrees-share-with-the-main-checkout).258Перечислите каталоги в `sparsePaths`, а не отдельные файлы. Файлы на уровне корня, такие как `package.json`, `tsconfig.base.json` и файлы блокировки, всегда проверяются наряду с каталогами, которые вы перечисляете. Каталоги на уровне корня нет, поэтому включите `.claude` в список, если вы хотите, чтобы `.claude/settings.json` или `.claude/rules/` корня репозитория были доступны внутри worktree. Для project skills, agents и commands см. [What worktrees share with the main checkout](/docs/ru/worktrees#what-worktrees-share-with-the-main-checkout).

259 259 

260Разреженный checkout требует, чтобы git включил `extensions.worktreeConfig` в общем файле `.git/config` репозитория, пока существует разреженный worktree. Claude Code удаляет эту запись после удаления последнего worktree, но только если Claude Code её добавил. Он никогда не удаляет значение, которое вы установили сами. До версии 2.1.207 запись оставалась после удаления последнего worktree, и инструменты на основе go-git, такие как `tea`, не могли открыть репозиторий, пока вы не запустили `git config --unset extensions.worktreeConfig`.260Разреженный checkout требует, чтобы git включил `extensions.worktreeConfig` в общем файле `.git/config` репозитория, пока существует разреженный worktree. Claude Code удаляет эту запись после удаления последнего worktree, но только если Claude Code её добавил. Он никогда не удаляет значение, которое вы установили сами.

261 261 

262Чтобы избежать дублирования больших каталогов, таких как `node_modules`, в worktrees, объедините `sparsePaths` с `symlinkDirectories` в одном `.claude/settings.json`:262Чтобы избежать дублирования больших каталогов, таких как `node_modules`, в worktrees, объедините `sparsePaths` с `symlinkDirectories` в одном `.claude/settings.json`:

263 263 


313claude --add-dir ../shared313claude --add-dir ../shared

314```314```

315 315 

316Однако вы добавляете каталог, Claude может читать и редактировать файлы в нём. Загружаются ли `CLAUDE.md`, файлы `.claude/rules/` и skills каталога, зависит от того, как вы его добавили:316Как бы вы ни добавили каталог, Claude может читать и редактировать файлы в нём. Загружаются ли также CLAUDE.md, файлы `.claude/rules/` и скиллы этого каталога, зависит от того, как вы его добавили:

317 317 

318| Добавлено с | Загружает CLAUDE.md и правила | Загружает skills |318| Добавлено с | Загружает CLAUDE.md и правила | Загружает skills |

319| :- | :- | :- |319| :- | :- | :- |

Details

518 518 

519Поместите учетные данные шлюза в `ANTHROPIC_FOUNDRY_API_KEY`; они отправляются на шлюз как заголовок `x-api-key`. Шлюз, который ожидает токен-носитель, может принять [`ANTHROPIC_FOUNDRY_AUTH_TOKEN`](/docs/ru/env-vars) вместо этого. Claude Code отправляет это значение как заголовок `Authorization: Bearer`, и оно имеет приоритет над `ANTHROPIC_FOUNDRY_API_KEY`, когда оба установлены. Требует Claude Code v2.1.203 или позже.519Поместите учетные данные шлюза в `ANTHROPIC_FOUNDRY_API_KEY`; они отправляются на шлюз как заголовок `x-api-key`. Шлюз, который ожидает токен-носитель, может принять [`ANTHROPIC_FOUNDRY_AUTH_TOKEN`](/docs/ru/env-vars) вместо этого. Claude Code отправляет это значение как заголовок `Authorization: Bearer`, и оно имеет приоритет над `ANTHROPIC_FOUNDRY_API_KEY`, когда оба установлены. Требует Claude Code v2.1.203 или позже.

520 520 

521Для шлюза, который внедряет свой собственный заголовок `Authorization`, установите `CLAUDE_CODE_SKIP_FOUNDRY_AUTH=1` и оставьте обе переменные учетных данных неустановленными. Claude Code затем отправляет запросы без учетных данных Azure и сохраняет заголовок `Authorization`, который вы предоставляете, например через `ANTHROPIC_CUSTOM_HEADERS`. До v2.1.203 `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` без ключа API оставлял клиент Microsoft Foundry неспособным отправлять запросы.521Для шлюза, который внедряет свой собственный заголовок `Authorization`, установите `CLAUDE_CODE_SKIP_FOUNDRY_AUTH=1` и оставьте обе переменные учётных данных неустановленными. Claude Code затем отправляет запросы без учётных данных Azure и сохраняет заголовок `Authorization`, который вы предоставляете, например через `ANTHROPIC_CUSTOM_HEADERS`.

522 522 

523<Tabs>523<Tabs>

524 <Tab title="Bash или Zsh">524 <Tab title="Bash или Zsh">


587| Ошибка | Причина | Исправление |587| Ошибка | Причина | Исправление |

588| :- | :- | :- |588| :- | :- | :- |

589| Предупреждение при запуске, называющее два источника учетных данных и заканчивающееся на `auth may not work as expected`. Более старые версии показывают `Auth conflict: Both a token (SOURCE) and an API key (SOURCE) are set` вместо этого. | Учетные данные шлюза и сохраненный вход оба активны; переменная используется для запросов, но устаревший вход может вызвать неожиданное поведение аутентификации | Отмените установку переменной, чтобы использовать сохраненный вход, или запустите `/logout`, чтобы использовать учетные данные шлюза |589| Предупреждение при запуске, называющее два источника учетных данных и заканчивающееся на `auth may not work as expected`. Более старые версии показывают `Auth conflict: Both a token (SOURCE) and an API key (SOURCE) are set` вместо этого. | Учетные данные шлюза и сохраненный вход оба активны; переменная используется для запросов, но устаревший вход может вызвать неожиданное поведение аутентификации | Отмените установку переменной, чтобы использовать сохраненный вход, или запустите `/logout`, чтобы использовать учетные данные шлюза |

590| Ошибки `401`, называющие недействительный или неузнанный токен | Учетные данные не являются теми, которые выдал шлюз, или они находятся в заголовке, который шлюз не читает | Подтвердите, что переменная соответствует вашему типу учетных данных в [таблице учетных данных](#set-the-credential-variable), и переустановите ключ на шлюзе, если он был отозван |590| Ошибки `401`, называющие недействительный или неузнанный токен | Учетные данные не являются теми, которые выдал шлюз, или они находятся в заголовке, который шлюз не читает | Подтвердите, что переменная соответствует вашему типу учетных данных в [таблице учетных данных](#set-the-credential-variable), и перевыпустите ключ на шлюзе, если он был отозван |

591| `Your apiKeyHelper script is failing`, или `apiKeyHelper failed:` на stderr в неинтерактивном режиме | Команда в параметре [`apiKeyHelper`](/docs/ru/settings-reference#apikeyhelper) не выдала пригодный ключ, поэтому запросы содержат заполнитель ключа | Запустите команду напрямую, чтобы увидеть, почему она не работает, и повторно аутентифицируйтесь у поставщика учетных данных, если он сообщает об истекшем сеансе; см. [справочник по ошибкам](/docs/ru/errors#your-apikeyhelper-script-is-failing) |591| `Your apiKeyHelper script is failing`, или `apiKeyHelper failed:` на stderr в неинтерактивном режиме | Команда в параметре [`apiKeyHelper`](/docs/ru/settings-reference#apikeyhelper) не выдала пригодный ключ, поэтому запросы содержат заполнитель ключа | Запустите команду напрямую, чтобы увидеть, почему она не работает, и повторно аутентифицируйтесь у поставщика учетных данных, если он сообщает об истекшем сеансе; см. [справочник по ошибкам](/docs/ru/errors#your-apikeyhelper-script-is-failing) |

592| `Connection refused — a firewall or proxy may be blocking it (ConnectionRefused)` когда ничто не отвечает по адресу, или `Can't reach the API server — check your internet or DNS (ENOTFOUND)` когда имя хоста не разрешается, часто после молчаливой паузы, пока Claude Code [повторяет с отступом](/docs/ru/errors#automatic-retries). Код в скобках варьируется; [Unable to connect to API](/docs/ru/errors#unable-to-connect-to-api) охватывает варианты кодов и более раннюю формулировку | Ничто не ответило на базовый URL: адрес неправильный, или VPN или брандмауэр блокирует путь к шлюзу | Запустите [тест curl выше](#verify-the-connection), который немедленно не проходит с той же причиной, и подтвердите URL и сетевой путь с командой шлюза |592| `Connection refused — a firewall or proxy may be blocking it (ConnectionRefused)` когда ничто не отвечает по адресу, или `Can't reach the API server — check your internet or DNS (ENOTFOUND)` когда имя хоста не разрешается, часто после молчаливой паузы, пока Claude Code [повторяет с отступом](/docs/ru/errors#automatic-retries). Код в скобках варьируется; [Unable to connect to API](/docs/ru/errors#unable-to-connect-to-api) охватывает варианты кодов и более раннюю формулировку | Ничто не ответило на базовый URL: адрес неправильный, или VPN или брандмауэр блокирует путь к шлюзу | Запустите [тест curl выше](#verify-the-connection), который немедленно не проходит с той же причиной, и подтвердите URL и сетевой путь с командой шлюза |

593| `API returned an empty or malformed response (HTTP 200)` | Шлюз или промежуточный прокси вернул ответ, отличный от API, часто HTML-ошибку или страницу входа | Протестируйте с [запросом curl выше](#verify-the-connection); исправьте маршрут шлюза, который возвращает что-то иное, чем ответ Claude API. [Справочник по ошибкам](/docs/ru/errors#api-returned-an-empty-or-malformed-response) объясняет детали, которые сообщает сообщение |593| `API returned an empty or malformed response (HTTP 200)` | Шлюз или промежуточный прокси вернул ответ, отличный от API, часто HTML-ошибку или страницу входа | Протестируйте с [запросом curl выше](#verify-the-connection); исправьте маршрут шлюза, который возвращает что-то иное, чем ответ Claude API. [Справочник по ошибкам](/docs/ru/errors#api-returned-an-empty-or-malformed-response) объясняет детали, которые сообщает сообщение |

594| Ошибки `400`, называющие `context_management`, `Extra inputs are not permitted` или другие неузнанные поля | Шлюз пересылает запросы на вышестоящий, который отклоняет поля, которые Claude Code отправляет на конечные точки формата Anthropic | Установите `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`, что подавляет большинство полей предварительного выпуска; см. [передача функций](/docs/ru/llm-gateway-protocol#feature-pass-through). Некоторые бета-версии не управляются этим флагом; для них установите соответствующую переменную поставщика `CLAUDE_CODE_USE_*`, чтобы Claude Code отправлял только то, что этот поставщик принимает |594| Ошибки `400`, называющие `context_management`, `Extra inputs are not permitted` или другие неузнанные поля | Шлюз пересылает запросы на вышестоящий, который отклоняет поля, которые Claude Code отправляет на конечные точки формата Anthropic | Установите `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`, что подавляет большинство полей предварительного выпуска; см. [передача функций](/docs/ru/llm-gateway-protocol#feature-pass-through). Некоторые бета-версии не управляются этим флагом; для них установите соответствующую переменную поставщика `CLAUDE_CODE_USE_*`, чтобы Claude Code отправлял только то, что этот поставщик принимает |

595| Ошибки `400`, называющие `thinking` или `adaptive`, такие как `Input tag 'adaptive' found` | Сборка вышестоящей модели не принимает адаптивное рассуждение, которое Claude Code запрашивает для Claude Opus 4.6, Claude Sonnet 4.6, Claude Haiku 5.5, Claude Fable 5 и более поздних моделей | Обновите вышестоящий шлюз. На Opus 4.6 и Sonnet 4.6 вместо этого работает `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1`. Переменные возможностей [конфигурации модели](/docs/ru/model-config) применяются только к конфигурациям поставщика, таким как `CLAUDE_CODE_USE_BEDROCK` и `CLAUDE_CODE_USE_VERTEX`, а не за шлюзом `ANTHROPIC_BASE_URL` |595| Ошибки `400`, называющие `thinking` или `adaptive`, такие как `Input tag 'adaptive' found` | Сборка вышестоящей модели не принимает адаптивное рассуждение, которое Claude Code запрашивает для Claude Opus 4.6, Claude Sonnet 4.6, Claude Haiku 5.5, Claude Fable 5 и более поздних моделей | Обновите вышестоящий сервис шлюза. На Opus 4.6 и Sonnet 4.6 вместо этого работает `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1`. Переменные возможностей [конфигурации модели](/docs/ru/model-config) применяются только к конфигурациям поставщика, таким как `CLAUDE_CODE_USE_BEDROCK` и `CLAUDE_CODE_USE_VERTEX`, а не за шлюзом `ANTHROPIC_BASE_URL` |

596| Ошибки `400`, указывающие контекст или лимит токена в собственных словах шлюза, такие как `ContextWindowExceededError` или `prompt token count of N exceeds the limit of M` | Шлюз применяет меньший контекст, чем собственное окно модели, и переписывает ошибку вышестоящего, поэтому Claude Code не распознает это как [слишком длинную ошибку](/docs/ru/errors#prompt-is-too-long) и не выполняет автоматическое сжатие и повтор | Запустите `/compact`, чтобы восстановить сеанс. Чтобы предотвратить это, установите `CLAUDE_CODE_AUTO_COMPACT_WINDOW` на лимит шлюза; Claude Code зажимает значение как минимум на 100 000 токенов и максимум на контекстное окно модели, поэтому лимит шлюза ниже 100 000 не может быть согласован, и `/compact` остается восстановлением там. Также установите `CLAUDE_CODE_MAX_OUTPUT_TOKENS` ниже лимита вывода модели шлюза |596| Ошибки `400`, указывающие контекст или лимит токена в собственных словах шлюза, такие как `ContextWindowExceededError` или `prompt token count of N exceeds the limit of M` | Шлюз применяет меньший контекст, чем собственное окно модели, и переписывает ошибку вышестоящего, поэтому Claude Code не распознает это как [слишком длинную ошибку](/docs/ru/errors#prompt-is-too-long) и не выполняет автоматическое сжатие и повтор | Запустите `/compact`, чтобы восстановить сеанс. Чтобы предотвратить это, установите `CLAUDE_CODE_AUTO_COMPACT_WINDOW` на лимит шлюза; Claude Code зажимает значение как минимум на 100 000 токенов и максимум на контекстное окно модели, поэтому лимит шлюза ниже 100 000 не может быть согласован, и `/compact` остается восстановлением там. Также установите `CLAUDE_CODE_MAX_OUTPUT_TOKENS` ниже лимита вывода модели шлюза |

597| Ошибки `400` на каждом запросе, в собственных словах шлюза отклоняющие входную схему инструмента или его `pattern`, на Claude Code v2.1.265 через v2.1.267 | При постепенном развертывании на этих версиях схема [инструмента Artifact](/docs/ru/artifacts#availability) содержит регулярное выражение с классами символов Unicode `\p{...}`. API Anthropic его принимает, но шлюз или вышестоящий, который проверяет `pattern` каждой схемы инструмента с помощью собственного механизма regex, отклоняет весь запрос | Обновитесь до v2.1.268 или позже, которая не отправляет регулярное выражение. На затронутой версии [отключите артефакты](/docs/ru/artifacts#disable-artifacts), что удаляет инструмент и его схему из запросов |597| Ошибки `400` на каждом запросе, в собственных словах шлюза отклоняющие входную схему инструмента или его `pattern`, на Claude Code v2.1.265 через v2.1.267 | При постепенном развертывании на этих версиях схема [инструмента Artifact](/docs/ru/artifacts#availability) содержит регулярное выражение с классами символов Unicode `\p{...}`. API Anthropic его принимает, но шлюз или вышестоящий, который проверяет `pattern` каждой схемы инструмента с помощью собственного механизма regex, отклоняет весь запрос | Обновитесь до v2.1.268 или позже, которая не отправляет регулярное выражение. На затронутой версии [отключите артефакты](/docs/ru/artifacts#disable-artifacts), что удаляет инструмент и его схему из запросов |

598| Ошибки `400` на каждом запросе, в собственных словах шлюза отклоняющие неузнанный тип инструмента, такие как `Input tag 'advisor_20260301'`, на Claude Code v2.1.275 | При постепенном развертывании на этой версии запросы содержат запись [инструмента advisor](/docs/ru/advisor) даже с отключенным advisor. API Anthropic его принимает, но шлюз или вышестоящий, который проверяет типы инструментов, отклоняет весь запрос; тот, который [пересылает поля тела запроса без изменений](/docs/ru/llm-gateway-protocol#forward-as-open-lists), пропускает его без влияния. Запись является объявлением, которое не содержит содержимого разговора | Обновитесь до v2.1.276 или позже, которая не отправляет запись за шлюзом `ANTHROPIC_BASE_URL`, если вы не включите advisor. На v2.1.275 установите [`CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`](/docs/ru/env-vars), что удаляет запись из запросов |598| Ошибки `400` на каждом запросе, в собственных словах шлюза отклоняющие неузнанный тип инструмента, такие как `Input tag 'advisor_20260301'`, на Claude Code v2.1.275 | При постепенном развертывании на этой версии запросы содержат запись [инструмента advisor](/docs/ru/advisor) даже с отключенным advisor. API Anthropic его принимает, но шлюз или вышестоящий, который проверяет типы инструментов, отклоняет весь запрос; тот, который [пересылает поля тела запроса без изменений](/docs/ru/llm-gateway-protocol#forward-as-open-lists), пропускает его без влияния. Запись является объявлением, которое не содержит содержимого разговора | Обновитесь до v2.1.276 или позже, которая не отправляет запись за шлюзом `ANTHROPIC_BASE_URL`, если вы не включите advisor. На v2.1.275 установите [`CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`](/docs/ru/env-vars), что удаляет запись из запросов |

Details

168| :- | :- |168| :- | :- |

169| `x-claude-code-request-class` | Какой тип запроса это: `main` для хода основного разговора, `subagent` для хода [подагента](/docs/ru/sub-agents), `workflow` для агента, работающего внутри workflow, `compaction` для запроса суммирования, который компактирует разговор, или `auxiliary` для побочных запросов, таких как названия сеансов, классификаторы и резюме. Отправляется на каждом запросе |169| `x-claude-code-request-class` | Какой тип запроса это: `main` для хода основного разговора, `subagent` для хода [подагента](/docs/ru/sub-agents), `workflow` для агента, работающего внутри workflow, `compaction` для запроса суммирования, который компактирует разговор, или `auxiliary` для побочных запросов, таких как названия сеансов, классификаторы и резюме. Отправляется на каждом запросе |

170| `x-claude-code-agent-type` | Тип подагента, который выдал запрос: встроенное имя типа агента, такое как `Explore`, `Plan` или `general-purpose`, или `custom` для определяемого пользователем агента, `teammate` для члена [команды агентов](/docs/ru/agent-teams), работающего в процессе лидера, или `fork` для [ветвления](/docs/ru/sub-agents#fork-the-current-conversation) текущего разговора. Присутствует только на собственных ходах подагента; запросы компактирования или побочные запросы подагента сохраняют идентификатор агента, но не содержат тип. Имя агента, выбранное пользователем, никогда не отправляется |170| `x-claude-code-agent-type` | Тип подагента, который выдал запрос: встроенное имя типа агента, такое как `Explore`, `Plan` или `general-purpose`, или `custom` для определяемого пользователем агента, `teammate` для члена [команды агентов](/docs/ru/agent-teams), работающего в процессе лидера, или `fork` для [ветвления](/docs/ru/sub-agents#fork-the-current-conversation) текущего разговора. Присутствует только на собственных ходах подагента; запросы компактирования или побочные запросы подагента сохраняют идентификатор агента, но не содержат тип. Имя агента, выбранное пользователем, никогда не отправляется |

171| `x-claude-code-compaction` | Присутствует в запросе, который суммирует разговор во время [компактирования](/docs/ru/prompt-caching#compacting-the-conversation). Значение говорит, что его вызвало: `auto` когда окно контекста приближалось к емкости, `manual` для `/compact`, или `reactive` когда API отклонил запрос как слишком длинный. Отсутствует на каждом другом запросе |171| `x-claude-code-compaction` | Присутствует в запросе, который суммирует диалог во время [сжатия контекста](/docs/ru/prompt-caching#compacting-the-conversation). Значение указывает, что его вызвало: `auto`, когда контекстное окно приближалось к заполнению, `manual` для `/compact` или `reactive`, когда API отклонил запрос как слишком длинный. Значение также равно `auto` для [сжатия при простое](/docs/ru/settings-reference#idlecompaction). Отсутствует во всех остальных запросах |

172| `x-claude-code-context-compacted` | Присутствует один раз, на первом запросе основного разговора после компактирования, с теми же значениями, что и `x-claude-code-compaction`. Префикс разговора перед этим запросом больше не используется, поэтому кэш, основанный на нем, может быть удален |172| `x-claude-code-context-compacted` | Присутствует один раз, на первом запросе основного разговора после компактирования, с теми же значениями, что и `x-claude-code-compaction`. Префикс разговора перед этим запросом больше не используется, поэтому кэш, основанный на нем, может быть удален |

173| `x-claude-code-prev-tool-durations` | Измеренное время выполнения вызовов инструментов, результаты которых содержит этот запрос, как `<name>=<ms>;<name>=<ms>`, например `Bash=742;Read=9`. Отправляется на следующем запросе того же разговора после пакета вызовов инструментов, из основного сеанса или подагента |173| `x-claude-code-prev-tool-durations` | Измеренное время выполнения вызовов инструментов, результаты которых содержит этот запрос, как `<name>=<ms>;<name>=<ms>`, например `Bash=742;Read=9`. Отправляется на следующем запросе того же разговора после пакета вызовов инструментов, из основного сеанса или подагента |

174| `x-claude-code-prompt-id` | Случайный UUID, который идентифицирует пользовательскую подсказку, которой служит запрос. Запросы, служащие одной подсказке, делят значение, включая ходы подагентов, которые подсказка запустила. Запросы, не отнесенные к подсказке, его опускают. Используйте его для группировки запросов сеанса по подсказке. Требуется Claude Code v2.1.283 или позже |174| `x-claude-code-prompt-id` | Случайный UUID, который идентифицирует пользовательскую подсказку, которой служит запрос. Запросы, служащие одной подсказке, делят значение, включая ходы подагентов, которые подсказка запустила. Запросы, не отнесенные к подсказке, его опускают. Используйте его для группировки запросов сеанса по подсказке. Требуется Claude Code v2.1.283 или позже |


291 291 

292На Claude Code v2.1.227 или более поздней версии ваша организация может сохранить [поиск инструментов MCP](/docs/ru/mcp#scale-with-mcp-tool-search) в соответствии с этой переменной через [управляемые параметры](/docs/ru/managed-settings). То, что Claude Code отправляет с этим переопределением, зависит от того, как вы подключаетесь:292На Claude Code v2.1.227 или более поздней версии ваша организация может сохранить [поиск инструментов MCP](/docs/ru/mcp#scale-with-mcp-tool-search) в соответствии с этой переменной через [управляемые параметры](/docs/ru/managed-settings). То, что Claude Code отправляет с этим переопределением, зависит от того, как вы подключаетесь:

293 293 

294* При прямом соединении или через шлюз, установленный с `ANTHROPIC_BASE_URL`, Claude Code продолжает отправлять бета-заголовок поиска инструментов, поля инструментов `defer_loading` и блоки `tool_reference`, и удаляет остальное294* При прямом соединении без конфигурации HIPAA или через шлюз, установленный с `ANTHROPIC_BASE_URL`, Claude Code продолжает отправлять бета-заголовок поиска инструментов, поля инструментов `defer_loading` и блоки `tool_reference`

295* На облачном поставщике или при входе через [Claude apps gateway](/docs/ru/claude-apps-gateway), переопределение не имеет никакого эффекта295* На облачном поставщике или при входе через [Claude apps gateway](/docs/ru/claude-apps-gateway), переопределение не имеет никакого эффекта

296* В сессии, которая [получает конфигурацию HIPAA](/docs/ru/hipaa-setup#check-how-developers-sign-in-and-connect), переопределение не имеет никакого эффекта, и поиск инструментов остается отключенным

296 297 

297Набор возможностей, которые Claude Code отправляет, растет с каждым выпуском. Для текущих строк бета-заголовков см. [справочник бета-заголовков](https://platform.claude.com/docs/en/api/beta-headers); протестируйте свой шлюз против новых выпусков Claude Code, а не закрепляйте наблюдаемый список.298Набор возможностей, которые Claude Code отправляет, растет с каждым выпуском. Для текущих строк бета-заголовков см. [справочник бета-заголовков](https://platform.claude.com/docs/en/api/beta-headers); протестируйте свой шлюз против новых выпусков Claude Code, а не закрепляйте наблюдаемый список.

298 299 

mcp.md +120 −91

Details

90 90 

91При настройке MCP-серверов через JSON в `.mcp.json`, `~/.claude.json` или `claude mcp add-json` поле `type` принимает `streamable-http` как псевдоним для `http`. Спецификация MCP использует для этого транспорта имя `streamable-http`, поэтому конфигурации, скопированные из документации сервера, работают без изменений.91При настройке MCP-серверов через JSON в `.mcp.json`, `~/.claude.json` или `claude mcp add-json` поле `type` принимает `streamable-http` как псевдоним для `http`. Спецификация MCP использует для этого транспорта имя `streamable-http`, поэтому конфигурации, скопированные из документации сервера, работают без изменений.

92 92 

93Запись JSON, в которой есть `url`, но нет `type`, является ошибкой конфигурации, потому что Claude Code считает запись без `type` stdio-сервером. Claude Code пропускает такой сервер и сообщает `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`. До версии v2.1.202 Claude Code сообщал об этой ошибке конфигурации как `command: expected string, received undefined`.93Запись JSON, в которой есть `url`, но нет `type`, является ошибкой конфигурации, потому что Claude Code считает запись без `type` stdio-сервером. Claude Code пропускает такой сервер и сообщает `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`.

94 94 

95Только приложение-хост SDK, например приложение на [Agent SDK](/docs/ru/agent-sdk/mcp) или [настольное приложение](/docs/ru/desktop), может зарегистрировать встроенный в процесс сервер `"type": "sdk"`. Claude Code пропускает запись `"type": "sdk"` в `.mcp.json`, `~/.claude.json` или настройках и сообщает `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.95Только приложение-хост SDK, например приложение на [Agent SDK](/docs/ru/agent-sdk/mcp) или [настольное приложение](/docs/ru/desktop), может зарегистрировать встроенный в процесс сервер `"type": "sdk"`. Claude Code пропускает запись `"type": "sdk"` в `.mcp.json`, `~/.claude.json` или настройках и сообщает `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.

96 96 


128 128 

129Claude Code устанавливает в окружении запускаемого сервера переменную `CLAUDE_PROJECT_DIR`, указывающую на корень проекта, поэтому ваш сервер может разрешать пути относительно проекта, не завися от рабочего каталога. Это тот же каталог, который хуки получают в своей переменной `CLAUDE_PROJECT_DIR`. Читайте её внутри процесса вашего сервера, например `process.env.CLAUDE_PROJECT_DIR` в Node или `os.environ["CLAUDE_PROJECT_DIR"]` в Python.129Claude Code устанавливает в окружении запускаемого сервера переменную `CLAUDE_PROJECT_DIR`, указывающую на корень проекта, поэтому ваш сервер может разрешать пути относительно проекта, не завися от рабочего каталога. Это тот же каталог, который хуки получают в своей переменной `CLAUDE_PROJECT_DIR`. Читайте её внутри процесса вашего сервера, например `process.env.CLAUDE_PROJECT_DIR` в Node или `os.environ["CLAUDE_PROJECT_DIR"]` в Python.

130 130 

131`CLAUDE_PROJECT_DIR` — это стабильный корень проекта, и он не меняется, когда вы добавляете или удаляете рабочие каталоги во время сессии. Сервер, который ограничивает собственный доступ к файловой системе набором разрешённых каталогов, должен вместо этого реализовать MCP-запрос `roots/list`. Claude Code отвечает на `roots/list` каталогом запуска сессии плюс каждым [дополнительным рабочим каталогом](/docs/ru/permissions#working-directories), который вы предоставили с помощью `--add-dir`, `/add-dir` или настройки `additionalDirectories`. Claude Code отправляет `notifications/roots/list_changed`, когда этот набор меняется. До версии v2.1.203 `roots/list` возвращал только каталог запуска, и Claude Code не отправлял `notifications/roots/list_changed`.131`CLAUDE_PROJECT_DIR` — это стабильный корень проекта, и он не меняется, когда вы добавляете или удаляете рабочие каталоги во время сессии. Сервер, который ограничивает собственный доступ к файловой системе набором разрешённых каталогов, должен вместо этого реализовать MCP-запрос `roots/list`. Claude Code отвечает на `roots/list` каталогом запуска сессии плюс каждым [дополнительным рабочим каталогом](/docs/ru/permissions#working-directories), который вы предоставили с помощью `--add-dir`, `/add-dir` или настройки `additionalDirectories`. Claude Code отправляет `notifications/roots/list_changed`, когда этот набор меняется.

132 132 

133Эта переменная устанавливается в окружении сервера, а не в собственном окружении Claude Code, поэтому ссылка на неё через подстановку `${VAR}` в `command` или `args` записи `.mcp.json` с областью действия проекта или записи сервера с локальной или пользовательской областью действия в `~/.claude.json` требует значения по умолчанию, например `${CLAUDE_PROJECT_DIR:-.}`. Конфигурации MCP, предоставляемые плагинами, подставляют `${CLAUDE_PROJECT_DIR}` напрямую и не нуждаются в значении по умолчанию.133Эта переменная устанавливается в окружении сервера, а не в собственном окружении Claude Code, поэтому ссылка на неё через подстановку `${VAR}` в `command` или `args` записи `.mcp.json` с областью действия проекта или записи сервера с локальной или пользовательской областью действия в `~/.claude.json` требует значения по умолчанию, например `${CLAUDE_PROJECT_DIR:-.}`. Конфигурации MCP, предоставляемые плагинами, подставляют `${CLAUDE_PROJECT_DIR}` напрямую и не нуждаются в значении по умолчанию.

134 134 


154 `--env` принимает несколько пар `KEY=value`. Если имя сервера идёт сразу после `--env`, CLI считает имя ещё одной парой и отклоняет его, поэтому поместите хотя бы одну другую опцию, например `--transport stdio`, между `--env` и именем сервера.154 `--env` принимает несколько пар `KEY=value`. Если имя сервера идёт сразу после `--env`, CLI считает имя ещё одной парой и отклоняет его, поэтому поместите хотя бы одну другую опцию, например `--transport stdio`, между `--env` и именем сервера.

155</Note>155</Note>

156 156 

157<h4 id="how-claude-code-stops-a-stdio-server">

158 Как Claude Code останавливает stdio-сервер

159</h4>

160 

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

162 

163* **В macOS и Linux**: Claude Code отправляет `SIGINT`, затем `SIGTERM`, если процесс всё ещё работает через 100 миллисекунд, затем `SIGKILL` ещё через 400 миллисекунд.

164* **В Windows**: Claude Code закрывает stdin сервера, затем завершает дерево процессов сервера, если процесс всё ещё работает через 300 миллисекунд.

165 

166До версии v2.1.296 Claude Code в Windows сразу завершал дерево процессов сервера, не закрывая предварительно stdin и не дожидаясь завершения.

167 

157<h3 id="option-4-add-a-remote-websocket-server">168<h3 id="option-4-add-a-remote-websocket-server">

158 Вариант 4: Добавление удалённого WebSocket-сервера169 Вариант 4: Добавление удалённого WebSocket-сервера

159</h3>170</h3>


415 Отключения удалённого сервера во время сессии426 Отключения удалённого сервера во время сессии

416</h4>427</h4>

417 428 

418Claude Code переподключает отключившийся удалённый сервер с экспоненциальной задержкой: до пяти попыток, начиная с задержки в одну секунду и удваивая её каждый раз. То, что вы видите, зависит от того, как вы запускаете Claude Code:429Сначала Claude Code пытается переподключить отключившийся удалённый сервер до пяти раз с экспоненциальной задержкой, начиная с задержки в одну секунду и удваивая её каждый раз:

419 430 

420* **В интерактивной сессии**: `/mcp` показывает сервер как ожидающий, пока Claude Code переподключается. После пяти неудачных попыток Claude Code помечает сервер как сбойный или как требующий аутентификации, если серверу снова нужна авторизация. Когда он помечает сервер как сбойный, вы видите уведомление `MCP server "<name>" disconnected · open /mcp to reconnect`. Вы можете повторить попытку вручную в `/mcp`.431* **В интерактивной сессии**: `/mcp` показывает сервер как ожидающий, пока Claude Code переподключается. После пяти неудачных попыток Claude Code помечает сервер как сбойный или как требующий аутентификации, если серверу снова нужна авторизация. Когда он помечает сервер как сбойный, вы видите уведомление `MCP server "<name>" disconnected · open /mcp to reconnect`. Вы можете повторить попытку вручную в `/mcp`.

421* **В запусках [`claude -p`](/docs/ru/headless) и сессиях [Agent SDK](/docs/ru/agent-sdk/overview)**: Claude Code переподключается по тому же расписанию, без панели `/mcp` для отображения попыток.432* **В запусках [`claude -p`](/docs/ru/headless) и сессиях [Agent SDK](/docs/ru/agent-sdk/overview)**: Claude Code делает те же пять попыток, без панели `/mcp` для их отображения. Когда попытки для HTTP- или SSE-сервера завершаются временной ошибкой, он продолжает повторять попытки в фоне примерно до получаса, и сервер вместе с его инструментами снова становится доступен, когда одна из повторных попыток подключается.

422 433 

423<h4 id="failed-first-connections">434<h4 id="failed-first-connections">

424 Неудачные первые подключения435 Неудачные первые подключения


479 490 

480`timeout` отдельного сервера — это жёсткий лимит реального времени на каждый вызов инструмента, и уведомления о прогрессе от сервера его не продлевают. Значения меньше 1000 игнорируются, и используется `MCP_TOOL_TIMEOUT` или его значение по умолчанию около 28 часов, если эта переменная не установлена. Для HTTP-, SSE-сервера или сервера [коннектора claude.ai](/docs/ru/mcp#use-mcp-servers-from-claude-ai) также есть второй таймер на каждый запрос, который охватывает каждый запрос вплоть до первого байта ответа сервера. Claude Code устанавливает этот таймер в наибольшее из трёх значений: 60 секунд, таймаут инструментов, применяемый к серверу, и `MCP_TIMEOUT`. Значение по умолчанию 28 часов для неустановленного `MCP_TOOL_TIMEOUT` в этом сравнении не участвует, а значение меньше 60 секунд не сокращает таймер. У stdio- и WebSocket-серверов нет таймера на каждый запрос.491`timeout` отдельного сервера — это жёсткий лимит реального времени на каждый вызов инструмента, и уведомления о прогрессе от сервера его не продлевают. Значения меньше 1000 игнорируются, и используется `MCP_TOOL_TIMEOUT` или его значение по умолчанию около 28 часов, если эта переменная не установлена. Для HTTP-, SSE-сервера или сервера [коннектора claude.ai](/docs/ru/mcp#use-mcp-servers-from-claude-ai) также есть второй таймер на каждый запрос, который охватывает каждый запрос вплоть до первого байта ответа сервера. Claude Code устанавливает этот таймер в наибольшее из трёх значений: 60 секунд, таймаут инструментов, применяемый к серверу, и `MCP_TIMEOUT`. Значение по умолчанию 28 часов для неустановленного `MCP_TOOL_TIMEOUT` в этом сравнении не участвует, а значение меньше 60 секунд не сокращает таймер. У stdio- и WebSocket-серверов нет таймера на каждый запрос.

481 492 

482`timeout` отдельного сервера не менее 1000 также служит нижней границей для описанного ниже таймаута бездействия: Claude Code никогда не прерывает вызовы инструментов этого сервера из-за бездействия раньше, чем истечёт `timeout` этого сервера. Требуется Claude Code v2.1.203 или новее.493`timeout` отдельного сервера не менее 1000 также служит нижней границей для описанного ниже таймаута бездействия: Claude Code никогда не прерывает вызовы инструментов этого сервера из-за бездействия раньше, чем истечёт `timeout` этого сервера.

483 494 

484Вызов инструмента MCP-сервера, который в течение окна бездействия не отправляет ни ответа, ни уведомления о прогрессе, прерывается с ошибкой, не дожидаясь лимита реального времени. Таймаут бездействия применяется ко всем типам серверов, кроме серверов IDE и встроенных в процесс серверов SDK. Окно бездействия по умолчанию составляет пять минут для HTTP-, SSE-, WebSocket-серверов и серверов [коннекторов claude.ai](#use-mcp-servers-from-claude-ai) и 30 минут для stdio-серверов. До версии v2.1.203 на stdio-серверы таймаут бездействия не распространялся.495Вызов инструмента MCP-сервера, который в течение окна бездействия не отправляет ни ответа, ни уведомления о прогрессе, прерывается с ошибкой, не дожидаясь лимита реального времени. Таймаут бездействия применяется ко всем типам серверов, кроме серверов IDE и встроенных в процесс серверов SDK. Окно бездействия по умолчанию составляет пять минут для HTTP-, SSE-, WebSocket-серверов и серверов [коннекторов claude.ai](#use-mcp-servers-from-claude-ai) и 30 минут для stdio-серверов.

485 496 

486Установите переменную окружения [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/ru/env-vars) в миллисекундах, чтобы изменить окно бездействия, или установите её в `0`, чтобы отключить проверку.497Установите переменную окружения [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/ru/env-vars) в миллисекундах, чтобы изменить окно бездействия, или установите её в `0`, чтобы отключить проверку.

487 498 


493 504 

494Вызов инструмента MCP в основном диалоге, который всё ещё выполняется через две минуты, переходит в фоновую задачу, а не блокирует сессию. Claude сразу получает ID задачи и продолжает работу, а результат приходит в виде уведомления задачи, когда вызов завершается. Автоматический перевод в фон требует Claude Code v2.1.212 или новее.505Вызов инструмента MCP в основном диалоге, который всё ещё выполняется через две минуты, переходит в фоновую задачу, а не блокирует сессию. Claude сразу получает ID задачи и продолжает работу, а результат приходит в виде уведомления задачи, когда вызов завершается. Автоматический перевод в фон требует Claude Code v2.1.212 или новее.

495 506 

496Задача отображается в [`/tasks`](/docs/ru/commands#all-commands), где вы также можете её остановить, и она не сохраняется после выхода из сессии. В записи задачи отображается последний прогресс, о котором сообщил сервер.507Задача отображается в [`/tasks`](/docs/ru/commands#all-commands), где вы также можете её остановить, и она не сохраняется после выхода из сессии. В записи задачи отображается последний прогресс, о котором сообщил сервер. Если вы остановите задачу, Claude Code отменит вызов и сообщит Claude, что результата не будет. Остановка не гарантирует, что остановится сервер: он мог уже выполнить часть работы или всё же завершить её.

497 508 

498Ограничения на каждый вызов продолжают действовать, пока вызов выполняется в фоне: лимит реального времени, заданный `timeout` отдельного сервера или [`MCP_TOOL_TIMEOUT`](/docs/ru/env-vars), и таймаут бездействия, заданный [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/ru/env-vars).509Ограничения на каждый вызов продолжают действовать, пока вызов выполняется в фоне: лимит реального времени, заданный `timeout` отдельного сервера или [`MCP_TOOL_TIMEOUT`](/docs/ru/env-vars), и таймаут бездействия, заданный [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/ru/env-vars).

499 510 


793 --header "Authorization: Bearer YOUR_GITHUB_PAT"804 --header "Authorization: Bearer YOUR_GITHUB_PAT"

794```805```

795 806 

796Замените `YOUR_GITHUB_PAT` на ваш токен личного доступа. Команда `claude mcp add` сохраняет конфигурацию без проверки учетных данных, поэтому здесь принимается значение-заполнитель, но сервер не подключится позже. Чтобы проверить соединение, запустите `/mcp` и убедитесь, что сервер показывает `connected`. Сервер с неправильными учетными данными показывает `failed`, и детали сбоя включают HTTP-статус, возвращаемый сервером, например 401.807Замените `YOUR_GITHUB_PAT` на ваш токен личного доступа. Команда `claude mcp add` сохраняет конфигурацию без проверки учётных данных, поэтому здесь принимается значение-заполнитель, но позже сервер не сможет подключиться. Чтобы проверить соединение, запустите `/mcp` и убедитесь, что в строке сервера отображается галочка. Для сервера с неправильными учётными данными вместо неё отображается ✘, а [сведения о сбое](#server-status-detail) включают HTTP-статус, возвращённый сервером, например 401.

797 808 

798Затем работайте с GitHub:809Затем работайте с GitHub:

799 810 


820 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"831 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"

821```832```

822 833 

823Чтобы подтвердить, что сервер запущен, запустите `/mcp` и убедитесь, что `db` показывает `connected`.834Чтобы убедиться, что сервер запускается, запустите `/mcp` и проверьте, что в строке `db` отображается галочка.

824 835 

825Затем запрашивайте вашу базу данных естественным образом:836Затем запрашивайте вашу базу данных естественным образом:

826 837 


837```848```

838 849 

839<h2 id="authenticate-with-remote-mcp-servers">850<h2 id="authenticate-with-remote-mcp-servers">

840 Аутентификация с удаленными MCP серверами851 Аутентификация с удалёнными MCP-серверами

841</h2>852</h2>

842 853 

843Многие облачные MCP серверы требуют аутентификации. Claude Code поддерживает OAuth 2.0 для безопасных соединений.854Многие облачные MCP-серверы требуют аутентификации. Claude Code поддерживает OAuth 2.0 для безопасных соединений.

844 855 

845Claude Code помечает удаленный сервер как требующий аутентификации, когда сервер отвечает с `401 Unauthorized` или `403 Forbidden`. То, что показывает Claude Code, зависит от сервера:856Claude Code помечает удалённый сервер как требующий аутентификации, когда сервер отвечает с `401 Unauthorized` или `403 Forbidden`. То, что показывает Claude Code, зависит от сервера:

846 857 

847* Для сервера, на который вы еще не вошли, любой из этих кодов состояния помечает его в `/mcp`, чтобы вы могли завершить поток OAuth.858* Для сервера, на который вы ещё не вошли, любой из этих кодов состояния помечает его в `/mcp`, чтобы вы могли завершить поток OAuth.

848* Для [коннектора claude.ai](#use-mcp-servers-from-claude-ai), `401`, вызванный отклонением claude.ai вашего токена сеанса, не помечает коннектор, потому что повторная авторизация коннектора не может исправить вашу сессию входа. Claude Code вместо этого показывает [состояние отклонения токена сеанса](/docs/ru/errors#claude-ai-rejected-the-session-token).859* Для [коннектора claude.ai](#use-mcp-servers-from-claude-ai) `401`, вызванный отклонением claude.ai вашего токена сессии, не помечает коннектор, потому что повторная авторизация коннектора не может исправить ваш вход. Claude Code вместо этого показывает [состояние отклонения токена сессии](/docs/ru/errors#claude-ai-rejected-the-session-token).

849* Для сервера, чей заголовок `Authorization` вы настроили в `headers` или через [`headersHelper`](#use-dynamic-headers-for-custom-authentication), `401` или `403` при подключении не помечает сервер, потому что учетные данные для исправления — это те, которые вы настроили. Claude Code вместо этого сообщает о неудачном подключении. Если вы установили этот заголовок из ссылки `${VAR}`, проверьте, является ли эта переменная одной из тех, которые Claude Code [читает как пустые](#credential-variables-that-read-as-empty).860* Для сервера, чей заголовок `Authorization` вы настроили в `headers` или через [`headersHelper`](#use-dynamic-headers-for-custom-authentication), `401` или `403` при подключении не помечает сервер, потому что исправлять нужно те учётные данные, которые вы настроили. Claude Code вместо этого сообщает о неудачном подключении. Если вы установили этот заголовок из ссылки `${VAR}`, проверьте, является ли эта переменная одной из тех, которые Claude Code [читает как пустые](#credential-variables-that-read-as-empty).

850* Для коннектора [доставленного в облачный сеанс](#how-connectors-reach-claude-code), Claude Code не запускает поток входа, потому что прокси сеанса аутентифицируется на коннекторе с авторизацией, которую вы предоставили в claude.ai. Когда коннектор там требует повторной авторизации, переподключитесь на [claude.ai/customize/connectors](https://claude.ai/customize/connectors) вместо сеанса.861* Для коннектора, [доставленного в облачную сессию](#how-connectors-reach-claude-code), Claude Code не запускает поток входа, потому что прокси сессии аутентифицируется на коннекторе с авторизацией, которую вы предоставили в claude.ai. Когда коннектор там требует повторной авторизации, переподключите его на [claude.ai/customize/connectors](https://claude.ai/customize/connectors), а не из сессии.

851 862 

852Когда запрос к OAuth серверу, на который вы уже вошли, возвращает `401 Unauthorized`, Claude Code обновляет сохраненный токен, переподключается и повторяет запрос один раз. Он помечает сервер в `/mcp` только если этот повтор также не удается. До v2.1.206 обновление токена, которое не удалось по временной причине, такой как ошибка сети, помечало OAuth сервер как требующий аутентификации на остаток сеанса, даже если его токен обновления был все еще действителен.863Когда запрос к OAuth-серверу, на который вы уже вошли, возвращает `401 Unauthorized`, Claude Code обновляет сохранённый токен, переподключается и повторяет запрос один раз. Он помечает сервер в `/mcp`, только если эта повторная попытка также не удаётся.

853 864 

854Когда сервер отклоняет сохраненный токен обновления, Claude Code немедленно показывает уведомление, указывающее на `/mcp`. Откройте `/mcp` и выберите **Re-authenticate** на сервере, чтобы войти снова перед следующим вызовом инструмента.865Когда сервер отклоняет сохранённый токен обновления, Claude Code немедленно показывает уведомление, указывающее на `/mcp`. Откройте `/mcp` и выберите **Re-authenticate** на сервере, чтобы войти снова до того, как следующий вызов инструмента завершится ошибкой.

855 866 

856Пользовательский сервер, который возвращает заголовок `WWW-Authenticate`, указывающий на его сервер авторизации, получает такое же автоматическое обнаружение, как и любой другой удаленный сервер.867Пользовательский сервер, который возвращает заголовок `WWW-Authenticate`, указывающий на его сервер авторизации, получает такое же автоматическое обнаружение, как и любой другой удалённый сервер.

857 868 

858Claude Code также показывает уведомление при запуске, когда один или несколько настроенных серверов требуют аутентификации, поэтому вам не нужно открывать `/mcp`, чтобы узнать, какие серверы требуют входа. Уведомление учитывает только серверы, на которые вы можете войти из Claude Code. До v2.1.218 оно также учитывало [коннекторы claude.ai](#use-mcp-servers-from-claude-ai), которые не были подключены в claude.ai и которые можно подключить только из настроек claude.ai.869Claude Code также показывает уведомление при запуске, когда один или несколько настроенных серверов требуют аутентификации, поэтому вам не нужно открывать `/mcp`, чтобы узнать, какие серверы требуют входа. Уведомление учитывает только серверы, на которые вы можете войти из Claude Code. До v2.1.218 оно также учитывало [коннекторы claude.ai](#use-mcp-servers-from-claude-ai), которые не были подключены в claude.ai и которые можно подключить только из настроек claude.ai.

859 870 

860Уведомление объявляет каждый сервер один раз и исключает его из подсчета при последующих запусках, пока этот сервер не подключится и снова не потребует входа. `/mcp` по-прежнему перечисляет каждый сервер, который требует входа.871Уведомление объявляет каждый сервер один раз и исключает его из подсчёта при последующих запусках, пока этот сервер не подключится и снова не потребует входа. `/mcp` по-прежнему перечисляет каждый сервер, который требует входа.

861 872 

862В неинтерактивном режиме нет панели `/mcp`, поэтому Claude Code не может запустить поток OAuth за вас. Когда настроенный сервер требует аутентификации во время запуска `claude -p` или Agent SDK с включённым [поиском инструментов](#scale-with-mcp-tool-search), что является значением по умолчанию, Claude Code сообщает Claude, что инструменты сервера недоступны, пока вы его не авторизуете. Claude затем может назвать сервер, который требует входа. Завершите вход из интерактивной сессии с помощью `/mcp` или `claude mcp login <name>`.873У запуска `claude -p` или Agent SDK нет панели `/mcp`, поэтому Claude Code не может запустить там поток OAuth. Чтобы использовать сервер, требующий аутентификации, сначала завершите вход из интерактивной сессии: выполните `/mcp` в сессии или `claude mcp login <name>` в вашей оболочке. Когда настроенный сервер требует аутентификации во время запуска `claude -p` или Agent SDK с включённым [поиском инструментов](#scale-with-mcp-tool-search), Claude Code сообщает Claude, что инструменты сервера недоступны, пока вы его не авторизуете.

863 874 

864Если вы настроили `headers.Authorization` для сервера и сервер отклоняет этот заголовок, Claude Code сообщает о неудачном подключении вместо возврата к OAuth. Проверьте, что токен действителен для конечной точки MCP, или удалите заголовок, чтобы использовать поток OAuth.875Если вы настроили `headers.Authorization` для сервера и сервер отклоняет этот заголовок, Claude Code сообщает о неудачном подключении вместо возврата к OAuth. Проверьте, что токен действителен для эндпоинта MCP, или удалите заголовок, чтобы использовать поток OAuth.

865 876 

866<Steps>877<Steps>

867 <Step title="Добавьте сервер, требующий аутентификации">878 <Step title="Добавьте сервер, требующий аутентификации">

868 Если вы уже добавили сервер `sentry` в [быстром старте MCP](/docs/ru/mcp-quickstart#connect-a-server-that-requires-sign-in), пропустите этот шаг: повторный запуск `claude mcp add` с тем же именем сервера в той же области завершится ошибкой `MCP server sentry already exists in local config`. В противном случае запустите:879 Если вы уже добавили сервер `sentry` в [быстром старте MCP](/docs/ru/mcp-quickstart#connect-a-server-that-requires-sign-in), пропустите этот шаг: повторный запуск `claude mcp add` с тем же именем сервера в той же области действия завершится ошибкой `MCP server sentry already exists in local config`. В противном случае запустите:

869 880 

870 ```bash theme={null}881 ```bash theme={null}

871 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp882 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp


889 * Токены аутентификации хранятся безопасно и автоматически обновляются900 * Токены аутентификации хранятся безопасно и автоматически обновляются

890 * Используйте "Clear authentication" в меню `/mcp` для отзыва доступа901 * Используйте "Clear authentication" в меню `/mcp` для отзыва доступа

891 * Если ваш браузер не открывается автоматически, скопируйте предоставленный URL и откройте его вручную902 * Если ваш браузер не открывается автоматически, скопируйте предоставленный URL и откройте его вручную

892 * Если перенаправление браузера не удается с ошибкой подключения после аутентификации, вставьте полный URL обратного вызова из адресной строки браузера в приглашение URL, которое появляется в Claude Code903 * Если перенаправление браузера не удаётся с ошибкой подключения после аутентификации, вставьте полный URL обратного вызова из адресной строки браузера в поле ввода URL, которое появляется в Claude Code

893 * Аутентификация OAuth работает с HTTP серверами904 * Аутентификация OAuth работает с HTTP-серверами

894</Tip>905</Tip>

895 906 

896<h3 id="authenticate-from-the-command-line">907<h3 id="authenticate-from-the-command-line">


903claude mcp login sentry914claude mcp login sentry

904```915```

905 916 

906Чтобы позже очистить сохраненные учетные данные, запустите `claude mcp logout <name>`.917Чтобы позже очистить сохранённые учётные данные, запустите `claude mcp logout <name>`.

907 918 

908`claude mcp login` обнаруживает, когда локальный браузер недоступен, например во время сеанса SSH или на Linux без сервера отображения, и выводит URL авторизации вместо попытки открыть браузер. Откройте URL на вашей локальной машине, затем вставьте полный URL перенаправления из адресной строки браузера обратно в приглашение. Команде требуется интерактивный терминал для шага вставки, поэтому подключитесь с `ssh -t`. Передайте `--no-browser`, чтобы принудительно использовать приглашение URL даже при обнаружении локального браузера.919`claude mcp login` обнаруживает, когда локальный браузер недоступен, например во время сессии SSH или на Linux без сервера отображения, и выводит URL авторизации вместо попытки открыть браузер. Откройте URL на вашей локальной машине, затем вставьте полный URL перенаправления из адресной строки браузера обратно в поле ввода. Команде требуется интерактивный терминал для шага вставки, поэтому подключитесь с `ssh -t`. Передайте `--no-browser`, чтобы принудительно использовать ввод URL даже при обнаружении локального браузера.

909 920 

910```bash theme={null}921```bash theme={null}

911claude mcp login sentry --no-browser922claude mcp login sentry --no-browser


915 Используйте фиксированный порт обратного вызова OAuth926 Используйте фиксированный порт обратного вызова OAuth

916</h3>927</h3>

917 928 

918Некоторые MCP серверы требуют определенный URI перенаправления, зарегистрированный заранее. По умолчанию Claude Code выбирает случайный доступный порт для обратного вызова OAuth. Используйте `--callback-port`, чтобы зафиксировать порт так, чтобы он соответствовал предварительно зарегистрированному URI перенаправления формы `http://localhost:PORT/callback`. Если вход на Claude Code v2.1.229 не удается с несоответствием URI перенаправления, см. примечание версии в разделе [Используйте предварительно настроенные учетные данные OAuth](#use-pre-configured-oauth-credentials).929Некоторые MCP-серверы требуют определённый URI перенаправления, зарегистрированный заранее. По умолчанию Claude Code выбирает случайный доступный порт для обратного вызова OAuth. Используйте `--callback-port`, чтобы зафиксировать порт так, чтобы он соответствовал предварительно зарегистрированному URI перенаправления формы `http://localhost:PORT/callback`. Если вход на Claude Code v2.1.229 не удаётся с несоответствием URI перенаправления, см. примечание о версии в разделе [Используйте предварительно настроенные учётные данные OAuth](#use-pre-configured-oauth-credentials).

919 930 

920Вы можете использовать `--callback-port` отдельно (с динамической регистрацией клиента) или вместе с `--client-id` (с предварительно настроенными учетными данными).931Вы можете использовать `--callback-port` отдельно (с динамической регистрацией клиента) или вместе с `--client-id` (с предварительно настроенными учётными данными).

921 932 

922```bash theme={null}933```bash theme={null}

923# Фиксированный порт обратного вызова с динамической регистрацией клиента934# Fixed callback port with dynamic client registration

924claude mcp add --transport http \935claude mcp add --transport http \

925 --callback-port 8080 \936 --callback-port 8080 \

926 my-server https://mcp.example.com/mcp937 my-server https://mcp.example.com/mcp

927```938```

928 939 

929<h3 id="use-pre-configured-oauth-credentials">940<h3 id="use-pre-configured-oauth-credentials">

930 Используйте предварительно настроенные учетные данные OAuth941 Используйте предварительно настроенные учётные данные OAuth

931</h3>942</h3>

932 943 

933Некоторые MCP серверы не поддерживают автоматическую настройку OAuth через Dynamic Client Registration. Если вы видите ошибку типа "Incompatible auth server: does not support dynamic client registration," сервер требует предварительно настроенные учетные данные. Claude Code также поддерживает серверы, которые используют Client ID Metadata Document (CIMD) вместо Dynamic Client Registration, и обнаруживает их автоматически. Если автоматическое обнаружение не удается, сначала зарегистрируйте приложение OAuth через портал разработчика сервера, затем предоставьте учетные данные при добавлении сервера.944Некоторые MCP-серверы не поддерживают автоматическую настройку OAuth через Dynamic Client Registration. Если вы видите ошибку типа "Incompatible auth server: does not support dynamic client registration," сервер требует предварительно настроенные учётные данные. Claude Code также поддерживает серверы, которые используют Client ID Metadata Document (CIMD) вместо Dynamic Client Registration, и обнаруживает их автоматически. Если автоматическое обнаружение не удаётся, сначала зарегистрируйте приложение OAuth через портал разработчика сервера, затем предоставьте учётные данные при добавлении сервера.

934 945 

935<Steps>946<Steps>

936 <Step title="Зарегистрируйте приложение OAuth на сервере">947 <Step title="Зарегистрируйте приложение OAuth на сервере">


938 949 

939 Если форма регистрации запрашивает URI перенаправления, выберите любой доступный порт и введите `http://localhost:PORT/callback` с этим портом. Вы будете использовать тот же порт на следующем шаге.950 Если форма регистрации запрашивает URI перенаправления, выберите любой доступный порт и введите `http://localhost:PORT/callback` с этим портом. Вы будете использовать тот же порт на следующем шаге.

940 951 

941 В v2.1.229 Claude Code отправлял `http://127.0.0.1:PORT/callback` вместо этого, и серверы, которые точно совпадают с зарегистрированным URI перенаправления, отклоняли вход с несоответствием URI перенаправления. Claude Code v2.1.231 восстановил форму `localhost`. Чтобы восстановиться на v2.1.229, обновите Claude Code или временно добавьте форму `http://127.0.0.1:PORT/callback` к зарегистрированным URI перенаправления сервера.952 В v2.1.229 Claude Code вместо этого отправлял `http://127.0.0.1:PORT/callback`, и серверы, которые требуют точного совпадения с зарегистрированным URI перенаправления, отклоняли вход с несоответствием URI перенаправления. Claude Code v2.1.231 восстановил форму `localhost`. Чтобы исправить ситуацию на v2.1.229, обновите Claude Code или временно добавьте форму `http://127.0.0.1:PORT/callback` к зарегистрированным URI перенаправления сервера.

942 </Step>953 </Step>

943 954 

944 <Step title="Добавьте сервер с вашими учетными данными">955 <Step title="Добавьте сервер с вашими учётными данными">

945 Вкладки охватывают обе команды: `claude mcp add` принимает ваш ID клиента и порт обратного вызова как флаги, а `claude mcp add-json` принимает их в объекте `oauth`. Если вы зарегистрировали URI перенаправления, установите порт обратного вызова на порт в этом URI.956 Вкладки охватывают обе команды: `claude mcp add` принимает ваш ID клиента и порт обратного вызова как флаги, а `claude mcp add-json` принимает их в объекте `oauth`. Если вы зарегистрировали URI перенаправления, установите порт обратного вызова на порт в этом URI.

946 957 

947 <Tabs>958 <Tabs>


975 </Tab>986 </Tab>

976 987 

977 <Tab title="CI / переменная окружения">988 <Tab title="CI / переменная окружения">

978 Установите секрет через переменную окружения, чтобы пропустить интерактивное приглашение:989 Установите секрет через переменную окружения, чтобы пропустить интерактивный запрос:

979 990 

980 ```bash theme={null}991 ```bash theme={null}

981 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \992 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \


987 </Step>998 </Step>

988 999 

989 <Step title="Аутентификация в Claude Code">1000 <Step title="Аутентификация в Claude Code">

990 Запустите `/mcp` в Claude Code и следуйте потоку входа браузера.1001 Запустите `/mcp` в Claude Code и следуйте потоку входа в браузере.

991 </Step>1002 </Step>

992</Steps>1003</Steps>

993 1004 

994<Tip>1005<Tip>

995 Советы:1006 Советы:

996 1007 

997 * Секрет клиента хранится безопасно в цепочке ключей вашей системы (macOS) или файле учетных данных, а не в вашей конфигурации1008 * Секрет клиента хранится безопасно в связке ключей вашей системы (macOS) или файле учётных данных, а не в вашей конфигурации

998 * Вы можете установить секрет клиента только при добавлении сервера. Когда вы аутентифицируетесь с `claude mcp login` или из `/mcp`, Claude Code использует сохраненный секрет и не запрашивает его или не читает `MCP_CLIENT_SECRET`1009 * Вы можете установить секрет клиента только при добавлении сервера. Когда вы аутентифицируетесь с `claude mcp login` или из `/mcp`, Claude Code использует сохранённый секрет, не запрашивает его и не читает `MCP_CLIENT_SECRET`

999 * Чтобы позже добавить или изменить секрет, удалите сервер с `claude mcp remove <name>`, затем добавьте его снова с `--client-secret` и той же `--scope`1010 * Чтобы позже добавить или изменить секрет, удалите сервер с `claude mcp remove <name>`, затем добавьте его снова с `--client-secret` и тем же `--scope`

1000 * Если сервер использует публичный OAuth клиент без секрета, используйте только `--client-id` без `--client-secret`1011 * Если сервер использует публичный OAuth-клиент без секрета, используйте только `--client-id` без `--client-secret`

1001 * Эти флаги применяются только к HTTP и SSE транспортам. Они не влияют на серверы stdio1012 * Эти флаги применяются только к транспортам HTTP и SSE. Они не влияют на серверы stdio

1002 * Используйте `claude mcp get <name>` для проверки того, что учетные данные OAuth настроены для сервера1013 * Используйте `claude mcp get <name>` для проверки того, что учётные данные OAuth настроены для сервера

1003</Tip>1014</Tip>

1004 1015 

1005<h3 id="override-oauth-metadata-discovery">1016<h3 id="override-oauth-metadata-discovery">

1006 Переопределите обнаружение метаданных OAuth1017 Переопределите обнаружение метаданных OAuth

1007</h3>1018</h3>

1008 1019 

1009Укажите Claude Code на определенный URL метаданных сервера авторизации OAuth, чтобы обойти цепочку обнаружения по умолчанию. Установите `authServerMetadataUrl`, когда стандартные конечные точки MCP сервера выдают ошибки, или когда вы хотите маршрутизировать обнаружение через внутренний прокси. По умолчанию Claude Code сначала проверяет RFC 9728 Protected Resource Metadata на `/.well-known/oauth-protected-resource`, затем возвращается к RFC 8414 authorization server metadata на `/.well-known/oauth-authorization-server`.1020Укажите Claude Code определённый URL метаданных сервера авторизации OAuth, чтобы обойти цепочку обнаружения по умолчанию. Установите `authServerMetadataUrl`, когда стандартные эндпоинты MCP-сервера выдают ошибки или когда вы хотите маршрутизировать обнаружение через внутренний прокси. По умолчанию Claude Code сначала проверяет RFC 9728 Protected Resource Metadata на `/.well-known/oauth-protected-resource`, затем возвращается к RFC 8414 authorization server metadata на `/.well-known/oauth-authorization-server`.

1010 1021 

1011Установите `authServerMetadataUrl` в объекте `oauth` конфигурации вашего сервера в `.mcp.json`:1022Установите `authServerMetadataUrl` в объекте `oauth` конфигурации вашего сервера в `.mcp.json`:

1012 1023 


1024}1035}

1025```1036```

1026 1037 

1027URL должен использовать `https://`. `scopes_supported` URL метаданных переопределяет области, которые объявляет вышестоящий сервер.1038URL должен использовать `https://`. `scopes_supported` из URL метаданных переопределяет scope, которые объявляет вышестоящий сервер.

1028 1039 

1029<h3 id="restrict-oauth-scopes">1040<h3 id="restrict-oauth-scopes">

1030 Ограничьте области OAuth1041 Ограничьте scope OAuth

1031</h3>1042</h3>

1032 1043 

1033Установите `oauth.scopes`, чтобы зафиксировать области, которые Claude Code запрашивает во время потока авторизации. Это поддерживаемый способ ограничить MCP сервер подмножеством, одобренным командой безопасности, когда вышестоящий сервер авторизации объявляет больше областей, чем вы хотите предоставить. Значение — это одна строка с разделением пробелами, соответствующая формату параметра `scope` в RFC 6749 §3.3.1044Установите `oauth.scopes`, чтобы зафиксировать scope, которые Claude Code запрашивает во время потока авторизации. Это поддерживаемый способ ограничить MCP-сервер подмножеством, одобренным командой безопасности, когда вышестоящий сервер авторизации объявляет больше scope, чем вы хотите предоставить. Значение — это одна строка с разделением пробелами, соответствующая формату параметра `scope` в RFC 6749 §3.3.

1034 1045 

1035```json theme={null}1046```json theme={null}

1036{1047{


1046}1057}

1047```1058```

1048 1059 

1049`oauth.scopes` имеет приоритет над `authServerMetadataUrl` и областями, которые сервер обнаруживает на `/.well-known`. Оставьте его неустановленным, чтобы позволить MCP серверу определить запрашиваемый набор областей.1060`oauth.scopes` имеет приоритет над `authServerMetadataUrl` и над scope, которые сервер обнаруживает на `/.well-known`. Оставьте его неустановленным, чтобы позволить MCP-серверу определить запрашиваемый набор scope.

1050 1061 

1051Когда `oauth.scopes` не установлен, Claude Code не запрашивает полный каталог `scopes_supported` из автоматически обнаруженных метаданных сервера авторизации. Метаданные, полученные из настроенного `authServerMetadataUrl`, по-прежнему предоставляют свой `scopes_supported` в качестве запрашиваемых scope.1062Когда `oauth.scopes` не установлен, Claude Code не запрашивает полный каталог `scopes_supported` из автоматически обнаруженных метаданных сервера авторизации. Метаданные, полученные из настроенного `authServerMetadataUrl`, по-прежнему предоставляют свой `scopes_supported` в качестве запрашиваемых scope.

1052 1063 

1053Если сервер авторизации объявляет `offline_access` в `scopes_supported`, Claude Code добавляет его к зафиксированным областям, чтобы токен доступа можно было обновить без нового входа в браузер.1064Если сервер авторизации объявляет `offline_access` в `scopes_supported`, Claude Code добавляет его к зафиксированным scope, чтобы токен доступа можно было обновить без нового входа в браузере.

1054 1065 

1055Если сервер позже возвращает 403 `insufficient_scope` для вызова инструмента, вызов не удается с сообщением [`needs additional permissions`](/docs/ru/errors#mcp-server-needs-you-to-sign-in-again), которое называет область, которую запрашивает сервер. Сервер показывается как требующий аутентификации в `/mcp`.1066Если сервер позже возвращает 403 `insufficient_scope` для вызова инструмента, вызов завершается ошибкой с сообщением [`needs additional permissions`](/docs/ru/errors#mcp-server-needs-you-to-sign-in-again), в котором указан scope, запрашиваемый сервером. Сервер показывается как требующий аутентификации в `/mcp`.

1056 1067 

1057Если эта область не находится в вашем зафиксированном `oauth.scopes`, добавьте ее, затем запустите `/mcp` и аутентифицируйте сервер снова. Claude Code запрашивает зафиксированные области, а не область, которую назвал сервер, поэтому если вы аутентифицируетесь снова без добавления ее, токен, который вы получите, по-прежнему ей не хватает.1068Если этого scope нет в вашем зафиксированном `oauth.scopes`, добавьте его, затем запустите `/mcp` и аутентифицируйте сервер снова. Claude Code запрашивает зафиксированные scope, а не scope, названный сервером, поэтому если вы аутентифицируетесь снова, не добавив его, полученный токен по-прежнему не будет его содержать.

1058 1069 

1059<h3 id="use-dynamic-headers-for-custom-authentication">1070<h3 id="use-dynamic-headers-for-custom-authentication">

1060 Используйте динамические заголовки для пользовательской аутентификации1071 Используйте динамические заголовки для пользовательской аутентификации

1061</h3>1072</h3>

1062 1073 

1063Если ваш MCP сервер использует схему аутентификации, отличную от OAuth, такую как Kerberos, краткосрочные токены или внутреннее SSO, используйте `headersHelper` для генерации заголовков запроса во время подключения. Claude Code запускает команду и объединяет ее вывод в заголовки подключения.1074Если ваш MCP-сервер использует схему аутентификации, отличную от OAuth, такую как Kerberos, краткосрочные токены или внутреннее SSO, используйте `headersHelper` для генерации заголовков запроса во время подключения. Claude Code запускает команду и объединяет её вывод с заголовками подключения.

1064 1075 

1065```json theme={null}1076```json theme={null}

1066{1077{


1090 1101 

1091**Требования:**1102**Требования:**

1092 1103 

1093* Команда должна записать объект JSON пар строк ключ-значение в stdout1104* Команда должна записать в stdout объект JSON из строковых пар ключ-значение

1094* Claude Code запускает команду в оболочке и отказывается от нее через 10 секунд1105* Claude Code запускает команду в оболочке и прекращает её ожидание через 10 секунд

1095* Claude Code выбирает рабочий каталог команды по [месту, где вы настроили сервер](#where-the-helper-runs), поэтому дайте скрипт как абсолютный путь или поместите его на `PATH`1106* Claude Code выбирает рабочий каталог команды по [месту, где вы настроили сервер](#where-the-helper-runs), поэтому указывайте скрипт абсолютным путём или поместите его в `PATH`

1096* Динамические заголовки переопределяют любые статические `headers` с тем же именем1107* Динамические заголовки переопределяют любые статические `headers` с тем же именем

1097 1108 

1098Claude Code запускает помощника заново при каждом подключении, при запуске сеанса и при переподключении, как только [правило доверия для серверов области проекта и локальной области](#trust-a-folder-before-its-headershelper-runs) позволяет ему запуститься. Он не кэширует результат, поэтому ваш скрипт отвечает за любое повторное использование токена.1109Claude Code запускает помощника заново при каждом подключении, при запуске сессии и при переподключении, как только [правило доверия для серверов уровня проекта и локального уровня](#trust-a-folder-before-its-headershelper-runs) позволяет ему запуститься. Он не кэширует результат, поэтому ваш скрипт отвечает за любое повторное использование токена.

1099 1110 

1100Если вызов инструмента возвращает `401 Unauthorized` или `403 Forbidden`, Claude Code автоматически повторно запускает помощника под тем же правилом, переподключается со свежими заголовками и повторяет вызов один раз. Claude Code помечает сервер как требующий аутентификации в `/mcp` только если этот повтор также не удается.1111Если вызов инструмента возвращает `401 Unauthorized` или `403 Forbidden`, Claude Code автоматически повторно запускает помощника по тому же правилу, переподключается со свежими заголовками и повторяет вызов один раз. Claude Code помечает сервер как требующий аутентификации в `/mcp`, только если эта повторная попытка также не удаётся.

1101 1112 

1102Когда вывод помощника включает заголовок `Authorization`, Claude Code использует это учетное данное как аутентификацию сервера и не возвращается к OAuth для сервера.1113Когда вывод помощника включает заголовок `Authorization`, Claude Code использует эти учётные данные как аутентификацию сервера и не возвращается к OAuth для этого сервера.

1103 1114 

1104Если сервер отклоняет учетное данное помощника при подключении, Claude Code сообщает о неудачном подключении, а не помечает сервер как требующий аутентификации. Исправьте учетное данное, которое возвращает ваш помощник, затем переподключитесь из `/mcp` для повторного запуска помощника.1115Если сервер отклоняет учётные данные помощника при подключении, Claude Code сообщает о неудачном подключении, а не помечает сервер как требующий аутентификации. Исправьте учётные данные, которые возвращает ваш помощник, затем переподключитесь из `/mcp` для повторного запуска помощника.

1105 1116 

1106Claude Code устанавливает эти переменные окружения при выполнении помощника:1117Claude Code устанавливает эти переменные окружения при выполнении помощника:

1107 1118 

1108| Переменная | Значение |1119| Переменная | Значение |

1109| :- | :- |1120| :- | :- |

1110| `CLAUDE_CODE_MCP_SERVER_NAME` | имя MCP сервера |1121| `CLAUDE_CODE_MCP_SERVER_NAME` | имя MCP-сервера |

1111| `CLAUDE_CODE_MCP_SERVER_URL` | URL MCP сервера |1122| `CLAUDE_CODE_MCP_SERVER_URL` | URL MCP-сервера |

1112| `CLAUDE_PLUGIN_ROOT` | корневой каталог плагина. Установлено только когда [плагин](/docs/ru/plugins/components#mcp-servers) предоставляет сервер |1123| `CLAUDE_PLUGIN_ROOT` | корневой каталог плагина. Устанавливается, только когда [плагин](/docs/ru/plugins/components#mcp-servers) предоставляет сервер |

1113 1124 

1114Используйте их для написания одного скрипта помощника, который служит нескольким MCP серверам.1125Используйте их для написания одного скрипта помощника, который обслуживает несколько MCP-серверов.

1115 1126 

1116`headersHelper`, предоставленный плагином, не может ссылаться на значения [`${user_config.*}`](/docs/ru/plugins/manifest-reference#user-configuration) плагина, потому что команда запускается через оболочку. Claude Code сообщает о неправильной конфигурации сервера с [ошибкой](/docs/ru/errors#plugin-command-references-user-config) и не подставляет значение. Вместо этого поместите `${user_config.KEY}` в поле `headers` сервера, которое не анализируется оболочкой, или попросите скрипт помощника прочитать значение из файла конфигурации. До v2.1.207 `headersHelper` подставлял значения `${user_config.*}`.1127`headersHelper`, предоставленный плагином, не может ссылаться на значения [`${user_config.*}`](/docs/ru/plugins/manifest-reference#user-configuration) плагина, потому что команда запускается через оболочку. Claude Code сообщает о неправильной конфигурации сервера с [ошибкой](/docs/ru/errors#plugin-command-references-user-config) и не подставляет значение. Вместо этого поместите `${user_config.KEY}` в поле `headers` сервера, которое не анализируется оболочкой, или пусть скрипт помощника читает значение из файла конфигурации. До v2.1.207 `headersHelper` подставлял значения `${user_config.*}`.

1117 1128 

1118<h4 id="where-the-helper-runs">1129<h4 id="where-the-helper-runs">

1119 Где запускается помощник1130 Где запускается помощник

1120</h4>1131</h4>

1121 1132 

1122Claude Code выбирает рабочий каталог команды `headersHelper` из конфигурации, которая объявляет сервер. `cd`, который Claude запускает в Bash, не перемещает его, и [`/cd`](/docs/ru/permissions#move-the-session-to-another-directory) перемещает его только для серверов, которые запускаются из основного рабочего каталога сеанса. Каждая строка ниже дает каталог, в котором относительный путь в вашей команде `headersHelper` разрешается.1133Claude Code выбирает рабочий каталог команды `headersHelper` из конфигурации, которая объявляет сервер. `cd`, который Claude выполняет в Bash, не меняет его, а [`/cd`](/docs/ru/permissions#move-the-session-to-another-directory) меняет его только для серверов, которые запускаются из основного рабочего каталога сессии. Каждая строка ниже указывает каталог, относительно которого разрешается относительный путь в вашей команде `headersHelper`.

1123 1134 

1124| Где вы настроили сервер | Рабочий каталог |1135| Где вы настроили сервер | Рабочий каталог |

1125| :- | :- |1136| :- | :- |

1126| [Плагин](/docs/ru/plugins/components#mcp-servers) | Корневой каталог плагина |1137| [Плагин](/docs/ru/plugins/components#mcp-servers) | Корневой каталог плагина |

1127| Проект `.mcp.json` или сервер [локальной области](#local-scope) | Каталог проекта, в котором объявлен сервер |1138| Проектный `.mcp.json` или сервер [локального уровня](#local-scope) | Каталог проекта, в котором объявлен сервер |

1128| Файл агента в вашем проекте, сервер из опции `mcpServers` SDK или метода `setMcpServers()`, или [`--mcp-config`](/docs/ru/cli-reference) | [Основной рабочий каталог](/docs/ru/permissions#working-directories) сеанса |1139| Файл агента в вашем проекте, сервер из опции `mcpServers` SDK или метода `setMcpServers()`, или [`--mcp-config`](/docs/ru/cli-reference) | [Основной рабочий каталог](/docs/ru/permissions#working-directories) сессии |

1129| [Область пользователя](#user-scope), [управляемый MCP](/docs/ru/managed-mcp), [коннектор claude.ai](#use-mcp-servers-from-claude-ai) или файл агента из вне вашего проекта, включая один из каталога `--add-dir` | Ваш каталог конфигурации, `~/.claude` если вы не установили [`CLAUDE_CONFIG_DIR`](/docs/ru/env-vars) |1140| [Пользовательский уровень](#user-scope), [управляемый MCP](/docs/ru/managed-mcp), [коннектор claude.ai](#use-mcp-servers-from-claude-ai) или файл агента извне вашего проекта, включая файл из каталога `--add-dir` | Ваш каталог конфигурации, `~/.claude`, если вы не установили [`CLAUDE_CONFIG_DIR`](/docs/ru/env-vars) |

1130 1141 

1131До v2.1.238 Claude Code также запускал помощников серверов области пользователя, управляемых и коннекторов claude.ai, и файлов агентов из вне вашего проекта, из каталога, в котором вы его запустили.1142До v2.1.238 Claude Code также запускал помощников серверов пользовательского уровня, управляемых серверов и коннекторов claude.ai, а также файлов агентов извне вашего проекта из каталога, в котором вы его запустили.

1132 1143 

1133<h4 id="which-variables-a-helper-can-read">1144<h4 id="which-variables-a-helper-can-read">

1134 Какие переменные может читать помощник1145 Какие переменные может читать помощник

1135</h4>1146</h4>

1136 1147 

1137`headersHelper`, который поставляет репозиторий или плагин, — это команда, которую вы не писали, поэтому Claude Code запускает ее без переменных учетных данных из вашей среды, таких как `ANTHROPIC_API_KEY`. Место, где вы настроили сервер, определяет, применяется ли это:1148`headersHelper`, который поставляет репозиторий или плагин, — это команда, которую вы не писали, поэтому Claude Code запускает её без переменных с учётными данными из вашего окружения, таких как `ANTHROPIC_API_KEY`. Место, где вы настроили сервер, определяет, применяется ли это:

1138 1149 

1139* **Удалено**: сервер в проекте `.mcp.json` или в плагине, и встроенный сервер в файле агента из вашего проекта или из каталога `--add-dir`1150* **Удаляются**: сервер в проектном `.mcp.json` или в плагине, а также встроенный сервер в файле агента из вашего проекта или из каталога `--add-dir`

1140* **Не удалено**: сервер в [области пользователя](#user-scope) или [локальной области](#local-scope), в [управляемом MCP](/docs/ru/managed-mcp), из [коннектора claude.ai](#use-mcp-servers-from-claude-ai), или предоставленный SDK или [`--mcp-config`](/docs/ru/cli-reference), и встроенный сервер в файле агента из `~/.claude/agents/`, из управляемых настроек или переданный с `--agents`1151* **Не удаляются**: сервер на [пользовательском](#user-scope) или [локальном уровне](#local-scope), в [управляемом MCP](/docs/ru/managed-mcp), из [коннектора claude.ai](#use-mcp-servers-from-claude-ai) или предоставленный SDK или [`--mcp-config`](/docs/ru/cli-reference), а также встроенный сервер в файле агента из `~/.claude/agents/`, из управляемых настроек или переданный с `--agents`

1141 1152 

1142Помимо переменных `GIT_CONFIG_KEY_<n>` Git, Claude Code удаляет каждую переменную из вашей среды, чье имя выглядит как учетное данное, такое как имя с `TOKEN`, `SECRET`, `PASSWORD`, `KEY` или `AUTH` в нем в любом регистре, поэтому `ANTHROPIC_API_KEY` и `MY_REGISTRY_TOKEN` оба удаляются. Claude Code также удаляет фиксированный список переменных учетных данных, чьи имена не следуют этому шаблону, такие как `ANTHROPIC_CUSTOM_HEADERS`.1153За исключением переменных Git `GIT_CONFIG_KEY_<n>`, Claude Code удаляет из вашего окружения каждую переменную, имя которой похоже на учётные данные, например имя, содержащее `TOKEN`, `SECRET`, `PASSWORD`, `KEY` или `AUTH` в любом регистре, поэтому и `ANTHROPIC_API_KEY`, и `MY_REGISTRY_TOKEN` удаляются. Claude Code также удаляет фиксированный список переменных с учётными данными, имена которых не следуют этому шаблону, например `ANTHROPIC_CUSTOM_HEADERS`.

1143 1154 

1144Если это относится к вашему помощнику, пусть скрипт читает учётные данные из файла или хранилища учётных данных. Если `url` сервера [содержит фактическое значение одной из этих переменных](#environment-variable-expansion-in-mcp-json), например `MY_REGISTRY_TOKEN`, то в значении `CLAUDE_CODE_MCP_SERVER_URL`, которое получает помощник, эта часть также заменяется на `REDACTED`.1155Если это относится к вашему помощнику, пусть скрипт читает учётные данные из файла или хранилища учётных данных. Если `url` сервера [содержит фактическое значение одной из этих переменных](#environment-variable-expansion-in-mcp-json), например `MY_REGISTRY_TOKEN`, то в значении `CLAUDE_CODE_MCP_SERVER_URL`, которое получает помощник, эта часть также заменяется на `REDACTED`.

1145 1156 

1146<h4 id="trust-a-folder-before-its-headershelper-runs">1157<h4 id="trust-a-folder-before-its-headershelper-runs">

1147 Доверьте папку перед запуском ее headersHelper1158 Доверьтесь папке перед запуском её headersHelper

1148</h4>1159</h4>

1149 1160 

1150Claude Code выполняет `headersHelper` как произвольную команду оболочки. Для сервера в проекте `.mcp.json` или в [локальной области](#local-scope), он запускает помощника только после того, как вы примете [диалог доверия](/docs/ru/permissions#project-allow-rules-and-workspace-trust) для каталога проекта, в котором объявлен сервер. До v2.1.238 сеанс `claude -p` или SDK запускал этих помощников без проверки доверия, и интерактивный сеанс запускал их после того, как вы доверили родительской папке.1161Claude Code выполняет `headersHelper` как произвольную shell-команду. Для сервера в проектном `.mcp.json` или на [локальном уровне](#local-scope) он запускает помощника только после того, как вы примете [диалог доверия](/docs/ru/permissions#project-allow-rules-and-workspace-trust) для каталога проекта, в котором объявлен сервер. До v2.1.238 сессия `claude -p` или SDK запускала этих помощников без проверки доверия, а интерактивная сессия запускала их, как только вы доверились родительской папке.

1151 1162 

1152* **Доверие, которое не считается**: доверие родительской папки и автоматическое доверие, которое получает сеанс `claude -p` или SDK для [хуков в файлах настроек](/docs/ru/permissions#what-runs-before-you-trust-a-folder)1163* **Доверие, которое не учитывается**: доверие родительской папке и автоматическое доверие, которое сессия `claude -p` или SDK получает для [хуков в файлах настроек](/docs/ru/permissions#what-runs-before-you-trust-a-folder)

1153* **До тех пор, пока вы не доверите папке**: Claude Code подключает сервер только с его статическими `headers`. В сеансе `claude -p` или SDK он также выводит одну строку [`headersHelper not run`](/docs/ru/errors#headershelper-not-run) на stderr, сообщая вам, как предоставить доверие.1164* **Пока вы не доверитесь папке**: Claude Code подключает сервер только с его статическими `headers`. В сессии `claude -p` или SDK он также выводит в stderr по одной строке [`headersHelper not run`](/docs/ru/errors#headershelper-not-run) на каждый сервер, сообщая, как предоставить доверие.

1154* **Доверие без диалога**: установите `projects["<path>"].hasTrustDialogAccepted` на `true` в `~/.claude.json`. `<path>` — это папка, на которую Claude Code ключает доверие согласно [Project allow rules and workspace trust](/docs/ru/permissions#project-allow-rules-and-workspace-trust).1165* **Доверие без диалога**: установите `projects["<path>"].hasTrustDialogAccepted` в `true` в `~/.claude.json`. `<path>` — это папка, к которой, согласно разделу [Правила разрешения проекта и доверие к рабочему пространству](/docs/ru/permissions#project-allow-rules-and-workspace-trust), Claude Code привязывает доверие.

1155 1166 

1156Claude Code применяет то же правило к серверу, объявленному встроенным в [файл агента](/docs/ru/sub-agents#scope-mcp-servers-to-a-subagent), проверяя, откуда этот файл агента пришел: ваш проект, для файла в его каталоге `.claude/agents/`, или каталог `--add-dir`. До тех пор, пока вы не [доверите этому проекту или каталогу самому](/docs/ru/permissions#what-runs-before-you-trust-a-folder), Claude Code не загружает сервер вообще, поэтому его помощник никогда не запускается.1167Claude Code применяет то же правило к серверу, объявленному встроенным в [файл агента](/docs/ru/sub-agents#scope-mcp-servers-to-a-subagent), проверяя, откуда взят этот файл агента: из вашего проекта, для файла в его каталоге `.claude/agents/`, или из каталога `--add-dir`. Пока вы не [доверитесь самому этому проекту или каталогу](/docs/ru/permissions#what-runs-before-you-trust-a-folder), Claude Code вообще не загружает сервер, поэтому его помощник тоже никогда не запускается.

1157 1168 

1158<h2 id="add-mcp-servers-from-json-configuration">1169<h2 id="add-mcp-servers-from-json-configuration">

1159 Добавьте MCP servers из конфигурации JSON1170 Добавьте MCP servers из конфигурации JSON


1218 </Step>1229 </Step>

1219</Steps>1230</Steps>

1220 1231 

1221Имена servers, добавленные через команды `claude mcp`, могут содержать только буквы, цифры, дефисы и подчеркивания. Claude Desktop не применяет это ограничение, поэтому server Claude Desktop, имя которого содержит любой другой символ, например пробел, не может быть импортирован. Импорт сообщает о каждом отклоненном имени и все еще импортирует другие выбранные вами servers. До версии 2.1.205 первое недопустимое имя останавливало импорт и ни один из выбранных servers не был добавлен.1232Имена серверов, добавленных через команды `claude mcp`, могут содержать только буквы, цифры, дефисы и подчеркивания. Claude Desktop не применяет это ограничение, поэтому сервер Claude Desktop, имя которого содержит любой другой символ, например пробел, не может быть импортирован. Импорт сообщает о каждом отклоненном имени и все равно импортирует другие выбранные вами серверы.

1222 1233 

1223<Tip>1234<Tip>

1224 Советы:1235 Советы:


1337Чтобы заблокировать отдельные connectors claude.ai вместо всех них, добавьте их в [`deniedMcpServers`](/docs/ru/managed-mcp) по имени или по шаблону URL. Например, запись `serverName` из `"claude.ai Slack"` блокирует connector Slack. Вы также можете запустить `/mcp`, чтобы переключить любой connector, который Claude Code загружает, включить или отключить только для текущего проекта.1348Чтобы заблокировать отдельные connectors claude.ai вместо всех них, добавьте их в [`deniedMcpServers`](/docs/ru/managed-mcp) по имени или по шаблону URL. Например, запись `serverName` из `"claude.ai Slack"` блокирует connector Slack. Вы также можете запустить `/mcp`, чтобы переключить любой connector, который Claude Code загружает, включить или отключить только для текущего проекта.

1338 1349 

1339<h2 id="use-claude-code-as-an-mcp-server">1350<h2 id="use-claude-code-as-an-mcp-server">

1340 Использование Claude Code в качестве MCP сервера1351 Использование Claude Code в качестве MCP-сервера

1341</h2>1352</h2>

1342 1353 

1343Вы можете использовать Claude Code в качестве MCP сервера, к которому могут подключаться другие приложения:1354Вы можете использовать Claude Code в качестве MCP-сервера, к которому могут подключаться другие приложения:

1344 1355 

1345```bash theme={null}1356```bash theme={null}

1346# Запустить Claude как stdio MCP сервер1357# Start Claude as a stdio MCP server

1347claude mcp serve1358claude mcp serve

1348```1359```

1349 1360 

1350Команда ничего не выводит при запуске. Stdio MCP сервер взаимодействует через stdin и stdout, поэтому молчаливый, заблокированный терминал означает, что сервер работает и ожидает подключения клиента.1361Команда ничего не выводит при запуске. Stdio MCP-сервер взаимодействует через stdin и stdout, поэтому молчаливый, заблокированный терминал означает, что сервер работает и ожидает подключения клиента.

1351 1362 

1352Вы можете использовать это в Claude Desktop, добавив эту конфигурацию в claude\_desktop\_config.json:1363Вы можете использовать это в Claude Desktop, добавив эту конфигурацию в claude\_desktop\_config.json:

1353 1364 


1395 Советы:1406 Советы:

1396 1407 

1397 * В Claude Desktop попробуйте попросить Claude прочитать файлы в каталоге, внести изменения и многое другое.1408 * В Claude Desktop попробуйте попросить Claude прочитать файлы в каталоге, внести изменения и многое другое.

1398 * Этот MCP сервер предоставляет только инструменты Claude Code вашему MCP клиенту, поэтому ваш собственный клиент отвечает за реализацию подтверждения пользователя для отдельных вызовов инструментов.1409 * Этот MCP-сервер предоставляет только инструменты Claude Code вашему MCP-клиенту, поэтому ваш собственный клиент отвечает за реализацию подтверждения пользователя для отдельных вызовов инструментов.

1399</Tip>1410</Tip>

1400 1411 

1412Если JSON-текст в результате вызова инструмента Bash или PowerShell содержит поле `backgroundOutputPath`, значит, вызов оставил свою команду выполняться [в фоновом режиме](/docs/ru/tools-reference#background-commands), например когда в вызове было задано `run_in_background: true` или команда достигла таймаута. Это поле содержит путь к файлу вывода команды. Ваш клиент никак не уведомляется о завершении команды, и при её завершении в файл не добавляется заключительная строка, поэтому при чтении файла вы видите вывод, записанный на данный момент. Чтобы определить завершение, добавьте к команде маркер, например `npm test; echo DONE`, и ищите его в файле. Для поля `backgroundOutputPath` требуется Claude Code v2.1.295 или новее.

1413 

1401<h2 id="mcp-output-limits-and-warnings">1414<h2 id="mcp-output-limits-and-warnings">

1402 Ограничения и предупреждения выходных данных MCP1415 Ограничения и предупреждения выходных данных MCP

1403</h2>1416</h2>


1409* **Лимит по умолчанию**: максимум по умолчанию составляет 25 000 токенов1422* **Лимит по умолчанию**: максимум по умолчанию составляет 25 000 токенов

1410* **Область действия**: переменная окружения применяется к инструментам, которые не объявляют свой собственный лимит. Инструменты, которые устанавливают [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool), используют это значение вместо этого для текстового содержимого, независимо от того, какое значение установлено для `MAX_MCP_OUTPUT_TOKENS`. Инструменты, которые возвращают данные изображений, по-прежнему подчиняются `MAX_MCP_OUTPUT_TOKENS`1423* **Область действия**: переменная окружения применяется к инструментам, которые не объявляют свой собственный лимит. Инструменты, которые устанавливают [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool), используют это значение вместо этого для текстового содержимого, независимо от того, какое значение установлено для `MAX_MCP_OUTPUT_TOKENS`. Инструменты, которые возвращают данные изображений, по-прежнему подчиняются `MAX_MCP_OUTPUT_TOKENS`

1411* **Превышение лимита**: когда успешный результат без содержимого изображения превышает лимит токенов, Claude Code сохраняет его в файл и заменяет его в диалоге сообщением, которое указывает путь к файлу, чтобы Claude прочитал файл, когда ему нужно содержимое. Файл находится в директории `tool-results` сессии в [`~/.claude/projects/`](/docs/ru/claude-directory#cleaned-up-automatically).1424* **Превышение лимита**: когда успешный результат без содержимого изображения превышает лимит токенов, Claude Code сохраняет его в файл и заменяет его в диалоге сообщением, которое указывает путь к файлу, чтобы Claude прочитал файл, когда ему нужно содержимое. Файл находится в директории `tool-results` сессии в [`~/.claude/projects/`](/docs/ru/claude-directory#cleaned-up-automatically).

1412* **Размер ответа от серверов HTTP и SSE**: Claude Code прекращает чтение ответа от сервера [HTTP](#option-1-add-a-remote-http-server) или [SSE](#option-2-add-a-remote-sse-server), как только одно тело ответа JSON или одно событие потока событий превышает 16 МБ после распаковки. Запрос, на который отвечает этот ответ, завершается с ошибкой. Если вы поддерживаете сервер, возвращайте меньше данных в каждом ответе, чтобы оставаться в пределах лимита, например используя постраничную выдачу результатов1425* **Размер ответа от серверов HTTP и SSE**: когда ответ от сервера [HTTP](#option-1-add-a-remote-http-server) или [SSE](#option-2-add-a-remote-sse-server) превышает 16 МиБ, Claude Code прекращает его чтение, и запрос завершается с ошибкой. Лимит применяется после распаковки к одному телу ответа JSON или одному событию потока событий. Если вы поддерживаете сервер, возвращайте меньше данных в каждом ответе, чтобы оставаться в пределах лимита, например используя постраничную выдачу результатов

1426* **Размер сообщения от серверов WebSocket**: когда сервер [WebSocket](#option-4-add-a-remote-websocket-server) отправляет одно сообщение размером более 16 МиБ, Claude Code [закрывает соединение](#mid-session-drops-of-a-remote-server), и выполняющиеся вызовы к этому серверу завершаются с ошибкой. Если вы поддерживаете сервер, возвращайте меньше данных в каждом сообщении, чтобы оставаться в пределах лимита

1413 1427 

1414Вызов, который Claude Code [перевел в фоновую задачу](#automatic-backgrounding-of-long-tool-calls), сообщает свой результат через уведомление задачи. К вызову, который завершается на переднем плане, применяются еще два ограничения:1428Вызов, который Claude Code [перевел в фоновую задачу](#automatic-backgrounding-of-long-tool-calls), сообщает свой результат через уведомление задачи. К вызову, который завершается на переднем плане, применяются еще два ограничения:

1415 1429 


1483 1497 

1484[Обработка комбинатора корневого уровня](#tool-input-schemas-with-a-root-level-combinator) отделена и сохраняет свое собственное поведение, когда получение флагов отключено или флаги никогда не поступали.1498[Обработка комбинатора корневого уровня](#tool-input-schemas-with-a-root-level-combinator) отделена и сохраняет свое собственное поведение, когда получение флагов отключено или флаги никогда не поступали.

1485 1499 

1500<h2 id="tools-with-names-longer-than-128-characters">

1501 Инструменты с именами длиннее 128 символов

1502</h2>

1503 

1504Если `/mcp` показывает инструмент, который Claude не может вызвать, проверьте, не превышает ли полное имя инструмента 128 символов. Выполните `/mcp` в своей сессии и выберите инструмент, чтобы увидеть его полное имя, например `mcp__<server>__<tool>`. Claude Code не включает инструмент MCP в список инструментов, отправляемых Claude, если его полное имя длиннее 128 символов. Claude API отклоняет запрос, содержащий такой инструмент, поэтому исключение этого инструмента позволяет остальным инструментам сервера продолжать работать.

1505 

1506Сообщение, в котором указывается этот инструмент, и способы сократить его полное имя описаны в разделе [Имя инструмента MCP длиннее 128 символов](/docs/ru/errors#mcp-tool-name-over-128-characters).

1507 

1486<h2 id="require-approval-for-a-specific-tool">1508<h2 id="require-approval-for-a-specific-tool">

1487 Требование подтверждения для конкретного инструмента1509 Требование подтверждения для конкретного инструмента

1488</h2>1510</h2>


1601* Когда Claude должен искать ваши инструменты1623* Когда Claude должен искать ваши инструменты

1602* Ключевые возможности, которые предоставляет ваш сервер1624* Ключевые возможности, которые предоставляет ваш сервер

1603 1625 

1604По умолчанию Claude Code усекает описание каждого инструмента и инструкции каждого сервера до 2 048 символов. Держите их в краткой форме и помещайте критические детали в начало.1626Claude Code обрезает описание инструмента или инструкции сервера, превышающие эти лимиты по умолчанию, и Claude видит только текст до места обрезки:

1627 

1628* **Инструкции сервера и описание инструмента, загружаемого заранее**: 4 096 символов

1629* **Описание инструмента, который Claude загружает через поиск инструментов**: 16 384 символа

1630 

1631Держите описания и инструкции краткими и помещайте критические детали в начало. Когда поиск инструментов сопоставляет поисковый запрос Claude с описанием инструмента, он читает только часть в пределах более короткого лимита, поэтому слова, по которым Claude будет искать, тоже помещайте в начало. Инструмент загружается заранее и сохраняет более короткий лимит всякий раз, когда он не отложен, например когда [поиск инструментов отключён](#configure-tool-search), когда инструмент [помечен для загрузки заранее](#per-tool-alwaysload) или когда его сервер [исключён из отложения](#exempt-a-server-from-deferral).

1632 

1633До v2.1.296 более короткий лимит составлял 2 048 символов, а до v2.1.295 он применялся к описанию каждого инструмента, включая загружаемые через поиск инструментов.

1605 1634 

1606Чтобы изменить лимит для каждого сервера MCP в вашей сессии, установите [`CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`](/docs/ru/env-vars#variables) на количество символов. Эта переменная требует Claude Code v2.1.280 или позже.1635Чтобы изменить лимиты для каждого сервера MCP в вашей сессии, установите [`CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`](/docs/ru/env-vars#variables) на количество символов. Заданное число заменяет оба лимита: например, `8192` повышает более короткий лимит и понижает более длинный. Эта переменная требует Claude Code v2.1.280 или позже.

1607 1636 

1608<h4 id="per-tool-alwaysload">1637<h4 id="per-tool-alwaysload">

1609 Пометка инструмента для загрузки заранее или отложенной загрузки1638 Пометка инструмента для загрузки заранее или отложенной загрузки


1634 1663 

1635Поиск инструментов включён по умолчанию: инструменты MCP отложены и обнаруживаются по требованию. Claude Code отключает его, когда `ANTHROPIC_BASE_URL` указывает на хост, не принадлежащий первой стороне, так как большинство прокси не пересылают блоки `tool_reference`. Установите `ENABLE_TOOL_SEARCH` явно, чтобы переопределить этот резервный вариант.1664Поиск инструментов включён по умолчанию: инструменты MCP отложены и обнаруживаются по требованию. Claude Code отключает его, когда `ANTHROPIC_BASE_URL` указывает на хост, не принадлежащий первой стороне, так как большинство прокси не пересылают блоки `tool_reference`. Установите `ENABLE_TOOL_SEARCH` явно, чтобы переопределить этот резервный вариант.

1636 1665 

1637Установка [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/ru/env-vars) отключает поиск инструментов. Вы не можете переопределить это, установив `ENABLE_TOOL_SEARCH` самостоятельно. Ваша организация может оставить поиск инструментов включённым через [управляемые настройки](/docs/ru/managed-settings), на Claude Code v2.1.227 или позже. [Отключение предварительных возможностей](/docs/ru/llm-gateway-protocol#disable-pre-release-capabilities) охватывает, где применяется переопределение и что переменная удаляет.1666Установка [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/ru/env-vars) отключает поиск инструментов. Вы не можете переопределить это, установив `ENABLE_TOOL_SEARCH` самостоятельно. На Claude Code v2.1.227 или позже ваша организация может оставить поиск инструментов включённым при этой переменной через [управляемые настройки](/docs/ru/managed-settings). В сессии, которая [получает конфигурацию HIPAA](/docs/ru/hipaa-setup#check-how-developers-sign-in-and-connect), поиск инструментов отключён, и ни `ENABLE_TOOL_SEARCH`, ни управляемые настройки не включают его снова. [Отключение предварительных возможностей](/docs/ru/llm-gateway-protocol#disable-pre-release-capabilities) охватывает, где применяется переопределение и что переменная удаляет.

1638 1667 

1639Поиск инструментов требует модель, которая поддерживает блоки `tool_reference`: Claude Sonnet 4.5, Claude Haiku 4.5, Claude Opus 4.5 и более поздние модели. См. [совместимость моделей в документации API](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool#model-compatibility) для получения текущего списка.1668Claude Code использует поиск инструментов на Claude Opus 4, Claude Sonnet 4, Claude Haiku 4.5 и более поздних моделях или на Opus 4.5, Sonnet 4.5, Haiku 4.5 и более поздних моделях на Agent Platform Google Cloud. На более ранних моделях Claude Code загружает все инструменты MCP заранее, и `ENABLE_TOOL_SEARCH=true` не переопределяет это.

1640 1669 

1641На Agent Platform Google Cloud Claude Code решает по поколению модели:1670На Agent Platform Google Cloud Claude Code решает по поколению модели:

1642 1671 


1649 1678 

1650| Значение | Поведение |1679| Значение | Поведение |

1651| :- | :- |1680| :- | :- |

1652| (не установлено) | Все инструменты MCP отложены и загружаются по требованию. Переключается на загрузку заранее на моделях Agent Platform Google Cloud более ранних, чем поколение Claude 4.5, когда `ANTHROPIC_BASE_URL` является хостом, не принадлежащим первой стороне, или на развёртывании Microsoft Foundry, размещённом на Azure |1681| (не установлено) | Все инструменты MCP отложены и загружаются по требованию. Переключается на загрузку заранее на моделях более ранних, чем Opus 4 и Sonnet 4, на моделях Agent Platform Google Cloud более ранних, чем Opus 4.5, Sonnet 4.5 и Haiku 4.5, когда `ANTHROPIC_BASE_URL` является хостом, не принадлежащим первой стороне, или на развёртывании Microsoft Foundry, размещённом на Azure |

1653| `true` | Все инструменты MCP отложены, кроме развёртывания Microsoft Foundry, размещённого на Azure, где отклонение на стороне сервера всё ещё вынуждает загрузку заранее, и моделей Agent Platform Google Cloud более ранних, чем поколение Claude 4.5, где Claude Code продолжает загружать инструменты заранее. Claude Code отправляет заголовок бета-версии через прокси, и запросы не выполняются на прокси, которые не поддерживают блоки `tool_reference` |1682| `true` | Инструменты MCP остаются отложенными, когда `ANTHROPIC_BASE_URL` является хостом, не принадлежащим первой стороне. Остальные резервные варианты (не установлено) по-прежнему применяются. Claude Code отправляет заголовок бета-версии через прокси, и запросы не выполняются на прокси, которые не поддерживают блоки `tool_reference` |

1654| `auto` | Режим порога: Claude Code загружает инструменты, которые он иначе отложил бы, заранее, пока их определения составляют менее 10% контекстного окна, и откладывает все из них, как только определения достигнут 10% |1683| `auto` | Режим порога: Claude Code загружает инструменты, которые он иначе отложил бы, заранее, пока их определения составляют менее 10% контекстного окна, и откладывает все из них, как только определения достигнут 10% |

1655| `auto:N` | Режим порога с пользовательским процентом, где `N` — это 0-100. Например, `auto:5` для 5% |1684| `auto:N` | Режим порога с пользовательским процентом, где `N` — это 0-100. Например, `auto:5` для 5% |

1656| `false` | Все инструменты MCP загружены заранее, без отложения |1685| `false` | Все инструменты MCP загружены заранее, без отложения |

memory.md +3 −3

Details

258 258 

259Claude Code использует любой шаблон, который превысит бюджет неразвёрнутым, и его буквальные скобки не совпадают ни с какими файлами. До v2.1.217 значение `paths` со многими группами скобок зависало или вызывало сбой CLI при запуске.259Claude Code использует любой шаблон, который превысит бюджет неразвёрнутым, и его буквальные скобки не совпадают ни с какими файлами. До v2.1.217 значение `paths` со многими группами скобок зависало или вызывало сбой CLI при запуске.

260 260 

261Синтаксис Glob рассматривает `[` как начало выражения скобок, такого как `[abc]`. Шаблон с `[`, который не может быть прочитан как выражение скобок, такой как `photos [2024/**`, является недействительным: он не совпадает ни с какими файлами, и другие шаблоны правила продолжают работать. Чтобы совпадать с буквальным `[` в имени файла, экранируйте его как `photos \[2024/**`. До v2.1.207 один недействительный шаблон заставлял инструмент Read не работать для каждого файла, для которого оценивалось правило, вместо того чтобы не совпадать ни с чем.261Синтаксис Glob рассматривает `[` как начало выражения скобок, такого как `[abc]`. Шаблон с `[`, который не может быть прочитан как выражение скобок, такой как `photos [2024/**`, является недействительным: он не совпадает ни с какими файлами, и другие шаблоны правила продолжают работать. Чтобы совпадать с буквальным `[` в имени файла, экранируйте его как `photos \[2024/**`.

262 262 

263<h4 id="rules-frontmatter-reference">263<h4 id="rules-frontmatter-reference">

264 Справочник frontmatter правил264 Справочник frontmatter правил


413 413 

414* **При запуске сеанса**: каждый `AGENTS.md` и `.claude/AGENTS.md` в вашем рабочем каталоге и в каталогах выше него. В интерактивном сеансе вы видите строку, например `no CLAUDE.md found; AGENTS.md loaded: /home/you/repo/AGENTS.md` в разговоре414* **При запуске сеанса**: каждый `AGENTS.md` и `.claude/AGENTS.md` в вашем рабочем каталоге и в каталогах выше него. В интерактивном сеансе вы видите строку, например `no CLAUDE.md found; AGENTS.md loaded: /home/you/repo/AGENTS.md` в разговоре

415* **Когда Claude работает в подкаталогах**: `AGENTS.md` подкаталога, когда Claude открывает файл там с помощью инструмента Read и в этом подкаталоге нет ни одного из трёх файлов `CLAUDE.md`415* **Когда Claude работает в подкаталогах**: `AGENTS.md` подкаталога, когда Claude открывает файл там с помощью инструмента Read и в этом подкаталоге нет ни одного из трёх файлов `CLAUDE.md`

416* **Внутри каждого `AGENTS.md`**: импорты [`@path`](#import-additional-files) расширяются, применяются паттерны [`claudeMdExcludes`](#exclude-specific-claude-md-files) и подагенты, которые [пропускают инструкции проекта](/docs/ru/sub-agents#what-loads-at-startup), пропускают эти файлы тоже416* **Внутри каждого `AGENTS.md`**: [импорты `@path`](#import-additional-files) раскрываются, применяются паттерны [`claudeMdExcludes`](#exclude-specific-claude-md-files), а субагенты, которые [запускаются без инструкций проекта](/docs/ru/sub-agents#what-loads-at-startup), запускаются и без этих файлов

417* **Не читаются**: `AGENTS.local.md`, `AGENTS.override.md` или что-либо в каталоге `.agents/`417* **Не читаются**: `AGENTS.local.md`, `AGENTS.override.md` или что-либо в каталоге `.agents/`

418 418 

419<Note>419<Note>


692 692 

693Если один из ваших файлов инструкций превышает рекомендуемую длину, вы видите предупреждение при запуске и когда запускаете `/status`. Вы также видите предупреждение, когда файлы, каждый из которых находится в пределах этой длины, в сумме превышают объединённый лимит при запуске сеанса. Каждый CLAUDE.md, файл правил и `@path` импорт считаются отдельным файлом.693Если один из ваших файлов инструкций превышает рекомендуемую длину, вы видите предупреждение при запуске и когда запускаете `/status`. Вы также видите предупреждение, когда файлы, каждый из которых находится в пределах этой длины, в сумме превышают объединённый лимит при запуске сеанса. Каждый CLAUDE.md, файл правил и `@path` импорт считаются отдельным файлом.

694 694 

695Проверка [`/doctor`](/docs/ru/commands#all-commands) предлагает сокращения для проверенного CLAUDE.md: она удаляет содержимое, которое Claude может вывести из кодовой базы, такое как макеты каталогов, списки зависимостей и обзоры архитектуры, и сохраняет подводные камни, обоснование и соглашения, которые отличаются от стандартных инструментов. Проверка сокращения требует Claude Code v2.1.206 или более поздней версии.695Проверка [`/doctor`](/docs/ru/commands#all-commands) предлагает сокращения для зафиксированного в репозитории CLAUDE.md: она удаляет содержимое, которое Claude может вывести из кодовой базы, такое как макеты каталогов, списки зависимостей и обзоры архитектуры, и сохраняет подводные камни, обоснование и соглашения, которые отличаются от стандартных настроек инструментов.

696 696 

697<h3 id="instructions-seem-lost-after-/compact">697<h3 id="instructions-seem-lost-after-/compact">

698 Инструкции кажутся потерянными после `/compact`698 Инструкции кажутся потерянными после `/compact`

Details

160 Использование Bearer-токена160 Использование Bearer-токена

161</h4>161</h4>

162 162 

163Claude Code отправляет значение `ANTHROPIC_FOUNDRY_AUTH_TOKEN` в каждом запросе в качестве заголовка `Authorization: Bearer`. Используйте этот вариант, когда другой процесс, такой как хост-приложение или скрипт входа, уже получил для вас токен доступа. Требуется Claude Code версии 2.1.203 или позже.163Claude Code отправляет значение `ANTHROPIC_FOUNDRY_AUTH_TOKEN` в каждом запросе в качестве заголовка `Authorization: Bearer`. Используйте этот вариант, когда другой процесс, такой как хост-приложение или скрипт входа, уже получил для вас токен доступа.

164 164 

165Установите переменную на токен Bearer, выданный Microsoft Entra ID для вашего ресурса:165Установите переменную на токен Bearer, выданный Microsoft Entra ID для вашего ресурса:

166 166 

model-config.md +3 −0

Details

867* **Для всех моделей**: задайте [`autoCompactWindow`](/docs/ru/settings-reference#autocompactwindow) в файле настроек, например `"autoCompactWindow": 200000` в `~/.claude/settings.json`. Окно, сохранённое для модели с помощью `/autocompact`, имеет приоритет над этим ключом в том же файле для этой модели.867* **Для всех моделей**: задайте [`autoCompactWindow`](/docs/ru/settings-reference#autocompactwindow) в файле настроек, например `"autoCompactWindow": 200000` в `~/.claude/settings.json`. Окно, сохранённое для модели с помощью `/autocompact`, имеет приоритет над этим ключом в том же файле для этой модели.

868* **Для одного запуска**: передайте [`--autocompact`](/docs/ru/cli-reference#cli-flags) при запуске Claude Code. Флаг переопределяет вашу сохранённую настройку для этого запуска, не изменяя её, а `claude --autocompact auto` запускает сессию с оптимизированным окном, даже если в вашей сохранённой настройке задано значение. В отличие от `/autocompact`, флаг не вытесняется областью действия настроек с более высоким приоритетом, например управляемыми настройками.868* **Для одного запуска**: передайте [`--autocompact`](/docs/ru/cli-reference#cli-flags) при запуске Claude Code. Флаг переопределяет вашу сохранённую настройку для этого запуска, не изменяя её, а `claude --autocompact auto` запускает сессию с оптимизированным окном, даже если в вашей сохранённой настройке задано значение. В отличие от `/autocompact`, флаг не вытесняется областью действия настроек с более высоким приоритетом, например управляемыми настройками.

869* **В скриптах и облачных окружениях**: задайте [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/ru/env-vars). Пока эта переменная задана, она имеет приоритет над командой, флагом и настройкой, а `/autocompact` сообщает о переопределении вместо изменения окна.869* **В скриптах и облачных окружениях**: задайте [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/ru/env-vars). Пока эта переменная задана, она имеет приоритет над командой, флагом и настройкой, а `/autocompact` сообщает о переопределении вместо изменения окна.

870* **Для одного субагента**: см. [Установка окна автосжатия для одного субагента](/docs/ru/sub-agents#subagent-auto-compact-window).

870 871 

871Команда и флаг принимают размер окна от 100K до 1M токенов в любой из следующих форм:872Команда и флаг принимают размер окна от 100K до 1M токенов в любой из следующих форм:

872 873 


888* Модели, работающие с собственным окном 1M, выполняют сжатие контекста до заполнения окна, по умолчанию примерно на 967K токенов. К ним относятся модели Fable, Sonnet 5 и более поздние версии, Haiku 5.5, а также Opus 4.7 и более поздние версии. При использовании пользовательского `ANTHROPIC_BASE_URL` см. раздел [контекстное окно за шлюзом](#context-window-behind-a-gateway)889* Модели, работающие с собственным окном 1M, выполняют сжатие контекста до заполнения окна, по умолчанию примерно на 967K токенов. К ним относятся модели Fable, Sonnet 5 и более поздние версии, Haiku 5.5, а также Opus 4.7 и более поздние версии. При использовании пользовательского `ANTHROPIC_BASE_URL` см. раздел [контекстное окно за шлюзом](#context-window-behind-a-gateway)

889* Сессии с ID модели, который Claude Code не распознаёт, например псевдонимом [LLM-шлюза](/docs/ru/llm-gateway), выполняют сжатие контекста при контекстном окне, которое Claude Code предполагает для этого ID; см. [Исправление окна для шлюза или пользовательского ID модели](#correct-the-window-for-a-gateway-or-custom-model-id)890* Сессии с ID модели, который Claude Code не распознаёт, например псевдонимом [LLM-шлюза](/docs/ru/llm-gateway), выполняют сжатие контекста при контекстном окне, которое Claude Code предполагает для этого ID; см. [Исправление окна для шлюза или пользовательского ID модели](#correct-the-window-for-a-gateway-or-custom-model-id)

890 891 

892О том, когда Claude Code также выполняет сжатие контекста диалога, оставленного без активности, см. настройку [`idleCompaction`](/docs/ru/settings-reference#idlecompaction).

893 

891<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">894<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">

892 Исправление окна для шлюза или пользовательского ID модели895 Исправление окна для шлюза или пользовательского ID модели

893</h3>896</h3>

Details

635 События, которые Claude Code записывает в лог до входа разработчика, не содержат идентичность шлюза. Когда Claude Code открывает сессию без входа в шлюз, например после того как [шлюз завершил сеанс входа](/docs/ru/errors#cloud-gateway-session-expired), события запуска, записанные до входа, содержат анонимный `user.id` и не содержат `identity.source`. К ним относятся [`managed_settings_resolved`](#managed-settings-resolved-event), [`plugin_loaded`](#plugin-loaded-event) и [`mcp_server_connection`](#mcp-server-connection-event).635 События, которые Claude Code записывает в лог до входа разработчика, не содержат идентичность шлюза. Когда Claude Code открывает сессию без входа в шлюз, например после того как [шлюз завершил сеанс входа](/docs/ru/errors#cloud-gateway-session-expired), события запуска, записанные до входа, содержат анонимный `user.id` и не содержат `identity.source`. К ним относятся [`managed_settings_resolved`](#managed-settings-resolved-event), [`plugin_loaded`](#plugin-loaded-event) и [`mcp_server_connection`](#mcp-server-connection-event).

636</Note>636</Note>

637 637 

638Для атрибутов идентификации в сеансах Claude Desktop и Cowork, которые подключаются через шлюз, см. [справочник по телеметрии шлюза](/docs/ru/claude-apps-gateway-config#telemetry).638Атрибуты идентичности для сессий Claude Desktop и Cowork, подключающихся через шлюз, описаны в [справочнике по `telemetry` шлюза](/docs/ru/claude-apps-gateway-config#telemetry).

639 639 

640События дополнительно включают следующие атрибуты. Они никогда не прикрепляются к метрикам, так как это вызовет неограниченную кардинальность:640События дополнительно включают следующие атрибуты. Они никогда не прикрепляются к метрикам, так как это вызовет неограниченную кардинальность:

641 641 

642* `prompt.id`: UUID, коррелирующий пользовательский запрос со всеми последующими событиями до следующего запроса. См. [Атрибуты корреляции событий](#event-correlation-attributes).642* `prompt.id`: UUID, коррелирующий пользовательский запрос со всеми последующими событиями до следующего запроса. См. [Атрибуты корреляции событий](#event-correlation-attributes).

643* `workspace.host_paths`: каталоги рабочей области хоста, выбранные в приложении для рабочего стола, как массив строк643* `workspace.host_paths`: каталоги рабочей области хоста, выбранные в приложении для рабочего стола, как массив строк

644* `workflow.run_id`: идентификатор запуска, с префиксом `wf_`, в API и событиях инструментов, выпущенных агентами, которые принадлежат запуску инструмента [Workflow](/docs/ru/workflows). Фильтрация событий по одному `workflow.run_id` восстанавливает запросы API и результаты инструментов этого запуска. Идентификатор охватывает агентов, которых порождает скрипт рабочего процесса, и любых агентов, которых они порождают в свою очередь, например вызовы навыков. Он совпадает с идентификатором запуска, указанным в результате инструмента Workflow. Отсутствует во всех остальных событиях. Требуется Claude Code v2.1.202 или позже644* `workflow.run_id`: идентификатор запуска с префиксом `wf_` в событиях API и инструментов, генерируемых агентами, которые относятся к запуску инструмента [Workflow](/docs/ru/workflows). Фильтрация событий по одному `workflow.run_id` позволяет восстановить API-запросы и результаты инструментов этого запуска. Идентификатор охватывает агентов, которых порождает скрипт workflow, а также любых агентов, порождённых ими, например вызовы скиллов. Он совпадает с идентификатором запуска, указанным в результате инструмента Workflow. Отсутствует во всех остальных событиях.

645* `workflow.name`: имя рабочего процесса, `meta.name` его скрипта, выпущенное вместе с `workflow.run_id`. Встроенные имена рабочих процессов отображаются как есть при выполнении немодифицированного встроенного скрипта. Имена, созданные пользователем, включая отредактированные копии встроенных скриптов, заменяются на `custom`, если не установлен `OTEL_LOG_TOOL_DETAILS=1`. Требуется Claude Code v2.1.202 или позже645* `workflow.name`: имя workflow, `meta.name` его скрипта, передаётся вместе с `workflow.run_id`. Имена встроенных workflow отображаются без изменений, когда запуск выполняет неизменённый встроенный скрипт. Пользовательские имена, включая отредактированные копии встроенных скриптов, заменяются на `custom`, если не задано `OTEL_LOG_TOOL_DETAILS=1`.

646 646 

647<h4 id="repository-attributes">647<h4 id="repository-attributes">

648 Атрибуты репозитория648 Атрибуты репозитория


1374* `pre_tokens`: Приблизительный счёт токенов до компактирования1374* `pre_tokens`: Приблизительный счёт токенов до компактирования

1375* `post_tokens`: Приблизительный счёт токенов после компактирования1375* `post_tokens`: Приблизительный счёт токенов после компактирования

1376* `error`: Сообщение об ошибке, когда компактирование не удалось1376* `error`: Сообщение об ошибке, когда компактирование не удалось

1377* `precompute_reuse`: Задаётся, только когда `trigger` равно `"manual"`. Автосжатие может заранее подготовить сводку в фоне, до заполнения контекстного окна, и этот атрибут фиксирует, использовала ли `/compact` эту подготовленную сводку. `"hit"` означает, что она была использована повторно; `"miss_custom_instructions"`, `"miss_hook"` и `"miss_not_ready"` указывают причину, по которой вместо этого была вычислена новая сводка1377* `precompute_reuse`: задаётся, только если `trigger` равно `"manual"`, или для [сжатия при простое](/docs/ru/settings-reference#idlecompaction), которое передаёт `trigger` как `"auto"`. Автосжатие может подготовить сводку в фоновом режиме до заполнения контекстного окна, и этот атрибут фиксирует, использовало ли сжатие эту подготовленную сводку. `"hit"` означает, что она была использована; `"miss_custom_instructions"`, `"miss_hook"` и `"miss_not_ready"` указывают причину, по которой вместо этого была вычислена новая сводка

1378 1378 

1379<h4 id="subagent-completed-event">1379<h4 id="subagent-completed-event">

1380 Событие завершения подагента1380 Событие завершения подагента

Details

209| :- | :- | :- | :- |209| :- | :- | :- | :- |

210| First-byte deadline | Заголовки ответа не поступают после отправки запроса Claude Code | Прямой API Anthropic и [Claude Platform on AWS](/docs/ru/claude-platform-on-aws), включая через HTTPS-прокси, но не когда `ANTHROPIC_BASE_URL` или `ANTHROPIC_AWS_BASE_URL` маршрутизируют их через [gateway](/docs/ru/gateways). Opt-in на Amazon Bedrock с `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; не работает на Google Cloud's Agent Platform или Microsoft Foundry | 180 секунд на прямом API Anthropic, 300 секунд в других местах, плюс одна секунда на 32 КБ тела запроса |210| First-byte deadline | Заголовки ответа не поступают после отправки запроса Claude Code | Прямой API Anthropic и [Claude Platform on AWS](/docs/ru/claude-platform-on-aws), включая через HTTPS-прокси, но не когда `ANTHROPIC_BASE_URL` или `ANTHROPIC_AWS_BASE_URL` маршрутизируют их через [gateway](/docs/ru/gateways). Opt-in на Amazon Bedrock с `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; не работает на Google Cloud's Agent Platform или Microsoft Foundry | 180 секунд на прямом API Anthropic, 300 секунд в других местах, плюс одна секунда на 32 КБ тела запроса |

211| Event-level watchdog | События ответа не анализируются. На соединениях, где работает byte-level watchdog, поступающие байты, включая keep-alive пинги, также сбрасывают этот watchdog, примерно на пять минут без анализируемого события | Каждый провайдер | 300 секунд |211| Event-level watchdog | События ответа не анализируются. На соединениях, где работает byte-level watchdog, поступающие байты, включая keep-alive пинги, также сбрасывают этот watchdog, примерно на пять минут без анализируемого события | Каждый провайдер | 300 секунд |

212| Byte-level watchdog | На проводе не поступают байты, включая SSE keep-alive пинги | Прямой API Anthropic, [Claude Platform on AWS](/docs/ru/claude-platform-on-aws) и [шлюзовые](/docs/ru/gateways) соединения, включая пользовательский `ANTHROPIC_BASE_URL`. Opt-in на Amazon Bedrock `vnd.amazon.eventstream` ответы с `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; не работает на Google Cloud's Agent Platform или Microsoft Foundry | 180 секунд на прямом API Anthropic. Через пользовательский `ANTHROPIC_BASE_URL` — 180 секунд, если Claude Code [получил флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching), и 300 секунд, если нет. 300 секунд в других местах |212| Byte-level watchdog | На проводе не поступают байты, включая SSE keep-alive пинги | Прямой API Anthropic, [Claude Platform on AWS](/docs/ru/claude-platform-on-aws) и [шлюзовые](/docs/ru/gateways) соединения, включая пользовательский `ANTHROPIC_BASE_URL`. Opt-in на Amazon Bedrock `vnd.amazon.eventstream` ответы с `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; не работает на Google Cloud's Agent Platform или Microsoft Foundry | 180 секунд на прямом API Anthropic. 300 секунд на Claude Platform on AWS, на Amazon Bedrock, в сессии [Claude apps gateway](/docs/ru/claude-apps-gateway) и через пользовательский `ANTHROPIC_BASE_URL` |

213| Body idle timeout | Байты не поступают в течение 5 минут | Провайдеры, отличные от прямого API Anthropic, Claude Platform on AWS и Amazon Bedrock с установленным `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`, если только [`API_FORCE_IDLE_TIMEOUT`](/docs/ru/env-vars) это не изменит | 5 минут |213| Body idle timeout | Байты не поступают в течение 5 минут | Провайдеры, отличные от прямого API Anthropic, Claude Platform on AWS и Amazon Bedrock с установленным `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`, если только [`API_FORCE_IDLE_TIMEOUT`](/docs/ru/env-vars) это не изменит | 5 минут |

214 214 

215Если вы установите `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`, byte-level watchdog заменит body idle timeout на Bedrock вместо того, чтобы работать рядом с ним. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` затем также определяет, как долго поток Bedrock может оставаться молчаливым, прежде чем Claude Code будет рассматривать соединение как мёртвое, в пределах указанных ниже лимитов. Поступающие байты по-прежнему не сбрасывают event-level watchdog на Bedrock. При включённом debug logging каждый поток Bedrock затем регистрирует отладочное сообщение, которое начинается с `wire-heartbeat: _chunkTimes absent`.215Если вы установите `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`, byte-level watchdog заменит body idle timeout на Bedrock вместо того, чтобы работать рядом с ним. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` затем также определяет, как долго поток Bedrock может оставаться молчаливым, прежде чем Claude Code будет рассматривать соединение как мёртвое, в пределах указанных ниже лимитов. Поступающие байты по-прежнему не сбрасывают event-level watchdog на Bedrock. При включённом debug logging каждый поток Bedrock затем регистрирует отладочное сообщение, которое начинается с `wire-heartbeat: _chunkTimes absent`.

Details

239 * **Сессии [Remote Control](/docs/ru/remote-control)** на вашем локальном компьютере: Manual, Accept edits, Plan и Auto для сессии, которую вы запустили сами, и вы не можете выбрать Bypass permissions из приложения. Чтобы использовать Auto, сессия должна соответствовать [требованиям доступности](#eliminate-prompts-with-auto-mode) авторежима. Для потока проекта, работающего на вашем компьютере, см. [Запустить поток на вашем собственном компьютере](/docs/ru/claude-projects#run-a-thread-on-your-own-computer).239 * **Сессии [Remote Control](/docs/ru/remote-control)** на вашем локальном компьютере: Manual, Accept edits, Plan и Auto для сессии, которую вы запустили сами, и вы не можете выбрать Bypass permissions из приложения. Чтобы использовать Auto, сессия должна соответствовать [требованиям доступности](#eliminate-prompts-with-auto-mode) авторежима. Для потока проекта, работающего на вашем компьютере, см. [Запустить поток на вашем собственном компьютере](/docs/ru/claude-projects#run-a-thread-on-your-own-computer).

240 * За исключением Bypass permissions, раскрывающееся меню показывает режим разрешений, в котором находится локальная сессия, включая режим, установленный из терминала. Оно обновляется, когда режим разрешений изменяется в приложении или в терминале.240 * За исключением Bypass permissions, раскрывающееся меню показывает режим разрешений, в котором находится локальная сессия, включая режим, установленный из терминала. Оно обновляется, когда режим разрешений изменяется в приложении или в терминале.

241 * Сессии, размещённые [настольным приложением](/docs/ru/desktop) или [расширением VS Code](/docs/ru/vs-code), сообщают изменения режима разрешений в claude.ai по мере их возникновения, так же как сессии, размещённые в терминале.241 * Сессии, размещённые [настольным приложением](/docs/ru/desktop) или [расширением VS Code](/docs/ru/vs-code), сообщают изменения режима разрешений в claude.ai по мере их возникновения, так же как сессии, размещённые в терминале.

242 * До v2.1.202 сессии, подключённые с помощью `/remote-control` или `claude --remote-control`, вообще не сообщали свой режим разрешений, поэтому claude.ai и мобильное приложение могли показывать режим разрешений, в котором сессия не находилась. Несоответствие влияло только на метку. Claude Code генерировал запросы разрешений на основе фактического режима разрешений сессии, и они по-прежнему появлялись в приложении для подтверждения.

243 242 

244 Для Remote Control локальная машина, запускающая сеанс, должна быть подписана с вашей учётной записью claude.ai; ключи API не поддерживаются. Вы также можете установить начальный режим разрешений при запуске этого локального сеанса:243 Для Remote Control локальная машина, запускающая сеанс, должна быть подписана с вашей учётной записью claude.ai; ключи API не поддерживаются. Вы также можете установить начальный режим разрешений при запуске этого локального сеанса:

245 244 


352 351 

353Чтобы запретить разработчикам использовать авторежим, установите `disableAutoMode` в значение `"disable"` в [управляемых настройках](/docs/ru/managed-settings). Это удаляет `auto` из цикла `Shift+Tab`, а сессия, запущенная с `--permission-mode auto`, вместо этого запускается в режиме Manual. Сессия, уже работающая в авторежиме, выходит из него, когда настройка доходит до этой сессии из [источника, развёрнутого администратором](/docs/ru/managed-settings#which-managed-source-claude-code-uses), и показывает `auto mode disabled by settings`. До v2.1.251 работающая сессия сохраняла авторежим до своего завершения.352Чтобы запретить разработчикам использовать авторежим, установите `disableAutoMode` в значение `"disable"` в [управляемых настройках](/docs/ru/managed-settings). Это удаляет `auto` из цикла `Shift+Tab`, а сессия, запущенная с `--permission-mode auto`, вместо этого запускается в режиме Manual. Сессия, уже работающая в авторежиме, выходит из него, когда настройка доходит до этой сессии из [источника, развёрнутого администратором](/docs/ru/managed-settings#which-managed-source-claude-code-uses), и показывает `auto mode disabled by settings`. До v2.1.251 работающая сессия сохраняла авторежим до своего завершения.

354 353 

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

356 

357<h3 id="server-side-classifier-review">354<h3 id="server-side-classifier-review">

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

359</h3>356</h3>


408* Запуск цикла автономного агента, который работает без подтверждения человеком или песочницы, например запущенного с `--dangerously-skip-permissions` или `--no-sandbox`. Сюда относится запуск стороннего агента или eval harness с отключёнными изоляцией и подтверждением каждого действия, например runner, запущенного с `--yes-always`405* Запуск цикла автономного агента, который работает без подтверждения человеком или песочницы, например запущенного с `--dangerously-skip-permissions` или `--no-sandbox`. Сюда относится запуск стороннего агента или eval harness с отключёнными изоляцией и подтверждением каждого действия, например runner, запущенного с `--yes-always`

409* Действия браузера [Claude in Chrome](/docs/ru/chrome), которые могут отправить содержимое страницы, cookie или учётные данные за пределы источника406* Действия браузера [Claude in Chrome](/docs/ru/chrome), которые могут отправить содержимое страницы, cookie или учётные данные за пределы источника

410* Удаление файлов в `/tmp`, `$TMPDIR` или другом общем каталоге временных файлов или кэша по подстановочному знаку, glob-шаблону или фильтру по возрасту, а не по конкретному указанному пути407* Удаление файлов в `/tmp`, `$TMPDIR` или другом общем каталоге временных файлов или кэша по подстановочному знаку, glob-шаблону или фильтру по возрасту, а не по конкретному указанному пути

411* Включение чувствительных сведений в контент, отправляемый, загружаемый, публикуемый или записываемый для других людей или в общие системы, если ваше собственное сообщение не разрешало передавать эти сведения данному получателю. Тексты PR и issue, сообщения коммитов и комментарии считаются таким исходящим контентом, когда репозиторий находится за пределами границы доверия или является общедоступным, включая собственные общедоступные репозитории вашей организации; внутренние пути к файлам, кодовые названия, данные из реальных ответов API, такие как адреса электронной почты или идентификаторы учётных записей, и идентификаторы инфраструктуры считаются чувствительными сведениями. Реальные персональные данные из ответа API в тексте PR или issue, такие как адрес электронной почты, идентификатор учётной записи или организации либо метрика использования, требуют, чтобы вы назвали эти сведения и получателя, независимо от видимости репозитория или границы доверия. Эта проверка требует Claude Code v2.1.203 или новее408* Включение чувствительных сведений в контент, отправляемый, загружаемый, публикуемый или записываемый для других людей или в общие системы, если ваше собственное сообщение не разрешало передавать эти сведения данному получателю. Тексты PR и issue, сообщения коммитов и комментарии считаются таким исходящим контентом, когда репозиторий находится за пределами границы доверия или является общедоступным, включая собственные общедоступные репозитории вашей организации; внутренние пути к файлам, кодовые названия, данные из реальных ответов API, такие как адреса электронной почты или идентификаторы учётных записей, и идентификаторы инфраструктуры считаются чувствительными сведениями. Реальные персональные данные из ответа API в тексте PR или issue, такие как адрес электронной почты, идентификатор учётной записи или организации либо метрика использования, требуют, чтобы вы назвали эти сведения и получателя, независимо от видимости репозитория или границы доверия

412* Отправка нажатий клавиш в собственную панель tmux Claude Code для управления его собственным интерфейсом, которую классификатор рассматривает как изменение Claude собственных разрешений или надзора за собой409* Отправка нажатий клавиш в собственную панель tmux Claude Code для управления его собственным интерфейсом, которую классификатор рассматривает как изменение Claude собственных разрешений или надзора за собой

413* Комментирование, удаление или принудительное прохождение теста или проверки (assertion), защищающих поведение, связанное с безопасностью, например аутентификацию, контроль доступа, валидацию входных данных или изоляцию в песочнице410* Комментирование, удаление или принудительное прохождение теста или проверки (assertion), защищающих поведение, связанное с безопасностью, например аутентификацию, контроль доступа, валидацию входных данных или изоляцию в песочнице

414* Удаление или уничтожение ресурса с состоянием, который Claude не создавал в этой сессии, когда не применяется более конкретное правило удаления и вы не назвали этот ресурс411* Удаление или уничтожение ресурса с состоянием, который Claude не создавал в этой сессии, когда не применяется более конкретное правило удаления и вы не назвали этот ресурс

415* Перенаправление базового URL API, эндпоинта прокси, получателя webhook или зеркала реестра на сторонний хост, не соответствующий задаче, в том числе в файлах-примерах, таких как `.env.example`412* Перенаправление базового URL API, эндпоинта прокси, получателя webhook или зеркала реестра на сторонний хост, не соответствующий задаче, в том числе в файлах-примерах, таких как `.env.example`

416* Изменение того, куда выполняются push, с помощью `git remote set-url` или `git remote add`, если вы не назвали новый remote413* Изменение того, куда выполняются push, с помощью `git remote set-url` или `git remote add`, если вы не назвали новый remote

417* Push секретов, персональных или доверенных данных в репозиторий, известный как общедоступный, или push туда конфиденциальных материалов, не относящихся к собственной работе этого репозитория. Единственное исключение для персональных или доверенных данных — собственная тематика репозитория dotfiles, а контент из приватного репозитория, попадающий на любую общедоступную площадку, блокируется так же; оба уточнения требуют Claude Code v2.1.203 или новее. До v2.1.203 персональные данные относились к той же группе, что и конфиденциальные материалы, и блокировались, только если не относились к собственной работе репозитория. Если видимость репозитория не установлена, классификатор не блокирует действие только на этом основании; вместо этого он оценивает контент по другим правилам414* Push секретов, персональных или доверенных данных в репозиторий, известный как общедоступный, или push туда конфиденциальных материалов, не относящихся к собственной работе этого репозитория. Единственное исключение для персональных или доверенных данных — собственная тематика репозитория dotfiles, а контент из приватного репозитория, попадающий на любую общедоступную площадку, блокируется так же. Если видимость репозитория не установлена, классификатор не блокирует действие только на этом основании; вместо этого он оценивает контент по другим правилам

418* Открытие pull request в другой репозиторий или организацию, создание форка с помощью `gh repo fork` или push в сторонний репозиторий, если вы не назвали эту внешнюю цель415* Открытие pull request в другой репозиторий или организацию, создание форка с помощью `gh repo fork` или push в сторонний репозиторий, если вы не назвали эту внешнюю цель

419 

420Некоторые из этих категорий зависят от записей [окружения](/docs/ru/auto-mode-config#define-trusted-infrastructure), таких как чувствительные удалённые цели и защищённые области действия IaC, которые можно сузить до конкретных имён.

421 

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

423 

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

425 

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

427 

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

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

430 419 

431 Glob-шаблон непосредственно под переменной, как в `rm -rf "$VAR"/*`, вместо этого считается [критическим путём](#critical-paths). Цели `Remove-Item`, которые представляют собой просто `*` или заканчиваются на `/*` или `\*`, никогда не доходят до классификатора: Claude Code [сразу их отклоняет](#remove-item-in-powershell).420 Glob-шаблон непосредственно под переменной, как в `rm -rf "$VAR"/*`, вместо этого считается [критическим путём](#critical-paths). Цели `Remove-Item`, которые представляют собой просто `*` или заканчиваются на `/*` или `\*`, никогда не доходят до классификатора: Claude Code [сразу их отклоняет](#remove-item-in-powershell).

432 421 

422Некоторые из этих категорий зависят от записей [окружения](/docs/ru/auto-mode-config#define-trusted-infrastructure), таких как чувствительные удалённые цели и защищённые области действия IaC, которые можно сузить до конкретных имён.

423 

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

434 425 

435* Запрос учётных данных у эндпоинта метаданных облачного экземпляра, например `169.254.169.254`, или явная аутентификация облачного, кластерного или реестрового вызова с помощью собственного сервисного аккаунта или идентификатора узла машины426* Запрос учётных данных у эндпоинта метаданных облачного экземпляра, например `169.254.169.254`, или явная аутентификация облачного, кластерного или реестрового вызова с помощью собственного сервисного аккаунта или идентификатора узла машины


449* Установка зависимостей, объявленных в ваших lock-файлах или манифестах440* Установка зависимостей, объявленных в ваших lock-файлах или манифестах

450* Чтение `.env` и отправка учётных данных в соответствующий им API441* Чтение `.env` и отправка учётных данных в соответствующий им API

451* HTTP-запросы только для чтения442* HTTP-запросы только для чтения

452* Push в любую ветку репозитория, в котором вы работаете, включая ветку по умолчанию. Это не распространяется на ветку, не являющуюся веткой по умолчанию, имя которой обозначает её как цель развёртывания или публикации, например `production` или `gh-pages`: push в неё классификатор оценивает отдельно. Содержимое push по-прежнему проверяется по другим правилам, [правила `permissions.deny`](/docs/ru/permissions#manage-permissions) по-прежнему могут блокировать команды push [в том виде, в каком они написаны](/docs/ru/permissions#bash-rule-limits), в любом режиме, и собственная защита веток на стороне remote по-прежнему действует. До v2.1.211 по умолчанию разрешались только push в ветку, с которой вы начали, в ветки, созданные Claude, и рутинные push в ветку по умолчанию, а до v2.1.203 любой прямой push в ветку по умолчанию блокировался443* Push в любую ветку репозитория, в котором вы работаете, включая ветку по умолчанию. Это не распространяется на ветку, не являющуюся веткой по умолчанию, имя которой обозначает её как цель развёртывания или публикации, например `production` или `gh-pages`: push в неё классификатор оценивает отдельно. Содержимое push по-прежнему проверяется по другим правилам, [правила `permissions.deny`](/docs/ru/permissions#manage-permissions) по-прежнему могут блокировать команды push [в том виде, в каком они написаны](/docs/ru/permissions#bash-rule-limits), в любом режиме, и собственная защита веток на стороне remote по-прежнему действует. До v2.1.211 по умолчанию разрешались только push в ветку, с которой вы начали, в ветки, созданные Claude, и рутинные push в ветку по умолчанию

453* Удаление именно тех заданий, которые Claude создал ранее в той же сессии444* Удаление именно тех заданий, которые Claude создал ранее в той же сессии

454* Чтение, проверка или написание кода, конфигураций и моделей угроз, связанных с безопасностью, в рамках вашей задачи445* Чтение, проверка или написание кода, конфигураций и моделей угроз, связанных с безопасностью, в рамках вашей задачи

455* Сообщения между агентами, работающими вместе в одной многоагентной сессии446* Сообщения между агентами, работающими вместе в одной многоагентной сессии

permissions.md +8 −3

Details

384 384 

385Правила `Edit` применяются ко всем встроенным инструментам, которые редактируют файлы. Claude по мере возможности применяет правила `Read` ко всем встроенным инструментам, которые читают файлы, например Grep и Glob, к упоминаниям `@file` в ваших промптах, а также к выделению и контексту открытого файла, которыми подключённая [IDE](/docs/ru/vs-code#the-built-in-ide-mcp-server) делится с Claude.385Правила `Edit` применяются ко всем встроенным инструментам, которые редактируют файлы. Claude по мере возможности применяет правила `Read` ко всем встроенным инструментам, которые читают файлы, например Grep и Glob, к упоминаниям `@file` в ваших промптах, а также к выделению и контексту открытого файла, которыми подключённая [IDE](/docs/ru/vs-code#the-built-in-ide-mcp-server) делится с Claude.

386 386 

387Правило deny `Read(path)` также применяется к путям изображений, которые вы вставляете в промпт, и к каталогам, которые вы упоминаете через @:

388 

389* **Путь к изображению**: когда вы вставляете путь к изображению или перетаскиваете файл изображения в промпт в терминале и правило соответствует этому пути, Claude Code не прикрепляет изображение. Если во вставленном фрагменте нет другого изображения, путь остаётся в вашем промпте в виде текста.

390* **Каталог**: из [списка содержимого, который получает Claude](/docs/ru/common-workflows#reference-files-and-directories), исключаются имена файлов и каталогов, соответствующие правилу.

391 

392Claude Code проверяет вставленные пути изображений и списки содержимого каталогов в v2.1.290 и новее.

393 

387Правило deny для `Read` также блокирует [инструменты Edit и Write](/docs/ru/errors#file-is-covered-by-a-read-deny-rule) для того же пути, включая создание там нового файла. NotebookEdit не охватывается, поэтому добавьте правило deny для `Edit` для путей, которые не должен изменять ни один инструмент. Проверка требует Claude Code v2.1.208 или новее для правок, и v2.1.228 или новее для записи.394Правило deny для `Read` также блокирует [инструменты Edit и Write](/docs/ru/errors#file-is-covered-by-a-read-deny-rule) для того же пути, включая создание там нового файла. NotebookEdit не охватывается, поэтому добавьте правило deny для `Edit` для путей, которые не должен изменять ни один инструмент. Проверка требует Claude Code v2.1.208 или новее для правок, и v2.1.228 или новее для записи.

388 395 

389Claude Code проверяет файловые разрешения только по правилам `Edit(path)` и `Read(path)`. Если вместо этого вы напишете правило с путём для `Write`, `NotebookEdit`, `Glob` или устаревшего инструмента `MultiEdit`, Claude Code примет правило, но никогда не будет к нему обращаться и [выдаст предупреждение при запуске](/docs/ru/errors#is-not-matched-by-file-permission-checks), за исключением правила `Glob`, переданного в `--allowedTools`. Используйте `Edit(docs/**)` вместо `Write(docs/**)`, `NotebookEdit(docs/**)` или `MultiEdit(docs/**)`, и `Read(docs/**)` вместо `Glob(docs/**)`. Claude Code не предупреждает о правиле с именем инструмента без пути, например о правиле deny для `Write`; такое правило сопоставляется на уровне инструмента везде. Требуется Claude Code v2.1.210 или новее.396Claude Code проверяет файловые разрешения только по правилам `Edit(path)` и `Read(path)`. Если вместо этого вы напишете правило с путём для `Write`, `NotebookEdit`, `Glob` или устаревшего инструмента `MultiEdit`, Claude Code примет правило, но никогда не будет к нему обращаться и [выдаст предупреждение при запуске](/docs/ru/errors#is-not-matched-by-file-permission-checks), за исключением правила `Glob`, переданного в `--allowedTools`. Используйте `Edit(docs/**)` вместо `Write(docs/**)`, `NotebookEdit(docs/**)` или `MultiEdit(docs/**)`, и `Read(docs/**)` вместо `Glob(docs/**)`. Claude Code не предупреждает о правиле с именем инструмента без пути, например о правиле deny для `Write`; такое правило сопоставляется на уровне инструмента везде. Требуется Claude Code v2.1.210 или новее.


467 В шаблонах gitignore `*` сопоставляется в пределах одного сегмента пути и может стоять в любой позиции шаблона, а `**` сопоставляется через несколько каталогов.474 В шаблонах gitignore `*` сопоставляется в пределах одного сегмента пути и может стоять в любой позиции шаблона, а `**` сопоставляется через несколько каталогов.

468</Note>475</Note>

469 476 

470Когда вы одобряете путь к файлу с помощью «Yes, and don't ask again», Claude Code экранирует в этом пути символы шаблонов gitignore, такие как `[`, `]` и `*`, поэтому созданное правило соответствует только буквально одобренному вами пути. Правила, которые вы пишете сами, не экранируются. До v2.1.202 Claude Code сохранял путь без экранирования, поэтому созданное правило для каталога с именем `[2024-06] Reports` могло не соответствовать собственному пути или соответствовать непредусмотренным соседним каталогам.477Когда вы одобряете путь к файлу с помощью «Yes, and don't ask again», Claude Code экранирует в этом пути символы шаблонов gitignore, такие как `[`, `]` и `*`, поэтому созданное правило соответствует только буквально одобренному вами пути. Правила, которые вы пишете сами, не экранируются.

471 478 

472Экранировать круглые скобки в пути не нужно, поэтому `Edit(./Finance (2024)/**)` соответствует папке `Finance (2024)` в точном написании.479Экранировать круглые скобки в пути не нужно, поэтому `Edit(./Finance (2024)/**)` соответствует папке `Finance (2024)` в точном написании.

473 480 


805 Исключение для домашнего каталога конфигурации пропускает только шаг доверия. `~/.claude/settings.local.json` по-прежнему относится к [локальной области действия](/docs/ru/settings#compare-the-scope-of-each-settings-file), поэтому Claude Code читает его только в сессиях, которые вы запускаете непосредственно в домашнем каталоге, а не в каждом проекте. Чтобы применить правила разрешений ко всем вашим проектам, добавьте их вместо этого в пользовательские настройки: `~/.claude/settings.json` или `$CLAUDE_CONFIG_DIR/settings.json`, если задана `CLAUDE_CONFIG_DIR`.812 Исключение для домашнего каталога конфигурации пропускает только шаг доверия. `~/.claude/settings.local.json` по-прежнему относится к [локальной области действия](/docs/ru/settings#compare-the-scope-of-each-settings-file), поэтому Claude Code читает его только в сессиях, которые вы запускаете непосредственно в домашнем каталоге, а не в каждом проекте. Чтобы применить правила разрешений ко всем вашим проектам, добавьте их вместо этого в пользовательские настройки: `~/.claude/settings.json` или `$CLAUDE_CONFIG_DIR/settings.json`, если задана `CLAUDE_CONFIG_DIR`.

806</Note>813</Note>

807 814 

808До версии v2.1.207 Claude Code применял правила неотслеживаемого файла до того, как вы принимали диалог.

809 

810<h3 id="what-runs-before-you-trust-a-folder">815<h3 id="what-runs-before-you-trust-a-folder">

811 Что выполняется до того, как вы доверите папке816 Что выполняется до того, как вы доверите папке

812</h3>817</h3>

plugin-evals.md +59 −28

Details

441 441 

442| Exit код | Значение |442| Exit код | Значение |

443| :- | :- |443| :- | :- |

444| 0 | Каждый кейс оценен на или выше `--threshold` и каждый файл кейса загружен |444| 0 | Suite пройден: каждый кейс получил оценку не ниже `--threshold`, и ничто другое не привело к провалу запуска |

445| 1 | Кейс оценен ниже порога, файл кейса не загружен, кейсы не найдены, запуск не может быть запущен, директория plugin не доверена и `--trust-plugin` не был передан, или опция была неправильной |445| 1 | Кейс получил оценку ниже порога, файл кейса не удалось загрузить, кейсы не найдены, запуск не удалось начать или запуск [завершился ошибкой API](#runs-ended-on-an-api-error). Также возвращается, когда каталог плагина не является доверенным и `--trust-plugin` не передан, опция была недопустимой или результат `--json` не удалось записать |

446| 2 | Частичный запуск: потолок `--max-cost-usd` был достигнут или ваши учетные данные были отклонены перед или на первом запуске. `results.json` все еще написан с `partial: true` и причиной |446| 2 | Частичный запуск: потолок `--max-cost-usd` был достигнут или ваши учетные данные были отклонены перед или на первом запуске. `results.json` все еще написан с `partial: true` и причиной |

447| 130 | Прервано. Частичные результаты написаны |447| 130 | Прервано. Частичные результаты написаны |

448| 143 | Завершено, такое как timeout CI |448| 143 | Завершено, такое как timeout CI |


460Чтобы держать стоимости предсказуемыми, дайте быстрым every-change suites только graders, которые не вызывают judge, используйте `--ablation none`, где вам не нужно `Δ`, и оставьте `partial: true` документы и запуски с `skippedPaidGraders` вне любого тренда, который вы составляете.460Чтобы держать стоимости предсказуемыми, дайте быстрым every-change suites только graders, которые не вызывают judge, используйте `--ablation none`, где вам не нужно `Δ`, и оставьте `partial: true` документы и запуски с `skippedPaidGraders` вне любого тренда, который вы составляете.

461 461 

462<h2 id="read-the-results">462<h2 id="read-the-results">

463 Прочитайте результаты463 Чтение результатов

464</h2>464</h2>

465 465 

466Каждый запуск с по крайней мере одним кейсом пишет директорию `results/<timestamp>/` внутри директории eval, содержащую `aggregate-result.json` и `report.html`. Для path target, который находится под plugin; для plugin, который вы назвали, это под вашей текущей директорией, как показывает [target table](#choose-what-to-evaluate). Таблица сводки, JSON и отчет все отображают одни и те же данные результата.466Каждый запуск, в котором есть хотя бы один кейс, создаёт внутри каталога eval каталог `results/<timestamp>/`, содержащий `aggregate-result.json` и `report.html`. Для цели, заданной путём, он находится внутри плагина; для плагина, указанного по имени, — в вашем текущем каталоге, как показано в [таблице целей](#choose-what-to-evaluate). Сводная таблица, JSON и отчёт отображают одни и те же данные результатов.

467 467 

468<h3 id="html-report">468<h3 id="html-report">

469 HTML отчет469 HTML-отчёт

470</h3>470</h3>

471 471 

472`report.html` — это один самодостаточный файл, который не делает внешних запросов, поэтому вы можете прикрепить его к CI работе или открыть его с диска. Это пример верхней части отчета для запуска трёхкейсного набора с `--threshold 0.8`; показанная стоимость — это оценка по прейскуранту и варьируется в зависимости от модели и количества кейсов:472`report.html` — это единый самодостаточный файл, который не выполняет внешних запросов, поэтому его можно прикрепить к задаче CI или открыть с диска. В этом примере показано начало отчёта для набора из трёх кейсов, запущенного с `--threshold 0.8`; указанная стоимость является оценкой по прейскурантным ценам и зависит от модели и количества кейсов:

473 473 

474<img src="https://mintcdn.com/claude-code/qq7LHDi_F0aeFHgk/images/plugin-eval-report.png?fit=max&auto=format&n=qq7LHDi_F0aeFHgk&q=85&s=106eb6e6a70a6565f891ea3a4564f87d" alt="Верхняя часть отчета eval: строка вердикта, читающая &#x22;Plugin effect: +33.3 pts vs baseline, improved 2, flat 1, regressed 0 of 3 cases&#x22;, пять плиток сводки для оценки suite, ablation delta, baseline score, кейсов, прошедших threshold, и perfect runs, затем первый кейс с его delta, score bar и одним запуском, чьи два graders оба показывают pass" width="1360" height="1032" data-path="images/plugin-eval-report.png" />474<img src="https://mintcdn.com/claude-code/qq7LHDi_F0aeFHgk/images/plugin-eval-report.png?fit=max&auto=format&n=qq7LHDi_F0aeFHgk&q=85&s=106eb6e6a70a6565f891ea3a4564f87d" alt="Начало отчёта eval: строка вердикта «Plugin effect: +33.3 pts vs baseline, improved 2, flat 1, regressed 0 of 3 cases», пять сводных плиток с оценкой набора, дельтой абляции, базовой оценкой, кейсами, прошедшими порог, и идеальными запусками, затем первый кейс с его дельтой, шкалой оценки и одним запуском, оба грейдера которого показывают pass" width="1360" height="1032" data-path="images/plugin-eval-report.png" />

475 475 

476Читайте его сверху вниз:476Читайте его сверху вниз:

477 477 

478* **Строка вердикта и плитки** отвечают на вопрос, помог ли plugin по всему набору. Suite score — это среднее значение per-case with-plugin оценок, Ablation Δ — это то, насколько это находится выше или ниже baseline score, и Cases считает, сколько соответствовали threshold. Perfect runs — это доля with-plugin запусков, где каждый grader прошёл.478* **Строка вердикта и плитки** отвечают на вопрос, помог ли плагин в масштабе всего набора. Suite score — это среднее оценок по кейсам с плагином, Ablation Δ показывает, насколько оно выше или ниже базовой оценки, а Cases подсчитывает, сколько кейсов достигли порога. Perfect runs — это доля запусков с плагином, в которых прошли все грейдеры.

479* **Каждая карточка кейса** показывает собственный `Δ` кейса и with-plugin оценку, с отметкой на полосе в threshold. Кейс, чей `Δ` отрицательный, получает красный левый край, поэтому регрессии выделяются при прокрутке.479* **Каждая карточка кейса** показывает собственную `Δ` кейса и оценку с плагином, с отметкой порога на шкале. Кейс с отрицательной `Δ` получает красную левую границу, поэтому регрессии заметны при прокрутке.

480* **Внутри кейса** with-plugin запуски идут первыми, а baseline запуски после. Каждый запуск перечисляет своих graders с чипом pass или fail. Неудачный grader уже развёрнут с его объяснением, и `llm` grader также показывает голоса судьи и доказательства, которые ему были показаны, что является местом, где вы узнаёте, почему запуск получил низкую оценку. Graders, которые не учитываются в оценке, такие как `tool_used: Skill`, несут `plugin-fired indicator` значок.480* **Внутри кейса** сначала идут запуски с плагином, а затем базовые запуски. Для каждого запуска перечислены его грейдеры с меткой pass или fail. Не прошедший грейдер уже развёрнут с пояснением, а грейдер `llm` также показывает голоса судьи и доказательства, которые ему были показаны, — именно здесь можно выяснить, почему запуск получил низкую оценку. Грейдеры, которые не учитываются в оценке, например `tool_used: Skill`, помечены значком `plugin-fired indicator`.

481* **Prompt и Graders**, ниже запусков, показывают prompt кейса и rubric или pattern каждого grader, поэтому кто-то, читающий отчет без набора, может увидеть, что было запрошено и что считалось хорошим.481* **Prompt и Graders** под запусками показывают промпт кейса и рубрику или шаблон каждого грейдера, чтобы тот, кто читает отчёт без набора, мог увидеть, что было запрошено и что считалось хорошим результатом.

482 482 

483Если вы вошли с подпиской claude.ai и [artifacts](/docs/ru/artifacts) доступны для вашего аккаунта, Claude Code также публикует отчет как приватный artifact и печатает `Published: <url>`. Передайте `--no-publish`, чтобы держать его локально. Если нет строки `Published:`, такой как с API-key аутентификацией, локальный файл — это отчет.483Если вы вошли с подпиской claude.ai и для вашей учётной записи доступны [артефакты](/docs/ru/artifacts), Claude Code также публикует отчёт как приватный артефакт и выводит `Published: <url>`. Передайте `--no-publish`, чтобы оставить его локальным. Если строка `Published:` не появляется, например при аутентификации с помощью API-ключа, отчётом является локальный файл.

484 484 

485Запуск, который Claude Code сессия запустила, такой как когда вы просите Claude запустить suite для вас, также остается локально, и его строка `Report:` говорит `kept local`. Добавьте `--publish-report` к этой команде, чтобы опубликовать его.485Запуск, начатый сессией Claude Code, например когда вы просите Claude запустить набор за вас, также остаётся локальным, а его строка `Report:` содержит `kept local`. Добавьте `--publish-report` к этой команде, чтобы опубликовать его.

486 486 

487<h3 id="json-result">487<h3 id="json-result">

488 JSON результат488 Результат в JSON

489</h3>489</h3>

490 490 

491`aggregate-result.json` и `--json` вывод — это версионированный документ с `schemaVersion: 1` для CI скриптов для парсинга. Имена полей — это camelCase и новые поля добавляются без переименования существующих, поэтому напишите ваш скрипт, чтобы игнорировать поля, которые он не признает.491`aggregate-result.json`, как и вывод `--json`, — это версионированный документ с `schemaVersion: 1`, предназначенный для разбора скриптами CI. Имена полей записываются в camelCase, а новые поля добавляются без переименования существующих, поэтому пишите скрипт так, чтобы он игнорировал нераспознанные поля.

492 492 

493Это поля, которые скрипт gating обычно читает. Документ также несет конфигурацию suite, каждое определение grader и результаты grader на запуск с объяснениями и доказательствами:493Ниже перечислены поля, которые обычно читает скрипт-шлюз. Документ также содержит конфигурацию набора, определения всех грейдеров и результаты грейдеров по каждому запуску с пояснениями и доказательствами:

494 494 

495| Поле | Значение |495| Поле | Значение |

496| :- | :- |496| :- | :- |

497| `partial`, `partialReason` | `true` с `cost_ceiling`, `interrupted` или `auth_failed`, когда suite не завершилась. Оставьте частичные результаты вне трендовых диаграмм |497| `partial`, `partialReason` | `true` с `cost_ceiling`, `interrupted` или `auth_failed`, если набор не завершился. Не включайте частичные результаты в графики трендов |

498| `aggregates.overallScore` | Средняя оценка кейса по suite |498| `aggregates.overallScore` | Средняя оценка кейсов по всему набору |

499| `aggregates.casesPassed`, `aggregates.casesTotal` | Кейсы на или выше `--threshold` и всего |499| `aggregates.casesPassed`, `aggregates.casesTotal` | Кейсы, достигшие `--threshold` или превысившие его, и общее количество |

500| `aggregates.meanDelta` | Среднее `Δ` по кейсам в двухarm режиме |500| `aggregates.meanDelta` | Средняя `Δ` по кейсам в режиме с двумя ветвями |

501| `cases[].name` | Имя кейса |501| `cases[].name` | Имя кейса |

502| `cases[].aggregates.score` | Средняя оценка запуска with-arm для кейса |502| `cases[].aggregates.score` | Средняя оценка запусков ветви с плагином для кейса |

503| `cases[].aggregates.delta` | Оценка with-arm минус оценка without-arm. Опущено, когда кейс запустил одну arm или arms не сравнимы |503| `cases[].aggregates.delta` | Оценка ветви с плагином минус оценка ветви без плагина. Отсутствует, если для кейса запускалась одна ветвь или ветви несопоставимы |

504| `cases[].arms.with[].error` | `null` или почему запуск закончился ненормально, такой как `timed out after 300s`. Запуск, который начался, но закончился плохо, все еще оценивается на том, что он произвел, поэтому non-null ошибка не подразумевает оценку 0 |504| `cases[].arms.with[].error` | `null` или причина аварийного завершения запуска, например `timed out after 300s`. Некоторые из таких запусков всё равно оцениваются по тому, что они успели произвести, поэтому ненулевая ошибка не означает оценку 0. Запуск, который [завершился ошибкой API](#runs-ended-on-an-api-error), получает оценку 0, и оценивание вообще не проводится |

505| `cases[].arms.with[].aborted` | Присутствует, когда [mock](#mock-mcp-servers) остановил запуск через `expect:`, `abort_when` или [бюджет вызовов agent-mock](#mock-call-budget-exceeded), с `server`, `tool` и `reason`. Запуск оценивается в 0 и `error` остается `null` |505| `cases[].arms.with[].aborted` | Присутствует, когда [мок](#mock-mcp-servers) остановил запуск через `expect:`, `abort_when` или [бюджет вызовов agent-mock](#mock-call-budget-exceeded), и содержит `server`, `tool` и `reason`. Запуск получает оценку 0, а `error` остаётся `null` |

506| `cases[].arms.with[].skippedPaidGraders` | `true`, когда потолок стоимости пропустил judge graders этого запуска, поэтому его оценка не сравнима |506| `cases[].arms.with[].skippedPaidGraders` | `true`, если из-за лимита стоимости грейдеры-судьи этого запуска были пропущены, поэтому его оценка несопоставима |

507| `costUsd`, `durationSeconds`, `claudeVersion` | Оценка стоимости по прейскуранту, включая judge вызовы, wall-clock секунды и версия Claude Code, которая запустила suite |507| `costUsd`, `durationSeconds`, `claudeVersion` | Оценочная стоимость по прейскурантным ценам с учётом вызовов судьи, фактическое время выполнения в секундах и версия Claude Code, которая запускала набор |

508 508 

509<h2 id="security">509<h2 id="security">

510 Что может получить доступ запуск510 Что может получить доступ запуск


722 722 

723До версии v2.1.283 `claude plugin eval` не проверял версию git, и на более старом git suite запускался с этими программами оставленными включенными.723До версии v2.1.283 `claude plugin eval` не проверял версию git, и на более старом git suite запускался с этими программами оставленными включенными.

724 724 

725<h3 id="cannot-be-evaluated-where-sessions-load-it">

726 "cannot be evaluated where sessions load it"

727</h3>

728 

729Вы запустили `claude plugin eval` в своей оболочке с именем плагина, установленного из маркетплейса, который вы [добавили по локальному пути](/docs/ru/plugins/loading#in-place-and-copied-plugins). Сейчас ни одна сессия не смогла бы загрузить плагин из этого маркетплейса, поэтому команда отказывает с этим сообщением и завершается с кодом 1.

730 

731```text theme={null}

732Error: formatter@my-marketplace cannot be evaluated where sessions load it: no session could load it now. Its marketplace is a folder whose catalog could not be read, or lists it no more. Check the marketplace with `claude plugin marketplace list`, or pass ./<dir> to evaluate a directory.

733```

734 

735Предложение после `no session could load it now.` указывает, что именно не удалось.

736 

737Выполните `claude plugin marketplace list` в своей оболочке и исправьте то, что указано в сообщении. Например, восстановите каталог маркетплейса или верните запись плагина в его каталог. Чтобы оценить исходный код плагина без маркетплейса, передайте его каталог в качестве цели, например `claude plugin eval ./plugins/formatter`.

738 

725<h3 id="no-eval-cases-found">739<h3 id="no-eval-cases-found">

726 "No eval cases found"740 "No eval cases found"

727</h3>741</h3>


772 The run exits 1 but the results look fine786 The run exits 1 but the results look fine

773</h3>787</h3>

774 788 

775Default `--threshold` — это 1.0, поэтому команда выходит 1, когда любой кейс оценен ниже совершенства. Установите порог, который соответствует требуемой оценке. Exit 1 также охватывает файл кейса, который не загружен, который сообщается на stderr выше таблицы.789Если каждый кейс получил оценку не ниже `--threshold`, а команда всё равно завершается с кодом 1, причина указывается в строке в stderr, даже при `--json`. Например, файл кейса не загрузился или запуски [завершились ошибкой API](#runs-ended-on-an-api-error). Другие причины см. в разделе [коды выхода](#run-evals-in-ci).

790 

791Значение `--threshold` по умолчанию — 1.0, поэтому команда завершается с кодом 1, если любой кейс получил оценку ниже идеальной. Задайте порог, соответствующий требуемой вами оценке.

776 792 

777<h3 id="json-output-path-must-end-in-json">793<h3 id="json-output-path-must-end-in-json">

778 `--json output path must end in .json`794 `--json output path must end in .json`


786 802 

787Этот grader исключен из оценки по дизайну в двухarm запуске, и его поле `scored` — это `false`. См. [Score against the no-plugin baseline](#compare-against-a-no-plugin-baseline).803Этот grader исключен из оценки по дизайну в двухarm запуске, и его поле `scored` — это `false`. См. [Score against the no-plugin baseline](#compare-against-a-no-plugin-baseline).

788 804 

805<h3 id="runs-ended-on-an-api-error">

806 "ended on an API error and scored 0 without grading"

807</h3>

808 

809Это предупреждение в stderr означает, что API ответил на последний запрос как минимум одного запуска HTTP-ошибкой, например из-за ограничения частоты запросов или лимита использования плана. Такой запуск получает оценку 0 без результатов грейдеров, а команда завершается с ненулевым кодом независимо от оценок и `--threshold`.

810 

811Чтобы исправить это, найдите ошибку каждого затронутого запуска и устраните указанную в ней причину, затем снова запустите набор тестов:

812 

813* **Без `--json`**: ошибка находится в конце строки прогресса запуска, после `error:`

814* **С `--json`**: ошибка находится в [JSON-результате](#json-result), в `cases[].arms.with[].error` или `cases[].arms.without[].error`

815 

816В подсчёт входят и [базовые](#the-no-plugin-baseline) запуски. Их оценки никогда не определяют, пройден ли кейс, поэтому все кейсы могут пройти, а команда всё равно завершится неудачей. В запуске с двумя ветками `W/OUT` и `Δ` затронутого кейса выводятся как `—`. О лимите использования или ограничении частоты запросов см. [Запуски завершаются ошибкой лимита использования или ограничения частоты запросов на полпути](#runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through).

817 

818До версии v2.1.299 такой запуск оценивался по тому, что он успел создать.

819 

789<h3 id="runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through">820<h3 id="runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through">

790 Runs fail with a usage-limit or rate-limit error partway through821 Runs fail with a usage-limit or rate-limit error partway through

791</h3>822</h3>

792 823 

793Если ваш аккаунт достигает лимита использования плана или API лимита скорости, пока suite запускается, каждый более поздний запуск заканчивается этой ошибкой, оценивается на том, что он произвел, и обычно оценивается в 0. Suite все еще завершается и не отмечена `partial`, поэтому результат может выглядеть как регрессия. Проверьте столбец `NOTES` или `cases[].arms.with[].error` в JSON для сообщения лимита перед тем как доверять оценкам, затем перезапустите после того как лимит сбросится, с `--runs 1` или фильтром `--case`, если вам нужно остаться под ним.824Запуски, завершившиеся ошибкой лимита использования или ограничения частоты запросов, [получают оценку 0 без проверки грейдерами](#runs-ended-on-an-api-error), а команда завершается с ненулевым кодом. Набор тестов всё равно доходит до конца и не помечается как `partial`. Перезапустите его после сброса лимита, с `--runs 1` или фильтром `--case`, если нужно уложиться в лимит.

794 825 

795<h3 id="mock-call-budget-exceeded">826<h3 id="mock-call-budget-exceeded">

796 "mock call budget exceeded"827 "mock call budget exceeded"

Details

523 523 

524| Код выхода | Значение |524| Код выхода | Значение |

525| :- | :- |525| :- | :- |

526| `0` | Каждый случай соответствует порогу |526| `0` | Набор пройден: каждый случай соответствует порогу, и ничто другое не привело к провалу запуска |

527| `1` | Неудачный случай, ошибка загрузки или недоверенный каталог плагина |527| `1` | Неудачный случай, ошибка загрузки, недоверенный каталог плагина, запуск, который [завершился ошибкой API](/docs/ru/plugin-evals#runs-ended-on-an-api-error), или другая причина, перечисленная в разделе [Запуск evals в CI](/docs/ru/plugin-evals#run-evals-in-ci) |

528| `2` | Частичный запуск |528| `2` | Частичный запуск |

529| `130` | Прервано |529| `130` | Прервано |

530| `143` | Завершено |530| `143` | Завершено |

Details

752 752 

753Frontmatter агента плагина следует этим правилам:753Frontmatter агента плагина следует этим правилам:

754 754 

755* **Поддерживаемые поля**: `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, `omitClaudeMd`, `isolation`, `color` и ключ `cacheTtl` из `experimental`. Единственное допустимое значение `isolation` — это `"worktree"`. См. [поддерживаемые поля frontmatter](/docs/ru/sub-agents#supported-frontmatter-fields) для того, что делает каждое755* **Поддерживаемые поля**: `name`, `description`, `model`, `effort`, `maxTurns`, `autoCompactWindow`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, `omitClaudeMd`, `isolation`, `color` и ключ `cacheTtl` из `experimental`. Единственное допустимое значение `isolation` — `"worktree"`. Что делает каждое из них, см. в разделе [поддерживаемые поля frontmatter](/docs/ru/sub-agents#supported-frontmatter-fields)

756* **Игнорируемые поля**: `permissionMode`, `hooks`, `mcpServers` и `initialPrompt`. Файл агента не может добавлять hooks или MCP серверы самостоятельно, поэтому добавляйте их как плагин [hooks](#hooks) и [MCP серверы](#mcp-servers) вместо этого756* **Игнорируемые поля**: `permissionMode`, `hooks`, `mcpServers` и `initialPrompt`. Файл агента не может добавлять hooks или MCP серверы самостоятельно, поэтому добавляйте их как плагин [hooks](#hooks) и [MCP серверы](#mcp-servers) вместо этого

757* **Frontmatter, который не парсится**: агент всё ещё загружается со всеми полями, игнорируемыми. Он назван по имени файла, и его описание читается как `Agent from my-plugin plugin`. Запустите [`claude plugin validate`](/docs/ru/plugins/cli-reference#plugin-validate) в вашей оболочке, чтобы найти эти файлы757* **Frontmatter, который не парсится**: агент всё ещё загружается со всеми полями, игнорируемыми. Он назван по имени файла, и его описание читается как `Agent from my-plugin plugin`. Запустите [`claude plugin validate`](/docs/ru/plugins/cli-reference#plugin-validate) в вашей оболочке, чтобы найти эти файлы

758 758 

Details

237 237 

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

239 239 

240<h3 id="dependencies-when-your-plugin-loads-from-claude-ai">

241 Зависимости, когда ваш плагин загружается из claude.ai

242</h3>

243 

244Когда пользователь включает ваш плагин для своей учётной записи claude.ai, Claude Code загружает его как `<name>@synced`, [без маркетплейса](/docs/ru/plugins/loading#synced-plugins). Для этой копии вашего плагина Claude Code считает запись зависимости, в которой указан маркетплейс, выполненной, если у пользователя есть одно из следующего:

245 

246* **Зависимость из её маркетплейса**: установлена из маркетплейса, указанного в вашей записи, и включена. Claude Code проверяет диапазон `version` в вашей записи по версии установленной копии.

247* **Плагин claude.ai с тем же именем**: включён из учётной записи claude.ai пользователя. Claude Code проверяет диапазон `version` в вашей записи по `version` этого плагина, а плагин, в котором не указана `version`, проходит проверку.

248 

249Если вы предлагаете пользователям включать ваш плагин из claude.ai, попросите их также включить там зависимость или установить её из её маркетплейса.

250 

251Плагин claude.ai удовлетворяет записи, только когда ваш плагин тоже загружается из claude.ai.

252 

240<h2 id="see-also">253<h2 id="see-also">

241 См. также254 См. также

242</h2>255</h2>

Details

252 252 

253Чтобы остановить промпт, верните `{ drop: 'the reason' }`, не вызывая `next`. Текст возвращается в поле ввода промпта пользователя, и он видит `Prompt dropped by a hook:`, а затем вашу причину, поэтому адресуйте причину ему. Если ваш хук возвращает `drop` после того, как его вызов `next(e)` уже пропустил промпт, ход всё равно выполняется, а хук [завершается ошибкой](#handle-a-hook-that-fails) с сообщением, содержащим `a drop after its next() was answered`.253Чтобы остановить промпт, верните `{ drop: 'the reason' }`, не вызывая `next`. Текст возвращается в поле ввода промпта пользователя, и он видит `Prompt dropped by a hook:`, а затем вашу причину, поэтому адресуйте причину ему. Если ваш хук возвращает `drop` после того, как его вызов `next(e)` уже пропустил промпт, ход всё равно выполняется, а хук [завершается ошибкой](#handle-a-hook-that-fails) с сообщением, содержащим `a drop after its next() was answered`.

254 254 

255[Другие события](/docs/ru/plugins/mods/reference#prompts-and-what-claude-reads) охватывают остальное, что читает Claude: `prompt.section` для каждого раздела системного промпта, `prompt.context` для контекста, отправляемого с первым сообщением, и `skill.prompt` для текста скилла. Текст из этих хуков, меняющийся между запросами, [делает недействительным кэш промптов](/docs/ru/prompt-caching).255[Другие события](/docs/ru/plugins/mods/reference#prompts-and-what-claude-reads) охватывают остальное, что читает Claude: `prompt.section` для каждого раздела системного промпта, `prompt.context` для контекста, отправляемого с первым сообщением, и `skill.prompt` для текста скилла. Текст из этих хуков, меняющийся между запросами, [делает недействительным кэш промптов](/docs/ru/prompt-caching). В хуке `skill.prompt` вы также можете прочитать, [из какого плагина или файла получен скилл](/docs/ru/plugins/mods/reference#skill-prompt-fields).

256 256 

257<h3 id="follow-a-turn">257<h3 id="follow-a-turn">

258 Следить за ходом258 Следить за ходом

Details

212 Где работают моды212 Где работают моды

213</h3>213</h3>

214 214 

215Хуки мода работают в каждом типе сессии, которая загружает плагин. С рисованием все ограниченнее: только терминал и приложение Desktop показывают панели, полосы и замененные строки мода. В этой таблице перечислены все места, где вы можете запустить Claude Code:215Хуки мода работают в каждом типе сессии, которая загружает плагин, независимо от того, какой провайдер обслуживает модель, включая Amazon Bedrock, Agent Platform от Google Cloud и Microsoft Foundry. С рисованием все ограниченнее: только терминал и приложение Desktop показывают панели, полосы и замененные строки мода. В этой таблице перечислены все места, где вы можете запустить Claude Code:

216 216 

217| Где вы запускаете Claude Code | Хуки работают | То, что рисует мод, отображается |217| Где вы запускаете Claude Code | Хуки работают | То, что рисует мод, отображается |

218| :- | :- | :- |218| :- | :- | :- |


263| `cc-plugin-plugin-authoring` | Дает Claude [скилл `plugin-authoring`](/docs/ru/plugins/mods/create#ask-claude-for-a-mod) для написания модов. Он содержит скилл и не содержит кода мода. | Если Anthropic не отключила установленные моды удаленно | Отключите его в `/plugin` |263| `cc-plugin-plugin-authoring` | Дает Claude [скилл `plugin-authoring`](/docs/ru/plugins/mods/create#ask-claude-for-a-mod) для написания модов. Он содержит скилл и не содержит кода мода. | Если Anthropic не отключила установленные моды удаленно | Отключите его в `/plugin` |

264| `cc-plugin-sec-default` | Защищает то, чем управляет ваша организация, от модов, которые устанавливает пользователь | [Где загружается защита](/docs/ru/plugins/mods/admin#know-what-happens-by-default) | Никак. Администратор [задает порядок](/docs/ru/plugins/mods/admin#install-your-organizations-mods) в управляемых настройках |264| `cc-plugin-sec-default` | Защищает то, чем управляет ваша организация, от модов, которые устанавливает пользователь | [Где загружается защита](/docs/ru/plugins/mods/admin#know-what-happens-by-default) | Никак. Администратор [задает порядок](/docs/ru/plugins/mods/admin#install-your-organizations-mods) в управляемых настройках |

265| `cc-plugin-telemetry` | Отправляет записи аналитики, которые записывают в лог Claude Code и его встроенные моды | Везде, где включена собственная аналитика Claude Code | Отключите его в `/plugin` или отключите аналитику, например с помощью [`DISABLE_TELEMETRY`](/docs/ru/env-vars) |265| `cc-plugin-telemetry` | Отправляет записи аналитики, которые записывают в лог Claude Code и его встроенные моды | Везде, где включена собственная аналитика Claude Code | Отключите его в `/plugin` или отключите аналитику, например с помощью [`DISABLE_TELEMETRY`](/docs/ru/env-vars) |

266| `cc-plugin-you-should-know` | Запускает вспомогательного агента, который подстраховывает вас, пока Claude работает над более длительными задачами. Когда он находит что-то, что стоит знать и что вы можете упустить, он показывает вам заметку над промптом. | Отключено по умолчанию. Указано в `/plugin` -> **Installed** -> **Show disabled**, если доступно для вашей организации. Включите с помощью [`/plugin enable cc-plugin-you-should-know@builtin`](/docs/ru/plugins/cli-reference#plugin-in-a-session). | Отключите его в `/plugin` |266| `cc-plugin-you-should-know` | [You should know](/docs/ru/interactive-mode#you-should-know-suggestions): вспомогательный агент показывает заметку над промптом, когда находит что-то, что вы могли упустить | Отключено, пока вы [не включите его](/docs/ru/interactive-mode#you-should-know-suggestions) | Отключите его в `/plugin` |

267 267 

268Настройки и флаги, которые останавливают установленные моды, такие как `disableAllHooks`, `--bare` и `--safe-mode`, не останавливают встроенные моды.268Настройки и флаги, которые останавливают установленные моды, такие как `disableAllHooks`, `--bare` и `--safe-mode`, не останавливают встроенные моды.

269 269 

Details

43| `next.origin` | `{ plugin, tier }` того, кто инициировал событие. Сам Claude Code — это `{ plugin: 'engine', tier: 'core' }`. `tier` мода — это его группа приоритета в [порядке запуска модов](/docs/ru/plugins/mods/events#the-order-mods-run-in): `prepend`, `user`, `append` или `builtin`. |43| `next.origin` | `{ plugin, tier }` того, кто инициировал событие. Сам Claude Code — это `{ plugin: 'engine', tier: 'core' }`. `tier` мода — это его группа приоритета в [порядке запуска модов](/docs/ru/plugins/mods/events#the-order-mods-run-in): `prepend`, `user`, `append` или `builtin`. |

44| `next.budget` | Ограничение времени хука в миллисекундах: `next.budget.ms` — всё ограничение, а `next.budget.remainingMs` — оставшееся на данный момент время |44| `next.budget` | Ограничение времени хука в миллисекундах: `next.budget.ms` — всё ограничение, а `next.budget.remainingMs` — оставшееся на данный момент время |

45| `next.to(e, tier)` | Переходит к более позднему уровню: `append`, `builtin` или `core`. `next.to(e, 'append')` пропускает моды, установленные пользователем. Вызвать его может только мод из `prependPlugins` или `appendPlugins`. |45| `next.to(e, tier)` | Переходит к более позднему уровню: `append`, `builtin` или `core`. `next.to(e, 'append')` пропускает моды, установленные пользователем. Вызвать его может только мод из `prependPlugins` или `appendPlugins`. |

46| `next.error` | Только в обработчике `.catch`. `kind` — это `throw` или `timeout`, если хук завершился сбоем, а `message` — текст ошибки. `kind` равно `re-entry`, если хук был пропущен, потому что событие возникло внутри одного из его собственных вызовов API модов, а `cause` равно `lent`, если это событие инициировал метод, который другой мод добавляет в API модов. Для `re-entry` и `cause` требуется Claude Code v2.1.292 или новее. |46| `next.error` | Только в обработчике `.catch`. `kind` — это `throw` или `timeout`, если хук завершился сбоем, а `message` — текст ошибки. `kind` равно `re-entry`, если хук был пропущен, потому что событие возникло внутри вызова API модов, сделанного этим хуком или кодом вашего мода вне его хуков. Для `re-entry` требуется Claude Code v2.1.292 или новее. |

47| `next.error.cause` | Задаётся, только когда `kind` равно `re-entry`. `rewritten`, если хук `tool.call` или [`PreToolUse`](/docs/ru/hooks#pretooluse) изменил вызов API модов, из которого возникло событие, или хук `agent.spawn` изменил агента, запущенного этим вызовом. `lent`, если это событие инициировал метод, который другой мод добавляет в API модов, если только не применимо также `rewritten`. Для `lent` требуется Claude Code v2.1.292 или новее, а для `rewritten` — v2.1.300 или новее. |

47| `next.called` | Только в обработчике `.catch`. `true`, если хук вызвал `next`. |48| `next.called` | Только в обработчике `.catch`. `true`, если хук вызвал `next`. |

48 49 

49<h2 id="events">50<h2 id="events">


97| [`skill.prompt`](/docs/ru/plugins/mods/events#rewrite-or-add-to-a-prompt) | Текст скилла раскрывается для Claude | `{ text }` |98| [`skill.prompt`](/docs/ru/plugins/mods/events#rewrite-or-add-to-a-prompt) | Текст скилла раскрывается для Claude | `{ text }` |

98| `attribution.text` | Claude Code составляет текст атрибуции для коммита или pull request | `{ text }` |99| `attribution.text` | Claude Code составляет текст атрибуции для коммита или pull request | `{ text }` |

99 100 

101<h4 id="skill-prompt-fields">

102 Поля источника и frontmatter в `skill.prompt`

103</h4>

104 

105В хуке `skill.prompt` можно читать эти поля наряду с именем скилла в `e.skill` и текстом, который читает Claude, в `e.text`:

106 

107| Поле | Тип | Что содержит |

108| :- | :- | :- |

109| `e.source` | string | Кто предоставляет скилл: `policySettings`, `userSettings` или `projectSettings` для скилла в корпоративном, личном или проектном [расположении](/docs/ru/skills#where-skills-live) соответственно. Другие источники дают слово вроде `plugin`, `mcp`, `syncedSkills` или `built-in`. |

110| `e.pluginName` | string | Имя плагина для скилла, у которого `e.source` равно `plugin` |

111| `e.path` | string | Абсолютный путь к файлу `SKILL.md` скилла или к его файлу `.md` для скилла, написанного как [файл команды](/docs/ru/skills#where-skills-live). Отсутствует, если у скилла нет файла на этой машине, как у встроенного скилла. |

112| `e.frontmatter` | object | Frontmatter файла скилла в виде простых данных |

113| `e.frontmatterProblem` | string | Причина, по которой в `e.frontmatter` отсутствует frontmatter файла или один из его ключей, например `is a list or a single value, not a table`. Отсутствует, если `e.frontmatter` содержит весь frontmatter или у скилла его нет. |

114 

115Хук может передать изменённые `text` или `frontmatter` в `next`: хуки после него читают оба поля, а Claude читает итоговый `text`. Хук, который изменяет любое другое поле, [завершается ошибкой](/docs/ru/plugins/mods/events#handle-a-hook-that-fails).

116 

117В `skill.prompt` поля `e.source`, `e.pluginName`, `e.path`, `e.frontmatter` и `e.frontmatterProblem` требуют Claude Code v2.1.299 или новее.

118 

100<h3 id="commands-and-configuration">119<h3 id="commands-and-configuration">

101 Команды и конфигурация120 Команды и конфигурация

102</h3>121</h3>

Details

31* [**Skills**](/docs/ru/plugins/components#skills): инструкции `SKILL.md`, которые Claude загружает при необходимости, и которые вы также можете запустить как команду31* [**Skills**](/docs/ru/plugins/components#skills): инструкции `SKILL.md`, которые Claude загружает при необходимости, и которые вы также можете запустить как команду

32* [**Agents**](/docs/ru/plugins/components#agents): определения подагентов, которым Claude может делегировать32* [**Agents**](/docs/ru/plugins/components#agents): определения подагентов, которым Claude может делегировать

33* [**Hooks**](/docs/ru/plugins/components#hooks): команды, которые Claude Code запускает в точках своего жизненного цикла, например после каждого редактирования33* [**Hooks**](/docs/ru/plugins/components#hooks): команды, которые Claude Code запускает в точках своего жизненного цикла, например после каждого редактирования

34* [**A hooks module**](/docs/ru/plugins/mods/overview): hooks, написанные как функции JavaScript, которые также могут рисовать панели и добавлять команды. Plugin, который имеет один, называется mod34* [**Модуль хуков**](/docs/ru/plugins/mods/overview): хуки, написанные как функции JavaScript, которые также могут рисовать панели и добавлять команды. Плагин, в котором он есть, называется модом. Некоторые моды [встроены в Claude Code](/docs/ru/plugins/mods/overview#mods-built-into-claude-code).

35* [**MCP servers**](/docs/ru/plugins/components#mcp-servers): серверы инструментов, к которым Claude Code подключается, пока plugin включен35* [**MCP servers**](/docs/ru/plugins/components#mcp-servers): серверы инструментов, к которым Claude Code подключается, пока plugin включен

36 36 

37На этой диаграмме показан plugin с именем `my-plugin`, который содержит skill, agent, hooks и MCP server, и что вы получаете от каждого файла после загрузки plugin.37На этой диаграмме показан plugin с именем `my-plugin`, который содержит skill, agent, hooks и MCP server, и что вы получаете от каждого файла после загрузки plugin.

Details

693| Сообщение | Значение | Как разрешить |693| Сообщение | Значение | Как разрешить |

694| :- | :- | :- |694| :- | :- | :- |

695| `Dependency "<dep>" is not installed` | Объявленная зависимость не установлена. | Установите её в вашей оболочке с помощью `claude plugin install <dep>@<marketplace>` или удалите плагин. Если маркетплейс зависимости ещё не зарегистрирован, добавьте его и запустите `/reload-plugins` в вашей сессии, который устанавливает отсутствующие зависимости, которые он может разрешить. |695| `Dependency "<dep>" is not installed` | Объявленная зависимость не установлена. | Установите её в вашей оболочке с помощью `claude plugin install <dep>@<marketplace>` или удалите плагин. Если маркетплейс зависимости ещё не зарегистрирован, добавьте его и запустите `/reload-plugins` в вашей сессии, который устанавливает отсутствующие зависимости, которые он может разрешить. |

696| `"<name>@synced" is loaded from your claude.ai account but meets a marketplace dependency only for other claude.ai plugins` внутри сообщения `is not installed` | Зависимость указывает маркетплейс, и плагин с таким именем загружен из вашей учётной записи claude.ai. Плагин, который объявляет зависимость, не загружается из claude.ai, поэтому плагин из claude.ai её не удовлетворяет. | В вашей оболочке запустите `claude plugin install <dep>@<marketplace>`, чтобы установить зависимость из её маркетплейса. После этого вместо копии из claude.ai загружается копия из маркетплейса. |

696| `Dependency "<dep>" is disabled` | Зависимость установлена, но отключена. | Включите зависимость или удалите плагин, который её требует. |697| `Dependency "<dep>" is disabled` | Зависимость установлена, но отключена. | Включите зависимость или удалите плагин, который её требует. |

697| `Requires "<dep>" <range>, installed <version>` | Версия установленной зависимости находится вне объявленного диапазона плагина. | Обновите зависимость до версии в диапазоне или удалите плагин. |698| `Requires "<dep>" <range>, installed <version>` | Версия установленной зависимости находится вне объявленного диапазона плагина. | Обновите зависимость до версии в диапазоне или удалите плагин. |

698| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Ни одна версия не удовлетворяет каждому диапазону, который её закрепляет. Сообщение перечисляет диапазоны. | Удалите или обновите один из конфликтующих плагинов или попросите автора вышестоящего уровня расширить его ограничение. |699| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Ни одна версия не удовлетворяет каждому диапазону, который её закрепляет. Сообщение перечисляет диапазоны. | Удалите или обновите один из конфликтующих плагинов или попросите автора вышестоящего уровня расширить его ограничение. |


700| `... has no git tag satisfying <range>` | Репозиторий зависимости не имеет тега `<name>--v*` в диапазоне. | Проверьте, что вышестоящий уровень помечает выпуски этим соглашением, или ослабьте диапазон. |701| `... has no git tag satisfying <range>` | Репозиторий зависимости не имеет тега `<name>--v*` в диапазоне. | Проверьте, что вышестоящий уровень помечает выпуски этим соглашением, или ослабьте диапазон. |

701| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | Зависимость находится в другом маркетплейсе, и разрешение между маркетплейсами отключено по умолчанию. | Установите зависимость самостоятельно в той же области действия, в вашей оболочке с помощью `claude plugin install <dep>@<marketplace>` плюс `--scope`, в котором вы устанавливаете плагин, затем повторите попытку. |702| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | Зависимость находится в другом маркетплейсе, и разрешение между маркетплейсами отключено по умолчанию. | Установите зависимость самостоятельно в той же области действия, в вашей оболочке с помощью `claude plugin install <dep>@<marketplace>` плюс `--scope`, в котором вы устанавливаете плагин, затем повторите попытку. |

702 703 

703Чтобы увидеть это программно, запустите `claude plugin list --json` в вашей оболочке. Плагины с проблемами содержат поле `errors` с сообщениями и поле `errorDetails` с `type` для каждого: первые две строки — `dependency-unsatisfied`, а третья — `dependency-version-unsatisfied`.704Чтобы увидеть это программно, запустите `claude plugin list --json` в вашей оболочке. Плагины с проблемами содержат поле `errors` с сообщениями и поле `errorDetails` с `type` для каждого: первые три строки — `dependency-unsatisfied`, а четвёртая — `dependency-version-unsatisfied`.

704 705 

705<h2 id="plugin-installed-but-not-working">706<h2 id="plugin-installed-but-not-working">

706 Плагин установлен, но не работает707 Плагин установлен, но не работает

Details

211 Сжатие контекста работает в вашу пользу, когда отбрасываемый контекст — это содержимое, которое вам больше не нужно. Чтобы самостоятельно выбирать, когда возникают его накладные расходы, запускайте `/compact` в естественных паузах в работе, например между задачами, вместо того чтобы ждать, пока автосжатие сработает в середине задачи. Если вы пошли по пути, от которого хотите полностью отказаться, вместо этого выполните [`/rewind`](#rewinding-the-conversation) к более раннему ходу. Перемотка усекает диалог до префикса, который уже кэширован, а не создаёт новый, как это делает сжатие.211 Сжатие контекста работает в вашу пользу, когда отбрасываемый контекст — это содержимое, которое вам больше не нужно. Чтобы самостоятельно выбирать, когда возникают его накладные расходы, запускайте `/compact` в естественных паузах в работе, например между задачами, вместо того чтобы ждать, пока автосжатие сработает в середине задачи. Если вы пошли по пути, от которого хотите полностью отказаться, вместо этого выполните [`/rewind`](#rewinding-the-conversation) к более раннему ходу. Перемотка усекает диалог до префикса, который уже кэширован, а не создаёт новый, как это делает сжатие.

212</Tip>212</Tip>

213 213 

214Если вы оставляете длинный диалог без активности в сессии терминала, пока он использует [одночасовой TTL](#which-ttl-each-request-gets), Claude Code может сжать его незадолго до истечения срока действия кэша. Чтобы отключить сжатие при простое, установите для [`idleCompaction`](/docs/ru/settings-reference#idlecompaction) значение `false`; для этого требуется Claude Code v2.1.290 или более поздней версии.

215 

214<h3 id="accumulating-many-images">216<h3 id="accumulating-many-images">

215 Накопление большого количества изображений217 Накопление большого количества изображений

216</h3>218</h3>

Details

261 261 

262Биометрические проверки выполняются на устройстве через операционную систему или браузер, тот же механизм, что и вход с passkey. Anthropic никогда не получает и не хранит отпечатки пальцев, данные лица или любую другую биометрическую информацию. Хранятся только открытый ключ устройства и основные метаданные, такие как отображаемое имя, платформа и время регистрации.262Биометрические проверки выполняются на устройстве через операционную систему или браузер, тот же механизм, что и вход с passkey. Anthropic никогда не получает и не хранит отпечатки пальцев, данные лица или любую другую биометрическую информацию. Хранятся только открытый ключ устройства и основные метаданные, такие как отображаемое имя, платформа и время регистрации.

263 263 

264Настройка применяется к Remote Control как в Claude Code, так и в [Cowork](https://claude.com/docs/cowork/overview). На этой странице рассматривается сторона Claude Code. Обычный чат Claude, Claude Code в терминале и использование API не затронуты.264Настройка применяется к Remote Control в Claude Code и к Computer access в [Cowork](https://claude.com/docs/cowork/overview). На этой странице рассматривается сторона Claude Code. Обычный чат Claude, Claude Code в терминале и использование API не затронуты.

265 265 

266<h3 id="enable-trusted-devices-for-your-organization">266<h3 id="enable-trusted-devices-for-your-organization">

267 Включение доверенных устройств для организации Team или Enterprise267 Включение доверенных устройств для организации Team или Enterprise

routines.md +28 −15

Details

52 52 

53Форма создания настраивает подсказку рутины, репозитории, окружение, коннекторы и триггеры.53Форма создания настраивает подсказку рутины, репозитории, окружение, коннекторы и триггеры.

54 54 

55Рутины работают автономно как полные облачные сеансы Claude Code: нет выбора режима разрешений, и сеанс запускает команды shell, использует [skills](/docs/ru/skills), зафиксированные в клонированном репозитории, и вызывает любые коннекторы, которые вы включите, все без остановки для одобрения, кроме некоторых действий с [artifact](/docs/ru/artifacts).55Рутины работают автономно как полноценные облачные сессии Claude Code: выбора режима разрешений нет, и сессия выполняет команды оболочки, использует [скиллы](/docs/ru/skills), закоммиченные в клонированный репозиторий, и вызывает любые коннекторы, которые вы включите, — все это без остановки для подтверждения, кроме некоторых [действий с артефактами](#when-a-run-publishes-an-artifact-without-asking).

56 56 

57То, что может достичь рутина, определяется выбранными вами репозиториями, [окружением](/docs/ru/cloud-environments) сетевого доступа и переменных, а также включенными коннекторами. Ограничьте каждый из них тем, что рутине действительно нужно.57То, что может достичь рутина, определяется выбранными вами репозиториями, [окружением](/docs/ru/cloud-environments) сетевого доступа и переменных, а также включенными коннекторами. Ограничьте каждый из них тем, что рутине действительно нужно.

58 58 

59Когда расписание рутины или **Run now** запускает запуск, Claude переиздает существующий artifact без запроса только когда все это верно:

60 

61* Вы можете редактировать artifact и он принадлежит вашей собственной организации

62* Artifact не является общедоступным

63* Если artifact совместно используется с конкретными людьми или вашей организацией, его зрители не видят автоматически каждую новую версию

64* Переиздание содержит только страницу, без вспомогательных файлов или чего-либо еще добавленного, и не заставляет перезаписать более новую версию

65* Страница не содержит разрешение, которое выходит за пределы страницы, такое как [вызовы коннектора](/docs/ru/artifacts#pull-live-data-with-mcp-connectors)

66 

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

68 

69Рутины принадлежат вашему индивидуальному аккаунту claude.ai. Они не совместно используются с товарищами по команде и их запуски учитываются в [использовании и лимитах](#usage-and-limits) вашего аккаунта. Все, что рутина делает через вашу подключенную идентификацию GitHub или коннекторы, отображается как вы: коммиты и pull request несут вашего пользователя GitHub, а сообщения Slack, задачи Linear или другие действия коннектора используют ваши связанные аккаунты для этих сервисов.59Рутины принадлежат вашему индивидуальному аккаунту claude.ai. Они не совместно используются с товарищами по команде и их запуски учитываются в [использовании и лимитах](#usage-and-limits) вашего аккаунта. Все, что рутина делает через вашу подключенную идентификацию GitHub или коннекторы, отображается как вы: коммиты и pull request несут вашего пользователя GitHub, а сообщения Slack, задачи Linear или другие действия коннектора используют ваши связанные аккаунты для этих сервисов.

70 60 

71<h3 id="create-from-the-web">61<h3 id="create-from-the-web">


93 Выберите [облачное окружение](/docs/ru/cloud-environments) для рутины. Окружения контролируют, к чему имеет доступ облачный сеанс:83 Выберите [облачное окружение](/docs/ru/cloud-environments) для рутины. Окружения контролируют, к чему имеет доступ облачный сеанс:

94 84 

95 * **Network access**: установите уровень доступа в Интернет, доступный во время каждого запуска85 * **Network access**: установите уровень доступа в Интернет, доступный во время каждого запуска

96 * **Environment variables**: предоставьте значения, которые Claude может использовать во время каждого запуска. Они [видны всем, кто использует окружение](/docs/ru/cloud-environments#what-carries-over-from-your-setup), поэтому в планах Pro и Max храните ключи для API, которые Claude вызывает во время запуска, в виде [сетевых секретов](/docs/ru/cloud-environments#add-network-secrets). В этом разделе также перечислены запросы, которые никогда не получают секрет86 * **Environment variables**: предоставьте значения, которые Claude может использовать во время каждого запуска. Они [видны всем, кто использует окружение](/docs/ru/cloud-environments#what-carries-over-from-your-setup), поэтому в окружении, размещенном Anthropic, храните ключи для API, которые Claude вызывает во время запуска, в виде [сетевых секретов](/docs/ru/cloud-environments#add-network-secrets). В этом разделе также перечислены запросы, которые никогда не получают секрет

97 * **Setup script**: установите зависимости и инструменты, которые нужны рутине. Результат [кэшируется](/docs/ru/cloud-environments#environment-caching), поэтому скрипт не переустанавливается при каждом сеансе87 * **Setup script**: установите зависимости и инструменты, которые нужны рутине. Результат [кэшируется](/docs/ru/cloud-environments#environment-caching), поэтому скрипт не переустанавливается при каждом сеансе

98 88 

99 Предоставляется окружение **Default** с доступом в сеть **Trusted**, который позволяет только [набор по умолчанию](/docs/ru/cloud-environments#default-allowed-domains) реестров пакетов, API облачных провайдеров, реестров контейнеров и распространенных доменов разработки через сеть сеанса. Коннекторы, которые вы добавляете к рутине, достигают своих сервисов через серверы Anthropic, поэтому им не нужны изменения списка разрешений. Если вашей рутине нужно достичь ваших собственных сервисов напрямую или домена вне этого списка, отредактируйте [сетевой доступ](/docs/ru/cloud-environments#network-access) окружения перед запуском. Чтобы использовать отдельное окружение, [создайте его](/docs/ru/cloud-environments#configure-your-environment) сначала.89 Предоставляется окружение **Default** с доступом в сеть **Trusted**, который позволяет только [набор по умолчанию](/docs/ru/cloud-environments#default-allowed-domains) реестров пакетов, API облачных провайдеров, реестров контейнеров и распространенных доменов разработки через сеть сеанса. Коннекторы, которые вы добавляете к рутине, достигают своих сервисов через серверы Anthropic, поэтому им не нужны изменения списка разрешений. Если вашей рутине нужно достичь ваших собственных сервисов напрямую или домена вне этого списка, отредактируйте [сетевой доступ](/docs/ru/cloud-environments#network-access) окружения перед запуском. Чтобы использовать отдельное окружение, [создайте его](/docs/ru/cloud-environments#configure-your-environment) сначала.


182 172 

183Триггер API предоставляет рутине выделенную конечную точку HTTP. Отправка POST-запроса на конечную точку с токеном-носителем рутины запускает новый сеанс и возвращает URL сеанса. Используйте это для интеграции Claude Code в системы оповещений, конвейеры развёртывания, внутренние инструменты или в любое место, где вы можете сделать аутентифицированный HTTP-запрос.173Триггер API предоставляет рутине выделенную конечную точку HTTP. Отправка POST-запроса на конечную точку с токеном-носителем рутины запускает новый сеанс и возвращает URL сеанса. Используйте это для интеграции Claude Code в системы оповещений, конвейеры развёртывания, внутренние инструменты или в любое место, где вы можете сделать аутентифицированный HTTP-запрос.

184 174 

185Триггеры API добавляются к существующей рутине из веб-интерфейса. CLI в настоящее время не может создавать или отзывать токены.175Триггеры API добавляются к существующей рутине из веб-интерфейса. CLI в настоящее время не может создавать, перевыпускать или удалять токены.

186 176 

187<Steps>177<Steps>

188 <Step title="Open the routine for editing">178 <Step title="Open the routine for editing">


202 </Step>192 </Step>

203</Steps>193</Steps>

204 194 

205Каждая рутина имеет свой токен, ограниченный только запуском этой рутины. Чтобы ротировать или отозвать его, вернитесь в то же модальное окно и нажмите **Regenerate** или **Revoke**.195Каждая рутина имеет свой токен, ограниченный только запуском этой рутины. Чтобы отключить доступ через API или ротировать токен, вернитесь в то же модальное окно:

196 

197* **Отключить доступ через API**: нажмите **Delete token** — значок корзины рядом с **Regenerate**

198* **Ротировать токен**: нажмите **Regenerate**

206 199 

207<h4 id="trigger-a-routine">200<h4 id="trigger-a-routine">

208 Запустить рутину201 Запустить рутину


379 372 

380Чтобы управлять или добавлять коннекторы вне формы рутины, посетите [claude.ai/customize/connectors](https://claude.ai/customize/connectors) или используйте `/schedule update` в CLI.373Чтобы управлять или добавлять коннекторы вне формы рутины, посетите [claude.ai/customize/connectors](https://claude.ai/customize/connectors) или используйте `/schedule update` в CLI.

381 374 

375<h3 id="when-a-run-publishes-an-artifact-without-asking">

376 Когда запуск публикует артефакт без запроса

377</h3>

378 

379Когда запуск начинается по расписанию рутины или по кнопке **Run now**, Claude может опубликовать новый [артефакт](/docs/ru/artifacts) без запроса. Новый артефакт виден только вам, пока вы [не поделитесь им](/docs/ru/artifacts#share-an-artifact). Если публикация объявляет возможности времени выполнения для страницы, такие как [вызовы коннекторов](/docs/ru/artifacts#pull-live-data-with-mcp-connectors) или [загрузка файлов](/docs/ru/artifacts#offer-a-file-download), Claude сначала спрашивает.

380 

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

382 

383* Вы можете редактировать артефакт, и он принадлежит вашей собственной организации

384* Если публикация содержит больше, чем саму страницу, например вспомогательные файлы, вы являетесь владельцем артефакта

385* Артефакт не опубликован для общего доступа

386* Если артефакт доступен определённым людям или вашей организации, его зрители не видят автоматически каждую новую версию

387* Публикация не перезаписывает принудительно более новую версию

388* Публикация не объявляет возможности времени выполнения для страницы

389* Существующая страница не имеет разрешений, выходящих за пределы страницы, таких как [вызовы коннекторов](/docs/ru/artifacts#pull-live-data-with-mcp-connectors)

390 

391Во всех остальных случаях, включая запуск, начатый триггером API или GitHub, Claude сначала спрашивает.

392 

393Если задача рутины — поддерживать страницу в актуальном состоянии, предоставьте ей артефакт, который вы уже опубликовали.

394 

382<h3 id="environments-and-network-access">395<h3 id="environments-and-network-access">

383 Окружения и сетевой доступ396 Окружения и сетевой доступ

384</h3>397</h3>


403 </Step>416 </Step>

404 417 

405 <Step title="Измените уровень сетевого доступа">418 <Step title="Измените уровень сетевого доступа">

406 В диалоговом окне **Edit environment** измените **Network access** на **Custom** и введите ваши домены в **Allowed domains**. Установите флажок **Also include default list of common package managers**, чтобы сохранить [список разрешённых доменов по умолчанию](/docs/ru/cloud-environments#default-allowed-domains) вместе с вашими пользовательскими доменами. Выберите вместо этого **Full** для неограниченного доступа.419 В диалоговом окне **Edit cloud environment** измените **Network access** на **Custom** и введите ваши домены в **Allowed domains**. Установите флажок **Also include default list of common package managers**, чтобы сохранить [список разрешённых доменов по умолчанию](/docs/ru/cloud-environments#default-allowed-domains) вместе с вашими пользовательскими доменами. Выберите вместо этого **Full** для неограниченного доступа.

407 </Step>420 </Step>

408 421 

409 <Step title="Сохранить">422 <Step title="Сохранить">

Details

79 79 

80В сеансе, где доступен [инструмент Monitor](/docs/ru/tools-reference#monitor-tool), Claude может использовать его напрямую, когда вы просите динамическое расписание `/loop`. Monitor запускает фоновый скрипт и передает каждую строку вывода обратно, что полностью избегает опроса и часто более эффективно по токенам и отзывчиво, чем повторный запуск подсказки с интервалом.80В сеансе, где доступен [инструмент Monitor](/docs/ru/tools-reference#monitor-tool), Claude может использовать его напрямую, когда вы просите динамическое расписание `/loop`. Monitor запускает фоновый скрипт и передает каждую строку вывода обратно, что полностью избегает опроса и часто более эффективно по токенам и отзывчиво, чем повторный запуск подсказки с интервалом.

81 81 

82Динамически запланированный цикл отображается в вашем [списке запланированных задач](#manage-scheduled-tasks) как любая другая задача, поэтому вы можете перечислить или отменить его таким же образом. [Правила jitter](#jitter) к нему не применяются, но [семидневное истечение](#seven-day-expiry) применяется.82Динамически запланированный цикл отображается в вашем [списке запланированных задач](#manage-scheduled-tasks) как любая другая задача, поэтому вы можете вывести его в списке или отменить тем же способом. Список показывает его ожидающее пробуждение как одноразовую задачу, поэтому пробуждение, запланированное на `:00` или `:30`, может [запуститься немного раньше](#when-a-one-shot-task-runs-early). [Семидневное истечение срока](#seven-day-expiry) также применяется к циклу.

83 83 

84<span id="loop-provider-differences" />84<span id="loop-provider-differences" />

85 85 


174| Инструмент | Назначение |174| Инструмент | Назначение |

175| :- | :- |175| :- | :- |

176| `CronCreate` | Запланировать новую задачу. Принимает 5-полевое выражение cron, подсказку для запуска и указание на то, повторяется ли она или срабатывает один раз. |176| `CronCreate` | Запланировать новую задачу. Принимает 5-полевое выражение cron, подсказку для запуска и указание на то, повторяется ли она или срабатывает один раз. |

177| `CronList` | Перечислить все запланированные задачи с их ID, расписаниями и подсказками. |177| `CronList` | Перечислить запланированные задачи с их ID, расписаниями, [временем следующего запуска](#jitter) и промптами. |

178| `CronDelete` | Отменить задачу по ID. |178| `CronDelete` | Отменить задачу по ID. |

179 179 

180Каждая запланированная задача имеет 8-символьный ID, который вы можете передать в `CronDelete`. Сеанс может одновременно содержать до 50 запланированных задач.180Каждая запланированная задача имеет 8-символьный ID, который вы можете передать в `CronDelete`. Сеанс может одновременно содержать до 50 запланированных задач.


193 193 

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

195 195 

196Чтобы узнать, когда наступит следующий срок выполнения задачи, посмотрите на строку под вызовом `CronCreate` от Claude в вашем терминале. В этой строке после расписания указано это время, например `next run 10:21 AM`. Чтобы проверить снова позже, [попросите Claude вывести список ваших задач](#manage-scheduled-tasks) и найдите `next run` в строках под вызовом `CronList`. Для отображения времени следующего запуска в этих строках требуется Claude Code v2.1.299 или новее.

197 

196<h4 id="how-late-a-recurring-task-runs">198<h4 id="how-late-a-recurring-task-runs">

197 Насколько поздно выполняется повторяющаяся задача199 Насколько поздно выполняется повторяющаяся задача

198</h4>200</h4>

Details

1001. Runner со свободной емкостью требует сеанс и держит аренду на нем.1001. Runner со свободной емкостью требует сеанс и держит аренду на нем.

1012. Runner клонирует репозиторий в свой рабочий каталог и порождает дочерний процесс Claude Code.1012. Runner клонирует репозиторий в свой рабочий каталог и порождает дочерний процесс Claude Code.

1023. Дочерний процесс передает события обратно по HTTPS, пока runner продолжает опрашивать; каждый опрос обновляет аренду и служит сердцебиением.1023. Дочерний процесс передает события обратно по HTTPS, пока runner продолжает опрашивать; каждый опрос обновляет аренду и служит сердцебиением.

1034. Если runner прекращает опрос, его аренда истекает примерно через 60 секунд, и сервер в течение нескольких минут повторно ставит сессию в очередь для другого runner.1034. Если runner прекращает опрос, его аренда истекает примерно через 60 секунд. После этого серверу может потребоваться несколько минут, а иногда и больше, чтобы повторно поставить сессию в очередь для другого runner.

104 104 

105Runner дает каждому запросу опроса 10 секунд. Когда запрос истекает, теряется или получает ответ, который runner не может разобрать, runner продолжает служить своим активным сеансам и повторяет попытку через секунду или две вместо ожидания следующего запланированного опроса. Например, перехватывающий прокси, который отвечает на опрос своей собственной страницей, производит ответ, который runner не может разобрать. Каждый раз, когда другой запрос не удается одним из этих способов, runner удваивает промежуток перед следующей повторной попыткой, до 20 секунд, и сокращает промежуток, когда аренда близка к истечению.105Runner дает каждому запросу опроса 10 секунд. Когда запрос истекает, теряется или получает ответ, который runner не может разобрать, runner продолжает служить своим активным сеансам и повторяет попытку через секунду или две вместо ожидания следующего запланированного опроса. Например, перехватывающий прокси, который отвечает на опрос своей собственной страницей, производит ответ, который runner не может разобрать. Каждый раз, когда другой запрос не удается одним из этих способов, runner удваивает промежуток перед следующей повторной попыткой, до 20 секунд, и сокращает промежуток, когда аренда близка к истечению.

106 106 

Details

40| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | Для сессии Claude Tag, которая относится к одной ветке Slack, — временная метка Slack этой ветки, например `1700000000.000100`. Может быть не установлена, а также может быть установлена, когда `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` не установлена, поэтому проверяйте каждую переменную отдельно. |40| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | Для сессии Claude Tag, которая относится к одной ветке Slack, — временная метка Slack этой ветки, например `1700000000.000100`. Может быть не установлена, а также может быть установлена, когда `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` не установлена, поэтому проверяйте каждую переменную отдельно. |

41| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Абсолютный путь к файлу для каждой сессии, содержащему текущий JWT сессии, который поддерживается в актуальном состоянии при обновлении токенов. Подпроцессы оболочки читают его для своего заголовка `Authorization` при загрузке вложений, которые пользователь добавил в сессию. `exec` сохраняет переменную автоматически; обёртка, которая перестраивает окружение дочернего процесса, должна перенести переменную, иначе загрузки вложений молча прекратятся. |41| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Абсолютный путь к файлу для каждой сессии, содержащему текущий JWT сессии, который поддерживается в актуальном состоянии при обновлении токенов. Подпроцессы оболочки читают его для своего заголовка `Authorization` при загрузке вложений, которые пользователь добавил в сессию. `exec` сохраняет переменную автоматически; обёртка, которая перестраивает окружение дочернего процесса, должна перенести переменную, иначе загрузки вложений молча прекратятся. |

42| `CLAUDE_CONFIG_DIR` | Каталог конфигурации Claude для каждой сессии, записываемый при запуске сессии из снимка конфигурации хоста средства выполнения, который средство выполнения захватывает при запуске; см. [Разрешения и подтверждение инструментов](#permissions-and-tool-approval). Записи здесь изолированы для этой сессии. Каталог остаётся в `<base-dir>/_sessions/` после завершения сессии, если вы не запустите средство выполнения с [`--remove-session-state`](/docs/ru/self-hosted-environments-reference#runner-cli-flags); см. [Повторное использование предварительно подготовленного checkout](/docs/ru/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout). |42| `CLAUDE_CONFIG_DIR` | Каталог конфигурации Claude для каждой сессии, записываемый при запуске сессии из снимка конфигурации хоста средства выполнения, который средство выполнения захватывает при запуске; см. [Разрешения и подтверждение инструментов](#permissions-and-tool-approval). Записи здесь изолированы для этой сессии. Каталог остаётся в `<base-dir>/_sessions/` после завершения сессии, если вы не запустите средство выполнения с [`--remove-session-state`](/docs/ru/self-hosted-environments-reference#runner-cli-flags); см. [Повторное использование предварительно подготовленного checkout](/docs/ru/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout). |

43| `CLAUDE_CODE_REMOTE_MCP_CONFIG` | Путь к файлу в `CLAUDE_CONFIG_DIR`, содержащему определения MCP-серверов, которые плоскость управления Anthropic доставила для этой сессии. Если ваша обёртка перестраивает окружение дочернего процесса, перенесите эту переменную. Без неё, когда плоскость управления обновляет доставленные серверы, дочерний процесс завершает работу любого сервера stdio, HTTP или SSE, добавленного вашей обёрткой с помощью [`--mcp-config`](/docs/ru/cli-reference#cli-flags), которого нет в обновлении. Требует Claude Code v2.1.299 или новее. |

43| `ANTHROPIC_BASE_URL` | Базовый URL API, который будет использовать дочерний процесс, доставляемый плоскостью управления для каждой сессии; обычно `https://api.anthropic.com`. Не переопределяйте его: учётные данные вывода сессии — это выданный Anthropic токен OAuth, который другие поставщики не принимают. |44| `ANTHROPIC_BASE_URL` | Базовый URL API, который будет использовать дочерний процесс, доставляемый плоскостью управления для каждой сессии; обычно `https://api.anthropic.com`. Не переопределяйте его: учётные данные вывода сессии — это выданный Anthropic токен OAuth, который другие поставщики не принимают. |

44| `CLAUDE_CODE_OAUTH_TOKEN` | Краткосрочный токен доступа OAuth, который дочерний процесс использует для вывода модели, ограниченный только выводом модели и загрузкой файлов, со временем жизни около 30 минут. Средство выполнения перевыпускает его до истечения срока и доставляет ротацию через stdin дочернего процесса, поэтому обёртка, которая не [сохраняет stdin подключённым](#keep-stdin-and-file-descriptor-3-attached), видит только начальное значение. Не полагайтесь на список разрешённых IP-адресов вашей организации для ограничения использования этого токена: рассматривайте его как Bearer-токен, который остаётся пригодным для использования примерно 30 минут в случае утечки, и не записывайте его в лог, не сохраняйте на диск и не пересылайте за пределы контейнера сессии. |45| `CLAUDE_CODE_OAUTH_TOKEN` | Краткосрочный токен доступа OAuth, который дочерний процесс использует для вывода модели, ограниченный только выводом модели и загрузкой файлов, со временем жизни около 30 минут. Средство выполнения перевыпускает его до истечения срока и доставляет ротацию через stdin дочернего процесса, поэтому обёртка, которая не [сохраняет stdin подключённым](#keep-stdin-and-file-descriptor-3-attached), видит только начальное значение. Не полагайтесь на список разрешённых IP-адресов вашей организации для ограничения использования этого токена: рассматривайте его как Bearer-токен, который остаётся пригодным для использования примерно 30 минут в случае утечки, и не записывайте его в лог, не сохраняйте на диск и не пересылайте за пределы контейнера сессии. |

45 46 


51 Задавайте значение по умолчанию для переменных, которые могут быть не установлены52 Задавайте значение по умолчанию для переменных, которые могут быть не установлены

52</h3>53</h3>

53 54 

54Каждая из переменных `CCR_SESSION_ACCOUNT_EMAIL`, `CLAUDE_RUNNER_CLIENT_PLATFORM`, `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` и `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` может быть не установлена. Если ваш скрипт использует `set -u`, Bash останавливается с ошибкой `unbound variable` при раскрытии неустановленной переменной, поэтому раскрывайте их со значением по умолчанию, например `${CCR_SESSION_ACCOUNT_EMAIL:-}`.55Каждая из переменных `CCR_SESSION_ACCOUNT_EMAIL`, `CLAUDE_RUNNER_CLIENT_PLATFORM`, `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` и `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` может быть не установлена. Если ваш скрипт использует `set -u`, Bash останавливается с ошибкой `unbound variable` при раскрытии неустановленной переменной, поэтому раскрывайте их со значением по умолчанию, например `"${CCR_SESSION_ACCOUNT_EMAIL:-}"`.

55 56 

56Везде, где оболочка раскрывает ссылку на ветку Slack, соблюдайте следующие меры предосторожности:57<h3 id="quote-the-arguments-and-variables-your-script-expands">

58 Заключайте в кавычки аргументы и переменные, которые раскрывает ваш скрипт

59</h3>

60 

61Заключайте в кавычки каждый аргумент и каждую переменную, которые средство выполнения передаёт вашей обёртке или [хуку `command`](#command). Некоторые значения содержат символы, на которые реагирует оболочка, поскольку в них находится JSON, целые предложения или [правило разрешений](/docs/ru/permissions#permission-rule-syntax), например `Bash(npm run test *)`.

57 62 

58* **Заключайте её в кавычки**: ссылка может содержать символы, на которые реагирует оболочка, например `?` и `&`, поэтому заключайте переменную в кавычки, как в `"${CLAUDE_CODE_REMOTE_SLACK_THREAD_URL:-}"`.63* **Аргументы**: передавайте их дальше как `"$@"`

59* **Не подставляйте её значение в строки `eval` и `sh -c`**: не подставляйте её значение в строку, которую выполняет `eval` или `sh -c`, даже внутри кавычек. Вместо этого пусть такая строка ссылается на саму переменную.64* **Переменные**: заключайте каждую в кавычки, как в `"${CLAUDE_CODE_REMOTE_SLACK_THREAD_URL:-}"`. Ссылка на ветку Slack, например, может содержать `?` и `&`.

65* **Строки `eval` и `sh -c`**: не подставляйте значение в строку, которую выполняет `eval` или `sh -c`, даже внутри кавычек. Вместо этого пусть такая строка ссылается на саму переменную.

60 66 

61<h3 id="keep-stdin-and-file-descriptor-3-attached">67<h3 id="keep-stdin-and-file-descriptor-3-attached">

62 Сохраняйте stdin и дескриптор файла 3 подключёнными68 Сохраняйте stdin и дескриптор файла 3 подключёнными


136| `CLAUDE_RUNNER_SESSION_ID` | ID сессии в форме с тегом `session_...`, для логирования и корреляции |142| `CLAUDE_RUNNER_SESSION_ID` | ID сессии в форме с тегом `session_...`, для логирования и корреляции |

137| `CLAUDE_RUNNER_SESSION_UUID` | Тот же ID сессии в канонической форме UUID |143| `CLAUDE_RUNNER_SESSION_UUID` | Тот же ID сессии в канонической форме UUID |

138| `CLAUDE_RUNNER_API_BASE_URL` | Базовый URL API Anthropic для вызовов в области сессии |144| `CLAUDE_RUNNER_API_BASE_URL` | Базовый URL API Anthropic для вызовов в области сессии |

139| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Интерфейс клиента, который создал сессию, например `web_claude_ai`, `desktop_app` или `ios`. Не установлена, если у сессии нет записанного или распознанного интерфейса, поэтому при `set -u` ссылайтесь на неё как `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}`. Требуется Claude Code v2.1.229 или новее. |145| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Интерфейс клиента, который создал сессию, например `web_claude_ai`, `desktop_app` или `ios`. Не установлена, если у сессии нет записанного или распознанного интерфейса, поэтому при `set -u` ссылайтесь на неё как `"${CLAUDE_RUNNER_CLIENT_PLATFORM:-}"`. Требуется Claude Code v2.1.229 или новее. |

140| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Токен доступа сессии для вызовов API в области сессии |146| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Токен доступа сессии для вызовов API в области сессии |

141| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Настройки git, которые runner фиксирует для git, запускаемого вашим хуком. Они описаны в разделе [Конфигурация git внутри хуков жизненного цикла](#git-configuration-inside-lifecycle-hooks). Требуется Claude Code v2.1.280 или новее. |147| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Настройки git, которые runner фиксирует для git, запускаемого вашим хуком. Они описаны в разделе [Конфигурация git внутри хуков жизненного цикла](#git-configuration-inside-lifecycle-hooks). Требуется Claude Code v2.1.280 или новее. |

142 148 


159 165 

160Хук считается завершившимся ошибкой, если он завершается с ненулевым кодом или завершается с кодом 0, не оставив пригодного для использования checkout:166Хук считается завершившимся ошибкой, если он завершается с ненулевым кодом или завершается с кодом 0, не оставив пригодного для использования checkout:

161 167 

162* **Репозиторий, в который сессия отправляет результаты**: runner отмечает сеанс как неудачный, и при ненулевом выходе выводит пользователю конец stderr скрипта.168* **Репозиторий, в который сессия отправляет результаты**: runner отмечает сессию как неудачную, и при ненулевом выходе выводит пользователю конец stderr скрипта. Запишите причину в stderr одной короткой строкой, сделайте это последним действием, а затем завершите работу с ненулевым кодом. Не выводите секреты в stderr и удалите `set -x` перед развёртыванием хука.

163* **Репозиторий, из которого сессия только читает**, например репозиторий, добавленный к запущенной сессии: runner записывает в лог строку `[runner:warn]` с подробностями ошибки, отправляет в сессию шаг `Skipped`, удаляет всё, что хук оставил по пути checkout, и продолжает работу с оставшимися репозиториями. Если после пропуска у сессии не остаётся ни одного репозитория, runner всё равно отмечает сессию как неудачную.169* **Репозиторий, из которого сессия только читает**, например репозиторий, добавленный к запущенной сессии: runner записывает в лог строку `[runner:warn]` с подробностями ошибки, отправляет в сессию шаг `Skipped`, удаляет всё, что хук оставил по пути checkout, и продолжает работу с оставшимися репозиториями. Если после пропуска у сессии не остаётся ни одного репозитория, runner всё равно отмечает сессию как неудачную.

164 170 

165Если хук завершается успешно, runner удаляет путь checkout после завершения сессии.171Если хук завершается успешно, runner удаляет путь checkout после завершения сессии.


180| `CLAUDE_RUNNER_WORKSPACE_PATHS` | Разделённые двоеточиями абсолютные пути рабочих деревьев сессии. Пусто для сессий с нулевым репозиторием. |186| `CLAUDE_RUNNER_WORKSPACE_PATHS` | Разделённые двоеточиями абсолютные пути рабочих деревьев сессии. Пусто для сессий с нулевым репозиторием. |

181| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | Путь к логу отладки сессии, всё ещё на диске во время выполнения hook'а |187| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | Путь к логу отладки сессии, всё ещё на диске во время выполнения hook'а |

182| `CLAUDE_RUNNER_API_BASE_URL` | Базовый URL API Anthropic для вызовов в области сессии |188| `CLAUDE_RUNNER_API_BASE_URL` | Базовый URL API Anthropic для вызовов в области сессии |

183| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Интерфейс клиента, который создал сессию, например `web_claude_ai`, `desktop_app` или `ios`. Не установлена, если у сессии нет записанного или распознанного интерфейса, поэтому при `set -u` ссылайтесь на неё как `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}`. Требуется Claude Code v2.1.229 или новее. |189| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Интерфейс клиента, который создал сессию, например `web_claude_ai`, `desktop_app` или `ios`. Не установлена, если у сессии нет записанного или распознанного интерфейса, поэтому при `set -u` ссылайтесь на неё как `"${CLAUDE_RUNNER_CLIENT_PLATFORM:-}"`. Требуется Claude Code v2.1.229 или новее. |

184| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Токен доступа сессии для вызовов API в области сессии |190| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Токен доступа сессии для вызовов API в области сессии |

185| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Настройки git, которые runner фиксирует для git, запускаемого вашим хуком. Они описаны в разделе [Конфигурация git внутри хуков жизненного цикла](#git-configuration-inside-lifecycle-hooks). Требуется Claude Code v2.1.280 или новее. |191| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Настройки git, которые runner фиксирует для git, запускаемого вашим хуком. Они описаны в разделе [Конфигурация git внутри хуков жизненного цикла](#git-configuration-inside-lifecycle-hooks). Требуется Claude Code v2.1.280 или новее. |

186 192 


3293. **Соблюдайте контракт кода выхода.** Завершайтесь со статусом, соответствующим результату:3353. **Соблюдайте контракт кода выхода.** Завершайтесь со статусом, соответствующим результату:

330 336 

331 * **Выход 0**: отправлено.337 * **Выход 0**: отправлено.

332 * **Выход 1**: сбой, допускающий повторную попытку. Сессия выжидает и предлагается снова.338 * **Выход 1 или хук всё ещё выполняется по истечении `--hook-timeout`**: сбой, допускающий повторную попытку. Сессия выжидает и предлагается снова.

333 * **Выход 2 или выше**: сбой, не допускающий повторной попытки. Сессия блокируется от повторного порождения до тех пор, пока пользователь не отправит ей новое сообщение или [Owner](/docs/ru/cloud-environments#organization-shared-environments) не выберет для неё **Retry** на вкладке **Activity** окружения.339 * **Выход 2 или выше**: сбой, не допускающий повторной попытки. Сессия блокируется от повторного порождения до тех пор, пока пользователь не отправит ей новое сообщение или [Owner](/docs/ru/cloud-environments#organization-shared-environments) не выберет для неё **Retry** на вкладке **Activity** окружения.

334 340 

335 При ненулевом выходе конец stderr хука отображается на вкладке **Activity** как причина сбоя, поэтому пишите в stderr понятную ошибку, указывающую, что делать, и никогда не пишите туда секреты. В shell-хуке [сохраняйте временные сбои повторяемыми](#keep-transient-failures-retryable-in-a-shell-hook).341 При ненулевом выходе конец stderr хука отображается на вкладке **Activity** как причина сбоя, поэтому пишите в stderr понятную ошибку, указывающую, что делать, и никогда не пишите туда секреты. В shell-хуке [сохраняйте временные сбои повторяемыми](#keep-transient-failures-retryable-in-a-shell-hook).


341 347 

342Сеанс, который остается в очереди без ошибки порождения на вкладке **Activity**, может означать, что хук ключируется по ID сеанса. Чтобы подтвердить, проверьте, есть ли на вашей платформе рабочая нагрузка для первого запроса порождения этого сеанса и нет ни одной для повторных запросов. Если это так, ключируйте рабочую нагрузку на `CLAUDE_RUNNER_ORDER_ID` вместо этого.348Сеанс, который остается в очереди без ошибки порождения на вкладке **Activity**, может означать, что хук ключируется по ID сеанса. Чтобы подтвердить, проверьте, есть ли на вашей платформе рабочая нагрузка для первого запроса порождения этого сеанса и нет ни одной для повторных запросов. Если это так, ключируйте рабочую нагрузку на `CLAUDE_RUNNER_ORDER_ID` вместо этого.

343 349 

350<h4 id="make-on-demand-runners-exit-when-idle">

351 Настройте завершение средств выполнения по требованию при простое

352</h4>

353 

354По умолчанию средство выполнения, запущенное вашим хуком, не завершается, когда заканчивается ход его сессии, поэтому отправленная вами рабочая нагрузка продолжает работать. Чтобы средства выполнения завершались, пусть ваш хук передаёт следующие [флаги средства выполнения](/docs/ru/self-hosted-environments-reference#runner-cli-flags):

355 

356| Флаг с примером значения | Кому передавать | Что он делает |

357| :- | :- | :- |

358| `--release-idle-session-min 30` | Каждому средству выполнения, которое запускает ваш хук | Средство выполнения освобождает свою сессию после указанного числа минут простоя, а затем завершается с кодом 0. Сессия возобновляется, когда её пользователь отправляет следующее сообщение, но [работа, которую она не успела отправить через push, теряется](/docs/ru/self-hosted-environments-deploy#additional-limitations). |

359| `--kill-session-after-min 480` | Каждому средству выполнения, которое запускает ваш хук | Ограничивает каждую сессию указанным числом минут в качестве страховки для [сессий, которые не считаются простаивающими](/docs/ru/self-hosted-environments-deploy#some-sessions-don’t-count-as-idle), поэтому задайте значение больше самой длинной ожидаемой сессии |

360| `--exit-if-unused-min 60` | Резервным средствам выполнения, которые ваш хук запускает для запросов предварительного прогрева | Резервное средство выполнения, которое так и не получило сессию, завершается через указанное число минут. Если вы задали [`--min-idle`](/docs/ru/self-hosted-environments-reference#orchestrator-cli-flags), вы получите замену, если только резервное средство не было избыточным, поэтому используйте значение значительно больше времени загрузки. |

361 

362Удаляйте рабочую нагрузку, когда средство выполнения завершается, например задав `ttlSecondsAfterFinished` для Kubernetes Job или настроив стартовый скрипт VM так, чтобы он затем удалял VM.

363 

344<h4 id="keep-transient-failures-retryable-in-a-shell-hook">364<h4 id="keep-transient-failures-retryable-in-a-shell-hook">

345 Сохраняйте временные сбои повторяемыми в shell-хуке365 Сохраняйте временные сбои повторяемыми в shell-хуке

346</h4>366</h4>


484* [Управляемый файл MCP](/docs/ru/managed-mcp) корпоративного уровня по стандартному системному пути: `/etc/claude-code/managed-mcp.json` на хостах раннеров под Linux, `/Library/Application Support/ClaudeCode/managed-mcp.json` на хостах под macOS. Используйте его для строго контролируемых парков машин, где могут загружаться только серверы из списка администратора. Правила приоритета описаны в разделе [эксклюзивный контроль с помощью managed-mcp.json](/docs/ru/managed-mcp#exclusive-control-with-managed-mcp-json). Если этот файл находится на хосте раннера, Claude Code пропускает MCP-серверы, которые плоскость управления Anthropic передаёт в сессию, включая коннекторы claude.ai, и перечисляет их в предупреждении в stderr дочернего процесса сессии, которое раннер записывает в лог на уровне `debug`. До версии v2.1.229 такие сессии завершались при запуске с ошибкой `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.504* [Управляемый файл MCP](/docs/ru/managed-mcp) корпоративного уровня по стандартному системному пути: `/etc/claude-code/managed-mcp.json` на хостах раннеров под Linux, `/Library/Application Support/ClaudeCode/managed-mcp.json` на хостах под macOS. Используйте его для строго контролируемых парков машин, где могут загружаться только серверы из списка администратора. Правила приоритета описаны в разделе [эксклюзивный контроль с помощью managed-mcp.json](/docs/ru/managed-mcp#exclusive-control-with-managed-mcp-json). Если этот файл находится на хосте раннера, Claude Code пропускает MCP-серверы, которые плоскость управления Anthropic передаёт в сессию, включая коннекторы claude.ai, и перечисляет их в предупреждении в stderr дочернего процесса сессии, которое раннер записывает в лог на уровне `debug`. До версии v2.1.229 такие сессии завершались при запуске с ошибкой `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.

485* Ключ [`managedMcpServers`](/docs/ru/settings-reference#managedmcpservers) в [управляемых настройках](/docs/ru/managed-settings) на хосте раннера: предоставляет серверы HTTP и SSE без эксклюзивного контроля, поэтому серверы из других источников по-прежнему загружаются. Требуется Claude Code v2.1.259 или новее.505* Ключ [`managedMcpServers`](/docs/ru/settings-reference#managedmcpservers) в [управляемых настройках](/docs/ru/managed-settings) на хосте раннера: предоставляет серверы HTTP и SSE без эксклюзивного контроля, поэтому серверы из других источников по-прежнему загружаются. Требуется Claude Code v2.1.259 или новее.

486* `<repo>/.mcp.json`: область действия проекта. Сделайте коммит этого файла в репозиторий; его серверы автоматически подтверждаются в облачных сессиях. В сессии с несколькими репозиториями [загружается файл не более чем из одного репозитория](#repository-settings-in-sessions-with-several-repositories).506* `<repo>/.mcp.json`: область действия проекта. Сделайте коммит этого файла в репозиторий; его серверы автоматически подтверждаются в облачных сессиях. В сессии с несколькими репозиториями [загружается файл не более чем из одного репозитория](#repository-settings-in-sessions-with-several-repositories).

507* Файл [`--mcp-config`](/docs/ru/cli-reference#cli-flags) из вашего скрипта-обёртки: добавьте флаг после `"$@"`, например `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@" --mcp-config /etc/claude/mcp.json`. Чтобы серверы из этого файла продолжали работать, когда переданные в сессию серверы обновляются посреди сессии, ваша обёртка должна передавать дочернему процессу [полное окружение](#wrapper-scripts), как это делает `exec`. До версии v2.1.299 серверы stdio, HTTP и SSE из этого файла завершали работу при первом таком обновлении, в котором они не были указаны.

487 508 

488Если для вашей организации включена передача коннекторов, плоскость управления Anthropic передаёт коннекторы, настроенные вами на claude.ai, в сессии, созданные интерактивно, через предоставляемую сервером конфигурацию MCP, маршрутизируемую через `api.anthropic.com`. Сессии, созданные программно, например [запуски через CLI](/docs/ru/self-hosted-environments-testing#run-the-test-loop), не получают коннекторы; вместо этого предоставьте им MCP-серверы через любой из других источников, перечисленных в этом разделе. OAuth-токен дочернего процесса не содержит scope для прямого получения коннекторов, поэтому дочерний процесс сам не пытается их получить; передача управляется сервером.509Если для вашей организации включена передача коннекторов, плоскость управления Anthropic передаёт коннекторы, настроенные вами на claude.ai, в сессии, созданные интерактивно, через предоставляемую сервером конфигурацию MCP, маршрутизируемую через `api.anthropic.com`. Сессии, созданные программно, например [запуски через CLI](/docs/ru/self-hosted-environments-testing#run-the-test-loop), не получают коннекторы; вместо этого предоставьте им MCP-серверы через любой из других источников, перечисленных в этом разделе. OAuth-токен дочернего процесса не содержит scope для прямого получения коннекторов, поэтому дочерний процесс сам не пытается их получить; передача управляется сервером.

489 510 

Details

182* `credential.helper`, возвращающий токен с минимальной областью действия182* `credential.helper`, возвращающий токен с минимальной областью действия

183* `GIT_SSH_COMMAND`, указывающий на ключ с узкой областью действия183* `GIT_SSH_COMMAND`, указывающий на ключ с узкой областью действия

184 184 

185Какой бы механизм вы ни настроили, он должен работать без запроса ввода, потому что встроенные операции clone и fetch раннера отключают запросы, которые иначе показали бы git, SSH и Git Credential Manager:185<span id="git-must-work-without-a-prompt" />Какой бы механизм вы ни настроили, он должен работать без запроса ввода, потому что встроенные операции clone и fetch раннера отключают запросы, которые иначе показали бы git, SSH и Git Credential Manager:

186 186 

187* Раннер задаёт `GIT_TERMINAL_PROMPT=0`, поэтому git не запрашивает имя пользователя или пароль.187* Раннер задаёт `GIT_TERMINAL_PROMPT=0`, поэтому git не запрашивает имя пользователя или пароль.

188* Раннер запускает SSH с `BatchMode=yes`, добавленным к вашему `GIT_SSH_COMMAND`, если вы его задали, поэтому SSH не запрашивает парольную фразу или подтверждение хоста.188* Раннер запускает SSH с `BatchMode=yes`, добавленным к вашему `GIT_SSH_COMMAND`, если вы его задали, поэтому SSH не запрашивает парольную фразу или подтверждение хоста.


212* **Только github.com**: Anthropic обслуживает сессию, только если все её репозитории находятся на github.com, а git-прокси пока не поддерживает GitHub Enterprise Server. На раннере с git-прокси сессия с репозиторием на другом git-хостинге [не запускается](#when-anthropic-doesnt-serve-a-session).212* **Только github.com**: Anthropic обслуживает сессию, только если все её репозитории находятся на github.com, а git-прокси пока не поддерживает GitHub Enterprise Server. На раннере с git-прокси сессия с репозиторием на другом git-хостинге [не запускается](#when-anthropic-doesnt-serve-a-session).

213* **Учётные данные только для репозиториев сессии**: Anthropic предоставляет учётные данные git для репозиториев, входящих в сессию, но не для других репозиториев на том же git-хостинге. Приватный субмодуль, зависимость, которую ваш менеджер пакетов получает через git, или маркетплейс плагинов в другом репозитории не получают учётных данных от Anthropic. Попросите тех, кто создаёт сессии, [добавлять каждый репозиторий](/docs/ru/web-quickstart#start-a-task), который нужен сессии, при её создании.213* **Учётные данные только для репозиториев сессии**: Anthropic предоставляет учётные данные git для репозиториев, входящих в сессию, но не для других репозиториев на том же git-хостинге. Приватный субмодуль, зависимость, которую ваш менеджер пакетов получает через git, или маркетплейс плагинов в другом репозитории не получают учётных данных от Anthropic. Попросите тех, кто создаёт сессии, [добавлять каждый репозиторий](/docs/ru/web-quickstart#start-a-task), который нужен сессии, при её создании.

214* **Только push веток**: push, который удаляет ветку, завершается ошибкой, как и push в ref любого другого типа, например в тег. О том, какие ветки может обновлять push, см. [GitHub-прокси](/docs/ru/cloud-environments#github-proxy).214* **Только push веток**: push, который удаляет ветку, завершается ошибкой, как и push в ref любого другого типа, например в тег. О том, какие ветки может обновлять push, см. [GitHub-прокси](/docs/ru/cloud-environments#github-proxy).

215* **Подключённые аккаунты GitHub**: человек, создавший пользовательскую сессию, должен подключить GitHub на claude.ai, иначе сессия [не запускается](#creator-has-no-github-connection).215* **Подключённые аккаунты GitHub**: попросите каждого, кто создаёт пользовательские сессии с репозиторием, [подключить GitHub](/docs/ru/web-quickstart#connect-github). Без собственного подключения такие сессии [не запускаются](#creator-has-no-github-connection).

216* **`--capacity 1`**: git-прокси требует одну сессию на процесс раннера, поэтому для параллелизма запускайте больше реплик. Требования перечислены в разделе [Включение git-прокси Anthropic](#turn-the-anthropic-git-proxy-on).216* **`--capacity 1`**: git-прокси требует одну сессию на процесс раннера, поэтому для параллелизма запускайте больше реплик. Требования перечислены в разделе [Включение git-прокси Anthropic](#turn-the-anthropic-git-proxy-on).

217* **Заменённая глобальная конфигурация git**: раннер [удаляет и заменяет глобальную конфигурацию git](#git-proxy-replaces-global-git-config) пользователя, от имени которого он запущен. Запускайте его от имени отдельного пользователя или в контейнере.217* **Заменённая глобальная конфигурация git**: раннер [удаляет и заменяет глобальную конфигурацию git](#git-proxy-replaces-global-git-config) пользователя, от имени которого он запущен. Запускайте его от имени отдельного пользователя или в контейнере.

218* **Учётные данные хоста для push с хоста**: push с помощью [`--push-outcome-on-release`](/docs/ru/self-hosted-environments-reference#runner-cli-flags) раннера и любой push, который делает ваш [хук `post-session`](/docs/ru/self-hosted-environments-configuration#post-session), по-прежнему используют собственные учётные данные git хоста раннера и его [сетевой путь к `github.com`](#github-com-egress-with-the-anthropic-git-proxy). Об этих учётных данных см. [Поставляйте конфигурацию git в своём образе](#ship-git-config-in-your-image).218* **Учётные данные хоста для push с хоста**: push с помощью [`--push-outcome-on-release`](/docs/ru/self-hosted-environments-reference#runner-cli-flags) раннера и любой push, который делает ваш [хук `post-session`](/docs/ru/self-hosted-environments-configuration#post-session), по-прежнему используют собственные учётные данные git хоста раннера и его [сетевой путь к `github.com`](#github-com-egress-with-the-anthropic-git-proxy). Не храните эти учётные данные в [глобальной конфигурации git](#git-proxy-replaces-global-git-config); способы их предоставления описаны в разделе [Поставляйте конфигурацию git в своём образе](#ship-git-config-in-your-image).

219* **Решение для каждой сессии**: Anthropic решает для каждой сессии на раннере, обслуживать ли её git, и сессия, которую он не обслуживает, не запускается. Причины описаны в разделе [Когда сессии не запускаются на раннере с git-прокси](#when-anthropic-doesnt-serve-a-session).219* **Решение для каждой сессии**: Anthropic решает для каждой сессии на раннере, обслуживать ли её git, и сессия, которую он не обслуживает, не запускается. Причины описаны в разделе [Когда сессии не запускаются на раннере с git-прокси](#when-anthropic-doesnt-serve-a-session).

220 220 

221<span id="git-proxy-replaces-global-git-config" />221<span id="git-proxy-replaces-global-git-config" />


356URL репозиториев поступают из плоскости управления в формате HTTPS с именем хоста вашего git-хостинга; для GitHub Enterprise это имя хоста, которое вы настроили для [интеграции GitHub Enterprise](/docs/ru/github-enterprise-server) на claude.ai. Два повторяемых флага перезаписывают эти URL перед clone:356URL репозиториев поступают из плоскости управления в формате HTTPS с именем хоста вашего git-хостинга; для GitHub Enterprise это имя хоста, которое вы настроили для [интеграции GitHub Enterprise](/docs/ru/github-enterprise-server) на claude.ai. Два повторяемых флага перезаписывают эти URL перед clone:

357 357 

358* `--git-host-rewrite <from>=<to>`: для split-horizon DNS, когда Anthropic обращается к вашему git-хостингу по внешнему имени хоста, а раннеры должны использовать внутреннее358* `--git-host-rewrite <from>=<to>`: для split-horizon DNS, когда Anthropic обращается к вашему git-хостингу по внешнему имени хоста, а раннеры должны использовать внутреннее

359* `--git-ssh-rewrite <host>`: для git-хостингов, принимающих только SSH; перезаписывает `https://<host>/owner/repo` в `git@<host>:owner/repo`359* `--git-ssh-rewrite <host>`: для git-хостингов, принимающих только SSH, или для хоста раннера, у которого есть только ключ SSH. Например, чтобы клонировать репозитории github.com через SSH, добавьте `--git-ssh-rewrite github.com` в команду раннера. Тогда раннер перезаписывает `https://github.com/owner/repo` в `git@github.com:owner/repo`. SSH должен [подключаться без запроса ввода](#git-must-work-without-a-prompt).

360 360 

361Перезапись хоста выполняется первой, поэтому если вам нужны обе, укажите в `--git-ssh-rewrite` внутреннее имя хоста. Для полного контроля над извлечением используйте [хук жизненного цикла `checkout`](/docs/ru/self-hosted-environments-configuration#checkout).361Перезапись хоста выполняется первой, поэтому если вам нужны обе, укажите в `--git-ssh-rewrite` внутреннее имя хоста. Для полного контроля над извлечением используйте [хук жизненного цикла `checkout`](/docs/ru/self-hosted-environments-configuration#checkout).

362 362 


578 578 

579Дайте таймауту остановки вашего хоста по крайней мере сумму трёх частей: `n` минут, которые вы настраиваете, post-release grace и drain, который описывает раздел [Время завершения работы](#shutdown-timing). При настройках по умолчанию post-release grace составляет 75 секунд, а drain занимает до 80 секунд, поэтому выделите `n` минут плюс 155 секунд. Runner выводит эту сумму при запуске всякий раз, когда установлен `--defer-shutdown-max-min`.579Дайте таймауту остановки вашего хоста по крайней мере сумму трёх частей: `n` минут, которые вы настраиваете, post-release grace и drain, который описывает раздел [Время завершения работы](#shutdown-timing). При настройках по умолчанию post-release grace составляет 75 секунд, а drain занимает до 80 секунд, поэтому выделите `n` минут плюс 155 секунд. Runner выводит эту сумму при запуске всякий раз, когда установлен `--defer-shutdown-max-min`.

580 580 

581Если таймаут остановки истекает до того, как runner завершит работу, хост убивает runner. Сессии, которые он всё ещё удерживает, не получают хук `post-session`. Runner не отменяет регистрацию, и control plane переставляет сессии в течение нескольких минут. Если вы не можете дать таймауту остановки эту сумму, оставьте `--defer-shutdown-max-min` неустановленным, чтобы runner вместо этого выполнял drain при первом сигнале.581Если таймаут остановки истекает до того, как runner завершит работу, сессии, которые он всё ещё удерживает, не получают хук `post-session`. Runner не отменяет регистрацию, поэтому control plane может потребоваться несколько минут, а иногда и больше, чтобы переставить эти сессии. Если вы не можете дать таймауту остановки эту сумму, оставьте `--defer-shutdown-max-min` неустановленным, чтобы runner вместо этого выполнял drain при первом сигнале.

582 582 

583<h3 id="what-reaches-a-running-post-session-hook">583<h3 id="what-reaches-a-running-post-session-hook">

584 Что достигает работающего хука post-session584 Что достигает работающего хука post-session


720 720 

721* **Runner не появляется в окружении**: подтвердите, что хост может достичь `api.anthropic.com` через HTTPS, секрет окружения текущий и часы хоста находятся в пределах пяти минут от реального времени; большее смещение вызывает отказ аутентификации. Runner регистрирует `[runner:fatal]` с причиной отказа при отказе аутентификации.721* **Runner не появляется в окружении**: подтвердите, что хост может достичь `api.anthropic.com` через HTTPS, секрет окружения текущий и часы хоста находятся в пределах пяти минут от реального времени; большее смещение вызывает отказ аутентификации. Runner регистрирует `[runner:fatal]` с причиной отказа при отказе аутентификации.

722* **Runner выходит при запуске с `cannot create or write to base directory`**: runner не может создать или писать в `--base-dir`, который по умолчанию `/workspace`. Исправьте владение каталога или укажите `--base-dir` на записываемый путь, как описано в [Keep the base directory and capacity identical across runners](#keep-the-base-directory-and-capacity-identical-across-runners). Если runner вместо этого регистрирует `[runner:fatal]`, говоря, что проверка базового каталога истекла по времени, каталог находится на зависшем монтировании NFS или CSI. Проверьте здоровье монтирования, а не разрешения. Runner печатает оба эти отказа при запуске в stderr перед открытием `--log-file`, поэтому ищите их в терминале или логах контейнера вашей платформы, а не в файле логов. До v2.1.225, runner не проверял базовый каталог при запуске, и эта неправильная конфигурация не удавалась сеансам после подхвата вместо этого.722* **Runner выходит при запуске с `cannot create or write to base directory`**: runner не может создать или писать в `--base-dir`, который по умолчанию `/workspace`. Исправьте владение каталога или укажите `--base-dir` на записываемый путь, как описано в [Keep the base directory and capacity identical across runners](#keep-the-base-directory-and-capacity-identical-across-runners). Если runner вместо этого регистрирует `[runner:fatal]`, говоря, что проверка базового каталога истекла по времени, каталог находится на зависшем монтировании NFS или CSI. Проверьте здоровье монтирования, а не разрешения. Runner печатает оба эти отказа при запуске в stderr перед открытием `--log-file`, поэтому ищите их в терминале или логах контейнера вашей платформы, а не в файле логов. До v2.1.225, runner не проверял базовый каталог при запуске, и эта неправильная конфигурация не удавалась сеансам после подхвата вместо этого.

723* **Runner завершается при запуске с `RegisterRunner failed:` и ошибкой TLS-сертификата**: например, ошибка может быть `self signed certificate in certificate chain`. Runner не доверяет центру сертификации (CA), стоящему за полученным сертификатом, что бывает за прокси с TLS-инспекцией. Задайте в окружении runner переменную [`NODE_EXTRA_CA_CERTS`](/docs/ru/network-config#custom-ca-certificates), указывающую на PEM-файл с корневым CA прокси.

724 

725 Повторно задавать её для сессий не нужно: они её наследуют. Git её не читает: для клонирования через этот прокси задайте также [`GIT_SSL_CAINFO`](#trust-a-private-certificate-authority-with-anthropic-managed-git).

726* **Оркестратор записывает в лог `poll failed:` с ошибкой TLS-сертификата и продолжает повторные попытки**: оркестратор не доверяет CA, стоящему за полученным сертификатом, что бывает за прокси с TLS-инспекцией. Задайте в окружении оркестратора переменную [`NODE_EXTRA_CA_CERTS`](/docs/ru/network-config#custom-ca-certificates), указывающую на PEM-файл с корневым CA прокси. Задайте её также для runners, которые запускает ваш хук `spawn-runner`.

727 

728 Например, строка может заканчиваться на `poll failed: self signed certificate in certificate chain — retrying in 1s`, где между двоеточием и тире стоит текст TLS-библиотеки. Чтобы убедиться, что проблема устранена, проверьте, что в теле ответа [`/healthz`](/docs/ru/self-hosted-environments-reference#health-endpoint) оркестратора `connected` имеет значение `true`.

723* **Сеансы остаются поставленными в очередь**: каждый онлайн runner может быть заблокирован для другого владельца. Проверьте метрику `claude_code_self_hosted_runner_locked_account` каждого runner [metric](/docs/ru/self-hosted-environments-reference#prometheus-metrics) или поле `locked_account` его строки логов `[runner:health]`, чтобы увидеть, кто его держит. Оба показывают email владельца только после того, как runner получил токен сеанса, несущий претензию `act.email`, которую сеансы агента Claude Tag никогда не делают. Без претензии runner не излучает серию `locked_account` и регистрирует `locked_account=yes`, что говорит вам, что runner заблокирован, но не для какого владельца. Добавьте реплики или ждите, пока существующий runner осушится и перезагрузится. Если окружение использует on-demand runners, проверьте оркестратор вместо этого; см. [On-demand runners](/docs/ru/self-hosted-environments-configuration#on-demand-runners).729* **Сеансы остаются поставленными в очередь**: каждый онлайн runner может быть заблокирован для другого владельца. Проверьте метрику `claude_code_self_hosted_runner_locked_account` каждого runner [metric](/docs/ru/self-hosted-environments-reference#prometheus-metrics) или поле `locked_account` его строки логов `[runner:health]`, чтобы увидеть, кто его держит. Оба показывают email владельца только после того, как runner получил токен сеанса, несущий претензию `act.email`, которую сеансы агента Claude Tag никогда не делают. Без претензии runner не излучает серию `locked_account` и регистрирует `locked_account=yes`, что говорит вам, что runner заблокирован, но не для какого владельца. Добавьте реплики или ждите, пока существующий runner осушится и перезагрузится. Если окружение использует on-demand runners, проверьте оркестратор вместо этого; см. [On-demand runners](/docs/ru/self-hosted-environments-configuration#on-demand-runners).

724* **Сессии завершаются сбоем сразу после получения**: откройте сессию в claude.ai/code, чтобы увидеть ошибку. Наиболее распространённые причины — отсутствие [учётных данных git](#configure-git) в образе runner и неустановленные инструменты сборки. Для runner, запущенного с `--use-anthropic-git-proxy`, см. [Когда сессии не запускаются на runner с git-прокси](#when-anthropic-doesnt-serve-a-session). Базовый каталог, недоступный для записи, останавливает runner при запуске, а не приводит к сбою сессий. См. пункт **Runner завершается при запуске с `cannot create or write to base directory`** в этом списке.730* **Сессии завершаются сбоем сразу после получения**: откройте сессию в claude.ai/code, чтобы увидеть ошибку. Наиболее распространённые причины — отсутствие [учётных данных git](#configure-git) в образе runner и неустановленные инструменты сборки. Для runner, запущенного с `--use-anthropic-git-proxy`, см. [Когда сессии не запускаются на runner с git-прокси](#when-anthropic-doesnt-serve-a-session). Базовый каталог, недоступный для записи, останавливает runner при запуске, а не приводит к сбою сессий. См. пункт **Runner завершается при запуске с `cannot create or write to base directory`** в этом списке.

725* **Сессии не запускаются на runner, для которого задан `--use-anthropic-git-proxy`**: найдите в логе runner `access denied by the git proxy` или ошибку git, в которой указан адрес `api.anthropic.com`, содержащий `/git_proxy/`. Чтобы определить, обслуживала ли Anthropic эту сессию, и устранить причину, см. [Когда сессии не запускаются на runner с git-прокси](#when-anthropic-doesnt-serve-a-session).731* **Сессии не запускаются на runner, для которого задан `--use-anthropic-git-proxy`**: найдите в логе runner `access denied by the git proxy` или ошибку git, в которой указан адрес `api.anthropic.com`, содержащий `/git_proxy/`. Чтобы определить, обслуживала ли Anthropic эту сессию, и устранить причину, см. [Когда сессии не запускаются на runner с git-прокси](#when-anthropic-doesnt-serve-a-session).


741 До v2.1.274, runner прекратил повторять попытку неудачного fetch после нескольких попыток и ждал следующего запланированного. Неудачный turn не вызвал fetch, поэтому каждый turn не удавался с 401 до следующего запланированного fetch.747 До v2.1.274, runner прекратил повторять попытку неудачного fetch после нескольких попыток и ждал следующего запланированного. Неудачный turn не вызвал fetch, поэтому каждый turn не удавался с 401 до следующего запланированного fetch.

742* **Pod убивается в середине осушения**: поднимите `terminationGracePeriodSeconds` по крайней мере на значение, которое runner регистрирует при запуске. См. [Shutdown timing](#shutdown-timing).748* **Pod убивается в середине осушения**: поднимите `terminationGracePeriodSeconds` по крайней мере на значение, которое runner регистрирует при запуске. См. [Shutdown timing](#shutdown-timing).

743 749 

744Как только логирование инициализируется, runner пишет свой лог жизненного цикла, включая строки `[runner:fatal]`, в stdout и отладочный вывод в stderr, все как простые текстовые строки, а не JSON. Отказы при запуске, описанные в записях устранения неполадок выше, печатаются в stderr перед этой точкой. Захватите оба потока с помощью `--log-file`, что также позволяет `self-hosted-runner doctor` их отслеживать, или с помощью сбора логов вашей платформы.750После инициализации логирования runner записывает лог своего жизненного цикла, включая строки `[runner:fatal]`, в stdout, а отладочный вывод — в stderr, всё в виде обычных текстовых строк, а не JSON. Сбои базового каталога, описанные в пунктах об устранении неполадок выше, выводятся в stderr ещё до этого момента. Сохраняйте оба потока с помощью `--log-file`, что также позволяет `self-hosted-runner doctor` их просматривать, или с помощью сбора логов вашей платформы.

745 751 

746Каждый процесс дочернего сеанса пишет отдельный отладочный лог. При отказе runner выводит хвост логов рядом с сеансом в claude.ai/code. Если вы не запустили runner с [`--remove-session-state`](/docs/ru/self-hosted-environments-reference#runner-cli-flags), он также сохраняет лог неудачного сеанса на диске и печатает его путь в логе runner.752Каждый процесс дочернего сеанса пишет отдельный отладочный лог. При отказе runner выводит хвост логов рядом с сеансом в claude.ai/code. Если вы не запустили runner с [`--remove-session-state`](/docs/ru/self-hosted-environments-reference#runner-cli-flags), он также сохраняет лог неудачного сеанса на диске и печатает его путь в логе runner.

747 753 

Details

25Для claude.ai требуется:25Для claude.ai требуется:

26 26 

27* **Allow self-hosted environments** включено [Владельцем](/docs/ru/cloud-environments#organization-shared-environments) на [странице администратора **Cloud environments**](https://claude.ai/admin-settings/cloud-environments); кнопка **New** не появляется, пока это не будет сделано. Если у вас нет этой роли, кто-то, кто её имеет, может создать окружение и передать вам его секрет; шаги runner и terminal на этой странице не требуют роли claude.ai, и там, где шаг проверяет статус в интерфейсе администратора, собственные строки логов runner дают вам тот же сигнал.27* **Allow self-hosted environments** включено [Владельцем](/docs/ru/cloud-environments#organization-shared-environments) на [странице администратора **Cloud environments**](https://claude.ai/admin-settings/cloud-environments); кнопка **New** не появляется, пока это не будет сделано. Если у вас нет этой роли, кто-то, кто её имеет, может создать окружение и передать вам его секрет; шаги runner и terminal на этой странице не требуют роли claude.ai, и там, где шаг проверяет статус в интерфейсе администратора, собственные строки логов runner дают вам тот же сигнал.

28* [Подключение GitHub](/docs/ru/claude-code-on-the-web#github-authentication-options) для вашей организации, чтобы разработчики могли выбирать репозитории при запуске сеансов.28* [Коннектор GitHub](https://claude.ai/admin-settings/connectors), включённый пользователем с ролью Owner, и собственное [подключение GitHub](/docs/ru/web-quickstart#connect-github) каждого разработчика, чтобы они могли выбирать репозитории github.com при запуске сессий.

29 29 

30<h3 id="host-and-network">30<h3 id="host-and-network">

31 Хост и сеть31 Хост и сеть


34Хост runner требует:34Хост runner требует:

35 35 

36* Хост или контейнер Linux или macOS с исходящим HTTPS к `api.anthropic.com`, к `claude.ai` и хостам загрузки, на которые он перенаправляет для шага установки ниже, и к вашему git-хосту для клонирования; [таблица требований к сети](/docs/ru/self-hosted-environments-deploy#network-requirements) содержит полный список. Windows не поддерживается в качестве хоста runner; запустите runner в контейнере Linux вместо этого. Рабочие станции разработчиков не затронуты, так как сеансы запускаются из claude.ai в браузере.36* Хост или контейнер Linux или macOS с исходящим HTTPS к `api.anthropic.com`, к `claude.ai` и хостам загрузки, на которые он перенаправляет для шага установки ниже, и к вашему git-хосту для клонирования; [таблица требований к сети](/docs/ru/self-hosted-environments-deploy#network-requirements) содержит полный список. Windows не поддерживается в качестве хоста runner; запустите runner в контейнере Linux вместо этого. Рабочие станции разработчиков не затронуты, так как сеансы запускаются из claude.ai в браузере.

37* Репозиторий для тестовой сессии: публичный или такой, который этот хост уже может клонировать по его HTTPS URL без запроса учётных данных.37* Репозиторий для тестовой сессии: публичный или такой, который этот хост уже может клонировать по его HTTPS URL без запроса учётных данных. Одного SSH-ключа недостаточно, поскольку runner клонирует `https://` URL репозитория. Чтобы вместо этого клонировать по SSH, см. [Rewrite git URLs for private networks](/docs/ru/self-hosted-environments-deploy#rewrite-git-urls-for-private-networks).

38* Часы, синхронизированные с реальным временем, например с помощью NTP. Аутентификация не удаётся, когда часы отстают или спешат более чем на пять минут; см. [Troubleshooting](/docs/ru/self-hosted-environments-deploy#troubleshooting).38* Часы, синхронизированные с реальным временем, например с помощью NTP. Аутентификация не удаётся, когда часы отстают или спешат более чем на пять минут; см. [Troubleshooting](/docs/ru/self-hosted-environments-deploy#troubleshooting).

39 39 

40<h3 id="software-on-the-runner-host">40<h3 id="software-on-the-runner-host">


105 105 

106 Выберите базовую директорию, заменив `<writable-dir>` в команде runner ниже абсолютным путём, который runner может писать или создавать. Runner создаёт директорию при запуске, затем проверяет репозитории и создаёт директории для каждого сеанса под ней. Без `--base-dir` он использует `/workspace`, что работает только если эта директория уже существует и доступна для записи или вы запускаете runner как root.106 Выберите базовую директорию, заменив `<writable-dir>` в команде runner ниже абсолютным путём, который runner может писать или создавать. Runner создаёт директорию при запуске, затем проверяет репозитории и создаёт директории для каждого сеанса под ней. Без `--base-dir` он использует `/workspace`, что работает только если эта директория уже существует и доступна для записи или вы запускаете runner как root.

107 107 

108 Если runner не может создать или писать в путь, он выходит при запуске с ошибкой, называющей директорию вместо регистрации. См. [Troubleshooting](/docs/ru/self-hosted-environments-deploy#troubleshooting).108 <Warning>

109 Используйте каталог, выделенный для runner, а не ваш домашний каталог или каталог с вашими собственными клонами. Runner считает всё, что находит в `<writable-dir>/<repo-owner>/<repo>`, своим клоном и может сбросить его, а также перезаписать или удалить в нём файлы.

110 </Warning>

111 

112 Если runner не может создать базовый каталог или записывать в него, он завершается при запуске с ошибкой, в которой указан этот каталог, вместо регистрации. См. [Устранение неполадок](/docs/ru/self-hosted-environments-deploy#troubleshooting).

109 113 

110 Затем запустите runner с `--environment-secret-file` и `--base-dir`:114 Затем запустите runner с `--environment-secret-file` и `--base-dir`:

111 115 


113 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'117 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'

114 ```118 ```

115 119 

116 После регистрации в вашем окружении runner записывает в лог `Registered: runner_id=<runner-id>`, а затем начинает опрашивать наличие работы. Если runner позже завершится, перезапустите его вручную. О том, когда это происходит, см. [Если runner завершился](#if-the-runner-exits).120 После регистрации в вашем окружении runner записывает в лог `Registered: runner_id=<runner-id>`, а затем начинает опрашивать наличие работы. Запущенный этой командой, он по задумке завершается после обслуживания одной сессии, а не после каждого хода. Чтобы обслуживать больше сессий, запускайте runner снова каждый раз, когда он завершается. О том, когда это происходит и что runner записывает в лог, см. [Если runner завершился](#if-the-runner-exits).

117 </Step>121 </Step>

118 122 

119 <Step title="Проверьте, что runner появился">123 <Step title="Проверьте, что runner появился">


121 </Step>125 </Step>

122 126 

123 <Step title="Направьте сессию в окружение">127 <Step title="Направьте сессию в окружение">

124 <span id="route-a-session" />Запустите сессию на claude.ai/code и выберите ваше окружение в средстве выбора окружения, где самостоятельно размещаемые окружения отображаются рядом с размещаемыми Anthropic. В качестве репозитория выберите указанный в [предварительных требованиях](#host-and-network): публичный репозиторий или тот, который этот хост уже может клонировать. Runner клонирует с теми учётными данными git, которые уже есть на хосте.128 <span id="route-a-session" />Запустите сессию на claude.ai/code и выберите ваше окружение в средстве выбора окружения, где самостоятельно размещаемые окружения отображаются рядом с размещаемыми Anthropic. В качестве репозитория выберите указанный в [предварительных требованиях](#host-and-network): публичный репозиторий или тот, который этот хост уже может клонировать по его HTTPS URL без запроса учётных данных.

125 129 

126 Следующий доступный runner подхватывает поставленную в очередь сессию и записывает в лог `Picked up session <session-id>` вместе с числом активных сессий и ёмкостью, поэтому по собственному выводу runner можно определить, какой хост взял сессию. Наблюдайте за работой сессии и читайте ответы Claude на [claude.ai/code](https://claude.ai/code).130 Следующий доступный runner подхватывает поставленную в очередь сессию и записывает в лог `Picked up session <session-id>` вместе с числом активных сессий и ёмкостью, поэтому по собственному выводу runner можно определить, какой хост взял сессию. Наблюдайте за работой сессии и читайте ответы Claude на [claude.ai/code](https://claude.ai/code).

127 131 

128 Если сессия не начинает работу, сопоставьте то, что вы видите:132 <span id="session-doesnt-start" />Если сессия не начинает работу, сопоставьте то, что вы видите:

129 133 

130 * **Сессия остаётся в очереди**: см. [Устранение неполадок](/docs/ru/self-hosted-environments-deploy#troubleshooting).134 * **Сессия остаётся в очереди**: см. [Устранение неполадок](/docs/ru/self-hosted-environments-deploy#troubleshooting).

131 * **Сессия не запускается из-за ошибки git**: ошибка отображается в сессии и в логе runner. Если она содержит `could not read Username for` из git, за которым следует URL вашего git-хоста, у runner не было учётных данных HTTPS для этого хоста. См. [Configure git](/docs/ru/self-hosted-environments-deploy#configure-git), где также описаны варианты учётных данных для приватных репозиториев в production.135 * **Сессия не запускается из-за ошибки git**: если ошибка содержит `could not read Username for` из git, за которым следует URL вашего git-хоста, у runner не было учётных данных HTTPS для этого хоста.

136 * **Предоставьте учётные данные HTTPS**: см. [Настройка git](/docs/ru/self-hosted-environments-deploy#configure-git)

137 * **Клонируйте через SSH**: если на хосте runner уже есть SSH-ключ, см. [Перезапись git URL для частных сетей](/docs/ru/self-hosted-environments-deploy#rewrite-git-urls-for-private-networks)

132 </Step>138 </Step>

133</Steps>139</Steps>

134 140 


136 Если runner завершился142 Если runner завершился

137</h3>143</h3>

138 144 

139Если runner завершится во время этого быстрого старта, запустите его снова той же командой. Runner может завершиться самостоятельно:145Если runner завершится во время этого быстрого старта, запустите его снова. Runner может завершиться самостоятельно:

140 146 

141* **Сессии завершены**: в логе отображается `[runner:exit] account workload drained — exiting`. Runner по задумке завершается после окончания его активных сессий. См. [Runner lifecycle](/docs/ru/self-hosted-environments#runner-lifecycle).147* **Ничего не выполняется**: в логе отображается `[runner:exit] account workload drained — exiting`. Runner [по задумке завершается](/docs/ru/self-hosted-environments#runner-lifecycle), как только перестаёт выполнять какую-либо сессию, например:

148 * **Вы архивировали или удалили сессию**: запустите runner снова

149 * **Сессия не запустилась**: [устраните причину](#session-doesnt-start), затем запустите runner снова

142* **Потеряна связь**: в логе отображается строка `[runner:fatal]` с `runner record gone server-side` или с `poll auth failed`. Если runner на некоторое время теряет связь с Anthropic, например потому что хост перешёл в спящий режим, он может завершиться при следующем обращении к Anthropic.150* **Потеряна связь**: в логе отображается строка `[runner:fatal]` с `runner record gone server-side` или с `poll auth failed`. Если runner на некоторое время теряет связь с Anthropic, например потому что хост перешёл в спящий режим, он может завершиться при следующем обращении к Anthropic.

143 151 

144Завершённый ход не завершает вашу тестовую сессию. После первого хода сессия остаётся подключённой, а runner продолжает работать, поэтому вы можете [отправить сессии следующее сообщение](#send-a-follow-up-message-to-a-running-session), не перезапуская runner.152Завершённый ход не завершает вашу тестовую сессию. После первого хода сессия остаётся подключённой, а runner продолжает работать, поэтому вы можете [отправить сессии следующее сообщение](#send-a-follow-up-message-to-a-running-session), не перезапуская runner.

Details

54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Выведите runner на пенсию в абсолютный временной штамп Unix в секундах для инфраструктуры, которая убивает runner в известное время; [Runner lifecycle](/docs/ru/self-hosted-environments#runner-lifecycle) описывает последовательность отпуска и как определить размер маржи. Значения до 2001 или после года 5138 отклоняются флагом и игнорируются переменной окружения. |54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Выведите runner на пенсию в абсолютный временной штамп Unix в секундах для инфраструктуры, которая убивает runner в известное время; [Runner lifecycle](/docs/ru/self-hosted-environments#runner-lifecycle) описывает последовательность отпуска и как определить размер маржи. Значения до 2001 или после года 5138 отклоняются флагом и игнорируются переменной окружения. |

55| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Какие из списков правил классификатора [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), которые управляющий уровень отправляет вместе с сессией, могут применяться к этой сессии: `all`, `no-allow` или `none`. Что применяет каждое значение, см. в разделе [Списки правил авторежима](#auto-mode-rule-lists). Недопустимое значение останавливает runner при запуске. Требуется Claude Code v2.1.295 или новее. |55| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Какие из списков правил классификатора [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), которые управляющий уровень отправляет вместе с сессией, могут применяться к этой сессии: `all`, `no-allow` или `none`. Что применяет каждое значение, см. в разделе [Списки правил авторежима](#auto-mode-rule-lists). Недопустимое значение останавливает runner при запуске. Требуется Claude Code v2.1.295 или новее. |

56| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Как долго ждать чистого выхода процесса Claude после завершения сеанса перед принудительным завершением. Повысьте значение, если собственные hooks `SessionEnd` дочернего процесса нуждаются в большем времени. |56| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Как долго ждать чистого выхода процесса Claude после завершения сеанса перед принудительным завершением. Повысьте значение, если собственные hooks `SessionEnd` дочернего процесса нуждаются в большем времени. |

57| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Освобождает слот сессии, если дочерний процесс не сообщил об инициализации в течение N минут после запуска. Клонирование выполняется до запуска, поэтому время клонирования не учитывается. Сбрасывается сигналом инициализации дочернего процесса в [канале активности](/docs/ru/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached), а не обычным выводом, после чего в действие вступает `--release-idle-session-min`. `0` отключает. |57| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Освобождает слот сессии, если дочерний процесс не сообщил по [каналу активности](/docs/ru/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached) о своей инициализации в течение N минут. Отсчёт N минут начинается при запуске процесса, после клонирования, и начинается заново при каждом сообщении `user` или `assistant`, которое дочерний процесс выдаёт до инициализации или до сообщения о своём состоянии. До v2.1.299 этот таймаут переставал действовать с первым таким сообщением сессии. Об освобождении после сигнала инициализации см. `--release-idle-session-min`. `0` отключает. |

58| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | on | Посейте сохраняемое доверие для путей репозитория каждого сеанса, чтобы зафиксированные в репо `permissions.allow` и `additionalDirectories` были соблюдены. Установите `false` для отпуска зафиксированных в репо грантов разрешений и вместо этого настройте правила разрешения в `settings.json` конфигурации хоста; параметры `sandbox.*` зафиксированные в репо все еще применяются в любом случае, поэтому [защита repo-settings](/docs/ru/self-hosted-environments-deploy#harden-your-deployment) сканирует их независимо от этого флага. |58| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | on | Посейте сохраняемое доверие для путей репозитория каждого сеанса, чтобы зафиксированные в репо `permissions.allow` и `additionalDirectories` были соблюдены. Установите `false` для отпуска зафиксированных в репо грантов разрешений и вместо этого настройте правила разрешения в `settings.json` конфигурации хоста; параметры `sandbox.*` зафиксированные в репо все еще применяются в любом случае, поэтому [защита repo-settings](/docs/ru/self-hosted-environments-deploy#harden-your-deployment) сканирует их независимо от этого флага. |

59| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Клонирует репозитории на github.com через [прокси git Anthropic](/docs/ru/self-hosted-environments-deploy#use-the-anthropic-git-proxy) вместо управляемой клиентом аутентификации git. Требует `--capacity 1` и git 2.32 или новее; в противном случае runner отказывается запускаться. Заменяет флаги перезаписи. |59| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Клонирует репозитории на github.com через [прокси git Anthropic](/docs/ru/self-hosted-environments-deploy#use-the-anthropic-git-proxy) вместо управляемой клиентом аутентификации git. Требует `--capacity 1` и git 2.32 или новее; в противном случае runner отказывается запускаться. Заменяет флаги перезаписи. |

60 60 


160 160 

161Используйте `last_poll_age_ms` как сигнал живости в пользовательских зондах; значение, которое растет без ограничений, указывает на то, что цикл опроса застрял. Оба `last_poll_at` и `last_poll_age_ms` равны `null` до завершения первого опроса.161Используйте `last_poll_age_ms` как сигнал живости в пользовательских зондах; значение, которое растет без ограничений, указывает на то, что цикл опроса застрял. Оба `last_poll_at` и `last_poll_age_ms` равны `null` до завершения первого опроса.

162 162 

163Orchestrator служит своему собственному `/healthz` на его порту здоровья. Его конечная точка всегда возвращает `200`, и тело несет поле `connected`, сообщающее, успешен ли последний опрос, плюс количество очереди порождения для каждого состояния в `queue_counts`. Ограничьте готовность и оповещение на `connected` вместо кода состояния.163Собственный `/healthz` orchestrator на его порту здоровья всегда возвращает `200`. Тело несет поле `connected`, сообщающее, успешен ли последний опрос, плюс количество очереди порождения для каждого состояния в `queue_counts`. Чтобы узнать, почему `connected` равно `false`, прочитайте поле верхнего уровня `last_error`, которое сбрасывается в `null` при каждом успешном опросе. Ограничьте готовность и оповещение на `connected` вместо кода состояния.

164 164 

165Когда [SCM connector](#scm-connector-flags) настроен, тело `/healthz` orchestrator также несет `scm_connector_connected` и объект `scm_connector` с `connected`, `last_connected_at`, `last_error`, `reconnects` и `requests_forwarded`. Оба поля равны `null`, когда `--scm-connector-host` не установлен.165Когда [SCM connector](#scm-connector-flags) настроен, тело `/healthz` orchestrator также несет `scm_connector_connected` и объект `scm_connector` с `connected`, `last_connected_at`, `last_error`, `reconnects` и `requests_forwarded`. Оба поля равны `null`, когда `--scm-connector-host` не установлен.

166 166 

settings-reference.md +229 −175

Details

692| [`gcpAuthRefresh`](#gcpauthrefresh) | Обновляйте [учётные данные Google Cloud](/docs/ru/google-vertex-ai#advanced-credential-configuration) с помощью вашей собственной команды | Authentication and providers | Any file |692| [`gcpAuthRefresh`](#gcpauthrefresh) | Обновляйте [учётные данные Google Cloud](/docs/ru/google-vertex-ai#advanced-credential-configuration) с помощью вашей собственной команды | Authentication and providers | Any file |

693| [`hooks`](#hooks) | Запускайте свои собственные команды как [хуки](/docs/ru/hooks) в точках жизненного цикла Claude Code | Hooks and automation | Any file |693| [`hooks`](#hooks) | Запускайте свои собственные команды как [хуки](/docs/ru/hooks) в точках жизненного цикла Claude Code | Hooks and automation | Any file |

694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Ограничьте, какие переменные окружения [HTTP-хуки](/docs/ru/hooks) могут помещать в заголовки | Hooks and automation | Any file |694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Ограничьте, какие переменные окружения [HTTP-хуки](/docs/ru/hooks) могут помещать в заголовки | Hooks and automation | Any file |

695| [`idleCompaction`](#idlecompaction) | Запретите Claude Code сжимать длинный диалог, пока ваша сессия терминала простаивает | Memory and context | Any file |

695| [`includeCoAuthoredBy`](#includecoauthoredby) | Устарело; используйте `attribution` для скрытия или изменения атрибуции коммитов и PR | Git and attribution | Any file |696| [`includeCoAuthoredBy`](#includecoauthoredby) | Устарело; используйте `attribution` для скрытия или изменения атрибуции коммитов и PR | Git and attribution | Any file |

696| [`includeGitInstructions`](#includegitinstructions) | Удалите встроенные инструкции для коммитов и PR из контекста Claude | Git and attribution | Any file |697| [`includeGitInstructions`](#includegitinstructions) | Удалите встроенные инструкции для коммитов и PR из контекста Claude | Git and attribution | Any file |

697| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Получайте [push-уведомление](/docs/ru/remote-control#mobile-push-notifications), когда Claude ждёт вас | Remote, desktop, and notifications | Any file |698| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Получайте [push-уведомление](/docs/ru/remote-control#mobile-push-notifications), когда Claude ждёт вас | Remote, desktop, and notifications | Any file |


840 Модель и ответы841 Модель и ответы

841</h2>842</h2>

842 843 

843Выберите, какие модели использует Claude Code и как он отвечает. Чтобы узнать, как эти параметры взаимодействуют с командой `/model` и переменными окружения, см. [Конфигурация модели](/docs/ru/model-config).844Выберите, какие модели использует Claude Code и как он отвечает. О том, как эти настройки взаимодействуют с командой `/model` и переменными окружения, см. [Конфигурация модели](/docs/ru/model-config).

844 845 

845<h3 id="advisormodel">846<h3 id="advisormodel">

846 `advisorModel`847 `advisorModel`

847</h3>848</h3>

848 849 

849Выберите, какая модель отвечает, когда Claude вызывает серверный [инструмент advisor](/docs/ru/advisor). Оставьте его неустановленным, чтобы отключить advisor. Advisor должен быть по крайней мере столь же способным, как ваша основная модель. См. [Выберите модель advisor](/docs/ru/advisor#choose-an-advisor-model) для принятых пар и того, что происходит, когда вы выбираете неподдерживаемую.850Выберите модель, которая отвечает, когда Claude вызывает серверный [инструмент advisor](/docs/ru/advisor). Удалите значение, чтобы отключить advisor. Advisor должен быть не менее способным, чем ваша основная модель. Допустимые сочетания и то, что происходит при выборе недопустимой модели, описаны в разделе [Выбор модели advisor](/docs/ru/advisor#choose-an-advisor-model).

850 851 

851Обычно вы не редактируете этот ключ вручную. Запустите `/advisor`, чтобы открыть средство выбора, которое показывает текущий выбор, модели, которые могут давать советы, и **No advisor**. Claude Code сохраняет ваш выбор в этот ключ в `~/.claude/settings.json`. Если вы выбираете из клиента [Remote Control](/docs/ru/remote-control) или в сеансе, подключённом к удалённому рабочему процессу, выбор применяется только к этому сеансу и не изменяет этот ключ.852Обычно этот ключ не редактируют вручную. Выполните `/advisor`, чтобы открыть окно выбора, в котором показаны текущий выбор, модели, которые могут выступать в роли advisor, и вариант **No advisor**. Claude Code сохраняет ваш выбор в этот ключ в `~/.claude/settings.json`. Если вы делаете выбор из клиента [Remote Control](/docs/ru/remote-control) или в сессии, подключённой к удалённому исполнителю, выбор применяется только к этой сессии и не изменяет этот ключ.

852 853 

853Если ваша учётная запись требует [согласия на использование кредитов](/docs/ru/advisor#fable-advisor-and-usage-credits), сначала примите его, запустив `/model fable`. До этого выбор Fable в `/advisor` ничего не сохраняет, и Claude Code говорит вам сначала запустить `/model fable`.854Если ваша учётная запись требует [согласия на использование кредитов использования](/docs/ru/advisor#fable-advisor-and-usage-credits), сначала дайте его, выполнив `/model fable`. Пока вы этого не сделаете, выбор Fable в `/advisor` ничего не сохраняет, и Claude Code предлагает сначала выполнить `/model fable`.

854 855 

855* **Область действия**: [`Any file`](#scopes)856* **Область действия**: [`Any file`](#scopes)

856* **Тип**: строка, один из псевдонимов `"fable"`, `"opus"` или `"sonnet"`, которые разрешаются в текущую версию Claude Code этого семейства моделей по умолчанию, или полный ID модели, такой как `"claude-opus-5-5"`857* **Тип**: строка, один из псевдонимов `"fable"`, `"opus"` или `"sonnet"`, которые разрешаются в текущую версию по умолчанию соответствующего семейства моделей в Claude Code, либо полный ID модели, например `"claude-opus-5-5"`

857* **По умолчанию**: не установлено, поэтому advisor отключён858* **По умолчанию**: не задано, поэтому advisor отключён

858* **Переопределения для каждого сеанса**: `--advisor` имеет приоритет над этим ключом для одного сеанса. [`CLAUDE_CODE_DISABLE_ADVISOR_TOOL`](/docs/ru/env-vars) отключает advisor, и этот ключ не может его включить обратно859* **Переопределения для сессии**: `--advisor` имеет приоритет над этим ключом для одной сессии. [`CLAUDE_CODE_DISABLE_ADVISOR_TOOL`](/docs/ru/env-vars) отключает advisor, и этот ключ не может снова его включить

859 860 

860```json settings.json theme={null}861```json settings.json theme={null}

861{862{


863}864}

864```865```

865 866 

866Ключ не влияет на поставщиков, где advisor [недоступен](/docs/ru/advisor#requirements), такие как Amazon Bedrock и Claude Platform на AWS. `"fable"` требует [доступа к Fable](/docs/ru/advisor#choose-an-advisor-model).867Ключ не действует у провайдеров, где advisor [недоступен](/docs/ru/advisor#requirements), например Amazon Bedrock и Claude Platform on AWS. Для `"fable"` требуется [доступ к Fable](/docs/ru/advisor#choose-an-advisor-model).

867 868 

868<h3 id="alwaysthinkingenabled">869<h3 id="alwaysthinkingenabled">

869 `alwaysThinkingEnabled`870 `alwaysThinkingEnabled`

870</h3>871</h3>

871 872 

872Отключите [расширенное мышление](/docs/ru/model-config#extended-thinking) для каждого сеанса, установив это значение на `false`. Мышление включено по умолчанию, поэтому `true` ничего не меняет. Большинство людей устанавливают это через `/config` вместо редактирования файла.873Отключите [расширенное мышление](/docs/ru/model-config#extended-thinking) для всех сессий, установив значение `false`. Мышление включено по умолчанию, поэтому `true` ничего не меняет. Большинство пользователей задают это через `/config`, а не редактируя файл.

873 874 

874На моделях, которые всегда используют мышление, таких как Opus 5.5, Sonnet 5.5, Haiku 5.5 и модели Fable, `false` не имеет эффекта. У [сторонних поставщиков](/docs/ru/third-party-integrations) Claude Code опускает параметр `thinking` вместо отключения мышления, поэтому модели с адаптивными рассуждениями всё ещё могут использовать мышление. При отключённом мышлении в Anthropic API Claude Code отправляет effort `high` вместо более высокого уровня моделям, которые, как ему известно, [не принимают эту комбинацию](/docs/ru/errors#effort-isnt-available-with-thinking-turned-off), таким как Opus 5.875На моделях, которые всегда используют мышление, таких как Opus 5.5, Sonnet 5.5, Haiku 5.5 и модели Fable, значение `false` не действует. У [сторонних провайдеров](/docs/ru/third-party-integrations) Claude Code не передаёт параметр `thinking` вместо того, чтобы отключать мышление, поэтому модели с адаптивными рассуждениями всё равно могут использовать мышление. Когда мышление отключено в Anthropic API, Claude Code отправляет effort `high` вместо более высокого уровня моделям, которые, как ему известно, [не принимают такое сочетание](/docs/ru/errors#effort-isnt-available-with-thinking-turned-off), например Opus 5.

875 876 

876* **Область действия**: [`Any file`](#scopes)877* **Область действия**: [`Any file`](#scopes)

877* **Тип**: Boolean878* **Тип**: Boolean

878 * `true`: нет эффекта; мышление уже включено879 * `true`: не действует; мышление уже включено

879 * `false`: Claude Code отключает расширенное мышление для каждого сеанса880 * `false`: Claude Code отключает расширенное мышление для всех сессий

880* **По умолчанию**: не установлено, поэтому мышление включено для моделей, которые его поддерживают881* **По умолчанию**: не задано, поэтому мышление включено для моделей, которые его поддерживают

881* **Переопределения для каждого сеанса**: [`MAX_THINKING_TOKENS`](/docs/ru/env-vars) имеет приоритет над этим ключом для одного сеанса: `0` отключает мышление в соответствии с теми же ограничениями модели и поставщика, что и `false`, а положительное значение включает мышление даже когда этот ключ `false`. На адаптивных моделях рассуждений само число игнорируется882* **Переопределения для сессии**: [`MAX_THINKING_TOKENS`](/docs/ru/env-vars) имеет приоритет над этим ключом для одной сессии: `0` отключает мышление с теми же ограничениями модели и провайдера, что и `false`, а положительное значение включает мышление, даже если этот ключ равен `false`. На моделях с адаптивными рассуждениями само число игнорируется

882 883 

883```json settings.json theme={null}884```json settings.json theme={null}

884{885{


890 `availableModels`891 `availableModels`

891</h3>892</h3>

892 893 

893Ограничьте, какие модели люди могут выбрать для основного сеанса, [подагентов](/docs/ru/sub-agents), [skills](/docs/ru/skills) и [advisor](/docs/ru/advisor). Управляемый список ограничивает `/model`, `--model` и ключ `model` в собственных файлах разработчика; модель вне списка не может быть выбрана. С сопоставлением префиксов по умолчанию это не трогает опцию Default саму по себе; объедините её с [`enforceAvailableModels`](#enforceavailablemodels) для этого.894Ограничьте, какие модели пользователи могут выбирать для основной сессии, [субагентов](/docs/ru/sub-agents), [скиллов](/docs/ru/skills) и [advisor](/docs/ru/advisor). Управляемый список ограничивает `/model`, `--model` и ключ `model` в собственных файлах разработчика; модель вне списка выбрать нельзя. При сопоставлении по префиксу, используемом по умолчанию, это само по себе не затрагивает вариант Default; для этого используйте его вместе с [`enforceAvailableModels`](#enforceavailablemodels).

894 895 

895* **Область действия**: [`Any file`](#scopes). Разверните его в управляемых параметрах, чтобы применить его для организации.896* **Область действия**: [`Any file`](#scopes). Разверните его в управляемых настройках, чтобы применить принудительно для организации.

896* **Тип**: массив псевдонимов моделей или ID897* **Тип**: массив псевдонимов или ID моделей

897* **По умолчанию**: не установлено, поэтому каждая модель доступна898* **По умолчанию**: не задано, поэтому доступны все модели

898 899 

899Этот пример позволяет людям выбирать только модели Sonnet и Haiku:900В этом примере пользователи могут выбирать только модели Sonnet и Haiku:

900 901 

901```json settings.json theme={null}902```json settings.json theme={null}

902{903{


904}905}

905```906```

906 907 

907Запись ID модели, такая как `"claude-opus-5"`, также разрешает более поздние версии, которые её расширяют, такие как Opus 5.5. Чтобы заблокировать одну из этих версий, используйте [`deniedModels`](#deniedmodels). Чтобы каждая запись ID модели разрешала только названную ею версию, используйте [`availableModelsMatch`](#availablemodelsmatch). См. [Ограничить выбор модели](/docs/ru/model-config#restrict-model-selection).908Запись с ID модели, например `"claude-opus-5"`, также разрешает более поздние версии, которые его расширяют, например Opus 5.5. Чтобы заблокировать одну из этих версий, используйте [`deniedModels`](#deniedmodels). Чтобы каждая запись с ID модели разрешала только указанную в ней версию, используйте [`availableModelsMatch`](#availablemodelsmatch). См. [Ограничение выбора модели](/docs/ru/model-config#restrict-model-selection).

908 909 

909<h3 id="availablemodelsmatch">910<h3 id="availablemodelsmatch">

910 `availableModelsMatch`911 `availableModelsMatch`

911</h3>912</h3>

912 913 

913Выберите, как записи [`availableModels`](#availablemodels) соответствуют ID моделей. По умолчанию запись ID модели также разрешает более поздние версии, которые её расширяют, поэтому `"claude-opus-5"` разрешает Opus 5.5. С `"exact"` каждая запись ID модели разрешает только названную ею версию, поэтому более новая версия этой модели остаётся заблокированной, пока вы её не перечислите. Требует Claude Code v2.1.283 или позже.914Выберите, как записи [`availableModels`](#availablemodels) сопоставляются с ID моделей. По умолчанию запись с ID модели также разрешает более поздние версии, которые его расширяют, поэтому `"claude-opus-5"` разрешает Opus 5.5. При значении `"exact"` каждая запись с ID модели разрешает только указанную в ней версию, поэтому более новая версия этой модели остаётся заблокированной, пока вы не добавите её в список. Требуется Claude Code v2.1.283 или новее.

914 915 

915* **Область действия**: [`Managed`](#scopes). Claude Code игнорирует ключ в пользовательских, проектных и локальных параметрах и в `--settings` с предупреждением916* **Область действия**: [`Managed`](#scopes). Claude Code игнорирует ключ в пользовательских, проектных и локальных настройках, а также в `--settings`, с предупреждением

916* **Тип**: строка, один из:917* **Тип**: строка, одно из значений:

917 * `"prefix"`: запись ID модели разрешает её версию и любой ID модели, который её расширяет другим сегментом918 * `"prefix"`: запись с ID модели разрешает свою версию и любой ID модели, который расширяет его ещё одним сегментом

918 * `"exact"`: запись ID модели разрешает только названную ею версию, включая датированные ID этой версии, поэтому `"claude-opus-5"` разрешает Opus 5, но не `claude-opus-5-5`. Псевдоним семейства, такой как `"opus"`, всё ещё разрешает всё семейство, и записи `best`, `opusplan` и `default` игнорируются919 * `"exact"`: запись с ID модели разрешает только указанную в ней версию, включая ID этой версии с датами, поэтому `"claude-opus-5"` разрешает Opus 5, но не `claude-opus-5-5`. Псевдоним семейства, например `"opus"`, по-прежнему разрешает всё семейство, а записи `best`, `opusplan` и `default` игнорируются

919* **По умолчанию**: `"prefix"`920* **По умолчанию**: `"prefix"`

920 921 

921Этот пример разрешает Opus 5 и Sonnet 5 и не позволяет более позднему выпуску любого из них:922В этом примере разрешены Opus 5 и Sonnet 5 и никакие более поздние выпуски этих моделей:

922 923 

923```json managed-settings.json theme={null}924```json managed-settings.json theme={null}

924{925{


927}928}

928```929```

929 930 

930С `"exact"` опция Default также ограничена перечисленными моделями, когда список называет по крайней мере одну модель или семейство. См. [Заблокировать определённые модели или версии](/docs/ru/model-config#block-specific-models-or-versions).931При значении `"exact"` вариант Default также ограничивается перечисленными моделями, если в списке указана хотя бы одна модель или семейство. См. [Блокировка отдельных моделей или версий](/docs/ru/model-config#block-specific-models-or-versions).

931 932 

932<h3 id="deniedmodels">933<h3 id="deniedmodels">

933 `deniedModels`934 `deniedModels`

934</h3>935</h3>

935 936 

936Заблокируйте определённые модели, с или без списка разрешений [`availableModels`](#availablemodels) и даже когда этот список их разрешает. Claude Code скрывает заблокированную модель из средства выбора `/model`, и модель не может быть выбрана нигде, где применяется `availableModels`. Сеанс на опции Default также не запускает заблокированную модель, как описано в [Заблокировать определённые модели или версии](/docs/ru/model-config#block-specific-models-or-versions). Требует Claude Code v2.1.283 или позже.937Блокируйте отдельные модели — со списком разрешённых моделей [`availableModels`](#availablemodels) или без него, и даже если этот список их разрешает. Claude Code скрывает заблокированную модель в окне выбора `/model`, и эту модель нельзя выбрать нигде, где применяется `availableModels`. Сессия с вариантом Default также не запускает заблокированную модель, как описано в разделе [Блокировка отдельных моделей или версий](/docs/ru/model-config#block-specific-models-or-versions). Требуется Claude Code v2.1.283 или новее.

937 938 

938* **Область действия**: [`Managed`](#scopes). Claude Code игнорирует ключ в пользовательских, проектных и локальных параметрах и в `--settings` с предупреждением939* **Область действия**: [`Managed`](#scopes). Claude Code игнорирует ключ в пользовательских, проектных и локальных настройках, а также в `--settings`, с предупреждением

939* **Тип**: массив псевдонимов моделей или ID940* **Тип**: массив псевдонимов или ID моделей

940 * Псевдоним семейства, такой как `"opus"`, блокирует каждую модель в этом семействе941 * Псевдоним семейства, например `"opus"`, блокирует все модели этого семейства

941 * ID модели, такой как `"claude-opus-5-5"`, блокирует эту версию в каждом написании, включая датированные и специфичные для поставщика ID942 * ID модели, например `"claude-opus-5-5"`, блокирует эту версию в любом написании, включая ID с датами и ID конкретных провайдеров

942 * ID модели без младшей версии, такой как `"claude-opus-5"`, также блокирует более поздние младшие версии, такие как Opus 5.5. Напишите `"claude-opus-5-0"`, чтобы заблокировать только Opus 5943 * ID модели без минорной версии, например `"claude-opus-5"`, также блокирует более поздние минорные версии, например Opus 5.5. Укажите `"claude-opus-5-0"`, чтобы заблокировать только Opus 5

943 * Записи `best`, `opusplan` и `default` игнорируются944 * Записи `best`, `opusplan` и `default` игнорируются

944* **По умолчанию**: не установлено, поэтому ни одна модель не заблокирована945* **По умолчанию**: не задано, поэтому ни одна модель не заблокирована

945 946 

946Этот пример разрешает модели Opus и Sonnet и блокирует Opus 5.5:947В этом примере разрешены модели Opus и Sonnet, а Opus 5.5 заблокирована:

947 948 

948```json managed-settings.json theme={null}949```json managed-settings.json theme={null}

949{950{


952}953}

953```954```

954 955 

955См. [Заблокировать определённые модели или версии](/docs/ru/model-config#block-specific-models-or-versions).956См. [Блокировка отдельных моделей или версий](/docs/ru/model-config#block-specific-models-or-versions).

956 957 

957<h3 id="effortlevel">958<h3 id="effortlevel">

958 `effortLevel`959 `effortLevel`

959</h3>960</h3>

960 961 

961Установите уровень [effort](/docs/ru/model-config#adjust-effort-level) по умолчанию для моделей, для которых вы не сохранили уровень. Более низкие уровни быстрее и дешевле на простых задачах, а более высокие уровни рассуждают глубже на сложных проблемах.962Задайте [уровень effort](/docs/ru/model-config#adjust-effort-level) по умолчанию для моделей, для которых вы не сохранили уровень. Более низкие уровни быстрее и дешевле на простых задачах, а более высокие обеспечивают более глубокие рассуждения на сложных задачах.

962 963 

963Когда вы запускаете `/effort low`, `medium`, `high` или `xhigh` в интерактивном сеансе на вашей машине, Claude Code сохраняет уровень для активной модели под [`modelSettings`](#modelsettings) вместо записи этого ключа. До v2.1.251 `/effort` записывал этот ключ.964Когда вы выполняете `/effort low`, `medium`, `high` или `xhigh` в интерактивной сессии на своём компьютере, Claude Code сохраняет уровень для активной модели в [`modelSettings`](#modelsettings), а не записывает этот ключ. До v2.1.251 команда `/effort` записывала этот ключ.

964 965 

965В одном файле параметров Claude Code использует сохранённый уровень модели вместо этого ключа. [`modelSettings`](#modelsettings) указывает приоритет между файлами.966В пределах одного файла настроек Claude Code использует сохранённый уровень модели, а не этот ключ. Приоритет между файлами описан в [`modelSettings`](#modelsettings).

966 967 

967В сеансе, подключённом к удалённому рабочему процессу, в запуске `-p` и в Agent SDK `/effort` применяется только к этому сеансу. [Отрегулировать уровень effort](/docs/ru/model-config#adjust-effort-level) перечисляет интерактивные выборы, которые также применяются только к этому сеансу. Сообщение, которое печатает `/effort`, говорит, что произошло.968В сессии, подключённой к удалённому исполнителю, при запуске с `-p` и в Agent SDK `/effort` применяется только к этой сессии. В разделе [Настройка уровня effort](/docs/ru/model-config#adjust-effort-level) перечислены варианты интерактивного выбора, которые также применяются только к этой сессии. Сообщение, которое выводит `/effort`, указывает, что именно произошло.

968 969 

969* **Область действия**: [`Any file`](#scopes)970* **Область действия**: [`Any file`](#scopes)

970* **Тип**: строка, один из:971* **Тип**: строка, одно из значений:

971 * `"low"`: наименьшее рассуждение для коротких, ограниченных, чувствительных к задержкам задач, которые не требуют высокого интеллекта972 * `"low"`: минимум рассуждений, для коротких, чётко ограниченных задач, чувствительных к задержке и не чувствительных к уровню интеллекта модели

972 * `"medium"`: снижает использование токенов для работы, чувствительной к затратам, которая может пожертвовать некоторым интеллектом973 * `"medium"`: сокращает расход токенов для работы, чувствительной к стоимости, где допустимо пожертвовать частью интеллекта

973 * `"high"`: балансирует использование токенов и интеллект974 * `"high"`: баланс между расходом токенов и интеллектом

974 * `"xhigh"`: более глубокое рассуждение при более высоких затратах токенов975 * `"xhigh"`: более глубокие рассуждения при большем расходе токенов

975* **По умолчанию**: не установлено976* **По умолчанию**: не задано

976* **Переопределения для каждого сеанса**: `--effort` имеет приоритет над этим ключом для одного сеанса, и [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/ru/env-vars) имеет приоритет над обоими977* **Переопределения для сессии**: `--effort` имеет приоритет над этим ключом для одной сессии, а [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/ru/env-vars) имеет приоритет над обоими

977 978 

978```json settings.json theme={null}979```json settings.json theme={null}

979{980{


981}982}

982```983```

983 984 

984В файле пользовательских параметров `~/.claude/settings.json` этот ключ является более старой формой, которую `/effort` записывал до того, как он сохранял уровни для каждой модели, и он продолжает применяться там, где применялся раньше, на Opus 5, Fable 5.1 и более ранних моделях. Opus 5.5 и модели, выпущенные после него, игнорируют его и начинают со своего собственного значения по умолчанию, пока вы не сохраните уровень для них, который `/effort` записывает под [`modelSettings`](#modelsettings). В проектных, локальных и управляемых параметрах и с `--settings` этот ключ применяется к каждой модели.985В вашем файле пользовательских настроек, `~/.claude/settings.json`, этот ключ — это старая форма, которую `/effort` записывала до того, как стала сохранять уровни для каждой модели, и он продолжает применяться там, где применялся раньше: к Opus 5, Fable 5.1 и более ранним моделям. Opus 5.5 и модели, выпущенные после неё, игнорируют его и начинают со своего уровня по умолчанию, пока вы не сохраните для них уровень, который `/effort` записывает в [`modelSettings`](#modelsettings). В проектных, локальных и управляемых настройках, а также с `--settings` этот ключ применяется ко всем моделям.

985 986 

986<h3 id="enforceavailablemodels">987<h3 id="enforceavailablemodels">

987 `enforceAvailableModels`988 `enforceAvailableModels`

988</h3>989</h3>

989 990 

990Средство выбора `/model` имеет опцию **Default**, и [`default` параметр модели](/docs/ru/model-config#default-model-setting) описывает модель, на которую она разрешается. Список разрешений [`availableModels`](#availablemodels) ограничивает модели, которые вы можете назвать, но с [сопоставлением префиксов](#availablemodelsmatch) по умолчанию он не переопределяет модель по умолчанию вашего типа учётной записи, поэтому **Default** всё ещё может разрешиться в модель вне списка. Этот ключ закрывает этот пробел. Требует Claude Code v2.1.175 или позже.991В окне выбора `/model` есть вариант **Default**, а в разделе [настройка модели `default`](/docs/ru/model-config#default-model-setting) описано, в какую модель он разрешается. Список разрешённых моделей [`availableModels`](#availablemodels) ограничивает модели, которые можно указать по имени, но при [сопоставлении по префиксу](#availablemodelsmatch), используемом по умолчанию, он не переназначает модель по умолчанию для вашего типа учётной записи, поэтому **Default** всё ещё может разрешиться в модель вне списка. Этот ключ закрывает этот пробел. Требуется Claude Code v2.1.175 или новее.

991 992 

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

993 994 

994О том, как этот ключ применяется к проверкам модели при запуске, см. [Amazon Bedrock](/docs/ru/amazon-bedrock#when-your-organization-enforces-a-model-allowlist) и [Agent Platform Google Cloud](/docs/ru/google-vertex-ai#when-your-organization-enforces-a-model-allowlist).995О том, как этот ключ применяется к проверкам модели при запуске, см. [Amazon Bedrock](/docs/ru/amazon-bedrock#when-your-organization-enforces-a-model-allowlist) и [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai#when-your-organization-enforces-a-model-allowlist).

995 996 

996* **Область действия**: [`Any file`](#scopes)997* **Область действия**: [`Any file`](#scopes)

997* **Тип**: Boolean998* **Тип**: Boolean

998 * `true`: когда **Default** разрешился бы в модель вне `availableModels`, Claude Code разрешает его в первую доступную модель в списке999 * `true`: когда **Default** разрешился бы в модель вне `availableModels`, Claude Code разрешает его в первую доступную модель из списка

999 * `false`: этот ключ не меняет, как разрешается **Default**1000 * `false`: этот ключ не меняет то, как разрешается **Default**

1000* **По умолчанию**: `false`1001* **По умолчанию**: `false`

1001 1002 

1002Этот пример ограничивает именованные выборы моделями Sonnet и Haiku и делает **Default** разрешаемым в первую из них, которая доступна:1003В этом примере выбор по имени ограничен моделями Sonnet и Haiku, а **Default** разрешается в первую из них, которая доступна:

1003 1004 

1004```json settings.json theme={null}1005```json settings.json theme={null}

1005{1006{


1008}1009}

1009```1010```

1010 1011 

1011Этот ключ не имеет эффекта, когда `availableModels` не установлен или пуст. См. [Применить список разрешений для модели Default](/docs/ru/model-config#enforce-the-allowlist-for-the-default-model). Требует Claude Code v2.1.175 или позже.1012Этот ключ не действует, если `availableModels` не задан или пуст. См. [Применение списка разрешённых моделей к модели Default](/docs/ru/model-config#enforce-the-allowlist-for-the-default-model). Требуется Claude Code v2.1.175 или новее.

1012 1013 

1013<h3 id="fallbackmodel">1014<h3 id="fallbackmodel">

1014 `fallbackModel`1015 `fallbackModel`

1015</h3>1016</h3>

1016 1017 

1017Назовите резервные модели для Claude Code, чтобы попробовать их по порядку, когда ваша основная модель перегружена или недоступна. Claude Code переключается на следующую доступную модель в цепи для остальной части хода и показывает уведомление. Без цепи Claude Code повторяет попытку той же модели, а затем выводит ошибку сервера, и вы повторяете попытку или переключаете модели сами.1018Укажите резервные модели, которые Claude Code будет пробовать по порядку, когда ваша основная модель перегружена или недоступна. Claude Code переключается на следующую доступную модель в цепочке до конца хода и показывает уведомление. Без цепочки Claude Code повторяет попытку с той же моделью, а затем показывает ошибку сервера, и вы сами повторяете попытку или переключаете модель.

1018 1019 

1019Переключение означает один ход с холодным [кэшем подсказок](/docs/ru/prompt-caching#switching-models) на резервной модели; ваше следующее сообщение сначала снова пытается использовать основную модель.1020Переключение означает один ход с холодным [кэшем промптов](/docs/ru/prompt-caching#switching-models) на резервной модели; ваше следующее сообщение снова сначала пробует основную модель.

1020 1021 

1021* **Область действия**: [`Any file`](#scopes)1022* **Область действия**: [`Any file`](#scopes)

1022* **Тип**: массив псевдонимов моделей или ID; `"default"` расширяется в модель по умолчанию1023* **Тип**: массив псевдонимов или ID моделей; `"default"` раскрывается в модель по умолчанию

1023* **По умолчанию**: не установлено, поэтому неудачный запрос не повторяется на другой модели1024* **По умолчанию**: не задано, поэтому неудавшийся запрос не повторяется на другой модели

1024* **Переопределения для каждого сеанса**: `--fallback-model` имеет приоритет над этим ключом для одного сеанса1025* **Переопределения для сессии**: `--fallback-model` имеет приоритет над этим ключом для одной сессии

1025 1026 

1026Этот пример сначала пытается Sonnet 5, затем Haiku 4.5, когда ваша основная модель не работает:1027В этом примере при сбое основной модели сначала пробуется Sonnet 5, затем Haiku 4.5:

1027 1028 

1028```json settings.json theme={null}1029```json settings.json theme={null}

1029{1030{


1031}1032}

1032```1033```

1033 1034 

1034В отличие от большинства параметров массива, этот ключ не объединяется между файлами параметров: файл с наивысшим приоритетом, который его определяет, поставляет всю цепь. Если ваш файл проекта устанавливает `["claude-sonnet-5"]` и ваш файл пользователя устанавливает `["claude-haiku-4-5"]`, цепь — это только `["claude-sonnet-5"]`. Claude Code сохраняет не более трёх различных разрешённых моделей из списка и игнорирует остальные. См. [Цепи резервных моделей](/docs/ru/model-config#fallback-model-chains).1035В отличие от большинства настроек-массивов, этот ключ не объединяется между файлами настроек: всю цепочку задаёт файл с наивысшим приоритетом, в котором он определён. Если ваш проектный файл задаёт `["claude-sonnet-5"]`, а пользовательский — `["claude-haiku-4-5"]`, цепочка будет только `["claude-sonnet-5"]`. Claude Code сохраняет из списка не более трёх различных разрешённых моделей и игнорирует остальные. См. [Цепочки резервных моделей](/docs/ru/model-config#fallback-model-chains).

1035 1036 

1036<h3 id="fastmode">1037<h3 id="fastmode">

1037 `fastMode`1038 `fastMode`

1038</h3>1039</h3>

1039 1040 

1040Включите [быстрый режим](/docs/ru/fast-mode) для сеансов, где он доступен, для интерактивной работы, такой как быстрая итерация или живая отладка, где вы хотите скорость при более высокой стоимости за токен. Обычно вы не редактируете этот ключ вручную: запуск `/fast` записывает `fastMode: true` в `~/.claude/settings.json`, и запуск его снова, чтобы отключить быстрый режим, удаляет ключ. Быстрый режим работает только на Opus 5.5, Opus 5 и Opus 4.8: включение его с другой модели переключает вас на Opus, а переключение на неподдерживаемую модель отключает его. См. [Переключить модели, пока быстрый режим включён](/docs/ru/fast-mode#switch-models-while-fast-mode-is-on).1041Включите [быстрый режим](/docs/ru/fast-mode) для сессий, где он доступен, — для интерактивной работы, например быстрой итерации или отладки в реальном времени, когда вам нужна скорость при более высокой стоимости за токен. Обычно этот ключ не редактируют вручную: выполнение `/fast` записывает `fastMode: true` в `~/.claude/settings.json`, а повторное выполнение для отключения быстрого режима удаляет ключ. Быстрый режим работает только на Opus 5.5, Opus 5 и Opus 4.8: его включение на другой модели переключает вас на Opus, а переключение на неподдерживаемую модель отключает его. См. [Переключение моделей при включённом быстром режиме](/docs/ru/fast-mode#switch-models-while-fast-mode-is-on).

1041 1042 

1042* **Область действия**: [`Any file`](#scopes)1043* **Область действия**: [`Any file`](#scopes)

1043* **Тип**: Boolean1044* **Тип**: Boolean

1044 * `true`: Claude Code включает быстрый режим для сеансов, где он доступен1045 * `true`: Claude Code включает быстрый режим для сессий, где он доступен

1045 * `false`: быстрый режим остаётся отключённым1046 * `false`: быстрый режим остаётся выключенным

1046* **По умолчанию**: не установлено, поэтому быстрый режим отключён1047* **По умолчанию**: не задано, поэтому быстрый режим выключен

1047* **Переопределения для каждого сеанса**: [`CLAUDE_CODE_DISABLE_FAST_MODE`](/docs/ru/env-vars) отключает быстрый режим для одного сеанса, и этот ключ не может его включить обратно1048* **Переопределения для сессии**: [`CLAUDE_CODE_DISABLE_FAST_MODE`](/docs/ru/env-vars) отключает быстрый режим для одной сессии, и этот ключ не может снова его включить

1048 1049 

1049```json settings.json theme={null}1050```json settings.json theme={null}

1050{1051{


1056 `fastModePerSessionOptIn`1057 `fastModePerSessionOptIn`

1057</h3>1058</h3>

1058 1059 

1059Обычно запуск `/fast` сохраняет [`fastMode`](#fastmode) в пользовательские параметры человека, поэтому быстрый режим включён в начале каждого последующего сеанса. Установите этот ключ на `true`, чтобы остановить это: сохранённый `fastMode: true` больше не включает быстрый режим при запуске сеанса, и каждый человек должен запустить `/fast` в каждом сеансе, в котором он его хочет. Claude Code оставляет ключ `fastMode` в их файле, поэтому отключение этого ключа восстанавливает старое поведение.1060Обычно выполнение `/fast` сохраняет [`fastMode`](#fastmode) в пользовательские настройки человека, поэтому быстрый режим включён в начале каждой последующей сессии. Установите этот ключ в `true`, чтобы это прекратить: сохранённое `fastMode: true` больше не включает быстрый режим при запуске сессии, и каждому пользователю нужно выполнять `/fast` в каждой сессии, где он нужен. Claude Code оставляет ключ `fastMode` в файле пользователя, поэтому отключение этого ключа восстанавливает прежнее поведение.

1060 1061 

1061Владельцы на планах Team или Enterprise могут развернуть его организационно через [управляемые параметры сервера](/docs/ru/server-managed-settings). Когда управляемые параметры устанавливают ключ, `/fast on` отклоняется вне интерактивных сеансов терминала и сообщает, что ваша организация отключила быстрый режим. Это охватывает [неинтерактивный режим](/docs/ru/headless), [расширение VS Code](/docs/ru/vs-code) и [облачные сеансы](/docs/ru/claude-code-on-the-web).1062Владельцы на тарифах Team или Enterprise могут развернуть его на всю организацию через [настройки, управляемые сервером](/docs/ru/server-managed-settings). Когда ключ задан в управляемых настройках, `/fast on` отклоняется вне интерактивных сессий в терминале и сообщает, что ваша организация отключила быстрый режим. Это касается [неинтерактивного режима](/docs/ru/headless), [расширения VS Code](/docs/ru/vs-code) и [облачных сессий](/docs/ru/claude-code-on-the-web).

1062 1063 

1063* **Область действия**: [`Any file`](#scopes)1064* **Область действия**: [`Any file`](#scopes)

1064* **Тип**: Boolean1065* **Тип**: Boolean

1065 * `true`: сохранённый `fastMode: true` больше не включает быстрый режим при запуске сеанса, поэтому каждый человек запускает `/fast` в каждом сеансе, в котором он его хочет; `fastMode: true`, переданный с `--settings`, всё ещё считается для этого сеанса, если только управляемые параметры не устанавливают этот ключ1066 * `true`: сохранённое `fastMode: true` больше не включает быстрый режим при запуске сессии, поэтому каждый пользователь выполняет `/fast` в каждой сессии, где он нужен; `fastMode: true`, переданное через `--settings`, по-прежнему учитывается для этой сессии, если этот ключ не задан в управляемых настройках

1066 * `false`: сохранённый `fastMode: true` включает быстрый режим в начале каждого последующего сеанса1067 * `false`: сохранённое `fastMode: true` включает быстрый режим в начале каждой последующей сессии

1067* **По умолчанию**: `false`1068* **По умолчанию**: `false`

1068 1069 

1069```json settings.json theme={null}1070```json settings.json theme={null}


1072}1073}

1073```1074```

1074 1075 

1075См. [Требовать согласие для каждого сеанса](/docs/ru/fast-mode#require-per-session-opt-in).1076См. [Требование явного включения в каждой сессии](/docs/ru/fast-mode#require-per-session-opt-in).

1076 1077 

1077<h3 id="language">1078<h3 id="language">

1078 `language`1079 `language`

1079</h3>1080</h3>

1080 1081 

1081Попросите Claude отвечать на языке, отличном от английского, по умолчанию. Нет фиксированного списка для ответов: Claude Code передаёт значение дословно Claude как инструкцию всегда отвечать на этом языке, поэтому любое имя языка, которое Claude может прочитать, работает. Claude Code не проверяет значение, поэтому неправильно написанное имя достигает Claude в написанном виде, а не производит ошибку. То же значение устанавливает язык для [голосовой диктовки](/docs/ru/voice-dictation#change-the-dictation-language), которая имеет фиксированный список [поддерживаемых языков диктовки](/docs/ru/voice-dictation#change-the-dictation-language), и для автоматически генерируемых названий сеансов.1082Сделайте так, чтобы Claude по умолчанию отвечал на языке, отличном от английского. Фиксированного списка для ответов нет: Claude Code передаёт значение Claude дословно как инструкцию всегда отвечать на этом языке, поэтому подходит любое название языка, которое Claude может прочитать. Claude Code не проверяет значение, поэтому название с опечаткой дойдёт до Claude в том виде, в каком написано, а не вызовет ошибку. Это же значение задаёт язык для [голосового ввода](/docs/ru/voice-dictation#change-the-dictation-language), у которого как раз есть фиксированный список [поддерживаемых языков диктовки](/docs/ru/voice-dictation#change-the-dictation-language), и для автоматически создаваемых названий сессий.

1082 1083 

1083* **Область действия**: [`Any file`](#scopes)1084* **Область действия**: [`Any file`](#scopes)

1084* **Тип**: строка, любое имя языка, такое как `"japanese"`, `"spanish"` или `"french"`; Claude Code не проверяет его1085* **Тип**: строка, любое название языка, например `"japanese"`, `"spanish"` или `"french"`; Claude Code его не проверяет

1085* **По умолчанию**: не установлено; названия сеансов затем соответствуют языку вашего разговора1086* **По умолчанию**: не задано; названия сессий в этом случае соответствуют языку вашего диалога

1086 1087 

1087```json settings.json theme={null}1088```json settings.json theme={null}

1088{1089{


1094 `maxEffortLevel`1095 `maxEffortLevel`

1095</h3>1096</h3>

1096 1097 

1097Ограничьте уровень [effort](/docs/ru/model-config#adjust-effort-level), который может использовать сеанс, оставляя доступными более низкие уровни. Любой более высокий уровень вместо этого работает на уровне ограничения, включая один из `/effort`, средства выбора `/model`, `--effort`, [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/ru/env-vars), frontmatter `effort` skill или subagent, или собственное значение по умолчанию модели. Claude Code применяет ограничение сам перед каждым запросом, поэтому оно действует на каждом поставщике, включая Amazon Bedrock, Agent Platform Google Cloud и Microsoft Foundry. Требует Claude Code v2.1.267 или позже.1098Ограничьте [уровень effort](/docs/ru/model-config#adjust-effort-level), который может использовать сессия, оставив доступными более низкие уровни. Любой более высокий уровень выполняется на уровне ограничения, в том числе уровень из `/effort`, окна выбора `/model`, `--effort`, [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/ru/env-vars), поля `effort` во frontmatter скилла или субагента либо собственного уровня модели по умолчанию. Claude Code сам применяет ограничение перед каждым запросом, поэтому оно действует у любого провайдера, включая Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry. Требуется Claude Code v2.1.267 или новее.

1098 1099 

1099* **Область действия**: [`Any file`](#scopes). Разверните его в управляемых параметрах, чтобы применить его для организации. Когда несколько областей устанавливают ограничение, применяется самое низкое, поэтому ограничение, установленное в одной области, не может быть повышено из другой1100* **Область действия**: [`Any file`](#scopes). Разверните его в управляемых настройках, чтобы применить принудительно для организации. Если ограничение задано в нескольких областях действия, применяется самое низкое, поэтому ограничение, заданное в одной области действия, нельзя повысить из другой

1100* **Тип**: строка, один из `"low"`, `"medium"`, `"high"`, `"xhigh"` или `"max"`. Значение `"max"` не устанавливает ограничение1101* **Тип**: строка, одно из значений `"low"`, `"medium"`, `"high"`, `"xhigh"` или `"max"`. Значение `"max"` не задаёт ограничения

1101* **По умолчанию**: не установлено, поэтому ограничение не применяется1102* **По умолчанию**: не задано, поэтому ограничение не применяется

1102* **Ограничения для каждой модели**: добавьте `maxEffortLevel` в запись [`modelSettings`](#modelsettings) модели. Эта запись заменяет этот ключ только для модели в источнике параметров, который устанавливает оба, такие как ваши пользовательские параметры или один [управляемый источник](/docs/ru/managed-settings#how-claude-code-combines-managed-sources). Установите `"max"` там, чтобы освободить модель от ограничения этого источника; Claude Code всё ещё применяет ограничения из других источников1103* **Ограничения для отдельных моделей**: добавьте `maxEffortLevel` в запись модели в [`modelSettings`](#modelsettings). Эта запись заменяет этот ключ для данной модели только в пределах источника настроек, который задаёт оба, например ваших пользовательских настроек или одного [управляемого источника](/docs/ru/managed-settings#how-claude-code-combines-managed-sources). Укажите там `"max"`, чтобы исключить модель из ограничения этого источника; Claude Code по-прежнему применяет ограничения из других источников

1103 1104 

1104Этот пример ограничивает каждую модель на `medium` и освобождает Sonnet 4.6:1105В этом примере все модели ограничены уровнем `medium`, а Sonnet 4.6 исключена:

1105 1106 

1106```json settings.json theme={null}1107```json settings.json theme={null}

1107{1108{


1114}1115}

1115```1116```

1116 1117 

1117Когда ваша организация также устанавливает [лимит effort](/docs/ru/model-config#organization-effort-limits) для модели, применяется более низкое из двух ограничений.1118Если ваша организация также задаёт для модели [ограничение effort](/docs/ru/model-config#organization-effort-limits), применяется меньшее из двух ограничений.

1118 1119 

1119<h3 id="model">1120<h3 id="model">

1120 `model`1121 `model`

1121</h3>1122</h3>

1122 1123 

1123Установите модель, которую каждый новый сеанс использует, чтобы вам не пришлось выбирать её с помощью `/model` каждый раз. Установка её здесь не мешает вам переключаться в середине сеанса. Если ваш администратор установил [организационную модель по умолчанию](/docs/ru/model-config#organization-default-model) для переопределения выбора пользователя, вы получаете эту модель даже когда устанавливаете этот ключ в пользовательских, проектных или локальных параметрах.1124Задайте модель, которую использует каждая новая сессия, чтобы не выбирать её через `/model` каждый раз. Если задать её здесь, это не мешает переключаться посреди сессии. Если ваш администратор задал [модель организации по умолчанию](/docs/ru/model-config#organization-default-model), переопределяющую выбор пользователя, вы получаете эту модель, даже если задали этот ключ в пользовательских, проектных или локальных настройках.

1124 1125 

1125* **Область действия**: [`Any file`](#scopes)1126* **Область действия**: [`Any file`](#scopes)

1126* **Тип**: строка, псевдоним модели или полный ID модели1127* **Тип**: строка, псевдоним модели или полный ID модели

1127* **По умолчанию**: не установлено, поэтому Claude Code использует модель по умолчанию вашей учётной записи1128* **По умолчанию**: не задано, поэтому Claude Code использует модель по умолчанию для вашей учётной записи

1128* **Переопределения для каждого сеанса**: `--model` имеет приоритет над [`ANTHROPIC_MODEL`](/docs/ru/env-vars), и оба имеют приоритет над этим ключом для одного сеанса, включая управляемый `model`; список [`availableModels`](#availablemodels) всё ещё применяется к выбору1129* **Переопределения для сессии**: `--model` имеет приоритет над [`ANTHROPIC_MODEL`](/docs/ru/env-vars), и оба имеют приоритет над этим ключом для одной сессии, в том числе над управляемым `model`; список [`availableModels`](#availablemodels) по-прежнему применяется к выбору

1129 1130 

1130```json settings.json theme={null}1131```json settings.json theme={null}

1131{1132{


1133}1134}

1134```1135```

1135 1136 

1136Значение здесь превосходит [`ANTHROPIC_DEFAULT_MODEL`](/docs/ru/model-config#set-a-default-model-for-new-sessions), который Claude Code использует только когда ничто другое не выбирает модель.1137Значение здесь имеет приоритет над [`ANTHROPIC_DEFAULT_MODEL`](/docs/ru/model-config#set-a-default-model-for-new-sessions), который Claude Code использует, только когда модель не выбрана ничем другим.

1137 1138 

1138<h3 id="modeloverrides">1139<h3 id="modeloverrides">

1139 `modelOverrides`1140 `modelOverrides`

1140</h3>1141</h3>

1141 1142 

1142Сопоставьте ID моделей Anthropic с ID моделей, специфичными для поставщика, такими как ARN профилей вывода Amazon Bedrock. Каждая запись средства выбора модели затем использует своё сопоставленное значение при вызове API поставщика. Администраторы используют это на [Amazon Bedrock, Agent Platform Google Cloud и Microsoft Foundry](/docs/ru/model-config#override-model-ids-per-version) для маршрутизации каждой версии модели на определённый профиль вывода, имя версии или развёртывание для управления, распределения затрат или региональной маршрутизации.1143Сопоставьте ID моделей Anthropic с ID моделей конкретного провайдера, например ARN профилей инференса Amazon Bedrock. Тогда каждая запись в окне выбора модели при вызове API провайдера использует сопоставленное значение. Администраторы используют это на [Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry](/docs/ru/model-config#override-model-ids-per-version), чтобы направлять каждую версию модели на конкретный профиль инференса, имя версии или развёртывание для целей управления, распределения затрат или региональной маршрутизации.

1143 1144 

1144* **Область действия**: [`Any file`](#scopes)1145* **Область действия**: [`Any file`](#scopes)

1145* **Тип**: объект, сопоставляющий ID модели с ID модели поставщика1146* **Тип**: объект, сопоставляющий ID модели с ID модели провайдера

1146* **По умолчанию**: не установлено1147* **По умолчанию**: не задано

1147 1148 

1148Этот пример маршрутизирует каждый вызов для Opus 4.6 на названный профиль вывода Bedrock:1149В этом примере все вызовы Opus 4.6 направляются на указанный профиль инференса Bedrock:

1149 1150 

1150```json settings.json theme={null}1151```json settings.json theme={null}

1151{1152{


1155}1156}

1156```1157```

1157 1158 

1158См. [Переопределить ID моделей для каждой версии](/docs/ru/model-config#override-model-ids-per-version).1159См. [Переопределение ID моделей для каждой версии](/docs/ru/model-config#override-model-ids-per-version).

1159 1160 

1160<h3 id="modelpicker">1161<h3 id="modelpicker">

1161 `modelPicker`1162 `modelPicker`

1162</h3>1163</h3>

1163 1164 

1164Перечислите модели, которые предлагает средство выбора `/model`, в порядке, в котором вы их пишете, и под выбранными вами метками, чтобы средство выбора перечисляло модели, которые использует ваша организация, после встроенного набора или вместо него. `model` каждой строки берётся дословно, поэтому он принимает всё, что принимает `--model`: псевдоним, такой как `opus`, ID модели Anthropic или ID формата поставщика для Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry или шлюза LLM. Требует Claude Code v2.1.242 или позже.1165Перечислите модели, которые предлагает окно выбора `/model`, в том порядке, в котором вы их записываете, и под выбранными вами метками, чтобы в окне выбора были модели, которые использует ваша организация, — после встроенного набора или вместо него. Значение `model` каждой строки берётся дословно, поэтому оно принимает всё, что принимает `--model`: псевдоним, например `opus`, ID модели Anthropic или ID в формате провайдера для Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry или LLM-шлюза. Требуется Claude Code v2.1.242 или новее.

1165 1166 

1166* **Область действия**: [`User or managed`](#scopes). Claude Code читает ключ из управляемых параметров, `--settings` и пользовательских параметров и игнорирует его в проектных и локальных параметрах, поэтому репозиторий, который вы клонируете, не может переименовать средство выбора. Самый высокий из этих трёх, который устанавливает ключ, поставляет весь набор, и Claude Code никогда не объединяет наборы из двух источников.1167* **Область действия**: [`User or managed`](#scopes). Claude Code читает ключ из управляемых настроек, `--settings` и пользовательских настроек и игнорирует его в проектных и локальных настройках, чтобы клонированный вами репозиторий не мог переименовать пункты окна выбора. Весь набор задаёт тот из этих трёх источников с наивысшим приоритетом, в котором задан ключ, и Claude Code никогда не объединяет наборы из двух источников.

1167* **Тип**: объект с массивом `options` строк и необязательным Boolean `replaceBuiltInOptions`1168* **Тип**: объект с массивом строк `options` и необязательным Boolean `replaceBuiltInOptions`

1168* **По умолчанию**: не установлено, поэтому средство выбора показывает встроенный набор1169* **По умолчанию**: не задано, поэтому окно выбора показывает встроенный набор

1169 1170 

1170Этот пример добавляет два развёртывания Bedrock после встроенного набора, под именами, которые ваша команда узнаёт:1171В этом примере после встроенного набора добавляются два развёртывания Bedrock под названиями, знакомыми вашей команде:

1171 1172 

1172```json managed-settings.json theme={null}1173```json managed-settings.json theme={null}

1173{1174{


1192 Поля для `modelPicker`1193 Поля для `modelPicker`

1193</h4>1194</h4>

1194 1195 

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

1196 1197 

1197| Поле | Тип | Что оно делает |1198| Поле | Тип | Что делает |

1198| :- | :- | :- |1199| :- | :- | :- |

1199| `options` | массив строк, каждая с обязательным `model` и необязательными `label`, `description` и `behavesAs` | Строки, которые показывает средство выбора, в этом порядке, за исключением того, что затемнённая строка перемещается в конец. Без `label` Claude Code озаглавливает строку встроенным именем для модели, которую он знает, или ID модели в противном случае, и без `description` он пишет общую вторую строку |1200| `options` | массив строк, каждая с обязательным `model` и необязательными `label`, `description` и `behavesAs` | Строки, которые показывает окно выбора, в этом порядке, за исключением того, что неактивная строка перемещается вниз. Без `label` Claude Code озаглавливает строку встроенным названием известной ему модели или, в противном случае, ID модели, а без `description` пишет общую вторую строку |

1200| `replaceBuiltInOptions` | Boolean, по умолчанию `false` | Установите на `true`, чтобы показать только эти строки, **Default** и строку для модели, которую сеанс уже использует. Оставьте неустановленным, чтобы добавить эти строки после встроенного набора |1201| `replaceBuiltInOptions` | Boolean, по умолчанию `false` | Установите `true`, чтобы показывать только эти строки, **Default** и строку для модели, которую уже использует сессия. Оставьте незаданным, чтобы добавить эти строки после встроенного набора |

1201 1202 

1202Запись в `options` также может нести необязательную строку `behavesAs` рядом с её `model`, что требует v2.1.257 или позже. Установите её на ID модели, которую ваша версия Claude Code уже знает, такой как `claude-opus-4-8`, на запись, чей `model` новее, чем ваша версия. Claude Code затем применяет возможности этой известной модели и значения по умолчанию effort к записи вместо обработки её модели как неизвестной. Метка записи и ID модели, которые Claude Code отправляет в запросах, не меняются.1203Запись в `options` также может содержать необязательную строку `behavesAs` рядом со своим `model`, для чего требуется v2.1.257 или новее. Укажите в ней ID модели, которая уже известна вашей версии Claude Code, например `claude-opus-4-8`, в записи, чей `model` новее вашей версии. Тогда Claude Code применяет к записи возможности и значения effort по умолчанию этой известной модели, вместо того чтобы считать её модель неизвестной. Метка записи и ID модели, который Claude Code отправляет в запросах, не меняются.

1203 1204 

1204С `replaceBuiltInOptions` включённым Claude Code скрывает каждую другую строку: встроенный набор, строки, которые он добавляет для записей [`availableModels`](#availablemodels), модели, которые нашла [обнаружение шлюза](/docs/ru/llm-gateway-protocol#model-discovery), и [`ANTHROPIC_CUSTOM_MODEL_OPTION`](/docs/ru/model-config#add-a-custom-model-option). С ним выключённым Claude Code пропускает перечисленную модель, которую встроенный набор уже охватывает. Метка меняет то, что показывает средство выбора, а не какую модель запускает Claude Code.1205При включённом `replaceBuiltInOptions` Claude Code скрывает все остальные строки: встроенный набор, строки, которые он добавляет для записей [`availableModels`](#availablemodels), модели, найденные при [обнаружении через шлюз](/docs/ru/llm-gateway-protocol#model-discovery), и [`ANTHROPIC_CUSTOM_MODEL_OPTION`](/docs/ru/model-config#add-a-custom-model-option). При выключенном Claude Code пропускает указанную модель, которая уже есть во встроенном наборе. Метка меняет то, что показывает окно выбора, а не то, какую модель запускает Claude Code.

1205 1206 

1206Список разрешений [`availableModels`](#availablemodels) всё ещё применяется к этим строкам. Прежде чем добавить перечисленную модель в список разрешений, прочитайте [Поведение объединения](/docs/ru/model-config#merge-behavior): определённый ID модели сужает запись подстановочного знака своего семейства. Claude Code также проверяет каждую строку против сеанса перед тем, как показать средство выбора:1207Список разрешённых моделей [`availableModels`](#availablemodels) по-прежнему применяется к этим строкам. Прежде чем добавлять указанную модель в список разрешённых, прочитайте раздел [Поведение при объединении](/docs/ru/model-config#merge-behavior): конкретный ID модели сужает шаблонную запись её семейства. Claude Code также проверяет каждую строку на соответствие сессии, прежде чем показать окно выбора:

1207 1208 

1208* **Удалено**: строка, которую Claude Code не может обслуживать, такая как снятая с производства модель или модель, к которой ваша организация не имеет доступа1209* **Удалена**: строка, которую Claude Code не может обслужить, например выведенная из эксплуатации модель или модель, к которой у вашей организации нет доступа

1209* **Затемнено**: строка, которую вы не можете выбрать ещё, показанная с причиной1210* **Неактивна**: строка, которую вы пока не можете выбрать, показывается с указанием причины

1210* **Ни одна строка не выживает**: Claude Code сохраняет встроенный набор, отфильтрованный списком разрешений как обычно1211* **Не осталось ни одной строки**: Claude Code сохраняет встроенный набор, отфильтрованный по списку разрешённых моделей как обычно

1211 1212 

1212Claude Code удаляет строку, которую он не может разобрать, и сохраняет остальные. См. [Исправить сломанный файл параметров](/docs/ru/settings#fix-a-broken-settings-file).1213Claude Code удаляет строку, которую не может разобрать, и сохраняет остальные. См. [Исправление повреждённого файла настроек](/docs/ru/settings#fix-a-broken-settings-file).

1213 1214 

1214<h3 id="modelpricing">1215<h3 id="modelpricing">

1215 `modelPricing`1216 `modelPricing`

1216</h3>1217</h3>

1217 1218 

1218Сообщайте о расходах по ставкам, которые платит ваша организация, вместо цены списка. Установите это, когда ваша организация имеет согласованные ставки, поэтому цифры в долларах, которые видят разработчики, соответствуют вашему счёту. Claude Code применяет ставки в `/usage`, [строке состояния](/docs/ru/statusline), `total_cost_usd` Agent SDK, лимите [`--max-budget-usd`](/docs/ru/cli-reference) и [OpenTelemetry](/docs/ru/monitoring-usage) метрике затрат и событиях. Вы поставляете ставки: Claude Code не читает их из вашего контракта или Claude Console. Требует Claude Code v2.1.242 или позже.1219Отображайте расходы по тарифам, которые платит ваша организация, а не по прейскуранту. Задайте это, если у вашей организации есть договорные тарифы, чтобы суммы в долларах, которые видят разработчики, совпадали с вашим счётом. Claude Code применяет тарифы в `/usage`, [строке состояния](/docs/ru/statusline), `total_cost_usd` в Agent SDK, ограничении [`--max-budget-usd`](/docs/ru/cli-reference) и в метрике и событиях стоимости [OpenTelemetry](/docs/ru/monitoring-usage). Тарифы указываете вы: Claude Code не считывает их из вашего договора или Claude Console. Требуется Claude Code v2.1.242 или новее.

1219 1220 

1220* **Область действия**: [`Managed`](#scopes). Разверните ключ через управляемые параметры сервера, политику MDM, файл `managed-settings.json` или [помощник политики](/docs/ru/managed-settings#compute-the-policy-with-a-helper-program). Claude Code игнорирует его в пользовательских, проектных и локальных параметрах, в `--settings` и на Windows в пользовательском реестре [HKCU](/docs/ru/managed-settings#where-each-mechanism-stores-the-policy). С управляемыми параметрами сервера каждый сеанс сообщает затраты по цене списка, пока [выборка параметров](/docs/ru/server-managed-settings#fetch-and-caching-behavior) этого сеанса не подтвердит параметр. Приложение-хост, которое встраивает Claude Code и устанавливает [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/ru/env-vars), может поставить таблицу своего собственного через опцию SDK [`managedSettings`](/docs/ru/agent-sdk/typescript#options), которую Claude Code использует только когда ни один управляемый источник не устанавливает ключ и только в Claude Code v2.1.246 или позже.1221* **Область действия**: [`Managed`](#scopes). Разверните ключ через настройки, управляемые сервером, политику MDM, файл `managed-settings.json` или [вспомогательную программу политики](/docs/ru/managed-settings#compute-the-policy-with-a-helper-program). Claude Code игнорирует его в пользовательских, проектных и локальных настройках, в `--settings` и в Windows в доступном пользователю для записи [реестре HKCU](/docs/ru/managed-settings#where-each-mechanism-stores-the-policy). При использовании настроек, управляемых сервером, каждая сессия показывает расходы по прейскуранту, пока [получение настроек](/docs/ru/server-managed-settings#fetch-and-caching-behavior) этой сессии не подтвердит настройку. Хост-приложение, которое встраивает Claude Code и задаёт [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/ru/env-vars), может передать собственную таблицу через параметр SDK [`managedSettings`](/docs/ru/agent-sdk/typescript#options), которую Claude Code использует, только если ни один управляемый источник не задаёт ключ, и только в Claude Code v2.1.246 или новее.

1221* **Тип**: объект с необязательным `multiplier` и необязательной картой `overrides`1222* **Тип**: объект с необязательным `multiplier` и необязательной картой `overrides`

1222* **По умолчанию**: не установлено, поэтому Claude Code сообщает цену списка, если приложение-хост не поставляет таблицу1223* **По умолчанию**: не задано, поэтому Claude Code показывает расходы по прейскуранту, если хост-приложение не передаёт таблицу

1223 1224 

1224Установите `multiplier` один для плоской скидки или надбавки, `overrides` один для ставок для каждой модели или оба.1225Задайте только `multiplier` для фиксированной скидки или наценки, только `overrides` для тарифов по отдельным моделям или оба.

1225 1226 

1226Этот пример устанавливает согласованные ставки для Sonnet 4.6 и затем снижает каждую цифру, включая строку Sonnet, на 15%:1227В этом примере задаются договорные тарифы для Sonnet 4.6, а затем каждая сумма, включая строку Sonnet, уменьшается на 15%:

1227 1228 

1228```json managed-settings.json theme={null}1229```json managed-settings.json theme={null}

1229{1230{


1241}1242}

1242```1243```

1243 1244 

1244Установите `multiplier` выше 1, до 10, чтобы отметить каждую цифру. Надбавка требует Claude Code v2.1.271 или позже. Более ранние версии игнорируют `multiplier` выше 1 с предупреждением и сохраняют остальную часть параметра.1245Задайте `multiplier` больше 1, но не более 10, чтобы увеличить каждую сумму. Для наценки требуется Claude Code v2.1.271 или новее. Более ранние версии игнорируют `multiplier` больше 1 с предупреждением и сохраняют остальную часть настройки.

1245 1246 

1246Для шагов, включая как подтвердить, что ставки действуют, см. [Сообщить о расходах по вашим согласованным ставкам](/docs/ru/costs#report-spend-at-your-contracted-rates).1247Порядок действий, в том числе как убедиться, что тарифы действуют, описан в разделе [Отображение расходов по договорным тарифам](/docs/ru/costs#report-spend-at-your-contracted-rates).

1247 1248 

1248<span id="modelpricing-multiplier" />1249<span id="modelpricing-multiplier" />

1249 1250 


1253 Поля для `modelPricing`1254 Поля для `modelPricing`

1254</h4>1255</h4>

1255 1256 

1256| Поле | Тип | Что оно делает |1257| Поле | Тип | Что делает |

1257| :- | :- | :- |1258| :- | :- | :- |

1258| `multiplier` | число больше 0 и не более 10 | Масштабирует каждую стоимость, которую вычисляет Claude Code, независимо от того, охватывает ли её строка `overrides`. Ниже 1 — скидка, выше 1 — надбавка |1259| `multiplier` | число больше 0 и не более 10 | Масштабирует каждую стоимость, которую вычисляет Claude Code, независимо от того, покрывает ли её строка `overrides`. Значение меньше 1 — скидка, больше 1 — наценка |

1259| `overrides` | карта ID модели на объект ставки с `input`, `output`, `cacheRead` и `cacheWrite`, каждый от 0 до 10000 | Ставки USD за миллион токенов для этой модели, все четыре обязательны. `cacheWrite` охватывает как пятиминутные, так и одночасовые записи кэша. См. [Какие модели применяет строка modelPricing](#which-models-a-modelpricing-row-applies-to) |1260| `overrides` | карта ID модели на объект тарифов с `input`, `output`, `cacheRead` и `cacheWrite`, каждый от 0 до 10000 | Тарифы в долларах США за миллион токенов для этой модели, все четыре обязательны. `cacheWrite` охватывает записи в кэш как на пять минут, так и на один час. См. [К каким моделям применяется строка](#which-models-a-modelpricing-row-applies-to) |

1260 1261 

1261Claude Code использует ставки строки ровно так, как вы их написали, без добавления надбавки быстрого режима или [ставки только для США](https://platform.claude.com/docs/en/about-claude/pricing). Если вы также установите `multiplier`, Claude Code применяет его поверх ставок строки. Claude Code удаляет строку со ставкой, которую он не может разобрать, или `multiplier`, который он не может разобрать, и сохраняет остальные; см. [Исправить сломанный файл параметров](/docs/ru/settings#fix-a-broken-settings-file).1262Claude Code использует тарифы строки точно в том виде, в каком вы их записали, не добавляя надбавку за быстрый режим или [тариф для инференса только в США](https://platform.claude.com/docs/en/about-claude/pricing). Если вы также задали `multiplier`, Claude Code применяет его поверх тарифов строки. Claude Code удаляет строку с тарифом, который не может разобрать, или `multiplier`, который не может разобрать, и сохраняет остальное; см. [Исправление повреждённого файла настроек](/docs/ru/settings#fix-a-broken-settings-file).

1262 1263 

1263<h4 id="which-models-a-modelpricing-row-applies-to">1264<h4 id="which-models-a-modelpricing-row-applies-to">

1264 Какие модели применяет строка `modelPricing`1265 К каким моделям применяется строка `modelPricing`

1265</h4>1266</h4>

1266 1267 

1267Claude Code решает, какие модели применяет строка, из ключа строки:1268Claude Code определяет, к каким моделям применяется строка, по её ключу:

1268 1269 

1269* **ID встроенной модели**: ключ, который сам Claude Code использует для встроенной модели, независимо от того, является ли этот ключ собственным ID модели, таким как `claude-sonnet-4-6`, или её ID Bedrock, Agent Platform или Foundry. Claude Code применяет строку к каждому датированному ID снимка и ID, специфичному для поставщика, этой модели.1270* **ID встроенной модели**: ключ, который сам Claude Code использует для встроенной модели, будь то собственный ID модели, например `claude-sonnet-4-6`, или её ID в Bedrock, Agent Platform или Foundry. Claude Code применяет строку ко всем ID снимков с датами и ID конкретных провайдеров этой модели.

1270* **Любой другой ключ**: ключ, который не является ID встроенной модели, такой как псевдоним модели шлюза. Claude Code применяет строку только к этому одному ID. Когда ID модели точно совпадает с одним из ваших ключей и также попадает под строку, ключ которой является ID встроенной модели, Claude Code использует точное совпадение.1271* **Любой другой ключ**: ключ, который не является ID встроенной модели, например псевдоним модели в шлюзе. Claude Code применяет строку только к этому одному ID. Когда ID модели точно совпадает с одним из ваших ключей и также подпадает под строку с ключом ID встроенной модели, Claude Code использует точное совпадение.

1271* **Профиль вывода приложения Bedrock**: как только Claude Code разрешил профиль в модель, на которую он маршрутизирует, через вашу карту [`modelOverrides`](#modeloverrides) или поиск [`bedrock:GetInferenceProfile`](/docs/ru/amazon-bedrock#iam-configuration), Claude Code применяет строку этой модели к профилю.1272* **Профиль инференса приложения Bedrock**: как только Claude Code определил модель, на которую направляет профиль, через вашу карту [`modelOverrides`](#modeloverrides) или [поиск `bedrock:GetInferenceProfile`](/docs/ru/amazon-bedrock#iam-configuration), Claude Code применяет к профилю строку этой модели.

1272 1273 

1273<h3 id="modelsettings">1274<h3 id="modelsettings">

1274 `modelSettings`1275 `modelSettings`

1275</h3>1276</h3>

1276 1277 

1277Сохраните уровень [effort](/docs/ru/model-config#adjust-effort-level) для каждой модели, которую вы используете. Требует Claude Code v2.1.251 или позже.1278Сохраняйте [уровень effort](/docs/ru/model-config#adjust-effort-level) для каждой используемой модели. Требуется Claude Code v2.1.251 или новее.

1278 1279 

1279В интерактивном сеансе на вашей машине, когда вы сохраняете `low`, `medium`, `high` или `xhigh` как свой стандарт с помощью `/effort` или ползунка effort средства выбора `/model`, Claude Code записывает этот уровень здесь под моделью, которую вы используете, поэтому вы редко редактируете этот ключ сами. Когда вы выбираете один из этих уровней в [средстве выбора модели расширения VS Code](/docs/ru/vs-code#use-the-prompt-box), Claude Code сохраняет его здесь так же. Запись [`effortLevel`](#effortlevel) перечисляет сеансы, где `/effort` применяется только к этому сеансу.1280В интерактивной сессии на вашем компьютере, когда вы сохраняете `low`, `medium`, `high` или `xhigh` как значение по умолчанию с помощью `/effort` или ползунка effort в окне выбора `/model`, Claude Code записывает этот уровень сюда для используемой модели, поэтому вам редко приходится редактировать этот ключ самостоятельно. Когда вы выбираете один из этих уровней в [окне выбора модели расширения VS Code](/docs/ru/vs-code#use-the-prompt-box), Claude Code сохраняет его сюда таким же образом. В записи [`effortLevel`](#effortlevel) перечислены сессии, в которых `/effort` применяется только к этой сессии.

1280 1281 

1281Отредактируйте ключ вручную, чтобы изменить или удалить уровень, который вы сохранили.1282Отредактируйте ключ вручную, чтобы изменить или удалить сохранённый уровень.

1282 1283 

1283`effortLevel` модели здесь имеет приоритет над верхним уровнем [`effortLevel`](#effortlevel) в том же файле параметров. Между файлами Claude Code разрешает каждую модель отдельно: [файл параметров](/docs/ru/settings#settings-precedence) с наивысшим приоритетом, который устанавливает либо `effortLevel` для этой модели, либо верхний уровень `effortLevel`, который [применяется к этой модели](#effortlevel), решает, поэтому `effortLevel` в управляемых параметрах превосходит уровень, который вы сохранили в пользовательских параметрах. [Отрегулировать уровень effort](/docs/ru/model-config#adjust-effort-level) перечисляет, что ещё может переопределить сохранённый уровень, такой как `--effort` при запуске.1284`effortLevel` модели здесь имеет приоритет над `effortLevel` верхнего уровня ([`effortLevel`](#effortlevel)) в том же файле настроек. Между файлами Claude Code определяет значение для каждой модели отдельно: решает [файл настроек](/docs/ru/settings#settings-precedence) с наивысшим приоритетом, в котором задан либо `effortLevel` для этой модели, либо `effortLevel` верхнего уровня, который [применяется к этой модели](#effortlevel), поэтому `effortLevel` в управляемых настройках имеет приоритет над уровнем, сохранённым в пользовательских настройках. В разделе [Настройка уровня effort](/docs/ru/model-config#adjust-effort-level) перечислено, что ещё может переопределить сохранённый уровень, например `--effort` при запуске.

1284 1285 

1285Чтобы ограничить effort одной модели вместо установки её уровня, добавьте поле [`maxEffortLevel`](#maxeffortlevel) в запись этой модели. Поле требует Claude Code v2.1.267 или позже.1286Чтобы ограничить effort одной модели, а не задать её уровень, добавьте поле [`maxEffortLevel`](#maxeffortlevel) в запись этой модели. Для этого поля требуется Claude Code v2.1.267 или новее.

1286 1287 

1287* **Область действия**: [`Any file`](#scopes)1288* **Область действия**: [`Any file`](#scopes)

1288* **Тип**: объект, сопоставляющий имя модели с объектом с любыми из этих полей:1289* **Тип**: объект, сопоставляющий имя модели с объектом, содержащим любые из этих полей:

1289 * `effortLevel`: один из `"low"`, `"medium"`, `"high"` или `"xhigh"`1290 * `effortLevel`: одно из значений `"low"`, `"medium"`, `"high"` или `"xhigh"`

1290 * [`maxEffortLevel`](#maxeffortlevel): наивысший уровень effort, на котором может работать модель1291 * [`maxEffortLevel`](#maxeffortlevel): наивысший уровень effort, на котором может работать модель

1291 * `autoCompactWindow`: количество токенов от `100000` до `1000000` или `"auto"` для окна, настроенного под модель. [`/autocompact`](/docs/ru/model-config#set-the-auto-compact-window) сохраняет значение сюда. Для этой модели значение имеет приоритет над [`autoCompactWindow`](#autocompactwindow) верхнего уровня в том же файле настроек. Требует Claude Code v2.1.288 или позже1292 * `autoCompactWindow`: число токенов от `100000` до `1000000` или `"auto"` для окна, настроенного для модели. [`/autocompact`](/docs/ru/model-config#set-the-auto-compact-window) сохраняет значение сюда. Для этой модели значение имеет приоритет над [`autoCompactWindow`](#autocompactwindow) верхнего уровня в том же файле настроек. Требуется Claude Code v2.1.288 или новее

1292* **По умолчанию**: не установлено1293* **По умолчанию**: не задано

1293 1294 

1294Claude Code записывает каждую запись под каноническим именем модели, таким как `claude-opus-5-5`, и сопоставляет псевдоним этой модели, датированный, `[1m]` и признанные ID, специфичные для поставщика, с той же записью.1295Claude Code записывает каждую запись под каноническим именем модели, например `claude-opus-5-5`, и сопоставляет с этой же записью псевдоним модели, ID с суффиксом даты, `[1m]` и распознанные ID конкретных провайдеров.

1295 1296 

1296Этот пример сохраняет Opus 5.5 на `high`, пока другие модели используют свои собственные сохранённые или стандартные уровни:1297В этом примере Opus 5.5 остаётся на уровне `high`, а другие модели используют собственные сохранённые уровни или уровни по умолчанию:

1297 1298 

1298```json settings.json theme={null}1299```json settings.json theme={null}

1299{1300{


1305}1306}

1306```1307```

1307 1308 

1308Запустите `/effort auto`, чтобы очистить ваш сохранённый уровень для модели, которую вы используете. Claude Code оставляет другие записи и любой верхний уровень `effortLevel` на месте.1309Выполните `/effort auto`, чтобы очистить сохранённый уровень для используемой модели. Claude Code оставляет другие записи и любой `effortLevel` верхнего уровня без изменений.

1309 1310 

1310<h3 id="outputstyle">1311<h3 id="outputstyle">

1311 `outputStyle`1312 `outputStyle`

1312</h3>1313</h3>

1313 1314 

1314Выберите [стиль вывода](/docs/ru/output-styles) по имени. Стиль вывода — это сохранённый набор инструкций, который меняет роль Claude, тон и формат вывода, такой как встроенные стили Explanatory и Learning или один, который вы написали сами.1315Выберите [стиль вывода](/docs/ru/output-styles) по имени. Стиль вывода — это сохранённый набор инструкций, который меняет роль, тон и формат вывода Claude, например встроенные стили Explanatory и Learning или стиль, который вы написали сами.

1315 1316 

1316Если вы измените этот ключ во время сеанса, Claude использует новый стиль, начиная со следующего сообщения. Для того, что это сообщение стоит в кэшировании подсказок, см. [Изменение стиля вывода](/docs/ru/prompt-caching#changing-output-style). До v2.1.251 редактирование применялось только после запуска `/clear` или запуска нового сеанса.1317Если изменить этот ключ во время сессии, Claude использует новый стиль начиная с вашего следующего сообщения. О том, во что это сообщение обходится с точки зрения кэширования промптов, см. [Изменение стиля вывода](/docs/ru/prompt-caching#changing-output-style). До v2.1.251 изменение применялось только после выполнения `/clear` или запуска новой сессии.

1317 1318 

1318* **Область действия**: [`Any file`](#scopes)1319* **Область действия**: [`Any file`](#scopes)

1319* **Тип**: строка, имя [встроенного](/docs/ru/output-styles#built-in-output-styles) или [пользовательского](/docs/ru/output-styles#create-a-custom-output-style) стиля вывода1320* **Тип**: строка, имя [встроенного](/docs/ru/output-styles#built-in-output-styles) или [пользовательского](/docs/ru/output-styles#create-a-custom-output-style) стиля вывода

1320* **По умолчанию**: не установлено, поэтому Claude Code использует стиль по умолчанию1321* **По умолчанию**: не задано, поэтому Claude Code использует стиль по умолчанию

1321 1322 

1322Этот пример выбирает встроенный стиль Explanatory, который добавляет образовательные идеи между задачами:1323В этом примере выбран встроенный стиль Explanatory, который добавляет обучающие пояснения между задачами:

1323 1324 

1324```json settings.json theme={null}1325```json settings.json theme={null}

1325{1326{


1331 `promptCacheTtl`1332 `promptCacheTtl`

1332</h3>1333</h3>

1333 1334 

1334Выберите, как долго [кэш подсказок](/docs/ru/prompt-caching) держит основной разговор. Этот ключ применяется к вашим интерактивным, `-p` и Agent SDK ходам, вместе с помощниками, которые Claude Code запускает встроенно с ними. Одночасовой срок жизни сохраняет кэш в тепле на более длительные перерывы, и API [выставляет счёт за каждую запись кэша по более высокой ставке](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing), чем при пятиминутном сроке жизни. Требует Claude Code v2.1.242 или позже.1335Выберите, как долго [кэш промптов](/docs/ru/prompt-caching) хранит основной диалог. Этот ключ применяется к вашим ходам в интерактивном режиме, с `-p` и в Agent SDK, а также к вспомогательным запросам, которые Claude Code выполняет вместе с ними. Время жизни в один час сохраняет кэш «тёплым» на протяжении более длинных перерывов, а API [тарифицирует каждую запись в кэш по более высокой ставке](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing), чем при времени жизни в пять минут. Требуется Claude Code v2.1.242 или новее.

1335 1336 

1336* **Область действия**: [`Any file`](#scopes)1337* **Область действия**: [`Any file`](#scopes)

1337* **Тип**: строка, один из:1338* **Тип**: строка, одно из значений:

1338 * `"5m"`: кэш держится пять минут1339 * `"5m"`: кэш хранится пять минут

1339 * `"1h"`: кэш держится час1340 * `"1h"`: кэш хранится один час

1340* **По умолчанию**: не установлено, поэтому каждый запрос основного разговора получает [его стандартный срок жизни](/docs/ru/prompt-caching#which-ttl-each-request-gets)1341* **По умолчанию**: не задано, поэтому каждый запрос основного диалога получает [своё время жизни по умолчанию](/docs/ru/prompt-caching#which-ttl-each-request-gets)

1341* **Переопределения для каждого сеанса**: [`FORCE_PROMPT_CACHING_5M`](/docs/ru/env-vars) имеет приоритет над всем остальным, затем [`CLAUDE_CODE_PROMPT_CACHE_TTL`](/docs/ru/env-vars), затем этот ключ, и последний [`ENABLE_PROMPT_CACHING_1H`](/docs/ru/env-vars)1342* **Переопределения для сессии**: [`FORCE_PROMPT_CACHING_5M`](/docs/ru/env-vars) имеет приоритет над всем остальным, затем [`CLAUDE_CODE_PROMPT_CACHE_TTL`](/docs/ru/env-vars), затем этот ключ и в последнюю очередь [`ENABLE_PROMPT_CACHING_1H`](/docs/ru/env-vars)

1342 1343 

1343Этот пример сохраняет основной разговор на одночасовом сроке жизни и оставляет подагентов на пять минут:1344В этом примере основной диалог использует время жизни в один час, а субагенты остаются на пяти минутах:

1344 1345 

1345```json settings.json theme={null}1346```json settings.json theme={null}

1346{1347{


1349}1350}

1350```1351```

1351 1352 

1352Для того, что стоит каждый срок жизни, см. [Срок жизни кэша](/docs/ru/prompt-caching#cache-lifetime).1353О стоимости каждого времени жизни см. [Время жизни кэша](/docs/ru/prompt-caching#cache-lifetime).

1353 1354 

1354<h3 id="showthinkingsummaries">1355<h3 id="showthinkingsummaries">

1355 `showThinkingSummaries`1356 `showThinkingSummaries`

1356</h3>1357</h3>

1357 1358 

1358Смотрите резюме [расширенного мышления](/docs/ru/model-config#extended-thinking) Claude в интерактивных сеансах. Установите это, если вы хотите полные резюме, когда вы расширяете мышление с помощью `Ctrl+O`. Когда не установлено или `false`, Anthropic API редактирует блоки мышления и Claude Code показывает свёрнутый заглушку; сторонние поставщики не редактируют.1359Просматривайте сводки [расширенного мышления](/docs/ru/model-config#extended-thinking) Claude в интерактивных сессиях. Задайте это, если хотите видеть полные сводки при раскрытии размышлений с помощью `Ctrl+O`. Если значение не задано или равно `false`, Anthropic API скрывает блоки размышлений, и Claude Code показывает свёрнутую заглушку; сторонние провайдеры их не скрывают.

1359 1360 

1360* **Область действия**: [`Any file`](#scopes)1361* **Область действия**: [`Any file`](#scopes)

1361* **Тип**: Boolean1362* **Тип**: Boolean

1362 * `true`: вы видите полные резюме мышления, когда расширяете мышление с помощью `Ctrl+O`1363 * `true`: вы видите полные сводки размышлений при их раскрытии с помощью `Ctrl+O`

1363 * `false`: Anthropic API редактирует блоки мышления и Claude Code показывает свёрнутый заглушку1364 * `false`: Anthropic API скрывает блоки размышлений, и Claude Code показывает свёрнутую заглушку

1364* **По умолчанию**: `false`1365* **По умолчанию**: `false`

1365 1366 

1366```json settings.json theme={null}1367```json settings.json theme={null}


1369}1370}

1370```1371```

1371 1372 

1372Редактирование меняет только то, что вы видите, а не то, что генерирует модель. Чтобы снизить расходы на мышление, [снизьте бюджет или отключите мышление](/docs/ru/model-config#extended-thinking) вместо этого.1373Скрытие меняет только то, что вы видите, а не то, что генерирует модель. Чтобы сократить расходы на мышление, вместо этого [уменьшите бюджет или отключите мышление](/docs/ru/model-config#extended-thinking).

1373 1374 

1374<h3 id="subagentpromptcachettl">1375<h3 id="subagentpromptcachettl">

1375 `subagentPromptCacheTtl`1376 `subagentPromptCacheTtl`

1376</h3>1377</h3>

1377 1378 

1378Выберите, как долго [кэш подсказок](/docs/ru/prompt-caching) держит запросы, которые Claude Code делает вне основного разговора. Этот ключ применяется к [подагентам](/docs/ru/sub-agents), [workflows](/docs/ru/workflows) и собственным фоновым и вспомогательным запросам Claude Code, таким как компактирование и названия сеансов. Одночасовой срок жизни сохраняет кэш в тепле на более длительные перерывы, и API [выставляет счёт за каждую запись кэша по более высокой ставке](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing), чем при пятиминутном сроке жизни. Требует Claude Code v2.1.242 или позже.1379Выберите, как долго [кэш промптов](/docs/ru/prompt-caching) хранит запросы, которые Claude Code выполняет вне основного диалога. Этот ключ применяется к [субагентам](/docs/ru/sub-agents), [рабочим процессам](/docs/ru/workflows) и собственным фоновым и вспомогательным запросам Claude Code, например для сжатия контекста и названий сессий. Время жизни в один час сохраняет кэш «тёплым» на протяжении более длинных перерывов, а API [тарифицирует каждую запись в кэш по более высокой ставке](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing), чем при времени жизни в пять минут. Требуется Claude Code v2.1.242 или новее.

1379 1380 

1380* **Область действия**: [`Any file`](#scopes)1381* **Область действия**: [`Any file`](#scopes)

1381* **Тип**: строка, один из:1382* **Тип**: строка, одно из значений:

1382 * `"5m"`: кэш держится пять минут1383 * `"5m"`: кэш хранится пять минут

1383 * `"1h"`: кэш держится час1384 * `"1h"`: кэш хранится один час

1384* **По умолчанию**: не установлено, поэтому каждый из этих запросов получает [его стандартный срок жизни](/docs/ru/prompt-caching#which-ttl-each-request-gets)1385* **По умолчанию**: не задано, поэтому каждый из этих запросов получает [своё время жизни по умолчанию](/docs/ru/prompt-caching#which-ttl-each-request-gets)

1385* **Переопределения для каждого сеанса**: [`FORCE_PROMPT_CACHING_5M`](/docs/ru/env-vars) имеет приоритет над всем остальным, затем [`CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`](/docs/ru/env-vars), затем этот ключ, затем [`ENABLE_PROMPT_CACHING_1H`](/docs/ru/env-vars), который просит одночасовой срок жизни на каждом запросе. Для того, где значение frontmatter подагента занимает место, см. [Выберите TTL сами](/docs/ru/prompt-caching#choose-the-ttl-yourself)1386* **Переопределения для сессии**: [`FORCE_PROMPT_CACHING_5M`](/docs/ru/env-vars) имеет приоритет над всем остальным, затем [`CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`](/docs/ru/env-vars), затем этот ключ, затем [`ENABLE_PROMPT_CACHING_1H`](/docs/ru/env-vars), который запрашивает время жизни в один час для каждого запроса. О том, какое место занимает значение из собственного frontmatter субагента, см. [Самостоятельный выбор TTL](/docs/ru/prompt-caching#choose-the-ttl-yourself)

1386 1387 

1387Этот пример даёт подагентам и другим запросам вне основного разговора одночасовой срок жизни:1388В этом примере субагенты и другие запросы вне основного диалога получают время жизни в один час:

1388 1389 

1389```json settings.json theme={null}1390```json settings.json theme={null}

1390{1391{


1392}1393}

1393```1394```

1394 1395 

1395Этот ключ охватывает запросы, которые [`promptCacheTtl`](#promptcachettl) не охватывает, поэтому установите оба, чтобы выбрать срок жизни для каждого запроса, который делает Claude Code. Для того, как кэш подагента отличается от основного разговора, см. [Подагенты и кэш](/docs/ru/prompt-caching#subagents-and-the-cache).1396Этот ключ охватывает запросы, которые не охватывает [`promptCacheTtl`](#promptcachettl), поэтому задайте оба, чтобы выбрать время жизни для каждого запроса, который выполняет Claude Code. О том, чем кэш субагента отличается от кэша основного диалога, см. [Субагенты и кэш](/docs/ru/prompt-caching#subagents-and-the-cache).

1396 1397 

1397<h3 id="switchmodelsonflag">1398<h3 id="switchmodelsonflag">

1398 `switchModelsOnFlag`1399 `switchModelsOnFlag`

1399</h3>1400</h3>

1400 1401 

1401Выберите, что происходит, когда [классификатор безопасности помечает запрос](/docs/ru/model-config#automatic-model-fallback): переключиться на резервную модель и продолжить, или приостановиться, чтобы вы могли выбрать между переключением и редактированием подсказки.1402Выберите, что происходит, когда [классификатор безопасности помечает запрос](/docs/ru/model-config#automatic-model-fallback): переключиться на резервную модель и продолжить или приостановиться, чтобы вы могли выбрать между переключением и редактированием промпта.

1402 1403 

1403* **Область действия**: [`Any file`](#scopes). Отображается в `/config` как **Switch models when a message is flagged** с вариантами **Switch automatically** и **Ask each time**.1404* **Область действия**: [`Any file`](#scopes). В `/config` отображается как **Switch models when a message is flagged** с вариантами **Switch automatically** и **Ask each time**.

1404* **Тип**: Boolean1405* **Тип**: Boolean

1405 * `true`: Claude Code переключается на резервную модель и продолжает1406 * `true`: Claude Code переключается на резервную модель и продолжает

1406 * `false`: в интерактивном сеансе Claude Code приостанавливается, чтобы вы могли выбрать между переключением и редактированием подсказки; где диалог не может показаться, такой как запуск `-p`, помеченный запрос заканчивается как ошибка1407 * `false`: в интерактивной сессии Claude Code приостанавливается, чтобы вы могли выбрать между переключением и редактированием промпта; там, где диалоговое окно показать нельзя, например при запуске с `-p`, помеченный запрос завершается ошибкой

1407* **По умолчанию**: не установлено. Claude Code переключается автоматически, хотя в интерактивной сессии может [сначала спросить](/docs/ru/model-config#ask-before-switching)1408* **По умолчанию**: не задано. Claude Code переключается автоматически, хотя в интерактивной сессии может [сначала спросить](/docs/ru/model-config#ask-before-switching)

1408 1409 

1409```json settings.json theme={null}1410```json settings.json theme={null}

1410{1411{


1412}1413}

1413```1414```

1414 1415 

1415См. [Спросить перед переключением](/docs/ru/model-config#ask-before-switching).1416См. [Запрос перед переключением](/docs/ru/model-config#ask-before-switching).

1416 1417 

1417<h3 id="ultracode">1418<h3 id="ultracode">

1418 `ultracode`1419 `ultracode`

1419</h3>1420</h3>

1420 1421 

1421Начните сеансы с [ultracode](/docs/ru/workflows#let-claude-decide-with-ultracode) включённым. С ним включённым Claude планирует workflow для каждой существенной задачи вместо ожидания, пока вы попросите. Claude планирует workflows только когда [динамические workflows](/docs/ru/workflows) включены для вас и ваша модель поддерживает `xhigh` effort. Ключ не меняет уровень effort сеанса: ultracode работает на любом уровне, который использует сеанс. Claude Code читает этот ключ, но никогда его не записывает: `/effort ultracode` включает ultracode только для текущего сеанса.1422Запускайте сессии с включённым [ultracode](/docs/ru/workflows#let-claude-decide-with-ultracode). Когда он включён, Claude планирует рабочий процесс для каждой существенной задачи, не дожидаясь вашей просьбы. Claude планирует рабочие процессы, только если для вас включены [динамические рабочие процессы](/docs/ru/workflows) и ваша модель поддерживает effort `xhigh`. Ключ не меняет уровень effort сессии: ultracode работает на том уровне, который использует сессия. Claude Code читает этот ключ, но никогда его не записывает: `/effort ultracode` включает ultracode только для текущей сессии.

1422 1423 

1423* **Область действия**: [`Any file`](#scopes)1424* **Область действия**: [`Any file`](#scopes)

1424* **Тип**: Boolean1425* **Тип**: Boolean

1425 * `true`: сеансы начинаются с ultracode включённым, когда динамические workflows включены для вас и ваша модель поддерживает `xhigh`1426 * `true`: сессии запускаются с включённым ultracode, если для вас включены динамические рабочие процессы и ваша модель поддерживает `xhigh`

1426 * `false`: сеансы начинаются с ultracode отключённым1427 * `false`: сессии запускаются с выключенным ultracode

1427* **По умолчанию**: не установлено, поэтому ultracode отключён1428* **По умолчанию**: не задано, поэтому ultracode выключен

1428* **Переопределения для каждого сеанса**: `/effort ultracode` включает ultracode для одного сеанса без этого ключа, и `/effort ultracode off` отключает его для одного сеанса, когда этот ключ `true`. Флаг `--effort ultracode` также включает его для одного сеанса, на `xhigh` effort, и требует Claude Code v2.1.203 или позже1429* **Переопределения для сессии**: `/effort ultracode` включает ultracode для одной сессии без этого ключа, а `/effort ultracode off` выключает его для одной сессии, когда этот ключ равен `true`. Флаг `--effort ultracode` также включает его для одной сессии с effort `xhigh`

1429 1430 

1430```json settings.json theme={null}1431```json settings.json theme={null}

1431{1432{


1433}1434}

1434```1435```

1435 1436 

1436Уровень effort сеанса поступает из [`effortLevel`](#effortlevel), [`modelSettings`](#modelsettings) и других [источников effort](/docs/ru/model-config#adjust-effort-level), и [ограничение effort](/docs/ru/model-config#organization-effort-limits), такое как [`maxEffortLevel`](#maxeffortlevel), снижает этот уровень без отключения ultracode. Это и форма `/effort ultracode off` требуют Claude Code v2.1.284 или позже. До v2.1.284 `ultracode: true` запускал сеанс на `xhigh` effort, и ограничение effort ниже `xhigh` держало ultracode отключённым. Запрос управления `apply_flag_settings` Agent SDK также принимает ключ.1437Уровень effort сессии определяется [`effortLevel`](#effortlevel), [`modelSettings`](#modelsettings) и другими [источниками effort](/docs/ru/model-config#adjust-effort-level), а [ограничение effort](/docs/ru/model-config#organization-effort-limits), например [`maxEffortLevel`](#maxeffortlevel), понижает этот уровень, не выключая ultracode. Для этого и для формы `/effort ultracode off` требуется Claude Code v2.1.284 или новее. До v2.1.284 `ultracode: true` запускал сессию с effort `xhigh`, а ограничение effort ниже `xhigh` оставляло ultracode выключенным. Управляющий запрос `apply_flag_settings` в Agent SDK также принимает этот ключ.

1437 1438 

1438<h2 id="permission-settings">1439<h2 id="permission-settings">

1439 Настройки разрешений1440 Настройки разрешений


2952}2953}

2953```2954```

2954 2955 

2955Команда `/compact` продолжает работать, пока автоматическая компактизация отключена.2956Ручная команда `/compact` продолжает работать, пока автосжатие отключено. Если вы отключите автосжатие, [сжатие в режиме простоя](#idlecompaction) тоже отключится.

2956 2957 

2957<h3 id="autocompactwindow">2958<h3 id="autocompactwindow">

2958 `autoCompactWindow`2959 `autoCompactWindow`


3129 3130 

3130 Когда файл параметров проекта или локальных параметров устанавливает переменную в этой группе, локальная интерактивная сессия показывает уведомление при запуске. Запустите `/status` или `claude doctor`, чтобы увидеть, какие из них Claude Code игнорировал и какие отключили телеметрию; оба перечисляют имена, никогда значения. Неинтерактивный запуск с `-p` или сессия Agent SDK не показывает уведомление, поэтому проверьте, что ваш сборщик всё ещё получает данные после обновления. Если нет, установите переменные в ваши пользовательские параметры, управляемые параметры, среду задания или файл, который вы передаёте с помощью `--settings`.3131 Когда файл параметров проекта или локальных параметров устанавливает переменную в этой группе, локальная интерактивная сессия показывает уведомление при запуске. Запустите `/status` или `claude doctor`, чтобы увидеть, какие из них Claude Code игнорировал и какие отключили телеметрию; оба перечисляют имена, никогда значения. Неинтерактивный запуск с `-p` или сессия Agent SDK не показывает уведомление, поэтому проверьте, что ваш сборщик всё ещё получает данные после обновления. Если нет, установите переменные в ваши пользовательские параметры, управляемые параметры, среду задания или файл, который вы передаёте с помощью `--settings`.

3131 3132 

3132 Игнорирование этой группы в параметрах проекта и локальных параметрах требует Claude Code v2.1.282 или позже.3133 Игнорирование этой группы в настройках проекта и локальных настройках требует Claude Code v2.1.282 или позже.

3133 * Переменные, которые изменяют способ запуска или синхронизации Claude Code, такие как `CLAUDE_CODE_PROCESS_WRAPPER`, `CLAUDE_CODE_SYNC_SKILLS`, `CLAUDE_CODE_SYNC_PLUGINS`, `CLAUDE_CODE_PLUGIN_CACHE_DIR` и `CLAUDE_CODE_PLUGIN_SEED_DIR`.3134 * Переменные, которые изменяют способ запуска или синхронизации Claude Code, такие как `CLAUDE_CODE_PROCESS_WRAPPER`, `CLAUDE_CODE_SYNC_SKILLS`, `CLAUDE_CODE_SYNC_PLUGINS`, `CLAUDE_CODE_PLUGIN_CACHE_DIR` и `CLAUDE_CODE_PLUGIN_SEED_DIR`.

3134 * Переменные, задающие таймеры для диалогового окна, оставшегося без ответа: [`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`, `CLAUDE_AFK_TIMEOUT_MS` и `CLAUDE_AFK_COUNTDOWN_MS`](/docs/ru/env-vars#variables).3135 * Переменные, задающие таймеры для диалогового окна, оставшегося без ответа: [`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`, `CLAUDE_AFK_TIMEOUT_MS` и `CLAUDE_AFK_COUNTDOWN_MS`](/docs/ru/env-vars#variables).

3135 * [`CLAUDE_CODE_DISABLE_ATTACHMENTS`](/docs/ru/env-vars#variables), которая отключает обработку вложений.3136 * [`CLAUDE_CODE_DISABLE_ATTACHMENTS`](/docs/ru/env-vars#variables), которая отключает обработку вложений.

3137 * [`CLAUDE_CODE_DISABLE_FILE_MENTIONS`](/docs/ru/env-vars#variables), которая не даёт Claude Code раскрывать упоминания файлов и каталогов через `@`.

3136 3138 

3137 До v2.1.251 параметры проекта и локальные параметры могли также устанавливать переменные в этом списке, которые выбирают, где Claude Code записывает свои файлы или которые экспортируют содержимое сессии, кроме `HOME` и `XDG_CONFIG_HOME`. До v2.1.290 они также могли устанавливать переменные таймеров диалоговых окон и `CLAUDE_CODE_DISABLE_ATTACHMENTS`.3139 До v2.1.251 параметры проекта и локальные параметры могли также устанавливать переменные в этом списке, которые выбирают, где Claude Code записывает свои файлы или которые экспортируют содержимое сессии, кроме `HOME` и `XDG_CONFIG_HOME`. До v2.1.290 они также могли устанавливать переменные таймеров диалоговых окон и `CLAUDE_CODE_DISABLE_ATTACHMENTS`.

3138* Переменные идентификации, которыми владеют среды хостинга Claude Code, такие как `CLAUDE_CODE_REMOTE` и `CLAUDE_CODE_ACCOUNT_UUID`, игнорируются из каждого файла.3140* Переменные идентификации, которыми владеют среды хостинга Claude Code, такие как `CLAUDE_CODE_REMOTE` и `CLAUDE_CODE_ACCOUNT_UUID`, игнорируются из каждого файла.


3163 3165 

3164В запуске `-p` или сессии Agent SDK Claude Code игнорирует этот ключ. SDK включает checkpointing с помощью своей опции `enableFileCheckpointing`, и простой запуск `-p` требует `CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING=true`. См. [File checkpointing в Agent SDK](/docs/ru/agent-sdk/file-checkpointing).3166В запуске `-p` или сессии Agent SDK Claude Code игнорирует этот ключ. SDK включает checkpointing с помощью своей опции `enableFileCheckpointing`, и простой запуск `-p` требует `CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING=true`. См. [File checkpointing в Agent SDK](/docs/ru/agent-sdk/file-checkpointing).

3165 3167 

3168<h3 id="idlecompaction">

3169 `idleCompaction`

3170</h3>

3171 

3172Сжатие в режиме простоя [сжимает](/docs/ru/context-window#what-survives-compaction) длинный диалог, от которого вы отошли, незадолго до истечения срока действия его кэша промптов. Тогда ваше следующее сообщение отправляет сводку вместо всего диалога. Когда вы вернётесь, в диалоге будет показано `Compacted while idle, before the prompt cache expired`.

3173 

3174Сжатие в режиме простоя включено по умолчанию для диалогов, которые соответствуют всем следующим условиям:

3175 

3176* **Сессия**: вы находитесь в интерактивной сессии терминала

3177* **Кэш промптов**: диалог использует [часовой TTL кэша промптов](/docs/ru/prompt-caching#which-ttl-each-request-gets)

3178* **Флаги функций**: Claude Code может [получать флаги функций от Anthropic](/docs/ru/env-vars#features-that-need-feature-flag-fetching)

3179* **Размер**: контекст диалога достиг порога токенов, который вы можете [изменить](#change-the-idle-compaction-threshold) со значения по умолчанию 200 000

3180* **Время простоя**: с момента последнего запроса прошло около 54 минут, и в этот момент ваш компьютер не находится в спящем режиме

3181 

3182Чтобы отключить сжатие в режиме простоя, установите этот ключ в `false`.

3183 

3184* **Scope**: [`Any file`](#scopes)

3185* **Type**: Boolean

3186 * `true`: Claude Code сжимает простаивающие диалоги, которые соответствуют условиям

3187 * `false`: Claude Code не выполняет сжатие, пока ваша сессия простаивает

3188* **Default**: `true`

3189* **Per-session overrides**: [`DISABLE_AUTO_COMPACT`](/docs/ru/env-vars) отключает сжатие в режиме простоя вместе с автосжатием

3190 

3191```json settings.json theme={null}

3192{

3193 "idleCompaction": false

3194}

3195```

3196 

3197Ключ требует Claude Code v2.1.290 или позже. В более ранней версии, которая игнорирует этот ключ, отключите [`autoCompactEnabled`](#autocompactenabled), чтобы остановить сжатие в режиме простоя.

3198 

3199<h4 id="change-the-idle-compaction-threshold">

3200 Изменение порога сжатия в режиме простоя

3201</h4>

3202 

3203Установите в [`CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS`](/docs/ru/env-vars) количество токенов, которого должен достичь контекст диалога, чтобы к нему применялось сжатие в режиме простоя. Используйте положительное целое число. Значения ниже `100000` повышаются до `100000` — минимального порога.

3204 

3205При значении по умолчанию диалог с контекстным окном 200K автоматически сжимается до того, как достигнет 200 000 токенов. Этот пример снижает порог до 150 000, чтобы такие диалоги соответствовали условию:

3206 

3207```json settings.json theme={null}

3208{

3209 "env": {

3210 "CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS": "150000"

3211 }

3212}

3213```

3214 

3166<h3 id="plansdirectory">3215<h3 id="plansdirectory">

3167 `plansDirectory`3216 `plansDirectory`

3168</h3>3217</h3>


4209}4258}

4210```4259```

4211 4260 

4261Если вы заменяете системный промпт в [неинтерактивном режиме](/docs/ru/headless) или в Agent SDK, сессия запускается без снимка, даже если этот ключ имеет значение `true`:

4262 

4263* **Запуски с `-p`**: вы заменяете промпт, когда передаёте [`--system-prompt`](/docs/ru/cli-reference#system-prompt-flags) или `--system-prompt-file`. Вы также заменяете его, когда запускаете пользовательского агента с собственным промптом, выбранного с помощью [`--agent`](/docs/ru/sub-agents#invoke-subagents-explicitly) или настройки [`agent`](#agent). Вне [режима bare](/docs/ru/headless#start-faster-with-bare-mode), чтобы сохранить снимок, запускайте без пользовательского агента и добавляйте свои инструкции с помощью [`--append-system-prompt`](/docs/ru/cli-reference#system-prompt-flags) вместо замены промпта.

4264* **[Agent SDK](/docs/ru/agent-sdk/modifying-system-prompts)**: вы заменяете промпт пользовательским системным промптом или пользовательским агентом основного потока. Если вы не задаёте системный промпт, SDK использует свой минимальный промпт по умолчанию, и сессия также запускается без снимка. Вне [режима bare](/docs/ru/headless#start-faster-with-bare-mode), чтобы сохранить снимок, используйте пресет `claude_code` без пользовательского `agent`.

4265 

4212<h3 id="prurltemplate">4266<h3 id="prurltemplate">

4213 `prUrlTemplate`4267 `prUrlTemplate`

4214</h3>4268</h3>


4966 `strictPluginOnlyCustomization.agents`5020 `strictPluginOnlyCustomization.agents`

4967</h3>5021</h3>

4968 5022 

4969Заблокируйте поверхность `agents`. Claude Code прекращает загрузку agents из `~/.claude/agents/` и `.claude/agents/`, и продолжает загружать agents плагинов, встроенные agents и agents в каталоге управляемой политики.5023Заблокируйте интерфейс `agents`. Claude Code прекращает загрузку агентов из `~/.claude/agents/`, `.claude/agents/` и каталогов `--add-dir`. Он продолжает загружать агентов плагинов, встроенных агентов и агентов в каталоге управляемой политики.

4970 5024 

4971* **Scope**: [`Managed`](#scopes)5025* **Scope**: [`Managed`](#scopes)

4972* **Type**: строка `"agents"` в массиве [`strictPluginOnlyCustomization`](#strictpluginonlycustomization)5026* **Type**: строка `"agents"` в массиве [`strictPluginOnlyCustomization`](#strictpluginonlycustomization)


5175 5229 

5176Встроенные плагины хранят свои параметры в том же ключе с суффиксом `@builtin`. Например, настройка [**Project instructions**](/docs/ru/memory#choose-which-instruction-files-load), которая определяет, читает ли Claude Code файлы `AGENTS.md`, — это `pluginConfigs["cc-plugin-agents-md@builtin"].options.instructionFiles`. До v2.1.285 ID этого плагина был `agents-md@builtin`. Более поздние версии читают запись под любым из этих ID.5230Встроенные плагины хранят свои параметры в том же ключе с суффиксом `@builtin`. Например, настройка [**Project instructions**](/docs/ru/memory#choose-which-instruction-files-load), которая определяет, читает ли Claude Code файлы `AGENTS.md`, — это `pluginConfigs["cc-plugin-agents-md@builtin"].options.instructionFiles`. До v2.1.285 ID этого плагина был `agents-md@builtin`. Более поздние версии читают запись под любым из этих ID.

5177 5231 

5178Claude Code игнорирует записи проекта и локальные, потому что он подставляет эти значения в конфигурации hook, MCP и LSP плагина, и клонированный репозиторий не должен быть в состоянии их предоставить. До v2.1.207, параметры проекта и локальные также читались.5232Claude Code игнорирует записи проекта и локальные записи, потому что подставляет эти значения в конфигурации хуков, MCP и LSP плагина, а клонированный репозиторий не должен иметь возможности их предоставить.

5179 5233 

5180<h3 id="prependplugins">5234<h3 id="prependplugins">

5181 `prependPlugins`5235 `prependPlugins`


5680}5734}

5681```5735```

5682 5736 

5683Вне git-репозитория [хук `WorktreeCreate`](/docs/ru/worktrees#non-git-version-control), который завершается с ошибкой, снимает блокировку, чтобы сессия могла редактировать рабочий каталог на месте; это снятие блокировки требует Claude Code v2.1.203 или позже.5737Вне git-репозитория [хук `WorktreeCreate`](/docs/ru/worktrees#non-git-version-control), который завершается с ошибкой, снимает блокировку, чтобы сессия могла редактировать рабочий каталог на месте.

5684 5738 

5685<h3 id="worktree-location">5739<h3 id="worktree-location">

5686 `worktree.location`5740 `worktree.location`

setup.md +1 −1

Details

226 226 

227Выполните `claude doctor` для просмотра результата последней попытки обновления.227Выполните `claude doctor` для просмотра результата последней попытки обновления.

228 228 

229На macOS и Linux встроенный установщик управляет средством запуска в `~/.local/bin/claude` как символической ссылкой в `~/.local/share/claude/versions/`. Если вы замените это средство запуска своим собственным скриптом или символической ссылкой, автоматическое обновление и `claude update` оставляют его на месте: новые версии по-прежнему устанавливаются в каталог `versions/`, и ваше средство запуска решает, какая версия запускается. До версии 2.1.207 автоматический обновляющий заменял пользовательское средство запуска в этом пути своей собственной символической ссылкой при каждом обновлении.229На macOS и Linux встроенный установщик управляет средством запуска в `~/.local/bin/claude` как символической ссылкой в `~/.local/share/claude/versions/`. Если вы замените это средство запуска своим собственным скриптом или символической ссылкой, автоматическое обновление и `claude update` оставляют его на месте: новые версии по-прежнему устанавливаются в каталог `versions/`, и ваше средство запуска решает, какая версия запускается.

230 230 

231С пользовательским средством запуска Claude Code также сохраняет каждую установленную версию на диске, потому что не может определить, какая версия нужна средству запуска. `claude doctor` сообщает о средстве запуска, которое встроенный установщик не создал.231С пользовательским средством запуска Claude Code также сохраняет каждую установленную версию на диске, потому что не может определить, какая версия нужна средству запуска. `claude doctor` сообщает о средстве запуска, которое встроенный установщик не создал.

232 232 

skills.md +26 −3

Details

31Чтобы отключить встроенные skills, используйте параметр [`disableBundledSkills`](/docs/ru/settings-reference#disablebundledskills).31Чтобы отключить встроенные skills, используйте параметр [`disableBundledSkills`](/docs/ru/settings-reference#disablebundledskills).

32 32 

33<Note>33<Note>

34 Проверка настройки [`/doctor`](/docs/ru/commands#all-commands) остается доступной для ввода, когда `disableBundledSkills` включен, в Claude Code v2.1.205 и позже. Чтобы скрыть её, установите переменную окружения `DISABLE_DOCTOR_COMMAND` или запись [`skillOverrides`](#override-skill-visibility-from-settings) `"doctor": "off"`. До v2.1.205 `/doctor` была встроенной командой, а не встроенным skill.34 Проверка настройки [`/doctor`](/docs/ru/commands#all-commands) остается доступной для ввода, когда `disableBundledSkills` включен. Чтобы скрыть её, установите переменную окружения `DISABLE_DOCTOR_COMMAND` или запись [`skillOverrides`](#override-skill-visibility-from-settings) `"doctor": "off"`.

35</Note>35</Note>

36 36 

37Встроенные skills перечислены вместе со встроенными командами в [справочнике команд](/docs/ru/commands), отмечены как **Skill** в столбце Purpose.37Встроенные skills перечислены вместе со встроенными командами в [справочнике команд](/docs/ru/commands), отмечены как **Skill** в столбце Purpose.


69 69 

70`/verify` также может записать свой собственный рецепт. Когда ему нужно собрать и управлять вашим приложением без записанного рецепта, он записывает то, что сработало, в `.claude/skills/verify/SKILL.md` в корне репозитория, или в затронутом каталоге пакета в монорепозитории, чтобы более поздние запуски и другие агенты следовали тем же шагам. В корне репозитория записанный скилл заменяет встроенный `/verify`.70`/verify` также может записать свой собственный рецепт. Когда ему нужно собрать и управлять вашим приложением без записанного рецепта, он записывает то, что сработало, в `.claude/skills/verify/SKILL.md` в корне репозитория, или в затронутом каталоге пакета в монорепозитории, чтобы более поздние запуски и другие агенты следовали тем же шагам. В корне репозитория записанный скилл заменяет встроенный `/verify`.

71 71 

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

73 73 

74<h3 id="run-your-checks-before-each-commit">74<h3 id="run-your-checks-before-each-commit">

75 Запуск проверок перед каждым коммитом75 Запуск проверок перед каждым коммитом


183* **Папки-символические ссылки**: запись `<skill-name>` в корпоративном, личном или проектном расположении может быть символической ссылкой на каталог в другом месте на диске. Claude Code читает `SKILL.md` из целевого каталога и загружает скилл один раз, даже если на один и тот же целевой каталог указывают несколько расположений. Скиллы плагинов [обрабатывают символические ссылки иначе](/docs/ru/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks).183* **Папки-символические ссылки**: запись `<skill-name>` в корпоративном, личном или проектном расположении может быть символической ссылкой на каталог в другом месте на диске. Claude Code читает `SKILL.md` из целевого каталога и загружает скилл один раз, даже если на один и тот же целевой каталог указывают несколько расположений. Скиллы плагинов [обрабатывают символические ссылки иначе](/docs/ru/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks).

184* **Зарезервированное имя `synced`**: не называйте папку скилла `synced` ни в каком регистре. Claude Code использует `~/.claude/skills/synced/` для [скиллов, загруженных с claude.ai](#where-synced-skills-load), и пропускает созданный вами скилл с этим именем в корпоративном, личном и проектном расположениях.184* **Зарезервированное имя `synced`**: не называйте папку скилла `synced` ни в каком регистре. Claude Code использует `~/.claude/skills/synced/` для [скиллов, загруженных с claude.ai](#where-synced-skills-load), и пропускает созданный вами скилл с этим именем в корпоративном, личном и проектном расположениях.

185* **Зарезервированное имя `anthropic-skills`**: вне плагина папка скилла или файл команды с именем `anthropic-skills` или именем, начинающимся с `anthropic-skills:`, не загружается. См. [Имена, зарезервированные для синхронизированных скиллов](#names-reserved-for-synced-skills).185* **Зарезервированное имя `anthropic-skills`**: вне плагина папка скилла или файл команды с именем `anthropic-skills` или именем, начинающимся с `anthropic-skills:`, не загружается. См. [Имена, зарезервированные для синхронизированных скиллов](#names-reserved-for-synced-skills).

186* **Символы в имени**: вне плагина папка скилла не загружается, если её имя содержит такой символ, как пробел нулевой ширины или `<`. См. [Символы, которые не может содержать имя скилла](#characters-a-skill-name-cant-hold).

186* **Файлы команд**: файл Markdown в `.claude/commands/` — это более старый формат, который по-прежнему работает. Он поддерживает тот же [frontmatter](#frontmatter-reference), за исключением `name` и `paths`. Чтобы узнать имя, которое нужно ввести для его вызова, см. [Как скилл получает имя команды](#how-a-skill-gets-its-command-name). Для новой работы предпочтительнее скилл, поскольку скиллы также поддерживают [вспомогательные файлы](#add-supporting-files).187* **Файлы команд**: файл Markdown в `.claude/commands/` — это более старый формат, который по-прежнему работает. Он поддерживает тот же [frontmatter](#frontmatter-reference), за исключением `name` и `paths`. Чтобы узнать имя, которое нужно ввести для его вызова, см. [Как скилл получает имя команды](#how-a-skill-gets-its-command-name). Для новой работы предпочтительнее скилл, поскольку скиллы также поддерживают [вспомогательные файлы](#add-supporting-files).

187* **Папка скилла как плагин**: добавьте `.claude-plugin/plugin.json` в папку скилла, и она загрузится как [плагин](/docs/ru/plugins/loading#plugins-shared-through-a-repository) с именем `<name>@skills-dir`, благодаря чему сможет включать агентов, хуки и MCP-серверы. В `.claude/skills/` проекта для этого сначала нужно принять диалог доверия к рабочему пространству.188* **Папка скилла как плагин**: добавьте `.claude-plugin/plugin.json` в папку скилла, и она загрузится как [плагин](/docs/ru/plugins/loading#plugins-shared-through-a-repository) с именем `<name>@skills-dir`, благодаря чему сможет включать агентов, хуки и MCP-серверы. В `.claude/skills/` проекта для этого сначала нужно принять диалог доверия к рабочему пространству.

188 189 


495 496 

496Для plugin-root `SKILL.md` нет каталога skill, из которого можно взять имя, поэтому `name` предоставляет весь последний сегмент. Без поля `name` Claude Code возвращается к имени каталога plugin.497Для plugin-root `SKILL.md` нет каталога skill, из которого можно взять имя, поэтому `name` предоставляет весь последний сегмент. Без поля `name` Claude Code возвращается к имени каталога plugin.

497 498 

499<h4 id="characters-a-skill-name-cant-hold">

500 Недопустимые символы в имени skill

501</h4>

502 

503Если skill или пользовательская команда отсутствует в меню `/` или меню не показывает `name` из frontmatter skill, проверьте имя. Claude Code отклоняет имя команды или `name` во frontmatter, если оно содержит, например, такие символы:

504 

505* Пробел нулевой ширины или управляющий символ

506* Символ из области частного использования или неназначенный символ, например глиф из иконочного шрифта

507* Символ, который меняет направление окружающего текста

508* Пробельный символ, отличный от одного обычного пробела между словами, например неразрывный пробел, два пробела подряд или пробел в начале или в конце

509* `<` или `>`

510 

511Пользовательская команда или skill не загружается, если Claude Code отклоняет имя его каталога или файла. Переименуйте эту папку или файл, чтобы убрать такие символы. Skill все равно загружается, если эти символы есть только в имени папки skill плагина или в его `name` во frontmatter:

512 

513* **Папка в каталоге `skills/` плагина или в [путях `skills`](/docs/ru/plugins/components#skills) его манифеста**: переименовывать папку не нужно. Эти символы становятся дефисами в имени команды skill, поэтому вводите команду с дефисами.

514* **`name` во frontmatter**: меню `/` не показывает значение `name`, и его ввод не вызывает skill. Отредактируйте строку `name:`, чтобы убрать символы.

515 

516Чтобы узнать, какое имя отклонил Claude Code, запустите его командой [`claude --debug`](/docs/ru/cli-reference#cli-flags) из оболочки и найдите `[names]` в [логе отладки](/docs/ru/debug-your-config). В интерактивной сессии об отклонённых именах также сообщает [уведомление при запуске](/docs/ru/errors#skill-or-command-name-refused). После переименования или правки строки `name:` перезапустите сессию, если только файл не находится в каталоге, который Claude Code [отслеживает на предмет изменений](#live-change-detection).

517 

498<h4 id="available-string-substitutions">518<h4 id="available-string-substitutions">

499 Доступные подстановки строк519 Доступные подстановки строк

500</h4>520</h4>


858| Скилл с `context: fork` | Из типа агента | Содержимое SKILL.md | CLAUDE.md в соответствии с [контекстом запуска](/docs/ru/sub-agents#what-loads-at-startup) агента |878| Скилл с `context: fork` | Из типа агента | Содержимое SKILL.md | CLAUDE.md в соответствии с [контекстом запуска](/docs/ru/sub-agents#what-loads-at-startup) агента |

859| Субагент с полем `skills` | Тело markdown субагента | Сообщение Claude о делегировании | Предзагруженные скиллы + CLAUDE.md в соответствии с [контекстом запуска](/docs/ru/sub-agents#what-loads-at-startup) субагента |879| Субагент с полем `skills` | Тело markdown субагента | Сообщение Claude о делегировании | Предзагруженные скиллы + CLAUDE.md в соответствии с [контекстом запуска](/docs/ru/sub-agents#what-loads-at-startup) субагента |

860 880 

861С `context: fork` вы пишете задачу в скилле и выбираете тип агента для её выполнения. Встроенные агенты Explore и Plan [пропускают CLAUDE.md и git status](/docs/ru/sub-agents#what-loads-at-startup), чтобы их контекст оставался небольшим, поэтому ответвлённый скилл с `agent: Explore` видит только содержимое SKILL.md и собственный системный промпт агента. Для обратного случая, когда вы определяете пользовательский субагент, использующий скиллы как справочный материал, см. [Субагенты](/docs/ru/sub-agents#preload-skills-into-subagents).881С `context: fork` вы пишете задачу в скилле и выбираете тип агента для её выполнения. Встроенные агенты Explore и Plan [запускаются без CLAUDE.md и git status](/docs/ru/sub-agents#what-loads-at-startup), чтобы их контекст оставался небольшим. Поместите в SKILL.md всё, что нужно для задачи. Ответвлённый скилл с `agent: Explore` начинает работу с этим содержимым и собственным системным промптом агента, без каких-либо ваших файлов CLAUDE.md.

882 

883Для обратного случая, когда вы определяете пользовательский субагент, использующий скиллы как справочный материал, см. [Субагенты](/docs/ru/sub-agents#preload-skills-into-subagents).

862 884 

863<h4 id="example-research-skill-using-explore-agent">885<h4 id="example-research-skill-using-explore-agent">

864 Пример: исследовательский скилл с агентом Explore886 Пример: исследовательский скилл с агентом Explore


12472. Убедитесь, что skill появляется в `What skills are available?`12692. Убедитесь, что skill появляется в `What skills are available?`

12483. Попробуйте переформулировать ваш запрос, чтобы он лучше соответствовал описанию12703. Попробуйте переформулировать ваш запрос, чтобы он лучше соответствовал описанию

12494. Вызовите его напрямую с помощью `/skill-name`, если skill можно вызывать пользователю12714. Вызовите его напрямую с помощью `/skill-name`, если skill можно вызывать пользователю

12725. Если `/skill-name` тоже не распознаётся, проверьте, не [отклонил ли Claude Code имя skill](#characters-a-skill-name-cant-hold)

1250 1273 

1251Если frontmatter YAML неправильно сформирован, Claude Code загружает тело skill с пустыми метаданными, поэтому `/skill-name` все еще работает, но Claude не может сопоставить с вашим `description`. Запустите с `--debug`, чтобы увидеть ошибку парсинга.1274Если frontmatter YAML неправильно сформирован, Claude Code загружает тело skill с пустыми метаданными, поэтому `/skill-name` все еще работает, но Claude не может сопоставить с вашим `description`. Запустите с `--debug`, чтобы увидеть ошибку парсинга.

1252 1275 

statusline.md +2 −2

Details

1198| `description` | string | Краткое описание задачи, например то, которое Claude дал при запуске субагента |1198| `description` | string | Краткое описание задачи, например то, которое Claude дал при запуске субагента |

1199| `label` | string | Краткая сводка о ходе выполнения задачи, если она есть у Claude Code, иначе тот же текст, что и в `description` |1199| `label` | string | Краткая сводка о ходе выполнения задачи, если она есть у Claude Code, иначе тот же текст, что и в `description` |

1200| `startTime` | number | Время начала задачи в миллисекундах с начала эпохи Unix |1200| `startTime` | number | Время начала задачи в миллисекундах с начала эпохи Unix |

1201| `model` | string, необязательное | ID разрешённой модели, на которой выполняется задача. Опускается, пока модель не разрешена. Требует Claude Code v2.1.205 или более поздней версии |1201| `model` | string, необязательное | ID разрешённой модели, на которой выполняется задача. Опускается, пока модель не разрешена |

1202| `effort` | string или number, необязательное | Уровень усилий рассуждения, установленный для субагента в его [frontmatter определения](/docs/ru/sub-agents#supported-frontmatter-fields) или при отдельном вызове: `low`, `medium`, `high`, `xhigh`, `max` или числовой бюджет токенов. Это настроенное значение, и усилия, которые применяет Claude Code, могут отличаться, если модель не поддерживает этот уровень. Опускается, когда уровень усилий не задан. Требует Claude Code v2.1.213 или более поздней версии |1202| `effort` | string или number, необязательное | Уровень усилий рассуждения, установленный для субагента в его [frontmatter определения](/docs/ru/sub-agents#supported-frontmatter-fields) или при отдельном вызове: `low`, `medium`, `high`, `xhigh`, `max` или числовой бюджет токенов. Это настроенное значение, и усилия, которые применяет Claude Code, могут отличаться, если модель не поддерживает этот уровень. Опускается, когда уровень усилий не задан. Требует Claude Code v2.1.213 или более поздней версии |

1203| `contextWindowSize` | number, необязательное | Контекстное окно `model` в токенах, вычисляемое так же, как [`context_window.context_window_size`](#context-window-fields) основной строки состояния, поэтому вы можете отобразить процент для каждой строки из `tokenCount`. Опускается, когда опущено `model`. Требует Claude Code v2.1.205 или более поздней версии |1203| `contextWindowSize` | number, необязательное | Контекстное окно `model` в токенах, вычисляемое так же, как [`context_window.context_window_size`](#context-window-fields) основной строки состояния, поэтому вы можете отобразить процент для каждой строки из `tokenCount`. Опускается, когда опущено `model` |

1204| `tokenCount` | number | Текущее количество токенов субагента — значение, которое показывает строка по умолчанию |1204| `tokenCount` | number | Текущее количество токенов субагента — значение, которое показывает строка по умолчанию |

1205| `tokenSamples` | array of numbers | До 16 последних значений `tokenCount`, по одному за цикл обновления, от самого старого к новому, заканчивая текущим |1205| `tokenSamples` | array of numbers | До 16 последних значений `tokenCount`, по одному за цикл обновления, от самого старого к новому, заканчивая текущим |

1206| `cwd` | string | Рабочий каталог субагента: его собственный каталог, если он работает в отдельном каталоге, например в изолированном worktree, иначе рабочий каталог сессии |1206| `cwd` | string | Рабочий каталог субагента: его собственный каталог, если он работает в отдельном каталоге, например в изолированном worktree, иначе рабочий каталог сессии |

sub-agents.md +40 −11

Details

32 32 

33Claude Code включает встроенные subagents, которые Claude автоматически использует при необходимости. Каждый наследует разрешения родительского разговора; большинство работают с ограниченным набором инструментов.33Claude Code включает встроенные subagents, которые Claude автоматически использует при необходимости. Каждый наследует разрешения родительского разговора; большинство работают с ограниченным набором инструментов.

34 34 

35Explore и Plan пропускают ваши файлы CLAUDE.md и снимок статуса git, чтобы исследование было быстрым и экономичным. Все остальные встроенные и [пользовательские subagents](#configure-subagents) загружают оба, если только их определение не устанавливает поле [`omitClaudeMd`](#supported-frontmatter-fields) для пропуска файлов CLAUDE.md пользователя, проекта и локального. Для полного разбора того, что достигает subagent, см. [что загружается при запуске](#what-loads-at-startup).35Explore и Plan запускаются без ваших файлов CLAUDE.md и снимка статуса git, чтобы исследование было быстрым и экономичным. Другие встроенные и [пользовательские субагенты](#configure-subagents) загружают и то и другое, если только вы не установите [`omitClaudeMd`](#supported-frontmatter-fields) в определении пользовательского субагента, чтобы запускать его без файлов CLAUDE.md пользователя, проекта и локального. Полный разбор того, что попадает в субагент, см. в разделе [что загружается при запуске](#what-loads-at-startup).

36 36 

37<Tabs>37<Tabs>

38 <Tab title="Explore">38 <Tab title="Explore">


185 185 

186Claude Code сканирует `.claude/agents/` и `~/.claude/agents/` рекурсивно, поэтому вы можете организовать определения в подпапки, такие как `agents/review/` или `agents/research/`. Путь подпапки не влияет на то, как идентифицируется или вызывается subagent, потому что идентичность происходит только из поля `name` frontmatter.186Claude Code сканирует `.claude/agents/` и `~/.claude/agents/` рекурсивно, поэтому вы можете организовать определения в подпапки, такие как `agents/review/` или `agents/research/`. Путь подпапки не влияет на то, как идентифицируется или вызывается subagent, потому что идентичность происходит только из поля `name` frontmatter.

187 187 

188Сохраняйте значения `name` уникальными по всему дереву: если два файла под одной директорией `.claude/agents/`, включая её подпапки, объявляют одно и то же имя, Claude Code загружает только один из них, выбранный по порядку чтения файловой системы, а не по документированному приоритету. Во вложенных директориях проекта определение, ближайшее к рабочей директории, побеждает, как описано выше. Проверка настройки [`/doctor`](/docs/ru/commands#all-commands) сообщает о файлах в одной директории, которые имеют одно и то же имя, и предлагает переименовать или удалить все, кроме одного. До версии 2.1.205 `/doctor` открывал экран диагностики, который перечислял дубликаты и показывал, какое определение было активно.188Следите за уникальностью значений `name` во всём дереве: если два файла в одном каталоге `.claude/agents/`, включая его подпапки, объявляют одно и то же имя, Claude Code загружает только один из них, выбранный по порядку чтения файловой системы, а не по документированному приоритету. Во вложенных каталогах проекта побеждает определение, ближайшее к рабочему каталогу, как описано выше. Проверка настройки [`/doctor`](/docs/ru/commands#all-commands) сообщает о файлах в одном каталоге с одинаковыми именами и предлагает переименовать или удалить все, кроме одного.

189 189 

190Директории `agents/` plugin также сканируются рекурсивно. В отличие от областей проекта и пользователя, подпапка внутри директории `agents/` plugin становится частью [scoped identifier](#invoke-subagents-explicitly): файл в `agents/review/security.md` в plugin `my-plugin` регистрируется как `my-plugin:review:security`.190Директории `agents/` plugin также сканируются рекурсивно. В отличие от областей проекта и пользователя, подпапка внутри директории `agents/` plugin становится частью [scoped identifier](#invoke-subagents-explicitly): файл в `agents/review/security.md` в plugin `my-plugin` регистрируется как `my-plugin:review:security`.

191 191 


234Каждый ключ верхнего уровня в JSON — это имя агента, и его значение — это определение этого агента. Не начинайте имя с `-`. Определение принимает эти поля:234Каждый ключ верхнего уровня в JSON — это имя агента, и его значение — это определение этого агента. Не начинайте имя с `-`. Определение принимает эти поля:

235 235 

236* **`prompt`**: системное приглашение агента, эквивалентное телу markdown в файловых subagents. `prompt` может быть пустым. Если вы выбираете агента с пустым `prompt` и без поля `memory` в качестве агента сессии с помощью `--agent`, системное приглашение сессии остаётся неизменным. Пустой `prompt` требует Claude Code v2.1.281 или позже.236* **`prompt`**: системное приглашение агента, эквивалентное телу markdown в файловых subagents. `prompt` может быть пустым. Если вы выбираете агента с пустым `prompt` и без поля `memory` в качестве агента сессии с помощью `--agent`, системное приглашение сессии остаётся неизменным. Пустой `prompt` требует Claude Code v2.1.281 или позже.

237* **[Поля Frontmatter](#supported-frontmatter-fields)**: `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `omitClaudeMd` и `isolation`.237* **[Поля Frontmatter](#supported-frontmatter-fields)**: `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `autoCompactWindow`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `omitClaudeMd` и `isolation`.

238* **Игнорируемые поля**: `color` и `experimental` не принимаются здесь и игнорируются, а не отклоняются.238* **Игнорируемые поля**: `color` и `experimental` не принимаются здесь и игнорируются, а не отклоняются.

239 239 

240Для того, что Claude Code делает со значением, которое он не может загрузить, и флагов и переменной окружения, которые пропускают эту проверку, см. [`Invalid --agents configuration`](/docs/ru/errors#invalid-agents-configuration).240Для того, что Claude Code делает со значением, которое он не может загрузить, и флагов и переменной окружения, которые пропускают эту проверку, см. [`Invalid --agents configuration`](/docs/ru/errors#invalid-agents-configuration).


285 285 

286Subagent начинает работу в текущей рабочей директории основного разговора. В пределах subagent команды `cd` не сохраняются между вызовами инструментов Bash или PowerShell и не влияют на рабочую директорию основного разговора. Чтобы дать subagent изолированную копию репозитория вместо этого, установите [`isolation: worktree`](#supported-frontmatter-fields).286Subagent начинает работу в текущей рабочей директории основного разговора. В пределах subagent команды `cd` не сохраняются между вызовами инструментов Bash или PowerShell и не влияют на рабочую директорию основного разговора. Чтобы дать subagent изолированную копию репозитория вместо этого, установите [`isolation: worktree`](#supported-frontmatter-fields).

287 287 

288Subagent с `isolation: worktree` запускает свои команды Bash и PowerShell внутри своего worktree. Команда, рабочая директория которой разрешается в вашу основную копию вместо этого, например потому что директория worktree была удалена во время работы subagent, завершается с ошибкой. До версии 2.1.203 такая команда могла запуститься в основной копии.288Субагент с `isolation: worktree` выполняет свои команды Bash и PowerShell внутри своего worktree. Команда, рабочий каталог которой вместо этого указывает на вашу основную рабочую копию, например потому что каталог worktree был удалён во время работы субагента, завершается с ошибкой.

289 289 

290Эта проверка рабочей директории охватывает весь репозиторий, содержащий директорию, из которой вы запустили Claude Code. Когда ваша сессия работает в связанном [worktree](/docs/ru/worktrees) своём собственном, проверка также охватывает основную копию, из которой этот worktree связан. До версии 2.1.210 проверка охватывала только саму директорию запуска. Команда, рабочая директория которой разрешалась в другом месте в том же репозитории, такая как корень репозитория, когда вы запустили Claude Code из подпапки monorepo, запускалась там вместо того, чтобы не выполняться.290Эта проверка рабочей директории охватывает весь репозиторий, содержащий директорию, из которой вы запустили Claude Code. Когда ваша сессия работает в связанном [worktree](/docs/ru/worktrees) своём собственном, проверка также охватывает основную копию, из которой этот worktree связан. До версии 2.1.210 проверка охватывала только саму директорию запуска. Команда, рабочая директория которой разрешалась в другом месте в том же репозитории, такая как корень репозитория, когда вы запустили Claude Code из подпапки monorepo, запускалась там вместо того, чтобы не выполняться.

291 291 


306 306 

307Настройте subagent с помощью YAML [frontmatter](/docs/ru/glossary#frontmatter) между маркерами `---` в верхней части его файла, и напишите его системное приглашение как Markdown после закрывающего `---`. Требуются только `name` и `description`.307Настройте subagent с помощью YAML [frontmatter](/docs/ru/glossary#frontmatter) между маркерами `---` в верхней части его файла, и напишите его системное приглашение как Markdown после закрывающего `---`. Требуются только `name` и `description`.

308 308 

309Многословные имена полей используют camelCase, такие как `maxTurns` и `disallowedTools`, и должны точно совпадать с таблицей: Claude Code игнорирует поле, которое он не распознаёт, без сообщения об ошибке. Чтобы узнать, почему файл subagent не загрузился, см. [Subagent files Claude Code skips](#subagent-files-claude-code-skips).309Многословные имена полей используют camelCase, такие как `maxTurns` и `disallowedTools`, и должны точно совпадать с таблицей: Claude Code игнорирует поле, которое он не распознаёт, без сообщения об ошибке.

310 

311* Чтобы найти поле с опечаткой в subagent, который загрузился, выполните [`claude --debug`](/docs/ru/cli-reference#cli-flags) в оболочке и найдите в логе отладки `~/.claude/debug/<session-id>.txt` строку `does not recognize or apply`. Лог отладки называет до пяти полей верхнего уровня в файле subagent, которые Claude Code не распознаёт, с вероятным задуманным именем, когда есть похожее поддерживаемое поле. Требует Claude Code v2.1.296 или позже.

312* Чтобы узнать, почему файл subagent не загрузился, см. [Subagent files Claude Code skips](#subagent-files-claude-code-skips).

310 313 

311| Field | Требуется | Description |314| Field | Требуется | Description |

312| :- | :- | :- |315| :- | :- | :- |


317| `model` | Нет | [Модель](#choose-a-model) для использования: `sonnet`, `opus`, `haiku`, `fable`, полный ID модели, такой как `claude-opus-5-5`, или `inherit`. Когда вы опускаете его, Claude Code выбирает модель в [subagent model order](#choose-a-model) |320| `model` | Нет | [Модель](#choose-a-model) для использования: `sonnet`, `opus`, `haiku`, `fable`, полный ID модели, такой как `claude-opus-5-5`, или `inherit`. Когда вы опускаете его, Claude Code выбирает модель в [subagent model order](#choose-a-model) |

318| `permissionMode` | Нет | [Режим разрешений](#permission-modes): `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, `plan` или `manual` как псевдоним для `default`. Игнорируется для [субагентов плагинов](#choose-the-subagent-scope) |321| `permissionMode` | Нет | [Режим разрешений](#permission-modes): `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, `plan` или `manual` как псевдоним для `default`. Игнорируется для [субагентов плагинов](#choose-the-subagent-scope) |

319| `maxTurns` | Нет | Максимальное количество агентских ходов перед остановкой subagent. Когда subagent достигает лимита, Claude Code возвращает его вывод, отмеченный как частичный, и Claude может [возобновить его](#resume-subagents) для продолжения. Частичная маркировка требует Claude Code v2.1.246 или позже |322| `maxTurns` | Нет | Максимальное количество агентских ходов перед остановкой subagent. Когда subagent достигает лимита, Claude Code возвращает его вывод, отмеченный как частичный, и Claude может [возобновить его](#resume-subagents) для продолжения. Частичная маркировка требует Claude Code v2.1.246 или позже |

323| `autoCompactWindow` | Нет | Уменьшает [окно автосжатия](#subagent-auto-compact-window) для этого subagent до количества токенов от `100000` до `1000000`. Требует Claude Code v2.1.296 или позже |

320| `skills` | Нет | [Skills](/docs/ru/skills) для предварительной загрузки в контекст subagent при запуске. Полное содержимое skill инжектируется, а не просто описание. Subagents по-прежнему могут вызывать неперечисленные project, user и plugin skills через инструмент Skill |324| `skills` | Нет | [Skills](/docs/ru/skills) для предварительной загрузки в контекст subagent при запуске. Полное содержимое skill инжектируется, а не просто описание. Subagents по-прежнему могут вызывать неперечисленные project, user и plugin skills через инструмент Skill |

321| `mcpServers` | Нет | [MCP servers](/docs/ru/mcp) доступные этому subagent. Каждая запись — это либо имя сервера, ссылающееся на уже настроенный сервер (например, `"slack"`), либо встроенное определение с именем сервера в качестве ключа и полной [конфигурацией MCP server](/docs/ru/mcp#installing-mcp-servers) в качестве значения. Игнорируется для [plugin subagents](#choose-the-subagent-scope) |325| `mcpServers` | Нет | [MCP servers](/docs/ru/mcp) доступные этому subagent. Каждая запись — это либо имя сервера, ссылающееся на уже настроенный сервер (например, `"slack"`), либо встроенное определение с именем сервера в качестве ключа и полной [конфигурацией MCP server](/docs/ru/mcp#installing-mcp-servers) в качестве значения. Игнорируется для [plugin subagents](#choose-the-subagent-scope) |

322| `hooks` | Нет | [Lifecycle hooks](#define-hooks-for-subagents) в области этого subagent. Игнорируется для [plugin subagents](#choose-the-subagent-scope) |326| `hooks` | Нет | [Lifecycle hooks](#define-hooks-for-subagents) в области этого subagent. Игнорируется для [plugin subagents](#choose-the-subagent-scope) |

323| `memory` | Нет | [Область постоянной памяти](#enable-persistent-memory): `user`, `project` или `local`. Включает кросс-сессионное обучение |327| `memory` | Нет | [Область постоянной памяти](#enable-persistent-memory): `user`, `project` или `local`. Включает кросс-сессионное обучение |

324| `background` | Нет | Установите на `true`, чтобы держать этот subagent в фоне даже когда Claude просит запустить его на переднем плане. Где [fork mode](#turn-fork-mode-on-or-off) включен, Claude Code уже запускает subagents, которые Claude порождает, [в фоне](#run-subagents-in-foreground-or-background) |328| `background` | Нет | Установите на `true`, чтобы держать этот subagent в фоне даже когда Claude просит запустить его на переднем плане. Где [fork mode](#turn-fork-mode-on-or-off) включен, Claude Code уже запускает subagents, которые Claude порождает, [в фоне](#run-subagents-in-foreground-or-background) |

325| `omitClaudeMd` | Нет | Установите на `true`, чтобы запустить этот subagent без файлов user, project и local CLAUDE.md; [managed policy files](/docs/ru/memory#how-claude-md-files-load) по-прежнему загружаются, кроме [managed subagents](#choose-the-subagent-scope). Используйте это для subagents, которые берут всё необходимое из [delegation prompt](#what-loads-at-startup). Игнорируется, когда агент работает как основной агент сессии через `--agent` или параметр `agent`. Требует Claude Code v2.1.271 или позже |329| `omitClaudeMd` | Нет | Задайте `true`, чтобы запускать этого субагента без пользовательских, проектных и локальных файлов CLAUDE.md в его [начальном контексте](#what-loads-at-startup); [файлы управляемых политик](/docs/ru/memory#how-claude-md-files-load) по-прежнему загружаются, кроме как для [управляемых субагентов](#choose-the-subagent-scope). Используйте для субагентов, которые берут всё необходимое из промпта делегирования. Игнорируется, когда агент работает как основной агент сессии через `--agent` или настройку `agent`. Требуется Claude Code v2.1.271 или новее |

326| `effort` | Нет | Уровень effort, пока этот субагент активен. Переопределяет уровень effort сессии, но не переменную окружения [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/ru/env-vars#variables). Варианты: `low`, `medium`, `high`, `xhigh`, `max`; доступные уровни зависят от модели. См. [Выбор уровня effort](#choose-an-effort-level) |330| `effort` | Нет | Уровень effort, пока этот субагент активен. Переопределяет уровень effort сессии, но не переменную окружения [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/ru/env-vars#variables). Варианты: `low`, `medium`, `high`, `xhigh`, `max`; доступные уровни зависят от модели. См. [Выбор уровня effort](#choose-an-effort-level) |

327| `isolation` | Нет | Установите на `worktree`, чтобы запустить subagent во временном [git worktree](/docs/ru/worktrees), дав ему изолированную копию репозитория, разветвлённую по умолчанию от вашей [ветки по умолчанию](/docs/ru/worktrees#choose-the-base-branch), а не от `HEAD` родительской сессии. Worktree автоматически очищается, если subagent не вносит изменения |331| `isolation` | Нет | Установите на `worktree`, чтобы запустить subagent во временном [git worktree](/docs/ru/worktrees), дав ему изолированную копию репозитория, разветвлённую по умолчанию от вашей [ветки по умолчанию](/docs/ru/worktrees#choose-the-base-branch), а не от `HEAD` родительской сессии. Worktree автоматически очищается, если subagent не вносит изменения |

328| `color` | Нет | Цвет отображения для subagent в списке задач и транскрипте. Принимает `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink` или `cyan` |332| `color` | Нет | Цвет отображения для subagent в списке задач и транскрипте. Принимает `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink` или `cyan` |


914claude --agent code-reviewer918claude --agent code-reviewer

915```919```

916 920 

917Если только [промпт агента не пуст](#choose-the-subagent-scope), системный промпт пользовательского субагента полностью заменяет стандартный системный промпт Claude Code — так же, как это делает [`--system-prompt`](/docs/ru/cli-reference). Файлы `CLAUDE.md` и память проекта всё равно загружаются через обычный поток сообщений, даже если в определении агента задано [`omitClaudeMd`](#supported-frontmatter-fields).921Если только [промпт агента не пуст](#choose-the-subagent-scope), системный промпт пользовательского субагента полностью заменяет стандартный системный промпт Claude Code — так же, как это делает [`--system-prompt`](/docs/ru/cli-reference). Файлы `CLAUDE.md` и память проекта всё равно загружаются через обычный поток сообщений, даже если в определении агента задано [`omitClaudeMd`](#supported-frontmatter-fields). Если вы запускаете сессию с `-p` как пользовательского агента, у которого есть собственный промпт, она также начинается без [снимка статуса git](/docs/ru/settings-reference#includegitinstructions).

918 922 

919Имя агента отображается как `@<name>` в заголовке при запуске, чтобы вы могли убедиться, что он активен.923Имя агента отображается как `@<name>` в заголовке при запуске, чтобы вы могли убедиться, что он активен.

920 924 


1150* **Файлы CLAUDE.md**: все уровни [иерархии CLAUDE.md](/docs/ru/memory#how-claude-md-files-load), которые загружает основной диалог, включая `~/.claude/CLAUDE.md`, правила проекта, `CLAUDE.local.md`, файлы управляемых политик и любые [файлы `AGENTS.md`](/docs/ru/memory#agents-md), загружаемые как инструкции проекта. Встроенные агенты Explore и Plan это пропускают. Субагент, в определении которого задано [`omitClaudeMd`](#supported-frontmatter-fields), загружает только файлы управляемых политик, а если определение получено из [управляемых настроек](#choose-the-subagent-scope) — вообще ничего.1154* **Файлы CLAUDE.md**: все уровни [иерархии CLAUDE.md](/docs/ru/memory#how-claude-md-files-load), которые загружает основной диалог, включая `~/.claude/CLAUDE.md`, правила проекта, `CLAUDE.local.md`, файлы управляемых политик и любые [файлы `AGENTS.md`](/docs/ru/memory#agents-md), загружаемые как инструкции проекта. Встроенные агенты Explore и Plan это пропускают. Субагент, в определении которого задано [`omitClaudeMd`](#supported-frontmatter-fields), загружает только файлы управляемых политик, а если определение получено из [управляемых настроек](#choose-the-subagent-scope) — вообще ничего.

1151* **Статус Git**: снимок, который Claude Code считывает из вашего репозитория при запуске субагента. Для субагента в [собственном worktree](/docs/ru/worktrees#isolate-subagents-with-worktrees) этого репозитория снимок показывает ветку, статус и последние коммиты этого worktree. Отсутствует вне Git-репозитория или если снимок отключён; см. [`includeGitInstructions`](/docs/ru/settings-reference#includegitinstructions). Explore и Plan пропускают его в любом случае.1155* **Статус Git**: снимок, который Claude Code считывает из вашего репозитория при запуске субагента. Для субагента в [собственном worktree](/docs/ru/worktrees#isolate-subagents-with-worktrees) этого репозитория снимок показывает ветку, статус и последние коммиты этого worktree. Отсутствует вне Git-репозитория или если снимок отключён; см. [`includeGitInstructions`](/docs/ru/settings-reference#includegitinstructions). Explore и Plan пропускают его в любом случае.

1152* **Предзагруженные скиллы**: полное содержимое всех скиллов, перечисленных в [поле `skills`](#preload-skills-into-subagents) агента. Встроенные агенты не предзагружают скиллы.1156* **Предзагруженные скиллы**: полное содержимое всех скиллов, перечисленных в [поле `skills`](#preload-skills-into-subagents) агента. Встроенные агенты не предзагружают скиллы.

1153* **Список соседних агентов**: [системное напоминание](/docs/ru/glossary#system-reminder) со списком `main` и всех остальных именованных агентов в сессии; каждый из них — допустимое значение `to` для [`SendMessage`](#resume-subagents). Требуется Claude Code v2.1.206 или новее. Список появляется, только если инструменты субагента включают `SendMessage` и хотя бы у одного другого агента есть имя — неважно, дал ли его Claude при порождении или агент работает как участник [команды агентов](/docs/ru/agent-teams). Это снимок на момент запуска субагента, поэтому агенты, получившие имя позже, в нём не отображаются.1157* **Список соседних агентов**: [системное напоминание](/docs/ru/glossary#system-reminder) со списком `main` и всех остальных именованных агентов в сессии; каждый из них — допустимое значение `to` для [`SendMessage`](#resume-subagents). Список появляется, только если инструменты субагента включают `SendMessage` и хотя бы у одного другого агента есть имя — неважно, дал ли его Claude при порождении или агент работает как участник [команды агентов](/docs/ru/agent-teams). Это снимок на момент запуска субагента, поэтому агенты, получившие имя позже, в нём не отображаются.

1154 1158 

1155Чтобы запустить одного из своих субагентов без пользовательских, проектных и локальных файлов CLAUDE.md, задайте [`omitClaudeMd: true`](#supported-frontmatter-fields) в его frontmatter или в JSON `--agents`.1159Чтобы запустить одного из своих субагентов без пользовательских, проектных и локальных файлов CLAUDE.md, задайте [`omitClaudeMd: true`](#supported-frontmatter-fields) в его frontmatter или в JSON `--agents`. Для Explore, Plan и субагентов с `omitClaudeMd` файл `CLAUDE.md` подкаталога и соответствующие [правила с привязкой к путям](/docs/ru/memory#path-specific-rules) всё равно [загружаются](/docs/ru/memory#how-claude-md-files-load), когда субагент работает с файлами в этом подкаталоге.

1156 1160 

1157Когда основной диалог читает результаты таких субагентов, у него по-прежнему есть весь ваш CLAUDE.md, поэтому большинству правил не нужно доходить до самого субагента. Если же правило должно до него дойти, например "ignore the `vendor/` directory," повторите его в промпте, который вы даёте Claude при делегировании.1161Когда основной диалог читает результаты таких субагентов, у него по-прежнему есть весь ваш CLAUDE.md, поэтому большинству правил не нужно доходить до самого субагента. Если же правило должно до него дойти, например "ignore the `vendor/` directory," повторите его в промпте, который вы даёте Claude при делегировании.

1158 1162 


1196 1200 

1197Пока [строка этого субагента ещё есть в панели субагентов](#run-subagents-in-foreground-or-background), введите текст в его транскрипт, чтобы возобновить его самостоятельно. После этого сообщение от Claude снова сможет автоматически его возобновить.1201Пока [строка этого субагента ещё есть в панели субагентов](#run-subagents-in-foreground-or-background), введите текст в его транскрипт, чтобы возобновить его самостоятельно. После этого сообщение от Claude снова сможет автоматически его возобновить.

1198 1202 

1199Возобновление запускает новое выполнение агента под тем же ID, поэтому субагент, который ранее завершился с ошибкой или успешно, снова отображается как работающий в списке задач и в событиях задач Agent SDK. До v2.1.205 он продолжал показывать прежний статус ошибки или завершения, пока возобновлённое выполнение работало.1203Возобновление запускает новое выполнение агента под тем же ID, поэтому субагент, который ранее завершился с ошибкой или успешно, снова отображается как работающий в списке задач и в событиях задач Agent SDK.

1200 1204 

1201`SendMessage` проверяет, что имя по-прежнему указывает на того же агента, которого оно достигало ранее в диалоге. Если имя занял более новый агент, например повторно порождённый фоновый агент, который использовал то же имя, Claude Code отказывает в отправке, а не доставляет сообщение не тому агенту, и ошибка сообщает, к какому агенту теперь ведёт это имя, чтобы Claude мог сменить адресата. Чтобы обратиться к прежнему агенту, пока тот ещё работает, Claude использует ID агента, полученный при его порождении. Проверка действует в пределах текущего диалога и сбрасывается при `/clear`.1205`SendMessage` проверяет, что имя по-прежнему указывает на того же агента, которого оно достигало ранее в диалоге. Если имя занял более новый агент, например повторно порождённый фоновый агент, который использовал то же имя, Claude Code отказывает в отправке, а не доставляет сообщение не тому агенту, и ошибка сообщает, к какому агенту теперь ведёт это имя, чтобы Claude мог сменить адресата. Чтобы обратиться к прежнему агенту, пока тот ещё работает, Claude использует ID агента, полученный при его порождении. Проверка действует в пределах текущего диалога и сбрасывается при `/clear`.

1202 1206 


1214 Автосжатие1218 Автосжатие

1215</h4>1219</h4>

1216 1220 

1217Субагенты поддерживают автосжатие по той же логике, что и основной диалог. Сжатие контекста срабатывает при тех же условиях, и `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` также применяется к субагентам. О том, когда переопределение вступает в силу, см. [переменные окружения](/docs/ru/env-vars).1221Субагенты поддерживают автосжатие. Сжатие контекста срабатывает по мере заполнения собственного контекстного окна субагента, и `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` также применяется к субагентам. О том, когда переопределение вступает в силу, см. [переменные окружения](/docs/ru/env-vars).

1218 1222 

1219События сжатия контекста записываются в файлы транскриптов субагентов:1223События сжатия контекста записываются в файлы транскриптов субагентов:

1220 1224 


1231 1235 

1232Значение `preTokens` показывает, сколько токенов было использовано до сжатия контекста.1236Значение `preTokens` показывает, сколько токенов было использовано до сжатия контекста.

1233 1237 

1238<a id="subagent-auto-compact-window" />

1239 

1240<h5 id="set-the-auto-compact-window-for-one-subagent">

1241 Задание окна автосжатия для одного субагента

1242</h5>

1243 

1244Чтобы один субагент выполнял сжатие контекста раньше, чем обычно, задайте в его [frontmatter](#supported-frontmatter-fields) поле `autoCompactWindow` — число токенов от `100000` до `1000000`. Если вы задали в [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/ru/env-vars#variables) положительное целое число, субагент вместо этого использует окно из этой переменной, и поле не действует. Требуется Claude Code v2.1.296 или новее.

1245 

1246Этот frontmatter задаёт `autoCompactWindow` равным 200 000 токенов для субагента, который читает длинные файлы логов:

1247 

1248```yaml theme={null}

1249---

1250name: log-reader

1251description: Reads long log files and reports the errors it finds

1252autoCompactWindow: 200000

1253---

1254```

1255 

1256Записывайте значение как простое целое число, например `200000`, потому что во frontmatter Claude Code читает `200k` как 200, а это значение вне допустимого диапазона. В таком случае субагент всё равно загружается и выполняет сжатие контекста так, будто поле отсутствует. Чтобы проверить, проигнорировал ли Claude Code ваше значение, выполните `claude --debug` в оболочке и найдите в [логе отладки](#supported-frontmatter-fields) строку `invalid autoCompactWindow`.

1257 

1258Если значение находится в диапазоне, но изменений по-прежнему нет, проверьте следующие причины:

1259 

1260* **Значение не ниже [окна автосжатия](/docs/ru/model-config#context-window-and-auto-compaction), которое субагент иначе унаследовал бы**: чтобы сжатие происходило раньше, задайте значение ниже этого окна.

1261* **Вы запускаете всю сессию как этого субагента с `--agent` или настройкой `agent`**: в этом случае поле не действует. Чтобы задать окно для сессии, см. [Задание окна автосжатия](/docs/ru/model-config#set-the-auto-compact-window).

1262 

1234<h2 id="fork-the-current-conversation">1263<h2 id="fork-the-current-conversation">

1235 Разветвление текущего разговора1264 Разветвление текущего разговора

1236</h2>1265</h2>

Details

44| `ReadMcpResourceTool` | Читает конкретный MCP ресурс по URI | No |44| `ReadMcpResourceTool` | Читает конкретный MCP ресурс по URI | No |

45| `RemoteTrigger` | Создает, обновляет, запускает и выводит список [Routines](/docs/ru/routines) на claude.ai. Поддерживает команду `/schedule`. [Справочник входных данных `RemoteTrigger`](/docs/ru/agent-sdk/typescript#remotetrigger) документирует каждое действие и политики организации, которые удаляют инструмент. Routines находятся на claude.ai и требуют план Pro, Max, Team или Enterprise, поэтому этот инструмент недоступен из Amazon Bedrock, Claude Platform на AWS, Agent Platform Google Cloud или Microsoft Foundry | No |45| `RemoteTrigger` | Создает, обновляет, запускает и выводит список [Routines](/docs/ru/routines) на claude.ai. Поддерживает команду `/schedule`. [Справочник входных данных `RemoteTrigger`](/docs/ru/agent-sdk/typescript#remotetrigger) документирует каждое действие и политики организации, которые удаляют инструмент. Routines находятся на claude.ai и требуют план Pro, Max, Team или Enterprise, поэтому этот инструмент недоступен из Amazon Bedrock, Claude Platform на AWS, Agent Platform Google Cloud или Microsoft Foundry | No |

46| `ReportFindings` | Сообщает о результатах код-ревью в виде структурированного списка с файлом, кратким описанием и сценарием сбоя для каждого результата, чтобы Claude Code мог их отобразить вместо вывода в виде текста. Claude вызывает его, когда активные инструкции код-ревью предписывают ему это. Результат также может содержать необязательный слаг `category`, например `correctness` или `test-coverage`, который показывается рядом с местоположением файла в отображаемом списке | No |46| `ReportFindings` | Сообщает о результатах код-ревью в виде структурированного списка с файлом, кратким описанием и сценарием сбоя для каждого результата, чтобы Claude Code мог их отобразить вместо вывода в виде текста. Claude вызывает его, когда активные инструкции код-ревью предписывают ему это. Результат также может содержать необязательный слаг `category`, например `correctness` или `test-coverage`, который показывается рядом с местоположением файла в отображаемом списке | No |

47| `ScheduleWakeup` | Переносит следующую итерацию [самостоятельного `/loop`](/docs/ru/scheduled-tasks#let-claude-choose-the-interval). Claude вызывает это в конце каждой итерации, чтобы выбрать, когда запустится следующая, между одной минутой и одним часом; вы не вызываете это напрямую. Чтобы вместо этого завершить цикл, Claude вызывает его с `stop: true`, что отменяет ожидающее пробуждение. Поле `stop` требует Claude Code v2.1.202 или позже. Ожидающее пробуждение появляется в `session_crons` в [входных данных Stop hook](/docs/ru/hooks#stop-input) | No |47| `ScheduleWakeup` | Переносит следующую итерацию [самостоятельного `/loop`](/docs/ru/scheduled-tasks#let-claude-choose-the-interval). Claude вызывает это в конце каждой итерации, чтобы выбрать, когда запустится следующая, между одной минутой и одним часом; вы не вызываете это напрямую. Чтобы вместо этого завершить цикл, Claude вызывает его с `stop: true`, что отменяет ожидающее пробуждение. Ожидающее пробуждение появляется в `session_crons` во [входных данных хука Stop](/docs/ru/hooks#stop-input) | No |

48| `SendFeedback` | Составляет отчет об обратной связи о Claude Code, охватывающий проблему продукта или поведение Claude в сеансе, и ставит его в очередь на вашей машине для вашего просмотра. Claude Code ничего не отправляет, пока вы не выберете отправить черновик. См. [Поведение инструмента SendFeedback](#sendfeedback-tool-behavior). Требует Claude Code v2.1.238 или позже | No |48| `SendFeedback` | Составляет отчет об обратной связи о Claude Code, охватывающий проблему продукта или поведение Claude в сеансе, и ставит его в очередь на вашей машине для вашего просмотра. Claude Code ничего не отправляет, пока вы не выберете отправить черновик. См. [Поведение инструмента SendFeedback](#sendfeedback-tool-behavior). Требует Claude Code v2.1.238 или позже | No |

49| `SendMessage` | Отправляет сообщение другому агенту: товарищу по команде [команды агентов](/docs/ru/agent-teams), [подагенту, который он возобновляет](/docs/ru/sub-agents#resume-subagents) по ID или имени агента, или одному из ваших других сеансов Claude Code, на этой машине или за ее пределами. Обмен сообщениями с другими сеансами требует Claude Code v2.1.224 или позже. [Обмен сообщениями между сеансами](/docs/ru/cross-session-messaging) охватывает, какие сеансы Claude может достичь, [как выглядит сообщение, когда оно прибывает](/docs/ru/cross-session-messaging#what-a-message-looks-like), и [как Claude получает уведомление, когда другой сеанс переходит в режим ожидания](/docs/ru/cross-session-messaging#get-a-notice-when-another-session-goes-idle). Claude может включить необязательный ввод `summary`, обычно 5-10 слов, который Claude Code показывает как однострочный предпросмотр. Когда Claude опускает его в [простом текстовом сообщении](/docs/ru/cross-session-messaging#limitations), Claude Code использует первую строку сообщения как резюме. Claude Code обрезает резюме длиннее 200 символов с многоточием | No |49| `SendMessage` | Отправляет сообщение другому агенту: товарищу по команде [команды агентов](/docs/ru/agent-teams), [подагенту, который он возобновляет](/docs/ru/sub-agents#resume-subagents) по ID или имени агента, или одному из ваших других сеансов Claude Code, на этой машине или за ее пределами. Обмен сообщениями с другими сеансами требует Claude Code v2.1.224 или позже. [Обмен сообщениями между сеансами](/docs/ru/cross-session-messaging) охватывает, какие сеансы Claude может достичь, [как выглядит сообщение, когда оно прибывает](/docs/ru/cross-session-messaging#what-a-message-looks-like), и [как Claude получает уведомление, когда другой сеанс переходит в режим ожидания](/docs/ru/cross-session-messaging#get-a-notice-when-another-session-goes-idle). Claude может включить необязательный ввод `summary`, обычно 5-10 слов, который Claude Code показывает как однострочный предпросмотр. Когда Claude опускает его в [простом текстовом сообщении](/docs/ru/cross-session-messaging#limitations), Claude Code использует первую строку сообщения как резюме. Claude Code обрезает резюме длиннее 200 символов с многоточием | No |

50| `SendUserFile` | Отправляет вам файлы из сессии с необязательной подписью, чтобы созданный отчет, диаграмма, снимок экрана или собранный артефакт попал на ваше устройство, а не только упоминался в транскрипте. Необязательный ввод `display` управляет представлением: `render` открывает файл встроенным в клиент, `attach` показывает только карточку загрузки, а если он не задан, клиент решает по типу файла. Доступно, когда подключен клиент [Remote Control](/docs/ru/remote-control), или в [облачной сессии](/docs/ru/claude-code-on-the-web). Доставка осуществляется через инфраструктуру, размещенную Anthropic, поэтому инструмент недоступен на Amazon Bedrock, Agent Platform Google Cloud или Microsoft Foundry | No |50| `SendUserFile` | Отправляет вам файлы из сессии с необязательной подписью, чтобы созданный отчет, диаграмма, снимок экрана или собранный артефакт попал на ваше устройство, а не только упоминался в транскрипте. Необязательный ввод `display` управляет представлением: `render` открывает файл встроенным в клиент, `attach` показывает только карточку загрузки, а если он не задан, клиент решает по типу файла. Доступно, когда подключен клиент [Remote Control](/docs/ru/remote-control), или в [облачной сессии](/docs/ru/claude-code-on-the-web). Доставка осуществляется через инфраструктуру, размещенную Anthropic, поэтому инструмент недоступен на Amazon Bedrock, Agent Platform Google Cloud или Microsoft Foundry | No |


54| `TaskCreate` | Создает новую задачу в списке задач. Предоставляется по умолчанию только на моделях, перечисленных в [Доступность инструмента Task](#task-tool-availability), и на других моделях, когда вы согласитесь | No |54| `TaskCreate` | Создает новую задачу в списке задач. Предоставляется по умолчанию только на моделях, перечисленных в [Доступность инструмента Task](#task-tool-availability), и на других моделях, когда вы согласитесь | No |

55| `TaskGet` | Получает полные детали для конкретной задачи. Предоставляется по умолчанию только на моделях, перечисленных в [Доступность инструмента Task](#task-tool-availability), и на других моделях, когда вы согласитесь | No |55| `TaskGet` | Получает полные детали для конкретной задачи. Предоставляется по умолчанию только на моделях, перечисленных в [Доступность инструмента Task](#task-tool-availability), и на других моделях, когда вы согласитесь | No |

56| `TaskList` | Выводит список всех задач с их текущим статусом. Предоставляется по умолчанию только на моделях, перечисленных в [Доступность инструмента Task](#task-tool-availability), и на других моделях, когда вы согласитесь | No |56| `TaskList` | Выводит список всех задач с их текущим статусом. Предоставляется по умолчанию только на моделях, перечисленных в [Доступность инструмента Task](#task-tool-availability), и на других моделях, когда вы согласитесь | No |

57| `TaskOutput` | Получает вывод из фоновой задачи. Устарело в пользу `Read` на пути выходного файла задачи. Когда ни одна задача не соответствует ID, ошибка выводит список работающих фоновых агентов по ID и описанию. До v2.1.203 ошибка называла только отсутствующий ID | No |57| `TaskOutput` | Удален в v2.1.277. Ранее получал вывод фоновой задачи; теперь Claude читает [выходной файл](/docs/ru/interactive-mode#how-backgrounding-works) фоновой задачи с помощью `Read` | No |

58| `TaskStop` | Останавливает работающую фоновую задачу по ID. Он также принимает [участника команды агентов](/docs/ru/agent-teams) или именованного фонового агента по ID или имени агента. Когда ни одна задача не соответствует ID, ошибка выводит список работающих фоновых агентов с их ID и описанием, включая агентов, которых создал другой агент. До v2.1.203 ошибка выводила список работающих участников команды и именованных агентов, но не фоновых агентов, которых создал другой агент, поэтому их нельзя было идентифицировать или остановить из основного диалога | No |58| `TaskStop` | Останавливает работающую фоновую задачу по ID. Он также принимает [участника команды агентов](/docs/ru/agent-teams) или именованного фонового агента по ID или имени агента. Когда ни одна задача не соответствует ID, ошибка выводит список работающих фоновых агентов с их ID и описанием, включая агентов, которых создал другой агент | No |

59| `TaskUpdate` | Обновляет статус задачи, зависимости, детали или удаляет задачи. Предоставляется по умолчанию только на моделях, перечисленных в [Доступность инструмента Task](#task-tool-availability), и на других моделях, когда вы согласитесь | No |59| `TaskUpdate` | Обновляет статус задачи, зависимости, детали или удаляет задачи. Предоставляется по умолчанию только на моделях, перечисленных в [Доступность инструмента Task](#task-tool-availability), и на других моделях, когда вы согласитесь | No |

60| `TodoWrite` | Управляет контрольным списком задач сеанса. Отключено по умолчанию в пользу `TaskCreate`, `TaskGet`, `TaskList` и `TaskUpdate`. Установите `CLAUDE_CODE_ENABLE_TASKS=0` для повторного включения в [сеансах, которые имеют инструменты отслеживания задач](#task-tool-availability) | No |60| `TodoWrite` | Управляет контрольным списком задач сеанса. Отключено по умолчанию в пользу `TaskCreate`, `TaskGet`, `TaskList` и `TaskUpdate`. Установите `CLAUDE_CODE_ENABLE_TASKS=0` для повторного включения в [сеансах, которые имеют инструменты отслеживания задач](#task-tool-availability) | No |

61| `ToolSearch` | Ищет и загружает отложенные инструменты, когда [поиск инструментов](/docs/ru/mcp#scale-with-mcp-tool-search) включен | No |61| `ToolSearch` | Ищет и загружает отложенные инструменты, когда [поиск инструментов](/docs/ru/mcp#scale-with-mcp-tool-search) включен | No |

ultrareview.md +11 −11

Details

149 Отслеживание выполняемого анализа149 Отслеживание выполняемого анализа

150</h2>150</h2>

151 151 

152Анализ обычно занимает от 5 до 10 минут. Анализ работает как фоновая задача, поэтому вы можете продолжать работать в вашей сессии или запускать другие команды. Если вы выбрали [публикацию результатов в pull request](#post-findings-to-the-pull-request), держите сессию открытой до завершения анализа; если сессия завершится раньше, Claude Code ничего не публикует.152Анализ обычно занимает от 15 до 25 минут. Анализ работает как фоновая задача, поэтому вы можете продолжать работать в вашей сессии или запускать другие команды. Если вы выбрали [публикацию результатов в pull request](#post-findings-to-the-pull-request), держите сессию открытой до завершения анализа; если сессия завершится раньше, Claude Code ничего не публикует.

153 153 

154Используйте `/tasks` для просмотра выполняемых и завершенных анализов, открытия подробного представления анализа или остановки выполняемого анализа. Если вы остановите анализ, Claude Code архивирует облачную сессию и не возвращает частичные результаты.154Используйте `/tasks` для просмотра выполняемых и завершенных анализов, открытия подробного представления анализа или остановки выполняемого анализа. Если вы остановите анализ, Claude Code архивирует облачную сессию и не возвращает частичные результаты.

155 155 


206Для автоматических обзоров на pull request GitHub [Code Review](/docs/ru/code-review) интегрируется с вашим репозиторием напрямую и публикует результаты как встроенные комментарии PR без этапа CLI.206Для автоматических обзоров на pull request GitHub [Code Review](/docs/ru/code-review) интегрируется с вашим репозиторием напрямую и публикует результаты как встроенные комментарии PR без этапа CLI.

207 207 

208<h2 id="how-ultrareview-compares-to-/code-review">208<h2 id="how-ultrareview-compares-to-/code-review">

209 Как ultrareview сравнивается с /code-review209 Сравнение ultrareview и /code-review

210</h2>210</h2>

211 211 

212Оба анализа проверяют код, но вы используете их на разных этапах вашего рабочего процесса.212Оба вида ревью анализируют код, но вы используете их на разных этапах своего рабочего процесса.

213 213 

214| | `/code-review` | `/code-review ultra` |214| | `/code-review` | `/code-review ultra` |

215| - | - | - |215| - | - | - |

216| Цель | ваш рабочий diff, pull request, ветка или путь | ваш рабочий diff или pull request |216| Объект | ваш рабочий diff, pull request, ветка или путь | ваш рабочий diff или pull request |

217| Запуск | локально в вашей сессии | в облачной изолированной среде |217| Где выполняется | локально в вашей сессии | в облачной песочнице |

218| Глубина | масштабируется с аргументом effort | многоагентный флот с независимой проверкой |218| Глубина | зависит от аргумента effort | множество агентов с независимой проверкой |

219| Продолжительность | секунды до нескольких минут | примерно 5–10 минут |219| Длительность | от нескольких секунд до нескольких минут | примерно от 15 до 25 минут |

220| Стоимость | учитывается в обычном использовании | бесплатные запуски, затем примерно \$5–\$25 за анализ как дополнительное использование |220| Стоимость | учитывается в обычном использовании | бесплатные запуски, затем примерно от \$5 до \$25 за ревью в виде кредитов использования |

221| Лучше всего для | быстрая обратная связь при итерации | уверенность перед слиянием при существенных изменениях |221| Лучше всего подходит для | быстрой обратной связи в ходе итераций | уверенности перед слиянием при существенных изменениях |

222 222 

223Используйте `/code-review` для быстрой обратной связи во время работы или передайте номер PR для проверки pull request коллеги перед его одобрением. Используйте `/code-review ultra` перед слиянием существенного изменения, когда вам нужен более глубокий анализ, который поймет проблемы, которые может пропустить локальный анализ.223Используйте `/code-review` для быстрой обратной связи во время работы или передайте номер PR, чтобы провести ревью pull request коллеги перед его одобрением. Используйте `/code-review ultra` перед слиянием существенного изменения, когда вам нужен более глубокий проход, который выявляет проблемы, способные ускользнуть от локального ревью.

224 224 

225<h2 id="related-resources">225<h2 id="related-resources">

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

Details

146 146 

147<Steps>147<Steps>

148 <Step title="Выберите репозиторий и ветку">148 <Step title="Выберите репозиторий и ветку">

149 На [claude.ai/code](https://claude.ai/code) или на вкладке Code в мобильном приложении Claude нажмите селектор репозитория под полем ввода и выберите репозиторий для работы Claude. Каждый репозиторий показывает селектор ветки. Измените его, чтобы запустить Claude с ветки функции вместо ветки по умолчанию. Вы можете добавить несколько репозиториев для работы с ними в одной сессии.149 На [claude.ai/code](https://claude.ai/code) или на вкладке Code в мобильном приложении Claude нажмите селектор репозитория под полем ввода и выберите репозиторий для работы Claude. Вы можете добавить несколько репозиториев для работы с ними в одной сессии.

150 

151 На claude.ai/code, чтобы запустить Claude с ветки функции вместо ветки по умолчанию, измените ветку в элементе управления после селектора репозитория.

150 </Step>152 </Step>

151 153 

152 <Step title="Выберите режим разрешений">154 <Step title="Выберите режим разрешений">

workflows.md +3 −3

Details

99| :- | :- |99| :- | :- |

100| `↑` / `↓` | Выбрать фазу или агента |100| `↑` / `↓` | Выбрать фазу или агента |

101| `Enter` или `→` | Углубиться в выбранную фазу, затем в агента. В деталях нажмите `Enter` для расширения или сворачивания |101| `Enter` или `→` | Углубиться в выбранную фазу, затем в агента. В деталях нажмите `Enter` для расширения или сворачивания |

102| `Esc` или `←` | Вернуться на один уровень назад. В версиях v2.1.203 по v2.1.205 `←` не позволял вернуться из фазы или агента; используйте `Esc` на этих версиях |102| `Esc` или `←` | Вернуться на один уровень назад |

103| `j` / `k` | Прокручивать в деталях агента, когда это переполняется |103| `j` / `k` | Прокручивать в деталях агента, когда это переполняется |

104| `f` | Фильтровать список агентов в выбранной фазе по статусу. Нажмите снова для циклирования |104| `f` | Фильтровать список агентов в выбранной фазе по статусу. Нажмите снова для циклирования |

105| `p` | Приостановить или возобновить запуск |105| `p` | Приостановить или возобновить запуск |


167/effort ultracode167/effort ultracode

168```168```

169 169 

170Чтобы начать сессию с уже включённым ultracode, запустите с `claude --effort ultracode`, что также устанавливает уровень усилий на `xhigh`. Требуется Claude Code версии 2.1.203 или позже.170Чтобы начать сессию с уже включённым ultracode, запустите `claude --effort ultracode` — это также устанавливает уровень effort `xhigh`.

171 171 

172Чтобы включить его с помощью ползунка `/effort`, нажмите `Tab` для переключения переключателя **Ultracode**, затем `Enter` для применения. Раздел [Регулировка уровня усилий](/docs/ru/model-config#adjust-effort-level) перечисляет маршруты, которые включают ultracode.172Чтобы включить его с помощью ползунка `/effort`, нажмите `Tab` для переключения переключателя **Ultracode**, затем `Enter` для применения. Раздел [Регулировка уровня усилий](/docs/ru/model-config#adjust-effort-level) перечисляет маршруты, которые включают ultracode.

173 173 


527 Установить рекомендацию по размеру527 Установить рекомендацию по размеру

528</h3>528</h3>

529 529 

530Рекомендация по размеру говорит Claude, на сколько агентов нужно нацеливаться при написании динамического workflow. Claude Code отправляет рекомендацию Claude в качестве совета, а не ограничения, поэтому подсказка, которая требует другого масштаба, по-прежнему переопределяет её. Требуется Claude Code v2.1.202 или позже.530Рекомендация по размеру говорит Claude, на сколько агентов нужно нацеливаться при написании динамического workflow. Claude Code отправляет рекомендацию Claude в качестве совета, а не ограничения, поэтому промпт, который требует другого масштаба, по-прежнему переопределяет её.

531 531 

532Каждое значение соответствует количеству агентов:532Каждое значение соответствует количеству агентов:

533 533