SpyBara
Go Premium

Documentation 2026-10-24 22:59 UTC to 2026-10-25 23:58 UTC

58 files changed +699 −203. 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

324 * Вызов был одноразовым, поэтому более ранний результат не существует.324 * Вызов был одноразовым, поэтому более ранний результат не существует.

325 * Сбой произошел на первом ходу.325 * Сбой произошел на первом ходу.

326 * Ход перед сбоем был самим `/clear`, поэтому его результат охватывает только сброс.326 * Ход перед сбоем был самим `/clear`, поэтому его результат охватывает только сброс.

3272. Вместо этого суммируйте `usage` в сообщениях ассистента, считая каждый ответ API один раз, как это делает пример [Track per-step usage](#track-per-step-usage). В режиме одноразового ввода суммируйте все из них; в режиме потокового ввода суммируйте те, которые пришли после последнего результата. Это дает вам входные токены и токены кеша основного цикла. Использование подагента не восстанавливается таким образом, и выходные токены или стоимость в USD тоже, потому что [выходные токены на шаг — это заполнитель](#read-output-tokens-from-the-result-message).3272. Вместо этого суммируйте `usage` в сообщениях ассистента, считая каждый ответ API один раз, как это делает пример [Отслеживание использования на каждом шаге](#track-per-step-usage). В режиме одноразового ввода суммируйте все из них; в режиме потокового ввода суммируйте те, которые пришли после последнего результата. Это дает вам входные токены и токены кеша основного цикла. Использование подагента таким образом не восстанавливается, как и выходные токены и стоимость в USD, потому что [`output_tokens` на каждом шаге — это заполнитель](#read-output-tokens-from-the-result-message).

328 328 

329### Отслеживание токенов кеша329### Отслеживание токенов кеша

330 330 

Details

771 771 

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

773 773 

774* `PreToolUse`: Claude Code блокирует вызов инструмента. Вместо него Claude получает результат инструмента, указывающий, что хук не ответил до истечения таймаута, и ход продолжается. До версии 2.1.210 Claude Code сообщал Claude о таймауте как об отклонении пользователем, из-за чего автоматические сессии останавливались и ждали ввода.774* `PreToolUse`: Claude Code блокирует вызов инструмента. Если все остальные хуки ничего не вернули или вернули только решение `allow`, результат инструмента сообщает Claude, что хук не ответил до истечения таймаута, и ход продолжается. Если другой ваш хук уже отклонил вызов, его отказ все равно доходит до Claude: результат инструмента содержит причину, указанную этим хуком, а за ней может следовать текст о таймауте.

775 

776 До версии 2.1.210 Claude Code сообщал Claude о таймауте как об отклонении пользователем, из-за чего автоматические сессии останавливались и ждали ввода.

775* `PostToolUse` и `PostToolUseFailure`: Claude Code сохраняет результат инструмента, и ход продолжается.777* `PostToolUse` и `PostToolUseFailure`: Claude Code сохраняет результат инструмента, и ход продолжается.

776* `UserPromptSubmit` и [`UserPromptExpansion`](https://code.claude.com/docs/ru/hooks#userpromptexpansion): Claude Code блокирует промпт с сообщением, указывающим хук и таймаут, и сессия продолжается. До версии 2.1.208 Claude Code завершал запрос с `error_during_execution`, когда у callback на этих событиях истекал таймаут.778* `UserPromptSubmit` и [`UserPromptExpansion`](https://code.claude.com/docs/ru/hooks#userpromptexpansion): Claude Code блокирует промпт с сообщением, указывающим хук и таймаут, и сессия продолжается. До версии 2.1.208 Claude Code завершал запрос с `error_during_execution`, когда у callback на этих событиях истекал таймаут.

777* `Stop` и `SubagentStop`: callback с истекшим таймаутом считается не вернувшим решения. Агент или субагент останавливается так, как если бы этот callback это разрешил, а решение ваших других хуков на этом событии по-прежнему применяется. До Claude Code версии 2.1.273 callback `Stop` или `SubagentStop` с истекшим таймаутом считался неудачным запуском хука, и Claude Code отбрасывал решения ваших других хуков на этом событии.779* `Stop` и `SubagentStop`: callback с истекшим таймаутом считается не вернувшим решения. Агент или субагент останавливается так, как если бы этот callback это разрешил, а решение ваших других хуков на этом событии по-прежнему применяется. До Claude Code версии 2.1.273 callback `Stop` или `SubagentStop` с истекшим таймаутом считался неудачным запуском хука, и Claude Code отбрасывал решения ваших других хуков на этом событии.

Details

49 49 

50**6. canUseTool callback**50**6. canUseTool callback**

51 51 

52Если ни один из вышеперечисленных шагов не разрешил вызов, вызовите ваш callback [`canUseTool`](https://code.claude.com/docs/ru/agent-sdk/user-input) для принятия решения. В режиме `dontAsk` этот шаг пропускается и инструмент отклоняется, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) все еще может одобрить [некоторые такие вызовы](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods).52Если ни один из вышеперечисленных шагов не определил исход вызова, вызовите ваш callback [`canUseTool`](https://code.claude.com/docs/ru/agent-sdk/user-input) для принятия решения. В режиме `dontAsk` этот шаг пропускается и инструмент отклоняется, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) все еще может одобрить [некоторые такие вызовы](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods).

53 53 

54В TypeScript SDK, если вы установите [`permissionPrompts: 'none'`](https://code.claude.com/docs/ru/agent-sdk/typescript#options), ваш callback не вызывается на этом шаге. Hook [`PermissionRequest`](https://code.claude.com/docs/ru/hooks#permissionrequest) все еще получает возможность принять решение, и если он этого не делает, Claude Code отклоняет вызов. Опция требует Claude Code v2.1.259 или позже.54В TypeScript SDK, если вы установите [`permissionPrompts: 'none'`](https://code.claude.com/docs/ru/agent-sdk/typescript#options), ваш callback не вызывается на этом шаге. Hook [`PermissionRequest`](https://code.claude.com/docs/ru/hooks#permissionrequest) все еще получает возможность принять решение, и если он этого не делает, Claude Code отклоняет вызов. Опция требует Claude Code v2.1.259 или позже.

55 55 


67Эта страница сосредоточена на **правилах allow и deny** и **режимах разрешений**. Для других шагов:67Эта страница сосредоточена на **правилах allow и deny** и **режимах разрешений**. Для других шагов:

68 68 

69* **Hooks:** запустите пользовательский код для разрешения, отклонения или изменения запросов инструментов. См. [Control execution with hooks](https://code.claude.com/docs/ru/agent-sdk/hooks.md).69* **Hooks:** запустите пользовательский код для разрешения, отклонения или изменения запросов инструментов. См. [Control execution with hooks](https://code.claude.com/docs/ru/agent-sdk/hooks.md).

70* **canUseTool callback:** запросите у пользователей одобрение во время выполнения, когда ни один более ранний шаг не разрешит вызов. См. [Handle approvals and user input](https://code.claude.com/docs/ru/agent-sdk/user-input.md).70* **canUseTool callback:** запросите у пользователей одобрение во время выполнения, когда ни один более ранний шаг не определит исход вызова. См. [Обработка одобрений и пользовательского ввода](https://code.claude.com/docs/ru/agent-sdk/user-input.md).

71 71 

72## Правила разрешения и запрета72## Правила разрешения и запрета

73 73 


117 117 

118Режимы разрешений обеспечивают глобальный контроль над тем, как Claude использует инструменты. Вы можете установить режим разрешений при вызове `query()` или изменить его динамически во время сеансов потоковой передачи.118Режимы разрешений обеспечивают глобальный контроль над тем, как Claude использует инструменты. Вы можете установить режим разрешений при вызове `query()` или изменить его динамически во время сеансов потоковой передачи.

119 119 

120В Claude Code v2.1.302 или более поздней версии ваше приложение запускается в режиме `default`, если вы не установите режим разрешений или приложение не получит его из [`permissions.defaultMode`](https://code.claude.com/docs/ru/settings-reference#permissions-defaultmode) в своих файлах настроек. В режиме `default` Claude Code отклоняет любой вызов инструмента, требующий подтверждения, если вы не подтвердите его с помощью правила разрешения, хука, обратного вызова `canUseTool` или инструмента запроса разрешений. Если вызовы инструментов отклоняются, см. [Вызовы инструментов отклоняются в `claude -p` и запусках Agent SDK](https://code.claude.com/docs/ru/permission-modes#which-mode-a-non-interactive-run-starts-in).120В Claude Code v2.1.302 или более поздней версии ваше приложение запускается в режиме `default`, если вы не установите режим разрешений и приложение не получит его из [`permissions.defaultMode`](https://code.claude.com/docs/ru/settings-reference#permissions-defaultmode) в своих файлах настроек. В режиме `default` Claude Code отклоняет любой вызов инструмента, требующий подтверждения, если вы не подтвердите его с помощью правила разрешения, хука, обратного вызова `canUseTool` или инструмента запроса разрешений. Если вызовы инструментов отклоняются, см. [Вызовы инструментов отклоняются в `claude -p` и запусках Agent SDK](https://code.claude.com/docs/ru/permission-modes#which-mode-a-non-interactive-run-starts-in).

121 121 

122### Доступные режимы122### Доступные режимы

123 123 

Details

16pip install claude-agent-sdk16pip install claude-agent-sdk

17```17```

18 18 

19Для uv, Windows PowerShell и настройки API ключа см. [Начало работы в быстром старте Agent SDK](https://code.claude.com/docs/ru/agent-sdk/quickstart.md#setup).19Для uv, Windows PowerShell и настройки API-ключа см. раздел [Настройка в быстром старте Agent SDK](https://code.claude.com/docs/ru/agent-sdk/quickstart.md#setup).

20 20 

21## Выбор между `query()` и `ClaudeSDKClient`21## Выбор между `query()` и `ClaudeSDKClient`

22 22 


533| `interrupt()` | Отправьте сигнал прерывания (работает только в режиме потоковой передачи) |533| `interrupt()` | Отправьте сигнал прерывания (работает только в режиме потоковой передачи) |

534| `set_permission_mode(mode)` | Измените режим разрешений для текущего сеанса |534| `set_permission_mode(mode)` | Измените режим разрешений для текущего сеанса |

535| `set_model(model)` | Измените модель для текущей сессии. Передайте `None` для сброса на [модель по умолчанию Claude Code](https://code.claude.com/docs/ru/model-config.md). Сессия в режиме `auto` [переключается в режим `default`](https://code.claude.com/docs/ru/agent-sdk/permissions#auto-mode-auto), если новая модель не поддерживает авторежим |535| `set_model(model)` | Измените модель для текущей сессии. Передайте `None` для сброса на [модель по умолчанию Claude Code](https://code.claude.com/docs/ru/model-config.md). Сессия в режиме `auto` [переключается в режим `default`](https://code.claude.com/docs/ru/agent-sdk/permissions#auto-mode-auto), если новая модель не поддерживает авторежим |

536| `rewind_files(user_message_id)` | Восстановите файлы в их состояние в указанном пользовательском сообщении. Требует `enable_file_checkpointing=True`. См. [File checkpointing](https://code.claude.com/docs/ru/agent-sdk/file-checkpointing.md) |536| `rewind_files(user_message_id)` | Восстановите файлы в их состояние в указанном пользовательском сообщении. Требует `enable_file_checkpointing=True`. См. [Чекпоинты файлов](https://code.claude.com/docs/ru/agent-sdk/file-checkpointing.md) |

537| `get_mcp_status()` | Получите статус всех настроенных MCP servers. Возвращает [`McpStatusResponse`](#mcpstatusresponse) |537| `get_mcp_status()` | Получите статус всех настроенных MCP servers. Возвращает [`McpStatusResponse`](#mcpstatusresponse) |

538| `get_context_usage()` | Получите разбивку использования контекстного окна по категориям, скиллам и инструментам. Включает данные, которые `/context` показывает в интерактивной сессии. Возвращает [`ContextUsageResponse`](#contextusageresponse). Для вычисления разбивки Claude Code делает несколько запросов API подсчета токенов, которые не отображаются в потоке сообщений; см. [как эти запросы обрабатываются](#contextusageresponse) |538| `get_context_usage()` | Получите разбивку использования контекстного окна по категориям, скиллам и инструментам. Включает данные, которые `/context` показывает в интерактивной сессии. Возвращает [`ContextUsageResponse`](#contextusageresponse). Для вычисления разбивки Claude Code делает несколько запросов API подсчета токенов, которые не отображаются в потоке сообщений; см. [как эти запросы обрабатываются](#contextusageresponse) |

539| `reconnect_mcp_server(server_name)` | Повторите попытку подключения к MCP server, который не удался или был отключен |539| `reconnect_mcp_server(server_name)` | Повторите попытку подключения к MCP server, который не удался или был отключен |


872| Свойство | Тип | По умолчанию | Описание |872| Свойство | Тип | По умолчанию | Описание |

873| :- | :- | :- | :- |873| :- | :- | :- | :- |

874| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Конфигурация инструментов. Используйте `{"type": "preset", "preset": "claude_code"}` для инструментов Claude Code по умолчанию |874| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Конфигурация инструментов. Используйте `{"type": "preset", "preset": "claude_code"}` для инструментов Claude Code по умолчанию |

875| `allowed_tools` | `list[str]` | `[]` | Инструменты для автоматического одобрения без запроса разрешения, за исключением чтения по [сетевым путям](https://code.claude.com/docs/ru/permissions.md#network-paths). Это не ограничивает Claude только этими инструментами. Если вы укажете здесь один из [инструментов отслеживания задач](https://code.claude.com/docs/ru/agent-sdk/todo-tracking.md#model-availability), Claude Code также включает его для сессии. Остальные неуказанные инструменты передаются на обработку `permission_mode` и `can_use_tool`. Используйте `disallowed_tools` для блокировки инструментов. См. [Разрешения](https://code.claude.com/docs/ru/agent-sdk/permissions.md#allow-and-deny-rules) |875| `allowed_tools` | `list[str]` | `[]` | Инструменты для автоматического одобрения без запроса разрешения, за исключением чтения по [сетевым путям](https://code.claude.com/docs/ru/permissions.md#network-paths). Это не ограничивает Claude только этими инструментами. Если вы укажете здесь один из [инструментов отслеживания задач](https://code.claude.com/docs/ru/agent-sdk/todo-tracking.md#model-availability), Claude Code также включает их для сессии. Остальные неуказанные инструменты передаются на обработку `permission_mode` и `can_use_tool`. Используйте `disallowed_tools` для блокировки инструментов. См. [Разрешения](https://code.claude.com/docs/ru/agent-sdk/permissions.md#allow-and-deny-rules) |

876| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptCustom \| SystemPromptFile \| None` | `None` | Конфигурация системного промпта. Передайте строку для пользовательского промпта, `{"type": "preset", "preset": "claude_code"}` для системного промпта Claude Code с необязательным `"append"`, `{"type": "custom", "prompt": "..."}` для пользовательского промпта, который также может задать `"snapshot"`, или `{"type": "file", "path": "..."}` для загрузки большого промпта с диска. См. [`SystemPromptPreset`](#systempromptpreset), [`SystemPromptCustom`](#systempromptcustom) и [`SystemPromptFile`](#systempromptfile) |876| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptCustom \| SystemPromptFile \| None` | `None` | Конфигурация системного промпта. Передайте строку для пользовательского промпта, `{"type": "preset", "preset": "claude_code"}` для системного промпта Claude Code с необязательным `"append"`, `{"type": "custom", "prompt": "..."}` для пользовательского промпта, который также может задать `"snapshot"`, или `{"type": "file", "path": "..."}` для загрузки большого промпта с диска. См. [`SystemPromptPreset`](#systempromptpreset), [`SystemPromptCustom`](#systempromptcustom) и [`SystemPromptFile`](#systempromptfile) |

877| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Конфигурации MCP-серверов или путь к файлу конфигурации |877| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Конфигурации MCP-серверов или путь к файлу конфигурации |

878| `strict_mcp_config` | `bool` | `False` | Когда `True`, используются только серверы, переданные в `mcp_servers`, а `.mcp.json` проекта, пользовательские настройки, MCP-серверы, предоставленные плагинами, и [коннекторы claude.ai](https://code.claude.com/docs/ru/mcp.md#use-mcp-servers-from-claude-ai) игнорируются. Соответствует флагу CLI `--strict-mcp-config` |878| `strict_mcp_config` | `bool` | `False` | Когда `True`, используются только серверы, переданные в `mcp_servers`, а `.mcp.json` проекта, пользовательские настройки, MCP-серверы, предоставленные плагинами, и [коннекторы claude.ai](https://code.claude.com/docs/ru/mcp.md#use-mcp-servers-from-claude-ai) игнорируются. Соответствует флагу CLI `--strict-mcp-config` |


3748 3748 

3749## См. также3749## См. также

3750 3750 

3751* [SDK overview](https://code.claude.com/docs/ru/agent-sdk/overview.md) - Общие концепции SDK3751* [Обзор SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md) - Общие концепции SDK

3752* [TypeScript SDK reference](https://code.claude.com/docs/ru/agent-sdk/typescript.md) - Документация TypeScript SDK3752* [Справочник TypeScript SDK](https://code.claude.com/docs/ru/agent-sdk/typescript.md) - Документация TypeScript SDK

3753* [Custom tools](https://code.claude.com/docs/ru/agent-sdk/custom-tools.md) - Определение встроенных инструментов MCP для вызова Claude3753* [Пользовательские инструменты](https://code.claude.com/docs/ru/agent-sdk/custom-tools.md) - Определение внутрипроцессных инструментов MCP, которые может вызывать Claude

3754* [CLI reference](https://code.claude.com/docs/ru/cli-reference.md) - Интерфейс командной строки3754* [Справочник CLI](https://code.claude.com/docs/ru/cli-reference.md) - Интерфейс командной строки

3755* [Common workflows](https://code.claude.com/docs/ru/common-workflows.md) - Пошаговые руководства3755* [Общие рабочие процессы](https://code.claude.com/docs/ru/common-workflows.md) - Пошаговые руководства

Details

309| `options.dir` | `string` | `undefined` | Каталог проекта, в котором искать сессию. Если опущено, ищет во всех проектах |309| `options.dir` | `string` | `undefined` | Каталог проекта, в котором искать сессию. Если опущено, ищет во всех проектах |

310| `options.limit` | `number` | `undefined` | Максимальное количество возвращаемых сообщений |310| `options.limit` | `number` | `undefined` | Максимальное количество возвращаемых сообщений |

311| `options.offset` | `number` | `undefined` | Количество сообщений, пропускаемых с начала |311| `options.offset` | `number` | `undefined` | Количество сообщений, пропускаемых с начала |

312| `options.includeSystemMessages` | `boolean` | `false` | Когда `true`, вместе с сообщениями пользователя и ассистента также возвращаются системные сообщения, например границы сжатия |

312 313 

313#### Тип возврата: `SessionMessage`314#### Тип возврата: `SessionMessage`

314 315 

315| Свойство | Тип | Описание |316| Свойство | Тип | Описание |

316| :- | :- | :- |317| :- | :- | :- |

317| `type` | `"user" \| "assistant"` | Роль сообщения |318| `type` | `"user" \| "assistant" \| "system"` | Роль сообщения. `"system"` появляется только когда `options.includeSystemMessages` равно `true` |

318| `uuid` | `string` | Уникальный идентификатор сообщения |319| `uuid` | `string` | Уникальный идентификатор сообщения |

319| `session_id` | `string` | Сессия, к которой принадлежит это сообщение |320| `session_id` | `string` | Сессия, к которой принадлежит это сообщение |

320| `message` | `unknown` | Необработанные данные сообщения из транскрипта |321| `message` | `unknown` | Необработанные данные сообщения из транскрипта |


632 }): Promise<SDKControlReloadPluginsResponse>;633 }): Promise<SDKControlReloadPluginsResponse>;

633 reloadSkills(): Promise<SDKControlReloadSkillsResponse>;634 reloadSkills(): Promise<SDKControlReloadSkillsResponse>;

634 reloadOutputStyles(): Promise<SDKControlReloadOutputStylesResponse>;635 reloadOutputStyles(): Promise<SDKControlReloadOutputStylesResponse>;

636 seedReadState(path: string, mtime: number): Promise<void>;

635 accountInfo(): Promise<AccountInfo>;637 accountInfo(): Promise<AccountInfo>;

636 reconnectMcpServer(serverName: string): Promise<void>;638 reconnectMcpServer(serverName: string): Promise<void>;

637 toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;639 toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;

638 setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;640 setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;

641 setMcpPermissionModeOverride(

642 serverName: string,

643 mode: 'default' | 'auto' | null

644 ): Promise<{ warning?: string }>;

639 readMcpResource(serverName: string, uri: string): Promise<SDKControlMcpReadResourceResponse>;645 readMcpResource(serverName: string, uri: string): Promise<SDKControlMcpReadResourceResponse>;

640 streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;646 streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;

641 stopTask(taskId: string): Promise<void>;647 stopTask(taskId: string): Promise<void>;

648 backgroundTasks(toolUseId?: string): Promise<boolean>;

642 close(): void;649 close(): void;

643}650}

644```651```


665| `reloadPlugins(options?)` | Перезагружает плагины с диска, чтобы плагины, которые вы устанавливаете или редактируете в ходе сессии, стали доступны работающей сессии. Разрешается значением [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse) со списком команд, субагентов, плагинов и статусов MCP-серверов сессии. Требуется Agent SDK v0.2.85 или новее. [Параметр `holdOnCacheImpact`](#sdkcontrolreloadpluginsresponse) требует Agent SDK v0.3.268 или новее |672| `reloadPlugins(options?)` | Перезагружает плагины с диска, чтобы плагины, которые вы устанавливаете или редактируете в ходе сессии, стали доступны работающей сессии. Разрешается значением [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse) со списком команд, субагентов, плагинов и статусов MCP-серверов сессии. Требуется Agent SDK v0.2.85 или новее. [Параметр `holdOnCacheImpact`](#sdkcontrolreloadpluginsresponse) требует Agent SDK v0.3.268 или новее |

666| `reloadSkills()` | Перезагружает скиллы с диска, чтобы скиллы, которые вы добавляете или редактируете в ходе сессии, стали доступны работающей сессии. Разрешается значением [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) со списком скиллов, доступных после перезагрузки. Требуется Agent SDK v0.3.163 или новее |673| `reloadSkills()` | Перезагружает скиллы с диска, чтобы скиллы, которые вы добавляете или редактируете в ходе сессии, стали доступны работающей сессии. Разрешается значением [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) со списком скиллов, доступных после перезагрузки. Требуется Agent SDK v0.3.163 или новее |

667| `reloadOutputStyles()` | Повторно читает [стили вывода](https://code.claude.com/docs/ru/output-styles.md) с диска, чтобы файл стиля, который вы добавляете или редактируете в ходе сессии, стал доступен работающей сессии. Разрешается значением [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse) со списком имён стилей, доступных после перезагрузки. Требуется Agent SDK v0.3.261 или новее |674| `reloadOutputStyles()` | Повторно читает [стили вывода](https://code.claude.com/docs/ru/output-styles.md) с диска, чтобы файл стиля, который вы добавляете или редактируете в ходе сессии, стал доступен работающей сессии. Разрешается значением [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse) со списком имён стилей, доступных после перезагрузки. Требуется Agent SDK v0.3.261 или новее |

675| `seedReadState(path, mtime)` | Помечает файл как уже прочитанный, чтобы последующий Edit не завершился ошибкой `File has not been read yet`. См. [`seedReadState()`](#seedreadstate). Требуется TypeScript SDK v0.2.83 или новее |

668| `accountInfo()` | Возвращает информацию об аккаунте |676| `accountInfo()` | Возвращает информацию об аккаунте |

669| `reconnectMcpServer(serverName)` | Переподключает MCP-сервер по имени. Если имя также совпадает с записью в файле настроек, например `.mcp.json` или `~/.claude.json`, Claude Code переподключает сервер, который вы настроили через [`mcpServers`](#options) или `setMcpServers()`, а не запись из файла настроек. Такой порядок разрешения имён требует Claude Code v2.1.257 или новее |677| `reconnectMcpServer(serverName)` | Переподключает MCP-сервер по имени. Если имя также совпадает с записью в файле настроек, например `.mcp.json` или `~/.claude.json`, Claude Code переподключает сервер, который вы настроили через [`mcpServers`](#options) или `setMcpServers()`, а не запись из файла настроек. Такой порядок разрешения имён требует Claude Code v2.1.257 или новее |

670| `toggleMcpServer(serverName, enabled)` | Включает или отключает MCP-сервер по имени с тем же порядком разрешения имён, что и `reconnectMcpServer()`. Отключение сервера разрывает соединение с ним и удаляет его инструменты. О версии Claude Code, необходимой для каждого типа сервера, см. [`toggleMcpServer()`](#togglemcpserver) |678| `toggleMcpServer(serverName, enabled)` | Включает или отключает MCP-сервер по имени с тем же порядком разрешения имён, что и `reconnectMcpServer()`. Отключение сервера разрывает соединение с ним и удаляет его инструменты. О версии Claude Code, необходимой для каждого типа сервера, см. [`toggleMcpServer()`](#togglemcpserver) |

671| `setMcpServers(servers)` | Заменяет MCP-серверы, которыми управляет этот метод: серверы, добавленные через него, и [внутрипроцессные SDK-серверы](#createsdkmcpserver). Разрешается значением [`McpSetServersResult`](#mcpsetserversresult), в котором указано, какие серверы были добавлены и удалены, а также ошибки; в этом разделе также сказано, какие другие серверы остаются подключёнными |679| `setMcpServers(servers)` | Заменяет MCP-серверы, которыми управляет этот метод: серверы, добавленные через него, и [внутрипроцессные SDK-серверы](#createsdkmcpserver). Разрешается значением [`McpSetServersResult`](#mcpsetserversresult), в котором указано, какие серверы были добавлены и удалены, а также ошибки; в этом разделе также сказано, какие другие серверы остаются подключёнными |

680| `setMcpPermissionModeOverride(serverName, mode)` | Переопределяет режим разрешений для инструментов одного MCP-сервера более строгим режимом, чем у сессии, или очищает переопределение значением `null`. Доступен только в режиме потокового ввода. См. [`setMcpPermissionModeOverride()`](#setmcppermissionmodeoverride). Требуется TypeScript SDK v0.3.187 или новее |

672| `readMcpResource(serverName, uri)` | *Альфа.* Читает один ресурс MCP Apps `ui://` с подключённого MCP-сервера, чтобы ваше приложение могло отобразить виджет инструмента. Разрешается значением [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Требуется TypeScript Agent SDK v0.3.280 или новее |681| `readMcpResource(serverName, uri)` | *Альфа.* Читает один ресурс MCP Apps `ui://` с подключённого MCP-сервера, чтобы ваше приложение могло отобразить виджет инструмента. Разрешается значением [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Требуется TypeScript Agent SDK v0.3.280 или новее |

673| `streamInput(stream)` | Передаёт входные сообщения в запрос потоком для многоходовых диалогов |682| `streamInput(stream)` | Передаёт входные сообщения в запрос потоком для многоходовых диалогов |

674| `stopTask(taskId)` | Останавливает выполняющуюся фоновую задачу по ID |683| `stopTask(taskId)` | Останавливает выполняющуюся фоновую задачу по ID |

684| `backgroundTasks(toolUseId?)` | Переводит в фон работающие команды Bash и субагентов, которых ожидает ход, так же как нажатие Ctrl+B в интерактивном терминале. См. [`backgroundTasks()`](#backgroundtasks). Требуется TypeScript SDK v0.2.139 или новее |

675| `close()` | Закрывает запрос и завершает базовый процесс. Принудительно завершает запрос и освобождает все ресурсы |685| `close()` | Закрывает запрос и завершает базовый процесс. Принудительно завершает запрос и освобождает все ресурсы |

676 686 

687#### `setMcpPermissionModeOverride()`

688 

689Переопределяет режим разрешений для инструментов одного MCP-сервера более строгим режимом, чем у сессии, или очищает переопределение значением `null`. Используйте, когда сессия работает в режиме, пропускающем запросы для каждого действия, но инструменты одного сервера всё же должны проверяться. Требуется TypeScript SDK v0.3.187 или новее.

690 

691Передайте в качестве `mode` одно из трёх значений:

692 

693* `'default'`: Claude Code оценивает вызовы инструментов этого сервера так же, как в [ручном режиме](https://code.claude.com/docs/ru/permission-modes.md#available-modes).

694* `'auto'`: Claude Code направляет вызовы инструментов этого сервера через классификатор [авторежима](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode). Claude Code отклоняет это значение, если классификатор недоступен для сессии.

695* `null`: очищает переопределение.

696 

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

698 

699Промис разрешается значением `{ warning }`, если сервер с таким именем пока неизвестен. Claude Code всё равно сохраняет переопределение и применяет его, как только подключится сервер с точно таким же именем, поэтому предупреждение служит проверкой на опечатки, а не признаком сбоя.

700 

701Доступен только в режиме потокового ввода — то же ограничение, что и у `setModel()` и `setPermissionMode()`.

702 

703#### `seedReadState()`

704 

705Помечает файл как уже прочитанный, чтобы последующий Edit не завершился ошибкой `File has not been read yet`. Используйте, когда ваше приложение удалило из контекста диалога более ранний результат `Read`, а Claude следующим шагом будет редактировать этот файл. Требуется TypeScript SDK v0.2.83 или новее.

706 

707Передайте в `mtime` время изменения файла на момент того более раннего чтения в целых миллисекундах с начала эпохи, например `Math.floor(stat.mtimeMs)`. Если файл на диске изменился после этого времени, Claude Code пропускает пометку.

708 

709Промис разрешается независимо от того, был ли файл помечен, поэтому разрешённый промис не сообщает, что именно произошло.

710 

711#### `backgroundTasks()`

712 

713Переводит в фон работающие команды Bash и субагентов, которых ожидает ход, так же как нажатие Ctrl+B в интерактивном терминале. Передайте `toolUseId` вызова инструмента, чтобы перевести в фон только команду Bash или субагента, запущенных этим вызовом, или опустите его, чтобы перевести в фон все задачи переднего плана. Требуется TypeScript SDK v0.2.139 или новее.

714 

715Каждый переведённый в фон вызов инструмента сразу возвращается к Claude с результатом о выполнении в фоне, ход продолжается, а Claude Code отправляет [`SDKTaskNotificationMessage`](#sdktasknotificationmessage), когда задача завершится.

716 

717В сессии, где фоновые задачи включены, промис разрешается логическим значением:

718 

719* **`true`**: задача была переведена в фон или вы не указали `toolUseId`.

720* **`false`**: переданный вами `toolUseId` не соответствует ни одной задаче переднего плана.

721 

722Если фоновые задачи отключены для сессии, например с помощью [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/ru/env-vars), промис вместо этого отклоняется и ничего не переводится в фон.

723 

677#### `applyFlagSettings()`724#### `applyFlagSettings()`

678 725 

679Изменяет [настройки](https://code.claude.com/docs/ru/settings.md) работающей сессии без перезапуска запроса. Используйте этот метод, когда в ходе сессии нужно изменить настройку, для которой нет отдельного сеттера, например ужесточить `permissions` после того, как агент прочитал недоверенные входные данные. `setModel()` и `setPermissionMode()` — это отдельные сеттеры для этих двух ключей; `applyFlagSettings()` — общая форма, принимающая любое подмножество ключей настроек, и передача `model` здесь работает так же, как `setModel()`.726Изменяет [настройки](https://code.claude.com/docs/ru/settings.md) работающей сессии без перезапуска запроса. Используйте этот метод, когда в ходе сессии нужно изменить настройку, для которой нет отдельного сеттера, например ужесточить `permissions` после того, как агент прочитал недоверенные входные данные. `setModel()` и `setPermissionMode()` — это отдельные сеттеры для этих двух ключей; `applyFlagSettings()` — общая форма, принимающая любое подмножество ключей настроек, и передача `model` здесь работает так же, как `setModel()`.


1472 | SDKPermissionDeniedMessage1519 | SDKPermissionDeniedMessage

1473 | SDKPromptSuggestionMessage1520 | SDKPromptSuggestionMessage

1474 | SDKAPIRetryMessage1521 | SDKAPIRetryMessage

1522 | SDKControlRequestProgressMessage

1523 | SDKModelRefusalFallbackMessage

1524 | SDKModelRefusalNoFallbackMessage

1475 | SDKMirrorErrorMessage1525 | SDKMirrorErrorMessage

1476 | SDKInformationalMessage1526 | SDKInformationalMessage

1477 | SDKConversationResetMessage;1527 | SDKConversationResetMessage;

1478```1528```

1479 1529 

1530Три сообщения в этом объединении сообщают о ходе управляющих запросов и об отказах модели. У каждого из них `type: "system"`, поэтому различайте их по `subtype`, указанному для каждого:

1531 

1532* `SDKControlRequestProgressMessage`, `subtype: "control_request_progress"`: сообщает о ходе выполнения длительного управляющего запроса, отправленного вашим клиентом. `request_id` связывает сообщение с этим запросом, а `status` равен `"started"` или `"api_retry"`. Требуется Agent SDK v0.3.203 или новее.

1533* `SDKModelRefusalFallbackMessage`, `subtype: "model_refusal_fallback"`: отправляется, когда модель завершает поток отказом и ход повторяется на резервной модели. Содержит `original_model` и `fallback_model`. Требуется Agent SDK v0.3.170 или новее.

1534* `SDKModelRefusalNoFallbackMessage`, `subtype: "model_refusal_no_fallback"`: отправляется, когда модель завершает поток отказом и повторная попытка не выполняется, например потому что резервная модель не настроена. Содержит `original_model`. Требуется Agent SDK v0.3.193 или новее.

1535 

1480### `SDKAssistantMessage`1536### `SDKAssistantMessage`

1481 1537 

1482Сообщение ответа ассистента.1538Сообщение ответа ассистента.


1636 stop_reason: string | null;1692 stop_reason: string | null;

1637 ttft_ms?: number;1693 ttft_ms?: number;

1638 ttft_stream_ms?: number;1694 ttft_stream_ms?: number;

1695 time_to_request_ms?: number;

1639 user_message_uuid?: string;1696 user_message_uuid?: string;

1640 user_message_uuids?: string[];1697 user_message_uuids?: string[];

1641 resume_reason?: string;1698 resume_reason?: string;


1701* `api_error_status`: код состояния HTTP ошибки API, которая завершила диалог. Отсутствует или равен `null`, когда ход завершился без ошибки API.1758* `api_error_status`: код состояния HTTP ошибки API, которая завершила диалог. Отсутствует или равен `null`, когда ход завершился без ошибки API.

1702* `ttft_ms`: время до первого токена в миллисекундах, измеренное при поступлении первого полного сообщения ассистента. Присутствует только в ветви успеха.1759* `ttft_ms`: время до первого токена в миллисекундах, измеренное при поступлении первого полного сообщения ассистента. Присутствует только в ветви успеха.

1703* `ttft_stream_ms`: время в миллисекундах до первого события потока `message_start`, когда открывается поток ответа. Меньше, чем `ttft_ms`; разница между ними — это время, потраченное на потоковую передачу первого сообщения. Присутствует только в ветви успеха.1760* `ttft_stream_ms`: время в миллисекундах до первого события потока `message_start`, когда открывается поток ответа. Меньше, чем `ttft_ms`; разница между ними — это время, потраченное на потоковую передачу первого сообщения. Присутствует только в ветви успеха.

1761* `time_to_request_ms`: время в миллисекундах от начала хода до отправки Claude Code запроса к API. Присутствует только в варианте успеха. Требуется Claude Code v2.1.162 или новее.

1704* `user_message_uuid`: `uuid` отправленного вами сообщения, на которое ответил этот ход. См. [`user_message_uuid`](#user_message_uuid), чтобы узнать, какие результаты его содержат.1762* `user_message_uuid`: `uuid` отправленного вами сообщения, на которое ответил этот ход. См. [`user_message_uuid`](#user_message_uuid), чтобы узнать, какие результаты его содержат.

1705* `user_message_uuids`: `uuid` каждого отправленного вами сообщения, на которое Claude Code ответил в этом ходе. См. [`user_message_uuids`](#user_message_uuids).1763* `user_message_uuids`: `uuid` каждого отправленного вами сообщения, на которое Claude Code ответил в этом ходе. См. [`user_message_uuids`](#user_message_uuids).

1706* `resume_reason`: причина, по которой этот ход продолжает ход, прерванный перезапуском. Присутствует в обеих ветвях. См. [`resume_reason`](#resume_reason).1764* `resume_reason`: причина, по которой этот ход продолжает ход, прерванный перезапуском. Присутствует в обеих ветвях. См. [`resume_reason`](#resume_reason).


1772* Ходы, которые не отвечают ни на одно ваше сообщение или отвечают на сообщение, отправленное вами без `uuid`1830* Ходы, которые не отвечают ни на одно ваше сообщение или отвечают на сообщение, отправленное вами без `uuid`

1773* Результаты, которые не отвечают ни на одно ваше сообщение, например обнулённый результат после сбоя рабочего процесса1831* Результаты, которые не отвечают ни на одно ваше сообщение, например обнулённый результат после сбоя рабочего процесса

1774 1832 

1833Когда хук [`UserPromptSubmit`](https://code.claude.com/docs/ru/hooks#userpromptsubmit) блокирует сообщение, которое начинает собственный ход, или останавливает его с помощью `continue: false`, вы всё равно получаете результат для этого сообщения. Это успешный результат с `is_error: false` и `num_turns: 0`, его `result` — это [сообщение о блокировке](https://code.claude.com/docs/ru/hooks.md#what-a-blocked-prompt-leaves-behind) или [сообщение об остановке](https://code.claude.com/docs/ru/hooks.md#json-output), и он возвращает `uuid` сообщения по тем же правилам, что и любой другой результат. У результата нет `terminal_reason`, и ничто в нём, кроме текста `result`, не указывает, что ход завершил хук. Сообщение, которое хук блокирует во время выполнения другого хода, может не получить результата: см. [`user_message_uuids`](#user_message_uuids).

1834 

1775#### `user_message_uuids`1835#### `user_message_uuids`

1776 1836 

1777`uuid` каждого отправленного вами сообщения, на которое Claude Code ответил в этом ходе. Когда вы отправляете несколько сообщений почти одновременно, Claude Code может объединить их в один ход, и тогда `user_message_uuid` называет только последнее из них. Чтобы сопоставить ответ с любым из объединённых сообщений, ищите `uuid` этого сообщения в любом месте этого списка. Требует Agent SDK v0.3.259 или позже.1837`uuid` каждого отправленного вами сообщения, на которое Claude Code ответил в этом ходе. Когда вы отправляете несколько сообщений почти одновременно, Claude Code может объединить их в один ход, и тогда `user_message_uuid` называет только последнее из них. Чтобы сопоставить ответ с любым из объединённых сообщений, ищите `uuid` этого сообщения в любом месте этого списка. Требует Agent SDK v0.3.259 или позже.

1778 1838 

1779Claude Code устанавливает список вместе с `user_message_uuid` в каждом кадре ответа, который содержит это поле, и в результате. Полный набор кадров хода, которые возвращают `uuid` сообщения, на которое дан ответ, и требуемую для каждого версию см. в [`user_message_uuid`](#user_message_uuid). Список всегда содержит `user_message_uuid` и включает не более 64 записей.1839Claude Code устанавливает список вместе с `user_message_uuid` в каждом кадре ответа, который содержит это поле, и в результате. Полный набор кадров хода, которые возвращают `uuid` сообщения, на которое дан ответ, и требуемую для каждого версию см. в [`user_message_uuid`](#user_message_uuid). Список всегда содержит `user_message_uuid` и включает не более 64 записей.

1780 1840 

1781Когда Claude Code подхватывает обычное сообщение, отправленное вами во время выполнения хода, он добавляет `uuid` этого сообщения в список результата.1841Когда Claude Code подхватывает обычное сообщение, отправленное вами во время выполнения хода, он добавляет `uuid` этого сообщения в список результата. Когда хук [`UserPromptSubmit`](https://code.claude.com/docs/ru/hooks#userpromptsubmit) блокирует сообщение при подхвате, Claude Code вместо этого отбрасывает его: сообщение никогда не доходит до Claude и не сохраняется для последующего хода. Вы не получаете для него результата, и его `uuid` не появляется ни в одном списке результатов. Если хук может блокировать сообщения, задайте таймаут ожидания результата, который перечисляет сообщение, отправленное вами во время выполнения хода.

1842 

1843Это справедливо, когда вывод хука — только блокировка. Если вывод устанавливает `continue: false`, даже рядом с `decision: "block"`, или хук является промпт-хуком, который отвечает [`ok: false`](https://code.claude.com/docs/ru/hooks#response-schema) без `continueOnBlock: true`, Claude Code останавливает сообщение, а не отбрасывает его. Сообщение ждёт собственного хода, вы получаете для него результат, а его текст остаётся в диалоге, поэтому Claude видит его в следующем ходе.

1782 1844 

1783Если первый ответ или результат содержит `user_message_uuid` без списка, он получен от более ранней версии Claude Code, поэтому используйте одиночное поле.1845Если первый ответ или результат содержит `user_message_uuid` без списка, он получен от более ранней версии Claude Code, поэтому используйте одиночное поле.

1784 1846 


5916>5978>

5917> Команды, работающие с `dangerouslyDisableSandbox: true`, имеют полный доступ к системе. Убедитесь, что ваш обработчик `canUseTool` тщательно проверяет эти запросы.5979> Команды, работающие с `dangerouslyDisableSandbox: true`, имеют полный доступ к системе. Убедитесь, что ваш обработчик `canUseTool` тщательно проверяет эти запросы.

5918>5980>

5919> Если `permissionMode` установлен на `bypassPermissions` и `allowUnsandboxedCommands` включён, модель может автономно выполнять команды вне sandbox без запросов одобрения, кроме [действий, которые режим no не одобряет автоматически](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves). Эта комбинация фактически позволяет модели молча выходить из изоляции sandbox.5981> Если `permissionMode` установлен на `bypassPermissions` и `allowUnsandboxedCommands` включён, модель может автономно выполнять команды вне sandbox без запросов одобрения, кроме [действий, которые ни один режим не одобряет автоматически](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves). Эта комбинация фактически позволяет модели молча выходить из изоляции sandbox.

5920 5982 

5921## См. также5983## См. также

5922 5984 

Details

525 params: z.object({525 params: z.object({

526 request_id: z.string(), // пять строчных букв, включите дословно в ваш запрос526 request_id: z.string(), // пять строчных букв, включите дословно в ваш запрос

527 tool_name: z.string(), // например "Bash", "Write"527 tool_name: z.string(), // например "Bash", "Write"

528 description: z.string(), // резюме того, что делает этот вызов. Рассматривайте как ненадёжное.528 description: z.string(), // резюме этого вызова. Рассматривайте как ненадёжное.

529 input_preview: z.string(), // аргументы инструмента как текст в форме JSON. Рассматривайте как ненадёжное.529 input_preview: z.string(), // аргументы инструмента как текст в форме JSON. Рассматривайте как ненадёжное.

530 }),530 }),

531})531})


535 // тестирования трансляция SSE, показанная в полном примере ниже.535 // тестирования трансляция SSE, показанная в полном примере ниже.

536 send(536 send(

537 `Claude wants to run ${params.tool_name}: ${params.description}\n` +537 `Claude wants to run ${params.tool_name}: ${params.description}\n` +

538 // input_preview содержит фактические аргументы; отображайте его, когда у вас есть место:538 // input_preview содержит фактические аргументы; отображайте его, когда у вас

539 // для Bash описание может быть просто "Run shell command" без деталей команды539 // есть место: для Bash одно лишь описание может быть просто

540 // "Run shell command" без деталей команды

540 `${params.input_preview}\n\n` +541 `${params.input_preview}\n\n` +

541 // ID в инструкции — это то, что ваш входящий обработчик анализирует на шаге 3542 // ID в инструкции — это то, что ваш входящий обработчик анализирует на шаге 3

542 `Reply "yes ${params.request_id}" or "no ${params.request_id}"`,543 `Reply "yes ${params.request_id}" or "no ${params.request_id}"`,


581}582}

582```583```

583 584 

584Удалённый ответ, который не совпадает точно с ожидаемым форматом, не удаётся одним из двух способов, и в обоих случаях диалог локального терминала остаётся открытым:585Если удалённый ответ не даёт эффекта и диалог локального терминала остаётся открытым, проверьте следующие причины:

585 586 

586* **Другой формат**: регулярное выражение вашего входящего обработчика не совпадает, поэтому текст, такой как `approve it` или `yes` без ID, переходит как обычное сообщение Claude.587* **Неправильный формат**: регулярное выражение вашего входящего обработчика не совпадает, поэтому текст, такой как `approve it` или `yes` без ID, переходит как обычное сообщение Claude.

587* **Правильный формат, неправильный ID**: ваш сервер отправляет вердикт, но Claude Code не находит открытый запрос с этим ID и молча его отбрасывает.588* **Неправильный ID**: ваш сервер отправляет вердикт, но Claude Code не находит открытый запрос с этим ID и молча его отбрасывает.

589* **ID уже использовался более ранним запросом**: ваш сервер отправляет вердикт с ID из запроса, но у более раннего запроса в сессии был такой же ID. Как только ID повторяется, Claude Code отбрасывает любой вердикт канала с этим ID, чтобы ответ, предназначенный для одного запроса, не мог подтвердить другой. ID — это пять случайных букв, поэтому повтор встречается редко. Вместо этого ответьте в терминале.

588 590 

589### Полный пример591### Полный пример

590 592 

Details

90 90 

91### Сообщения, отправленные во время хода, не сохраняются в checkpoint91### Сообщения, отправленные во время хода, не сохраняются в checkpoint

92 92 

93В меню rewind сообщение, которое вы [ввели, пока Claude ещё работал](https://code.claude.com/docs/ru/interactive-mode.md#queue-messages-while-claude-works), может быть помечено как **No code restore**. Claude прочитал это сообщение до завершения своего хода. [Чекпоинты создаются для промптов, которые начинают ход](#how-checkpoints-work), поэтому у этого сообщения нет собственного чекпоинта. Правки, которые Claude внёс после его прочтения, относятся к промпту, с которого начался ход.93В меню rewind сообщение, которое вы [ввели, пока Claude ещё работал](https://code.claude.com/docs/ru/interactive-mode.md#queue-messages-while-claude-works), может быть помечено как **No code restore**. У помеченного сообщения нет собственного [чекпоинта](#how-checkpoints-work).

94 94 

95Вам не нужно ничего делать с самим сообщением. Чтобы отменить изменения файлов из этой части сессии, выберите промпт, который начал ход, и выберите **Restore code** или **Restore code and conversation**. Это откатит правки файлов, сделанные Claude за весь ход, включая те, что были сделаны до прихода вашего сообщения. При выборе помеченного сообщения по-прежнему доступен вариант **Restore conversation**, который откатывает диалог до этого сообщения и оставляет ваши файлы без изменений.95Чтобы отменить правки файлов, которые Claude внёс после этого сообщения, выберите промпт, с которого начался ход, и выберите **Restore code** или **Restore code and conversation**. Это откатит правки файлов, сделанные Claude за весь ход, включая те, что были сделаны до прихода вашего сообщения.

96 96 

97### Пути с символическими и жёсткими ссылками не восстанавливаются97### Пути с символическими и жёсткими ссылками не восстанавливаются

98 98 

Details

98 98 

99Предупреждения и процент берутся из заголовков `anthropic-ratelimit-unified-*`, которые шлюз добавляет к каждому успешному ответу `/v1/messages` для разработчика, у которого есть лимит. Заголовки всегда описывают лимит самого разработчика: шлюз удаляет заголовки ограничения частоты запросов поставщика upstream, которые описывают вашу общую квоту, и никогда их не пересылает.99Предупреждения и процент берутся из заголовков `anthropic-ratelimit-unified-*`, которые шлюз добавляет к каждому успешному ответу `/v1/messages` для разработчика, у которого есть лимит. Заголовки всегда описывают лимит самого разработчика: шлюз удаляет заголовки ограничения частоты запросов поставщика upstream, которые описывают вашу общую квоту, и никогда их не пересылает.

100 100 

101Расходы, которые видит разработчик, — это собственная [оценка](#how-requests-are-priced) шлюза, та же величина, по которой он применяет лимит, а не сумма из счёта вашего поставщика. Claude Code получает суммы в долларах отдельным запросом к шлюзу. Если вы устанавливаете `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` на машинах разработчиков, как предлагает раздел [Соответствие требованиям](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#compliance-posture), Claude Code пропускает этот запрос. При установленной переменной или с сервером шлюза старше v2.1.284 полоса и строка состояния показывают только процент.101Расходы, которые видит разработчик, — это собственная [оценка](#how-requests-are-priced) шлюза, та же величина, по которой он применяет лимит. Это не сумма из счёта вашего поставщика. Claude Code получает суммы в долларах отдельным запросом к шлюзу, который отправляется, даже если вы устанавливаете `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` на машинах разработчиков. До v2.1.295 Claude Code пропускал этот запрос при установленной переменной, и `/usage` и строка состояния показывали процент и дату сброса без сумм в долларах.

102 102 

103## Справочник Admin API103## Справочник Admin API

104 104 

Details

18 18 

19* **Браузер**: [claude.ai/code](https://claude.ai/code), также называется Claude Code в веб-интерфейсе19* **Браузер**: [claude.ai/code](https://claude.ai/code), также называется Claude Code в веб-интерфейсе

20* **Мобильное устройство**: вкладка **Code** в [приложении Claude](https://code.claude.com/docs/ru/mobile.md)20* **Мобильное устройство**: вкладка **Code** в [приложении Claude](https://code.claude.com/docs/ru/mobile.md)

21* **Настольное приложение**: выберите **Cloud** вместо **Local** при [запуске сессии](https://code.claude.com/docs/ru/desktop.md#run-long-running-tasks-in-the-cloud)21* **Настольное приложение**: выберите окружение в разделе **Cloud** в селекторе окружений при [запуске сессии](https://code.claude.com/docs/ru/desktop.md#run-long-running-tasks-in-the-cloud)

22* **Терминал**: [`claude --cloud`](#from-terminal-to-cloud)22* **Терминал**: [`claude --cloud`](#from-terminal-to-cloud)

23* **Облачные запланированные задачи**: [запланированные и активируемые запуски](https://code.claude.com/docs/ru/routines.md) — каждый запуск выполняется как облачная сессия23* **Облачные запланированные задачи**: [запланированные и активируемые запуски](https://code.claude.com/docs/ru/routines.md) — каждый запуск выполняется как облачная сессия

24 24 


247 247 

248### Просмотр изменений248### Просмотр изменений

249 249 

250Каждая сессия показывает индикатор diff с добавленными и удалёнными строками, например `+42 -18`. Выберите его, чтобы открыть представление diff, оставить встроенные комментарии к определённым строкам и отправить их Claude со следующим сообщением.250После того как Claude отправит свои изменения в ветку, карточка **Changes** на панели рядом с чатом показывает добавленные и удалённые строки, например `+42 -18`. Нажмите на счётчики строк на карточке **Changes**, чтобы открыть представление diff.

251 251 

252Представление diff по умолчанию сравнивает изменения сессии с её базовой веткой. Чтобы сравнить с любой другой веткой в репозитории, выберите **Compare against** и укажите нужную.252* Вы также можете нажать **Changes** в строке заголовка сессии или в меню **⋮** этой строки.

253* Чтобы показать панель, когда она скрыта, нажмите значок **Show session rail** в строке заголовка сессии или в меню **⋮** этой строки.

254 

255В представлении diff вы можете комментировать строки и сравнивать изменения с другой веткой:

256 

257* **Comment**: оставляйте встроенные комментарии к определённым строкам, затем отправьте комментарии Claude со следующим сообщением

258* **Compare**: представление diff по умолчанию сравнивает изменения сессии с её базовой веткой. Чтобы сравнить с любой другой веткой в репозитории, выберите **Compare against** и укажите нужную

253 259 

254Claude Code вычисляет эти diff из необработанного содержимого git blob, поэтому драйверы diff и фильтры `textconv`, настроенные в репозитории, не применяются.260Claude Code вычисляет эти diff из необработанного содержимого git blob, поэтому драйверы diff и фильтры `textconv`, настроенные в репозитории, не применяются.

255 261 


313 319 

314### Архивирование сеансов320### Архивирование сеансов

315 321 

316Вы можете архивировать сеансы, чтобы организовать список сеансов. Архивированные сеансы скрыты из списка сеансов по умолчанию, но могут быть просмотрены путём фильтрации архивированных сеансов.322Архивируйте сессию, чтобы убрать её из списка сессий на боковой панели. Чтобы архивировать сессию, наведите на неё указатель на боковой панели, откройте её меню **⋯** и выберите **Archive**.

317 323 

318Чтобы архивировать сеанс, наведите указатель на сеанс на боковой панели и выберите значок архива.324#### Поиск архивированной сессии

325 

326Чтобы увидеть архивированные сессии, перейдите на [claude.ai/code/sessions](https://claude.ai/code/sessions) и откройте вкладку **Archived**. Чтобы вернуть сессию в список сессий на боковой панели, наведите на неё указатель на этой вкладке, откройте её меню **⋮** и выберите **Unarchive**.

319 327 

320### Удаление сеансов328### Удаление сеансов

321 329 

322Удаление сеанса окончательно удаляет сеанс и его данные. Это действие невозможно отменить. Вы можете удалить сеанс двумя способами:330Удаление сессии окончательно удаляет сессию и её данные. Это действие невозможно отменить. Удалите сессию с боковой панели, из меню сессии или со вкладки **Archived**, если вы её уже архивировали:

323 331 

324* **С боковой панели**: отфильтруйте архивированные сеансы, затем наведите указатель на сеанс, который вы хотите удалить, и выберите значок удаления332* **С боковой панели**: наведите указатель на сессию, откройте её меню **⋯** и выберите **Delete**

325* **Из меню сеанса**: откройте сеанс, выберите раскрывающееся меню рядом с названием сеанса и выберите **Delete**333* **Из меню сеанса**: откройте сеанс, выберите раскрывающееся меню рядом с названием сеанса и выберите **Delete**

334* **Со вкладки Archived**: наведите указатель на сессию на [вкладке **Archived**](#find-an-archived-session), откройте её меню **⋮** и выберите **Delete**

326 335 

327Вам будет предложено подтвердить перед удалением сеанса.336Вам будет предложено подтвердить перед удалением сеанса.

328 337 


336 345 

337Есть несколько способов включить auto-fix в зависимости от того, откуда пришёл PR и какое устройство вы используете:346Есть несколько способов включить auto-fix в зависимости от того, откуда пришёл PR и какое устройство вы используете:

338 347 

339* **PR, созданные в облачной сессии**: откройте сессию на claude.ai/code, откройте строку статуса CI и выберите **Auto-fix**348* **PR, созданные в облачной сессии**: откройте сессию на claude.ai/code и найдите pull request в [карточке **Changes**](#review-changes). Откройте меню **⋮** рядом с заголовком pull request и включите **Auto-fix**

340* **Из вашего терминала**: запустите [`/autofix-pr`](https://code.claude.com/docs/ru/commands) на ветке PR. Claude Code обнаруживает открытый PR с помощью `gh`, порождает облачную сессию и включает auto-fix в один шаг349* **Из вашего терминала**: запустите [`/autofix-pr`](https://code.claude.com/docs/ru/commands) на ветке PR. Claude Code обнаруживает открытый PR с помощью `gh`, порождает облачную сессию и включает auto-fix в один шаг

341* **Из мобильного приложения**: скажите Claude автоматически исправить PR, например "watch this PR and fix any CI failures or review comments"350* **Из мобильного приложения**: скажите Claude автоматически исправить PR, например "watch this PR and fix any CI failures or review comments"

342* **Любой существующий PR**: вставьте URL PR в сессию и скажите Claude автоматически исправить его351* **Любой существующий PR**: вставьте URL PR в сессию и скажите Claude автоматически исправить его

343 352 

344Auto-fix — это переключатель для каждого PR. Чтобы остановить мониторинг, откройте строку статуса CI в сессии на claude.ai/code и отключите переключатель **Auto-fix**, или скажите Claude прекратить наблюдение за PR.353Чтобы остановить мониторинг, отключите **Auto-fix** в меню **⋮** pull request в [карточке **Changes**](#review-changes) сессии или скажите Claude прекратить наблюдение за PR.

345 354 

346### Как Claude реагирует на активность PR355### Как Claude реагирует на активность PR

347 356 


381* Повторите попытку через минуту, так как ёмкость подготавливается по требованию390* Повторите попытку через минуту, так как ёмкость подготавливается по требованию

382* Подтвердите, что ваше подключение GitHub может достичь репозитория, следуя [No repositories appear after connecting GitHub](https://code.claude.com/docs/ru/web-quickstart.md#no-repositories-appear-after-connecting-github)391* Подтвердите, что ваше подключение GitHub может достичь репозитория, следуя [No repositories appear after connecting GitHub](https://code.claude.com/docs/ru/web-quickstart.md#no-repositories-appear-after-connecting-github)

383 392 

393### Your new session couldn't start

394 

395Ваш промпт возвращён в поле, из которого вы его отправили.

396 

397* **Соединение потеряно**: проверьте подключение к интернету, а также используемые VPN или прокси, затем отправьте промпт снова

398* **Ошибка сервера**: подождите немного, затем отправьте промпт снова. Если уведомление появится снова, проверьте [status.claude.com](https://status.claude.com)

399 

400### Can't rewind to this message

401 

402**Rewind to here** завершается с этой ошибкой для любого сообщения, кроме самого нового, если ваша сессия работает на [self-hosted runner](https://code.claude.com/docs/ru/self-hosted-environments) с Claude Code версии ниже v2.1.246. Попросите того, кто управляет раннерами вашей организации, [обновить их](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#pin-the-version).

403 

384### Unable to get organization UUID404### Unable to get organization UUID

385 405 

386`claude --cloud` и `claude --teleport` требуют входа с аккаунтом claude.ai. Если вы аутентифицируетесь с помощью API-ключа или ваши сохранённые данные аккаунта устарели, вы увидите одно из следующего:406`claude --cloud` и `claude --teleport` требуют входа с аккаунтом claude.ai. Если вы аутентифицируетесь с помощью API-ключа или ваши сохранённые данные аккаунта устарели, вы увидите одно из следующего:

Details

111 111 

112Проект теперь указан в разделе **Projects** на боковой панели, и его разговор открыт. [Ваш первый пакет](#your-first-batch) охватывает то, что нужно настроить перед отправкой ему работы.112Проект теперь указан в разделе **Projects** на боковой панели, и его разговор открыт. [Ваш первый пакет](#your-first-batch) охватывает то, что нужно настроить перед отправкой ему работы.

113 113 

114### Запуск из существующего облачного сеанса114### Запуск из существующей сессии

115 115 

116Если облачная сессия, которую вы запустили сами, выполняет работу, которая относится к проекту, откройте ее меню на боковой панели, выберите **Move to project**, а затем выберите вариант в подменю:116Если облачная сессия, которую вы запустили сами, выполняет работу, которая относится к проекту, откройте ее меню на боковой панели, выберите **Move to project**, а затем выберите вариант в подменю:

117 117 


120 120 

121Над полем сообщения облачной сессии также может появиться баннер **Set up project**. Если вы используете его вместо **Continue as new project**, результат тот же, за исключением того, что выполняющийся ход сессии останавливается после открытия проекта.121Над полем сообщения облачной сессии также может появиться баннер **Set up project**. Если вы используете его вместо **Continue as new project**, результат тот же, за исключением того, что выполняющийся ход сессии останавливается после открытия проекта.

122 122 

123Локальный сеанс не имеет этих опций. Чтобы продолжить его работу в проекте, опишите работу в разговоре проекта, или отправьте его ветку, добавьте этот репозиторий в проект и назовите ветку в задаче.123Сессия на вашем собственном компьютере получает то же меню на боковой панели в claude.ai/code после того, как вы подключите ее через [Remote Control](https://code.claude.com/docs/ru/remote-control.md#start-a-remote-control-session). Из проекта Claude не может прочитать транскрипт сессии, которая была подключена, пока для вашего аккаунта была включена настройка [**Require trusted devices**](https://code.claude.com/docs/ru/remote-control.md#trusted-devices). Если эта настройка отключена:

124 

1251. Если сессия еще не подключена, выполните в ней `/remote-control`. Если она была подключена, пока эта настройка была включена, сначала отключите ее и подключите снова.

1262. В браузере найдите строку сессии на боковой панели в [claude.ai/code](https://claude.ai/code), откройте ее меню и выберите вариант в том же подменю.

127 

128Если **Require trusted devices** включена или вы не используете Remote Control, опишите работу в диалоге проекта самостоятельно. Или отправьте ветку сессии (push), добавьте ее репозиторий в проект и сообщите Claude имя ветки.

124 129 

125### Настройка доступа GitHub130### Настройка доступа GitHub

126 131 


425* **Облачные сессии**: каждый поток — это [облачная сессия](https://code.claude.com/docs/ru/claude-code-on-the-web.md), если вы не попросите Claude запустить его на вашей машине. В любом случае Claude запускает и отслеживает его вместо вас. Вы также можете перенести в проект работу облачной сессии, которую запустили самостоятельно: выберите [**Move to project**](#start-from-an-existing-cloud-session) в меню боковой панели этой сессии.430* **Облачные сессии**: каждый поток — это [облачная сессия](https://code.claude.com/docs/ru/claude-code-on-the-web.md), если вы не попросите Claude запустить его на вашей машине. В любом случае Claude запускает и отслеживает его вместо вас. Вы также можете перенести в проект работу облачной сессии, которую запустили самостоятельно: выберите [**Move to project**](#start-from-an-existing-cloud-session) в меню боковой панели этой сессии.

426* **Scheduled tasks**: когда вы запрашиваете запланированную работу в проекте, Claude создает [облачную запланированную задачу](https://code.claude.com/docs/ru/routines.md), которая выполняется как потоки в этом проекте и отображается на его вкладке **Scheduled tasks**. Запланированные задачи, которые вы создаете вне проекта, продолжают работать самостоятельно.431* **Scheduled tasks**: когда вы запрашиваете запланированную работу в проекте, Claude создает [облачную запланированную задачу](https://code.claude.com/docs/ru/routines.md), которая выполняется как потоки в этом проекте и отображается на его вкладке **Scheduled tasks**. Запланированные задачи, которые вы создаете вне проекта, продолжают работать самостоятельно.

427* **Remote Control**: [Remote Control](https://code.claude.com/docs/ru/remote-control.md) соединяет claude.ai с сеансом Claude Code, работающим на вашей машине. Когда вы просите Claude в проекте запустить поток на вашем компьютере, проект [использует Remote Control для этого](#run-a-thread-on-your-own-computer).432* **Remote Control**: [Remote Control](https://code.claude.com/docs/ru/remote-control.md) соединяет claude.ai с сеансом Claude Code, работающим на вашей машине. Когда вы просите Claude в проекте запустить поток на вашем компьютере, проект [использует Remote Control для этого](#run-a-thread-on-your-own-computer).

428* **Local sessions и agent view**: сеанс, который вы запускаете самостоятельно в вашем терминале, IDE или локальной среде настольного приложения, не может быть добавлен в проект. [Agent view](https://code.claude.com/docs/ru/agent-view.md) — это экран для отслеживания нескольких локальных сеансов рядом, и вы по-прежнему запускаете каждый и даете ему его задачу самостоятельно.433* **Локальные сессии и agent view**: сессия, которую вы запускаете самостоятельно в терминале, IDE или локальной среде настольного приложения, остается вне ваших проектов, хотя вы можете [перенести ее работу в проект](#start-from-an-existing-cloud-session). [Agent view](https://code.claude.com/docs/ru/agent-view.md) — это экран для отслеживания нескольких локальных сессий рядом, и вы по-прежнему сами запускаете каждую из них и даете ей задачу.

429* **Worktrees**: [worktree](https://code.claude.com/docs/ru/worktrees.md) дает каждой локальной сессии собственную рабочую копию репозитория. Облачным потокам они не нужны: каждый клонирует свои репозитории в собственную облачную песочницу и работает в собственной ветке.434* **Worktrees**: [worktree](https://code.claude.com/docs/ru/worktrees.md) дает каждой локальной сессии собственную рабочую копию репозитория. Облачным потокам они не нужны: каждый клонирует свои репозитории в собственную облачную песочницу и работает в собственной ветке.

430* **Agent teams**: [agent team](https://code.claude.com/docs/ru/agent-teams.md) — это один сеанс, который запускает сеансы товарищей для одной задачи, на вашей машине или внутри облачного сеанса, и заканчивается этой задачей.435* **Agent teams**: [agent team](https://code.claude.com/docs/ru/agent-teams.md) — это один сеанс, который запускает сеансы товарищей для одной задачи, на вашей машине или внутри облачного сеанса, и заканчивается этой задачей.

431* **Subagents**: [subagent](https://code.claude.com/docs/ru/sub-agents.md) работает внутри одного сеанса, выполняет побочную задачу в своем собственном контекстном окне и возвращает резюме в этот сеанс. Потоки проекта — это целые сеансы, которые Claude запускает и которые отчитываются перед разговором проекта, и поток все еще может использовать subagents для своих собственных побочных задач.436* **Subagents**: [subagent](https://code.claude.com/docs/ru/sub-agents.md) работает внутри одного сеанса, выполняет побочную задачу в своем собственном контекстном окне и возвращает резюме в этот сеанс. Потоки проекта — это целые сеансы, которые Claude запускает и которые отчитываются перед разговором проекта, и поток все еще может использовать subagents для своих собственных побочных задач.


437 442 

438* Projects доступны в claude.ai/code, в настольном приложении и в мобильном приложении Claude, но не в CLI терминала, расширении VS Code или плагине JetBrains, и не через Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry.443* Projects доступны в claude.ai/code, в настольном приложении и в мобильном приложении Claude, но не в CLI терминала, расширении VS Code или плагине JetBrains, и не через Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry.

439* Потоки проекта — это [облачные сеансы](https://code.claude.com/docs/ru/claude-code-on-the-web.md) или сеансы на вашей собственной машине через [Remote Control](https://code.claude.com/docs/ru/remote-control.md), с Anthropic в качестве поставщика модели в обоих случаях. [Безопасность](https://code.claude.com/docs/ru/security.md) и [Использование данных](https://code.claude.com/docs/ru/data-usage.md) охватывают, как облачные сеансы изолированы и что сохраняется, а [Connection and security](https://code.claude.com/docs/ru/remote-control.md#connection-and-security) охватывает, как поток на вашей машине подключается и что хранится.444* Потоки проекта — это [облачные сеансы](https://code.claude.com/docs/ru/claude-code-on-the-web.md) или сеансы на вашей собственной машине через [Remote Control](https://code.claude.com/docs/ru/remote-control.md), с Anthropic в качестве поставщика модели в обоих случаях. [Безопасность](https://code.claude.com/docs/ru/security.md) и [Использование данных](https://code.claude.com/docs/ru/data-usage.md) охватывают, как облачные сеансы изолированы и что сохраняется, а [Connection and security](https://code.claude.com/docs/ru/remote-control.md#connection-and-security) охватывает, как поток на вашей машине подключается и что хранится.

440* Вы не можете добавить сеанс, который вы запустили сами на вашей машине, в проект. Проект достигает вашей машины только путем [запуска потока там через Remote Control](#run-a-thread-on-your-own-computer), и этот раздел перечисляет, что ему нужно.445* Вы не можете добавить в проект сессию, которую запустили сами на своей машине, но можете [перенести её работу в проект](#start-from-an-existing-cloud-session). Проект попадает на вашу машину путём [запуска потока там через Remote Control](#run-a-thread-on-your-own-computer), и в этом разделе перечислено, что для этого нужно.

441* Песочница потока приостанавливается между ходами и возобновляется, когда поток продолжает. Если песочница не может быть возобновлена, поток продолжает с свежего клона, поэтому незафиксированные изменения могут быть потеряны. На долгих задачах попросите Claude зафиксировать и отправить работу в процессе.446* Песочница потока приостанавливается между ходами и возобновляется, когда поток продолжает. Если песочница не может быть возобновлена, поток продолжает с свежего клона, поэтому незафиксированные изменения могут быть потеряны. На долгих задачах попросите Claude зафиксировать и отправить работу в процессе.

442* Проект принадлежит одному пользователю. Вы не можете поделиться проектом или его потоками с другим пользователем, и транскрипты потоков не имеют опции поделиться, которую имеют другие облачные сеансы. Нет элементов управления на уровне организации для проектов во время бета-версии.447* Проект принадлежит одному пользователю. Вы не можете поделиться проектом или его потоками с другим пользователем, и транскрипты потоков не имеют опции поделиться, которую имеют другие облачные сеансы. Нет элементов управления на уровне организации для проектов во время бета-версии.

443* Поток принадлежит одному проекту, который его запустил. Вы не можете переместить или скопировать поток в другой проект или переместить его отдельно. [**Move to project**](#start-from-an-existing-cloud-session) идет только в другую сторону: он переносит работу облачного сеанса в проект. Вы не можете объединить два проекта в один.448* Поток принадлежит одному проекту, который его запустил. Вы не можете переместить или скопировать поток в другой проект или переместить его отдельно. [**Move to project**](#start-from-an-existing-cloud-session) идет только в другую сторону: он переносит работу облачного сеанса в проект. Вы не можете объединить два проекта в один.

code-review.md +1 −1

Details

67 67 

68* **Результаты**: встроенные комментарии на соответствующих строках со сводкой в теле ревью68* **Результаты**: встроенные комментарии на соответствующих строках со сводкой в теле ревью

69* **Check run**: с именем **Claude Code Review**, с результатами, перечисленными в его [подробностях](https://code.claude.com/docs/ru/code-review-pull-requests.md#check-run-output). Check run не завершается со статусом сбоя.69* **Check run**: с именем **Claude Code Review**, с результатами, перечисленными в его [подробностях](https://code.claude.com/docs/ru/code-review-pull-requests.md#check-run-output). Check run не завершается со статусом сбоя.

70* **Если ничего не найдено**: заголовок check run гласит **Code review found no issues**, и Claude публикует такое же короткое сообщение на pull request70* **Заметка вместо результатов**: публикуется, когда заголовок check run гласит **Code review found no issues**

71 71 

72Code Review сам выбирает модели Claude, на которых выполняются ревью, и его настройки администратора не предлагают выбора модели. Чтобы сделать ревью более или менее тщательными, измените [уровень ревью](#review-levels).72Code Review сам выбирает модели Claude, на которых выполняются ревью, и его настройки администратора не предлагают выбора модели. Чтобы сделать ревью более или менее тщательными, измените [уровень ревью](#review-levels).

73 73 

Details

152 152 

153### Что охватывает последующее ревью153### Что охватывает последующее ревью

154 154 

155Последующее ревью, которое запускается само, например после push, фокусируется на том, что изменилось с момента последнего ревью, и публикует меньше результатов nit и pre-existing. В его сводке указывается количество того, что было опущено, в строке, заканчивающейся на «found and not posted» или «outside the scope of this re-review and not posted».155Последующее ревью, которое запускается само, например после push, фокусируется на том, что изменилось с момента последнего ревью, и публикует меньше [результатов nit и pre-existing](#severity-levels). Чтобы узнать, были ли в результате какие-то результаты опущены, найдите в тексте ревью предложение, в котором указано их количество:

156 

157* **Результаты по коду, который не изменился с момента последнего ревью**: предложение заканчивается на «outside the scope of this re-review and not posted»

158* **Результаты nit и pre-existing**: предложение заканчивается на «found and not posted»

156 159 

157Чтобы получить ревью, в котором ничего из этого не опущено, оставьте комментарий [`@claude review`](#comment-commands). Такое ревью снова охватывает весь pull request.160Чтобы получить ревью, в котором ничего из этого не опущено, оставьте комментарий [`@claude review`](#comment-commands). Такое ревью снова охватывает весь pull request.

158 161 

Details

15| Заголовок check run | Что это означает | Что делать |15| Заголовок check run | Что это означает | Что делать |

16| :- | :- | :- |16| :- | :- | :- |

17| **Code review queued...** или **Code review in progress...** | Ревью ещё не завершилось | Дождитесь изменения заголовка |17| **Code review queued...** или **Code review in progress...** | Ревью ещё не завершилось | Дождитесь изменения заголовка |

18| **Code review found no issues** | Ревью завершилось и не нашло ничего, что стоило бы пометить | Ничего |18| **Code review found no issues** | Ревью завершилось и не опубликовало замечаний | Если это не первое ревью этого pull request, найдите в тексте ревью количество [замечаний, которые ревью не включило](https://code.claude.com/docs/ru/code-review-pull-requests.md#what-a-later-review-covers). В остальных случаях — ничего |

19| Заголовок, сообщающий, что найдены проблемы | Ревью завершилось с замечаниями | Если вы не видите их в diff, см. [Поиск проблем, которые не отображаются как встроенные комментарии](#find-issues-that-aren’t-showing-as-inline-comments) |19| Заголовок, сообщающий, что найдены проблемы | Ревью завершилось с замечаниями | Если вы не видите их в diff, см. [Поиск проблем, которые не отображаются как встроенные комментарии](#find-issues-that-aren’t-showing-as-inline-comments) |

20| **Code review skipped — no new changes** | Автоматическое ревью не запустилось для вашего последнего push | Чтобы всё равно получить ревью, оставьте комментарий `@claude review` |20| **Code review skipped — no new changes** | Автоматическое ревью не запустилось для вашего последнего push | Чтобы всё равно получить ревью, оставьте комментарий `@claude review` |

21| **Code review not repeated — earlier findings still open** | Автоматическое ревью не запустилось для вашего последнего push, а важные замечания из предыдущего ревью всё ещё открыты | Отправьте исправление через push или, чтобы всё равно получить ревью, оставьте комментарий `@claude review`. См. [Когда push сохраняет предыдущий результат](https://code.claude.com/docs/ru/code-review-pull-requests.md#when-a-push-keeps-the-earlier-result) |21| **Code review not repeated — earlier findings still open** | Автоматическое ревью не запустилось для вашего последнего push, а важные замечания из предыдущего ревью всё ещё открыты | Отправьте исправление через push или, чтобы всё равно получить ревью, оставьте комментарий `@claude review`. См. [Когда push сохраняет предыдущий результат](https://code.claude.com/docs/ru/code-review-pull-requests.md#when-a-push-keeps-the-earlier-result) |

desktop.md +48 −17

Details

223 223 

224#### Скрытие или отображение панели сведений о сессии224#### Скрытие или отображение панели сведений о сессии

225 225 

226Чтобы скрыть или показать панель, нажмите **Hide session rail** или **Show session rail** в строке заголовка сессии или в меню **⋮** этой строки, когда окно узкое. Если вы по-прежнему не видите панель, [проверьте, какой макет вкладки Code у вас используется](#check-which-layout-you-have).226Чтобы скрыть или показать панель, нажмите **Hide session rail** или **Show session rail** в строке заголовка сессии или в меню **⋮** этой строки. Если вы по-прежнему не видите панель, [проверьте, какой макет вкладки Code у вас используется](#check-which-layout-you-have).

227 227 

228### Запуск команд в терминале228### Запуск команд в терминале

229 229 


984 984 

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

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

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

988 * **Ваш компьютер работает под macOS или Linux**: обновитесь до Claude Desktop v3.1623.0 или новее

989 * **Ваш компьютер работает под Windows**: убедитесь, что Desktop [подключается через клиент OpenSSH](#use-your-ssh-configuration), поскольку встроенный SSH-клиент Desktop не может подключиться к такому серверу

990 * **Вы можете изменить сервер**: увеличьте `MaxSessions`, например до значения OpenSSH по умолчанию — 10

991* **Вход при `MaxSessions 1`**: используйте способ входа, работающий без запроса ввода, например ключ, который хранит ваш SSH-агент. Desktop выполняет вход как минимум дважды при каждом подключении или переподключении. Рассчитывайте как минимум на один дополнительный вход для каждой вкладки [терминала](#run-commands-in-the-terminal) и для каждой сессии Desktop, в которой вы выполняете команды, начинающиеся с `!`. Для команд, которые выполняет Claude, дополнительных входов не будет.

992* **Одноразовые коды при `MaxSessions 1`**: если каждый вход запрашивает ввод, как в случае одноразовых кодов, команды `!` завершаются ошибкой. Вместо этого выполняйте такие команды во вкладке терминала, которая показывает запрос в собственной панели.

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

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

990* **Сеть**: Claude Code работает на удалённой машине и выполняет сетевые запросы оттуда, поэтому машине нужен [доступ к сети, который требуется Claude Code](https://code.claude.com/docs/ru/network-config.md#network-access-requirements). Если машина не может загрузить Claude Code, Desktop загружает его на вашем компьютере и выгружает на машину. Остальные запросы Claude Code по-прежнему отправляются с удалённой машины. Если на удалённой машине с Linux этим запросам нужен прокси, [задайте его для SSH-сессий](#set-a-proxy-or-a-ca-certificate-for-ssh-sessions).995* **Сеть**: Claude Code работает на удалённой машине и выполняет сетевые запросы оттуда, поэтому машине нужен [доступ к сети, который требуется Claude Code](https://code.claude.com/docs/ru/network-config.md#network-access-requirements). Если машина не может загрузить Claude Code, Desktop загружает его на вашем компьютере и выгружает на машину. Остальные запросы Claude Code по-прежнему отправляются с удалённой машины. Если на удалённой машине с Linux этим запросам нужен прокси, [задайте его для SSH-сессий](#set-a-proxy-or-a-ca-certificate-for-ssh-sessions).


993 998 

994Если удалённая машина с Linux выходит в интернет через прокси или ей нужен сертификат CA, добавьте [переменные прокси и CA](https://code.claude.com/docs/ru/network-config.md) в раздел `env` файла `~/.claude/settings.json` на этой машине. Добавьте их, даже если вы уже экспортируете их в `~/.profile`, `~/.bash_profile`, `~/.zprofile` или `~/.zshrc` на этой машине.999Если удалённая машина с Linux выходит в интернет через прокси или ей нужен сертификат CA, добавьте [переменные прокси и CA](https://code.claude.com/docs/ru/network-config.md) в раздел `env` файла `~/.claude/settings.json` на этой машине. Добавьте их, даже если вы уже экспортируете их в `~/.profile`, `~/.bash_profile`, `~/.zprofile` или `~/.zshrc` на этой машине.

995 1000 

996SSH-сессия не получает их из этих файлов, даже если `claude` в терминале на этой машине их получает. Тогда сессия может зависнуть или показать **The connection from … to the API failed** или **Authentication failed**, и повторный вход не помогает.1001В SSH-сессии Claude Code не получает переменные из этих файлов, даже если `claude` в терминале на этой машине их получает. Сессия может зависнуть или показать **The connection from … to the API failed** или **Authentication failed**, и повторный вход не помогает.

997 1002 

998**1. Добавьте переменные**1003**1. Добавьте переменные**

999 1004 


1028 1033 

1029Перезапустите удалённую машину или закройте Desktop и завершите процессы помощника, как в первых двух шагах [удаления помощника](#files-and-processes-on-the-remote-machine). Делайте это, когда никакая задача не выполняется, потому что любой из этих способов прерывает работу Claude.1034Перезапустите удалённую машину или закройте Desktop и завершите процессы помощника, как в первых двух шагах [удаления помощника](#files-and-processes-on-the-remote-machine). Делайте это, когда никакая задача не выполняется, потому что любой из этих способов прерывает работу Claude.

1030 1035 

1031#### Использование вашей конфигурации SSH на macOS и Linux1036#### Использование вашей конфигурации SSH

1032 1037 

1033На macOS и Linux Desktop подключается, запуская клиент OpenSSH на вашем компьютере, поэтому использует ваш `~/.ssh/config`. Подключение через клиент OpenSSH требует Claude Desktop v1.37937.0 или более поздней версии. Введите имя `Host` из этого файла в поле **SSH host**, чтобы использовать настройки из его записи, такие как `HostName`, `User`, `IdentityFile`, `CertificateFile`, `ProxyJump` и `ProxyCommand`.1038Вы можете использовать свою конфигурацию SSH в macOS, Linux и Windows, когда Desktop подключается через клиент OpenSSH на вашем компьютере:

1039 

1040* **macOS и Linux**: Desktop подключается, запуская клиент OpenSSH на вашем компьютере, поэтому использует ваш `~/.ssh/config`. Подключение через клиент OpenSSH требует Claude Desktop v1.37937.0 или новее.

1041* **Windows**: когда Desktop подключается через клиент OpenSSH, он использует ваш `%USERPROFILE%\.ssh\config`. Если вы используете аккаунт Claude, а не стороннего провайдера, подключение через клиент OpenSSH требует выполнения всех следующих условий:

1042 

1043 * Claude Desktop v2.2553.0 или новее. Чтобы узнать свою версию, см. [Проверка версии](#check-your-version).

1044 * OpenSSH от Microsoft версии 9.4 или новее

1045 * Desktop установлен с помощью кнопок загрузки в верхней части этой страницы, поскольку Desktop из Microsoft Store не подключается через клиент OpenSSH

1046 

1047 Если вы не можете выполнить эти требования или используете стороннего провайдера, см. [Подключение в Windows без клиента OpenSSH](#connect-on-windows-without-the-openssh-client).

1048 

1049С клиентом OpenSSH введите имя `Host` из вашего файла конфигурации в поле **SSH host**. Desktop затем использует настройки из этой записи `Host`, такие как `HostName`, `User`, `IdentityFile`, `CertificateFile`, `ProxyJump` и `ProxyCommand`.

1034 1050 

1035Прежде чем добавить соединение, проверьте клиент и запись в терминале на вашем компьютере:1051Прежде чем добавить соединение, проверьте клиент и запись в терминале на вашем компьютере:

1036 1052 

1037* **Версия клиента**: выполните `ssh -V`. Клиент должен быть OpenSSH 7.6 или более поздней версии.1053* **Версия клиента в macOS и Linux**: выполните `ssh -V`. Клиент должен быть OpenSSH 7.6 или новее.

1038* **Запись**: выполните `ssh` с именем `Host`, например `ssh devbox`. Если это не удаётся, сначала исправьте запись.1054* **Версия клиента в Windows**: Desktop сначала пробует `ssh` из вашего `PATH`, поэтому выполните `ssh -V`. Клиент подходит, если вывод показывает `OpenSSH_for_Windows_` и версию 9.4 или новее. Если не подходит, проверьте две папки, которые Desktop пробует следующими: выполните `.\ssh.exe -V` в `C:\Windows\System32\OpenSSH`, затем в `C:\Program Files\OpenSSH`.

1055* **В Windows ни один клиент не подходит**: добавьте дополнительный компонент Windows **OpenSSH Client** и установите ожидающие обновления Windows или установите [более новую сборку от Microsoft](https://learn.microsoft.com/en-us/troubleshoot/windows-server/system-management-components/upgrade-in-box-openssh-to-latest-openssh-release). Затем закройте и снова откройте Desktop. Чтобы узнать, нашёл ли Desktop пригодный клиент OpenSSH, поищите в [`ssh.log`](#get-desktops-logs-for-an-ssh-problem) строку `Windows OpenSSH client:` с версией или строку `no usable Windows OpenSSH client`.

1056* **Запись**: в Windows используйте клиент, прошедший проверку версии. Выполните `ssh` с именем `Host`, например `ssh devbox`. Если это не удаётся, сначала исправьте запись.

1039 1057 

1040Поля **SSH port** и **SSH key (optional)** можно оставить пустыми. Если вы заполните одно из них, Desktop использует его вместе с записью:1058Поля **SSH port** и **SSH key (optional)** можно оставить пустыми. Если вы заполните одно из них, Desktop использует его вместе с записью:

1041 1059 

1042* **SSH port**: значение здесь переопределяет `Port` записи1060* **SSH port**: значение здесь переопределяет `Port` записи

1043* **SSH key (optional)**: Desktop предлагает выбранный вами файл ключа в дополнение к `IdentityFile` записи и ключам в вашем SSH-агенте1061* **SSH key (optional)**: с клиентом OpenSSH Desktop предлагает выбранный вами файл ключа в дополнение к `IdentityFile` из записи и ключам в вашем SSH-агенте. В Windows выбирайте ключ в формате OpenSSH, поскольку `ssh` не читает файлы PuTTY `.ppk`.

1062 

1063##### Подключение в Windows без клиента OpenSSH

1064 

1065В Windows вы подключаетесь через встроенный SSH-клиент Desktop, если ваш компьютер не соответствует [требованиям для клиента OpenSSH](#use-your-ssh-configuration). Со сторонним провайдером вы по умолчанию подключаетесь через встроенный клиент, и ваш администратор может это изменить. Об этой настройке см. [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions).

1066 

1067Со встроенным клиентом вы всё равно можете ввести имя `Host` из вашей конфигурации SSH в поле **SSH host**, если в вашем `PATH` есть команда `ssh`, со следующими ограничениями:

1068 

1069* **Настройки из записи**: Desktop берёт `HostName`, `User`, `Port` и `IdentityFile`. Он также берёт `ProxyCommand`, если в вашем `PATH` есть оболочка `sh`.

1070* **SSH key (optional)**: оставьте это поле пустым, чтобы сохранить `IdentityFile` из записи, поскольку выбранный здесь файл ключа заменяет `IdentityFile`

1071* **`CertificateFile` и `ProxyJump`**: Desktop игнорирует `CertificateFile`, а подключение завершается ошибкой, если в записи задан `ProxyJump`. Чтобы использовать любую из этих настроек, [подключайтесь через клиент OpenSSH](#use-your-ssh-configuration).

1044 1072 

1045##### Подключение к машине за jump-хостом1073##### Подключение к машине за jump-хостом

1046 1074 


1095 1123 

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

1097 1125 

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

1099 1127 

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

1101 1129 


1103>1131>

1104> Если ваша оболочка задаёт временные учётные данные AWS, [укажите для AWS CLI профиль](#use-aws-credentials-in-a-proxycommand) вместо экспорта переменных `AWS_*`.1132> Если ваша оболочка задаёт временные учётные данные AWS, [укажите для AWS CLI профиль](#use-aws-credentials-in-a-proxycommand) вместо экспорта переменных `AWS_*`.

1105 1133 

1106##### Использование учётных данных AWS в `ProxyCommand`1134##### Использование учётных данных AWS в `ProxyCommand` в macOS и Linux

1107 1135 

1108Если вы задаёте временные учётные данные AWS в файле запуска оболочки, `ProxyCommand`, который запускает AWS CLI, может подключаться в терминале и завершаться ошибкой в Desktop. Когда ваша оболочка экспортирует `AWS_SESSION_TOKEN`, `AWS_SECURITY_TOKEN` или `AWS_CREDENTIAL_EXPIRATION`, `ssh` и ваш `ProxyCommand` в Desktop не получают учётные данные AWS из оболочки, `AWS_REGION` или `AWS_PROFILE`.1136Если вы задаёте временные учётные данные AWS в файле запуска оболочки, `ProxyCommand`, который запускает AWS CLI, может подключаться в терминале и завершаться ошибкой в Desktop. Когда ваша оболочка экспортирует `AWS_SESSION_TOKEN`, `AWS_SECURITY_TOKEN` или `AWS_CREDENTIAL_EXPIRATION`, `ssh` и ваш `ProxyCommand` в Desktop не получают учётные данные AWS из оболочки, `AWS_REGION` или `AWS_PROFILE`.

1109 1137 


1242 1270 

1243##### Подготовка длительной задачи1271##### Подготовка длительной задачи

1244 1272 

1245* **Сначала обновитесь**: обновите Desktop перед запуском длительной задачи. На macOS и Windows Desktop может самостоятельно перезапуститься, чтобы установить загруженное обновление. Этот перезапуск ожидает, пока Claude работает над SSH-задачей. На macOS с учётной записью Claude по умолчанию перезапуск всё же может произойти, когда обновление ожидает уже 72 часа.1273* **Сначала обновитесь**: обновите Desktop перед запуском длительной задачи. В macOS и Windows Desktop может сам перезапуститься, чтобы установить загруженное обновление. Этот перезапуск ожидает, пока Claude работает над задачей по SSH. По умолчанию, когда обновление прождёт 72 часа, перезапуск может произойти во время задачи, если Desktop сможет [снова присоединиться к задаче после него](#reopen-a-session-after-you-quit-desktop).

1246* **Не закрывайте Desktop в Windows или до v2.42304.0 со сторонним провайдером**: после закрытия в этих случаях вы теряете выполняющуюся задачу, поэтому оставляйте Desktop открытым во время задачи. В любом другом случае перед закрытием посмотрите, [что вы получите обратно](#reopen-a-session-after-you-quit-desktop).1274* **Проверьте перед закрытием**: после закрытия или перезапуска вы не всегда возвращаете запущенную задачу, например после некоторых обновлений Desktop. О таких случаях см. [Повторное открытие сессии после закрытия Desktop](#reopen-a-session-after-you-quit-desktop).

1275* **В старой версии оставляйте Desktop открытым**: в Windows с Claude Desktop до v3.1623.0 вы не возвращаете запущенную задачу после закрытия или перезапуска Desktop. То же верно для стороннего провайдера в macOS или Linux до v2.42304.0. В обоих случаях оставляйте Desktop открытым во время задачи. Чтобы узнать свою версию, см. [Проверка версии](#check-your-version).

1247* **Сократите число запросов**: выберите режим разрешений, правила или хуки, благодаря которым [задача будет реже ожидать вас](#handle-requests-that-arrive-while-you-are-away)1276* **Сократите число запросов**: выберите режим разрешений, правила или хуки, благодаря которым [задача будет реже ожидать вас](#handle-requests-that-arrive-while-you-are-away)

1248* **Проверьте jump-хост**: если ваш jump-хост запрашивает вход, например push-уведомление на телефон, перейдите на вход, который работает без запроса. Иначе Desktop может отправлять новое push-уведомление при каждой попытке переподключения.1277* **Проверьте jump-хост**: если ваш jump-хост запрашивает вход, например push-уведомление на телефон, перейдите на вход, который работает без запроса. Иначе Desktop может отправлять новое push-уведомление при каждой попытке переподключения.

1249* **Протестируйте удалённую машину**: запустите короткую задачу, закройте Desktop, пока задача ещё выполняется, и снова откройте сессию значительно позже того момента, когда задача должна была завершиться. Если задача не завершена, а сессия не показывает ошибку аутентификации, проверьте на удалённой машине, [что может завершить задачу](#limits-while-desktop-is-disconnected).1278* **Протестируйте удалённую машину**: запустите короткую задачу, закройте Desktop, пока задача ещё выполняется, и снова откройте сессию значительно позже того момента, когда задача должна была завершиться. Если задача не завершена, а сессия не показывает ошибку аутентификации, проверьте на удалённой машине, [что может завершить задачу](#limits-while-desktop-is-disconnected).


1320 1349 

1321После закрытия Desktop задача продолжает выполняться на удалённой машине, но останавливается при повторном открытии сессии, если Desktop не может снова присоединиться к её процессу. Пока Desktop закрыт, задача выполняется, пока не завершится, не потребует вашего участия или не достигнет одного из [ограничений](#limits-while-desktop-is-disconnected).1350После закрытия Desktop задача продолжает выполняться на удалённой машине, но останавливается при повторном открытии сессии, если Desktop не может снова присоединиться к её процессу. Пока Desktop закрыт, задача выполняется, пока не завершится, не потребует вашего участия или не достигнет одного из [ограничений](#limits-while-desktop-is-disconnected).

1322 1351 

1323* **Desktop в Windows**: вы не получите выполняющуюся задачу обратно, поскольку Desktop никогда не присоединяется снова после закрытия. Запускайте Desktop снова только когда ожидаете, что задача завершена, поскольку сессия может открыться при запуске Desktop.1352* **Desktop в Windows, задача запущена в версии до v3.1623.0**: вы не вернёте задачу, даже если Desktop с тех пор обновился. Запускайте Desktop снова, только когда ожидаете, что задача уже завершена, поскольку сессия может открыться при запуске Desktop, а задача останавливается при открытии сессии. Если вы не знаете, в какой версии запустили задачу, тоже дождитесь, пока она, по вашим ожиданиям, завершится.

1324* **Сторонний провайдер, задача из более ранней версии**: если вы запустили задачу в версии Desktop до v2.42304.0, вы не получите её обратно и в macOS или Linux. Запускайте Desktop снова только когда ожидаете, что задача завершена.1353* **Сторонний провайдер в macOS или Linux, задача запущена в версии до v2.42304.0**: вы не вернёте задачу. Запускайте Desktop снова, только когда ожидаете, что задача уже завершена.

1325* **Любая другая задача, с Desktop в macOS или Linux**: запустите Desktop и откройте сессию, и задача продолжится, если Desktop снова присоединится. Это возможно не всегда, например после некоторых обновлений Desktop, поэтому [обновитесь перед длительной задачей](#prepare-a-long-task).1354* **Любая другая задача**: запустите Desktop и откройте сессию, и задача продолжится, если Desktop снова присоединится к ней. Это удаётся не всегда, например после некоторых обновлений Desktop, поэтому [обновляйтесь перед длительной задачей](#prepare-a-long-task).

1326 1355 

1327Когда Desktop не может снова присоединиться, вы также теряете любое подтверждение или вопрос, которые вас ожидали. Если задача не продолжается сама, отправьте сообщение, и Claude продолжит из сохранённой истории диалога.1356Когда задача останавливается, сессия может показать `Restarting Claude Code on <host>…`, пока Desktop запускает новый процесс. Вы также теряете любое подтверждение или вопрос, ожидавшие вас. Если Claude не продолжает сам, отправьте сообщение, и Claude продолжит на основе сохранённой истории диалога.

1328 1357 

1329Для сторонних развёртываний см. [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions).1358Для сторонних развёртываний см. [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions).

1330 1359 


1411 1440 

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

1413 1442 

1443Если на сервере задано `MaxSessions 1`, ожидайте как минимум две записи при каждом подключении или переподключении Desktop. Ожидайте ещё как минимум одну для каждой вкладки терминала и для каждой сессии Desktop, в которой вы выполняете команды, начинающиеся с `!`.

1444 

1414SSH-подключений Desktop нет в [метриках и событиях](https://code.claude.com/docs/ru/monitoring-usage.md#available-metrics-and-events) Claude Code. Чтобы узнать по ним, на какой удалённой машине выполнялась SSH-сессия, см. [Привязка телеметрии к SSH-сессиям Desktop](https://code.claude.com/docs/ru/monitoring-usage.md#attribute-telemetry-to-desktop-ssh-sessions). О собственных записях Desktop о его подключениях см. [Получение логов Desktop для проблемы с SSH](#get-desktops-logs-for-an-ssh-problem).1445SSH-подключений Desktop нет в [метриках и событиях](https://code.claude.com/docs/ru/monitoring-usage.md#available-metrics-and-events) Claude Code. Чтобы узнать по ним, на какой удалённой машине выполнялась SSH-сессия, см. [Привязка телеметрии к SSH-сессиям Desktop](https://code.claude.com/docs/ru/monitoring-usage.md#attribute-telemetry-to-desktop-ssh-sessions). О собственных записях Desktop о его подключениях см. [Получение логов Desktop для проблемы с SSH](#get-desktops-logs-for-an-ssh-problem).

1415 1446 

1416#### Подключения, закрывающиеся до входа1447#### Подключения, закрывающиеся до входа


2112| - | - | - |2143| - | - | - |

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

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

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

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

2117| `Free up disk space on this computer` | `[ENOSPC]` или `[EDQUOT]` в сообщении, которое начинается с `Couldn't prepare the deploy locally` | Освободите место на вашем компьютере |2148| `Free up disk space on this computer` | `[ENOSPC]` или `[EDQUOT]` в сообщении, которое начинается с `Couldn't prepare the deploy locally` | Освободите место на вашем компьютере |

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

errors.md +2 −0

Details

327| `Cannot read this as an image: <path> is a pipe or a device` | [Tool errors](#file-is-too-large-to-read-as-an-image) |327| `Cannot read this as an image: <path> is a pipe or a device` | [Tool errors](#file-is-too-large-to-read-as-an-image) |

328| `subagent_type is required: the general-purpose agent is not available in this session` | [Tool errors](#subagent-type-is-required) |328| `subagent_type is required: the general-purpose agent is not available in this session` | [Tool errors](#subagent-type-is-required) |

329| `Error: this write left the memory index at MEMORY.md at ..., over its ... read limit` | [Tool errors](#memory-index-is-over-its-read-limit) |329| `Error: this write left the memory index at MEMORY.md at ..., over its ... read limit` | [Tool errors](#memory-index-is-over-its-read-limit) |

330| `Sandbox is required but failed to initialize: <reason>` | [Устранение неполадок изоляции в песочнице](https://code.claude.com/docs/ru/sandboxing.md#commands-refused-with-sandbox-is-required) |

331| `Sandbox is required (sandbox.failIfUnavailable) and stopped being available in this session: <reason>` | [Устранение неполадок изоляции в песочнице](https://code.claude.com/docs/ru/sandboxing.md#commands-refused-with-sandbox-is-required) |

330| `pkill: refusing to run` | [Tool errors](#pkill-pattern-matches-the-claude-code-process) |332| `pkill: refusing to run` | [Tool errors](#pkill-pattern-matches-the-claude-code-process) |

331| `Failed to write to <name>'s inbox — nothing was sent` | [Tool errors](#failed-to-write-to-a-teammate-inbox) |333| `Failed to write to <name>'s inbox — nothing was sent` | [Tool errors](#failed-to-write-to-a-teammate-inbox) |

332| `Failed to write the plan approval request to the lead's inbox — plan not submitted` | [Tool errors](#failed-to-write-to-a-teammate-inbox) |334| `Failed to write the plan approval request to the lead's inbox — plan not submitted` | [Tool errors](#failed-to-write-to-a-teammate-inbox) |

fast-mode.md +2 −2

Details

80 80 

81Цены на быстрый режим одинаковы по всему контекстному окну из 1M токенов. Для сравнения со стандартной ставкой Opus см. [справочник по ценам Claude](https://platform.claude.com/docs/ru/about-claude/pricing).81Цены на быстрый режим одинаковы по всему контекстному окну из 1M токенов. Для сравнения со стандартной ставкой Opus см. [справочник по ценам Claude](https://platform.claude.com/docs/ru/about-claude/pricing).

82 82 

83Когда вы впервые включаете быстрый режим в диалоге, вы платите полную цену быстрого режима за некэшированные входные токены для всего контекста диалога. Чем дальше вы продвинулись в диалоге, тем дороже это обходится, поэтому плата минимальна, если включить быстрый режим в самом начале. Эта стоимость взимается один раз за диалог, поэтому если позже отключить и снова включить быстрый режим, она не повторится. Описание механизма см. в разделе [как быстрый режим взаимодействует с кэшем промптов](https://code.claude.com/docs/ru/prompt-caching.md#turning-on-fast-mode).83Когда вы впервые включаете быстрый режим в диалоге, вы платите полную цену быстрого режима за некэшированные входные токены для всего контекста диалога. Чем дальше вы продвинулись в диалоге, тем дороже это обходится, поэтому плата минимальна, если включить быстрый режим в самом начале. Быстрый режим и стандартная скорость используют [отдельные кэши](https://code.claude.com/docs/ru/prompt-caching.md#turning-on-fast-mode), поэтому при каждом последующем переключении часть диалога или весь диалог снова считывается без кэша.

84 84 

85### Посмотрите, где появляются расходы быстрого режима85### Посмотрите, где появляются расходы быстрого режима

86 86 


167 167 

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

169 169 

170* Вы указываете в `ANTHROPIC_BASE_URL` свой шлюз и задаете в [`ANTHROPIC_API_KEY`](https://code.claude.com/docs/ru/llm-gateway-connect#set-the-base-url-and-credential) ключ, выданный шлюзом, который не соответствует формату API-ключа Anthropic. Claude Code не отправляет такой ключ на `api.anthropic.com`.170* Вы указываете в `ANTHROPIC_BASE_URL` свой шлюз и задаете в [`ANTHROPIC_API_KEY`](https://code.claude.com/docs/ru/llm-gateway-connect#set-the-base-url-and-credential) ключ, выданный шлюзом, который не соответствует формату API-ключа Anthropic.

171* Вы устанавливаете [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/ru/env-vars), поэтому Claude Code пропускает проверку.171* Вы устанавливаете [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/ru/env-vars), поэтому Claude Code пропускает проверку.

172 172 

173Чтобы восстановить быстрый режим в любой из этих конфигураций, установите `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`.173Чтобы восстановить быстрый режим в любой из этих конфигураций, установите `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`.

Details

262 262 

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

264 264 

265**В subagents:** Skills работают по-другому в subagents. Вместо загрузки по требованию, skills, указанные в поле `skills` субагента, полностью предварительно загружаются в его контекст при запуске. Субагенты по-прежнему могут обнаруживать и вызывать не указанные в списке скиллы проекта, пользователя и плагинов через инструмент Skill.265**В субагентах:** Полный контент скиллов, указанных в поле `skills` субагента, [загружается в его контекст при запуске](https://code.claude.com/docs/ru/sub-agents.md#preload-skills-into-subagents), а не по требованию. Субагенты по-прежнему могут обнаруживать и вызывать не указанные в списке скиллы проекта, пользователя и плагинов через инструмент Skill.

266 266 

267> [!TIP]267> [!TIP]

268>268>

glossary.md +2 −2

Details

120 120 

121### Compaction121### Compaction

122 122 

123Автоматическое резюмирование вашего разговора, когда [context window](#context-window) приближается к своему пределу. Сначала очищаются старые выходы tool, затем разговор резюмируется. CLAUDE.md в корне проекта и auto memory сохраняются при compaction и перезагружаются с диска; инструкции, данные только в разговоре, могут быть потеряны. Запустите `/compact` для ручного запуска, опционально с фокусом, например `/compact focus on the API changes`.123Автоматическое резюмирование вашего диалога, когда [контекстное окно](#context-window) приближается к своему пределу. CLAUDE.md в корне проекта и автоматическая память сохраняются при сжатии контекста, но инструкции, данные только в диалоге, могут не сохраниться. Запустите `/compact` для ручного запуска, опционально с фокусом, например `/compact focus on the API changes`.

124 124 

125Подробнее: [What survives compaction](https://code.claude.com/docs/ru/context-window.md#what-survives-compaction) · [When context fills up](https://code.claude.com/docs/ru/how-claude-code-works.md#when-context-fills-up)125Подробнее: [What survives compaction](https://code.claude.com/docs/ru/context-window.md#what-survives-compaction) · [When context fills up](https://code.claude.com/docs/ru/how-claude-code-works.md#when-context-fills-up) · [When Claude Code compacts a conversation you leave idle](https://code.claude.com/docs/ru/settings-reference.md#idlecompaction)

126 126 

127### Connector127### Connector

128 128 

hooks.md +15 −5

Details

1426 1426 

1427Хуки Setup не могут блокировать; выполнение продолжается при любом коде выхода. При любом коде выхода Claude Code отбрасывает [поля вывода JSON](#json-output) хука Setup, такие как `systemMessage`, `continue` и `hookSpecificOutput.additionalContext`. С `-p` stdout, stderr и код выхода хука Setup появляются в выводе запуска только как [события `hook_response`](https://code.claude.com/docs/ru/headless#read-session-metadata), если вы запускаете с `--output-format stream-json --verbose`.1427Хуки Setup не могут блокировать; выполнение продолжается при любом коде выхода. При любом коде выхода Claude Code отбрасывает [поля вывода JSON](#json-output) хука Setup, такие как `systemMessage`, `continue` и `hookSpecificOutput.additionalContext`. С `-p` stdout, stderr и код выхода хука Setup появляются в выводе запуска только как [события `hook_response`](https://code.claude.com/docs/ru/headless#read-session-metadata), если вы запускаете с `--output-format stream-json --verbose`.

1428 1428 

1429Хуки Setup имеют доступ к `CLAUDE_ENV_FILE`. Переменные, записанные в этот файл, сохраняются для последующих команд Bash в сессии, как в [хуках SessionStart](#persist-environment-variables). На `Setup` выполняются только хуки `type: "command"`. Хук `type: "mcp_tool"` на `Setup` всегда пропускается, как описано в разделе [Поля хука MCP-инструмента](#mcp-tool-hook-fields).1429Хуки Setup имеют доступ к `CLAUDE_ENV_FILE`. Если ваш хук записывает переменные в этот файл, они сохраняются для последующих команд Bash в сессии, как и в [хуках SessionStart](#persist-environment-variables). На `Setup` запускаются только хуки `type: "command"`. Хук `type: "mcp_tool"` на `Setup` всегда пропускается, как описано в разделе [Поля хуков MCP-инструментов](#mcp-tool-hook-fields).

1430 1430 

1431### InstructionsLoaded1431### InstructionsLoaded

1432 1432 


1483 1483 

1484[Callback-хук Agent SDK](https://code.claude.com/docs/ru/agent-sdk/hooks.md) на `UserPromptSubmit`, достигший таймаута, блокирует промпт с сообщением, в котором указаны хук и таймаут, потому что callback в этом месте может выполнять роль политики, которая не должна пропускать промпт при сбое. Сессия продолжается.1484[Callback-хук Agent SDK](https://code.claude.com/docs/ru/agent-sdk/hooks.md) на `UserPromptSubmit`, достигший таймаута, блокирует промпт с сообщением, в котором указаны хук и таймаут, потому что callback в этом месте может выполнять роль политики, которая не должна пропускать промпт при сбое. Сессия продолжается.

1485 1485 

1486#### `Esc` во время проверки промпта

1487 

1488Если вы нажмёте `Esc` или прервёте сессию, пока хуки ещё проверяют промпт, проверка останавливается, и промпт не доходит до Claude. Текст, который вы ввели в терминале, возвращается в поле ввода промпта, и хуки проверяют его снова, когда вы отправляете его повторно.

1489 

1490Хук может заблокировать промпт в тот же момент, когда вы прерываете сессию. В этом случае промпт остаётся заблокированным: вы видите [сообщение о блокировке](#what-a-blocked-prompt-leaves-behind) этого хука, а текст не возвращается в поле ввода.

1491 

1486#### Входные данные UserPromptSubmit1492#### Входные данные UserPromptSubmit

1487 1493 

1488Помимо [общих входных полей](#common-input-fields), хуки UserPromptSubmit получают поле `prompt`, содержащее отправленный текст. Вставленное содержимое, свёрнутое в заглушку `[Pasted text #N]`, поступает развёрнутым на своём месте. В сессиях, где Claude Code [помечает вставленный текст для Claude](https://code.claude.com/docs/ru/terminal-config.md#how-claude-treats-pasted-text), это развёрнутое содержимое находится между строкой `<pasted_content id="…">` и строкой `</pasted_content id="…">`, поэтому учитывайте эти строки, если ваш хук разбирает промпт.1494Помимо [общих входных полей](#common-input-fields), хуки UserPromptSubmit получают поле `prompt`, содержащее отправленный текст. Вставленное содержимое, свёрнутое в заглушку `[Pasted text #N]`, поступает развёрнутым на своём месте. В сессиях, где Claude Code [помечает вставленный текст для Claude](https://code.claude.com/docs/ru/terminal-config.md#how-claude-treats-pasted-text), это развёрнутое содержимое находится между строкой `<pasted_content id="…">` и строкой `</pasted_content id="…">`, поэтому учитывайте эти строки, если ваш хук разбирает промпт.


1741 1747 

1742Используйте [управление решениями PreToolUse](#pretooluse-decision-control), чтобы разрешить, запретить, запросить подтверждение или отложить вызов инструмента.1748Используйте [управление решениями PreToolUse](#pretooluse-decision-control), чтобы разрешить, запретить, запросить подтверждение или отложить вызов инструмента.

1743 1749 

1744[Callback-хук Agent SDK](https://code.claude.com/docs/ru/agent-sdk/hooks.md) на `PreToolUse`, превысивший таймаут, блокирует вызов инструмента, и Claude получает результат с ошибкой, в которой указан таймаут.1750[Хук обратного вызова Agent SDK](https://code.claude.com/docs/ru/agent-sdk/hooks.md#hook-timeout) в `PreToolUse`, превысивший свой таймаут, блокирует вызов инструмента.

1745 1751 

1746#### Входные данные PreToolUse1752#### Входные данные PreToolUse

1747 1753 


2970 2976 

2971Запускается, когда shell-команда в основном диалоге изменяет рабочий каталог, например когда Claude выполняет команду `cd`. Используйте это для реакции на смену каталога: перезагрузки переменных окружения, активации специфичных для проекта наборов инструментов или автоматического запуска скриптов настройки. Работает в паре с [FileChanged](#filechanged) для таких инструментов, как [direnv](https://direnv.net/), которые управляют окружением для каждого каталога.2977Запускается, когда shell-команда в основном диалоге изменяет рабочий каталог, например когда Claude выполняет команду `cd`. Используйте это для реакции на смену каталога: перезагрузки переменных окружения, активации специфичных для проекта наборов инструментов или автоматического запуска скриптов настройки. Работает в паре с [FileChanged](#filechanged) для таких инструментов, как [direnv](https://direnv.net/), которые управляют окружением для каждого каталога.

2972 2978 

2973Хуки CwdChanged имеют доступ к [`CLAUDE_ENV_FILE`](#persist-environment-variables). Переменные, записанные в этот файл, сохраняются в последующих командах Bash до следующего события CwdChanged, когда Claude Code очищает их.2979Хуки CwdChanged имеют доступ к [`CLAUDE_ENV_FILE`](#persist-environment-variables). Если ваш хук записывает переменные в этот файл, они сохраняются в последующих командах Bash до следующего события CwdChanged, когда Claude Code их очищает.

2974 2980 

2975CwdChanged не поддерживает matcher и срабатывает при каждом возникновении события.2981CwdChanged не поддерживает matcher и срабатывает при каждом возникновении события.

2976 2982 


3135* Claude Code изолирует [фоновую сессию](https://code.claude.com/docs/ru/agent-view.md#how-file-edits-are-isolated) в собственном worktree3141* Claude Code изолирует [фоновую сессию](https://code.claude.com/docs/ru/agent-view.md#how-file-edits-are-isolated) в собственном worktree

3136* [`claude remote-control`](https://code.claude.com/docs/ru/remote-control#start-a-remote-control-session) в режиме `worktree` запускает сессию в собственном worktree3142* [`claude remote-control`](https://code.claude.com/docs/ru/remote-control#start-a-remote-control-session) в режиме `worktree` запускает сессию в собственном worktree

3137 3143 

3138Если Claude выполняет `git worktree add` через инструмент Bash вместо вызова `EnterWorktree`, ваш хук WorktreeCreate не запускается. Чтобы проверить или заблокировать эту команду, добавьте хук [`PreToolUse`](#pretooluse) с matcher `Bash`.3144Хук WorktreeCreate не запускается для worktree, который Claude добавляет через Bash, а хук плагина не запускается для worktree, создаваемого при запуске с `--worktree` и [`--tmux`](https://code.claude.com/docs/ru/cli-reference#cli-flags):

3145 

3146* **`git worktree add` через Bash**: чтобы проверить или заблокировать эту команду, добавьте хук [`PreToolUse`](#pretooluse) с matcher `Bash`.

3147* **`--worktree` с `--tmux`**: Claude Code создаёт worktree до загрузки плагинов, поэтому хук WorktreeCreate из плагина не запускается. Чтобы ваш хук запускался с обоими флагами, определите его в [файле настроек](#configuration). До v2.1.300 хук WorktreeCreate плагина не запускался и с одним только `--worktree`.

3139 3148 

3140По умолчанию Claude Code создаёт изолированную рабочую копию с помощью `git worktree`. Настройка хука WorktreeCreate заменяет это стандартное поведение git, позволяя использовать другую систему контроля версий, например SVN, Perforce или Mercurial.3149По умолчанию Claude Code создаёт изолированную рабочую копию с помощью `git worktree`. Настройка хука WorktreeCreate заменяет это стандартное поведение git, позволяя использовать другую систему контроля версий, например SVN, Perforce или Mercurial.

3141 3150 


4077 4086 

4078Когда срабатывает асинхронный hook, Claude Code запускает процесс hook и немедленно продолжает без ожидания его завершения. Hook получает те же JSON входные данные через stdin, что и синхронный hook.4087Когда срабатывает асинхронный hook, Claude Code запускает процесс hook и немедленно продолжает без ожидания его завершения. Hook получает те же JSON входные данные через stdin, что и синхронный hook.

4079 4088 

4080После выхода фонового процесса Claude Code доставляет поля `additionalContext` и `systemMessage` из JSON ответа hook к Claude на следующем ходу разговора. В отличие от `systemMessage` синхронного hook, ни одно из этих полей не показывается вам.4089После выхода фонового процесса Claude Code доставляет поля `additionalContext` и `systemMessage` из JSON-ответа хука к Claude на следующем ходу диалога, за исключением [повторного вывода `SessionStart`](#limitations). В отличие от `systemMessage` синхронного хука, ни одно из этих полей не показывается вам.

4081 4090 

4082Выводите JSON-ответ в stdout либо единственным содержимым, либо на отдельной строке:4091Выводите JSON-ответ в stdout либо единственным содержимым, либо на отдельной строке:

4083 4092 


4145 4154 

4146* Выход hook доставляется на следующий ход разговора. Если сеанс неактивен, ответ ждёт до следующего взаимодействия пользователя. Исключение: hook `asyncRewake`, который выходит с кодом 2, пробуждает Claude немедленно даже когда сеанс неактивен.4155* Выход hook доставляется на следующий ход разговора. Если сеанс неактивен, ответ ждёт до следующего взаимодействия пользователя. Исключение: hook `asyncRewake`, который выходит с кодом 2, пробуждает Claude немедленно даже когда сеанс неактивен.

4147* Каждое выполнение создаёт отдельный фоновый процесс.4156* Каждое выполнение создаёт отдельный фоновый процесс.

4157* Асинхронный хук `SessionStart` запускается каждый раз, когда срабатывает событие. Claude Code пропускает вывод хука, если текст `additionalContext` и `systemMessage` совпадает с тем, что Claude последним получил от этого хука, если только синхронный хук `SessionStart` с тех пор не добавил другой текст. Claude Code доставляет текст, когда он меняется, а также в следующий раз, когда хук запускается после сжатия контекста или `/clear`. До v2.1.295 Claude Code добавлял один и тот же текст в диалог заново при каждом возобновлении.

4148 4158 

4149## Соображения безопасности4159## Соображения безопасности

4150 4160 

hooks-guide.md +1 −1

Details

954* Hooks `PostToolUse` не могут отменить действия, так как инструмент уже выполнен.954* Hooks `PostToolUse` не могут отменить действия, так как инструмент уже выполнен.

955* Хуки [`PermissionRequest`](https://code.claude.com/docs/ru/hooks#permissionrequest) срабатывают, когда Claude Code собирается запросить у вас разрешение или когда он в противном случае автоматически отклонил бы вызов, для которого невозможно показать запрос. В [неинтерактивном режиме](https://code.claude.com/docs/ru/headless.md) с флагом `-p` они по-прежнему запускаются вне [режима `dontAsk`](https://code.claude.com/docs/ru/permission-modes#allow-only-pre-approved-tools-with-dontask-mode), а вызов, по которому ни один хук не принял решение и на который больше ничто не может ответить, отклоняется.955* Хуки [`PermissionRequest`](https://code.claude.com/docs/ru/hooks#permissionrequest) срабатывают, когда Claude Code собирается запросить у вас разрешение или когда он в противном случае автоматически отклонил бы вызов, для которого невозможно показать запрос. В [неинтерактивном режиме](https://code.claude.com/docs/ru/headless.md) с флагом `-p` они по-прежнему запускаются вне [режима `dontAsk`](https://code.claude.com/docs/ru/permission-modes#allow-only-pre-approved-tools-with-dontask-mode), а вызов, по которому ни один хук не принял решение и на который больше ничто не может ответить, отклоняется.

956* Hooks `Stop` срабатывают всякий раз, когда Claude завершает ответ, а не только при завершении задачи. Они не срабатывают при прерывании пользователем. Ошибки API срабатывают [StopFailure](https://code.claude.com/docs/ru/hooks.md#stopfailure) вместо этого.956* Hooks `Stop` срабатывают всякий раз, когда Claude завершает ответ, а не только при завершении задачи. Они не срабатывают при прерывании пользователем. Ошибки API срабатывают [StopFailure](https://code.claude.com/docs/ru/hooks.md#stopfailure) вместо этого.

957* Когда несколько hooks `PreToolUse` возвращают [`updatedInput`](https://code.claude.com/docs/ru/hooks#pretooluse) для переписания аргументов инструмента, последний завершённый побеждает. Поскольку hooks запускаются параллельно, порядок недетерминирован. Избегайте наличия более одного hook, изменяющего ввод одного и того же инструмента.957* Когда несколько хуков `PreToolUse` возвращают [`updatedInput`](https://code.claude.com/docs/ru/hooks#pretooluse), чтобы переписать входные данные инструмента, Claude Code не объединяет эти изменения и не гарантирует, с каким из них будет запущен инструмент. Избегайте наличия более одного хука, изменяющего входные данные одного и того же инструмента.

958 958 

959### Hooks и режимы разрешений959### Hooks и режимы разрешений

960 960 

Details

131 131 

132#### Когда контекст заполняется132#### Когда контекст заполняется

133 133 

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

135 135 

136Чтобы контролировать, что сохраняется во время компактирования, добавьте раздел «Compact Instructions» в CLAUDE.md или запустите `/compact` с фокусом (например, `/compact focus on the API changes`).136Чтобы контролировать, что сохраняется во время компактирования, добавьте раздел «Compact Instructions» в CLAUDE.md или запустите `/compact` с фокусом (например, `/compact focus on the API changes`).

137 137 

Details

659 659 

660Чтобы переназначить клавиши, которые прокручивают список файлов или меняют сравнение, см. [Действия панели diff](https://code.claude.com/docs/ru/keybindings.md#diff-panel-actions).660Чтобы переназначить клавиши, которые прокручивают список файлов или меняют сравнение, см. [Действия панели diff](https://code.claude.com/docs/ru/keybindings.md#diff-panel-actions).

661 661 

662Во время незавершённого слияния, rebase, cherry-pick или revert панель продолжает показывать изменения, которые она в последний раз прочитала из git, чтобы не заполняться входящими изменениями этой операции. Она обновляется при первом обновлении после завершения операции, например когда Claude в следующий раз редактирует файл.

663 

662### Diff dialog664### Diff dialog

663 665 

664Диалоговое окно diff открывается в виде блока с рамкой над промптом и отображает изменённые файлы с количеством добавленных и удалённых строк. Оно сравнивает их с `HEAD` или с тем, что вы в последний раз [выбрали в панели diff](#diff-panel) для этого репозитория.666Диалоговое окно diff открывается в виде блока с рамкой над промптом и отображает изменённые файлы с количеством добавленных и удалённых строк. Оно сравнивает их с `HEAD` или с тем, что вы в последний раз [выбрали в панели diff](#diff-panel) для этого репозитория.

keybindings.md +4 −4

Details

678 678 

679## Взаимодействие с режимом vim679## Взаимодействие с режимом vim

680 680 

681Когда включен режим vim через `/config` → Editor mode, сочетания клавиш и режим vim работают независимо:681Когда вы включаете режим vim с помощью настройки Editor mode в `/config`, сочетания клавиш и режим vim работают независимо:

682 682 

683* **Режим vim** обрабатывает ввод на уровне текстового ввода (движение курсора, режимы, движения)683* **Режим vim** обрабатывает ввод на уровне текстового ввода: движение курсора, режимы и движения

684* **Сочетания клавиш** обрабатывают действия на уровне компонента (переключение задач, отправка и т. д.)684* **Сочетания клавиш** обрабатывают действия на уровне компонента, например переключение задач или отправку сообщения

685* Клавиша Escape в режиме vim переключает INSERT в NORMAL режим; она не запускает `chat:cancel`685* Клавиша Escape в режиме vim переключает режим INSERT в режим NORMAL; она не вызывает `chat:cancel`

686* Большинство сочетаний Ctrl+клавиша проходят через режим vim в систему сочетаний клавиш686* Большинство сочетаний Ctrl+клавиша проходят через режим vim в систему сочетаний клавиш

687* Клавиши vim не переназначаются через файл сочетаний клавиш. Чтобы сопоставить двухклавишную последовательность в режиме INSERT, такую как `jj`, с клавишей Escape, используйте параметр [`vimInsertModeRemaps`](https://code.claude.com/docs/ru/interactive-mode#remap-insert-mode-key-sequences)687* Клавиши vim не переназначаются через файл сочетаний клавиш. Чтобы сопоставить двухклавишную последовательность в режиме INSERT, такую как `jj`, с клавишей Escape, используйте параметр [`vimInsertModeRemaps`](https://code.claude.com/docs/ru/interactive-mode#remap-insert-mode-key-sequences)

688* В режиме vim NORMAL `?` показывает меню справки (поведение vim)688* В режиме vim NORMAL `?` показывает меню справки (поведение vim)

Details

306 306 

307## Добавление skills для каждого каталога307## Добавление skills для каждого каталога

308 308 

309Любой подкаталог может определить [skills](https://code.claude.com/docs/ru/skills.md), ограниченные собственным стеком. Skill загружается по требованию, когда Claude определит, что он релевантен, поэтому специфичные для API инструменты не потребляют контекст во время работы с фронтенд-кодом.309Любой подкаталог может определить [skills](https://code.claude.com/docs/ru/skills.md), ограниченные собственным стеком. Skill загружается по требованию, когда Claude определит, что он релевантен.

310 310 

311Skills находятся в `.claude/skills/` внутри каталога. Коммитьте их вместе с кодом этой области, чтобы каждый, кто клонирует репозиторий, получил их. В монорепозитории это может быть один набор skills на пакет. В большой кодовой базе с единой структурой это один набор на подсистему, например `src/db/.claude/skills/`.311Skills находятся в `.claude/skills/` внутри каталога. Коммитьте их вместе с кодом этой области, чтобы каждый, кто клонирует репозиторий, получил их. В монорепозитории это может быть один набор skills на пакет. В большой кодовой базе с единой структурой это один набор на подсистему, например `src/db/.claude/skills/`.

312 312 


347- Mock external services in `src/__tests__/mocks/`347- Mock external services in `src/__tests__/mocks/`

348```348```

349 349 

350Другой подкаталог содержит различные skills таким же образом: `packages/web/.claude/skills/component-patterns/` описывает соглашения компонентов фронтенда вместо тестирования. Когда Claude работает с файлом в `packages/api/`, он загружает skill api-testing. Когда он работает в `packages/web/`, он загружает component-patterns вместо этого. Skills ни одного из этих каталогов не загружаются во время задач другого.350Другой подкаталог содержит различные skills таким же образом: `packages/web/.claude/skills/component-patterns/` описывает соглашения компонентов фронтенда вместо тестирования. Когда Claude работает с файлом в `packages/api/`, он загружает skill api-testing. Когда он работает в `packages/web/`, он загружает component-patterns.

351 351 

352Вы также можете ограничить skill по паттерну файла вместо размещения. Поле frontmatter [`paths`](https://code.claude.com/docs/ru/skills#frontmatter-reference) принимает glob-паттерны, и Claude автоматически загружает skill только при работе с совпадающими файлами. Используйте это для skill, который находится в `.claude/skills/` корня репозитория, но применяется только к определённым файлам, например skill для миграции базы данных, ограниченный `**/migrations/**`.352Вы также можете ограничить skill по паттерну файла вместо размещения. Поле frontmatter [`paths`](https://code.claude.com/docs/ru/skills#frontmatter-reference) принимает glob-паттерны, и Claude автоматически загружает skill только при работе с совпадающими файлами. Используйте это для skill, который находится в `.claude/skills/` корня репозитория, но применяется только к определённым файлам, например skill для миграции базы данных, ограниченный `**/migrations/**`.

353 353 

Details

520| Ошибки `400` на каждом запросе, в собственных словах шлюза отклоняющие неузнанный тип инструмента, такие как `Input tag 'advisor_20260301'`, на Claude Code v2.1.275 | При постепенном развертывании на этой версии запросы содержат запись [инструмента advisor](https://code.claude.com/docs/ru/advisor.md) даже с отключенным advisor. API Anthropic его принимает, но шлюз или вышестоящий, который проверяет типы инструментов, отклоняет весь запрос; тот, который [пересылает поля тела запроса без изменений](https://code.claude.com/docs/ru/llm-gateway-protocol.md#forward-as-open-lists), пропускает его без влияния. Запись является объявлением, которое не содержит содержимого разговора | Обновитесь до v2.1.276 или позже, которая не отправляет запись за шлюзом `ANTHROPIC_BASE_URL`, если вы не включите advisor. На v2.1.275 установите [`CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`](https://code.claude.com/docs/ru/env-vars), что удаляет запись из запросов |520| Ошибки `400` на каждом запросе, в собственных словах шлюза отклоняющие неузнанный тип инструмента, такие как `Input tag 'advisor_20260301'`, на Claude Code v2.1.275 | При постепенном развертывании на этой версии запросы содержат запись [инструмента advisor](https://code.claude.com/docs/ru/advisor.md) даже с отключенным advisor. API Anthropic его принимает, но шлюз или вышестоящий, который проверяет типы инструментов, отклоняет весь запрос; тот, который [пересылает поля тела запроса без изменений](https://code.claude.com/docs/ru/llm-gateway-protocol.md#forward-as-open-lists), пропускает его без влияния. Запись является объявлением, которое не содержит содержимого разговора | Обновитесь до v2.1.276 или позже, которая не отправляет запись за шлюзом `ANTHROPIC_BASE_URL`, если вы не включите advisor. На v2.1.275 установите [`CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`](https://code.claude.com/docs/ru/env-vars), что удаляет запись из запросов |

521| Модели отсутствуют в средстве выбора `/model` | Имена моделей шлюза отсутствуют во встроенном списке Claude Code, или Claude Code показывает [`modelPicker`](https://code.claude.com/docs/ru/settings-reference#modelpicker) набор, который заменяет встроенные параметры | Включите [обнаружение модели шлюза](#add-gateway-models-to-the-model-picker) или добавьте имена с переменными [конфигурации модели](https://code.claude.com/docs/ru/model-config.md). Если Claude Code показывает заменяющий набор `modelPicker`, добавьте модели шлюза в него, или попросите администратора добавить их, когда управляемые параметры его предоставляют |521| Модели отсутствуют в средстве выбора `/model` | Имена моделей шлюза отсутствуют во встроенном списке Claude Code, или Claude Code показывает [`modelPicker`](https://code.claude.com/docs/ru/settings-reference#modelpicker) набор, который заменяет встроенные параметры | Включите [обнаружение модели шлюза](#add-gateway-models-to-the-model-picker) или добавьте имена с переменными [конфигурации модели](https://code.claude.com/docs/ru/model-config.md). Если Claude Code показывает заменяющий набор `modelPicker`, добавьте модели шлюза в него, или попросите администратора добавить их, когда управляемые параметры его предоставляют |

522| `/fast` сообщает `Fast mode unavailable due to network connectivity issues`, в то время как запросы вывода работают | Проверка доступности [быстрого режима](https://code.claude.com/docs/ru/fast-mode.md) идёт непосредственно на `api.anthropic.com` и не следует `ANTHROPIC_BASE_URL`, поэтому заблокированный прямой исходящий трафик не проходит проверку | Добавьте `api.anthropic.com` в список разрешённых доменов, если исходящий трафик заблокирован, или установите переменную пропуска. См. [использование быстрого режима за прокси и LLM-шлюзами](https://code.claude.com/docs/ru/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |522| `/fast` сообщает `Fast mode unavailable due to network connectivity issues`, в то время как запросы вывода работают | Проверка доступности [быстрого режима](https://code.claude.com/docs/ru/fast-mode.md) идёт непосредственно на `api.anthropic.com` и не следует `ANTHROPIC_BASE_URL`, поэтому заблокированный прямой исходящий трафик не проходит проверку | Добавьте `api.anthropic.com` в список разрешённых доменов, если исходящий трафик заблокирован, или установите переменную пропуска. См. [использование быстрого режима за прокси и LLM-шлюзами](https://code.claude.com/docs/ru/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |

523| `/fast` сообщает `Fast mode is currently unavailable` в сессии, которая аутентифицируется с помощью выданного шлюзом ключа в `ANTHROPIC_API_KEY` | Пока `ANTHROPIC_BASE_URL` указывает на ваш шлюз, Claude Code не передаёт на `api.anthropic.com` ключ, который не соответствует формату API-ключа Anthropic. В этом случае проверка доступности [быстрого режима](https://code.claude.com/docs/ru/fast-mode.md) не отправляется, и при отсутствии закэшированной ранее успешной проверки Claude Code считает быстрый режим недоступным | Установите `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`; см. [использование быстрого режима за прокси и LLM-шлюзами](https://code.claude.com/docs/ru/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |523| `/fast` сообщает `Fast mode is currently unavailable` в сессии, которая аутентифицируется с помощью выданного шлюзом ключа в `ANTHROPIC_API_KEY` | Пока `ANTHROPIC_BASE_URL` указывает на ваш шлюз, а ключ не соответствует формату API-ключа Anthropic, Claude Code не отправляет проверку доступности [быстрого режима](https://code.claude.com/docs/ru/fast-mode.md). При отсутствии закэшированной ранее успешной проверки он считает быстрый режим недоступным | Установите `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`; см. [использование быстрого режима за прокси и LLM-шлюзами](https://code.claude.com/docs/ru/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |

524| `/fast` сообщает `Fast mode has been disabled by your organization` в сессии, аутентифицированной с помощью `ANTHROPIC_AUTH_TOKEN`, даже если в организации включён быстрый режим | Проверка доступности требует входа в claude.ai или API-ключа; при наличии только Bearer-токена Claude Code считает быстрый режим отключённым, не отправляя проверку | Установите `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`; см. [использование быстрого режима за прокси и LLM-шлюзами](https://code.claude.com/docs/ru/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |524| `/fast` сообщает `Fast mode has been disabled by your organization` в сессии, аутентифицированной с помощью `ANTHROPIC_AUTH_TOKEN`, даже если в организации включён быстрый режим | Проверка доступности требует входа в claude.ai или API-ключа; при наличии только Bearer-токена Claude Code считает быстрый режим отключённым, не отправляя проверку | Установите `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`; см. [использование быстрого режима за прокси и LLM-шлюзами](https://code.claude.com/docs/ru/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |

525| Claude Code просит вас войти, даже если [тест curl](#verify-the-connection) успешен | CLI не имеет собственных учетных данных: достижимый базовый URL не является одним, и в интерактивном сеансе блок `env` в `.claude/settings.json` или `.claude/settings.local.json` проекта применяется только после мастера первого запуска и [подсказки доверия](https://code.claude.com/docs/ru/permissions.md#what-runs-before-you-trust-a-folder) | Установите `ANTHROPIC_AUTH_TOKEN` где-то, где Claude Code читает перед первоначальной настройкой: экспорт оболочки, блок `env` в `~/.claude/settings.json` или управляемые параметры |525| Claude Code просит вас войти, даже если [тест curl](#verify-the-connection) успешен | CLI не имеет собственных учетных данных: достижимый базовый URL не является одним, и в интерактивном сеансе блок `env` в `.claude/settings.json` или `.claude/settings.local.json` проекта применяется только после мастера первого запуска и [подсказки доверия](https://code.claude.com/docs/ru/permissions.md#what-runs-before-you-trust-a-folder) | Установите `ANTHROPIC_AUTH_TOKEN` где-то, где Claude Code читает перед первоначальной настройкой: экспорт оболочки, блок `env` в `~/.claude/settings.json` или управляемые параметры |

526| `ANTHROPIC_API_KEY` установлен, но игнорируется, без подсказки | Ключ требует одобрения один раз в интерактивных сеансах, и ранее отклоненный ключ игнорируется без повторного запроса | Включите его под `/config` с опцией `Use custom API key` |526| `ANTHROPIC_API_KEY` установлен, но игнорируется, без подсказки | Ключ требует одобрения один раз в интерактивных сеансах, и ранее отклоненный ключ игнорируется без повторного запроса | Включите его под `/config` с опцией `Use custom API key` |

Details

148| :- | :- |148| :- | :- |

149| `x-claude-code-request-class` | Какой тип запроса это: `main` для хода основного разговора, `subagent` для хода [подагента](https://code.claude.com/docs/ru/sub-agents.md), `workflow` для агента, работающего внутри workflow, `compaction` для запроса суммирования, который компактирует разговор, или `auxiliary` для побочных запросов, таких как названия сеансов, классификаторы и резюме. Отправляется на каждом запросе |149| `x-claude-code-request-class` | Какой тип запроса это: `main` для хода основного разговора, `subagent` для хода [подагента](https://code.claude.com/docs/ru/sub-agents.md), `workflow` для агента, работающего внутри workflow, `compaction` для запроса суммирования, который компактирует разговор, или `auxiliary` для побочных запросов, таких как названия сеансов, классификаторы и резюме. Отправляется на каждом запросе |

150| `x-claude-code-agent-type` | Тип подагента, который выдал запрос: встроенное имя типа агента, такое как `Explore`, `Plan` или `general-purpose`, или `custom` для определяемого пользователем агента, `teammate` для члена [команды агентов](https://code.claude.com/docs/ru/agent-teams.md), работающего в процессе лидера, или `fork` для [ветвления](https://code.claude.com/docs/ru/sub-agents.md#fork-the-current-conversation) текущего разговора. Присутствует только на собственных ходах подагента; запросы компактирования или побочные запросы подагента сохраняют идентификатор агента, но не содержат тип. Имя агента, выбранное пользователем, никогда не отправляется |150| `x-claude-code-agent-type` | Тип подагента, который выдал запрос: встроенное имя типа агента, такое как `Explore`, `Plan` или `general-purpose`, или `custom` для определяемого пользователем агента, `teammate` для члена [команды агентов](https://code.claude.com/docs/ru/agent-teams.md), работающего в процессе лидера, или `fork` для [ветвления](https://code.claude.com/docs/ru/sub-agents.md#fork-the-current-conversation) текущего разговора. Присутствует только на собственных ходах подагента; запросы компактирования или побочные запросы подагента сохраняют идентификатор агента, но не содержат тип. Имя агента, выбранное пользователем, никогда не отправляется |

151| `x-claude-code-compaction` | Присутствует в запросе, который суммирует диалог во время [сжатия контекста](https://code.claude.com/docs/ru/prompt-caching.md#compacting-the-conversation). Значение указывает, что его вызвало: `auto`, когда контекстное окно приближалось к заполнению, `manual` для `/compact` или `reactive`, когда API отклонил запрос как слишком длинный. Значение также равно `auto` для [сжатия при простое](https://code.claude.com/docs/ru/settings-reference.md#idlecompaction). Отсутствует во всех остальных запросах |151| `x-claude-code-compaction` | Присутствует в запросе, который суммирует диалог во время [сжатия контекста](https://code.claude.com/docs/ru/prompt-caching.md#compacting-the-conversation). Значение указывает, что его вызвало: `auto`, когда контекстное окно приближалось к заполнению, `manual` для `/compact` или `reactive`, когда API отклонил запрос как слишком длинный. Значение также равно `auto` для [сжатия при простое](https://code.claude.com/docs/ru/settings-reference.md#idlecompaction) в интерактивной сессии терминала. Отсутствует во всех остальных запросах, включая запрос, который записывает резюме в фоновом режиме перед сжатием контекста |

152| `x-claude-code-context-compacted` | Присутствует один раз, на первом запросе основного разговора после компактирования, с теми же значениями, что и `x-claude-code-compaction`. Префикс разговора перед этим запросом больше не используется, поэтому кэш, основанный на нем, может быть удален |152| `x-claude-code-context-compacted` | Присутствует один раз, на первом запросе основного разговора после компактирования, с теми же значениями, что и `x-claude-code-compaction`. Префикс разговора перед этим запросом больше не используется, поэтому кэш, основанный на нем, может быть удален |

153| `x-claude-code-prev-tool-durations` | Измеренное время выполнения вызовов инструментов, результаты которых содержит этот запрос, как `<name>=<ms>;<name>=<ms>`, например `Bash=742;Read=9`. Отправляется на следующем запросе того же разговора после пакета вызовов инструментов, из основного сеанса или подагента |153| `x-claude-code-prev-tool-durations` | Измеренное время выполнения вызовов инструментов, результаты которых содержит этот запрос, как `<name>=<ms>;<name>=<ms>`, например `Bash=742;Read=9`. Отправляется на следующем запросе того же разговора после пакета вызовов инструментов, из основного сеанса или подагента |

154| `x-claude-code-prompt-id` | Случайный UUID, который идентифицирует пользовательскую подсказку, которой служит запрос. Запросы, служащие одной подсказке, делят значение, включая ходы подагентов, которые подсказка запустила. Запросы, не отнесенные к подсказке, его опускают. Используйте его для группировки запросов сеанса по подсказке. Требуется Claude Code v2.1.283 или позже |154| `x-claude-code-prompt-id` | Случайный UUID, который идентифицирует пользовательскую подсказку, которой служит запрос. Запросы, служащие одной подсказке, делят значение, включая ходы подагентов, которые подсказка запустила. Запросы, не отнесенные к подсказке, его опускают. Используйте его для группировки запросов сеанса по подсказке. Требуется Claude Code v2.1.283 или позже |


238* Когда вышестоящий сервер отклоняет только маркер `cache_control` на системном сообщении в середине диалога, Claude Code сохраняет системные сообщения и один раз повторяет попытку с перемещенным маркером. Маркер ставится на последнюю запись в `messages`, которая не является системным сообщением, — в этой повторной попытке и в последующих запросах до выхода из Claude Code238* Когда вышестоящий сервер отклоняет только маркер `cache_control` на системном сообщении в середине диалога, Claude Code сохраняет системные сообщения и один раз повторяет попытку с перемещенным маркером. Маркер ставится на последнюю запись в `messages`, которая не является системным сообщением, — в этой повторной попытке и в последующих запросах до выхода из Claude Code

239* Когда вышестоящий сервер отклоняет [подпись мышления](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), включая ошибку `400`, сообщение которой говорит, что блок `bound to a different conversation`, Claude Code удаляет более ранние блоки мышления из запроса, повторяет и исключает их из каждого последующего запроса. Новые ответы по-прежнему включают мышление239* Когда вышестоящий сервер отклоняет [подпись мышления](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), включая ошибку `400`, сообщение которой говорит, что блок `bound to a different conversation`, Claude Code удаляет более ранние блоки мышления из запроса, повторяет и исключает их из каждого последующего запроса. Новые ответы по-прежнему включают мышление

240* Когда шлюз или его вышестоящий сервер отклоняет запись [инструмента-советника](https://code.claude.com/docs/ru/advisor.md) в `tools` как неизвестный тип инструмента, Claude Code повторяет запрос один раз без этой записи и ее значения `anthropic-beta`. Более поздние запросы к этому базовому URL оставляют советника без внимания до выхода Claude Code, и `/advisor` недоступен разработчику в течение этого времени. Claude Code распознает это отклонение по ответу `400` или `422`, сообщение которого называет тип инструмента после `Input tag`, например `Input tag 'advisor_20260301'`. До версии v2.1.280 Claude Code не повторял это отклонение240* Когда шлюз или его вышестоящий сервер отклоняет запись [инструмента-советника](https://code.claude.com/docs/ru/advisor.md) в `tools` как неизвестный тип инструмента, Claude Code повторяет запрос один раз без этой записи и ее значения `anthropic-beta`. Более поздние запросы к этому базовому URL оставляют советника без внимания до выхода Claude Code, и `/advisor` недоступен разработчику в течение этого времени. Claude Code распознает это отклонение по ответу `400` или `422`, сообщение которого называет тип инструмента после `Input tag`, например `Input tag 'advisor_20260301'`. До версии v2.1.280 Claude Code не повторял это отклонение

241* Когда вышестоящий сервер отклоняет `output_config.effort`, Claude Code повторяет попытку запроса без усилия и не включает его в последующие запросы к этой модели до выхода из Claude Code. Claude Code распознает это отклонение по ответу `400`, сообщение которого называет `output_config.effort` вместе с `Extra inputs are not permitted` или сообщает, что модель не поддерживает параметр effort241* Когда вышестоящий сервер отклоняет `output_config.effort` или его значение `anthropic-beta`, Claude Code повторяет попытку и не добавляет ни то, ни другое в запросы к этой модели до выхода из Claude Code. Вашему шлюзу не нужны изменения, если он пересылает ошибку `400` вышестоящего сервера без изменений, а ее сообщение:

242 * Называет `output_config.effort` вместе с `Extra inputs are not permitted`

243 * Сообщает, что модель не поддерживает параметр effort

244 * Начинается с `Unexpected value(s)` и указывает `effort-2025-11-24` для заголовка `anthropic-beta`. Требуется v2.1.310 или более поздняя версия. Разработчики, у которых [`ANTHROPIC_BETAS`](https://code.claude.com/docs/ru/env-vars) содержит это значение, продолжают его отправлять и получать ошибку `400`, поэтому попросите их удалить эту запись

242* Когда вышестоящий сервер отклоняет поле `context_management` или его значение `anthropic-beta`, шлюз получает запрос еще раз без них. Если шлюз снова увидит их в более позднем запросе и вышестоящий сервер снова их отклонит, последует такая же повторная попытка. Claude Code распознает это отклонение по его сообщению, например содержащему `context_management: Extra inputs are not permitted`. До версии v2.1.304 Claude Code не повторял попытку при этом отклонении245* Когда вышестоящий сервер отклоняет поле `context_management` или его значение `anthropic-beta`, шлюз получает запрос еще раз без них. Если шлюз снова увидит их в более позднем запросе и вышестоящий сервер снова их отклонит, последует такая же повторная попытка. Claude Code распознает это отклонение по его сообщению, например содержащему `context_management: Extra inputs are not permitted`. До версии v2.1.304 Claude Code не повторял попытку при этом отклонении

243* Когда вышестоящий сервер отклоняет бета-поле инструмента, отличное от `defer_loading`, например `strict`, ошибка `400` доходит до разработчика. Перед этим шлюз может снова получить запрос [без полей поиска инструментов](#retry-without-tool-search). Чтобы прекратить отправку таких полей, попросите разработчиков установить [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities)246* Когда вышестоящий сервер отклоняет бета-поле инструмента, отличное от `defer_loading`, например `strict`, ошибка `400` доходит до разработчика. Перед этим шлюз может снова получить запрос [без полей поиска инструментов](#retry-without-tool-search). Чтобы прекратить отправку таких полей, попросите разработчиков установить [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities)

244 247 

Details

470Если имя не поступает, проверьте, нет ли одной из следующих причин:470Если имя не поступает, проверьте, нет ли одной из следующих причин:

471 471 

472* **Вы задали её на компьютере, где запущен Desktop**: Desktop не передаёт заданное там значение в сессию SSH472* **Вы задали её на компьютере, где запущен Desktop**: Desktop не передаёт заданное там значение в сессию SSH

473* **Вы экспортировали её в файле входа**: файлы вроде `/etc/profile` читают только оболочки входа (login shell). Значение, которое вы задаёте там через `export`, доходит до Claude Code, запущенного из оболочки входа. Оно не доходит до сессии Desktop SSH, поскольку Desktop запускает Claude Code не через оболочку входа.473* **Вы экспортировали её в `/etc/profile` или другом файле, который читают только оболочки входа (login shell)**: имя поступает, когда вы запускаете `claude` из оболочки входа, но не в сессии Desktop SSH. Desktop запускает Claude Code не через оболочку входа. Вместо этого задайте переменную в `env` в [файле управляемых настроек](https://code.claude.com/docs/ru/desktop.md#managed-settings) на удалённой машине.

474* **Значение содержит пробел**: в этом случае Claude Code не копирует ни один из ключей в события или точки данных и не сообщает об ошибке. [Уберите пробел из значения](#multi-team-organization-support).474* **Значение содержит пробел**: в этом случае Claude Code не копирует ни один из ключей в события или точки данных и не сообщает об ошибке. [Уберите пробел из значения](#multi-team-organization-support).

475* **Переменную уже задаёт что-то другое**: в сессии, запускаемой десктопным приложением, переменная, уже заданная в окружении запуска, [имеет приоритет над файлами настроек](https://code.claude.com/docs/ru/settings-reference.md#how-env-values-interact-with-your-shell). В [логе отладки](https://code.claude.com/docs/ru/debug-your-config.md) указывается каждая проигнорированная переменная. Когда стороннее развёртывание Desktop [указывает эндпоинт OTLP](#how-managed-settings-lock-the-otlp-destination) в предоставляемом им окружении, это окружение содержит собственную `OTEL_RESOURCE_ATTRIBUTES` Desktop.475* **Переменную уже задаёт что-то другое**: в сессии, запускаемой десктопным приложением, переменная, уже заданная в окружении запуска, [имеет приоритет над файлами настроек](https://code.claude.com/docs/ru/settings-reference.md#how-env-values-interact-with-your-shell). В [логе отладки](https://code.claude.com/docs/ru/debug-your-config.md) указывается каждая проигнорированная переменная. Когда стороннее развёртывание Desktop [указывает эндпоинт OTLP](#how-managed-settings-lock-the-otlp-destination) в предоставляемом им окружении, это окружение содержит собственную `OTEL_RESOURCE_ATTRIBUTES` Desktop.

476 476 


1403* `pre_tokens`: Приблизительное количество токенов до сжатия контекста1403* `pre_tokens`: Приблизительное количество токенов до сжатия контекста

1404* `post_tokens`: Приблизительное количество токенов после сжатия контекста1404* `post_tokens`: Приблизительное количество токенов после сжатия контекста

1405* `error`: Сообщение об ошибке, если сжатие контекста завершилось сбоем1405* `error`: Сообщение об ошибке, если сжатие контекста завершилось сбоем

1406* `precompute_reuse`: Задаётся, только когда `trigger` равно `"manual"`, или для [сжатия при простое](https://code.claude.com/docs/ru/settings-reference.md#idlecompaction), которое сообщает `trigger` как `"auto"`. Автосжатие может подготовить сводку в фоновом режиме до заполнения контекстного окна, и этот атрибут фиксирует, использовало ли сжатие контекста эту подготовленную сводку. `"hit"` означает, что она была использована повторно; `"miss_custom_instructions"`, `"miss_hook"` и `"miss_not_ready"` указывают причину, по которой вместо этого была вычислена новая сводка1406* `precompute_reuse`: задаётся, только если `trigger` равно `"manual"`, или если `trigger` равно `"auto"` для [сжатия при простое](https://code.claude.com/docs/ru/settings-reference.md#idlecompaction) в интерактивной сессии терминала. Автосжатие может подготовить сводку в фоновом режиме до заполнения контекстного окна, и этот атрибут фиксирует, была ли при сжатии повторно использована подготовленная сводка. `"hit"` означает, что она была использована повторно; `"miss_custom_instructions"`, `"miss_hook"` и `"miss_not_ready"` указывают причину, по которой вместо этого была вычислена новая сводка

1407 1407 

1408#### Событие завершения субагента1408#### Событие завершения субагента

1409 1409 

Details

248 248 

249**Web and mobile**249**Web and mobile**

250 250 

251На [claude.ai/code](https://claude.ai/code) используйте раскрывающееся меню режима рядом с полем промпта. В мобильном приложении нажмите кнопку **+** в поле промпта, затем **Permission**. Облачные сессии и сессии Remote Control предлагают разные режимы разрешений:251На [claude.ai/code](https://claude.ai/code) используйте раскрывающееся меню режима в строке под полем промпта. В мобильном приложении нажмите кнопку **+** в поле промпта, затем **Permission**. Облачные сессии и сессии Remote Control предлагают разные режимы разрешений:

252 252 

253* **[Облачные сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md)**: Accept edits, Plan и Auto. Accept edits соответствует режиму `default`: облачные сессии заранее разрешают редактирование файлов независимо от режима, поэтому раскрывающееся меню показывает Accept edits вместо Manual. Облачные сессии по-прежнему соблюдают `defaultMode: "acceptEdits"` из настроек. Авторежим появляется, только когда ваша организация это разрешает и выбранная модель это поддерживает. Bypass permissions недоступен.253* **[Облачные сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md)**: Accept edits, Plan и Auto. Accept edits соответствует режиму `default`: облачные сессии заранее разрешают редактирование файлов независимо от режима, поэтому раскрывающееся меню показывает Accept edits вместо Manual. Облачные сессии по-прежнему соблюдают `defaultMode: "acceptEdits"` из настроек. Авторежим появляется, только когда ваша организация это разрешает и выбранная модель это поддерживает. Bypass permissions недоступен.

254* **Сессии [Remote Control](https://code.claude.com/docs/ru/remote-control.md)** на вашем локальном компьютере: Manual, Accept edits, Plan и Auto для сессии, которую вы запустили сами, и вы не можете выбрать Bypass permissions из приложения. Чтобы использовать Auto, сессия должна соответствовать [требованиям доступности](#eliminate-prompts-with-auto-mode) авторежима. Для потока проекта, работающего на вашем компьютере, см. [Запустить поток на вашем собственном компьютере](https://code.claude.com/docs/ru/claude-projects.md#run-a-thread-on-your-own-computer).254* **Сессии [Remote Control](https://code.claude.com/docs/ru/remote-control.md)** на вашем локальном компьютере: Manual, Accept edits, Plan и Auto для сессии, которую вы запустили сами, и вы не можете выбрать Bypass permissions из приложения. Чтобы использовать Auto, сессия должна соответствовать [требованиям доступности](#eliminate-prompts-with-auto-mode) авторежима. Для потока проекта, работающего на вашем компьютере, см. [Запустить поток на вашем собственном компьютере](https://code.claude.com/docs/ru/claude-projects.md#run-a-thread-on-your-own-computer).

permissions.md +1 −1

Details

79| `acceptEdits` | Автоматически принимает редактирование файлов и общие команды файловой системы, такие как `mkdir`, `touch`, `mv` и `cp` для путей в рабочем каталоге или `additionalDirectories` |79| `acceptEdits` | Автоматически принимает редактирование файлов и общие команды файловой системы, такие как `mkdir`, `touch`, `mv` и `cp` для путей в рабочем каталоге или `additionalDirectories` |

80| `plan` | Claude читает файлы и запускает команды оболочки только для чтения для исследования, но не редактирует ваши исходные файлы; с доступным [режимом auto](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode) также запускаются одобренные классификатором команды. Обозначается как Plan в CLI и расширении VS Code |80| `plan` | Claude читает файлы и запускает команды оболочки только для чтения для исследования, но не редактирует ваши исходные файлы; с доступным [режимом auto](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode) также запускаются одобренные классификатором команды. Обозначается как Plan в CLI и расширении VS Code |

81| `auto` | Работает без обычных запросов; перед выполнением действий, таких как команды оболочки и сетевые запросы, фоновый [классификатор](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode) проверяет, что они соответствуют вашему запросу |81| `auto` | Работает без обычных запросов; перед выполнением действий, таких как команды оболочки и сетевые запросы, фоновый [классификатор](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode) проверяет, что они соответствуют вашему запросу |

82| `dontAsk` | Автоматически отклоняет каждый вызов, который иначе запросил бы подтверждение, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) всё ещё может одобрить некоторые из этих вызовов. Чтение файлов в ваших рабочих каталогах и другие действия, которые не требуют подтверждения, по-прежнему выполняются, как и инструменты, предварительно одобренные через `/permissions` или правила `permissions.allow`. `AskUserQuestion`, инструменты MCP, отмеченные [`requiresUserInteraction`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool), [чтение из сетевых путей](#network-paths) и инструменты коннекторов, [для которых ваша организация установила `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, где эта настройка достигает Claude Code, отклоняются, даже если вы их разрешили |82| `dontAsk` | Автоматически отклоняет каждый вызов, который иначе запросил бы подтверждение, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) всё ещё может одобрить некоторые из этих вызовов. Чтение файлов в ваших рабочих каталогах и другие действия, которые не требуют подтверждения, по-прежнему выполняются, как и инструменты, предварительно одобренные через `/permissions` или правила `permissions.allow`. `AskUserQuestion`, инструменты MCP, отмеченные [`requiresUserInteraction`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool), [чтение из сетевых путей](#network-paths) и инструменты коннекторов, [для которых ваша организация установила `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), отклоняются, даже если вы их разрешили. К инструментам коннекторов это относится только в сессиях, где эта настройка достигает Claude Code |

83| `bypassPermissions` | Пропускает запросы разрешений, за исключением [действий, которые ни один режим не одобряет автоматически](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves) |83| `bypassPermissions` | Пропускает запросы разрешений, за исключением [действий, которые ни один режим не одобряет автоматически](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves) |

84 84 

85> [!WARNING]85> [!WARNING]

Details

584 584 

585Команда монитора ограничена в том, где она запускается и на что может ссылаться:585Команда монитора ограничена в том, где она запускается и на что может ссылаться:

586 586 

587* **Только интерактивные сессии**: мониторы плагина запускаются в интерактивной сессии и никогда — в неинтерактивном режиме с флагом `-p`. Они также не запускаются в сессиях, где провайдер API или настройки телеметрии делают [инструмент Monitor](https://code.claude.com/docs/ru/tools-reference.md#monitor-tool) недоступным587* **Интерактивные сессии**: мониторы плагина не запускаются в неинтерактивном режиме с флагом `-p`

588* **Минимальная версия**: в Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform или Microsoft Foundry, а также при заданных `DISABLE_TELEMETRY` или `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` мониторам требуется Claude Code v2.1.310 или новее. Это требование действует, когда [получение feature-флагов](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching) отключено

588* **Нет конфигурации пользователя**: `command` получает [переменные пути](#path-variables-and-persistent-data) и `${ENV_VAR}` из окружения, но никогда `${user_config.*}`. Монитор, который ссылается на один, не запускается, и процессы монитора также не получают `CLAUDE_PLUGIN_OPTION_<KEY>`589* **Нет конфигурации пользователя**: `command` получает [переменные пути](#path-variables-and-persistent-data) и `${ENV_VAR}` из окружения, но никогда `${user_config.*}`. Монитор, который ссылается на один, не запускается, и процессы монитора также не получают `CLAUDE_PLUGIN_OPTION_<KEY>`

589* **Отключение во время сессии**: если вы отключите плагин во время сессии, Claude Code не останавливает мониторы, которые уже работают. Они останавливаются, когда сессия заканчивается590* **Отключение во время сессии**: если вы отключите плагин во время сессии, Claude Code не останавливает мониторы, которые уже работают. Они останавливаются, когда сессия заканчивается

590 591 


647 648 

648В пути директории данных `<id>` — это идентификатор плагина со всеми символами, кроме букв, цифр, `_` и `-`, заменённых на `-`, поэтому `my-plugin@my-marketplace` становится `my-plugin-my-marketplace`.649В пути директории данных `<id>` — это идентификатор плагина со всеми символами, кроме букв, цифр, `_` и `-`, заменённых на `-`, поэтому `my-plugin@my-marketplace` становится `my-plugin-my-marketplace`.

649 650 

650На Windows подставленные пути используют прямые слэши, поэтому оболочка не читает обратные слэши как экранирование.651В Windows большинство подставленных путей используют прямые слэши, как в `C:/Users/you/...`. Они сохраняют свои нативные обратные слэши в [хуке в exec-форме](https://code.claude.com/docs/ru/hooks.md#exec-form-and-shell-form) и в хуке, который запускается через PowerShell — оболочку по умолчанию в Windows, если Git Bash не установлен.

651 652 

652### Установка зависимостей в директорию данных653### Установка зависимостей в директорию данных

653 654 

Details

148 148 

149Когда два имени отличаются и кто-то устанавливает по имени манифеста, Claude Code сообщает `Plugin "<manifest-name>" not found in marketplace "<marketplace>"`. Держите два имени одинаковыми. Для получения дополнительной информации о том, как Claude Code использует два имени, см. [Справочник по загрузке плагинов](https://code.claude.com/docs/ru/plugins/loading.md#find-where-a-plugin-came-from).149Когда два имени отличаются и кто-то устанавливает по имени манифеста, Claude Code сообщает `Plugin "<manifest-name>" not found in marketplace "<marketplace>"`. Держите два имени одинаковыми. Для получения дополнительной информации о том, как Claude Code использует два имени, см. [Справочник по загрузке плагинов](https://code.claude.com/docs/ru/plugins/loading.md#find-where-a-plugin-came-from).

150 150 

151### Не допускайте неиспользуемые подмодули в клон

152 

153Когда кто-то добавляет ваш маркетплейс, Claude Code клонирует репозиторий и загружает только те подмодули git, которые содержат файлы плагинов. Требуется Claude Code v2.1.295 или более поздней версии.

154 

155Вы определяете, какие подмодули загружает Claude Code, тем, где размещаете каждый плагин:

156 

157* **Плагин в подкаталоге**: Claude Code загружает подмодули внутри каталога плагина и подмодуль, который его содержит. Поместите подмодуль, который нужен вашему плагину, внутрь каталога плагина, а ненужный держите за его пределами

158* **Плагин в корне маркетплейса**: Claude Code загружает все подмодули репозитория, как только один из файлов плагина ссылается на путь внутри любого из них. Если в вашем репозитории есть большой подмодуль, который использует только ваша сборка, переместите плагин в подкаталог

159 

160Если плагин в корне запускает файл из подмодуля, явно пропишите путь к файлу в конфигурации хука или сервера плагина, например `${CLAUDE_PLUGIN_ROOT}/vendor/tool/run.sh`. Claude Code читает эти пути, чтобы определить, нужны ли плагину подмодули. Он не видит путь, который скрипт формирует во время выполнения.

161 

162Полное правило см. в разделе [Подмодули Git в репозитории маркетплейса](https://code.claude.com/docs/ru/plugins/marketplace-reference.md#git-submodules-in-the-marketplace-repository).

163 

151## Choose a plugin source164## Choose a plugin source

152 165 

153Каждая запись плагина в `marketplace.json` имеет `source`, который говорит Claude Code, откуда загружать этот плагин. Выберите источник по тому, где хранятся файлы плагина. Таблица содержит источники, которые используют большинство владельцев marketplace.166Каждая запись плагина в `marketplace.json` имеет `source`, который говорит Claude Code, откуда загружать этот плагин. Выберите источник по тому, где хранятся файлы плагина. Таблица содержит источники, которые используют большинство владельцев marketplace.

Details

111Скажите пользователям, что нужно каждому протоколу на их машине:111Скажите пользователям, что нужно каждому протоколу на их машине:

112 112 

113* **SSH**: ключ должен работать без подсказки парольной фразы, например потому что он загружен в `ssh-agent`. Хост должен уже быть в `known_hosts`.113* **SSH**: ключ должен работать без подсказки парольной фразы, например потому что он загружен в `ssh-agent`. Хост должен уже быть в `known_hosts`.

114* **HTTPS**: Claude Code оставляет помощника учетных данных git пользователя включенным, но запрещает ему подсказывать. Учетные данные, которые помощник уже хранит, работают; те, которые ему пришлось бы просить, не работают. На GitHub запустите `gh auth login`, затем `gh auth setup-git`, чтобы сохранить один.114* **HTTPS**: Claude Code оставляет git credential helper пользователя включённым, но запрещает ему выводить запросы и не запускает программы askpass, например заданную в `GIT_ASKPASS`. Учётные данные, которые helper уже хранит, работают; те, которые ему пришлось бы запросить, не работают. На GitHub сохранить их можно командой `gh auth login`, за которой следует `gh auth setup-git`.

115 115 

116Для хоста GitHub Enterprise Server пользователям нужен доступ git к этому хосту с их машины. Смотрите [Plugin marketplaces on GHES](https://code.claude.com/docs/ru/github-enterprise-server.md#plugin-marketplaces-on-ghes) для того, что каждой поверхности Claude Code нужно, чтобы достичь marketplace, размещенного на GHES.116Для хоста GitHub Enterprise Server пользователям нужен доступ git к этому хосту с их машины. Смотрите [Plugin marketplaces on GHES](https://code.claude.com/docs/ru/github-enterprise-server.md#plugin-marketplaces-on-ghes) для того, что каждой поверхности Claude Code нужно, чтобы достичь marketplace, размещенного на GHES.

117 117 

Details

238 238 

239Приватный маркетплейс — это один в репозитории, для которого вам нужны учётные данные для клонирования, на GitHub или любом другом хосте git. Вы добавляете его с помощью той же команды `/plugin marketplace add` или `claude plugin marketplace add`, что и публичный. Claude Code клонирует его с учётными данными git, уже находящимися на вашей машине, и никогда не запрашивает, поэтому каждый способ подключения имеет требование:239Приватный маркетплейс — это один в репозитории, для которого вам нужны учётные данные для клонирования, на GitHub или любом другом хосте git. Вы добавляете его с помощью той же команды `/plugin marketplace add` или `claude plugin marketplace add`, что и публичный. Claude Code клонирует его с учётными данными git, уже находящимися на вашей машине, и никогда не запрашивает, поэтому каждый способ подключения имеет требование:

240 240 

241* **HTTPS**: применяются ваши помощники учётных данных git, поэтому доступ, который вы установили с помощью `gh auth login`, macOS Keychain или `git-credential-store`, работает. Интерактивные запросы подавляются, поэтому хост, к которому вы никогда не аутентифицировались, не удаётся вместо запроса пароля.241* **HTTPS**: применяются ваши помощники учётных данных git, поэтому доступ, который вы установили с помощью `gh auth login`, macOS Keychain или `git-credential-store`, работает. Запросы git и программы askpass отключены, включая заданную в `GIT_ASKPASS`, поэтому клонирование завершается с ошибкой вместо запроса, когда git пришлось бы запросить учётные данные.

242* **SSH**: хост должен уже находиться в вашем файле `known_hosts` и ключ должен работать без запроса парольной фразы. Если ваша настройка git называет программу SSH в `GIT_SSH_COMMAND`, `GIT_SSH` или `core.sshCommand` конфигурации git, Claude Code запускает эту программу.242* **SSH**: хост должен уже находиться в вашем файле `known_hosts` и ключ должен работать без запроса парольной фразы. Если ваша настройка git называет программу SSH в `GIT_SSH_COMMAND`, `GIT_SSH` или `core.sshCommand` конфигурации git, Claude Code запускает эту программу.

243* **Сокращение GitHub `owner/repo`**: Claude Code проверяет, аутентифицирует ли ваш ключ SSH на `github.com`, затем клонирует по SSH, если это так, и по HTTPS, если нет. Установите [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](https://code.claude.com/docs/ru/env-vars#variables), чтобы пропустить эту проверку и всегда клонировать по HTTPS.243* **Сокращение GitHub `owner/repo`**: Claude Code проверяет, аутентифицирует ли ваш ключ SSH на `github.com`, затем клонирует по SSH, если это так, и по HTTPS, если нет. Установите [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](https://code.claude.com/docs/ru/env-vars#variables), чтобы пропустить эту проверку и всегда клонировать по HTTPS.

244 244 

Details

41* **Маркетплейс, который параметры объявляют, но `known_marketplaces.json` не содержит**: Claude Code клонирует его, затем перезагружает плагины и загружает включённые плагины, которые ещё не кэшированы41* **Маркетплейс, который параметры объявляют, но `known_marketplaces.json` не содержит**: Claude Code клонирует его, затем перезагружает плагины и загружает включённые плагины, которые ещё не кэшированы

42* **Объявленный маркетплейс, чей источник изменился в параметрах**: Claude Code повторно загружает его из нового источника и показывает `Plugins changed. Run /reload-plugins to activate.`42* **Объявленный маркетплейс, чей источник изменился в параметрах**: Claude Code повторно загружает его из нового источника и показывает `Plugins changed. Run /reload-plugins to activate.`

43 43 

44Включённый плагин, который ни один путь не загрузил и у которого нет пригодного для использования каталога кэша, показывает `Plugin "<name>" not cached at <path>` на вкладке `/plugin` **Errors**, и `claude plugin list` добавляет `— run /plugin to refresh` на ту же строку. Для исправления см. [`Plugin "<name>" not cached at <path>`](https://code.claude.com/docs/ru/plugins/troubleshooting#plugin-not-cached-at).44Включённый плагин, который ни один путь не загрузил и у которого нет пригодного для использования каталога кэша, показывает `Plugin "<name>" not cached at <path>` на вкладке `/plugin` **Errors**. Для исправления см. [`Plugin "<name>" not cached at <path>`](https://code.claude.com/docs/ru/plugins/troubleshooting#plugin-not-cached-at).

45 45 

46## Как узнать, откуда взялся плагин46## Как узнать, откуда взялся плагин

47 47 

Details

155| `workflows` | Path, or array of paths | Файлы [Workflow](https://code.claude.com/docs/ru/workflows.md#distribute-a-workflow-in-a-plugin) `.js` или директории. Заменяет сканирование по умолчанию `workflows/` |155| `workflows` | Path, or array of paths | Файлы [Workflow](https://code.claude.com/docs/ru/workflows.md#distribute-a-workflow-in-a-plugin) `.js` или директории. Заменяет сканирование по умолчанию `workflows/` |

156| `experimental` | Object | Контейнер для `themes`, `monitors` и `evals`, чья форма манифеста может еще измениться |156| `experimental` | Object | Контейнер для `themes`, `monitors` и `evals`, чья форма манифеста может еще измениться |

157| `experimental.themes` | Path, or array of paths | Файлы тем или директории. Заменяет сканирование по умолчанию `themes/`. Ключ `themes` верхнего уровня все еще загружается с предупреждением `claude plugin validate` |157| `experimental.themes` | Path, or array of paths | Файлы тем или директории. Заменяет сканирование по умолчанию `themes/`. Ключ `themes` верхнего уровня все еще загружается с предупреждением `claude plugin validate` |

158| [`experimental.monitors`](#monitors) | Path, or inline array | Файл `.json`, содержащий массив monitors, или сам массив. По умолчанию `monitors/monitors.json`. Ключ `monitors` верхнего уровня все еще загружается с предупреждением `claude plugin validate`. Мониторы работают только в интерактивных сеансах и не на Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry |158| [`experimental.monitors`](#monitors) | Path, or inline array | Файл `.json`, содержащий массив monitors, или сам массив. По умолчанию `monitors/monitors.json`. Ключ `monitors` верхнего уровня все еще загружается с предупреждением `claude plugin validate`. Мониторы [не запускаются с флагом `-p`](https://code.claude.com/docs/ru/plugins/components#monitors) |

159| `experimental.evals` | Path, or array of paths | Директория, которая содержит [eval cases](https://code.claude.com/docs/ru/plugin-evals.md#use-a-different-eval-directory) плагина, когда это не директория по умолчанию `evals/`. `claude plugin eval --eval-dir` переопределяет ее |159| `experimental.evals` | Path, or array of paths | Директория, которая содержит [eval cases](https://code.claude.com/docs/ru/plugin-evals.md#use-a-different-eval-directory) плагина, когда это не директория по умолчанию `evals/`. `claude plugin eval --eval-dir` переопределяет ее |

160 160 

161В столбце Type путь — это строка относительно корня плагина, например `"./custom/commands"`.161В столбце Type путь — это строка относительно корня плагина, например `"./custom/commands"`.


606}606}

607```607```

608 608 

609На Windows подставленные пути используют прямые слэши, поэтому оболочка не читает обратные слэши как экранирование.609На Windows большинство подставленных путей используют прямые слэши, например `C:/Users/you/...`. Собственные обратные слэши сохраняются в [хуке в exec form](https://code.claude.com/docs/ru/hooks.md#exec-form-and-shell-form) и в хуке, который выполняется через PowerShell — оболочку по умолчанию на Windows, когда Git Bash не установлен.

610 610 

611## Стандартное расположение611## Стандартное расположение

612 612 

Details

172* **`url`**: Claude Code загружает только `marketplace.json`, поэтому относительные пути не могут разрешаться. Дайте каждому плагину источник объекта вместо этого, такой как `github` или `git-subdir`.172* **`url`**: Claude Code загружает только `marketplace.json`, поэтому относительные пути не могут разрешаться. Дайте каждому плагину источник объекта вместо этого, такой как `github` или `git-subdir`.

173* **`settings`**: относительные пути отклоняются сразу.173* **`settings`**: относительные пути отклоняются сразу.

174 174 

175#### Подмодули Git в репозитории маркетплейса

176 

177Когда Claude Code клонирует репозиторий маркетплейса, он загружает только те подмодули git, которые содержат файлы плагинов. Требует Claude Code v2.1.295 или позже.

178 

179Более ранние версии загружают все подмодули, включая вложенные. Если в репозитории есть большой подмодуль, Claude Code может при его загрузке превысить [таймаут клонирования](https://code.claude.com/docs/ru/plugins/troubleshooting.md#git-clone-timed-out-after-120s).

180 

181Для плагина в подкаталоге, таком как `./plugins/formatter`, Claude Code загружает подмодуль в следующих случаях:

182 

183* **Плагин находится внутри подмодуля**: подмодуль является каталогом плагина или каталогом выше него

184* **Подмодуль находится внутри плагина**: подмодуль находится где-либо внутри каталога плагина

185* **Символическая ссылка указывает внутрь подмодуля**: цель ссылки, закоммиченной в репозиторий, находится в подмодуле

186 

187Плагин в корне маркетплейса с `"source": "./"` получает либо все подмодули репозитория, либо ни одного. Claude Code загружает все подмодули, когда что-либо из следующего указывает на какой-либо подмодуль:

188 

189* **Каталог компонентов**: каталог в корне, содержащий компоненты плагина, такой как `skills/`, `hooks/` или `bin/`

190* **Путь в конфигурации плагина**: путь в записи плагина в маркетплейсе, в его `plugin.json` или в файле конфигурации, таком как `.mcp.json` или `hooks/hooks.json`

191* **Символическая ссылка**: ссылка, закоммиченная в репозиторий

192* **Текст в файлах плагина**: путь подмодуля, такой как `vendor/tool`, записанный в файле конфигурации или в файле внутри каталога компонентов

193 

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

195 

196Claude Code также загружает все подмодули, когда не может определить, какие из них содержат файлы плагинов, например:

197 

198* **`SKILL.md` в корне**: в этом случае весь репозиторий является каталогом одного скилла

199* **Файл, который Claude Code не может прочитать**: файл маркетплейса, один из файлов конфигурации плагина или `.gitmodules`

200 

201Если вы добавляете маркетплейс с `--sparse` или его источник задаёт `sparsePaths`, Claude Code извлекает только указанные там каталоги и не загружает ни одного подмодуля. Более ранние версии поступают так же.

202 

203Чтобы исключить из клона подмодуль, который не используется вашими плагинами, см. [Исключение неиспользуемых подмодулей из клона](https://code.claude.com/docs/ru/plugins/create-marketplace.md#keep-unused-submodules-out-of-the-clone).

204 

175#### Имена без префикса под pluginRoot205#### Имена без префикса под pluginRoot

176 206 

177Имя без префикса — это одно имя каталога без `/`, такое как `"formatter"`. Чтобы писать имена без префикса вместо путей `./`, установите [`metadata.pluginRoot`](#top-level-fields) на каталог, под которым они разрешаются. С `"pluginRoot": "./plugins"`, `"source": "formatter"` разрешается в `./plugins/formatter`. Требует Claude Code v2.1.239 или позже.207Имя без префикса — это одно имя каталога без `/`, такое как `"formatter"`. Чтобы писать имена без префикса вместо путей `./`, установите [`metadata.pluginRoot`](#top-level-fields) на каталог, под которым они разрешаются. С `"pluginRoot": "./plugins"`, `"source": "formatter"` разрешается в `./plugins/formatter`. Требует Claude Code v2.1.239 или позже.

Details

313 313 

314#### Что возвращают отклонённые вызовы314#### Что возвращают отклонённые вызовы

315 315 

316В результатах `<reason>` обозначает `the session was stopped and nobody has sent input since`:316В результатах `<reason>` обозначает причину, по которой вызов был отклонён. После прерывания это `the session was stopped and nobody has sent input since`. О других причинах см. [Вызовы, отклоняемые в запусках `claude -p` и сессиях Agent SDK](#calls-refused-in-non-interactive-runs).

317 317 

318| Некоторые отклонённые вызовы | Результат до следующего ввода пользователя |318| Некоторые отклонённые вызовы | Результат |

319| :- | :- |319| :- | :- |

320| `$.prompt.submit` | Разрешается с `{ drop: '<reason>' }` и не ставит промпт в очередь |320| `$.prompt.submit` | Разрешается с `{ drop: '<reason>' }` и не ставит промпт в очередь |

321| `$.command.run` | Отклоняется с ошибкой, сообщение которой заканчивается на `<reason>` |321| `$.command.run` | Отклоняется с ошибкой, сообщение которой заканчивается на `<reason>` |


324| `$.session.send` участнику [команды агентов](https://code.claude.com/docs/ru/agent-teams.md) | Разрешается с `{ isDelivered: false, reason: 'Teammate "<name>" was not messaged: <reason>.' }`, где `<name>` — имя участника команды |324| `$.session.send` участнику [команды агентов](https://code.claude.com/docs/ru/agent-teams.md) | Разрешается с `{ isDelivered: false, reason: 'Teammate "<name>" was not messaged: <reason>.' }`, где `<name>` — имя участника команды |

325| [`$.tool.call`](https://code.claude.com/docs/ru/plugins/mods/reference#mods-api-methods) для Bash с `run_in_background: true`, Monitor или CronCreate | Разрешается с `{ deny: '<tool> was not run: it starts background work, a schedule or a goal, and <reason>' }`, где `<tool>` — имя инструмента |325| [`$.tool.call`](https://code.claude.com/docs/ru/plugins/mods/reference#mods-api-methods) для Bash с `run_in_background: true`, Monitor или CronCreate | Разрешается с `{ deny: '<tool> was not run: it starts background work, a schedule or a goal, and <reason>' }`, где `<tool>` — имя инструмента |

326 326 

327Вместе с этими результатами `$.session.send` и `$.tool.call` пользователь может увидеть [всплывающее уведомление `Stopped:`](https://code.claude.com/docs/ru/plugins/mods/troubleshoot#stopped-type-a-message-to-continue).327Когда один из этих вызовов `$.session.send` или `$.tool.call` отклоняется после прерывания в интерактивной сессии, пользователь может увидеть [всплывающее уведомление `Stopped:`](https://code.claude.com/docs/ru/plugins/mods/troubleshoot#stopped-type-a-message-to-continue).

328 328 

329#### Работа, которую ваш мод запустил до прерывания329#### Работа, которую ваш мод запустил до прерывания

330 330 


341 341 

342Когда срок запланированного задания наступает или монитор генерирует событие до следующего ввода пользователя, пользователь может увидеть [всплывающее уведомление `Stopped:`](https://code.claude.com/docs/ru/plugins/mods/troubleshoot#stopped-type-a-message-to-continue).342Когда срок запланированного задания наступает или монитор генерирует событие до следующего ввода пользователя, пользователь может увидеть [всплывающее уведомление `Stopped:`](https://code.claude.com/docs/ru/plugins/mods/troubleshoot#stopped-type-a-message-to-continue).

343 343 

344### Вызовы, отклоняемые в запусках `claude -p` и сессиях Agent SDK

345 

346В запуске `claude -p` или сессии [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md) результат вроде `{ drop: 'the run reached its --max-turns limit' }` означает, что запуск отклонил вызов вашего мода.

347 

348Отклонённый `$.prompt.submit` разрешается с `{ drop: '<reason>' }`. Другие отклонённые вызовы, например `$.command.run` и `$.agent.spawn`, дают результаты, показанные в разделе [Что возвращают отклонённые вызовы](#what-refused-calls-return), с причиной вместо `<reason>`. Найдите свою `<reason>` ниже, чтобы узнать, что делать:

349 

350* **`the run reached its --max-turns limit`**: ходы от промптов вашего мода и от запущенных им субагентов учитываются в [`--max-turns`](https://code.claude.com/docs/ru/cli-reference#cli-flags) или в [ограничении ходов](https://code.claude.com/docs/ru/agent-sdk/configuration.md#limit-turns-and-spend) Agent SDK. Чтобы получить больше ходов, запустите сессию с более высоким ограничением. Если это невозможно, сделайте так, чтобы ваш мод перестал выполнять отклоняемый вызов. Если запуск получает ещё один промпт от пользователя или приложения SDK, счётчик ходов сбрасывается, и запуск снова принимает вызовы.

351* **`the run is past its --max-budget-usd limit`**: запустите сессию с более высоким `--max-budget-usd` или увеличьте [ограничение расходов](https://code.claude.com/docs/ru/agent-sdk/configuration.md#limit-turns-and-spend) Agent SDK. Если это невозможно, сделайте так, чтобы ваш мод перестал выполнять отклоняемый вызов. Ограничение применяется к общей стоимости запуска на текущий момент. Эта сумма продолжает расти, когда запуск получает ещё один промпт, поэтому повторная попытка возвращает ту же причину.

352* **`the host has ended its input`**: например, приложение SDK завершило свой [потоковый ввод](https://code.claude.com/docs/ru/agent-sdk/streaming-vs-single-mode.md) или закрылся stdin в запуске, начатом с [`--input-format stream-json`](https://code.claude.com/docs/ru/cli-reference#cli-flags). Запуск завершается и больше не принимает ввод, поэтому повторная попытка возвращает ту же причину. Сделайте так, чтобы ваш мод перестал выполнять отклоняемый вызов. Если вы сами начинаете запуск, в следующий раз держите этот ввод открытым, пока вашему моду не останется делать вызовов.

353* **`the session was stopped and nobody has sent input since`**: запуск был [прерван](#calls-and-background-work-after-the-user-interrupts-a-turn), например с помощью [`interrupt()`](https://code.claude.com/docs/ru/agent-sdk/typescript#query-object) в Agent SDK. Чтобы повторить вызов после следующего сообщения от пользователя или приложения SDK, следуйте разделу [Повторная попытка отклонённого или отброшенного вызова](#retry-a-refused-or-dropped-call).

354 

355### Запуск `claude -p` с вашим модом никогда не завершается

356 

357Если ваш мод отправляет промпт в конце каждого хода, каждый промпт запускает новый ход. Без [`--max-turns`](https://code.claude.com/docs/ru/cli-reference#cli-flags) или `--max-budget-usd` запуск `claude -p`, загружающий этот мод, продолжается, пока вы сами его не остановите.

358 

359Чтобы запуск завершался самостоятельно, добавьте любой из этих флагов к команде в оболочке. Если запуск начинают другие люди, сделайте так, чтобы ваш мод перестал отправлять промпты после завершения своей работы. Эта команда добавляет `--max-turns`:

360 

361```bash theme={null}

362claude -p "find the TODOs" --max-turns 5

363```

364 

365Когда запуск достигает этого ограничения, следующий промпт мода [отклоняется](#calls-refused-in-non-interactive-runs) вместо запуска хода, и запуск завершается.

366 

367Если запуск всё равно выходит за ограничение, выполните `claude --version` в оболочке и [обновите Claude Code](https://code.claude.com/docs/ru/setup.md#update-claude-code), если ваша версия старше v2.1.304. Промпты мода отклоняются при достижении ограничения начиная с v2.1.299. Если ваш мод запускает субагентов, их ходы учитываются в `--max-turns` начиная с v2.1.304.

368 

344## Отправка и получение сообщений между сеансами369## Отправка и получение сообщений между сеансами

345 370 

346Мод может отправить простое текстовое сообщение другой вашей сессии, одному из субагентов этой сессии или участнику её [команды агентов](https://code.claude.com/docs/ru/agent-teams.md). Он также может наблюдать за сообщениями, которые приходят и уходят.371Мод может отправить простое текстовое сообщение другой вашей сессии, одному из субагентов этой сессии или участнику её [команды агентов](https://code.claude.com/docs/ru/agent-teams.md). Он также может наблюдать за сообщениями, которые приходят и уходят.


390| `$.http` | `fetch(url, init)` по `http` или `https`. Он разрешается в `{ status, ok, headers, text }` после прочтения тела. |415| `$.http` | `fetch(url, init)` по `http` или `https`. Он разрешается в `{ status, ok, headers, text }` после прочтения тела. |

391| `$.store` | Хранилище JSON ключ-значение вашего собственного плагина, сохраняемое между сессиями |416| `$.store` | Хранилище JSON ключ-значение вашего собственного плагина, сохраняемое между сессиями |

392| `$.env` | `get` и `set` переменные окружения. Напишите имя как буквальную строку. |417| `$.env` | `get` и `set` переменные окружения. Напишите имя как буквальную строку. |

393| `$.settings` | `read` то, что содержат файлы настроек и управляемая политика |418| `$.settings` | `read()` разрешается во все настройки, объединённые в один объект. С `{ source }` или `{ key }` он вместо этого разрешается в [настройки одного источника или значение одного ключа](#read-one-source-or-one-key). |

394| `$.session` | `messages()` возвращает транскрипт как список `{ role, text, toolUses }`. Также рабочий каталог, модель и многое другое. [`usage()`](https://code.claude.com/docs/ru/plugins/mods/reference#mods-api-methods) возвращает использование контекстного окна и ограничения плана. |419| `$.session` | `messages()` возвращает транскрипт как список `{ role, text, toolUses }`. Также рабочий каталог, модель и многое другое. [`usage()`](https://code.claude.com/docs/ru/plugins/mods/reference#mods-api-methods) возвращает использование контекстного окна и ограничения плана. |

395| `$.mcp` | `call` инструмент на подключённом MCP-сервере |420| `$.mcp` | `call` инструмент на подключённом MCP-сервере |

396 421 


408* **`$.process.spawn started, and a plugin withheld its result:`**: отклонивший мод не дочитал вывод команды до конца. Claude Code останавливает команду, если она всё ещё выполняется.433* **`$.process.spawn started, and a plugin withheld its result:`**: отклонивший мод не дочитал вывод команды до конца. Claude Code останавливает команду, если она всё ещё выполняется.

409* **`$.process.spawn ran, and a plugin withheld its result:`**: отклонивший мод дочитал вывод команды до конца, поэтому команда уже завершилась434* **`$.process.spawn ran, and a plugin withheld its result:`**: отклонивший мод дочитал вывод команды до конца, поэтому команда уже завершилась

410 435 

436### Чтение всех настроек, одного источника или одного ключа

437 

438`$.settings.read()` разрешается в один объект, содержащий настройки из всех используемых источников, объединённые с учётом [приоритета](https://code.claude.com/docs/ru/settings.md#settings-precedence). Передайте `{ source }`, чтобы вместо этого прочитать один источник, `{ key }`, чтобы прочитать один ключ, или оба:

439 

440| Вызов | Разрешается в |

441| :- | :- |

442| `$.settings.read()` | Объединённые настройки в виде одного объекта. Его ключи верхнего уровня совпадают с ключами файла `settings.json`, например `permissions` и `hooks`. |

443| `$.settings.read({ source: 'policy' })` | Настройки этого одного источника в виде одного объекта или `{}`, если этот источник не содержит настроек |

444| `$.settings.read({ key: 'spinnerTipsEnabled' })` | Значение этого ключа в объединённых настройках или `undefined`, если ключ не задан |

445| `$.settings.read({ key: 'spinnerTipsEnabled', source: 'user' })` | Значение этого ключа в этом одном источнике или `undefined`, если этот источник его не задаёт |

446 

447Для `source` передайте имя того источника настроек, который нужно прочитать:

448 

449* **`user`**: `~/.claude/settings.json`

450* **`project`**: `.claude/settings.json`

451* **`local`**: `.claude/settings.local.json`

452* **`flag`**: то, что вы передаёте с помощью `--settings`, а также встроенные настройки SDK

453* **`policy`**: [управляемые настройки](https://code.claude.com/docs/ru/managed-settings.md#how-claude-code-combines-managed-sources)

454 

455Для `key` передайте точное имя одного ключа верхнего уровня, а не путь через точку во вложенный объект. Аргумент `key` требует Claude Code v2.1.304 или новее.

456 

411## Следующие шаги457## Следующие шаги

412 458 

413* [Реагирование на события](https://code.claude.com/docs/ru/plugins/mods/events.md): hook вызовы инструментов, запросы и ходы459* [Реагирование на события](https://code.claude.com/docs/ru/plugins/mods/events.md): hook вызовы инструментов, запросы и ходы

Details

46 46 

47**4. Попробуйте мод**47**4. Попробуйте мод**

48 48 

49Используйте то, что вы просили. Для примера приглашения текущее имя ветки появляется над полем приглашения. Если мод не делает то, что вы хотели, скажите Claude, что изменить. Мод перезагружается в конце каждого хода, который изменяет его файлы, поэтому вы можете попробовать изменение сразу после завершения Claude.49Используйте то, что вы просили. Для примера промпта текущее имя ветки появляется над полем промпта. Если мод не делает то, что вы хотели, скажите Claude, что изменить. Мод перезагружается в конце каждого хода, который изменяет его файлы, поэтому вы можете попробовать изменение сразу после завершения Claude.

50 

51Если строка транскрипта, начинающаяся с имени мода, сообщает, что [изменение не загрузилось](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#this-mods-change-didnt-load), вставьте эту строку в следующее сообщение, когда будете просить Claude исправить проблему. Claude не видит эту строку, если вы её не вставите.

50 52 

51### Используйте мод в других сеансах53### Используйте мод в других сеансах

52 54 

Details

93 93 

94## Подключиться к тому, что делает Claude94## Подключиться к тому, что делает Claude

95 95 

96Обрабатывайте эти события, чтобы видеть или изменять вызов инструмента, промпт или ход по мере их возникновения. Описание каждого события и того, что может вернуть хук, см. в [справочнике событий](https://code.claude.com/docs/ru/plugins/mods/reference.md#events).96Обрабатывайте эти события, чтобы видеть или изменять вызов инструмента, промпт, ход или чтение настроек по мере их возникновения. Описание каждого события и того, что может вернуть хук, см. в [справочнике событий](https://code.claude.com/docs/ru/plugins/mods/reference.md#events).

97 97 

98### Защитить или изменить вызов инструмента98### Защитить или изменить вызов инструмента

99 99 


115 115 

116Когда Claude пытается выполнить `git push --force`, команда не запускается и запрос разрешения не появляется, потому что хук не вызывает `next`. Claude читает текст `deny` как результат инструмента, поэтому пишите его как инструкцию, по которой Claude может действовать. Любая другая команда Bash выполняется так же, как без мода.116Когда Claude пытается выполнить `git push --force`, команда не запускается и запрос разрешения не появляется, потому что хук не вызывает `next`. Claude читает текст `deny` как результат инструмента, поэтому пишите его как инструкцию, по которой Claude может действовать. Любая другая команда Bash выполняется так же, как без мода.

117 117 

118Если этот хук выбрасывает исключение или превышает время ожидания, Claude Code пропускает его, и команда выполняется так же, как без мода. Чтобы вместо этого отказать в команде, [добавьте к хуку обработчик `.catch`](#handle-a-hook-that-fails).

119 

118Чтобы действовать после запуска инструмента, выполните `await next(e)`, сделайте свою работу и верните то, что дал вам `next`. Этот хук записывает в лог каждый файл `.mdx`, который изменяет Claude, с помощью [`$.ui.log`](https://code.claude.com/docs/ru/plugins/mods/api#show-something-without-starting-a-turn), который добавляет в транскрипт тусклую строку, которую Claude не читает:120Чтобы действовать после запуска инструмента, выполните `await next(e)`, сделайте свою работу и верните то, что дал вам `next`. Этот хук записывает в лог каждый файл `.mdx`, который изменяет Claude, с помощью [`$.ui.log`](https://code.claude.com/docs/ru/plugins/mods/api#show-something-without-starting-a-turn), который добавляет в транскрипт тусклую строку, которую Claude не читает:

119 121 

120```javascript theme={null}122```javascript theme={null}


177* **Пользователь вводит ответ**: `$.ui.ask` разрешается во введённый текст. Хук сравнивает его с `Run it`, поэтому любой другой текст приводит к отказу в команде.179* **Пользователь вводит ответ**: `$.ui.ask` разрешается во введённый текст. Хук сравнивает его с `Run it`, поэтому любой другой текст приводит к отказу в команде.

178* **Никто не отвечает**: `$.ui.ask` отклоняется, когда пользователь закрывает вопрос или выбирает **Chat about this**, а также при запуске `claude -p`, поэтому блок `catch` оставляет ответ равным `Refuse`180* **Никто не отвечает**: `$.ui.ask` отклоняется, когда пользователь закрывает вопрос или выбирает **Chat about this**, а также при запуске `claude -p`, поэтому блок `catch` оставляет ответ равным `Refuse`

179 181 

180Держите ожидание внутри вызова mods API, например `$.ui.ask`, потому что это время не учитывается в [ограничении времени](https://code.claude.com/docs/ru/plugins/mods/reference.md#limits) хука. Время, потраченное на ожидание вашего собственного promise, учитывается. Claude Code пропускает хук, превысивший время ожидания, поэтому удерживаемая команда будет выполнена.182Держите ожидание внутри вызова mods API, например `$.ui.ask`, потому что это время не учитывается в [ограничении времени](https://code.claude.com/docs/ru/plugins/mods/reference.md#limits) хука. Время, потраченное на ожидание вашего собственного promise, учитывается.

183 

184Claude Code пропускает хук, превысивший время ожидания, поэтому удерживаемая команда будет выполнена. Чтобы вместо этого отказать в ней, присоедините [обработчик `.catch`](#handle-a-hook-that-fails) к регистрации, которую возвращает `on`. Этот обработчик не связан с блоком `catch` внутри хука.

181 185 

182#### Одобрение или отклонение вызова инструмента до вопроса пользователю186#### Одобрение или отклонение вызова инструмента до вопроса пользователю

183 187 


207 211 

208* **На `main`**: хук возвращает `deny`, даже если правило разрешает `git push`212* **На `main`**: хук возвращает `deny`, даже если правило разрешает `git push`

209* **На другой ветке, а также для других команд**: вызов получает то же решение, что и без мода213* **На другой ветке, а также для других команд**: вызов получает то же решение, что и без мода

214* **Хук выбрасывает исключение или превышает время ожидания**: вызов также получает то же решение, что и без мода. Чтобы вместо этого отказать в вызове, [добавьте обработчик `.catch`](#handle-a-hook-that-fails), который возвращает `{ decision: 'deny', reason: 'the reason' }`.

210 215 

211Хук сопоставляет текст команды, поэтому рассматривайте его как напоминание для Claude. Чтобы заблокировать push в `main` для всех, защитите ветку на своём Git-хостинге.216Хук сопоставляет текст команды, поэтому рассматривайте его как напоминание для Claude. Чтобы заблокировать push в `main` для всех, защитите ветку на своём Git-хостинге.

212 217 


269 274 

270Когда вы отправляете промпт, например `open a PR for this change`, ваше сообщение в транскрипте выглядит так же, а Claude после него также читает строку вида `Current branch: feature/auth`. Промпт, который не упоминает pull request, проходит без изменений, и `git` не запускается.275Когда вы отправляете промпт, например `open a PR for this change`, ваше сообщение в транскрипте выглядит так же, а Claude после него также читает строку вида `Current branch: feature/auth`. Промпт, который не упоминает pull request, проходит без изменений, и `git` не запускается.

271 276 

272Чтобы остановить промпт, верните `{ drop: 'the reason' }`, не вызывая `next`. Текст возвращается в поле ввода промпта пользователя, и он видит `Prompt dropped by a hook:`, а затем вашу причину, поэтому адресуйте причину ему. Если ваш хук возвращает `drop` после того, как его вызов `next(e)` уже пропустил промпт, ход всё равно выполняется, а хук [завершается ошибкой](#handle-a-hook-that-fails) с сообщением, содержащим `a drop after its next() was answered`.277Чтобы остановить промпт, верните `{ drop: 'the reason' }`, не вызывая `next`. Текст возвращается в поле ввода промпта пользователя, и он видит `Prompt dropped by a hook:`, а затем вашу причину, поэтому адресуйте причину ему. Промпт всё равно проходит в следующих случаях:

278 

279* **Ваш хук возвращает `drop` после того, как его вызов `next(e)` уже пропустил промпт**: ход всё равно выполняется, а хук [завершается ошибкой](#handle-a-hook-that-fails) с сообщением, содержащим `a drop after its next() was answered`

280* **Ваш хук выбрасывает исключение или превышает время ожидания**: Claude Code пропускает его и отправляет промпт. [Добавьте обработчик `.catch`](#handle-a-hook-that-fails), чтобы сбой не приводил к отправке промпта, который хук остановил бы.

273 281 

274[Другие события](https://code.claude.com/docs/ru/plugins/mods/reference.md#prompts-and-what-claude-reads) охватывают остальное, что читает Claude: `prompt.section` для каждого раздела системного промпта, `prompt.context` для контекста, отправляемого с первым сообщением, и `skill.prompt` для текста скилла. Текст из этих хуков, меняющийся между запросами, [делает недействительным кэш промптов](https://code.claude.com/docs/ru/prompt-caching.md). В хуке `skill.prompt` вы также можете прочитать, [из какого плагина или файла получен скилл](https://code.claude.com/docs/ru/plugins/mods/reference.md#skill-prompt-fields).282[Другие события](https://code.claude.com/docs/ru/plugins/mods/reference.md#prompts-and-what-claude-reads) охватывают остальное, что читает Claude: `prompt.section` для каждого раздела системного промпта, `prompt.context` для контекста, отправляемого с первым сообщением, и `skill.prompt` для текста скилла. Текст из этих хуков, меняющийся между запросами, [делает недействительным кэш промптов](https://code.claude.com/docs/ru/prompt-caching.md). В хуке `skill.prompt` вы также можете прочитать, [из какого плагина или файла получен скилл](https://code.claude.com/docs/ru/plugins/mods/reference.md#skill-prompt-fields).

275 283 


305 313 

306Чтобы увидеть вызовы инструментов, которые API выполнил сам во время запроса, например вызовы [инструмента advisor](https://code.claude.com/docs/ru/advisor.md), читайте `result.serverToolUses`. Claude Code не выполняет эти вызовы, поэтому для них не срабатывает ни один хук `tool.call` или `tool.check`. Поле отсутствует, если в ответе нет таких вызовов, и для него требуется Claude Code v2.1.290 или новее.314Чтобы увидеть вызовы инструментов, которые API выполнил сам во время запроса, например вызовы [инструмента advisor](https://code.claude.com/docs/ru/advisor.md), читайте `result.serverToolUses`. Claude Code не выполняет эти вызовы, поэтому для них не срабатывает ни один хук `tool.call` или `tool.check`. Поле отсутствует, если в ответе нет таких вызовов, и для него требуется Claude Code v2.1.290 или новее.

307 315 

316### Изменить чтение настроек или отказать в нём

317 

318Хук `settings.read` запускается при чтении настроек модом и при собственном чтении Claude Code:

319 

320* **Чтение модом**: мод вызывает [`$.settings.read`](https://code.claude.com/docs/ru/plugins/mods/api#read-one-source-or-one-key).

321* **Собственное чтение Claude Code**: Claude Code формирует объединённые настройки сессии. Это чтение повторяется при изменении настроек или загруженных плагинов.

322 

323Прежде чем полагаться на любое из этих чтений, проверьте встроенного стража и свою версию:

324 

325* **Встроенный страж**: при наличии управляемых настроек или когда учётными данными сессии служит [`/login`](https://code.claude.com/docs/ru/authentication#authentication-precedence) Team или Enterprise, [встроенный страж](https://code.claude.com/docs/ru/plugins/mods/admin.md#know-what-happens-by-default) может пропускать этот хук в моде, который вы устанавливаете или загружаете с помощью `--plugin-dir`. Чтобы проверить это, найдите в [отладочном логе](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#read-the-debug-log) `settings.read bypassed by cc-plugin-sec-default`. Если строка с этим текстом называет ваш мод, попросите администратора вашей организации [установить мод как один из модов организации](https://code.claude.com/docs/ru/plugins/mods/admin.md#install-your-organizations-mods).

326* **Версия**: для срабатывания события при собственном чтении Claude Code и для поля `e.layers` требуется Claude Code v2.1.304 или новее.

327 

328#### Что получает хук `settings.read`

329 

330| Поле | Тип | Что содержит |

331| :- | :- | :- |

332| `e.layers` | массив | Один объект `{ source, settings }` для каждого используемого источника, содержащего настройки, начиная с источника с наименьшим [приоритетом](https://code.claude.com/docs/ru/settings.md#settings-precedence): `plugin`, `user`, `project`, `local`, `flag`, `policy`. Пуст в `claude plugin test`. |

333| `e.source` | строка | Единственный источник, который запросил мод, как в `$.settings.read({ source: 'policy' })`. В этом случае `e.layers` содержит только этот слой. Отсутствует при собственном чтении Claude Code и при любом другом чтении объединённых настроек. |

334 

335В `e.layers` слой `plugin` содержит настройки, которые предоставляют включённые плагины, и является только именем слоя, а не значением `source`, которое можно передать в `$.settings.read`. `flag` содержит настройки, переданные с помощью `--settings`, а `policy` — управляемые настройки.

336 

337#### Отличить собственное чтение Claude Code от чтения модом

338 

339При [собственном чтении Claude Code](#settings-read-hook) [`next.origin`](https://code.claude.com/docs/ru/plugins/mods/reference#the-hook-function) равно `{ plugin: 'engine', tier: 'core' }`, а при чтении модом `next.origin.plugin` — это имя вызывающего мода.

340 

341#### Что может вернуть хук `settings.read`

342 

343Ваш хук может вернуть результат [`next(e)`](https://code.claude.com/docs/ru/plugins/mods/reference#the-hook-function) без изменений, собственный `{ value }` или `{ deny: reason }`. При [собственном чтении Claude Code](#settings-read-hook) и при чтении модом `{ value }` заменяет то, что даёт чтение, а `{ deny: reason }` отказывает в чтении:

344 

345| Возвращаемое значение | При собственном чтении Claude Code | При чтении модом |

346| :- | :- | :- |

347| `{ value }` | Для каждого изменённого вами ключа возвращённое вами значение заменяет всё значение этого ключа в объединённых настройках сессии, если оно [соответствует схеме ключа](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#settings-read-key-refused) | Вызов этого мода разрешается в ваш `value` или в запрошенный им `key`, взятый из вашего `value`, поэтому возвращайте целый объект, а не массив |

348| `{ deny: reason }` | Сессия сохраняет настройки в том виде, в каком они были объединены до ответа любого хука, а [отладочный лог записывает ваш `reason`](https://code.claude.com/docs/ru/plugins/mods/troubleshoot#settings-read-refused) | Вызов этого мода отклоняется с `<calling mod>: $.settings.read: <reason>` |

349 

350При собственном чтении Claude Code формируйте свой `{ value }` на основе [`value` из `next(e)`](#settings-read-next), поскольку ключ, который вы опустите, окажется не задан. Если Claude Code читает ключ, например `env`, из каждого источника отдельно, его изменение в вашем `value` [ни на что не влияет](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#settings-read-key-no-effect).

351 

352#### Что `next(e)` даёт хуку `settings.read`

353 

354`next(e)` разрешается в `{ value }` или в `{ deny }`:

355 

356* **`{ value }`**: `value` — это объединённые настройки или настройки одного источника, если задано [`e.source`](#settings-read-receives). Если хук, который [запускается после вашего](#the-order-mods-run-in), вернул собственный `{ value }`, вы получаете вместо этого `value` того хука.

357* **`{ deny }`**: хук, который запускается после вашего, отказал в чтении. Верните этот `{ deny }` без изменений.

358 

359#### Изменить одну настройку из хука `settings.read`

360 

361Сначала проверьте, [какие моды получают это событие и начиная с какой версии](#settings-read-hook).

362 

363Чтобы изменить один ключ, разверните `value` из [`next(e)`](https://code.claude.com/docs/ru/plugins/mods/reference#the-hook-function) и задайте этот ключ, как этот хук делает с [`spinnerTipsEnabled`](https://code.claude.com/docs/ru/settings-reference#spinnertipsenabled). Хук не проверяет [`next.origin`](#settings-read-origin), поэтому он изменяет ключ как при [собственном чтении Claude Code](#settings-read-hook), так и при чтении модом объединённых настроек:

364 

365```javascript theme={null}

366on('settings.read', async ($, e, next) => {

367 const read = await next(e)

368 // Pass through a read of one source, so that only the merged settings change.

369 // Pass through a { deny } from a later hook too: it has no value.

370 if (e.source || !read.value) return read

371 // Keep every other key and change this one

372 return { value: { ...read.value, spinnerTipsEnabled: false } }

373})

374```

375 

376Если при собственном чтении Claude Code ваш хук возвращает значение вне схемы ключа, например строку, только этот ключ сохраняет значение, объединённое до ответа любого хука. В этом случае отладочный лог сообщает [`the answer for <key> is no value the key can hold`](https://code.claude.com/docs/ru/plugins/mods/troubleshoot#settings-read-key-refused). Если ваше значение подходит, а ключ всё равно не меняется, см. [почему возвращённый ключ ни на что не влияет](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#settings-read-key-no-effect).

377 

308### Обработка событий хуков настроек378### Обработка событий хуков настроек

309 379 

310Хуки настроек — это хуки типов command, HTTP, prompt и agent, которые вы настраиваете в файлах настроек. Каждое [событие хука настроек](https://code.claude.com/docs/ru/hooks.md#hook-events), например `Stop`, `SessionEnd` или `PostToolUse`, также является событием с именем `classic.`, за которым следует имя события хука настроек, например `classic.Stop`. `e` — это JSON, который хук настроек получает на stdin, включая `transcript_path`.380Хуки настроек — это хуки типов command, HTTP, prompt и agent, которые вы настраиваете в файлах настроек. Каждое [событие хука настроек](https://code.claude.com/docs/ru/hooks.md#hook-events), например `Stop`, `SessionEnd` или `PostToolUse`, также является событием с именем `classic.`, за которым следует имя события хука настроек, например `classic.Stop`. `e` — это JSON, который хук настроек получает на stdin, включая `transcript_path`.

Details

508* **`Input`**: принимает `onSubmit(value)` и `onInput(value)`508* **`Input`**: принимает `onSubmit(value)` и `onInput(value)`

509* **`Select`**: принимает `onSelect(value)` с его выборами в `options`, список по крайней мере одного выбора с уникальными значениями, такой как `[{ value: 'sm', label: 'Small' }, { value: 'lg', label: 'Large' }]`509* **`Select`**: принимает `onSelect(value)` с его выборами в `options`, список по крайней мере одного выбора с уникальными значениями, такой как `[{ value: 'sm', label: 'Small' }, { value: 'lg', label: 'Large' }]`

510 510 

511Тест нажимает или вводит текст в элемент управления по его `key`, поэтому дайте каждому элементу управления один. Каждое использование элемента управления также запускает [`ui.press`, `ui.input` или `ui.select`](https://code.claude.com/docs/ru/plugins/mods/reference#interface) с `key` в `e.element`, и другой мод может обработать эти события. Его хук запускается перед вашим обратным вызовом, поэтому он видит, что пользователь вводит в ваш `Input`, и может изменить это или ответить вместо вашего обратного вызова. API модов не имеет метода, который нажимает кнопку другого мода.511### Каким элементам управления нужен `key`

512 

513Дайте каждому `Input` и `Select` проп `key`, например `key: 'size'`. `Button` может обойтись без `key`, если у него есть проп `label` или единственный строковый дочерний элемент. Тогда его ключом служит значение `label` или эта строка.

514 

515Тесты и другие моды определяют элемент управления по его ключу:

516 

517* **Тесты**: [тест](https://code.claude.com/docs/ru/plugins/mods/test.md#test-a-drawing) нажимает или вводит текст в элемент управления по его ключу.

518* **Другие моды**: Claude Code запускает [`ui.press`, `ui.input` или `ui.select`](https://code.claude.com/docs/ru/plugins/mods/reference#interface) с ключом элемента управления в `e.element` до того, как выполнить обратный вызов этого элемента управления. Хук другого мода для этого события видит, что пользователь ввел в ваш `Input`, и может изменить этот текст или не дать вашему обратному вызову выполниться. API модов не дает этому моду метода для нажатия ваших кнопок.

519 

520Если сообщение говорит `needs a key` или `is drawn twice`, [найдите причину по этому сообщению](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#needs-a-key).

512 521 

513### Фокус клавиатуры и горячие клавиши522### Фокус клавиатуры и горячие клавиши

514 523 

Details

21| `.claude-plugin/plugin.json` | Да | [Манифест](https://code.claude.com/docs/ru/plugins/manifest-reference.md) плагина. Моды не добавляют обязательных полей. |21| `.claude-plugin/plugin.json` | Да | [Манифест](https://code.claude.com/docs/ru/plugins/manifest-reference.md) плагина. Моды не добавляют обязательных полей. |

22| `hooks/hooks.json` | Да | `modules`: массив с одним путём к модулю хуков относительно этого файла, например `"modules": ["./register.js"]`. Может также содержать [хуки настроек](https://code.claude.com/docs/ru/hooks.md) в поле `hooks`. |22| `hooks/hooks.json` | Да | `modules`: массив с одним путём к модулю хуков относительно этого файла, например `"modules": ["./register.js"]`. Может также содержать [хуки настроек](https://code.claude.com/docs/ru/hooks.md) в поле `hooks`. |

23| Модуль хуков, например [`hooks/register.js`](https://code.claude.com/docs/ru/plugins/mods/create#write-a-mod-yourself) | Да | Точка входа мода. Экспортирует `register(on, options)`. Имеет расширение `.js`, `.mjs`, `.cjs`, `.jsx`, `.ts`, `.mts`, `.cts` или `.tsx`. Является ES-модулем. |23| Модуль хуков, например [`hooks/register.js`](https://code.claude.com/docs/ru/plugins/mods/create#write-a-mod-yourself) | Да | Точка входа мода. Экспортирует `register(on, options)`. Имеет расширение `.js`, `.mjs`, `.cjs`, `.jsx`, `.ts`, `.mts`, `.cts` или `.tsx`. Является ES-модулем. |

24| [`types/index.d.ts`](https://code.claude.com/docs/ru/plugins/mods/interface#declare-the-values), указанный в поле `types` манифеста | Когда мод использует `$.state` или добавляет пространство имён в API модов | Объявляет значения `PluginState` и любое пространство имён, которое добавляет мод |24| [`types/index.d.ts`](https://code.claude.com/docs/ru/plugins/mods/interface#declare-the-values), если только поле `types` в манифесте не указывает другой путь | Когда мод использует `$.state` или добавляет пространство имён в API модов | Объявляет значения `PluginState` и любое пространство имён, которое добавляет мод. Чтобы не указывать `types` в манифесте, требуется версия v2.1.299 или новее. |

25| Файлы, имена которых заканчиваются на `.test.ts` или `.test.tsx` | Нет | Тесты, которые запускает [`claude plugin test`](https://code.claude.com/docs/ru/plugins/mods/test#write-a-test) |25| Файлы, имена которых заканчиваются на `.test.ts` или `.test.tsx` | Нет | Тесты, которые запускает [`claude plugin test`](https://code.claude.com/docs/ru/plugins/mods/test#write-a-test) |

26 26 

27`register` получает `on` и `options`. `options` содержит значения полей [`userConfig`](https://code.claude.com/docs/ru/plugins/components#user-configuration), объявленных в манифесте, с подставленными значениями по умолчанию.27`register` получает `on` и `options`. `options` содержит значения полей [`userConfig`](https://code.claude.com/docs/ru/plugins/components#user-configuration), объявленных в манифесте, с подставленными значениями по умолчанию.


110 110 

111### Команды и конфигурация111### Команды и конфигурация

112 112 

113События команд и конфигурации срабатывают, когда команда запускается или попадает в список, а также когда строка `/config` показывается или изменяется:113События команд и конфигурации срабатывают, когда команда запускается или попадает в список, когда строка `/config` показывается или изменяется, а также при чтении настроек:

114 114 

115| Событие | Срабатывает, когда | Хук может вернуть |115| Событие | Срабатывает, когда | Хук может вернуть |

116| :- | :- | :- |116| :- | :- | :- |


118| `command.describe` | Один раз для каждой команды, для списка команд | `{ description, argumentHint, isHidden }` |118| `command.describe` | Один раз для каждой команды, для списка команд | `{ description, argumentHint, isHidden }` |

119| `config.set` | Строка `/config` вот-вот изменится | `next({ ...e, value })` или `{ deny: reason }` |119| `config.set` | Строка `/config` вот-вот изменится | `next({ ...e, value })` или `{ deny: reason }` |

120| `config.describe` | Один раз для каждой строки `/config` | `{ label, description, isHidden }` |120| `config.describe` | Один раз для каждой строки `/config` | `{ label, description, isHidden }` |

121| [`settings.read`](https://code.claude.com/docs/ru/plugins/mods/events#settings-read-hook) | Мод вызывает [`$.settings.read`](https://code.claude.com/docs/ru/plugins/mods/api#reach-files-processes-and-the-network) или Claude Code формирует объединённые настройки сессии | `next(e)`, `{ value }` или `{ deny: reason }` |

122 

123#### `e.layers` и `e.source` в `settings.read`

124 

125* **`e.layers`**: по одному объекту `{ source, settings }` для каждого используемого источника, содержащего настройки, начиная с самого низкого [приоритета](https://code.claude.com/docs/ru/settings.md#settings-precedence). См. [Что получает хук `settings.read`](https://code.claude.com/docs/ru/plugins/mods/events#settings-read-receives).

126* **`e.source`**: единственный источник, который запросил мод, например `$.settings.read({ source: 'policy' })`. Отсутствует при собственном чтении Claude Code и при любом другом чтении объединённых настроек

127 

128В `settings.read` срабатывание события при собственном чтении Claude Code и поле `e.layers` требуют Claude Code v2.1.304 или новее. О том, когда запускается хук и что он может вернуть, с примером, см. [Изменение или отклонение чтения настроек](https://code.claude.com/docs/ru/plugins/mods/events.md#settings-read-hook).

121 129 

122### Ходы130### Ходы

123 131 

Details

168 168 

169До v2.1.292 вызов выполнялся второй раз, поэтому промпт отправлялся, команда запускалась или субагент запускался дважды.169До v2.1.292 вызов выполнялся второй раз, поэтому промпт отправлялся, команда запускалась или субагент запускался дважды.

170 170 

171### `This mod's change didn't load` или `the earlier version is no longer running`

172 

173Изменение в [моде, который Claude написала в этой сессии](https://code.claude.com/docs/ru/plugins/mods/create.md#ask-claude-for-a-mod), не удалось загрузить. Строка в транскрипте начинается с имени мода и заканчивается причиной:

174 

175* `This mod's change didn't load, so the earlier version is still running: <reason>.`

176* `This mod didn't load, and the earlier version is no longer running: <reason>.`

177 

178Claude не видит эту строку, поэтому вставьте ее в свое следующее сообщение, когда попросите Claude исправить проблему.

179 

171### `$.agent.register refused: the hooks module that made the call is no longer loaded`180### `$.agent.register refused: the hooks module that made the call is no longer loaded`

172 181 

173Строка начинается с имени вашего мода, как в `first-mod: $.agent.register refused: the hooks module that made the call is no longer loaded (it was reloaded or removed)`, и агент не регистрируется. Ваш мод был перезагружен или выгружен до вызова. Перезагрузка загружает свежую копию модуля хуков, а этот вызов пришел из кода, который все еще выполнялся в старой копии, например из хука, который еще не вернул результат.182Строка начинается с имени вашего мода, как в `first-mod: $.agent.register refused: the hooks module that made the call is no longer loaded (it was reloaded or removed)`, и агент не регистрируется. Ваш мод был перезагружен или выгружен до вызова. Перезагрузка загружает свежую копию модуля хуков, а этот вызов пришел из кода, который все еще выполнялся в старой копии, например из хука, который еще не вернул результат.


225 234 

226Прочитайте причину на этой строке. Частые причины - это проп, который элемент не принимает, и элемент, которого нет в приложении.235Прочитайте причину на этой строке. Частые причины - это проп, который элемент не принимает, и элемент, которого нет в приложении.

227 236 

237### `needs a key`, `is drawn twice` или `key each once`

238 

239У элемента в дереве, которое возвращает ваш хук `ui.render`, нет допустимого [`key`](https://code.claude.com/docs/ru/plugins/mods/interface#which-controls-need-a-key), или два элемента используют один и тот же. Найдите полученное сообщение:

240 

241* **`<Input> needs a key` или `<Select> needs a key`**: у элемента нет пропа `key`, или его `key` пуст или не является строкой, как в `key: 3`. Задайте ему в качестве `key` непустую строку.

242* **`<Button> needs a key`**: задайте кнопке непустую строку в качестве `key`

243* **`is drawn twice; each takes its own key`**: у двух элементов того вида, который назван в сообщении, одинаковый `key`, как в `Input "size" is drawn twice; each takes its own key`. Задайте каждому элементу собственный `key`.

244* **`key each once` от `press` в [тесте](https://code.claude.com/docs/ru/plugins/mods/test.md#test-a-drawing)**: в рисунке больше одной кнопки с переданным вами ключом. Кнопки с одинаковой подписью и без пропа `key` используют эту подпись как общий ключ. Задайте каждой кнопке собственный `key`.

245 

228### Строка `ui.render` сообщает `threw while drawn`246### Строка `ui.render` сообщает `threw while drawn`

229 247 

230Строка называет [точку отрисовки](https://code.claude.com/docs/ru/plugins/mods/reference.md#render-sites), затем сообщает `threw while drawn:` и ошибку, как в `first-mod: ui.render (ToolUse) threw while drawn: <error>; the engine drew its own`. Claude Code столкнулся с этой ошибкой при отрисовке дерева, которое вернул ваш хук [`ui.render`](https://code.claude.com/docs/ru/plugins/mods/reference#interface), или при отрисовке точки из [`props`, которые ваш хук передал в `next`](https://code.claude.com/docs/ru/plugins/mods/interface#change-what-claude-code-already-draws). Окончание `the engine drew its own` означает, что точка показывает обычное содержимое Claude Code.248Строка называет [точку отрисовки](https://code.claude.com/docs/ru/plugins/mods/reference.md#render-sites), затем сообщает `threw while drawn:` и ошибку, как в `first-mod: ui.render (ToolUse) threw while drawn: <error>; the engine drew its own`. Claude Code столкнулся с этой ошибкой при отрисовке дерева, которое вернул ваш хук [`ui.render`](https://code.claude.com/docs/ru/plugins/mods/reference#interface), или при отрисовке точки из [`props`, которые ваш хук передал в `next`](https://code.claude.com/docs/ru/plugins/mods/interface#change-what-claude-code-already-draws). Окончание `the engine drew its own` означает, что точка показывает обычное содержимое Claude Code.


281* **Расширение VS Code старше 2.1.299**: панель чата отрисовывает содержимое модов начиная с [версии расширения](https://code.claude.com/docs/ru/vs-code.md#install-the-extension) 2.1.299. Проверьте версию в представлении Extensions в VS Code и обновите расширение там.299* **Расширение VS Code старше 2.1.299**: панель чата отрисовывает содержимое модов начиная с [версии расширения](https://code.claude.com/docs/ru/vs-code.md#install-the-extension) 2.1.299. Проверьте версию в представлении Extensions в VS Code и обновите расширение там.

282* **Расширение старше 2.1.304, и сессия не загружает флаги функций**: обновите расширение или вместо этого запустите `claude` во встроенном терминале VS Code. Сессии в Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry пропускают эту загрузку. О других сессиях, которые ее пропускают, например о сессии через [шлюз приложений Claude](https://code.claude.com/docs/ru/claude-apps-gateway), см. [Функции, которым нужна загрузка флагов функций](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching).300* **Расширение старше 2.1.304, и сессия не загружает флаги функций**: обновите расширение или вместо этого запустите `claude` во встроенном терминале VS Code. Сессии в Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry пропускают эту загрузку. О других сессиях, которые ее пропускают, например о сессии через [шлюз приложений Claude](https://code.claude.com/docs/ru/claude-apps-gateway), см. [Функции, которым нужна загрузка флагов функций](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching).

283 301 

284## Редактирование или значение потеряно302## Правка или значение потеряны

285 303 

286Мод работает, и изменение, которое вы сделали, или значение, которое оно сохранило, отсутствует.304Мод работает, но внесённого вами изменения или сохранённого им значения нет.

287 305 

288### Ваши редактирования не вступают в силу306### Ваши правки не вступают в силу

289 307 

290Вы редактируете плагин, который установили. Claude Code запускает кэшированную копию для установленной версии.308Вы редактируете установленный плагин. Claude Code запускает кэшированную копию установленной версии.

291 309 

292Разрабатывайте с `--plugin-dir`, указывающим на вашу рабочую копию, как в `claude --plugin-dir ./first-mod`, которая перезагружается при сохранении.310Ведите разработку с `--plugin-dir`, указывающим на вашу рабочую копию, например `claude --plugin-dir ./first-mod`, — тогда мод перезагружается при сохранении.

293 311 

294### Значение сбрасывается при перезагрузке модуля312### Значение сбрасывается при перезагрузке модуля

295 313 

296Переменные уровня модуля переинициализируются при каждой перезагрузке.314Переменные уровня модуля инициализируются заново при каждой перезагрузке.

297 315 

298[Сохраняйте значение в `$.state` или `$.store`](https://code.claude.com/docs/ru/plugins/mods/interface#keep-state).316[Храните значение в `$.state` или `$.store`](https://code.claude.com/docs/ru/plugins/mods/interface#keep-state).

299 317 

300### Значение сбрасывается после `/clear`, `/resume` или `/branch`318### Значение сбрасывается после `/clear`, `/resume` или `/branch`

301 319 

302Значение сбрасывается или сохраненное значение заменяется его значением по умолчанию. Каждая из этих команд сбрасывает `$.state` на его значения по умолчанию, и `session.start` не срабатывает снова.320Значение сбрасывается, или сохранённое значение заменяется значением по умолчанию. Каждая из этих команд сбрасывает `$.state` к значениям по умолчанию, а `session.start` повторно не срабатывает.

321 

322[Загрузите сохранённое значение снова](https://code.claude.com/docs/ru/plugins/mods/interface.md#load-a-saved-value-again-after-clear) в хуке `classic.SessionStart`.

323 

324### Ключ, который возвращает ваш хук `settings.read`, не вступает в силу

325 

326Возвращённые записи `env` не становятся переменными окружения. Возвращённые правила `allow`, `ask` и `deny` не проверяются при вызовах инструментов. Задайте их в [файле настроек](https://code.claude.com/docs/ru/settings.md) или вызовите [`$.env.set`](https://code.claude.com/docs/ru/plugins/mods/api#reach-files-processes-and-the-network) для переменных окружения.

327 

328Для другого ключа проверьте, [какие моды получают `settings.read` и с какой версии](https://code.claude.com/docs/ru/plugins/mods/events#settings-read-hook), затем найдите в [логе отладки](#read-the-debug-log) `settings.read` и поищите одну из следующих строк:

329 

330| Строка лога | Значение и действие |

331| :- | :- |

332| `settings.read hook skipped` после имени вашего мода | Ваш хук завершился с ошибкой. [Исправьте ошибку, о которой сообщает строка](#hook-skipped). |

333| `settings.read bypassed by cc-plugin-sec-default` в строке, где перед ним указано имя вашего мода | [Встроенный страж](https://code.claude.com/docs/ru/plugins/mods/admin.md#know-what-happens-by-default) не стал запускать ваш хук. Попросите администратора вашей организации [установить мод как один из модов организации](https://code.claude.com/docs/ru/plugins/mods/admin.md#install-your-organizations-mods). |

334| `settings.read: the answer for <key> is no value the key can hold` | Возвращённое значение не соответствует схеме ключа. [Верните допустимое значение](#settings-read-key-refused). |

335| `settings.read: the merge never settles for <key>` | Ключи, указанные в строке, сохраняют значения из источников настроек. Задайте их в файле настроек. |

336| `answered settings.read without next()` после имени мода | Имеет значение, только если этот мод [выполняется раньше вашего](https://code.claude.com/docs/ru/plugins/mods/events.md#the-order-mods-run-in). В этом случае ваш хук не выполнился при этом чтении. [Отключите этот мод](https://code.claude.com/docs/ru/plugins/mods/overview.md#turn-mods-on-or-off) или, если его развернула ваша организация, попросите об этом её администратора. |

337| `settings.read: refused to the engine` | В чтении было отказано, поэтому `{ value }` ни одного хука не применилось. [Выясните, кто отказал](#settings-read-refused). |

338 

339Если ни одна строка не объясняет ситуацию с ключом, проверьте моды, выполняющиеся раньше вашего, на наличие хука `settings.read`, который [изменяет этот ключ](https://code.claude.com/docs/ru/plugins/mods/events.md#settings-read-example). Отключите такой мод или попросите об этом администратора вашей организации. Если такого хука нет, задайте ключ в файле настроек.

340 

341### `the answer for <key> is no value the key can hold`

342 

343Эта строка [лога отладки](#read-the-debug-log) означает, что Claude Code отклонил значение, которое ваш хук [`settings.read`](https://code.claude.com/docs/ru/plugins/mods/events#settings-read-hook) вернул для указанного ключа, и только для этого ключа:

344 

345```text theme={null}

346settings.read: the answer for <key> is no value the key can hold; the settings' own value stands

347```

348 

349Значение, которое вы вернули для указанного ключа, не соответствует схеме этого ключа, например по типу или по диапазону. Верните значение, которое допускает запись этого ключа в [справочнике настроек](https://code.claude.com/docs/ru/settings-reference.md). Пока ваше значение не подходит, ключ сохраняет значение, объединённое из источников настроек до ответа какого-либо хука. В строке оно называется собственным значением настроек.

350 

351### `settings.read: refused to the engine`

352 

353Эта строка [лога отладки](#read-the-debug-log) означает, что в [собственном чтении Claude Code](https://code.claude.com/docs/ru/plugins/mods/events.md#settings-read-hook) было отказано, поэтому `{ value }` ни одного хука не применилось, включая ваш. Когда хук `settings.read` отказывает в этом чтении с помощью [`{ deny: reason }`](https://code.claude.com/docs/ru/plugins/mods/events#settings-read-returns), строка содержит причину, указанную этим хуком:

354 

355```text theme={null}

356settings.read: refused to the engine (engine: $.settings.read: <reason>); the settings' own values stand

357```

358 

359Найдите текст `<reason>` в коде своего хука:

360 

361* **Текст есть в вашем коде**: в чтении отказал ваш хук. Сделайте так, чтобы он возвращал `{ value }`, когда [`next.origin`](https://code.claude.com/docs/ru/plugins/mods/events#settings-read-origin) указывает на собственное чтение Claude Code.

362* **Текста нет в вашем коде**: [отключайте](https://code.claude.com/docs/ru/plugins/mods/overview.md#turn-mods-on-or-off) другие свои моды по одному. После каждого отключения повторно выполните команду этой сессии из оболочки с одним `--debug-file`, указывающим на новый путь, и найдите в этом файле `refused to the engine`. Если строка есть, отключите следующий мод. Если нет — в чтении отказал последний отключённый вами мод, поэтому оставьте его отключённым.

303 363 

304[Загрузите сохраненное значение снова](https://code.claude.com/docs/ru/plugins/mods/interface.md#load-a-saved-value-again-after-clear) в hook `classic.SessionStart`.364Если других модов не осталось, используйте [файл настроек](https://code.claude.com/docs/ru/settings.md) для ключей, которые возвращает ваш хук. Его значения действуют, пока в чтении отказано.

305 365 

306## Прочитайте лог отладки366## Прочитайте лог отладки

307 367 

Details

251 251 

252Сначала проверьте сам репозиторий: неправильный `owner/repo`, репозиторий, который не существует, или приватный репозиторий, который вы не можете видеть, также заканчивается этим сообщением. Откройте URL репозитория в вашем браузере или запустите `git ls-remote <url>` в вашем терминале, чтобы подтвердить, что он существует и у вас есть доступ.252Сначала проверьте сам репозиторий: неправильный `owner/repo`, репозиторий, который не существует, или приватный репозиторий, который вы не можете видеть, также заканчивается этим сообщением. Откройте URL репозитория в вашем браузере или запустите `git ls-remote <url>` в вашем терминале, чтобы подтвердить, что он существует и у вас есть доступ.

253 253 

254Если репозиторий правильный, причина — учётные данные. Claude Code запускает git с отключёнными интерактивными приглашениями, поэтому он не может попросить вас пароль, парольную фразу ключа или учётные данные так, как это делал бы ваш терминал. Если git нужно приглашение, вы видите `fatal: Cannot prompt because user interactivity has been disabled` или `terminal prompts disabled` в исходной ошибке. Работают только учётные данные, которые уже работают неинтерактивно:254Если репозиторий правильный, причина — учётные данные. Claude Code отключает запросы git и программы askpass, включая заданную в `GIT_ASKPASS`, и запускает SSH в пакетном режиме. Когда git нужно запросить ввод, ошибка клонирования содержит `fatal: Cannot prompt because user interactivity has been disabled`, `terminal prompts disabled` или `fatal: unable to get password from user`. Срабатывают только те учётные данные, которые git может получить без запроса и без программы askpass:

255 255 

256* **SSH**: `ssh -T git@<host>` должен успешно выполниться без запроса парольной фразы, и хост должен уже находиться в `known_hosts`256* **SSH**: `ssh -T git@<host>` должен успешно выполниться без запроса парольной фразы, и хост должен уже находиться в `known_hosts`

257* **HTTPS**: ваш помощник учётных данных должен содержать токен для хоста. Для GitHub запустите `gh auth login` и `gh auth setup-git`. Для другого хоста сохраните личный токен доступа в помощнике учётных данных git. Протестируйте с помощью `git ls-remote <url>`257* **HTTPS**: ваш помощник учётных данных должен содержать токен для хоста. Для GitHub запустите `gh auth login` и `gh auth setup-git`. Для другого хоста сохраните личный токен доступа в помощнике учётных данных git. Чтобы протестировать, сбросьте `GIT_ASKPASS` в вашем терминале и запустите `git -c core.askPass= ls-remote <url>`.

258 258 

259Как только `git ls-remote` успешно выполнится в вашем терминале без приглашения, запустите добавление или обновление снова. Успешное добавление выводит `Successfully added marketplace: <name>`. Успешное обновление выводит `Successfully updated marketplace: <name>` из вашей оболочки или `✔ Updated 1 marketplace` в сеансе.259Как только проверка для вашего протокола успешно выполнится без запроса, запустите добавление или обновление снова. Успешное добавление выводит `Successfully added marketplace: <name>`. Успешное обновление выводит `Successfully updated marketplace: <name>` из вашей оболочки или `✔ Updated 1 marketplace` в сессии.

260 260 

261Чтобы Claude Code пропустил SSH для источников GitHub `owner/repo`, установите `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`. Без этого Claude Code клонирует эти источники через SSH, когда SSH-ключ для `github.com` выглядит настроенным, и возвращается к HTTPS, когда клонирование SSH не удаётся.261Чтобы Claude Code пропустил SSH для источников GitHub `owner/repo`, установите `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`. Без этого Claude Code клонирует эти источники через SSH, когда SSH-ключ для `github.com` выглядит настроенным, и возвращается к HTTPS, когда клонирование SSH не удаётся.

262 262 


318 318 

319Если репозиторий — это монорепо, ограничьте проверку каталогами, которые вы называете с помощью `claude plugin marketplace add <source> --sparse <paths>`.319Если репозиторий — это монорепо, ограничьте проверку каталогами, которые вы называете с помощью `claude plugin marketplace add <source> --sparse <paths>`.

320 320 

321Если в репозитории есть большие подмодули git, обновите Claude Code. В версии v2.1.295 и новее Claude Code загружает только [подмодули, содержащие файлы плагинов](https://code.claude.com/docs/ru/plugins/marketplace-reference.md#git-submodules-in-the-marketplace-repository). Более ранние версии загружают все подмодули, что само по себе может исчерпать 120 секунд.

322 

321### Обновления маркетплейса продолжают не работать в автономном режиме323### Обновления маркетплейса продолжают не работать в автономном режиме

322 324 

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


609| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Ни одна версия не удовлетворяет каждому диапазону, который её закрепляет. Сообщение перечисляет диапазоны. | Удалите или обновите один из конфликтующих плагинов или попросите автора вышестоящего уровня расширить его ограничение. |611| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Ни одна версия не удовлетворяет каждому диапазону, который её закрепляет. Сообщение перечисляет диапазоны. | Удалите или обновите один из конфликтующих плагинов или попросите автора вышестоящего уровня расширить его ограничение. |

610| `... has version requirements too complex to intersect` или `has an invalid version requirement` | Диапазон не является действительным semver или объединённые диапазоны не могут быть пересечены. | Исправьте недействительный диапазон или упростите длинные цепочки `\|\|`. |612| `... has version requirements too complex to intersect` или `has an invalid version requirement` | Диапазон не является действительным semver или объединённые диапазоны не могут быть пересечены. | Исправьте недействительный диапазон или упростите длинные цепочки `\|\|`. |

611| `... has no git tag satisfying <range>` | Репозиторий зависимости не имеет тега `<name>--v*` в диапазоне. | Проверьте, что вышестоящий уровень помечает выпуски этим соглашением, или ослабьте диапазон. |613| `... has no git tag satisfying <range>` | Репозиторий зависимости не имеет тега `<name>--v*` в диапазоне. | Проверьте, что вышестоящий уровень помечает выпуски этим соглашением, или ослабьте диапазон. |

612| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | Зависимость находится в другом маркетплейсе, и разрешение между маркетплейсами отключено по умолчанию. | Установите зависимость самостоятельно в той же области действия, в вашей оболочке с помощью `claude plugin install <dep>@<marketplace>` плюс `--scope`, в котором вы устанавливаете плагин, затем повторите попытку. |614| `Dependency "<dep>" (required by <plugin>) is in marketplace "<marketplace>", which is not in the allowlist` | Зависимость находится в другом маркетплейсе, и разрешение между маркетплейсами отключено по умолчанию. | Установите зависимость самостоятельно в той же области действия, в вашей оболочке с помощью `claude plugin install <dep>@<marketplace>` плюс `--scope`, в котором вы устанавливаете плагин, затем повторите попытку. |

613 615 

614Чтобы увидеть это программно, запустите `claude plugin list --json` в вашей оболочке. Плагины с проблемами содержат поле `errors` с сообщениями и поле `errorDetails` с `type` для каждого: первые три строки — `dependency-unsatisfied`, а четвёртая — `dependency-version-unsatisfied`.616Чтобы увидеть это программно, запустите `claude plugin list --json` в вашей оболочке. Плагины с проблемами содержат поле `errors` с сообщениями и поле `errorDetails` с `type` для каждого: первые три строки — `dependency-unsatisfied`, а четвёртая — `dependency-version-unsatisfied`.

615 617 


979 981 

980### `${CLAUDE_PLUGIN_ROOT}` показывает прямые косые черты на Windows982### `${CLAUDE_PLUGIN_ROOT}` показывает прямые косые черты на Windows

981 983 

982На Windows хук плагина получает `${CLAUDE_PLUGIN_ROOT}` как `C:/Users/you/...` вместо `C:\Users\you\...`, и скрипт, который ожидал обратных косых черт, ломается.984На Windows хук плагина, который запускается через Git Bash, получает `${CLAUDE_PLUGIN_ROOT}` как `C:/Users/you/...` вместо `C:\Users\you\...`, и скрипт, который ожидал обратных косых черт, ломается.

983 985 

984Claude Code запускает хуки в форме оболочки через Git Bash на Windows и подставляет корень плагина в форме Win32 с прямыми косыми чертами специально. Встроенные функции Bash, инструменты MSYS и собственные двоичные файлы Windows все принимают эту форму.986Если установлен Git Bash, [хук в форме оболочки](https://code.claude.com/docs/ru/hooks.md#exec-form-and-shell-form) по умолчанию запускается через Git Bash. Для хука, который запускается через Git Bash, Claude Code передаёт путь с прямыми косыми чертами, чтобы Bash не воспринимал обратные косые черты как экранирование. Встроенные функции Bash, инструменты MSYS и собственные двоичные файлы Windows все принимают эту форму.

985 987 

986Если вашему скрипту нужны обратные косые черты, переключитесь на одну из форм, которые сохраняют собственные пути, описанные в разделе [exec форма и shell форма](https://code.claude.com/docs/ru/hooks.md#exec-form-and-shell-form):988Если вашему скрипту нужны обратные косые черты, переключитесь на одну из форм, которые сохраняют собственные пути, описанные в разделе [exec форма и shell форма](https://code.claude.com/docs/ru/hooks.md#exec-form-and-shell-form):

987 989 


1090 1092 

1091Альтернативно, разместите маркетплейс в репозитории git и скажите пользователям добавить его с URL репозитория. Для источника git Claude Code клонирует весь репозиторий, поэтому относительные пути разрешаются. Типы источников находятся в [справочнике маркетплейса](https://code.claude.com/docs/ru/plugins/marketplace-reference.md).1093Альтернативно, разместите маркетплейс в репозитории git и скажите пользователям добавить его с URL репозитория. Для источника git Claude Code клонирует весь репозиторий, поэтому относительные пути разрешаются. Типы источников находятся в [справочнике маркетплейса](https://code.claude.com/docs/ru/plugins/marketplace-reference.md).

1092 1094 

1095### Файлы корневого плагина из подмодуля git отсутствуют после установки

1096 

1097Ваш плагин находится в корне маркетплейса и запускает или читает файл из подмодуля git этого репозитория. После установки каталог подмодуля пуст. До v2.1.295 Claude Code загружал все подмодули, поэтому каталог был заполнен.

1098 

1099Когда Claude Code клонирует ваш маркетплейс, он загружает только [подмодули, содержащие файлы плагинов](https://code.claude.com/docs/ru/plugins/marketplace-reference.md#git-submodules-in-the-marketplace-repository). Для плагина в корне он определяет это, читая пути в конфигурации плагина и текст файлов плагина. Он не может увидеть путь, который скрипт формирует во время выполнения.

1100 

1101Запишите путь в подмодуль полностью там, где Claude Code может его прочитать, например `${CLAUDE_PLUGIN_ROOT}/vendor/tool/run.sh` в команде хука. Тогда Claude Code загрузит все подмодули репозитория для этого плагина.

1102 

1093### Ошибки валидации маркетплейса1103### Ошибки валидации маркетплейса

1094 1104 

1095Вы запустили `claude plugin validate .` из каталога вашего маркетплейса и он сообщил об ошибках или предупреждениях в самом файле маркетплейса.1105Вы запустили `claude plugin validate .` из каталога вашего маркетплейса и он сообщил об ошибках или предупреждениях в самом файле маркетплейса.


1121 1131 

1122### `Marketplace source '<source>' is blocked by enterprise policy`1132### `Marketplace source '<source>' is blocked by enterprise policy`

1123 1133 

1124Вы запустили `/plugin marketplace add`, `update` или установку, и Claude Code отказал с этой строкой. Для источника GitHub или git хост следует за источником в скобках, как в `'github:owner/repo' (github.com)`.1134Вы запустили `/plugin marketplace add`, `update` или установку, и Claude Code отказал с этой строкой.

1125 1135 

1126Ваш администратор установил `blockedMarketplaces` или `strictKnownMarketplaces` в управляемых параметрах, и этот источник не разрешён. Попросите вашего администратора разрешить источник или добавить один из разрешённых источников, которые перечисляет сообщение.1136Ваш администратор установил `blockedMarketplaces` или `strictKnownMarketplaces` в управляемых параметрах, и этот источник не разрешён. Попросите вашего администратора разрешить источник или добавить один из разрешённых источников, которые перечисляет сообщение.

1127 1137 

Details

100 100 

101### Включение быстрого режима101### Включение быстрого режима

102 102 

103Включение [быстрого режима](https://code.claude.com/docs/ru/fast-mode.md) добавляет заголовок запроса, который является частью ключа кэша, поэтому первый запрос, который Claude Code отправляет с включённым быстрым режимом, читает всю историю диалога без попаданий в кэш. Claude Code устанавливает этот заголовок один раз в начале хода и сохраняет его на протяжении всего хода, поэтому если вы включаете быстрый режим, пока Claude работает, промах кэша из-за заголовка происходит при первом запросе вашего следующего хода. Эти некэшированные входные токены оплачиваются по [тарифам быстрого режима](https://code.claude.com/docs/ru/fast-mode.md#understand-the-cost-tradeoff), поэтому включение его в начале сессии стоит меньше, чем включение в глубине длинной сессии. Если ваша текущая модель не поддерживает быстрый режим, включение быстрого режима также [переключает вашу модель](#switching-models), и это переключение само по себе запускает новый кэш начиная со следующего запроса в текущем ходе.103[Быстрый режим](https://code.claude.com/docs/ru/fast-mode.md) и стандартная скорость используют отдельные кэши, поэтому после того как вы включаете или отключаете быстрый режим, следующий запрос не может использовать то, что было кэшировано на другой скорости. Когда вы впервые включаете быстрый режим в диалоге, следующий запрос читает весь диалог до этого момента без кэша по [тарифам быстрого режима](https://code.claude.com/docs/ru/fast-mode.md#understand-the-cost-tradeoff). Чтобы эта стоимость оставалась небольшой, включайте его в начале сессии.

104 104 

105Эта стоимость взимается один раз за диалог. После первого хода в быстром режиме Claude Code продолжает отправлять заголовок и меняет только настройку скорости запроса, которая не является частью ключа кэша. Отключение быстрого режима, [автоматическое переключение на стандартную скорость](https://code.claude.com/docs/ru/fast-mode.md#handle-rate-limits) после ограничения частоты запросов и повторное включение позже — всё это сохраняет кэш. Если вы [исчерпаете кредиты использования](https://code.claude.com/docs/ru/fast-mode.md#handle-rate-limits) в середине сессии, Claude Code таким же образом повторяет каждый отклонённый запрос быстрого режима на стандартной скорости, поэтому такое переключение на резервный вариант также сохраняет кэш. `/clear` и `/compact` сбрасывают это, так как они в любом случае перестраивают кэш в этих точках.105* Если вы включаете его, пока Claude работает, этот ход завершается на стандартной скорости, и вы оплачиваете некэшированное чтение при первом запросе вашего следующего хода.

106* Если ваша текущая модель не поддерживает быстрый режим, включение быстрого режима также [переключает вас на Opus](https://code.claude.com/docs/ru/fast-mode.md#toggle-fast-mode). Это [переключение модели](#switching-models) само по себе запускает новый кэш начиная со следующего запроса в текущем ходе.

107 

108При каждом последующем переключении без кэша читается всё то, чего нет в кэше для скорости, на которую вы переключаетесь. Изменения скорости, которые Claude Code выполняет самостоятельно, например [переключение на стандартную скорость](https://code.claude.com/docs/ru/fast-mode.md#handle-rate-limits) после ограничения частоты запросов и последующий возврат в быстрый режим, также считаются переключениями.

106 109 

107### Подключение или удаление MCP-сервера110### Подключение или удаление MCP-сервера

108 111 


184>187>

185> Сжатие контекста работает в вашу пользу, когда отбрасываемый контекст — это содержимое, которое вам больше не нужно. Чтобы самостоятельно выбирать, когда возникают его накладные расходы, запускайте `/compact` в естественных паузах в работе, например между задачами, вместо того чтобы ждать, пока автосжатие сработает в середине задачи. Если вы пошли по пути, от которого хотите полностью отказаться, вместо этого выполните [`/rewind`](#rewinding-the-conversation) к более раннему ходу. Перемотка усекает диалог до префикса, который уже кэширован, а не создаёт новый, как это делает сжатие.188> Сжатие контекста работает в вашу пользу, когда отбрасываемый контекст — это содержимое, которое вам больше не нужно. Чтобы самостоятельно выбирать, когда возникают его накладные расходы, запускайте `/compact` в естественных паузах в работе, например между задачами, вместо того чтобы ждать, пока автосжатие сработает в середине задачи. Если вы пошли по пути, от которого хотите полностью отказаться, вместо этого выполните [`/rewind`](#rewinding-the-conversation) к более раннему ходу. Перемотка усекает диалог до префикса, который уже кэширован, а не создаёт новый, как это делает сжатие.

186 189 

187Если вы оставляете длинный диалог без активности в сессии терминала, пока он использует [одночасовой TTL](#which-ttl-each-request-gets), Claude Code может сжать его незадолго до истечения срока действия кэша. Чтобы отключить сжатие при простое, установите для [`idleCompaction`](https://code.claude.com/docs/ru/settings-reference#idlecompaction) значение `false`; для этого требуется Claude Code v2.1.290 или более поздней версии.190Если вы оставляете длинный диалог без активности, пока он использует [одночасовой TTL](#which-ttl-each-request-gets), Claude Code может сжать его. Чтобы отключить сжатие при простое, установите для [`idleCompaction`](https://code.claude.com/docs/ru/settings-reference#idlecompaction) значение `false`; для этого требуется Claude Code v2.1.290 или более поздней версии.

188 191 

189### Накопление большого количества изображений192### Накопление большого количества изображений

190 193 


309 312 

310В Claude Code кэш фактически ограничен одной машиной и директорией. Системный запрос встраивает пути вашей автоматической памяти, и разговор открывается объявлением рабочей директории, платформы, оболочки и версии ОС. Две сессии в разных директориях поэтому создают разные префиксы и не попадают в кэш друг друга.313В Claude Code кэш фактически ограничен одной машиной и директорией. Системный запрос встраивает пути вашей автоматической памяти, и разговор открывается объявлением рабочей директории, платформы, оболочки и версии ОС. Две сессии в разных директориях поэтому создают разные префиксы и не попадают в кэш друг друга.

311 314 

312Сессии, которые вы запускаете параллельно в одной директории, создают совпадающие префиксы и читают кэш друг друга. Последовательные сессии совместно используют префикс только когда снимок состояния git, сделанный при запуске, совпадает, поскольку каждый разговор также содержит ветку и недавние коммиты из этого снимка.315* Сессии, которые вы запускаете параллельно в одном каталоге, создают совпадающие префиксы и могут читать кэш друг друга.

316* Последовательные сессии совместно используют префикс, только когда снимок состояния git, сделанный при запуске, совпадает, поскольку каждый диалог также содержит ветку и недавние коммиты из этого снимка.

317 

318Базовый кэш API шире. Кэши изолированы между организациями, а у некоторых поставщиков — и [между рабочими пространствами внутри организации](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-storage-and-sharing). В этих границах два запроса используют общий кэш, только когда совпадают их модель, [скорость](#turning-on-fast-mode) и префикс.

313 319 

314Базовый кэш API шире. Кэши изолированы между организациями и на некоторых поставщиках, [между рабочими пространствами в организации](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-storage-and-sharing). В этих границах любые два запроса с одной и той же моделью и префиксом читают один и тот же кэш. Для вызывающих Agent SDK, запускающих флоты автоматизированных процессов, см. [улучшение кэширования запросов для нескольких пользователей и машин](https://code.claude.com/docs/ru/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines), чтобы переместить расположение автоматической памяти из системного запроса и совместно использовать запись кэша системного запроса на разных пользователях и машинах.320Если вы используете Agent SDK для запуска множества автоматизированных процессов, см. раздел [улучшение кэширования промптов для разных пользователей и машин](https://code.claude.com/docs/ru/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines), чтобы вынести расположение автоматической памяти из системного промпта.

315 321 

316## Проверка производительности кэша322## Проверка производительности кэша

317 323 

remote-control.md +53 −45

Details

179* **Diff ваших изменений**: когда каталог сеанса находится в git репозитории, панель diff подключенного устройства показывает ваши изменения. На ветке, которая имеет коммиты впереди ветки по умолчанию репозитория, панель показывает изменения с момента разделения ветки, включая ваши незафиксированные правки. На самой ветке по умолчанию или на ветке, которая не впереди, панель показывает только ваши незафиксированные изменения.179* **Diff ваших изменений**: когда каталог сеанса находится в git репозитории, панель diff подключенного устройства показывает ваши изменения. На ветке, которая имеет коммиты впереди ветки по умолчанию репозитория, панель показывает изменения с момента разделения ветки, включая ваши незафиксированные правки. На самой ветке по умолчанию или на ветке, которая не впереди, панель показывает только ваши незафиксированные изменения.

180* **Модель**: когда вы выбираете [модель](https://code.claude.com/docs/ru/model-config.md) с подключенного устройства, Claude Code запускает сеанс на этой модели. Требуется Claude Code v2.1.238 или позже. Модель, которую вы выбираете с элемента управления моделью устройства, применяется только к текущему сеансу. Когда вы отправляете `/model <name>` с устройства в интерактивный сеанс, Claude Code также устанавливает ваше значение по умолчанию для новых сеансов.180* **Модель**: когда вы выбираете [модель](https://code.claude.com/docs/ru/model-config.md) с подключенного устройства, Claude Code запускает сеанс на этой модели. Требуется Claude Code v2.1.238 или позже. Модель, которую вы выбираете с элемента управления моделью устройства, применяется только к текущему сеансу. Когда вы отправляете `/model <name>` с устройства в интерактивный сеанс, Claude Code также устанавливает ваше значение по умолчанию для новых сеансов.

181* **Уровень усилий**: когда вы устанавливаете [уровень усилий](https://code.claude.com/docs/ru/model-config.md#adjust-effort-level) с подключенного устройства, с помощью `/effort` или элемента управления усилиями устройства, Claude Code применяет его к сеансу на вашей машине. Если вы закрепили уровень с помощью `CLAUDE_CODE_EFFORT_LEVEL`, сеанс сохраняет этот уровень, и Claude Code отказывает в другом выборе из элемента управления усилиями. Выбор уровня из элемента управления усилиями требует Claude Code v2.1.234 или позже на вашей машине.181* **Уровень усилий**: когда вы устанавливаете [уровень усилий](https://code.claude.com/docs/ru/model-config.md#adjust-effort-level) с подключенного устройства, с помощью `/effort` или элемента управления усилиями устройства, Claude Code применяет его к сеансу на вашей машине. Если вы закрепили уровень с помощью `CLAUDE_CODE_EFFORT_LEVEL`, сеанс сохраняет этот уровень, и Claude Code отказывает в другом выборе из элемента управления усилиями. Выбор уровня из элемента управления усилиями требует Claude Code v2.1.234 или позже на вашей машине.

182* **Переподключение после сбоя подключения**: запустите `/remote-control` для переподключения. Если компактирование переписало разговор или вы переключили разговоры с помощью `/resume` в то же время, Claude Code архивирует сеанс сервера, который он использовал, вместо того чтобы оставить его в списке сеансов. Вы все еще можете найти его, [фильтруя архивированные сеансы](https://code.claude.com/docs/ru/claude-code-on-the-web.md#archive-sessions). Переключение разговоров, пока устройство все еще подключено, не архивирует сеанс.182* **Переподключение после сбоя подключения**: выполните `/remote-control` для переподключения. Если за это время сжатие контекста переписало диалог или вы переключили диалоги с помощью `/resume`, Claude Code архивирует серверную сессию, которую он использовал, вместо того чтобы оставлять ее в списке сессий. Вы по-прежнему можете найти эту сессию среди ваших [архивированных сессий](https://code.claude.com/docs/ru/claude-code-on-the-web.md#find-an-archived-session) на claude.ai/code. Переключение диалогов, пока устройство все еще подключено, не архивирует сессию.

183 183 

184### Включение Remote Control для всех сеансов184### Включение Remote Control для всех сеансов

185 185 


401 401 

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

403 403 

404### "Remote Control disconnected" or "Can't reach"

405 

406На [claude.ai/code](https://claude.ai/code) или в приложении Desktop сообщение **Remote Control disconnected** или **Can't reach** означает, что ваш браузер или приложение потеряли связь с Claude Code на вашем компьютере. Ни одно из этих сообщений не говорит о том, продолжает ли Claude или субагент, за которым вы следили, работать на вашем компьютере. На этом компьютере проверьте, в каком состоянии находится Claude Code, и выполните соответствующий шаг для повторного подключения:

407 

408* **Интерактивная сессия показывает `Remote Control disconnected`**: выполните [шаги повторного подключения для причины, указанной в этой строке](#session-ended-elsewhere)

409* **Claude Code работает и не показывает ошибок**: интерактивная сессия переподключается сама, как только машина выходит из спящего режима и подключается к сети, поэтому вам не нужно ничего делать. Если вы использовали `claude remote-control`, см. **Extended network outage** в разделе [Ограничения](#limitations)

410* **Claude Code не запущен**: [запустите его снова и верните сессию](#resume-sessions-after-stopping-the-server)

411 

404### "Remote Control requires a claude.ai subscription"412### "Remote Control requires a claude.ai subscription"

405 413 

406Вы не вошли в учётную запись claude.ai, или другие учётные данные имеют приоритет над вашим входом. Сообщение принимает одну из этих форм:414Вы не вошли с учётной записью claude.ai, или другие учётные данные имеют приоритет над вашим входом. Сообщение имеет одну из следующих форм:

407 415 

408* Вышли из системы, из `/remote-control` или `--remote-control`: `Remote Control requires a claude.ai subscription.` или `/remote-control requires a claude.ai subscription.`416* Вы не вошли, запуск через `/remote-control` или `--remote-control`: `Remote Control requires a claude.ai subscription.` или `/remote-control requires a claude.ai subscription.`

409* Вышли из системы, из `claude remote-control`: `You must be logged in to use Remote Control. Remote Control is only available with claude.ai subscriptions.`417* Вы не вошли, запуск через `claude remote-control`: `You must be logged in to use Remote Control. Remote Control is only available with claude.ai subscriptions.`

410* Вошли в систему, но используется API-ключ или токен: `Remote Control requires claude.ai subscription auth.` с последующим указанием используемых учётных данных, таких как `ANTHROPIC_API_KEY is set, so this session is using API-key auth`. Настройка `apiKeyHelper` и `ANTHROPIC_AUTH_TOKEN` называются одинаково.418* Вы вошли, но используется API-ключ или токен: `Remote Control requires claude.ai subscription auth.`, за которым следуют используемые учётные данные, например `ANTHROPIC_API_KEY is set, so this session is using API-key auth`. Настройка `apiKeyHelper` и `ANTHROPIC_AUTH_TOKEN` указываются таким же образом.

411 419 

412Запустите `claude auth login` и выберите опцию claude.ai. Если сообщение указывает на `ANTHROPIC_API_KEY` или `ANTHROPIC_AUTH_TOKEN`, удалите его везде, где он установлен: в переменных окружения вашей оболочки или в блоке `env` [файла настроек](https://code.claude.com/docs/ru/settings-reference.md#env). Если оно указывает на `apiKeyHelper`, удалите эту настройку.420Выполните `claude auth login` и выберите вариант claude.ai. Если в сообщении указан `ANTHROPIC_API_KEY` или `ANTHROPIC_AUTH_TOKEN`, удалите эту переменную везде, где она задана: в окружении вашей оболочки или в блоке `env` [файла настроек](https://code.claude.com/docs/ru/settings-reference.md#env). Если указан `apiKeyHelper`, удалите эту настройку.

413 421 

414### "Remote Control requires a full-scope login token"422### "Remote Control requires a full-scope login token"

415 423 

416Вы аутентифицированы с помощью долгоживущего токена из `claude setup-token` или переменной окружения `CLAUDE_CODE_OAUTH_TOKEN`. Эти токены могут только делать запросы к модели, поэтому они не могут устанавливать сессии Remote Control. Вместо этого запустите `claude auth login` для аутентификации с помощью токена сессии полного объёма.424Вы прошли аутентификацию с помощью долгоживущего токена из `claude setup-token` или переменной окружения `CLAUDE_CODE_OAUTH_TOKEN`. Такие токены могут только отправлять запросы к модели, поэтому не могут устанавливать сессии Remote Control. Вместо этого выполните `claude auth login`, чтобы пройти аутентификацию с сессионным токеном полного доступа.

417 425 

418### "Unable to determine your organization for Remote Control eligibility"426### "Unable to determine your organization for Remote Control eligibility"

419 427 

420Ваша кэшированная информация об учётной записи устарела или неполна. Запустите `claude auth login` для её обновления.428Кешированная информация о вашей учётной записи устарела или неполна. Выполните `claude auth login`, чтобы обновить её.

421 429 

422### "Remote Control isn't enabled for this account"430### "Remote Control isn't enabled for this account"

423 431 

424Claude Code проверил доступность Remote Control для учётной записи, в которую вы вошли, и проверка вернула отрицательный результат. Обычная причина — кэшированные права доступа, которые устарели после изменения плана. Запустите `claude auth logout`, а затем `claude auth login` для их обновления, и обновите Claude Code, если вы используете старую версию.432Claude Code проверил доступность Remote Control для учётной записи, под которой вы вошли, и проверка показала, что функция отключена. Обычная причина — устаревшие кешированные права доступа после смены тарифа. Выполните `claude auth logout`, затем `claude auth login`, чтобы обновить их, и обновите Claude Code, если у вас старая версия.

425 433 

426Запустите `claude doctor` для просмотра того, какая отдельная проверка прав доступа не прошла. Конфликты переменных окружения, недостижимые проверки и настройка Remote Control вашей организации каждый производят своё собственное сообщение, поэтому эта ошибка означает, что не прошла сама проверка на уровне учётной записи.434Выполните `claude doctor`, чтобы увидеть, какая именно проверка доступности не прошла. Конфликты переменных окружения, недоступность проверок и настройка Remote Control вашей организации выдают каждая своё сообщение, поэтому эта ошибка относится именно к проверке на уровне учётной записи.

427 435 

428До версии 2.1.239 это сообщение читалось как "Remote Control is not yet enabled for your account".436До v2.1.239 это сообщение звучало как "Remote Control is not yet enabled for your account".

429 437 

430### "Couldn't verify Remote Control eligibility"438### "Couldn't verify Remote Control eligibility"

431 439 

432Claude Code не смог связаться со службой флагов функций для проверки того, включён ли Remote Control для вашей учётной записи, обычно потому, что вы находитесь в автономном режиме или прокси блокирует запрос. Повторите попытку, когда у вас будет доступ в сеть, или запустите `claude doctor` для получения подробной информации. Связанное сообщение "Couldn't verify your organization's Remote Control policy" означает, что Claude Code столкнулся с ошибкой при чтении этой политики, и имеет то же решение.440Claude Code не смог связаться со службой feature-флагов, чтобы проверить, включён ли Remote Control для вашей учётной записи, — обычно потому, что вы не в сети или прокси блокирует запрос. Повторите попытку, когда появится доступ к сети, или выполните `claude doctor` для получения подробностей. Связанное сообщение "Couldn't verify your organization's Remote Control policy" означает, что Claude Code столкнулся с ошибкой при чтении этой политики; решение то же самое.

433 441 

434### "Remote Control requires feature-flag evaluation"442### "Remote Control requires feature-flag evaluation"

435 443 

436[Переменная окружения](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching), которая отключает оценку флагов функций, установлена, и полное сообщение указывает переменную, которую нашёл Claude Code. На версиях до 2.1.154 та же конфигурация вместо этого производит "Remote Control is not yet enabled for your account". Что делать, зависит от переменной, которую указывает сообщение:444Задана [переменная окружения](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching), отключающая вычисление feature-флагов, и полное сообщение называет переменную, которую обнаружил Claude Code. В версиях до 2.1.154 та же конфигурация вместо этого выдаёт "Remote Control is not yet enabled for your account". Что делать, зависит от переменной, указанной в сообщении:

437 445 

438* **`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` или `DISABLE_GROWTHBOOK`**: отключите переменную везде, где она установлена, в переменных окружения вашей оболочки или в блоке `env` файла [`settings.json`](https://code.claude.com/docs/ru/settings-reference#all-settings).446* **`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` или `DISABLE_GROWTHBOOK`**: удалите (unset) переменную везде, где она задана, — в окружении вашей оболочки или в блоке `env` [файла `settings.json`](https://code.claude.com/docs/ru/settings-reference#all-settings).

439* **`DISABLE_TELEMETRY` или `DO_NOT_TRACK`**: на плане Pro, Max, Team или Enterprise с отключённым `DISABLE_GROWTHBOOK` эти переменные оставляют Remote Control доступным, если только ваша организация не требует [Trusted Devices](#trusted-devices). Если требует, отключите переменную везде, где она установлена, для использования Remote Control. С версии 2.1.154 по версию 2.1.282 вы видите это сообщение, если установлена любая из этих переменных, поэтому обновите Claude Code до версии, которая соответствует [требованию для этих переменных](#requirements).447* **`DISABLE_TELEMETRY` или `DO_NOT_TRACK`**: на тарифе Pro, Max, Team или Enterprise при незаданной `DISABLE_GROWTHBOOK` эти переменные оставляют Remote Control доступным, если только ваша организация не требует [Trusted Devices](#trusted-devices). Если требует, удалите (unset) переменную везде, где она задана, чтобы использовать Remote Control. В версиях с v2.1.154 по v2.1.282 это сообщение появляется при заданной любой из этих переменных, поэтому обновите Claude Code до версии, соответствующей [требованию для этих переменных](#requirements).

440 448 

441### "Remote Control is only available when using Claude via api.anthropic.com"449### "Remote Control is only available when using Claude via api.anthropic.com"

442 450 

443Сессия не взаимодействует с API Anthropic напрямую, что требуется для Remote Control. Это происходит на Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry. Это также происходит, когда [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/ru/env-vars) указывает на хост, отличный от `api.anthropic.com`, такой как [LLM-шлюз](https://code.claude.com/docs/ru/llm-gateway) или прокси, даже если вы входите с claude.ai. Смотрите [справочник ошибок](https://code.claude.com/docs/ru/errors.md#remote-control-requires-the-anthropic-api) для полного списка причин.451Сессия взаимодействует с Anthropic API не напрямую, а Remote Control этого требует. Так происходит на Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry. Это также происходит, когда [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/ru/env-vars) указывает на хост, отличный от `api.anthropic.com`, например на [LLM-шлюз](https://code.claude.com/docs/ru/llm-gateway) или прокси, даже если вы входите через claude.ai. Полный список причин см. в [справочнике ошибок](https://code.claude.com/docs/ru/errors.md#remote-control-requires-the-anthropic-api).

444 452 

445Сообщение указывает, что направило сессию в обход API Anthropic, например `CLAUDE_CODE_USE_BEDROCK` или пользовательский `ANTHROPIC_BASE_URL`. Если у вас есть подходящий вход claude.ai, отключите названную переменную, удалите её из ключа `env` в [настройках](https://code.claude.com/docs/ru/settings.md), если вы установили её там, и перезапустите сессию.453В сообщении указано, что направило сессию в обход Anthropic API, например `CLAUDE_CODE_USE_BEDROCK` или пользовательский `ANTHROPIC_BASE_URL`. Если у вас есть подходящий вход через claude.ai, удалите указанную переменную, уберите её из ключа `env` в [настройках](https://code.claude.com/docs/ru/settings.md), если вы задавали её там, и перезапустите сессию.

446 454 

447### "Remote Control is disabled by your organization's policy"455### "Remote Control is disabled by your organization's policy"

448 456 

449Политика блокирует Remote Control. Проверьте эти причины по порядку:457Remote Control заблокирован политикой. Проверьте следующие причины по порядку:

450 458 

451* **Ошибка упоминает `disableRemoteControl`**: ваш IT-администратор отключил Remote Control на этом устройстве через [управляемые настройки](https://code.claude.com/docs/ru/managed-settings.md), независимо от переключателя на уровне организации и от того, как вы вошли.459* **В ошибке упоминается `disableRemoteControl`**: ваш ИТ-администратор отключил Remote Control на этом устройстве через [управляемые настройки](https://code.claude.com/docs/ru/managed-settings.md), независимо от переключателя на уровне организации и от того, как вы вошли.

452* **Ваш план claude.ai — Pro или Max**: Claude Code всё ещё вошёл в организацию Team или Enterprise с более раннего входа, поэтому он проверяет политику Remote Control этой организации. Запустите `/status` для просмотра того, какой план и организацию использует ваш вход. Запустите `claude auth logout`, а затем `claude auth login` для повторного входа под вашим текущим планом.460* **Ваш тариф claude.ai — Pro или Max**: Claude Code всё ещё авторизован под организацией Team или Enterprise после предыдущего входа, поэтому проверяет политику Remote Control этой организации. Выполните `/status`, чтобы увидеть, какой тариф и организацию использует ваш вход. Выполните `claude auth logout`, затем `claude auth login`, чтобы войти заново под текущим тарифом.

453* **Сообщение не говорит обратиться к администратору вашей организации**: к вашей организации применена [конфигурация HIPAA](https://code.claude.com/docs/ru/hipaa-setup.md), которая отключает Remote Control. Чтобы убедиться в этом, запустите `/status` и найдите `HIPAA` в строке `Organization configuration`. Owner видит переключатель **Remote Control** неактивным в [настройках администратора](https://claude.ai/admin-settings/claude-code) и не может его включить. Если у вас есть вопросы о конфигурации, обратитесь к Owner, который может связаться с командой Anthropic, обслуживающей учётную запись вашей организации. До версии 2.1.267 в этом случае вместо этого показывалось "Remote Control isn't available for your organization due to its compliance policy".461* **Сообщение не предлагает обратиться к администратору организации**: к вашей организации применена [конфигурация HIPAA](https://code.claude.com/docs/ru/hipaa-setup.md), которая отключает Remote Control. Чтобы убедиться в этом, выполните `/status` и найдите `HIPAA` в строке `Organization configuration`. Owner видит переключатель **Remote Control** неактивным в [настройках администратора](https://claude.ai/admin-settings/claude-code) и не может его включить. Если у вас есть вопросы о конфигурации, обратитесь к Owner, который может связаться с командой Anthropic, обслуживающей вашу организацию. До v2.1.267 в этом случае вместо этого показывалось "Remote Control isn't available for your organization due to its compliance policy".

454* **Remote Control работает у других пользователей в вашей организации, но не у вас**: если ваша организация Enterprise управляет вашим доступом с помощью [пользовательских ролей](https://support.claude.com/en/articles/13930452), причиной могут быть ваши роли. Для Remote Control нужны и разрешение на облачные сессии, и разрешение **Claude Code remote control**. Попросите Owner проверить, включают ли ваши роли оба разрешения, и добавить недостающее в [**Organization settings > Roles**](https://claude.ai/admin-settings/roles).462* **Remote Control работает у других сотрудников вашей организации, но не у вас**: если ваша организация Enterprise управляет вашим доступом с помощью [пользовательских ролей](https://support.claude.com/en/articles/13930452), причиной могут быть ваши роли. Для Remote Control нужны и разрешение на облачные сессии, и разрешение **Claude Code remote control**. Попросите Owner проверить, включают ли ваши роли оба разрешения, и добавить недостающее в [**Organization settings > Roles**](https://claude.ai/admin-settings/roles).

455* **В противном случае Owner не включил его для вашей организации**: Remote Control отключён по умолчанию на планах Team и Enterprise. Owner может включить его на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code), включив переключатель **Remote Control**. Этот переключатель является настройкой организации на стороне сервера.463* **В остальных случаях Owner не включил его для вашей организации**: на тарифах Team и Enterprise Remote Control по умолчанию отключён. Owner может включить его на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code), включив переключатель **Remote Control**. Этот переключатель — серверная настройка организации.

456 464 

457До версии 2.1.281 это сообщение также появлялось, когда Claude Code не загрузил политику вашей организации на этой машине, например после запуска в автономном режиме. Более поздние версии вместо этого сообщают об этом состоянии как [`Couldn't verify your organization's policy for remote control`](#couldnt-verify-your-organizations-policy-for-remote-control).465До v2.1.281 это сообщение также появлялось, когда Claude Code не загрузил политику вашей организации на этой машине, например после запуска без сети. Более поздние версии сообщают об этом состоянии как [`Couldn't verify your organization's policy for remote control`](#couldnt-verify-your-organizations-policy-for-remote-control).

458 466 

459### "Remote Control was turned off by your organization's policy"467### "Remote Control was turned off by your organization's policy"

460 468 

461Политика вашей организации перестала разрешать Remote Control, пока сессия была подключена, поэтому Claude Code отключил её. Что произойдёт с сессией, зависит от того, как вы запустили Remote Control:469Политика вашей организации перестала разрешать Remote Control, пока сессия была подключена, поэтому Claude Code отключил её. Что происходит с сессией, зависит от того, как вы запустили Remote Control:

462 470 

463* **С помощью `/remote-control`, `claude --remote-control` или [автоподключения](#enable-remote-control-for-all-sessions)**: сессия продолжает работать без Remote Control, и Claude Code архивирует её на claude.ai471* **Через `/remote-control`, `claude --remote-control` или [автоподключение](#enable-remote-control-for-all-sessions)**: сессия продолжает работать без Remote Control, а Claude Code архивирует её на claude.ai

464* **С помощью `claude remote-control`**: сервер останавливается и архивирует сессии, которые он обслуживал, а затем завершает работу472* **Через `claude remote-control`**: сервер останавливается и архивирует обслуживаемые им сессии, затем завершает работу

465 473 

466Вы по-прежнему можете найти архивированную сессию, [отфильтровав архивированные сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md#archive-sessions).474Чтобы снова найти одну из этих сессий, откройте [архивированные сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md#find-an-archived-session) на claude.ai/code.

467 475 

468Remote Control не переподключается самостоятельно. Чтобы снова включить его после того, как ваша организация снова разрешит его, запустите `/remote-control` в сессии или `claude remote-control` в вашей оболочке. Любая из этих команд завершается ошибкой [`Remote Control is disabled by your organization's policy`](#remote-control-is-disabled-by-your-organizations-policy), пока Claude Code на этой машине не получит изменённую политику. Открытая сессия получает её примерно раз в час. Чтобы выяснить, что блокирует Remote Control, сопоставьте полный текст, который выводит команда, с этим разделом.476Remote Control не переподключается сам. Чтобы снова включить его после того, как ваша организация снова его разрешит, выполните `/remote-control` в сессии или `claude remote-control` в оболочке. Любая из этих команд завершается с ошибкой [`Remote Control is disabled by your organization's policy`](#remote-control-is-disabled-by-your-organizations-policy), пока Claude Code на этой машине не получит изменённую политику. Открытая сессия получает её примерно раз в час. Чтобы выяснить, что блокирует Remote Control, сопоставьте полный текст, который выводит команда, с этим разделом.

469 477 

470### "Couldn't verify your organization's policy for remote control"478### "Couldn't verify your organization's policy for remote control"

471 479 

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

473 481 

474Сообщение принимает одну из этих форм:482Сообщение имеет одну из следующих форм:

475 483 

476* Из `/remote-control`, `claude remote-control` или `claude --remote-control`: `Couldn't verify your organization's policy for remote control. Check your network connection and try again.`484* Из `/remote-control`, `claude remote-control` или `claude --remote-control`: `Couldn't verify your organization's policy for remote control. Check your network connection and try again.`

477* Из [автоподключения](#enable-remote-control-for-all-sessions) при запуске сессии: `couldn't verify your organization's policy — check your network connection and try again`, с префиксом `Remote Control failed` в уведомлении и `Remote Control disconnected` в диалоге. Затем сессия оставляет Remote Control отключённым.485* Из [автоподключения](#enable-remote-control-for-all-sessions) при запуске сессии: `couldn't verify your organization's policy — check your network connection and try again` с префиксом `Remote Control failed` в уведомлении и `Remote Control disconnected` в диалоге. После этого сессия оставляет Remote Control отключённым.

478 486 

479Восстановите подключение к сети, затем запустите `/remote-control` или запустите команду снова. Каждая попытка снова проверяет политику, поэтому вам не нужно перезапускать Claude Code. Если сообщение продолжает появляться, запустите `claude doctor` и прочитайте его строку `Organization policy`, которая объясняет, почему политика не загрузилась.487Восстановите сетевое подключение, затем выполните `/remote-control` или запустите команду снова. Каждая попытка заново проверяет политику, поэтому перезапускать Claude Code не нужно. Если сообщение продолжает появляться, выполните `claude doctor` и посмотрите строку `Organization policy`, в которой указано, почему политика не загрузилась.

480 488 

481До версии 2.1.281 в этом состоянии вместо этого показывалось `Remote Control is disabled by your organization's policy`.489До v2.1.281 в этом состоянии вместо этого показывалось `Remote Control is disabled by your organization's policy`.

482 490 

483### "Remote credentials fetch failed"491### "Remote credentials fetch failed"

484 492 

485Claude Code не смог получить краткосрочные учётные данные из API Anthropic для установления соединения. Запустите снова с `--verbose` для просмотра полной ошибки:493Claude Code не смог получить краткосрочные учётные данные от Anthropic API для установки соединения. Запустите повторно с `--verbose`, чтобы увидеть полную ошибку:

486 494 

487```bash theme={null}495```bash theme={null}

488claude remote-control --verbose496claude remote-control --verbose


490 498 

491Распространённые причины:499Распространённые причины:

492 500 

493* Не вошли в систему: запустите `claude` и используйте `/login` для аутентификации с помощью вашей учётной записи claude.ai. Аутентификация по API-ключу не поддерживается для Remote Control.501* Вы не вошли: запустите `claude` и используйте `/login` для аутентификации с вашей учётной записью claude.ai. Аутентификация по API-ключу не поддерживается для Remote Control.

494* Проблема с сетью или прокси: брандмауэр или прокси может блокировать исходящий HTTPS-запрос. Remote Control требует доступа к API Anthropic на порту 443.502* Проблема с сетью или прокси: брандмауэр или прокси может блокировать исходящий HTTPS-запрос. Remote Control требует доступа к Anthropic API через порт 443.

495* Ошибка создания сессии: если вы также видите `Session creation failed — see debug log`, ошибка произошла ранее в процессе установки. Проверьте, что ваша подписка активна.503* Не удалось создать сессию: если вы также видите `Session creation failed — see debug log`, сбой произошёл на более раннем этапе настройки. Убедитесь, что ваша подписка активна.

496 504 

497### "Couldn't reconnect to your Remote Control session"505### "Couldn't reconnect to your Remote Control session"

498 506 

499Когда вы возобновляете диалог с `claude --resume` или `claude --continue`, Claude Code переподключается к сессии Remote Control, записанной в этом диалоге. Это сообщение означает, что переподключение не удалось по причине, которая может быть временной, например сетевой сбой или ошибка сервера, поэтому Claude Code не может подтвердить, существует ли ещё удалённая сессия.507Когда вы возобновляете диалог с помощью `claude --resume` или `claude --continue`, Claude Code переподключается к сессии Remote Control, записанной в этом диалоге. Это сообщение означает, что переподключение не удалось по причине, которая может быть временной, например из-за прерывания сети или ошибки сервера, поэтому Claude Code не может подтвердить, существует ли ещё удалённая сессия.

500 508 

501Запустите `/remote-control` для повторной попытки подключения или запустите новую сессию с `claude --remote-control` для создания новой сессии Remote Control. Тем временем ваша локальная сессия продолжает работать без Remote Control.509Выполните `/remote-control`, чтобы повторить попытку подключения, или запустите новую сессию с `claude --remote-control`, чтобы создать новую сессию Remote Control. Тем временем ваша локальная сессия продолжает работать без Remote Control.

502 510 

503### "Previous session is unavailable — run /remote-control to start a new one"511### "Previous session is unavailable — run /remote-control to start a new one"

504 512 

505Claude Code не смог восстановить предыдущую сессию Remote Control и остановился вместо того, чтобы самостоятельно запустить новую. Вы можете увидеть это сообщение после возобновления диалога с `claude --resume` или `claude --continue`, или после того, как Claude Code [переподключится самостоятельно после отключения](https://code.claude.com/docs/ru/errors.md#remote-control-couldnt-refresh-your-login).513Claude Code не смог вернуть предыдущую сессию Remote Control и остановился, вместо того чтобы самостоятельно запустить новую. Вы можете увидеть это сообщение после возобновления диалога с помощью `claude --resume` или `claude --continue` либо после того, как Claude Code [самостоятельно переподключится после разрыва соединения](https://code.claude.com/docs/ru/errors.md#remote-control-couldnt-refresh-your-login).

506 514 

507Запустите `/remote-control` для запуска новой сессии Remote Control под текущим входом; тем временем ваша локальная сессия продолжает работать без Remote Control. Связанное сообщение `Remote Control could not verify the signed-in account — run /remote-control to reconnect` имеет то же решение. Если вы запустите `/remote-control` после `Previous session is unavailable`, предварительно не перезапустив Claude Code, Claude Code не включит более ранние сообщения диалога в новую сессию.515Выполните `/remote-control`, чтобы запустить новую сессию Remote Control под текущим входом; тем временем ваша локальная сессия продолжает работать без Remote Control. Для связанного сообщения `Remote Control could not verify the signed-in account — run /remote-control to reconnect` решение то же самое. Если вы выполните `/remote-control` после `Previous session is unavailable`, не перезапустив предварительно Claude Code, Claude Code не включит более ранние сообщения диалога в новую сессию.

508 516 

509### "Remote Control got an unexpected server response"517### "Remote Control got an unexpected server response"

510 518 

511Сервер Remote Control принял запрос, но ответил в форме, которую эта версия Claude Code не смогла прочитать, при создании удалённой сессии или получении её учётных данных. Повторная попытка на той же версии завершится такой же ошибкой. Запустите `claude update`, затем запустите `/remote-control` для переподключения.519Сервер Remote Control принял запрос, но ответил в форме, которую эта версия Claude Code не смогла прочитать, при создании удалённой сессии или получении её учётных данных. Повторная попытка на той же версии завершится так же. Выполните `claude update`, затем `/remote-control`, чтобы переподключиться.

512 520 

513### "Your organization requires Trusted Devices for Remote Control, but this device is not enrolled"521### "Your organization requires Trusted Devices for Remote Control, but this device is not enrolled"

514 522 

515В вашей организации включены [Trusted Devices](#trusted-devices), а эта машина ещё не зарегистрирована. Запустите `/login` в Claude Code. Регистрация происходит как часть входа, и отдельной команды регистрации нет.523В вашей организации включены [Trusted Devices](#trusted-devices), а эта машина ещё не зарегистрирована. Выполните `/login` в Claude Code. Регистрация происходит в рамках входа, отдельной команды для регистрации нет.

516 524 

517### "session expired for trusted-device check"525### "session expired for trusted-device check"

518 526 

519Ваш вход старше 18 часов. Запустите `/login` в Claude Code или подтвердите с помощью Face ID, Touch ID, Windows Hello или passkey, когда claude.ai или мобильное приложение вас попросит. Смотрите [Trusted Devices](#trusted-devices).527Вашему входу более 18 часов. Выполните `/login` в Claude Code или подтвердите вход с помощью Face ID, Touch ID, Windows Hello или ключа доступа, когда claude.ai или мобильное приложение попросят вас об этом. См. [Trusted Devices](#trusted-devices).

520 528 

521## Связанные ресурсы529## Связанные ресурсы

522 530 

routines.md +24 −4

Details

293 293 

294#### Поддерживаемые события294#### Поддерживаемые события

295 295 

296Триггеры GitHub могут подписываться на любую из следующих категорий событий. В каждой категории можно выбрать конкретное действие, например `pull_request.opened`, или реагировать на все действия категории.296Выберите событие из любой из следующих категорий. В каждой категории можно выбрать конкретное действие, например `pull_request.opened`, или реагировать на все действия категории.

297 297 

298| Событие | Срабатывает, когда |298| Событие | Срабатывает, когда |

299| :- | :- |299| :- | :- |

300| Pull request | PR открывается, закрывается, назначается, получает метку, синхронизируется или обновляется иным образом |300| Pull request | PR открывается, закрывается, назначается, получает метку, синхронизируется или обновляется иным образом |

301| Release | Релиз создаётся, публикуется, редактируется или удаляется |301| Release | Релиз создаётся, публикуется, редактируется или удаляется |

302| Issue | Issue открывается, редактируется, закрывается, повторно открывается, получает метку, назначается или обновляется иным образом |

302 303 

303#### Фильтрация pull request304#### Фильтрация pull request

304 305 


333 334 

334Нажмите на любой запуск, чтобы открыть его как полноценную сессию. Там можно увидеть, что сделал Claude, проверить изменения, создать pull request или продолжить диалог. Каждая сессия запуска работает как любая другая сессия: используйте выпадающее меню рядом с заголовком сессии, чтобы переименовать, архивировать или удалить её.335Нажмите на любой запуск, чтобы открыть его как полноценную сессию. Там можно увидеть, что сделал Claude, проверить изменения, создать pull request или продолжить диалог. Каждая сессия запуска работает как любая другая сессия: используйте выпадающее меню рядом с заголовком сессии, чтобы переименовать, архивировать или удалить её.

335 336 

336> [!NOTE]337В разделе **History** на странице сведений задачи строка каждого завершённого запуска заканчивается словом **Error**, если запуск завершился сбоем, словом **Cancelled**, если он был отменён, и ни одним из этих слов, если он прошёл успешно. Фильтр **Status** называет те же три исхода **Failed**, **Cancelled** и **Succeeded**. Эти исходы показывают, как завершилась сессия, а не то, выполнил ли Claude работу, описанную в вашем промпте, поэтому откройте запуск и прочитайте его транскрипт, чтобы узнать, что произошло.

337>338 

338> Зелёный статус в списке запусков означает, что сессия запустилась и завершилась без ошибки инфраструктуры. Это не означает, что работа, описанная в вашем промпте, выполнена успешно. Откройте запуск, чтобы прочитать транскрипт и убедиться, что именно сделал Claude. Заблокированные сетевые запросы, отсутствующие инструменты коннекторов и сбои в самой работе отображаются там, а не в индикаторе статуса.339* **Succeeded**: сессия завершилась без сообщения Claude Code о сбое. Заблокированные сетевые запросы, отсутствующие инструменты коннекторов и работа, которую Claude не смог выполнить, отображаются в транскрипте, а не в строке

340* **Failed**: сессия не завершилась штатно. Например, она неожиданно остановилась, завершилась ошибкой или была архивирована до начала запуска

341* **Cancelled**: запуск не завершился сбоем, а его сессия была архивирована. Если вы архивируете сессию успешного запуска, запуск меняет статус на **Cancelled**. Ничего в задаче менять не нужно

342 

343Если в разделе **History** появляется предупреждение, см. [Предупреждения «The last run»](#the-last-run-didnt-start).

339 344 

340### Редактирование запланированных задач и управление ими345### Редактирование запланированных задач и управление ими

341 346 


499 504 

500Скорее всего, Owner вашей организации Team или Enterprise выключил переключатель **Scheduled tasks (Was Routines)** в разделе [**Organization settings > Capabilities > Remote sessions**](https://claude.ai/admin-settings/capabilities). В Claude Code v2.1.227 или новее этот же переключатель также скрывает `/schedule` в CLI. Это серверная настройка организации, поэтому её нельзя переопределить локальной конфигурацией. Попросите Owner снова включить запланированные задачи для вашей организации.505Скорее всего, Owner вашей организации Team или Enterprise выключил переключатель **Scheduled tasks (Was Routines)** в разделе [**Organization settings > Capabilities > Remote sessions**](https://claude.ai/admin-settings/capabilities). В Claude Code v2.1.227 или новее этот же переключатель также скрывает `/schedule` в CLI. Это серверная настройка организации, поэтому её нельзя переопределить локальной конфигурацией. Попросите Owner снова включить запланированные задачи для вашей организации.

501 506 

507### Предупреждения "The last run"

508 

509Если предупреждение в разделе **History** начинается с "The last run", найдите его в первом столбце и выполните действия, указанные в его строке. Предупреждение исчезает, как только запускается следующий прогон.

510 

511| Предупреждение | Что делать |

512| :- | :- |

513| "The last run didn't start because your organization had reached its limit on cloud sessions running at once." | Задачу менять не нужно. Нажмите **Run now** позже или дождитесь следующего прогона |

514| "The last run didn't start because its cloud environment couldn't be found or used." | На странице сведений задачи откройте меню рядом с её названием, выберите **Edit** и найдите [селектор облачной среды](#environments-and-network-access). Если в нём указано **Unavailable environment**, эта среда была архивирована или больше не доступна вашей учётной записи, поэтому выберите там другую среду и сохраните изменения. В противном случае повторите попытку с помощью **Run now** на странице сведений или выберите другую среду в селекторе и сохраните изменения |

515| "The last run was blocked because it couldn't access something it needs, or your organization's policy doesn't allow it." | Убедитесь, что ваш [доступ к GitHub](#repositories-and-branch-permissions) охватывает репозитории задачи. Если это так, спросите [Owner](https://code.claude.com/docs/ru/server-managed-settings.md#access-control) вашей организации Claude, не блокирует ли задачу какая-либо политика |

516| "The last run didn't start because of a problem that's usually temporary." | Нажмите **Run now**, чтобы повторить попытку, или дождитесь следующего прогона |

517| "The last run didn't start because its repository or branch wasn't available." | Проверьте на GitHub, что в каждом репозитории задачи есть [ветка, с которой начинается прогон](#repositories-and-branch-permissions). Также убедитесь, что ваш [доступ к GitHub](#repositories-and-branch-permissions) охватывает каждый репозиторий, и переподключите GitHub, если срок действия подключения истёк |

518| "The last run didn't start because some of its settings weren't accepted." | На странице сведений задачи откройте меню рядом с её названием и выберите **Edit**. Диалог не отмечает, какая настройка не была принята, поэтому проверьте там каждую из них, включая название задачи, промпт, модель, репозитории, среду, коннекторы и триггеры |

519| "The last run stopped because a usage limit was reached." | О том, когда прогоны задачи снова могут запускаться после достижения лимита использования, см. [Использование и лимиты](#usage-and-limits) |

520| "The last run failed." | Нажмите **Run now**, чтобы повторить попытку, или дождитесь следующего прогона. У неудавшегося прогона нет сессии, которую можно открыть |

521 

502## Связанные ресурсы522## Связанные ресурсы

503 523 

504* [`/loop` и планирование в сессии](https://code.claude.com/docs/ru/scheduled-tasks): планирование локальных задач в открытой сессии CLI524* [`/loop` и планирование в сессии](https://code.claude.com/docs/ru/scheduled-tasks): планирование локальных задач в открытой сессии CLI

Details

181 181 

182* [Sandboxing](https://code.claude.com/docs/ru/sandboxing.md): настройте встроенный инструмент sandboxed Bash182* [Sandboxing](https://code.claude.com/docs/ru/sandboxing.md): настройте встроенный инструмент sandboxed Bash

183* [Dev container](https://code.claude.com/docs/ru/devcontainer.md): предварительно настроенный контейнер Docker для разработки183* [Dev container](https://code.claude.com/docs/ru/devcontainer.md): предварительно настроенный контейнер Docker для разработки

184* [Security](https://code.claude.com/docs/ru/security.md): полная модель безопасности Claude Code184* [Безопасность](https://code.claude.com/docs/ru/security.md): полная модель безопасности Claude Code

185* [Secure deployment](https://code.claude.com/docs/ru/agent-sdk/secure-deployment.md): руководство по изоляции для приложений Agent SDK185* [Безопасное развёртывание](https://code.claude.com/docs/ru/agent-sdk/secure-deployment.md): руководство по изоляции для приложений Agent SDK

186* [Settings](https://code.claude.com/docs/ru/settings-reference.md#sandbox-settings): все ключи конфигурации sandbox, включая доставку управляемых параметров186* [Настройки](https://code.claude.com/docs/ru/settings-reference.md#sandbox-settings): все ключи конфигурации sandbox, включая доставку управляемых настроек

sandboxing.md +26 −2

Details

223* **Правило запроса для параметра**: добавьте [правило запроса](https://code.claude.com/docs/ru/permissions.md#match-by-input-parameter) для `Bash(dangerouslyDisableSandbox:true)`, чтобы получать запрос при повторных попытках Bash. Вы получите запрос и в авторежиме, и в режиме `bypassPermissions`, а правило имеет приоритет над соответствующим правилом разрешения223* **Правило запроса для параметра**: добавьте [правило запроса](https://code.claude.com/docs/ru/permissions.md#match-by-input-parameter) для `Bash(dangerouslyDisableSandbox:true)`, чтобы получать запрос при повторных попытках Bash. Вы получите запрос и в авторежиме, и в режиме `bypassPermissions`, а правило имеет приоритет над соответствующим правилом разрешения

224* **[`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/ru/settings-reference#permissions-blockreadsoutsideworkingdirectories)**: о повторных попытках, вызывающих запрос, когда эта настройка включена, рассказано в разделе [Действия, которые не подтверждаются автоматически ни в одном режиме](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves)224* **[`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/ru/settings-reference#permissions-blockreadsoutsideworkingdirectories)**: о повторных попытках, вызывающих запрос, когда эта настройка включена, рассказано в разделе [Действия, которые не подтверждаются автоматически ни в одном режиме](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves)

225 225 

226Пока команды отклоняются с [сообщением `Sandbox is required`](#commands-refused-with-sandbox-is-required), Claude Code игнорирует параметр `dangerouslyDisableSandbox` и также отклоняет повторную попытку.

227 

226#### Отключение повторной попытки с помощью строгого режима песочницы228#### Отключение повторной попытки с помощью строгого режима песочницы

227 229 

228Вы можете отключить повторную попытку вне песочницы, задав `"allowUnsandboxedCommands": false` в [настройках песочницы](https://code.claude.com/docs/ru/settings-reference.md#sandbox-settings). Когда повторная попытка отключена, Claude Code игнорирует параметр `dangerouslyDisableSandbox`. Пока песочница работает, команды, которые выполняет Claude, в этом случае выполняются в песочнице, если они не соответствуют записи `excludedCommands`. Чтобы Claude Code не выполнял команды вне песочницы, когда песочница не может запуститься, задайте также [`failIfUnavailable`](https://code.claude.com/docs/ru/settings-reference#sandbox-failifunavailable). Вкладка **Overrides** в `/sandbox` показывает эту настройку как **Strict sandbox mode**.230Вы можете отключить повторную попытку вне песочницы, задав `"allowUnsandboxedCommands": false` в [настройках песочницы](https://code.claude.com/docs/ru/settings-reference.md#sandbox-settings). Когда повторная попытка отключена, Claude Code игнорирует параметр `dangerouslyDisableSandbox`. Пока песочница работает, команды, которые выполняет Claude, в этом случае выполняются в песочнице, если они не соответствуют записи `excludedCommands`. Чтобы Claude Code не выполнял команды вне песочницы, когда песочница не может запуститься, задайте также [`failIfUnavailable`](https://code.claude.com/docs/ru/settings-reference#sandbox-failifunavailable). Вкладка **Overrides** в `/sandbox` показывает эту настройку как **Strict sandbox mode**.


899 901 

900### В путях настроек `.claude` появляются файлы размером 0 байт только для чтения, и «Да, и больше не спрашивать» не сохраняется902### В путях настроек `.claude` появляются файлы размером 0 байт только для чтения, и «Да, и больше не спрашивать» не сохраняется

901 903 

902На Linux и WSL2 песочница удерживает запрет на запись в ещё не существующий файл, создавая там 0-байтовый заполнитель только для чтения, пока выполняется изолированная команда. После этого песочница удаляет заполнитель. Если сессия завершается до выполнения этой очистки, например по SIGKILL, заполнители остаются. Последующие сессии при каждом запуске снова монтируют их только для чтения, поэтому запись настроек, например сохранение выбора разрешения, не выполняется там, где находится такой заполнитель.904На Linux и WSL2 песочница удерживает запрет на запись в ещё не существующий файл, создавая там 0-байтовый заполнитель только для чтения, пока выполняется изолированная команда. После этого песочница удаляет заполнитель.

905 

906Заполнитель остаётся, например, в следующих случаях:

907 

908* Сессия принудительно завершается до выполнения этой очистки, например по SIGKILL

909* Сессия завершается, пока изолированная команда ещё выполняется, например фоновая команда

903 910 

904Запустите `claude doctor` в терминале, чтобы перечислить оставшиеся файлы заполнителей. Предупреждение [`Sandbox mask files left behind at write-deny paths`](https://code.claude.com/docs/ru/errors#stale-sandbox-mask-files-left-by-a-killed-session) называет некоторые из них и подсчитывает остальные. Удалите каждый файл с помощью `rm`, пока в этом проекте не запущена другая сессия Claude Code. До версии 2.1.257 Claude Code оставлял те же заполнители, не помечая их.911Последующие сессии при каждом запуске снова монтируют заполнители только для чтения, поэтому запись настроек, например сохранение выбора разрешения, не выполняется там, где остаётся заполнитель.

912 

913Запустите `claude doctor` в терминале, чтобы перечислить оставшиеся файлы заполнителей. Предупреждение [`Sandbox mask files left behind at write-deny paths`](https://code.claude.com/docs/ru/errors#stale-sandbox-mask-files-left-by-a-killed-session) называет некоторые из них и подсчитывает остальные. Удалите каждый файл с помощью `rm`, пока в этом проекте не запущена другая сессия Claude Code. До версии 2.1.257 Claude Code оставлял те же заполнители при принудительном завершении сессии, не помечая их.

905 914 

906### `git` через SSH не работает при включённой песочнице915### `git` через SSH не работает при включённой песочнице

907 916 


1000 1009 

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

1002 1011 

1012### Команды отклоняются с `Sandbox is required`

1013 

1014Если вы требуете песочницу с помощью [`sandbox.failIfUnavailable`](https://code.claude.com/docs/ru/settings-reference#sandbox-failifunavailable) и она отказывает одним из следующих способов после запуска Claude Code, каждая изолированная команда, которую запускает Claude, отклоняется с указанным сообщением. Сессия продолжает работать, а отклонённая команда не выполняется вне песочницы:

1015 

1016* **`Sandbox is required but failed to initialize: <reason>`**: Claude Code запустился, но затем песочницу не удалось инициализировать. Выполните действие, указанное в сообщении: `Restart to retry.` или `Fix the sandbox settings to retry`.

1017* **`Sandbox is required (sandbox.failIfUnavailable) and stopped being available in this session: <reason>`**: на Linux или WSL2 песочница запустилась, а затем Claude Code обнаружил отсутствие зависимости. Исправьте то, что указано в причине, например [установите недостающую зависимость](#set-up-linux-and-wsl2), затем перезапустите Claude Code.

1018 

1019Исключённые команды и команды, которые вы вводите сами, продолжают выполняться, а Claude не может повторить отклонённую команду вне песочницы:

1020 

1021* **Исключённые команды**: команды, соответствующие записи [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands), продолжают выполняться вне песочницы. Когда такая команда записывает в путь [`filesystem.allowWrite`](https://code.claude.com/docs/ru/settings-reference#sandbox-filesystem-allowwrite) вне вашего рабочего каталога, эта запись проходит через обычную процедуру запроса разрешения. При [песочнице, обязательной по требованию администратора](#repository-settings-under-an-admin-required-sandbox), Claude Code игнорирует записи из настроек репозитория

1022* **Команды, которые вы вводите в [промпте режима оболочки `!`](https://code.claude.com/docs/ru/interactive-mode#shell-mode-with-prefix)**: продолжают выполняться вне песочницы. В [фоновой сессии](https://code.claude.com/docs/ru/agent-view.md) они тоже отклоняются

1023* **Повторные попытки вне песочницы**: Claude Code игнорирует параметр `dangerouslyDisableSandbox` [повторной попытки вне песочницы](#the-unsandboxed-retry-escape-hatch)

1024 

1025В сессии Linux с установленной `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` каждая команда выполняется в песочнице, поэтому исключённые команды и вводимые вами команды тоже отклоняются.

1026 

1003### `/sandbox` завершается ошибкой `Sandbox settings are overridden by a higher-priority configuration`1027### `/sandbox` завершается ошибкой `Sandbox settings are overridden by a higher-priority configuration`

1004 1028 

1005`/sandbox` выводит `Error: Sandbox settings are overridden by a higher-priority configuration and cannot be changed locally.` вместо открытия своей панели, когда более высокий [уровень настроек](https://code.claude.com/docs/ru/settings.md#settings-precedence) задаёт `sandbox.enabled`, `sandbox.autoAllowBashIfSandboxed` или `sandbox.allowUnsandboxedCommands`. Панель сохраняет ваш выбор в `.claude/settings.local.json`, а сохранённое там значение не может переопределить эти уровни.1029`/sandbox` выводит `Error: Sandbox settings are overridden by a higher-priority configuration and cannot be changed locally.` вместо открытия своей панели, когда более высокий [уровень настроек](https://code.claude.com/docs/ru/settings.md#settings-precedence) задаёт `sandbox.enabled`, `sandbox.autoAllowBashIfSandboxed` или `sandbox.allowUnsandboxedCommands`. Панель сохраняет ваш выбор в `.claude/settings.local.json`, а сохранённое там значение не может переопределить эти уровни.

Details

783 783 

784О порядке применения этих источников см. [приоритет настроек](https://code.claude.com/docs/ru/settings.md#settings-precedence).784О порядке применения этих источников см. [приоритет настроек](https://code.claude.com/docs/ru/settings.md#settings-precedence).

785 785 

786Когда управляющий уровень Anthropic передаёт сессии [хуки Claude Code](https://code.claude.com/docs/ru/hooks.md), раннер устанавливает их рядом с вашей собственной конфигурацией, а не поверх неё. Требуется Claude Code v2.1.229 или новее.786Когда управляющий уровень Anthropic передаёт сессии [хуки Claude Code](https://code.claude.com/docs/ru/hooks.md), раннер устанавливает их рядом с вашей собственной конфигурацией, а не поверх неё. Требуется Claude Code v2.1.229 или новее; более старые раннеры игнорируют переданные хуки. Переданные хуки запускают `python3`, поэтому установите `python3` в [образ раннера](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#build-the-runner-image).

787 787 

788* **Куда они попадают**: раннер записывает каждый переданный скрипт хука в зарезервированный подкаталог `hooks/.ccr-launcher/` каталога конфигурации сессии и регистрирует скрипты в отдельном файле настроек, который передаёт сессии через `--settings`, не затрагивая заполненный `settings.json` и ваши собственные скрипты в `hooks/<name>`. Раннер пересоздаёт зарезервированный подкаталог для каждой сессии и не переносит в сессии содержимое хоста из `~/.claude/hooks/.ccr-launcher/`.788* **Куда они попадают**: раннер записывает каждый переданный скрипт хука в зарезервированный подкаталог `hooks/.ccr-launcher/` каталога конфигурации сессии и регистрирует скрипты в отдельном файле настроек, который передаёт сессии через `--settings`, не затрагивая заполненный `settings.json` и ваши собственные скрипты в `hooks/<name>`. Раннер пересоздаёт зарезервированный подкаталог для каждой сессии и не переносит в сессии содержимое хоста из `~/.claude/hooks/.ccr-launcher/`.

789* **Кто их создаёт**: управляющий уровень заполняет скрипты из фиксированных констант собственного развёртывания, никогда — из данных конкретной сессии или сторонних данных.789* **Кто их создаёт**: управляющий уровень заполняет скрипты из фиксированных констант собственного развёртывания, никогда — из данных конкретной сессии или сторонних данных.

Details

348 348 

349Рецепты ниже используют `--capacity 4`, поэтому один контейнер обслуживает до четырех одновременных сеансов от одного заблокированного владельца. Это не обеспечивает изоляцию контейнера для каждого сеанса в [разделе усиления безопасности](#harden-your-deployment): перед подключением окружения к production-системам либо запустите рецепты на `--capacity 1` с одним контейнером на сеанс, либо используйте [on-demand runners](https://code.claude.com/docs/ru/self-hosted-environments-configuration.md#on-demand-runners), которые также держат секрет окружения вне хостов, запускающих сеансы. Если вы добавите [Anthropic git proxy](#use-the-anthropic-git-proxy) к одному из этих рецептов, также измените `--capacity` на `1`.349Рецепты ниже используют `--capacity 4`, поэтому один контейнер обслуживает до четырех одновременных сеансов от одного заблокированного владельца. Это не обеспечивает изоляцию контейнера для каждого сеанса в [разделе усиления безопасности](#harden-your-deployment): перед подключением окружения к production-системам либо запустите рецепты на `--capacity 1` с одним контейнером на сеанс, либо используйте [on-demand runners](https://code.claude.com/docs/ru/self-hosted-environments-configuration.md#on-demand-runners), которые также держат секрет окружения вне хостов, запускающих сеансы. Если вы добавите [Anthropic git proxy](#use-the-anthropic-git-proxy) к одному из этих рецептов, также измените `--capacity` на `1`.

350 350 

351Этот Dockerfile является минимальной отправной точкой:351Этот Dockerfile является минимальной отправной точкой. Он устанавливает `python3`, потому что [хуки, которые control plane Anthropic предоставляет](https://code.claude.com/docs/ru/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled) сессиям Claude Tag, включая тот, с помощью которого Claude публикует свой ответ в Slack, запускают `python3`. Сохраняйте `python3` в `PATH` в любом образе, который обслуживает сессии Claude Tag:

352 352 

353```dockerfile theme={null}353```dockerfile theme={null}

354FROM debian:bookworm-slim354FROM debian:bookworm-slim

355ARG CLAUDE_CODE_VERSION355ARG CLAUDE_CODE_VERSION

356RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client jq \356RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client jq python3 \

357 && rm -rf /var/lib/apt/lists/*357 && rm -rf /var/lib/apt/lists/*

358RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \358RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \

359 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude359 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude


363ENTRYPOINT ["claude"]363ENTRYPOINT ["claude"]

364```364```

365 365 

366Замените `linux-x64` на `linux-arm64`, если ваши узлы ARM, или на `linux-x64-musl` или `linux-arm64-musl` на образе на основе musl, таком как Alpine; см. [Alpine Linux setup](https://code.claude.com/docs/ru/setup.md#alpine-linux-and-musl-based-distributions) для дополнительных пакетов, которые нужны образам musl. URL является стандартным местоположением выпуска Claude Code, поэтому вы можете проверить загруженный бинарный файл против подписанного манифеста выпуска, как описано в [Binary integrity and code signing](https://code.claude.com/docs/ru/setup.md#binary-integrity-and-code-signing). Runner требует версию Claude Code 2.1.224 или позже. Постройте образ, затем отправьте его в ваш реестр и ссылайтесь на него в рецептах ниже:366Замените `linux-x64` на `linux-arm64`, если ваши узлы ARM, или на `linux-x64-musl` или `linux-arm64-musl` на образе на основе musl, таком как Alpine; см. [Alpine Linux setup](https://code.claude.com/docs/ru/setup.md#alpine-linux-and-musl-based-distributions) для дополнительных пакетов, которые нужны образам musl. URL является стандартным местоположением выпуска Claude Code, поэтому вы можете проверить загруженный бинарный файл по подписанному манифесту выпуска, как описано в [Binary integrity and code signing](https://code.claude.com/docs/ru/setup.md#binary-integrity-and-code-signing). Runner требует версию Claude Code 2.1.224 или позже, либо 2.1.229 или позже для обслуживания сессий Claude Tag. Соберите образ, затем отправьте его в ваш реестр и ссылайтесь на него в рецептах ниже:

367 367 

368```bash theme={null}368```bash theme={null}

369docker build \369docker build \


768 * **С хуком `checkout`**: репозитории, извлечённые с помощью [хука жизненного цикла `checkout`](https://code.claude.com/docs/ru/self-hosted-environments-configuration#checkout), не отправляются. Вместо этого сохраняйте их снимки из [хука `post-session`](https://code.claude.com/docs/ru/self-hosted-environments-configuration#post-session).768 * **С хуком `checkout`**: репозитории, извлечённые с помощью [хука жизненного цикла `checkout`](https://code.claude.com/docs/ru/self-hosted-environments-configuration#checkout), не отправляются. Вместо этого сохраняйте их снимки из [хука `post-session`](https://code.claude.com/docs/ru/self-hosted-environments-configuration#post-session).

769 * **Перед включением флага**: ограничьте круг тех, кто может выполнять push в refs `claude/*` на исходном удалённом репозитории. При возобновлении runner получает ранее отправленную ветку, не проверяя, кто её отправил.769 * **Перед включением флага**: ограничьте круг тех, кто может выполнять push в refs `claude/*` на исходном удалённом репозитории. При возобновлении runner получает ранее отправленную ветку, не проверяя, кто её отправил.

770 * **Незакоммиченные изменения всё равно теряются**: чтобы побудить Claude делать коммит и push по завершении ответа, см. [Побуждение сессий отправлять свою работу](https://code.claude.com/docs/ru/self-hosted-environments-configuration.md#prompt-sessions-to-push-their-work)770 * **Незакоммиченные изменения всё равно теряются**: чтобы побудить Claude делать коммит и push по завершении ответа, см. [Побуждение сессий отправлять свою работу](https://code.claude.com/docs/ru/self-hosted-environments-configuration.md#prompt-sessions-to-push-their-work)

771* **Команда, прерванная из-за потери runner, может выполниться повторно**: когда сессия возобновляется на другом runner, Claude видит прерванный вызов инструмента с результатом, сообщающим, что его исход неизвестен.

771* **Репозиторий, добавленный в середине сессии, может не клонироваться**: Claude клонирует его с помощью `git clone` по HTTPS. На runner без [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) клонирование завершается ошибкой аутентификации git, если ничто на хосте не может прочитать репозиторий. По возможности выбирайте все необходимые сессии репозитории при её создании.772* **Репозиторий, добавленный в середине сессии, может не клонироваться**: Claude клонирует его с помощью `git clone` по HTTPS. На runner без [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) клонирование завершается ошибкой аутентификации git, если ничто на хосте не может прочитать репозиторий. По возможности выбирайте все необходимые сессии репозитории при её создании.

772* **Некоторые коннекторы не появляются в самостоятельно размещаемых сеансах**: коннектор, который вы еще не подключили в параметрах claude.ai, не указан в самостоятельно размещаемом сеансе, и сеанс не будет вас приглашать подключить его. Подключите его в параметрах сначала, затем запустите свежий сеанс. Добавление коннектора в уже работающий сеанс тоже не делает его инструменты доступными для Claude; запустите свежий сеанс, чтобы подхватить недавно добавленный коннектор.773* **Некоторые коннекторы не появляются в самостоятельно размещаемых сеансах**: коннектор, который вы еще не подключили в параметрах claude.ai, не указан в самостоятельно размещаемом сеансе, и сеанс не будет вас приглашать подключить его. Подключите его в параметрах сначала, затем запустите свежий сеанс. Добавление коннектора в уже работающий сеанс тоже не делает его инструменты доступными для Claude; запустите свежий сеанс, чтобы подхватить недавно добавленный коннектор.

773* **Когда кто-то архивирует или удаляет сессию либо освобождает её runner из меню сессии**: не рассчитывайте на push через [`--push-outcome-on-release`](https://code.claude.com/docs/ru/self-hosted-environments-reference#runner-cli-flags). Чтобы сохранить коммиты в этих случаях, отправляйте `HEAD` в резервную ветку из [хука `post-session`](https://code.claude.com/docs/ru/self-hosted-environments-configuration#post-session). Если вы берёте за основу приведённый там пример, сделайте так, чтобы он выполнял push, даже когда незакоммиченных изменений нет, поскольку он выполняет push только после коммита-снимка.774* **Когда кто-то архивирует или удаляет сессию либо освобождает её runner из меню сессии**: не рассчитывайте на push через [`--push-outcome-on-release`](https://code.claude.com/docs/ru/self-hosted-environments-reference#runner-cli-flags). Чтобы сохранить коммиты в этих случаях, отправляйте `HEAD` в резервную ветку из [хука `post-session`](https://code.claude.com/docs/ru/self-hosted-environments-configuration#post-session). Если вы берёте за основу приведённый там пример, сделайте так, чтобы он выполнял push, даже когда незакоммиченных изменений нет, поскольку он выполняет push только после коммита-снимка.


824 После обновления runner'а или устранения причины повторите сессию или запустите новую. Если ни одна из этих проверок не выявила причину, [сообщите о проблеме](#report-an-issue).825 После обновления runner'а или устранения причины повторите сессию или запустите новую. Если ни одна из этих проверок не выявила причину, [сообщите о проблеме](#report-an-issue).

825 826 

826 Для источника, в который сессия отправляет результаты, удалённая ветка приводит к сбою сессии. Для git-источника, из которого сессия только читает, runner пропускает этот источник и продолжает работу с остальными. Runner завершает сессию сбоем, если пропуск оставил бы её вообще без репозитория. До v2.1.228 такая сессия запускалась в пустом каталоге.827 Для источника, в который сессия отправляет результаты, удалённая ветка приводит к сбою сессии. Для git-источника, из которого сессия только читает, runner пропускает этот источник и продолжает работу с остальными. Runner завершает сессию сбоем, если пропуск оставил бы её вообще без репозитория. До v2.1.228 такая сессия запускалась в пустом каталоге.

828* **Claude Tag иногда не публикует свой ответ в Slack**: напоминание об ответе — это [хук, который предоставляет плоскость управления](https://code.claude.com/docs/ru/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled). Убедитесь с помощью `claude --version`, что runner работает на Claude Code v2.1.229 или новее, поскольку более старые runner'ы игнорируют предоставленные хуки; убедитесь, что `python3 --version` успешно выполняется внутри образа runner'а, поскольку хуки запускают `python3`; и убедитесь, что ни один файл настроек не отключает хуки — ни `disableAllHooks` в `managed-settings.json`, в `~/.claude/settings.json` пользователя runner'а или в `.claude/settings.json` либо `.claude/settings.local.json` репозитория, ни `allowManagedHooksOnly` или [`strictPluginOnlyCustomization`](https://code.claude.com/docs/ru/settings-reference#strictpluginonlycustomization), охватывающий хуки, в управляемых настройках.

827* **Сессия запускается без одного из своих репозиториев**: на runner'е без [хука `checkout`](https://code.claude.com/docs/ru/self-hosted-environments-configuration#checkout) git-хост может отклонить проверку доступа runner'а к репозиторию, из которого сессия только читает. Тогда runner пропускает этот репозиторий, записывает в лог строку `[runner:warn] could not access context source` с указанием отказа и запускает сессию с остальными репозиториями.829* **Сессия запускается без одного из своих репозиториев**: на runner'е без [хука `checkout`](https://code.claude.com/docs/ru/self-hosted-environments-configuration#checkout) git-хост может отклонить проверку доступа runner'а к репозиторию, из которого сессия только читает. Тогда runner пропускает этот репозиторий, записывает в лог строку `[runner:warn] could not access context source` с указанием отказа и запускает сессию с остальными репозиториями.

828 830 

829 Runner пропускает только явный отказ: хост отвечает, что репозиторий не найден, git не находит учётных данных для хоста или аутентификация не проходит. Сбой сети, таймаут или HTTP `403` по-прежнему приводят к сбою запуска сессии, как и отказ для репозитория, в который сессия отправляет результаты. Runner по-прежнему намеренно завершает сбоем сессию, которую пропуск оставил бы вообще без репозитория. С [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) runner пропускает только репозиторий, доступ к которому отклоняет сам git-прокси.831 Runner пропускает только явный отказ: хост отвечает, что репозиторий не найден, git не находит учётных данных для хоста или аутентификация не проходит. Сбой сети, таймаут или HTTP `403` по-прежнему приводят к сбою запуска сессии, как и отказ для репозитория, в который сессия отправляет результаты. Runner по-прежнему намеренно завершает сбоем сессию, которую пропуск оставил бы вообще без репозитория. С [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) runner пропускает только репозиторий, доступ к которому отклоняет сам git-прокси.

Details

35 35 

36Установите на хост перед началом:36Установите на хост перед началом:

37 37 

38* **Claude Code v2.1.224 или позже**, с любым из [стандартных методов установки](https://code.claude.com/docs/ru/setup.md). Runner является частью стандартного бинарного файла `claude`, и более ранние версии не распознают подкоманду `self-hosted-runner`. Чтобы зафиксировать точную версию, которую запускает ваш парк, см. [Install a specific version](https://code.claude.com/docs/ru/setup.md#install-a-specific-version). Для образов контейнеров см. Dockerfile в [Deploy to production](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#build-the-runner-image).38* **Claude Code v2.1.224 или позже**, с любым из [стандартных методов установки](https://code.claude.com/docs/ru/setup.md). Runner является частью стандартного бинарного файла `claude`, и более ранние версии не распознают подкоманду `self-hosted-runner`. Runner, обслуживающему сессии Claude Tag, требуется v2.1.229 или позже и `python3` в его `PATH`, поскольку [хуки, предоставляемые control plane](https://code.claude.com/docs/ru/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled) для этих сессий, запускают `python3`. Чтобы зафиксировать точную версию, которую запускает ваш парк, см. [Install a specific version](https://code.claude.com/docs/ru/setup.md#install-a-specific-version). Для образов контейнеров см. Dockerfile в [Deploy to production](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#build-the-runner-image).

39* **Git 2.24 или новее**. Некоторые опции git на странице развёртывания требуют более новых версий; [Configure git](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#configure-git) указывает каждый минимум.39* **Git 2.24 или новее**. Некоторые опции git на странице развёртывания требуют более новых версий; [Configure git](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#configure-git) указывает каждый минимум.

40 40 

41Подтвердите, что хост готов:41Подтвердите, что хост готов:

Details

21| Флаг | Переменная окружения | По умолчанию | Описание |21| Флаг | Переменная окружения | По умолчанию | Описание |

22| :- | :- | :- | :- |22| :- | :- | :- | :- |

23| `--api-url <url>` | none | `https://api.anthropic.com` | URL базы API. Переопределяйте только для тестирования. |23| `--api-url <url>` | none | `https://api.anthropic.com` | URL базы API. Переопределяйте только для тестирования. |

24| `--base-dir <path>` | `SELF_HOSTED_RUNNER_BASE_DIR` | `/workspace`; none на Windows | Каталог для проверок репозитория и рабочих каталогов для каждого сеанса. Runner должен иметь доступ на запись к этому пути или его родительскому каталогу. Runner создает каталог при запуске и выходит с `cannot create or write to base directory` когда не может создать или записать в него. До v2.1.225 runner создавал каталог при запуске первого сеанса, поэтому неиспользуемый путь приводил к сбою сеансов, а не запуска. На Windows, который не является поддерживаемым хостом runner, нет значения по умолчанию: runner выходит при запуске, если вы не передадите флаг или не установите переменную. Используйте одно и то же значение на каждом runner в среде. См. [Keep the base directory and capacity identical across runners](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#keep-the-base-directory-and-capacity-identical-across-runners). |24| `--base-dir <path>` | `SELF_HOSTED_RUNNER_BASE_DIR` | `/workspace`; на Windows отсутствует | Каталог для извлечённых репозиториев и рабочих каталогов для каждого сеанса. Runner должен иметь доступ на запись к этому пути или его родительскому каталогу. Runner создает каталог при запуске и выходит с `cannot create or write to base directory`, когда не может создать или записать в него. До v2.1.225 runner создавал каталог при запуске первого сеанса, поэтому непригодный путь приводил к сбою сеансов, а не запуска. На Windows, который не является поддерживаемым хостом runner, нет значения по умолчанию: runner выходит при запуске, если вы не передадите флаг и не установите переменную. Используйте одно и то же значение на каждом runner в среде. См. [Держите базовый каталог и емкость идентичными на всех runners](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#keep-the-base-directory-and-capacity-identical-across-runners). |

25| `--capacity <n>` | none | `1` | Максимальное количество одновременных сеансов, которые обрабатывает этот runner. Все сеансы принадлежат одному заблокированному [owner](https://code.claude.com/docs/ru/self-hosted-environments#key-concepts). Используйте одно и то же значение на каждом runner в среде; см. [Keep the base directory and capacity identical across runners](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#keep-the-base-directory-and-capacity-identical-across-runners). |25| `--capacity <n>` | none | `1` | Максимальное количество одновременных сеансов, которые обрабатывает этот runner. Все сеансы принадлежат одному заблокированному [owner](https://code.claude.com/docs/ru/self-hosted-environments#key-concepts). Используйте одно и то же значение на каждом runner в среде; см. [Держите базовый каталог и емкость идентичными на всех runners](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#keep-the-base-directory-and-capacity-identical-across-runners). |

26| `--client-label <label>` | `SELF_HOSTED_RUNNER_CLIENT_LABEL` | имя хоста хоста | Метка, которую runner отправляет при регистрации. Runner также сообщает её как метку `client_label` [`claude_code_self_hosted_runner_info`](#prometheus-metrics). Требует Claude Code v2.1.248 или позже. |26| `--client-label <label>` | `SELF_HOSTED_RUNNER_CLIENT_LABEL` | имя хоста хоста | Метка, которую runner отправляет при регистрации. Runner также сообщает её как метку `client_label` [`claude_code_self_hosted_runner_info`](#prometheus-metrics). Требует Claude Code v2.1.248 или позже. |

27| `--configure-git` | `SELF_HOSTED_RUNNER_CONFIGURE_GIT=1` | off | При запуске запишите глобальную идентификацию git, включите подписание коммитов Anthropic, включите переговоры git push и установите hooks коммитов, которые добавляют трейлер `Co-authored-by:`. Переговоры push требуют Claude Code v2.1.257 или позже. См. [Configure git](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#configure-git). |27| `--configure-git` | `SELF_HOSTED_RUNNER_CONFIGURE_GIT=1` | off | При запуске запишите глобальную идентификацию git, включите подписание коммитов Anthropic, включите переговоры git push и установите hooks коммитов, которые добавляют трейлер `Co-authored-by:`. Переговоры push требуют Claude Code v2.1.257 или позже. См. [Configure git](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#configure-git). |

28| `--confine-repo-settings <mode>` | `SELF_HOSTED_RUNNER_CONFINE_REPO_SETTINGS` | `warn` | Устанавливает режим защиты, которая помечает сеанс, когда параметры репозитория, зафиксированные в коммите, пытаются предоставить доступ на запись или чтение вне собственного рабочего пространства этого сеанса, установить переменные окружения или переопределить позицию sandbox или hooks оператора, например `sandbox.enabled: false` или `disableAllHooks`. По умолчанию `warn` регистрирует нарушение и все еще запускает сеанс, `enforce` отказывает в сеансе, а `off` отключает сканирование. См. [Harden your deployment](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#harden-your-deployment). |28| `--confine-repo-settings <mode>` | `SELF_HOSTED_RUNNER_CONFINE_REPO_SETTINGS` | `warn` | Устанавливает режим защиты, которая помечает сеанс, когда параметры репозитория, зафиксированные в коммите, пытаются предоставить доступ на запись или чтение вне собственного рабочего пространства этого сеанса, установить переменные окружения или переопределить позицию sandbox или hooks оператора, например `sandbox.enabled: false` или `disableAllHooks`. По умолчанию `warn` регистрирует нарушение и все еще запускает сеанс, `enforce` отказывает в сеансе, а `off` отключает сканирование. См. [Harden your deployment](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#harden-your-deployment). |


52| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Выведите runner на пенсию в абсолютный временной штамп Unix в секундах для инфраструктуры, которая убивает runner в известное время; [Runner lifecycle](https://code.claude.com/docs/ru/self-hosted-environments#runner-lifecycle) описывает последовательность отпуска и как определить размер маржи. Значения до 2001 или после года 5138 отклоняются флагом и игнорируются переменной окружения. |52| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Выведите runner на пенсию в абсолютный временной штамп Unix в секундах для инфраструктуры, которая убивает runner в известное время; [Runner lifecycle](https://code.claude.com/docs/ru/self-hosted-environments#runner-lifecycle) описывает последовательность отпуска и как определить размер маржи. Значения до 2001 или после года 5138 отклоняются флагом и игнорируются переменной окружения. |

53| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Какие из списков правил классификатора [авторежима](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode), которые управляющий уровень отправляет вместе с сессией, могут применяться к этой сессии: `all`, `no-allow` или `none`. Что применяет каждое значение, см. в разделе [Списки правил авторежима](#auto-mode-rule-lists). Недопустимое значение останавливает runner при запуске. Требуется Claude Code v2.1.295 или новее. |53| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Какие из списков правил классификатора [авторежима](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode), которые управляющий уровень отправляет вместе с сессией, могут применяться к этой сессии: `all`, `no-allow` или `none`. Что применяет каждое значение, см. в разделе [Списки правил авторежима](#auto-mode-rule-lists). Недопустимое значение останавливает runner при запуске. Требуется Claude Code v2.1.295 или новее. |

54| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Как долго ждать чистого выхода процесса Claude после завершения сеанса перед принудительным завершением. Повысьте значение, если собственные hooks `SessionEnd` дочернего процесса нуждаются в большем времени. |54| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Как долго ждать чистого выхода процесса Claude после завершения сеанса перед принудительным завершением. Повысьте значение, если собственные hooks `SessionEnd` дочернего процесса нуждаются в большем времени. |

55| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Освобождает слот сессии, если дочерний процесс не сообщил по [каналу активности](https://code.claude.com/docs/ru/self-hosted-environments-configuration.md#keep-stdin-and-file-descriptor-3-attached) о своей инициализации в течение N минут. Отсчёт N минут начинается при запуске процесса, после клонирования, и начинается заново при каждом сообщении `user` или `assistant`, которое дочерний процесс выдаёт до инициализации или до сообщения о своём состоянии. До v2.1.299 этот таймаут переставал действовать с первым таким сообщением сессии. Об освобождении после сигнала инициализации см. `--release-idle-session-min`. `0` отключает. |55| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Сколько ждать дочерний процесс, который не инициализировался, прежде чем освободить слот сессии. С какого момента начинается отсчёт и какие сессии продолжают работать, см. в разделе [Таймаут запуска сессии](#session-startup-timeout). `0` отключает таймаут. |

56| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | on | Посейте сохраняемое доверие для путей репозитория каждого сеанса, чтобы зафиксированные в репо `permissions.allow` и `additionalDirectories` были соблюдены. Установите `false` для отпуска зафиксированных в репо грантов разрешений и вместо этого настройте правила разрешения в `settings.json` конфигурации хоста; параметры `sandbox.*` зафиксированные в репо все еще применяются в любом случае, поэтому [защита repo-settings](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#harden-your-deployment) сканирует их независимо от этого флага. |56| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | on | Посейте сохраняемое доверие для путей репозитория каждого сеанса, чтобы зафиксированные в репо `permissions.allow` и `additionalDirectories` были соблюдены. Установите `false` для отпуска зафиксированных в репо грантов разрешений и вместо этого настройте правила разрешения в `settings.json` конфигурации хоста; параметры `sandbox.*` зафиксированные в репо все еще применяются в любом случае, поэтому [защита repo-settings](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#harden-your-deployment) сканирует их независимо от этого флага. |

57| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Клонирует репозитории на github.com через [прокси git Anthropic](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#use-the-anthropic-git-proxy) вместо управляемой клиентом аутентификации git. Требует `--capacity 1` и git 2.32 или новее; в противном случае runner отказывается запускаться. Заменяет флаги перезаписи. |57| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Клонирует репозитории на github.com через [прокси git Anthropic](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#use-the-anthropic-git-proxy) вместо управляемой клиентом аутентификации git. Требует `--capacity 1` и git 2.32 или новее; в противном случае runner отказывается запускаться. Заменяет флаги перезаписи. |

58 58 


61* **Флаг**: запуск не удается с ошибкой.61* **Флаг**: запуск не удается с ошибкой.

62* **Переменная окружения**: runner зажимает значение до потолка таймера вместо его отклонения.62* **Переменная окружения**: runner зажимает значение до потолка таймера вместо его отклонения.

63 63 

64### Таймаут запуска сессии

65 

66Если сессия потеряла свой слот во время хода, например `/code-review`, обновите runner и дочерний бинарный файл до v2.1.309 или новее. С v2.1.299 по v2.1.308 runner освобождал сессию, даже посреди хода, если таймаут запуска истекал без сообщения `user` или `assistant`.

67 

68С `--startup-timeout-min <n>` runner освобождает слот сессии, если её дочерний процесс не инициализировался в течение `<n>` минут после клонирования. Во время хода, начавшегося до инициализации дочернего процесса, сессия сохраняет свой слот, пока не пройдёт `<n>` минут без единой строки в [канале активности](https://code.claude.com/docs/ru/self-hosted-environments-configuration.md#keep-stdin-and-file-descriptor-3-attached) дочернего процесса. После инициализации дочернего процесса runner сбрасывает этот отсчёт, и освобождением управляет `--release-idle-session-min`. Чтобы ограничить сессию, дочерний процесс которой жив, но завис, задайте `--kill-session-after-min`.

69 

64### Списки правил авторежима70### Списки правил авторежима

65 71 

66`--server-auto-mode-lists` позволяет решить, какие правила классификатора [авторежима](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode), поступающие извне runner, применяются к сессиям на ваших runner. Управляющий уровень Anthropic может отправлять списки правил вместе с сессией и просить runner применить их. Некоторые записи могут быть правилами, написанными администратором вашей организации. Списки называются `environment`, `soft_deny` и `allow`:72`--server-auto-mode-lists` позволяет решить, какие правила классификатора [авторежима](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode), поступающие извне runner, применяются к сессиям на ваших runner. Управляющий уровень Anthropic может отправлять списки правил вместе с сессией и просить runner применить их. Некоторые записи могут быть правилами, написанными администратором вашей организации. Списки называются `environment`, `soft_deny` и `allow`:


374 380 

375#### Сопоставление метрик сессии с метриками runner381#### Сопоставление метрик сессии с метриками runner

376 382 

377Чтобы разместить собственные метрики сессии рядом с `claude_code_self_hosted_runner_session_idle_seconds`, выполняйте соединение по `session_id` runner:383Чтобы узнать, во что обошлись простаивающие сессии, соедините метрику runner `claude_code_self_hosted_runner_session_idle_seconds` с метрикой стоимости Claude Code по `ccr_session_id`. Метрика runner не содержит этой метки, поэтому добавьте её с помощью `label_replace`, как в этом запросе:

384 

385```text theme={null}

386sum by (ccr_session_id) (claude_code_cost_usage_total)

387and on (ccr_session_id)

388label_replace(

389 claude_code_self_hosted_runner_session_idle_seconds > 600,

390 "ccr_session_id", "cse_$1", "session_id", "session_(.*)"

391)

392```

393 

394Запрос возвращает по одному результату на каждую сессию, простаивающую более десяти минут: стоимость в долларах США, которую её процесс Claude Code насчитал на данный момент. Чтобы соединить другую метрику Claude Code, замените `claude_code_cost_usage_total` в запросе. Запрос работает при любом значении `--capacity`.

378 395 

379* **При `--capacity` больше единицы**: соединяйте напрямую. На `/metrics` runner серии сессии содержат тот же `session_id`, что и эта метрика, в форме `session_...`.396* **`session_id`**: на порту 9464 эта метка у метрик Claude Code содержит собственный [`session.id`](https://code.claude.com/docs/ru/monitoring-usage#standard-attributes) Claude Code, который не совпадает ни с одной серией runner. Соединение по ней ничего не возвращает, поэтому соединяйте по `ccr_session_id`.

380* **При `--capacity 1`**: соединяйте по преобразованному `ccr_session_id`. По умолчанию каждая метрика Claude Code на порту 9464 содержит эту метку, в которой хранится ID сессии в форме `cse_...`. В новой метке замените её префикс `cse_` на `session_`, чтобы получить `session_id` runner. Собственный `session_id` метрики содержит собственный [`session.id`](https://code.claude.com/docs/ru/monitoring-usage#standard-attributes) Claude Code, который не совпадает ни с одной серией runner.397* **У метрик Claude Code нет `ccr_session_id`**: убедитесь, что [`OTEL_METRICS_INCLUDE_SESSION_ID`](https://code.claude.com/docs/ru/monitoring-usage#metrics-cardinality-control) не задана как `false`

381 398 

382### Семантика счётчиков жизненного цикла сессий399### Семантика счётчиков жизненного цикла сессий

383 400 

Details

117| [`gcpAuthRefresh`](#gcpauthrefresh) | Обновляйте [учётные данные Google Cloud](https://code.claude.com/docs/ru/google-vertex-ai.md#advanced-credential-configuration) с помощью вашей собственной команды | Authentication and providers | Any file |117| [`gcpAuthRefresh`](#gcpauthrefresh) | Обновляйте [учётные данные Google Cloud](https://code.claude.com/docs/ru/google-vertex-ai.md#advanced-credential-configuration) с помощью вашей собственной команды | Authentication and providers | Any file |

118| [`hooks`](#hooks) | Запускайте свои собственные команды как [хуки](https://code.claude.com/docs/ru/hooks.md) в точках жизненного цикла Claude Code | Hooks and automation | Any file |118| [`hooks`](#hooks) | Запускайте свои собственные команды как [хуки](https://code.claude.com/docs/ru/hooks.md) в точках жизненного цикла Claude Code | Hooks and automation | Any file |

119| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Ограничьте, какие переменные окружения [HTTP-хуки](https://code.claude.com/docs/ru/hooks.md) могут помещать в заголовки | Hooks and automation | Any file |119| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Ограничьте, какие переменные окружения [HTTP-хуки](https://code.claude.com/docs/ru/hooks.md) могут помещать в заголовки | Hooks and automation | Any file |

120| [`idleCompaction`](#idlecompaction) | Запретите Claude Code сжимать длинный диалог, пока ваша сессия терминала простаивает | Memory and context | Any file |120| [`idleCompaction`](#idlecompaction) | Запретите Claude Code сжимать длинный диалог, от которого вы отошли | Memory and context | Any file |

121| [`includeCoAuthoredBy`](#includecoauthoredby) | Устарело; используйте `attribution` для скрытия или изменения атрибуции коммитов и PR | Git and attribution | Any file |121| [`includeCoAuthoredBy`](#includecoauthoredby) | Устарело; используйте `attribution` для скрытия или изменения атрибуции коммитов и PR | Git and attribution | Any file |

122| [`includeGitInstructions`](#includegitinstructions) | Удалите встроенные инструкции для коммитов и PR из контекста Claude | Git and attribution | Any file |122| [`includeGitInstructions`](#includegitinstructions) | Удалите встроенные инструкции для коммитов и PR из контекста Claude | Git and attribution | Any file |

123| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Получайте [push-уведомление](https://code.claude.com/docs/ru/remote-control.md#mobile-push-notifications), когда Claude ждёт вас | Remote, desktop, and notifications | Any file |123| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Получайте [push-уведомление](https://code.claude.com/docs/ru/remote-control.md#mobile-push-notifications), когда Claude ждёт вас | Remote, desktop, and notifications | Any file |


1229На платформе, которую песочница не поддерживает, Claude Code не запускается при включённом ключе. См. [Enforce sandboxing with managed settings](https://code.claude.com/docs/ru/sandboxing.md#enforce-sandboxing-with-managed-settings).1229На платформе, которую песочница не поддерживает, Claude Code не запускается при включённом ключе. См. [Enforce sandboxing with managed settings](https://code.claude.com/docs/ru/sandboxing.md#enforce-sandboxing-with-managed-settings).

1230 1230 

1231* **Scope**: [`Any file`](#scopes), с [ограничениями для настроек проекта и локальных настроек](https://code.claude.com/docs/ru/sandboxing.md#repository-settings-under-an-admin-required-sandbox)1231* **Scope**: [`Any file`](#scopes), с [ограничениями для настроек проекта и локальных настроек](https://code.claude.com/docs/ru/sandboxing.md#repository-settings-under-an-admin-required-sandbox)

1232* **Type**: Boolean1232* **Тип**: логический

1233 * `true`: Claude Code завершается с ошибкой при запуске, когда `sandbox.enabled` имеет значение `true`, но песочница не может запуститься1233 * `true`: Claude Code завершается с ошибкой при запуске, когда `sandbox.enabled` равно `true`, но песочница не может запуститься. Если песочница проходит эту проверку, а затем не может инициализироваться, сессия продолжает работать, и Claude Code [отклоняет каждую команду в песочнице](https://code.claude.com/docs/ru/sandboxing.md#commands-refused-with-sandbox-is-required)

1234 * `false`: Claude Code выполняет команды без изоляции, когда песочница не может запуститься1234 * `false`: Claude Code запускает команды без песочницы, когда песочница не может запуститься

1235* **Default**: `false`1235* **Default**: `false`

1236 1236 

1237Это заставляет каждую управляемую машину либо изолировать команды, либо отказаться от запуска:1237Этот пример включает песочницу на управляемых компьютерах и задаёт `failIfUnavailable` значение `true`:

1238 1238 

1239```json managed-settings.json theme={null}1239```json managed-settings.json theme={null}

1240{1240{


2415 2415 

2416### `idleCompaction`2416### `idleCompaction`

2417 2417 

2418Сжатие в режиме простоя [сжимает](https://code.claude.com/docs/ru/context-window.md#what-survives-compaction) длинный диалог, от которого вы отошли, незадолго до истечения срока действия его кэша промптов. Тогда ваше следующее сообщение отправляет сводку вместо всего диалога. Когда вы вернётесь, в диалоге будет показана строка, начинающаяся с `Compacted while idle, before the prompt cache expired`.2418Сжатие в режиме простоя [сжимает](https://code.claude.com/docs/ru/context-window.md#what-survives-compaction) длинный диалог, от которого вы отошли. Тогда ваше следующее сообщение отправляет сводку вместо всего диалога. После сжатия в диалоге отображается уведомление:

2419 

2420* **Терминал**: строка, начинающаяся с `Compacted while idle, before the prompt cache expired`

2421* **[Панель чата VS Code](#idle-compaction-in-vs-code-and-the-desktop-app)**: уведомление, содержащее `a summary written while you were away`

2422* **[Настольное приложение](#idle-compaction-in-vs-code-and-the-desktop-app)**: то же уведомление внутри строки, метка которой содержит `Claude Code notice`. Если вы не видите эту строку или её текст, переключитесь в [режим просмотра Verbose](https://code.claude.com/docs/ru/desktop.md#switch-view-modes).

2419 2423 

2420Сжатие в режиме простоя включено по умолчанию для диалогов, которые соответствуют всем следующим условиям:2424Сжатие в режиме простоя включено по умолчанию для диалогов, которые соответствуют всем следующим условиям:

2421 2425 

2422* **Сессия**: вы находитесь в интерактивной сессии терминала2426* **Сессия**: вы находитесь в интерактивной сессии терминала либо в панели чата расширения VS Code или на вкладке Code настольного приложения с [учётной записью, которую выбирает Anthropic](#idle-compaction-in-vs-code-and-the-desktop-app)

2423* **Автосжатие**: [`autoCompactEnabled`](#autocompactenabled) включён2427* **Автосжатие**: [`autoCompactEnabled`](#autocompactenabled) включён

2424* **Кэш промптов**: диалог использует [часовой TTL кэша промптов](https://code.claude.com/docs/ru/prompt-caching.md#which-ttl-each-request-gets)2428* **Кэш промптов**: диалог использует [часовой TTL кэша промптов](https://code.claude.com/docs/ru/prompt-caching.md#which-ttl-each-request-gets)

2425* **Флаги функций**: Claude Code может [получать флаги функций от Anthropic](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching)2429* **Флаги функций**: Claude Code может [получать флаги функций от Anthropic](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching)


2441}2445}

2442```2446```

2443 2447 

2444Чтобы отключить или включить сжатие в режиме простоя прямо во время сессии, запустите `/config` и измените строку **Idle compaction**. Ваш выбор сохраняется в пользовательских настройках и применяется сразу. Эта строка требует Claude Code v2.1.302 или позже. Если вы используете одну из этих версий, а `/config` не показывает эту строку, проверьте следующие причины:2448Чтобы отключить или включить сжатие в режиме простоя прямо в сессии терминала, запустите `/config` и измените строку **Idle compaction**. Ваш выбор сохраняется в пользовательских настройках и применяется сразу. Эта строка требует Claude Code v2.1.302 или позже. Если вы используете одну из этих версий, а `/config` не показывает эту строку, проверьте следующие причины:

2445 2449 

2446* **Ключ задан в другом источнике настроек**: значение в управляемых настройках, флаге `--settings` или файле настроек проекта или локальных настроек переопределяет ваши пользовательские настройки. Измените ключ в этом источнике2450* **Ключ задан в другом источнике настроек**: значение в управляемых настройках, флаге `--settings` или файле настроек проекта или локальных настроек переопределяет ваши пользовательские настройки. Измените ключ в этом источнике

2447* **Флаги функций недоступны**: там, где Claude Code не может [получать флаги функций от Anthropic](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching), сжатие в режиме простоя не выполняется, поэтому отключать нечего2451* **Флаги функций недоступны**: там, где Claude Code не может [получать флаги функций от Anthropic](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching), сжатие в режиме простоя не выполняется, поэтому отключать нечего


2462}2466}

2463```2467```

2464 2468 

2469#### Сжатие в режиме простоя в VS Code и настольном приложении

2470 

2471Подобное уведомление означает, что Claude Code [заменил ваш предыдущий диалог сводкой](https://code.claude.com/docs/ru/context-window.md#what-survives-compaction), с которой теперь работает Claude:

2472 

2473```text theme={null}

2474Compacted using a summary written while you were away · turn off with "idleCompaction": false in settings.json

2475```

2476 

2477Вам не нужно ничего делать. Чтобы отключить сжатие в режиме простоя, установите `idleCompaction` в `false` в `~/.claude/settings.json` или другом [файле настроек](https://code.claude.com/docs/ru/settings.md#settings-files-and-who-they-affect).

2478 

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

2480 

2465### `plansDirectory`2481### `plansDirectory`

2466 2482 

2467Выберите, где Claude Code хранит файлы плана, которые он записывает в [режиме планирования](https://code.claude.com/docs/ru/permission-modes.md#analyze-before-you-edit-with-plan-mode). Claude Code разрешает путь относительно корня проекта.2483Выберите, где Claude Code хранит файлы плана, которые он записывает в [режиме планирования](https://code.claude.com/docs/ru/permission-modes.md#analyze-before-you-edit-with-plan-mode). Claude Code разрешает путь относительно корня проекта.


3522 3538 

3523* **Запускаются управляемые хуки и хуки SDK**: хуки из управляемых настроек и хуки, которые [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md) регистрирует в процессе3539* **Запускаются управляемые хуки и хуки SDK**: хуки из управляемых настроек и хуки, которые [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md) регистрирует в процессе

3524* **Запускаются хуки принудительно включённых плагинов**: хуки из плагинов, которые ваши управляемые настройки принудительно включают через [`enabledPlugins`](#enabledplugins). Claude Code сопоставляет полный ID `plugin@marketplace`, поэтому плагин с тем же именем из другого маркетплейса остаётся заблокированным. Это позволяет вам распространять проверенные хуки через маркетплейс организации, блокируя всё остальное. [Mod](https://code.claude.com/docs/ru/plugins/mods/overview.md) в таком плагине загружается, только если он [считается модом вашей организации](https://code.claude.com/docs/ru/plugins/mods/admin.md#install-your-organizations-mods)3540* **Запускаются хуки принудительно включённых плагинов**: хуки из плагинов, которые ваши управляемые настройки принудительно включают через [`enabledPlugins`](#enabledplugins). Claude Code сопоставляет полный ID `plugin@marketplace`, поэтому плагин с тем же именем из другого маркетплейса остаётся заблокированным. Это позволяет вам распространять проверенные хуки через маркетплейс организации, блокируя всё остальное. [Mod](https://code.claude.com/docs/ru/plugins/mods/overview.md) в таком плагине загружается, только если он [считается модом вашей организации](https://code.claude.com/docs/ru/plugins/mods/admin.md#install-your-organizations-mods)

3541* **Мониторы из других плагинов блокируются**: [мониторы](https://code.claude.com/docs/ru/plugins/components.md#monitors) плагина не запускаются, если плагин не включён принудительно. Требуется Claude Code v2.1.310 или новее

3525* **Всё остальное блокируется**: пользовательские, проектные и локальные хуки, хуки и mods из других установленных плагинов, а также хуки, объявленные во frontmatter агента. [Mods, встроенные в Claude Code](https://code.claude.com/docs/ru/plugins/mods/overview.md#mods-built-into-claude-code), продолжают работать. Чтобы блокировать только mods пользователей, установите вместо этого [`allowManagedModsOnly`](https://code.claude.com/docs/ru/plugins/mods/admin#set-options-on-the-built-in-guard).3542* **Всё остальное блокируется**: пользовательские, проектные и локальные хуки, хуки и mods из других установленных плагинов, а также хуки, объявленные во frontmatter агента. [Mods, встроенные в Claude Code](https://code.claude.com/docs/ru/plugins/mods/overview.md#mods-built-into-claude-code), продолжают работать. Чтобы блокировать только mods пользователей, установите вместо этого [`allowManagedModsOnly`](https://code.claude.com/docs/ru/plugins/mods/admin#set-options-on-the-built-in-guard).

3526* **Плагины с источником-командой отключаются**: Claude Code также отключает плагины с [источником `command`](https://code.claude.com/docs/ru/plugins/marketplace-reference#command-plugin-source), включая плагины, принудительно включённые в управляемых `enabledPlugins`, если вы явно не установите [`disableCommandPluginSources`](#disablecommandpluginsources) в `false`3543* **Плагины с источником-командой отключаются**: Claude Code также отключает плагины с [источником `command`](https://code.claude.com/docs/ru/plugins/marketplace-reference#command-plugin-source), включая плагины, принудительно включённые в управляемых `enabledPlugins`, если вы явно не установите [`disableCommandPluginSources`](#disablecommandpluginsources) в `false`

3527* **Команды `headersHelper` маркетплейсов блокируются**: Claude Code также блокирует [команды `headersHelper`](https://code.claude.com/docs/ru/plugins/host-marketplace#authenticate-archive-downloads) маркетплейсов, если [`disableCommandPluginSources`](#disablecommandpluginsources) явно не установлен в `false`, за исключением маркетплейса, который объявлен в самих управляемых настройках. Требуется Claude Code v2.1.238 или новее3544* **Команды `headersHelper` маркетплейсов блокируются**: Claude Code также блокирует [команды `headersHelper`](https://code.claude.com/docs/ru/plugins/host-marketplace#authenticate-archive-downloads) маркетплейсов, если [`disableCommandPluginSources`](#disablecommandpluginsources) явно не установлен в `false`, за исключением маркетплейса, который объявлен в самих управляемых настройках. Требуется Claude Code v2.1.238 или новее

statusline.md +1 −1

Details

380* `used_percentage` и `resets_at`: приходят с каждым ответом, поэтому присутствуют всегда, когда присутствует `spend_limit`. `used_percentage` варьируется от 0 до 100 или выше 100, когда вы превышаете лимит, а `resets_at` — это секунды эпохи Unix, когда сбрасывается период лимита.380* `used_percentage` и `resets_at`: приходят с каждым ответом, поэтому присутствуют всегда, когда присутствует `spend_limit`. `used_percentage` варьируется от 0 до 100 или выше 100, когда вы превышаете лимит, а `resets_at` — это секунды эпохи Unix, когда сбрасывается период лимита.

381* `used_usd`, `limit_usd` и `period`: ваши предполагаемые расходы на данный момент и ваш лимит в долларах США, а также период, на который распространяется лимит: `daily`, `weekly` или `monthly`. Шлюз [вычисляет `used_usd` на основе подсчётов токенов](https://code.claude.com/docs/ru/claude-apps-gateway-spend-limits#how-requests-are-priced), поэтому это оценка, а не выставленная к оплате сумма. Claude Code получает их от шлюза отдельным запросом примерно каждые пять минут, пока вы отправляете запросы. Суммы в долларах могут быть примерно на пять минут старше, чем `used_percentage`, поэтому эти значения могут ненадолго расходиться. Требуется v2.1.284 или позже как для Claude Code, так и для шлюза.381* `used_usd`, `limit_usd` и `period`: ваши предполагаемые расходы на данный момент и ваш лимит в долларах США, а также период, на который распространяется лимит: `daily`, `weekly` или `monthly`. Шлюз [вычисляет `used_usd` на основе подсчётов токенов](https://code.claude.com/docs/ru/claude-apps-gateway-spend-limits#how-requests-are-priced), поэтому это оценка, а не выставленная к оплате сумма. Claude Code получает их от шлюза отдельным запросом примерно каждые пять минут, пока вы отправляете запросы. Суммы в долларах могут быть примерно на пять минут старше, чем `used_percentage`, поэтому эти значения могут ненадолго расходиться. Требуется v2.1.284 или позже как для Claude Code, так и для шлюза.

382 382 

383Считайте `used_usd`, `limit_usd` и `period` необязательными, даже когда `spend_limit` присутствует. Ваш скрипт получает процент раньше них, и они остаются отсутствующими, если вы установили `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, что отключает этот запрос. Считывайте каждое из них с резервным вариантом в скрипте, например `jq -r '.rate_limits.spend_limit.used_usd // empty'`.383Считайте `used_usd`, `limit_usd` и `period` необязательными, даже когда `spend_limit` присутствует, потому что ваш скрипт получает процент раньше них. Считывайте каждое из них с резервным вариантом в скрипте, например `jq -r '.rate_limits.spend_limit.used_usd // empty'`. До Claude Code v2.1.295 они оставались отсутствующими, если вы установили `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, что отключало этот запрос.

384 384 

385### Поля prompt cache385### Поля prompt cache

386 386 

sub-agents.md +1 −1

Details

600| `default` | Режим Manual: запрашивает разрешение |600| `default` | Режим Manual: запрашивает разрешение |

601| `acceptEdits` | Автоматически принимать редактирование файлов и общие команды файловой системы для путей в рабочей директории или `additionalDirectories` |601| `acceptEdits` | Автоматически принимать редактирование файлов и общие команды файловой системы для путей в рабочей директории или `additionalDirectories` |

602| `auto` | [Auto mode](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode): классификатор в фоне проверяет команды и записи в защищённые директории |602| `auto` | [Auto mode](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode): классификатор в фоне проверяет команды и записи в защищённые директории |

603| `dontAsk` | Автоматически отклоняет вызовы, которые потребовали бы запроса разрешения, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) всё же может одобрить [некоторые из этих вызовов](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods). Явно разрешённые инструменты по-прежнему работают. `AskUserQuestion`, инструменты MCP с пометкой [`requiresUserInteraction`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool), [чтение из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths) и инструменты коннекторов, [для которых ваша организация задала `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, где эта настройка доходит до Claude Code, отклоняются, даже если вы их разрешили |603| `dontAsk` | Автоматически отклоняет вызовы, которые потребовали бы запроса разрешения, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) всё же может одобрить [некоторые из этих вызовов](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods). Явно разрешённые инструменты по-прежнему работают. `AskUserQuestion`, инструменты MCP с пометкой [`requiresUserInteraction`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool), [чтение из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths) и инструменты коннекторов, [для которых ваша организация задала `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), отклоняются, даже если вы их разрешили. К инструментам коннекторов это относится только в сессиях, где эта настройка доходит до Claude Code |

604| `bypassPermissions` | [Пропустить запросы разрешений](https://code.claude.com/docs/ru/permission-modes.md#skip-all-checks-with-bypasspermissions-mode). Subagent работает в этом режиме только когда основной разговор это делает |604| `bypassPermissions` | [Пропустить запросы разрешений](https://code.claude.com/docs/ru/permission-modes.md#skip-all-checks-with-bypasspermissions-mode). Subagent работает в этом режиме только когда основной разговор это делает |

605| `plan` | Режим Plan (исследование только для чтения) |605| `plan` | Режим Plan (исследование только для чтения) |

606 606 

Details

121* **Фоновая сессия**: [фоновая сессия](https://code.claude.com/docs/ru/agent-view.md) не сообщает свой статус вашему терминалу, даже когда вы к ней подключены. Вместо этого её статус отображается в представлении агентов.121* **Фоновая сессия**: [фоновая сессия](https://code.claude.com/docs/ru/agent-view.md) не сообщает свой статус вашему терминалу, даже когда вы к ней подключены. Вместо этого её статус отображается в представлении агентов.

122* **[`CLAUDE_CODE_DISABLE_TERMINAL_TITLE`](https://code.claude.com/docs/ru/env-vars#variables)**: если вы установили эту переменную в `1`, Claude Code не проверяет поддержку и не сообщает статус. Удалите её.122* **[`CLAUDE_CODE_DISABLE_TERMINAL_TITLE`](https://code.claude.com/docs/ru/env-vars#variables)**: если вы установили эту переменную в `1`, Claude Code не проверяет поддержку и не сообщает статус. Удалите её.

123 123 

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

125 

124## Настройка tmux126## Настройка tmux

125 127 

126Когда Claude Code работает внутри tmux, по умолчанию Shift+Enter отправляет вместо вставки новой строки, и уведомления рабочего стола и [индикатор прогресса](https://code.claude.com/docs/ru/settings-reference.md#terminalprogressbarenabled) никогда не достигают внешнего терминала. Добавьте эти строки в `~/.tmux.conf`, затем запустите `tmux source-file ~/.tmux.conf`, чтобы применить их к работающему серверу:128Когда Claude Code работает внутри tmux, по умолчанию Shift+Enter отправляет вместо вставки новой строки, и уведомления рабочего стола и [индикатор прогресса](https://code.claude.com/docs/ru/settings-reference.md#terminalprogressbarenabled) никогда не достигают внешнего терминала. Добавьте эти строки в `~/.tmux.conf`, затем запустите `tmux source-file ~/.tmux.conf`, чтобы применить их к работающему серверу:

Details

258 258 

259Файл, который изменился на диске после последнего чтения Claude, все еще может быть отредактирован, когда `old_string` точно совпадает с текущим содержимым однозначно и Claude Code может прочитать файл без запроса. Сопоставление с текущим содержимым файла обеспечивает безопасность, и результат отмечает, что файл содержит другие изменения, поэтому Claude перечитывает его перед редактированиями, которые зависят от окружающего содержимого. В любом другом случае, например при устаревшей `old_string` или той, которая совпадает более одного раза без `replace_all`, Claude читает файл снова перед редактированием.259Файл, который изменился на диске после последнего чтения Claude, все еще может быть отредактирован, когда `old_string` точно совпадает с текущим содержимым однозначно и Claude Code может прочитать файл без запроса. Сопоставление с текущим содержимым файла обеспечивает безопасность, и результат отмечает, что файл содержит другие изменения, поэтому Claude перечитывает его перед редактированиями, которые зависят от окружающего содержимого. В любом другом случае, например при устаревшей `old_string` или той, которая совпадает более одного раза без `replace_all`, Claude читает файл снова перед редактированием.

260 260 

261Claude также может редактировать файл без отдельного вызова Read после того, как просмотрит его с помощью команды Bash, например `cat` или `grep`. Это команды `cat`, `nl`, `bat`, `batcat`, `head`, `tail`, `sed -n 'X,Yp'`, `grep`, `egrep`, `fgrep` и `rg`, каждая из которых запускается на одном файле без конвейеров или перенаправлений. Поиск, который не вывел ни одного совпадения, не считается чтением, как и любая команда вне этого списка.261Claude также может редактировать файл без отдельного вызова Read после того, как просмотрит его с помощью команды Bash, например `cat` или `grep`. Это команды `cat`, `nl`, `bat`, `batcat`, `head`, `tail`, `sed -n 'X,Yp'`, `grep`, `egrep`, `fgrep` и `rg`, каждая из которых запускается на одном файле без конвейеров или перенаправлений. Если команда не вывела никакого текста файла, например когда поиск ничего не нашел, проверка read-before-edit по-прежнему применяется.

262 262 

263Когда Claude просматривает файл таким образом, Claude Code также загружает все [`CLAUDE.md` подкаталогов](https://code.claude.com/docs/ru/memory#how-claude-md-files-load) и [правила с областью действия по пути](https://code.claude.com/docs/ru/memory.md#path-specific-rules), которые применяются к этому файлу. См. [Правила разрешений Read и Edit](https://code.claude.com/docs/ru/permissions.md#read-and-edit) для информации о том, какие команды Bash охватывают ваши правила отказа `Read` и `Edit`.263Когда Claude просматривает файл таким образом, Claude Code также загружает все [`CLAUDE.md` подкаталогов](https://code.claude.com/docs/ru/memory#how-claude-md-files-load) и [правила с областью действия по пути](https://code.claude.com/docs/ru/memory.md#path-specific-rules), которые применяются к этому файлу. См. [Правила разрешений Read и Edit](https://code.claude.com/docs/ru/permissions.md#read-and-edit) для информации о том, какие команды Bash охватывают ваши правила отказа `Read` и `Edit`.

264 264 


383 383 

384[Источник WebSocket](#websocket-source) имеет собственный запрос подтверждения, решение по которому в авторежиме также принимает классификатор.384[Источник WebSocket](#websocket-source) имеет собственный запрос подтверждения, решение по которому в авторежиме также принимает классификатор.

385 385 

386Инструмент недоступен на Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry. Он также недоступен, когда установлены `DISABLE_TELEMETRY` или `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. В Windows инструмент доступен, только если установлен [Git Bash](https://code.claude.com/docs/ru/setup.md#set-up-on-windows).386В следующих случаях Monitor требует минимальной версии или Git Bash:

387 

388* **Минимальная версия**: на Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform или Microsoft Foundry, а также при установленных `DISABLE_TELEMETRY` или `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` для Monitor требуется Claude Code v2.1.310 или новее. Это требование действует, когда [получение флагов функций](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching) отключено

389* **Windows**: инструмент доступен, только если установлен [Git Bash](https://code.claude.com/docs/ru/setup.md#set-up-on-windows)

387 390 

388Плагины могут объявлять мониторы, которые запускаются автоматически при активации плагина, вместо того чтобы просить Claude запустить их. См. [мониторы плагинов](https://code.claude.com/docs/ru/plugins/components.md#monitors).391Плагины могут объявлять мониторы, которые запускаются автоматически при активации плагина, вместо того чтобы просить Claude запустить их. См. [мониторы плагинов](https://code.claude.com/docs/ru/plugins/components.md#monitors).

389 392 

Details

177 177 

178**1. Откройте представление diff**178**1. Откройте представление diff**

179 179 

180Индикатор diff показывает добавленные и удаленные строки во всем сеансе, например `+42 -18`. Выберите его, чтобы открыть представление diff с списком файлов слева и изменениями справа.180После того как Claude отправит свои изменения в ветку, карточка **Changes** на панели рядом с чатом показывает добавленные и удаленные строки во всей сессии, например `+42 -18`. Нажмите на эти числа, чтобы открыть представление diff.

181 181 

182Diff по умолчанию сравнивает изменения сеанса с его базовой веткой. Чтобы сравнить с другой веткой, выберите **Compare against** и выберите одну.182* Также можно нажать **Changes** в строке заголовка сессии или в меню **⋮** этой строки.

183* Чтобы показать панель, когда она скрыта, нажмите значок **Show session rail** в строке заголовка сессии или в меню **⋮** этой строки.

184 

185Diff по умолчанию сравнивает изменения сессии с ее базовой веткой. Чтобы сравнить с другой веткой, выберите **Compare against** и выберите одну.

183 186 

184**2. Оставляйте встроенные комментарии**187**2. Оставляйте встроенные комментарии**

185 188 


187 190 

188**3. Создайте pull request**191**3. Создайте pull request**

189 192 

190Когда diff выглядит правильно, выберите **Create PR** в верхней части представления diff. Вы можете открыть его как полный PR, черновик или перейти на страницу составления GitHub с сгенерированным названием и описанием.193Когда diff выглядит правильно, [снова покажите панель](https://code.claude.com/docs/ru/claude-code-on-the-web.md#review-changes), если карточка **Changes** не видна, а затем создайте pull request или черновик из карточки:

194 

195* Нажмите **Create PR**. Claude Code создаст pull request со сгенерированным названием и описанием.

196* Чтобы вместо этого открыть черновик, щелкните правой кнопкой мыши **Create PR**, выберите **Create draft PR**, чтобы изменить действие кнопки, затем нажмите на кнопку

191 197 

192**4. Продолжайте итерацию после PR**198**4. Продолжайте итерацию после PR**

193 199 

194Сеанс остается активным после создания PR. Вставьте вывод ошибки CI или комментарии рецензента в чат и попросите Claude их решить. Чтобы Claude автоматически отслеживал PR, смотрите [Auto-fix pull requests](https://code.claude.com/docs/ru/claude-code-on-the-web.md#auto-fix-pull-requests).200Сессия остается активной после создания PR. Вставьте вывод ошибки CI или комментарии рецензента в чат и попросите Claude их решить. Чтобы Claude автоматически отслеживал PR, смотрите [Auto-fix pull requests](https://code.claude.com/docs/ru/claude-code-on-the-web.md#auto-fix-pull-requests).

195 201 

196## Устранение неполадок при настройке202## Устранение неполадок при настройке

197 203