SpyBara
Go Premium

Documentation 2026-09-30 23:00 UTC to 2026-10-01 21:59 UTC

66 files changed +4,653 −809. View all changes and history on the product overview
2026
Thu 1 21:59

admin-setup.md +1 −0

Details

106| [Отключить синхронизацию claude.ai](/docs/ru/settings-reference#syncclaudeaiskills) | Остановить Claude Code от загрузки [skills](/docs/ru/skills#how-synced-skills-behave) и [плагинов](/docs/ru/plugins/loading#synced-plugins), которые ваши разработчики включают на claude.ai. Если вы отключите Skills для вашей организации на claude.ai, Claude Code останавливает синхронизацию обоих, и на v2.1.273 или позже это также удаляет те, которые он уже синхронизировал. Чтобы остановить один из них без отключения Skills, установите его ключ на `false` в управляемых параметрах | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |106| [Отключить синхронизацию claude.ai](/docs/ru/settings-reference#syncclaudeaiskills) | Остановить Claude Code от загрузки [skills](/docs/ru/skills#how-synced-skills-behave) и [плагинов](/docs/ru/plugins/loading#synced-plugins), которые ваши разработчики включают на claude.ai. Если вы отключите Skills для вашей организации на claude.ai, Claude Code останавливает синхронизацию обоих, и на v2.1.273 или позже это также удаляет те, которые он уже синхронизировал. Чтобы остановить один из них без отключения Skills, установите его ключ на `false` в управляемых параметрах | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |

107| [Ограничения hooks](/docs/ru/settings-reference#allowmanagedhooksonly) | Ограничить, какие hooks выполняются, и ограничить URL-адреса HTTP hooks; см. [что выполняется под `allowManagedHooksOnly`](/docs/ru/settings-reference#what-runs-under-allowmanagedhooksonly) для полного списка эффектов | `allowManagedHooksOnly`, `allowedHttpHookUrls` |107| [Ограничения hooks](/docs/ru/settings-reference#allowmanagedhooksonly) | Ограничить, какие hooks выполняются, и ограничить URL-адреса HTTP hooks; см. [что выполняется под `allowManagedHooksOnly`](/docs/ru/settings-reference#what-runs-under-allowmanagedhooksonly) для полного списка эффектов | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

108| [Принудительный вход](/docs/ru/settings-reference#forceloginmethod) | Ограничить вход определённым методом или организацией Anthropic. Ограничение метода применяется во всём расширении VS Code, Agent SDK, `claude setup-token` и `/install-github-app`, а интерактивный экран входа терминала, доступный через `/login` или первоначальную настройку, предварительно выбирает метод без его принудительного применения; Claude Code проверяет организацию для входов в учётную запись claude.ai в терминале, расширении VS Code и Agent SDK, и не проверяет её для входов в Claude Console или для входа через [gateway](/docs/ru/claude-apps-gateway). До версии 2.1.212 только входы в терминал применяли любой из ключей. Когда установлено, сеансы, аутентифицированные через `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper`, блокируются при запуске; облачные сеансы поставщиков не затрагиваются, если только одно из этих учётных данных или ключ API, сохранённый более ранним входом в Claude Console, также не присутствует | `forceLoginMethod`, `forceLoginOrgUUID` |108| [Принудительный вход](/docs/ru/settings-reference#forceloginmethod) | Ограничить вход определённым методом или организацией Anthropic. Ограничение метода применяется во всём расширении VS Code, Agent SDK, `claude setup-token` и `/install-github-app`, а интерактивный экран входа терминала, доступный через `/login` или первоначальную настройку, предварительно выбирает метод без его принудительного применения; Claude Code проверяет организацию для входов в учётную запись claude.ai в терминале, расширении VS Code и Agent SDK, и не проверяет её для входов в Claude Console или для входа через [gateway](/docs/ru/claude-apps-gateway). До версии 2.1.212 только входы в терминал применяли любой из ключей. Когда установлено, сеансы, аутентифицированные через `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper`, блокируются при запуске; облачные сеансы поставщиков не затрагиваются, если только одно из этих учётных данных или ключ API, сохранённый более ранним входом в Claude Console, также не присутствует | `forceLoginMethod`, `forceLoginOrgUUID` |

109| [Ограничения поставщика](/docs/ru/settings-reference#allowedproviders) | Ограничить, какие поставщики API может использовать машина. Сеанс на поставщике, который не указан в списке, отклоняется при запуске, при входе и когда он в следующий раз обращается к API. Требуется Claude Code v2.1.285 или позже | `allowedProviders` |

109| [Отключить представление агента](/docs/ru/agent-view#how-background-sessions-are-hosted) | Отключить `claude agents`, `--bg`, `/background` и супервизор по требованию | `disableAgentView` |110| [Отключить представление агента](/docs/ru/agent-view#how-background-sessions-are-hosted) | Отключить `claude agents`, `--bg`, `/background` и супервизор по требованию | `disableAgentView` |

110| [Настройка корпоративного запускателя](/docs/ru/corporate-launcher) | Добавить префикс к [супервизору фонового агента](/docs/ru/agent-view#how-background-sessions-are-hosted), его рабочим процессам и [другим охватываемым фоновым процессам](/docs/ru/corporate-launcher#what-the-launcher-covers) с требуемым корпоративным запускателем вместо отключения представления агента | `processWrapper` |111| [Настройка корпоративного запускателя](/docs/ru/corporate-launcher) | Добавить префикс к [супервизору фонового агента](/docs/ru/agent-view#how-background-sessions-are-hosted), его рабочим процессам и [другим охватываемым фоновым процессам](/docs/ru/corporate-launcher#what-the-launcher-covers) с требуемым корпоративным запускателем вместо отключения представления агента | `processWrapper` |

111| [Ограничения модели](/docs/ru/model-config#restrict-model-selection) | `availableModels` фильтрует, какие модели появляются в средстве выбора. Добавление `enforceAvailableModels` также ограничивает автоматически выбранную модель по умолчанию. См. [охват поверхности](/docs/ru/model-config#surface-coverage) для того, как этот параметр достигает CLI, веб-интерфейса и IDE | `availableModels`, `enforceAvailableModels` |112| [Ограничения модели](/docs/ru/model-config#restrict-model-selection) | `availableModels` фильтрует, какие модели появляются в средстве выбора. Добавление `enforceAvailableModels` также ограничивает автоматически выбранную модель по умолчанию. См. [охват поверхности](/docs/ru/model-config#surface-coverage) для того, как этот параметр достигает CLI, веб-интерфейса и IDE | `availableModels`, `enforceAvailableModels` |

Details

418 ```418 ```

419</CodeGroup>419</CodeGroup>

420 420 

421Чтобы подтвердить блокировку, зарегистрируйте callback под `PreToolUse` с matcher `Write|Edit` и попросите агента создать файл в `/etc`: результат инструмента Write в потоке сообщений содержит `Writing to /etc is not allowed`, и файл не создается.

422 

421<h3 id="auto-approve-specific-tools">423<h3 id="auto-approve-specific-tools">

422 Автоматическое одобрение конкретных инструментов424 Автоматическое одобрение конкретных инструментов

423</h3>425</h3>


468 470 

469Когда событие срабатывает, все соответствующие hooks выполняются параллельно. Для решений о разрешениях побеждает наиболее ограничивающий результат: одно `deny` блокирует вызов инструмента независимо от того, что возвращают другие hooks. Поскольку порядок завершения недетерминирован, напишите каждый hook так, чтобы он действовал независимо, а не полагаясь на то, что другой hook уже выполнился.471Когда событие срабатывает, все соответствующие hooks выполняются параллельно. Для решений о разрешениях побеждает наиболее ограничивающий результат: одно `deny` блокирует вызов инструмента независимо от того, что возвращают другие hooks. Поскольку порядок завершения недетерминирован, напишите каждый hook так, чтобы он действовал независимо, а не полагаясь на то, что другой hook уже выполнился.

470 472 

471Пример ниже регистрирует три независимые проверки для каждого вызова инструмента:473Пример ниже регистрирует три независимые проверки для каждого вызова инструмента. Имена hooks в нем, такие как `audit_logger` в Python или `auditLogger` в TypeScript, служат заменой для callbacks, которые вы определяете:

472 474 

473<CodeGroup>475<CodeGroup>

474 ```python Python theme={null}476 ```python Python theme={null}


500 Фильтрация с помощью multi-tool matchers502 Фильтрация с помощью multi-tool matchers

501</h3>503</h3>

502 504 

503Используйте multi-tool matchers для совместного использования одного callback для связанных инструментов. Этот пример регистрирует три matcher с разными областями:505Используйте multi-tool matchers для совместного использования одного callback для связанных инструментов. Этот пример регистрирует три matcher с разными областями, и каждый hook, который он называет, служит заменой для callback, который вы определяете:

504 506 

505* Список с разделением через трубу (`Write|Edit|NotebookEdit`) срабатывает `file_security_hook` только для инструментов модификации файлов.507* Список с разделением через трубу (`Write|Edit|NotebookEdit`) срабатывает `file_security_hook` только для инструментов модификации файлов.

506* Regex (`^mcp__`) срабатывает `mcp_audit_hook` для любого MCP инструмента, имя которого начинается с `mcp__`.508* Regex (`^mcp__`) срабатывает `mcp_audit_hook` для любого MCP инструмента, имя которого начинается с `mcp__`.


585 ```587 ```

586</CodeGroup>588</CodeGroup>

587 589 

590Чтобы подтвердить срабатывание hook, зарегистрируйте callback и попросите агента делегировать небольшую задачу подагенту, например список файлов в текущем каталоге: когда подагент завершится, callback выведет строки `[SUBAGENT] Completed:` с ID подагента и путем к транскрипту.

591 

588<h3 id="make-http-requests-from-hooks">592<h3 id="make-http-requests-from-hooks">

589 Выполнение HTTP запросов из hooks593 Выполнение HTTP запросов из hooks

590</h3>594</h3>

Details

121 121 

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

123 123 

124Если вы не установите режим, Claude Code выбирает начальный режим разрешений по правилам в [Какой режим начинается в сеансе](/docs/ru/permission-modes#which-mode-a-session-starts-in):

125 

126* `permissions.defaultMode` из [файлов параметров](/docs/ru/settings#where-settings-live) сеанса, когда он применяется

127* В противном случае встроенное значение по умолчанию, которое может быть [режимом auto](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode)

128 

129Сеанс, который начинается в режиме auto, отбрасывает широкие правила разрешения, такие как простая запись `Bash`, как описано в [Как режим auto оценивает действия](/docs/ru/permission-modes#how-auto-mode-evaluates-actions). Если ваше приложение полагается на режим `default` или на такое правило, передайте `default` явно.

130 

131До TypeScript Agent SDK v0.3.286 пропуск `permissionMode` был эквивалентен передаче `default`.

132 

124<h3 id="available-modes">133<h3 id="available-modes">

125 Доступные режимы134 Доступные режимы

126</h3>135</h3>

agent-sdk/python.md +245 −71

Details

517 async def set_model(self, model: str | None = None) -> None517 async def set_model(self, model: str | None = None) -> None

518 async def rewind_files(self, user_message_id: str) -> None518 async def rewind_files(self, user_message_id: str) -> None

519 async def get_mcp_status(self) -> McpStatusResponse519 async def get_mcp_status(self) -> McpStatusResponse

520 async def get_context_usage(self) -> ContextUsageResponse

520 async def reconnect_mcp_server(self, server_name: str) -> None521 async def reconnect_mcp_server(self, server_name: str) -> None

521 async def toggle_mcp_server(self, server_name: str, enabled: bool) -> None522 async def toggle_mcp_server(self, server_name: str, enabled: bool) -> None

522 async def stop_task(self, task_id: str) -> None523 async def stop_task(self, task_id: str) -> None


540| `set_model(model)` | Измените модель для текущего сеанса. Передайте `None` для сброса на [модель по умолчанию Claude Code](/docs/ru/model-config) |541| `set_model(model)` | Измените модель для текущего сеанса. Передайте `None` для сброса на [модель по умолчанию Claude Code](/docs/ru/model-config) |

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

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

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

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

544| `toggle_mcp_server(server_name, enabled)` | Включите или отключите MCP server в середине сеанса. Отключение удаляет его инструменты |546| `toggle_mcp_server(server_name, enabled)` | Включите или отключите MCP server в середине сеанса. Отключение удаляет его инструменты |

545| `stop_task(task_id)` | Остановите выполняющуюся фоновую задачу. [`TaskNotificationMessage`](#tasknotificationmessage) со статусом `"stopped"` следует в потоке сообщений |547| `stop_task(task_id)` | Остановите выполняющуюся фоновую задачу. [`TaskNotificationMessage`](#tasknotificationmessage) со статусом `"stopped"` следует в потоке сообщений |


616 Пример - Потоковый ввод с ClaudeSDKClient618 Пример - Потоковый ввод с ClaudeSDKClient

617</h4>619</h4>

618 620 

621`query()` также принимает асинхронный итерируемый объект словарей пользовательских сообщений, поэтому вы можете собрать подсказку во время отправки или включить блоки содержимого, такие как изображения. Claude Code начинает отвечать на первое полученное сообщение сразу же по его прибытии, не дожидаясь завершения итерируемого объекта, и `receive_response()` останавливается на `ResultMessage`, который завершает этот ответ. Поместите все, что Claude должен прочитать перед ответом, в одно сообщение, как это делает этот генератор, и свяжите каждый вызов `query()` с его собственным циклом `receive_response()`.

622 

619```python theme={null}623```python theme={null}

620import asyncio624import asyncio

621from claude_agent_sdk import ClaudeSDKClient625from claude_agent_sdk import ClaudeSDKClient

622 626 

623 627 

624async def message_stream():628async def message_stream():

625 """Generate messages dynamically."""629 """Assemble the prompt at send time and yield it as one user message."""

626 yield {630 readings = {"Temperature": "25°C", "Humidity": "60%"}

627 "type": "user",631 data = ", ".join(f"{name}: {value}" for name, value in readings.items())

628 "message": {"role": "user", "content": "Analyze the following data:"},

629 }

630 await asyncio.sleep(0.5)

631 yield {

632 "type": "user",

633 "message": {"role": "user", "content": "Temperature: 25°C, Humidity: 60%"},

634 }

635 await asyncio.sleep(0.5)

636 yield {632 yield {

637 "type": "user",633 "type": "user",

638 "message": {"role": "user", "content": "What patterns do you see?"},634 "message": {

635 "role": "user",

636 "content": f"Analyze the following sensor data and describe any patterns you see: {data}",

637 },

639 }638 }

640 639 

641 640 


1607| `scope` | `str` (опционально) | Область конфигурации |1606| `scope` | `str` (опционально) | Область конфигурации |

1608| `tools` | `list` (опционально) | Инструменты, предоставленные этим сервером, каждый с полями `name`, `description` и `annotations` |1607| `tools` | `list` (опционально) | Инструменты, предоставленные этим сервером, каждый с полями `name`, `description` и `annotations` |

1609 1608 

1609<h3 id="contextusageresponse">

1610 `ContextUsageResponse`

1611</h3>

1612 

1613Ответ от [`ClaudeSDKClient.get_context_usage()`](#methods). Это тот же payload, который Claude Code отображает для команды `/context` в интерактивном сеансе, поэтому наряду с подсчётом токенов он содержит поля отображения, такие как `color` и `gridRows`, которые Claude Code использует для рисования сетки использования `/context`.

1614 

1615Claude Code создаёт этот payload, отправляя несколько запросов к API [подсчёта токенов](https://platform.claude.com/docs/en/build-with-claude/token-counting). Эти запросы не отображаются в потоке сообщений, поэтому отслеживание стоимости, которое читает поток, их не увидит. На API Anthropic подсчёт токенов не выставляется счётом.

1616 

1617```python theme={null}

1618class ContextUsageResponse(TypedDict):

1619 categories: list[ContextUsageCategory]

1620 totalTokens: int

1621 maxTokens: int

1622 rawMaxTokens: int

1623 percentage: float

1624 model: str

1625 isAutoCompactEnabled: bool

1626 memoryFiles: list[dict[str, Any]]

1627 mcpTools: list[dict[str, Any]]

1628 agents: list[dict[str, Any]]

1629 gridRows: list[list[dict[str, Any]]]

1630 autoCompactThreshold: NotRequired[int]

1631 deferredBuiltinTools: NotRequired[list[dict[str, Any]]]

1632 systemTools: NotRequired[list[dict[str, Any]]]

1633 systemPromptSections: NotRequired[list[dict[str, Any]]]

1634 slashCommands: NotRequired[dict[str, Any]]

1635 skills: NotRequired[dict[str, Any]] # skill usage with frontmatter breakdown

1636 messageBreakdown: NotRequired[dict[str, Any]] # message tokens by type

1637 apiUsage: NotRequired[dict[str, Any] | None]

1638```

1639 

1640Каждая запись `ContextUsageCategory` содержит `name`, `tokens`, `color` и дополнительный флаг `isDeferred`. `totalTokens` — это текущее использование контекста сеанса, а `maxTokens` — это окно, против которого измеряется использование. Это окно — это окно контекста модели, или более низкое окно auto-compaction, когда оно применяется, и `rawMaxTokens` содержит то же значение, что и `maxTokens`. `apiUsage` содержит использование из последнего ответа API, а не итоговое значение для сеанса. Claude Code оставляет дополнительные ключи `deferredBuiltinTools`, `systemTools` и `systemPromptSections` не установленными, поэтому ожидайте их отсутствия, даже если тип их объявляет.

1641 

1610<h3 id="sdkpluginconfig">1642<h3 id="sdkpluginconfig">

1611 `SdkPluginConfig`1643 `SdkPluginConfig`

1612</h3>1644</h3>


2712 2744 

2713Документация схем ввода/вывода для всех встроенных инструментов Claude Code. Хотя Python SDK не экспортирует их как типы, они представляют структуру входов и выходов инструментов в сообщениях.2745Документация схем ввода/вывода для всех встроенных инструментов Claude Code. Хотя Python SDK не экспортирует их как типы, они представляют структуру входов и выходов инструментов в сообщениях.

2714 2746 

2747Каждый показанный вывод — это значение, которое вы читаете из [`UserMessage.tool_use_result`](#usermessage) для этого инструмента. Названия ключей появляются точно так, как их выдает Claude Code. Ключ, аннотированный `| None` с комментарием "present when" или "optional", опускается, когда он не применяется.

2748 

2715<h3 id="agent">2749<h3 id="agent">

2716 Agent2750 Agent

2717</h3>2751</h3>


2805```python theme={null}2839```python theme={null}

2806{2840{

2807 "status": "remote_launched",2841 "status": "remote_launched",

2808 "taskId": str, # ID удаленной задачи2842 "taskId": str, # ID отправленной задачи

2809 "sessionUrl": str, # Ссылка на удаленный облачный сеанс2843 "sessionUrl": str, # Ссылка на облачный сеанс

2810 "description": str, # Описание задачи2844 "description": str, # Описание задачи

2811 "prompt": str, # Подсказка, которую запускает агент2845 "prompt": str, # Подсказка, которую запускает агент

2812 "outputFile": str, # Путь файла, где записывается вывод агента2846 "outputFile": str, # Путь файла, где записывается вывод агента

2813}2847}

2814```2848```

2815 2849 

2816Возвращает результат от подагента. Вывод различается по полю `status`: `"completed"` для завершенных задач, `"async_launched"` для фоновых задач и `"remote_launched"` для задач, которые Claude Code отправил в удаленный облачный сеанс, где `sessionUrl` ссылается на этот сеанс и `taskId` его идентифицирует. Если Claude Code [сохранил изолированный worktree подагента](/docs/ru/worktrees#isolate-subagents-with-worktrees), `worktreePath` в варианте `completed` — это место, где его найти, и `worktreeBranch` — это его ветка, когда Claude Code создал worktree с git.2850Возвращает результат от подагента. Вывод различается по полю `status`: `"completed"` для завершенных задач, `"async_launched"` для фоновых задач и `"remote_launched"` для задач, которые Claude Code отправил в облачный сеанс, где `sessionUrl` ссылается на этот сеанс и `taskId` его идентифицирует. Если Claude Code [сохранил изолированный worktree подагента](/docs/ru/worktrees#isolate-subagents-with-worktrees), `worktreePath` в варианте `completed` — это место, где его найти, и `worktreeBranch` — это его ветка, когда Claude Code создал worktree с git.

2817 2851 

2818В варианте `completed`, `resolvedModel` называет модель, на которой запустился подагент, которая может отличаться от запрошенного входа `model`, когда применяется [`availableModels`](/docs/ru/model-config#restrict-model-selection) или другое переопределение. Это поле требует Claude Code v2.1.174 или позже. В варианте `async_launched`, `resolvedModel` называет модель, используемую, когда агент перешел в фоновый режим, поэтому обмен, произошедший перед фоновым режимом, отражается там. Поле `modelsUsed` в обоих вариантах перечисляет использованные модели по порядку, с коллапсированными последовательными повторениями; оно устанавливается только при обмене модели во время выполнения. `modelsUsed` и поведение `resolvedModel` во время фонового режима требуют Claude Code v2.1.212 или позже.2852В варианте `completed`, `resolvedModel` называет модель, на которой запустился подагент, которая может отличаться от запрошенного входа `model`, когда применяется [`availableModels`](/docs/ru/model-config#restrict-model-selection) или другое переопределение. Это поле требует Claude Code v2.1.174 или позже. В варианте `async_launched`, `resolvedModel` называет модель, используемую, когда агент перешел в фоновый режим, поэтому обмен, произошедший перед фоновым режимом, отражается там. Поле `modelsUsed` в обоих вариантах перечисляет использованные модели по порядку, с коллапсированными последовательными повторениями; оно устанавливается только при обмене модели во время выполнения. `modelsUsed` и поведение `resolvedModel` во время фонового режима требуют Claude Code v2.1.212 или позже.

2819 2853 


2885 2919 

2886**Имя инструмента:** `Bash`2920**Имя инструмента:** `Bash`

2887 2921 

2888Для информации о том, что устанавливает потолок переднего плана, см. [Тайм-ауты и ограничения вывода](/docs/ru/tools-reference#timeout-and-output-limits). Для ограничения времени фонового режима см. [Фоновые команды](/docs/ru/tools-reference#background-commands).2922Для информации о том, что устанавливает потолок переднего плана, см. [Тайм-ауты и ограничения вывода](/docs/ru/tools-reference#timeout-and-output-limits). Для ограничения времени фонового режима см. [Ограничение времени для фоновых команд](/docs/ru/tools-reference#time-limit-for-background-commands).

2889 2923 

2890**Ввод:**2924**Ввод:**

2891 2925 


2962 2996 

2963```python theme={null}2997```python theme={null}

2964{2998{

2965 "message": str, # Сообщение подтверждения2999 "filePath": str, # Файл, который был отредактирован

2966 "replacements": int, # Количество выполненных замен3000 "oldString": str, # Текст, который был заменен

2967 "file_path": str, # Путь файла, который был отредактирован3001 "newString": str, # Текст, который его заменил

3002 "originalFile": str | None, # Содержимое файла перед редактированием

3003 "structuredPatch": [ # Diff-блоки для изменения

3004 {

3005 "oldStart": int,

3006 "oldLines": int,

3007 "newStart": int,

3008 "newLines": int,

3009 "lines": list[str],

3010 }

3011 ],

3012 "userModified": bool, # Изменил ли пользователь предложенное редактирование перед его принятием

3013 "replaceAll": bool, # Были ли заменены все вхождения

3014 "gitDiff": { # Необязательное резюме git diff для файла

3015 "filename": str,

3016 "status": "modified" | "added",

3017 "additions": int,

3018 "deletions": int,

3019 "changes": int,

3020 "patch": str,

3021 "repository": str | None, # GitHub owner/repo, когда доступно

3022 } | None,

2968}3023}

2969```3024```

2970 3025 


2984}3039}

2985```3040```

2986 3041 

2987**Вывод (текстовые файлы):**3042Вывод принимает одну из следующих форм в зависимости от того, что прочитал Claude. Проверьте ключ `type`, чтобы их различить.

3043 

3044**Вывод (type: `"text"`):**

3045 

3046```python theme={null}

3047{

3048 "type": "text",

3049 "file": {

3050 "filePath": str, # Файл, который был прочитан

3051 "content": str, # Возвращенное содержимое

3052 "numLines": int, # Количество строк в возвращенном содержимом

3053 "startLine": int, # Номер строки, с которой начинается содержимое

3054 "totalLines": int, # Общее количество строк в файле

3055 "truncatedByTokenCap": bool | None, # Присутствует и True, когда чтение всего файла превысило лимит токенов и содержимое — это первая страница

3056 },

3057}

3058```

3059 

3060**Вывод (type: `"image"`):**

3061 

3062```python theme={null}

3063{

3064 "type": "image",

3065 "file": {

3066 "base64": str, # Данные изображения в кодировке Base64

3067 "type": "image/jpeg" | "image/png" | "image/gif" | "image/webp", # MIME-тип изображения

3068 "originalSize": int, # Исходный размер файла в байтах

3069 "dimensions": { # Необязательная информация о размерах для сопоставления координат

3070 "originalWidth": int | None, # Необязательно; исходная ширина в пикселях

3071 "originalHeight": int | None, # Необязательно; исходная высота в пикселях

3072 "displayWidth": int | None, # Необязательно; ширина после изменения размера

3073 "displayHeight": int | None, # Необязательно; высота после изменения размера

3074 } | None,

3075 },

3076}

3077```

3078 

3079**Вывод (type: `"notebook"`):**

3080 

3081```python theme={null}

3082{

3083 "type": "notebook",

3084 "file": {

3085 "filePath": str, # Записная книжка, которая была прочитана

3086 "cells": list, # Ячейки записной книжки

3087 },

3088}

3089```

3090 

3091**Вывод (type: `"pdf"`):**

3092 

3093```python theme={null}

3094{

3095 "type": "pdf",

3096 "file": {

3097 "filePath": str, # PDF, который был прочитан

3098 "base64": str, # Данные PDF в кодировке Base64

3099 "originalSize": int, # Размер файла в байтах

3100 },

3101}

3102```

3103 

3104**Вывод (type: `"parts"`):**

2988 3105 

2989```python theme={null}3106```python theme={null}

2990{3107{

2991 "content": str, # Содержимое файла с номерами строк3108 "type": "parts",

2992 "total_lines": int, # Общее количество строк в файле3109 "file": {

2993 "lines_returned": int, # Фактически возвращенные строки3110 "filePath": str, # PDF, который был прочитан

3111 "originalSize": int, # Размер файла в байтах

3112 "count": int, # Количество страниц, извлеченных как изображения

3113 "outputDir": str, # Каталог, содержащий извлеченные изображения страниц

3114 },

3115 "firstPage": int | None, # Необязательный номер страницы документа первой извлеченной страницы

2994}3116}

2995```3117```

2996 3118 

2997**Вывод (изображения):**3119**Вывод (type: `"file_unchanged"`):**

2998 3120 

2999```python theme={null}3121```python theme={null}

3000{3122{

3001 "image": str, # Данные изображения в кодировке Base643123 "type": "file_unchanged", # Файл не изменился с момента последнего чтения Claude в этом сеансе, поэтому содержимое не повторяется

3002 "mime_type": str, # MIME-тип изображения3124 "file": {

3003 "file_size": int, # Размер файла в байтах3125 "filePath": str,

3126 },

3127 "source": "seeded" | None, # Присутствует, когда более ранняя копия поступила из файла CLAUDE.md или памяти, загруженного при запуске, а не из вызова Read

3004}3128}

3005```3129```

3006 3130 


3023 3147 

3024```python theme={null}3148```python theme={null}

3025{3149{

3026 "message": str, # Сообщение об успехе3150 "type": "create" | "update", # Создала ли запись новый файл или перезаписала существующий

3027 "bytes_written": int, # Количество записанных байтов3151 "filePath": str, # Файл, который был записан

3028 "file_path": str, # Путь файла, который был записан3152 "content": str, # Содержимое, которое было записано

3153 "structuredPatch": [ # Diff-блоки; пусто для нового файла, когда ничего не изменилось или когда Claude Code пропустил diff

3154 {

3155 "oldStart": int,

3156 "oldLines": int,

3157 "newStart": int,

3158 "newLines": int,

3159 "lines": list[str],

3160 }

3161 ],

3162 "originalFile": str | None, # Предыдущее содержимое; None для нового файла или когда предыдущее содержимое было слишком большим для включения

3163 "gitDiff": { # Необязательное резюме git diff для файла

3164 "filename": str,

3165 "status": "modified" | "added",

3166 "additions": int,

3167 "deletions": int,

3168 "changes": int,

3169 "patch": str,

3170 "repository": str | None, # GitHub owner/repo, когда доступно

3171 } | None,

3172 "userModified": bool | None, # Необязательно; изменил ли пользователь предложенное содержимое перед его принятием

3029}3173}

3030```3174```

3031 3175 


3048 3192 

3049```python theme={null}3193```python theme={null}

3050{3194{

3051 "matches": list[str], # Массив совпадающих путей файлов3195 "durationMs": int, # Время, затраченное на выполнение поиска, в миллисекундах

3052 "count": int, # Количество найденных совпадений3196 "numFiles": int, # Количество возвращенных путей после любого усечения

3053 "search_path": str, # Использованный каталог поиска3197 "filenames": list[str], # Совпадающие пути файлов

3198 "truncated": bool, # Были ли результаты усечены на лимите 100 файлов

3199 "totalMatches": int | None, # Необязательное общее количество совпадающих файлов перед усечением; нижняя граница, когда countIsComplete равно False

3200 "countIsComplete": bool | None, # Необязательно; является ли totalMatches точным

3054}3201}

3055```3202```

3056 3203 

3204`totalMatches` и `countIsComplete` требуют Claude Code v2.1.191 или позже.

3205 

3057<h3 id="grep">3206<h3 id="grep">

3058 Grep3207 Grep

3059</h3>3208</h3>


3074 "-B": int | None, # Строки для отображения перед каждым совпадением3223 "-B": int | None, # Строки для отображения перед каждым совпадением

3075 "-A": int | None, # Строки для отображения после каждого совпадения3224 "-A": int | None, # Строки для отображения после каждого совпадения

3076 "-C": int | None, # Строки для отображения до и после3225 "-C": int | None, # Строки для отображения до и после

3226 "context": int | None, # Строки для отображения до и после; -C является псевдонимом

3227 "-o": bool | None, # Печать только совпадающих частей каждой строки

3077 "head_limit": int | None, # Ограничить вывод первыми N строками/записями3228 "head_limit": int | None, # Ограничить вывод первыми N строками/записями

3229 "offset": int | None, # Пропустить первые N строк/записей перед применением head_limit

3078 "multiline": bool | None, # Включить многострочный режим3230 "multiline": bool | None, # Включить многострочный режим

3079}3231}

3080```3232```

3081 3233 

3082**Вывод (режим content):**3234**Вывод:**

3083 3235 

3084```python theme={null}3236```python theme={null}

3085{3237{

3086 "matches": [3238 "mode": "content" | "files_with_matches" | "count" | None, # Использованный режим вывода

3087 {3239 "numFiles": int, # Количество файлов в результате; всегда 0 в режиме content

3088 "file": str,3240 "filenames": list[str], # Совпадающие файлы в режиме files_with_matches; пусто в других режимах

3089 "line_number": int | None,3241 "content": str | None, # Совпадающие строки в режиме content или подсчеты для каждого файла в режиме count

3090 "line": str,3242 "numLines": int | None, # Количество строк в содержимом, присутствует в режиме content

3091 "before_context": list[str] | None,3243 "numMatches": int | None, # Общее количество совпадений, присутствует в режиме count

3092 "after_context": list[str] | None,3244 "totalFiles": int | None, # Необязательное общее количество перед head_limit и offset в режиме files_with_matches

3093 }3245 "totalLines": int | None, # Необязательное общее количество перед head_limit и offset в режиме content

3094 ],3246 "appliedLimit": int | None, # Присутствует, когда head_limit усек результат

3095 "total_matches": int,3247 "appliedOffset": int | None, # Присутствует, когда был применен offset

3096}3248}

3097```3249```

3098 3250 

3099**Вывод (режим files\_with\_matches):**3251Grep возвращает эту форму dict в каждом режиме вывода. Какие необязательные ключи присутствуют, зависит от `output_mode`.

3100 3252 

3101```python theme={null}3253`totalFiles` требует Claude Code v2.1.208 или позже. `totalLines` требует Claude Code v2.1.210 или позже.

3102{

3103 "files": list[str], # Файлы, содержащие совпадения

3104 "count": int, # Количество файлов с совпадениями

3105}

3106```

3107 3254 

3108<h3 id="notebookedit">3255<h3 id="notebookedit">

3109 NotebookEdit3256 NotebookEdit


3127 3274 

3128```python theme={null}3275```python theme={null}

3129{3276{

3130 "message": str, # Сообщение об успехе3277 "new_source": str, # Исходный код, записанный в ячейку

3131 "edit_type": "replaced" | "inserted" | "deleted", # Тип выполненного редактирования3278 "old_source": str | None, # Предыдущий исходный код ячейки, присутствует для replace и delete

3132 "cell_id": str | None, # ID ячейки, которая была затронута3279 "cell_id": str | None, # ID отредактированной ячейки, когда доступно

3133 "total_cells": int, # Общее количество ячеек в записной книжке после редактирования3280 "cell_type": "code" | "markdown", # Тип ячейки

3281 "language": str, # Язык программирования записной книжки

3282 "edit_mode": str, # Использованный режим редактирования

3283 "error": str | None, # Сообщение об ошибке, когда операция не удалась

3284 "notebook_path": str, # Файл записной книжки

3285 "original_file": str, # Содержимое записной книжки перед редактированием

3286 "updated_file": str, # Содержимое записной книжки после редактирования

3134}3287}

3135```3288```

3136 3289 


3228 3381 

3229```python theme={null}3382```python theme={null}

3230{3383{

3231 "message": str, # Сообщение об успехе3384 "oldTodos": [ # Список задач перед обновлением

3232 "stats": {"total": int, "pending": int, "in_progress": int, "completed": int},3385 {

3386 "content": str,

3387 "status": "pending" | "in_progress" | "completed",

3388 "activeForm": str,

3389 }

3390 ],

3391 "newTodos": [ # Список задач после обновления

3392 {

3393 "content": str,

3394 "status": "pending" | "in_progress" | "completed",

3395 "activeForm": str,

3396 }

3397 ],

3233}3398}

3234```3399```

3235 3400 


3401 3566 

3402```python theme={null}3567```python theme={null}

3403{3568{

3404 "message": str, # Сообщение подтверждения3569 "plan": str | None, # План, который был представлен пользователю

3405 "approved": bool | None, # Одобрил ли пользователь план3570 "isAgent": bool, # True, когда подагент вызвал инструмент

3571 "filePath": str | None, # Присутствует, когда план был сохранен в файл

3572 "hasTaskTool": bool | None, # Необязательно; доступен ли инструмент Agent в текущем контексте

3573 "planWasEdited": bool | None, # Присутствует и True, когда пользователь отредактировал план перед одобрением

3574 "awaitingLeaderApproval": bool | None, # Присутствует и True, когда товарищ по команде отправил план руководителю команды на одобрение

3575 "requestId": str | None, # Необязательный ID этого запроса на одобрение

3406}3576}

3407```3577```

3408 3578 


3420}3590}

3421```3591```

3422 3592 

3593Результат — это список, а не dict, поэтому `tool_use_result` содержит `list` для этого инструмента.

3594 

3423**Вывод:**3595**Вывод:**

3424 3596 

3425```python theme={null}3597```python theme={null}

3426{3598[ # Одна запись на ресурс

3427 "resources": [

3428 {3599 {

3429 "uri": str,3600 "uri": str, # URI ресурса

3430 "name": str,3601 "name": str, # Имя ресурса

3431 "description": str | None,3602 "mimeType": str | None, # Необязательный MIME-тип

3432 "mimeType": str | None,3603 "description": str | None, # Необязательное описание

3433 "server": str,3604 "server": str, # Сервер, предоставляющий этот ресурс

3434 }3605 }

3435 ],3606]

3436 "total": int,

3437}

3438```3607```

3439 3608 

3440<h3 id="readmcpresource">3609<h3 id="readmcpresource">


3457```python theme={null}3626```python theme={null}

3458{3627{

3459 "contents": [3628 "contents": [

3460 {"uri": str, "mimeType": str | None, "text": str | None, "blob": str | None}3629 {

3630 "uri": str, # URI ресурса

3631 "mimeType": str | None, # Необязательный MIME-тип

3632 "text": str | None, # Текстовое содержимое или примечание о двоичном содержимом

3633 "blobSavedTo": str | None, # Присутствует, когда Claude Code сохранил двоичное содержимое на диск; путь сохраненного файла

3634 }

3461 ],3635 ],

3462 "server": str,3636 "error": str | None, # Присутствует, когда сервер не смог прочитать ресурс

3463}3637}

3464```3638```

3465 3639 

Details

575| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Определите формат вывода для результатов агента. См. [Структурированные выходы](/docs/ru/agent-sdk/structured-outputs) для деталей |575| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Определите формат вывода для результатов агента. См. [Структурированные выходы](/docs/ru/agent-sdk/structured-outputs) для деталей |

576| `outputStyle` | `string` | `undefined` | Не поле `Options`. Установите `outputStyle` в встроенном объекте [`settings`](/docs/ru/settings) или файле параметров вместо этого. См. [Активировать стиль вывода](/docs/ru/agent-sdk/modifying-system-prompts#activate-an-output-style) |576| `outputStyle` | `string` | `undefined` | Не поле `Options`. Установите `outputStyle` в встроенном объекте [`settings`](/docs/ru/settings) или файле параметров вместо этого. См. [Активировать стиль вывода](/docs/ru/agent-sdk/modifying-system-prompts#activate-an-output-style) |

577| `pathToClaudeCodeExecutable` | `string` | Автоматически разрешено из встроенного собственного двоичного файла | Путь к исполняемому файлу Claude Code. Требуется только если дополнительные зависимости были пропущены во время установки или ваша платформа не входит в поддерживаемый набор |577| `pathToClaudeCodeExecutable` | `string` | Автоматически разрешено из встроенного собственного двоичного файла | Путь к исполняемому файлу Claude Code. Требуется только если дополнительные зависимости были пропущены во время установки или ваша платформа не входит в поддерживаемый набор |

578| `permissionMode` | [`PermissionMode`](#permissionmode) | `'default'` | Режим разрешений для сеанса |578| `permissionMode` | [`PermissionMode`](#permissionmode) | `undefined` | Режим разрешений для сеанса. Если вы его опустите, сеанс может начать работу в режиме auto. См. [Режимы разрешений](/docs/ru/agent-sdk/permissions#permission-modes) для того, как Claude Code выбирает начальный режим разрешений |

579| `permissionPromptToolName` | `string` | `undefined` | Имя инструмента MCP для запросов разрешений |579| `permissionPromptToolName` | `string` | `undefined` | Имя инструмента MCP для запросов разрешений |

580| `permissionPrompts` | `'host' \| 'none'` | `'host'` | Кто отвечает на запросы разрешений: `'host'` маршрутизирует их на ваш обратный вызов [`canUseTool`](#canusetool) или инструмент `permissionPromptToolName`, и `'none'` [отклоняет вызовы, которые иначе запросили бы](/docs/ru/agent-sdk/permissions#how-permissions-are-evaluated). Требует Claude Code v2.1.259 или позже |580| `permissionPrompts` | `'host' \| 'none'` | `'host'` | Кто отвечает на запросы разрешений: `'host'` маршрутизирует их на ваш обратный вызов [`canUseTool`](#canusetool) или инструмент `permissionPromptToolName`, и `'none'` [отклоняет вызовы, которые иначе запросили бы](/docs/ru/agent-sdk/permissions#how-permissions-are-evaluated). Требует Claude Code v2.1.259 или позже |

581| `persistSession` | `boolean` | `true` | Когда `false`, отключает сохранение сеанса на диск. Сеансы не могут быть возобновлены позже |581| `persistSession` | `boolean` | `true` | Когда `false`, отключает сохранение сеанса на диск. Сеансы не могут быть возобновлены позже |


709| `supportedModels()` | Возвращает доступные модели с информацией об отображении |709| `supportedModels()` | Возвращает доступные модели с информацией об отображении |

710| `supportedAgents()` | Возвращает доступные подагентов как [`AgentInfo`](#agentinfo)`[]` |710| `supportedAgents()` | Возвращает доступные подагентов как [`AgentInfo`](#agentinfo)`[]` |

711| `mcpServerStatus()` | Возвращает статус подключенных MCP серверов как [`McpServerStatus`](#mcpserverstatus)`[]` |711| `mcpServerStatus()` | Возвращает статус подключенных MCP серверов как [`McpServerStatus`](#mcpserverstatus)`[]` |

712| `getContextUsage(opts?)` | Возвращает [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), разбивая использование контекстного окна сеанса по категориям, навыкам и инструментам. С параметром по умолчанию `detail`, это те же данные, которые `/context` показывает в интерактивном сеансе. Параметр [`detail`](#sdkcontrolgetcontextusageresponse) требует Agent SDK v0.3.257 или позже |712| `getContextUsage(opts?)` | Возвращает [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), разбивая использование контекстного окна сеанса по категориям, навыкам и инструментам. С параметром по умолчанию `detail`, это те же данные, которые `/context` показывает в интерактивном сеансе, вычисленные с запросами API подсчета токенов, которые не появляются в потоке сообщений; см. [как эти запросы обрабатываются](#sdkcontrolgetcontextusageresponse). Параметр [`detail`](#sdkcontrolgetcontextusageresponse) требует Agent SDK v0.3.257 или позже |

713| `readFile(path, options?)` | Читает файл из файловой системы сеанса. Claude Code разрешает путь против `cwd`; [Что `readFile()` может читать](#what-readfile-can-read) перечисляет файлы, которые он обслуживает. Передайте `{ maxBytes }` для изменения ограничения чтения (по умолчанию 1 МБ, потолок 10 МБ) и `{ encoding: 'base64' }` для двоичных файлов, таких как изображения. Разрешается с помощью [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse) или `null` при отказе в разрешении, отсутствующем файле или ошибке транспорта. Требует TypeScript SDK v0.2.121 или позже |713| `readFile(path, options?)` | Читает файл из файловой системы сеанса. Claude Code разрешает путь против `cwd`; [Что `readFile()` может читать](#what-readfile-can-read) перечисляет файлы, которые он обслуживает. Передайте `{ maxBytes }` для изменения ограничения чтения (по умолчанию 1 МБ, потолок 10 МБ) и `{ encoding: 'base64' }` для двоичных файлов, таких как изображения. Разрешается с помощью [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse) или `null` при отказе в разрешении, отсутствующем файле или ошибке транспорта. Требует TypeScript SDK v0.2.121 или позже |

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

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

716| `reloadOutputStyles()` | Повторно читает [стили вывода](/docs/ru/output-styles) с диска, поэтому файл стиля, который вы добавляете или редактируете в середине сеанса, становится доступен для работающего сеанса. Разрешается с помощью [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse), перечисляющего имена стилей, доступные после перезагрузки. Требует Agent SDK v0.3.261 или позже |716| `reloadOutputStyles()` | Повторно читает [стили вывода](/docs/ru/output-styles) с диска, поэтому файл стиля, который вы добавляете или редактируете в середине сеанса, становится доступен для работающего сеанса. Разрешается с помощью [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse), перечисляющего имена стилей, доступные после перезагрузки. Требует Agent SDK v0.3.261 или позже |

717| `accountInfo()` | Возвращает информацию об учетной записи |717| `accountInfo()` | Возвращает информацию об учетной записи |

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

719| `toggleMcpServer(serverName, enabled)` | Включить или отключить MCP сервер по имени с тем же разрешением имени, что и `reconnectMcpServer()`. Отключение отключает сервер |719| `toggleMcpServer(serverName, enabled)` | Включить или отключить MCP сервер по имени с тем же разрешением имени, что и `reconnectMcpServer()`. Отключение отключает сервер stdio, SSE или HTTP и удаляет его инструменты; для сервера, который вы добавили в середине сеанса с `setMcpServers()`, удаление инструментов требует Claude Code v2.1.285 или позже |

720| `setMcpServers(servers)` | Динамически замените набор MCP серверов для этого сеанса. Разрешается с помощью [`McpSetServersResult`](#mcpsetserversresult), называющего, какие серверы были добавлены и удалены, и любые ошибки |720| `setMcpServers(servers)` | Динамически замените набор MCP серверов для этого сеанса. Разрешается с помощью [`McpSetServersResult`](#mcpsetserversresult), называющего, какие серверы были добавлены и удалены, и любые ошибки |

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

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


909 909 

910Тип возврата [`getContextUsage()`](#query-object). С параметром по умолчанию `detail`, это та же полезная нагрузка, которую Claude Code отображает для команды `/context` в интерактивном сеансе, поэтому наряду с подсчетом токенов она содержит поля отображения, такие как `color` и `gridRows`, которые Claude Code использует для рисования сетки использования `/context`.910Тип возврата [`getContextUsage()`](#query-object). С параметром по умолчанию `detail`, это та же полезная нагрузка, которую Claude Code отображает для команды `/context` в интерактивном сеансе, поэтому наряду с подсчетом токенов она содержит поля отображения, такие как `color` и `gridRows`, которые Claude Code использует для рисования сетки использования `/context`.

911 911 

912Аргумент `detail` метода выбирает, как Claude Code подсчитывает каждую категорию. С параметром по умолчанию `'full'`, Claude Code подсчитывает каждую категорию с запросами API подсчета токенов. Передайте `{ detail: 'summary' }` для получения ответа из использования последнего ответа и локальных оценок вместо этого. Никакие запросы подсчета токенов не выходят, и числа для каждой категории приблизительны. Аргумент `detail` требует Agent SDK v0.3.257 или позже.912Аргумент `detail` метода выбирает, как Claude Code подсчитывает каждую категорию. Аргумент `detail` требует Agent SDK v0.3.257 или позже.

913 

914* **`'full'`**: по умолчанию. Claude Code подсчитывает каждую категорию с запросами API [подсчета токенов](https://platform.claude.com/docs/en/build-with-claude/token-counting). Эти запросы не появляются в потоке сообщений, поэтому отслеживание стоимости, которое читает поток, их не увидит. На API Anthropic подсчет токенов не выставляется счетом.

915* **`'summary'`**: передайте `{ detail: 'summary' }` для получения ответа из использования последнего ответа и локальных оценок вместо этого. Никакие запросы подсчета токенов не выходят, и числа для каждой категории приблизительны.

913 916 

914Когда вы отправляете `/context` как подсказку вместо вызова метода, Claude Code прикрепляет полезную нагрузку [`SDKContextUsage`](#sdkcontextusage) к полю `context_usage` сообщения помощника, которое доставляет результат. Это поле требует Agent SDK v0.3.232 или позже.917Когда вы отправляете `/context` как подсказку вместо вызова метода, Claude Code прикрепляет полезную нагрузку [`SDKContextUsage`](#sdkcontextusage) к полю `context_usage` сообщения помощника, которое доставляет результат. Это поле требует Agent SDK v0.3.232 или позже.

915 918 


1015* `memoryFiles` перечисляет каждый загруженный файл памяти с его стоимостью.1018* `memoryFiles` перечисляет каждый загруженный файл памяти с его стоимостью.

1016* `skills.skillFrontmatter` атрибутирует токены списка навыков каждому включенному навыку. Подсчеты для каждого навыка измеряют запись каждого навыка, как Claude Code фактически отправляет ее, что может быть короче полного frontmatter навыка. Сравните `skills.totalSkills` с `skills.includedSkills`, чтобы увидеть, попал ли каждый обнаруженный навык в список.1019* `skills.skillFrontmatter` атрибутирует токены списка навыков каждому включенному навыку. Подсчеты для каждого навыка измеряют запись каждого навыка, как Claude Code фактически отправляет ее, что может быть короче полного frontmatter навыка. Сравните `skills.totalSkills` с `skills.includedSkills`, чтобы увидеть, попал ли каждый обнаруженный навык в список.

1017 1020 

1018`totalTokens` — это текущее использование контекста сеанса, а `maxTokens` — это окно, против которого измеряется использование. Это окно — контекстное окно модели или более низкое окно автокомпактирования, когда оно применяется. `rawMaxTokens` содержит то же значение, что и `maxTokens`, и `percentage` — это `totalTokens` как округленный процент этого окна.1021`totalTokens` — это текущее использование контекста сеанса, а `maxTokens` — это окно, против которого измеряется использование. Это окно — контекстное окно модели или более низкое окно автокомпактирования, когда оно применяется. `rawMaxTokens` содержит то же значение, что и `maxTokens`, и `percentage` — это `totalTokens` как округленный процент этого окна. `apiUsage` содержит использование из последнего ответа API, а не итоговое значение для сеанса.

1019 1022 

1020Claude Code оставляет дополнительные диагностики `deferredBuiltinTools`, `systemTools` и `systemPromptSections` неустановленными, поэтому ожидайте их отсутствия, даже если тип их объявляет.1023Claude Code оставляет дополнительные диагностики `deferredBuiltinTools`, `systemTools` и `systemPromptSections` неустановленными, поэтому ожидайте их отсутствия, даже если тип их объявляет.

1021 1024 


1275 | "bypassPermissions" // Bypass permission checks; explicit ask rules still prompt1278 | "bypassPermissions" // Bypass permission checks; explicit ask rules still prompt

1276 | "plan" // Planning mode - explore without editing1279 | "plan" // Planning mode - explore without editing

1277 | "dontAsk" // Don't prompt for permissions, deny if not pre-approved1280 | "dontAsk" // Don't prompt for permissions, deny if not pre-approved

1278 | "auto"; // Model classifier approves or denies permission prompts1281 | "auto"; // A model classifier reviews actions such as shell commands and network requests

1279```1282```

1280 1283 

1281<h3 id="canusetool">1284<h3 id="canusetool">


1821```typescript theme={null}1824```typescript theme={null}

1822type SDKStartupFailureReason =1825type SDKStartupFailureReason =

1823 | "org_pin_api_key_conflict"1826 | "org_pin_api_key_conflict"

1827 | "provider_not_allowed"

1824 | "org_verify_failed"1828 | "org_verify_failed"

1825 | "org_pin_mismatch"1829 | "org_pin_mismatch"

1826 | "managed_settings_invalid"1830 | "managed_settings_invalid"


1843| Значение | Что остановило сеанс |1847| Значение | Что остановило сеанс |

1844| :- | :- |1848| :- | :- |

1845| `org_pin_api_key_conflict` | Управляемые параметры [требуют вход в первую сторону или облачный шлюз](/docs/ru/authentication#restrict-login-to-your-organization), и вместо этого настроены ключ API Anthropic, токен аутентификации или `apiKeyHelper` |1849| `org_pin_api_key_conflict` | Управляемые параметры [требуют вход в первую сторону или облачный шлюз](/docs/ru/authentication#restrict-login-to-your-organization), и вместо этого настроены ключ API Anthropic, токен аутентификации или `apiKeyHelper` |

1850| `provider_not_allowed` | Управляемые параметры [перечисляют поставщиков API, которых эта машина может использовать](/docs/ru/settings-reference#allowedproviders), и сеанс настроен для поставщика, который не указан в списке, или для конечной точки, которую параметры не закрепляют. Требует Claude Code v2.1.285 или позже |

1846| `org_verify_failed` | Организация входа не смогла быть проверена против булавки, например из-за сбоя сети или отозванного токена |1851| `org_verify_failed` | Организация входа не смогла быть проверена против булавки, например из-за сбоя сети или отозванного токена |

1847| `org_pin_mismatch` | Вход принадлежит организации, которую булавка не разрешает |1852| `org_pin_mismatch` | Вход принадлежит организации, которую булавка не разрешает |

1848| `managed_settings_invalid` | Управляемые параметры политики не смогли быть прочитаны, булавка не называет организацию, или [управляемые ограничения модели](/docs/ru/errors#managed-settings-block-the-default-model) не оставляют разрешённую модель для опции Default |1853| `managed_settings_invalid` | Управляемые параметры политики не смогли быть прочитаны, булавка не называет организацию, или [управляемые ограничения модели](/docs/ru/errors#managed-settings-block-the-default-model) не оставляют разрешённую модель для опции Default |


2092 `SDKContextUsage`2097 `SDKContextUsage`

2093</h3>2098</h3>

2094 2099 

2095Структурированная форма отчёта `/context`, переносимая как `context_usage` на [`SDKAssistantMessage`](#sdkassistantmessage), который доставляет результат `/context`. Agent SDK v0.3.232 и позже экспортируют тип. В отличие от [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), он содержит только данные, необходимые для отображения разбивки использования, без полей отображения, таких как `color` и `gridRows`.2100Структурированная форма отчёта `/context`, переносимая как `context_usage` на [`SDKAssistantMessage`](#sdkassistantmessage), который доставляет результат `/context`. Agent SDK v0.3.232 и позже экспортируют тип. В отличие от [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), он содержит только данные, необходимые для отображения разбивки использования, без полей отображения, таких как `color` и `gridRows`. Claude Code вычисляет отчёт с помощью запросов API подсчёта токенов, которые не появляются в потоке сообщений; см. [как эти запросы обрабатываются](#sdkcontrolgetcontextusageresponse).

2096 2101 

2097```typescript theme={null}2102```typescript theme={null}

2098type SDKContextUsage = {2103type SDKContextUsage = {


3209};3214};

3210```3215```

3211 3216 

3212Выполняет команды Bash с опциональным timeout и фоновым выполнением. Рабочий каталог сохраняется между командами, включая команды, запущенные в более поздних ходах многоходовой сессии; состояние shell, такое как экспортированные переменные окружения, не сохраняется. Для ограничений на то, какие изменения каталога переносятся, см. [Что сохраняется между командами](/docs/ru/tools-reference#what-persists-between-commands). Для того, что устанавливает потолок foreground, см. [Timeout и лимиты вывода](/docs/ru/tools-reference#timeout-and-output-limits). Для лимита времени фона см. [Фоновые команды](/docs/ru/tools-reference#background-commands).3217Выполняет команды Bash с опциональным timeout и фоновым выполнением. Рабочий каталог сохраняется между командами, включая команды, запущенные в более поздних ходах многоходовой сессии; состояние shell, такое как экспортированные переменные окружения, не сохраняется. Для ограничений на то, какие изменения каталога переносятся, см. [Что сохраняется между командами](/docs/ru/tools-reference#what-persists-between-commands). Для того, что устанавливает потолок foreground, см. [Timeout и лимиты вывода](/docs/ru/tools-reference#timeout-and-output-limits). Для лимита времени фона см. [Лимит времени для фоновых команд](/docs/ru/tools-reference#time-limit-for-background-commands).

3213 3218 

3214<h3 id="monitor">3219<h3 id="monitor">

3215 Monitor3220 Monitor


4113 4118 

4114`timedOutAfterMs` — это тайм-аут в миллисекундах, установленный, когда команда достигла своего тайм-аута и перешла в фоновый режим, а не начала там явно. `backgroundCwdHint` устанавливается, когда фоновая команда содержала встроенную команду изменения каталога, такую как `cd`, `pushd`, `popd` или `chdir`, и отмечает, что рабочий каталог сеанса не изменился. Оба поля требуют Claude Code v2.1.210 или более поздней версии.4119`timedOutAfterMs` — это тайм-аут в миллисекундах, установленный, когда команда достигла своего тайм-аута и перешла в фоновый режим, а не начала там явно. `backgroundCwdHint` устанавливается, когда фоновая команда содержала встроенную команду изменения каталога, такую как `cd`, `pushd`, `popd` или `chdir`, и отмечает, что рабочий каталог сеанса не изменился. Оба поля требуют Claude Code v2.1.210 или более поздней версии.

4115 4120 

4116Когда подагент, работающий на переднем плане, владеет фоновой командой, команда [завершается, когда этот подагент даёт свой финальный ответ](/docs/ru/tools-reference#background-commands). Claude Code устанавливает `backgroundEndsWithFinalResponse` в `true` для таких команд и опускает поле, когда команда сохраняется после хода, как команды, запущенные основным разговором или фоновыми подагентами. Поле требует Claude Code v2.1.227 или более поздней версии.4121Когда подагент, работающий на переднем плане, владеет фоновой командой, команда [завершается, когда этот подагент даёт свой финальный ответ](/docs/ru/tools-reference#when-a-background-command-stops). Claude Code устанавливает `backgroundEndsWithFinalResponse` в `true` для таких команд и опускает поле, когда команда сохраняется после хода, как команды, запущенные основным разговором или фоновыми подагентами. Поле требует Claude Code v2.1.227 или более поздней версии.

4117 4122 

4118Claude Code устанавливает `gitOperation.commit.branch` в ветку, названную в строке сводки коммита git, и опускает её для коммита, сделанного на отсоединённой HEAD. Поле требует Agent SDK v0.3.227 или более поздней версии. Claude Code сообщает команду `gh pr reopen` как действие PR `reopened`, что требует Agent SDK v0.3.234 или более поздней версии.4123Claude Code устанавливает `gitOperation.commit.branch` в ветку, названную в строке сводки коммита git, и опускает её для коммита, сделанного на отсоединённой HEAD. Поле требует Agent SDK v0.3.227 или более поздней версии. Claude Code сообщает команду `gh pr reopen` как действие PR `reopened`, что требует Agent SDK v0.3.234 или более поздней версии.

4119 4124 

agent-view.md +2 −20

Details

8 8 

9Agent view, открываемое с помощью `claude agents`, — это один экран для всех ваших фоновых сеансов: что работает, что требует вашего ввода и что завершено. Отправляйте новые сеансы, наблюдайте их состояние с первого взгляда вместо прокрутки стенограмм и вмешивайтесь только когда один из них требует вас. Каждый фоновый сеанс — это полная беседа Claude Code, которая продолжает работать без подключённого терминала, поэтому вы можете открыть его, ответить и уйти в любой момент.9Agent view, открываемое с помощью `claude agents`, — это один экран для всех ваших фоновых сеансов: что работает, что требует вашего ввода и что завершено. Отправляйте новые сеансы, наблюдайте их состояние с первого взгляда вместо прокрутки стенограмм и вмешивайтесь только когда один из них требует вас. Каждый фоновый сеанс — это полная беседа Claude Code, которая продолжает работать без подключённого терминала, поэтому вы можете открыть его, ответить и уйти в любой момент.

10 10 

11<img src="https://mintcdn.com/claude-code/1B48Qz2Z9hac4SLG/images/agent-view-light.png?fit=max&auto=format&n=1B48Qz2Z9hac4SLG&q=85&s=7a186c96ed47d6700d084d77e786be65" className="dark:hidden" alt="Agent view в терминале: заголовок показывает Claude Code v2.1.140, модель, рабочий каталог и сводный счёт. Сеансы сгруппированы под Требуется ввод, Работает и Завершено, с полем отправки в нижней части и подвалом с подсказками сочетаний клавиш." width="1772" height="780" data-path="images/agent-view-light.png" />11<img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/agent-view-light.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=d6905012bee31f3e6b3920b09c05dd02" className="dark:hidden" alt="Agent view в терминале. Строка в верхней части подсчитывает сеансы, ожидающие ввода, работающие и завершённые. Четыре сеанса сгруппированы под Требуется ввод, Работает и Завершено. Каждая строка показывает имя сеанса, его последний статус или вопрос и время. В нижней части находится поле ввода для описания новой задачи и строка подсказок сочетаний клавиш." width="1872" height="680" data-path="images/agent-view-light.png" />

12 12 

13<img src="https://mintcdn.com/claude-code/1B48Qz2Z9hac4SLG/images/agent-view-dark.png?fit=max&auto=format&n=1B48Qz2Z9hac4SLG&q=85&s=a5bed7434bae368faea3a8f023b52aa2" className="hidden dark:block" alt="Agent view в терминале: заголовок показывает Claude Code v2.1.140, модель, рабочий каталог и сводный счёт. Сеансы сгруппированы под Требуется ввод, Работает и Завершено, с полем отправки в нижней части и подвалом с подсказками сочетаний клавиш." width="1772" height="780" data-path="images/agent-view-dark.png" />13<img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/agent-view-dark.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=fc3c195bfc57e313ced1f1beb36cee93" className="hidden dark:block" alt="Agent view в терминале. Строка в верхней части подсчитывает сеансы, ожидающие ввода, работающие и завершённые. Четыре сеанса сгруппированы под Требуется ввод, Работает и Завершено. Каждая строка показывает имя сеанса, его последний статус или вопрос и время. В нижней части находится поле ввода для описания новой задачи и строка подсказок сочетаний клавиш." width="1872" height="680" data-path="images/agent-view-dark.png" />

14 14 

15Используйте agent view, когда у вас есть несколько независимых задач, над которыми Claude может работать без вашего наблюдения на каждом шаге. Отправьте исправление ошибки, проверку pull request и исследование нестабильного теста как три строки, продолжайте работать в другом окне и проверьте, когда строка показывает, что она требует вас или имеет результат.15Используйте agent view, когда у вас есть несколько независимых задач, над которыми Claude может работать без вашего наблюдения на каждом шаге. Отправьте исправление ошибки, проверку pull request и исследование нестабильного теста как три строки, продолжайте работать в другом окне и проверьте, когда строка показывает, что она требует вас или имеет результат.

16 16 


958 958 

959Claude Code никогда не перезапускает строку, работающую [команду оболочки](#run-a-shell-command), из `Enter` или из `claude attach`, потому что это запустит команду снова; сообщение строки и `claude attach` оба говорят, что команда не запускается снова.959Claude Code никогда не перезапускает строку, работающую [команду оболочки](#run-a-shell-command), из `Enter` или из `claude attach`, потому что это запустит команду снова; сообщение строки и `claude attach` оба говорят, что команда не запускается снова.

960 960 

961<h4 id="terminal-host-died">

962 Хост терминала умер

963</h4>

964 

965На Linux и WSL супервизор проверяет каждый хост-процесс каждые несколько секунд, открыт ли вы сеанс или нет, и отмечает сеанс как неудачный, когда процесс завершился, но его соединение с супервизором никогда не закрывалось.

966 

967* В представлении агентов строка показывает `terminal host process died — press Enter to restart`. Нажмите `Enter` на ней, и Claude Code перезапустит сеанс на свежем хост-процессе.

968* Из оболочки `claude attach <id>` перезапускает сеанс, уже отмеченный как неудачный. В противном случае он сообщает причину и выходит, говоря вам запустить `claude attach <id>` снова.

969 

970<h4 id="session-isn’t-responding">

971 Сеанс не отвечает

972</h4>

973 

974Когда супервизор принимает открытие, но никакой вывод не поступает примерно десять секунд, Claude Code завершает попытку и предлагает перезагрузку. Сеанс, который просто зависает, например при переходе машины в спящий режим, не достигает этого предложения: супервизор [перезапускает его при открытии](#read-session-state) сам.

975 

976* В представлении агентов нижний колонтитул показывает `Press enter again to restart this session — it isn't responding (its conversation is saved and resumes).` Нажмите `Enter` на той же строке снова, и Claude Code остановит неответивший процесс и перезапустит сеанс; он ничего не останавливает без этого второго нажатия.

977* Из оболочки `claude attach <id>` сообщает причину и выходит, говоря вам запустить `claude stop <id>`, затем `claude attach <id>`.

978 

979<h3 id="a-session-fails-before-starting-with-a-possibly-low-memory-note">961<h3 id="a-session-fails-before-starting-with-a-possibly-low-memory-note">

980 Сеанс не запускается с примечанием `possibly low memory`962 Сеанс не запускается с примечанием `possibly low memory`

981</h3>963</h3>

Details

384 384 

385Псевдонимы моделей, такие как `opus`, не действуют как закрепления, и также не действует ID модели, который Claude Code не распознаёт, например ARN профиля вывода приложения.385Псевдонимы моделей, такие как `opus`, не действуют как закрепления, и также не действует ID модели, который Claude Code не распознаёт, например ARN профиля вывода приложения.

386 386 

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

388 

389<h3 id="when-a-model-is-disabled-mid-session">

390 Когда модель отключена во время сеанса

391</h3>

392 

393Если ваша учётная запись потеряет доступ к модели, на которой работает ваш сеанс, например потому что администратор отключит её в вашей учётной записи Amazon Bedrock, Claude Code переключает сеанс на другую модель вместо того, чтобы не выполнять каждый запрос, и показывает `Switched to <fallback> because <model> is not available`. Он пытается использовать те же модели, что и резервный вариант при запуске: сначала более ранние версии того же уровня и, для сеанса Opus без доступной версии Opus, модель Sonnet по умолчанию.

394 

395Переключение применяется только к уровню, который вы не закрепили, то же условие, что и резервный вариант при запуске. Сеанс на конкретной версии, которую вы выбрали, или на [ARN профиля вывода приложения](#map-each-model-version-to-an-inference-profile), сохраняет свою модель и, без цепочки резервных моделей, запрос не выполняется. В [режиме auto](/docs/ru/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry) Claude Code переключается только на модель, которую режим auto поддерживает на Amazon Bedrock. Если ни одна из этих моделей также недоступна, запрос не выполняется с ошибкой [AWS authentication failed](/docs/ru/errors#aws-authentication-failed) и подсказкой для включения модели.

396 

397[Цепочка резервных моделей](/docs/ru/model-config#fallback-model-chains), которую вы настраиваете, заменяет переключение уровня: при этих отказах Claude Code переключается на ваш настроенный резервный вариант. Чтобы отклонённые запросы не выполнялись вместо переключения, установите [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](/docs/ru/env-vars). Цепочка резервных моделей, которую вы настроили, всё ещё переключается при этих отказах; удалите цепочку также, если вы хотите, чтобы каждый отклонённый запрос не выполнялся.

398 

387<h2 id="cross-region-inference-profile-prefixes">399<h2 id="cross-region-inference-profile-prefixes">

388 Префиксы профилей кросс-региональной инференции400 Префиксы профилей кросс-региональной инференции

389</h2>401</h2>

artifacts.md +1 −1

Details

398| [Переменная окружения](/docs/ru/env-vars) | Установите `CLAUDE_CODE_DISABLE_ARTIFACT=1` |398| [Переменная окружения](/docs/ru/env-vars) | Установите `CLAUDE_CODE_DISABLE_ARTIFACT=1` |

399| [Правило разрешений](/docs/ru/permissions) | Добавьте `Artifact` в `permissions.deny` |399| [Правило разрешений](/docs/ru/permissions) | Добавьте `Artifact` в `permissions.deny` |

400 400 

401После того как вы отключите артефакты в файле [`--settings`](/docs/ru/cli-reference#cli-flags) или с помощью `CLAUDE_CODE_DISABLE_ARTIFACT`, или ваш администратор отключит их в [управляемых параметрах](/docs/ru/server-managed-settings), ни один файл параметров не включит их обратно. До версии v2.1.242 файл, расположенный выше в [стеке приоритетов](/docs/ru/settings#settings-precedence), мог включить артефакты обратно, даже если файл с более низким приоритетом установил `"enableArtifact": false`.401После того как вы отключите артефакты в файле [`--settings`](/docs/ru/cli-reference#cli-flags) или с помощью `CLAUDE_CODE_DISABLE_ARTIFACT`, или ваш администратор отключит их в [управляемых параметрах](/docs/ru/server-managed-settings), ни один файл параметров не включит их обратно.

402 402 

403Вы также можете установить `"enableArtifact": false` в файле `.claude/settings.json` или `.claude/settings.local.json` проекта, чтобы отключить артефакты для сеансов в этом проекте. Параметр `"enableArtifact": true` в любом из этих файлов не включит их обратно. Поддержка этого ключа в параметрах проекта и локальных параметрах требует Claude Code версии 2.1.242 или более поздней.403Вы также можете установить `"enableArtifact": false` в файле `.claude/settings.json` или `.claude/settings.local.json` проекта, чтобы отключить артефакты для сеансов в этом проекте. Параметр `"enableArtifact": true` в любом из этих файлов не включит их обратно. Поддержка этого ключа в параметрах проекта и локальных параметрах требует Claude Code версии 2.1.242 или более поздней.

404 404 

authentication.md +51 −31

Details

50 Настройка аутентификации команды50 Настройка аутентификации команды

51</h2>51</h2>

52 52 

53Для команд и организаций вы можете настроить доступ Claude Code одним из следующих способов:53Для команд и организаций вы можете настроить доступ к Claude Code одним из следующих способов:

54 54 

55* [Claude for Teams или Enterprise](#claude-for-teams-or-enterprise), рекомендуется для большинства команд55* [Claude for Teams или Enterprise](#claude-for-teams-or-enterprise), рекомендуется для большинства команд

56* [Claude Console](#claude-console-authentication)56* [Claude Console](#claude-console-authentication)

57* [Claude apps gateway](/docs/ru/claude-apps-gateway), самостоятельно размещаемый шлюз, который подписывает разработчиков с помощью вашего IdP и маршрутизирует вывод к облачному провайдеру, который вы настраиваете57* [Claude apps gateway](/docs/ru/claude-apps-gateway), самостоятельно размещаемый шлюз, который подписывает разработчиков с помощью вашего IdP и маршрутизирует вывод на облачного провайдера, который вы настраиваете

58* [Amazon Bedrock](/docs/ru/amazon-bedrock)58* [Amazon Bedrock](/docs/ru/amazon-bedrock)

59* [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai)59* [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai)

60* [Microsoft Foundry](/docs/ru/microsoft-foundry)60* [Microsoft Foundry](/docs/ru/microsoft-foundry)


65 65 

66[Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams#team-&-enterprise) и [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise) обеспечивают лучший опыт для организаций, использующих Claude Code. Члены команды получают доступ как к Claude Code, так и к Claude в веб-версии с централизованным выставлением счетов и управлением командой.66[Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams#team-&-enterprise) и [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise) обеспечивают лучший опыт для организаций, использующих Claude Code. Члены команды получают доступ как к Claude Code, так и к Claude в веб-версии с централизованным выставлением счетов и управлением командой.

67 67 

68* **Claude for Teams**: план самообслуживания с функциями сотрудничества, инструментами администратора, SSO, управлением выставлением счетов и [параметрами, управляемыми сервером](/docs/ru/server-managed-settings) для конфигурации Claude Code на уровне организации. Лучше всего подходит для небольших команд.68* **Claude for Teams**: самостоятельный план с функциями сотрудничества, инструментами администратора, SSO, управлением выставлением счетов и [параметрами, управляемыми сервером](/docs/ru/server-managed-settings) для конфигурации Claude Code на уровне организации. Лучше всего подходит для небольших команд.

69* **Claude for Enterprise**: добавляет захват домена, разрешения на основе ролей и API соответствия. Лучше всего подходит для крупных организаций с требованиями безопасности и соответствия.69* **Claude for Enterprise**: добавляет захват домена, разрешения на основе ролей и API соответствия. Лучше всего подходит для крупных организаций с требованиями безопасности и соответствия.

70 70 

71<Steps>71<Steps>

72 <Step title="Подпишитесь">72 <Step title="Подписка">

73 Подпишитесь на [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams_step#team-&-enterprise) или свяжитесь с отделом продаж для [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise_step).73 Подпишитесь на [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams_step#team-&-enterprise) или свяжитесь с отделом продаж для [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise_step).

74 </Step>74 </Step>

75 75 

76 <Step title="Пригласите членов команды">76 <Step title="Пригласить членов команды">

77 Пригласите членов команды из панели администратора.77 Пригласите членов команды из панели администратора.

78 </Step>78 </Step>

79 79 

80 <Step title="Установите и войдите">80 <Step title="Установка и вход">

81 Члены команды устанавливают Claude Code и входят с помощью своих учетных записей claude.ai.81 Члены команды устанавливают Claude Code и входят со своими учетными записями claude.ai.

82 </Step>82 </Step>

83</Steps>83</Steps>

84 84 

85<h3 id="claude-console-authentication">85<h3 id="claude-console-authentication">

86 Claude Console authentication86 Claude Console аутентификация

87</h3>87</h3>

88 88 

89Для организаций, которые предпочитают выставление счетов на основе API, вы можете настроить доступ через Claude Console.89Для организаций, которые предпочитают выставление счетов на основе API, вы можете настроить доступ через Claude Console.

90 90 

91<Steps>91<Steps>

92 <Step title="Создайте или используйте учетную запись Console">92 <Step title="Создать или использовать учетную запись Console">

93 Используйте существующую учетную запись Claude Console или создайте новую.93 Используйте существующую учетную запись Claude Console или создайте новую.

94 </Step>94 </Step>

95 95 

96 <Step title="Добавьте пользователей">96 <Step title="Добавить пользователей">

97 Вы можете добавлять пользователей любым из следующих способов:97 Вы можете добавить пользователей одним из двух способов:

98 98 

99 * Массовое приглашение пользователей из Console: Settings -> Members -> Invite99 * Массовое приглашение пользователей из Console: Settings -> Members -> Invite

100 * [Настройте SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)100 * [Настройка SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)

101 </Step>101 </Step>

102 102 

103 <Step title="Назначьте роли">103 <Step title="Назначить роли">

104 При приглашении пользователей назначьте одну из следующих ролей:104 При приглашении пользователей назначьте одну из следующих ролей:

105 105 

106 * **Claude Code** роль: пользователи могут создавать только ключи API Claude Code106 * **Claude Code** роль: пользователи могут создавать только ключи API Claude Code


118</Steps>118</Steps>

119 119 

120<h4 id="sign-in-without-an-api-key">120<h4 id="sign-in-without-an-api-key">

121 Sign in without an API key121 Вход без ключа API

122</h4>122</h4>

123 123 

124Вы можете войти в свою учетную запись Console без создания ключа API, даже если ваша организация не позволяет разработчикам их создавать. Выберите учетную запись Anthropic Console в приглашении `/login` и Claude Code спросит, как вы хотите войти. Требуется Claude Code v2.1.242 или позже. Оба маршрута подписывают вас в Console в браузере и отличаются тем, что Claude Code сохраняет впоследствии:124Вы можете войти в свою учетную запись Console без создания ключа API, даже если ваша организация не позволяет разработчикам их создавать. Выберите учетную запись Anthropic Console в приглашении `/login` и Claude Code спросит, как вы хотите войти. Требуется Claude Code v2.1.242 или позже. Оба маршрута подписывают вас в Console в браузере и отличаются тем, что Claude Code сохраняет впоследствии:

125 125 

126* **Вход с помощью вашей учетной записи Console**, помечено как `(рекомендуется)`: Claude Code сохраняет токен OAuth из этого входа и сохраняет его как [профиль Anthropic](#anthropic-profiles-and-federation-credentials). Он не создает ключ API126* **Вход с вашей учетной записью Console**, помечено как `(recommended)`: Claude Code сохраняет токен OAuth из этого входа и сохраняет его как [профиль Anthropic](#anthropic-profiles-and-federation-credentials). Он не создает ключ API

127* **Создать ключ API**, помечено как `(устаревший)`: Claude Code создает для вас ключ API Console и сохраняет его с вашими другими учетными данными127* **Создать ключ API**, помечено как `(legacy)`: Claude Code создает ключ API Console для вас и сохраняет его с вашими другими учетными данными

128 128 

129На практике профиль хранит вход OAuth, а ключ API — это статические учетные данные: Claude Code автоматически обновляет вход профиля, и когда обновление не удается, запросы не выполняются с [истекшим входом профиля Anthropic](/docs/ru/errors#anthropic-profile-login-expired) до тех пор, пока вы снова не войдете.129На практике профиль хранит вход OAuth, а ключ API — это статические учетные данные: Claude Code автоматически обновляет вход профиля, и когда обновление не удается, запросы не выполняются с [истекшим входом профиля Anthropic](/docs/ru/errors#anthropic-profile-login-expired) до тех пор, пока вы снова не войдете.

130 130 

131Вы не получаете выбор на каждой машине. Claude Code создает ключ API без запроса в этих случаях:131Вы не получаете выбор на каждой машине. Claude Code создает ключ API без запроса в этих случаях:

132 132 

133* Вы работаете с облачным провайдером, таким как [Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry](/docs/ru/third-party-integrations) или [Claude Platform на AWS](/docs/ru/claude-platform-on-aws)133* Вы работаете с облачным провайдером, таким как [Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry](/docs/ru/third-party-integrations) или [Claude Platform on AWS](/docs/ru/claude-platform-on-aws)

134* Любой файл параметров устанавливает [`forceLoginOrgUUID`](#restrict-login-to-your-organization), или устанавливает `forceLoginMethod` на `"claudeai"` или `"console"`134* Любой файл параметров устанавливает [`forceLoginOrgUUID`](#restrict-login-to-your-organization), или устанавливает `forceLoginMethod` на `"claudeai"` или `"console"`

135* На вашей машине существует управляемый источник параметров, такой как файл управляемых параметров, профиль MDM или кэшированные параметры, управляемые сервером, но Claude Code [не может его прочитать](/docs/ru/managed-settings#invalid-entries-in-managed-settings) и никакой другой управляемый источник не предоставляет политику135* На вашей машине существует источник управляемых параметров, такой как файл управляемых параметров, профиль MDM или кэшированные параметры, управляемые сервером, но Claude Code [не может его прочитать](/docs/ru/managed-settings#invalid-entries-in-managed-settings) и никакой другой управляемый источник не предоставляет политику

136 136 

137Отмените установку `ANTHROPIC_API_KEY` перед входом без ключа.137Отмените установку `ANTHROPIC_API_KEY` перед входом без ключа.

138 138 


147Все остальное о профилях применяется к этому входу, включая его ранжирование по сравнению с вашими другими учетными данными, строку `Profile`, которую вы получаете в `/status`, и функции, которые требуют входа claude.ai. См. [Профили Anthropic и учетные данные федерации](#anthropic-profiles-and-federation-credentials).147Все остальное о профилях применяется к этому входу, включая его ранжирование по сравнению с вашими другими учетными данными, строку `Profile`, которую вы получаете в `/status`, и функции, которые требуют входа claude.ai. См. [Профили Anthropic и учетные данные федерации](#anthropic-profiles-and-federation-credentials).

148 148 

149<h3 id="cloud-provider-authentication">149<h3 id="cloud-provider-authentication">

150 Cloud provider authentication150 Аутентификация облачного провайдера

151</h3>151</h3>

152 152 

153Для команд, использующих Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry:153Для команд, использующих Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry:


157 Следуйте [документации Amazon Bedrock](/docs/ru/amazon-bedrock), [документации Google Cloud's Agent Platform](/docs/ru/google-vertex-ai) или [документации Microsoft Foundry](/docs/ru/microsoft-foundry).157 Следуйте [документации Amazon Bedrock](/docs/ru/amazon-bedrock), [документации Google Cloud's Agent Platform](/docs/ru/google-vertex-ai) или [документации Microsoft Foundry](/docs/ru/microsoft-foundry).

158 </Step>158 </Step>

159 159 

160 <Step title="Распределите конфигурацию">160 <Step title="Распределить конфигурацию">

161 Распределите переменные окружения и инструкции по созданию облачных учетных данных среди ваших пользователей. Узнайте больше о том, как [управлять конфигурацией здесь](/docs/ru/settings).161 Распределите переменные окружения и инструкции по созданию облачных учетных данных вашим пользователям. Узнайте больше о том, как [управлять конфигурацией здесь](/docs/ru/settings).

162 </Step>162 </Step>

163 163 

164 <Step title="Установите Claude Code">164 <Step title="Установить Claude Code">

165 Пользователи могут [установить Claude Code](/docs/ru/setup#install-claude-code).165 Пользователи могут [установить Claude Code](/docs/ru/setup#install-claude-code).

166 </Step>166 </Step>

167</Steps>167</Steps>

168 168 

169<h3 id="restrict-login-to-your-organization">169<h3 id="restrict-login-to-your-organization">

170 Restrict login to your organization170 Ограничить вход в вашу организацию

171</h3>171</h3>

172 172 

173Чтобы требовать, чтобы входы claude.ai разработчиков принадлежали определенной организации Anthropic, установите [`forceLoginMethod`](/docs/ru/settings-reference#forceloginmethod) и [`forceLoginOrgUUID`](/docs/ru/settings-reference#forceloginorguuid) в [управляемых параметрах](/docs/ru/managed-settings). Установите `forceLoginOrgUUID` на ваш ID организации, показанный в [параметрах администратора claude.ai](https://claude.ai/admin-settings/organization) для организаций Claude for Teams или Enterprise. Claude Code сообщает об ошибке для входа claude.ai в любую другую организацию и выходит при запуске, если учетные данные claude.ai в использовании принадлежат организации, которая не указана в списке.173Чтобы требовать, чтобы входы claude.ai разработчиков принадлежали определенной организации Anthropic, установите [`forceLoginMethod`](/docs/ru/settings-reference#forceloginmethod) и [`forceLoginOrgUUID`](/docs/ru/settings-reference#forceloginorguuid) в [управляемых параметрах](/docs/ru/managed-settings). Установите `forceLoginOrgUUID` на ваш ID организации, показанный в [параметрах администратора claude.ai](https://claude.ai/admin-settings/organization) для организаций Claude for Teams или Enterprise. Claude Code сообщает об ошибке для входа claude.ai в любую другую организацию и выходит при запуске, если используемые учетные данные claude.ai принадлежат организации, которая не указана в списке.

174 174 

175Для входов Claude Console, Claude Code использует `forceLoginOrgUUID` для предварительного выбора организации на странице входа Console, когда вы устанавливаете его на один ID организации Console, показанный на [platform.claude.com/settings/organization](https://platform.claude.com/settings/organization). Он не проверяет, какой организации принадлежат полученные учетные данные Console, при входе или при запуске. Разработчик, который вошел с учетной записью Console до развертывания ключей, остается в системе, и этот сохраненный ключ блокируется на машине, которая также требует [вход через шлюз](/docs/ru/claude-apps-gateway) или в сеансе, который выбирает облачного провайдера.175Для входов Claude Console, Claude Code использует `forceLoginOrgUUID` для предварительного выбора организации на странице входа Console, когда вы устанавливаете его на один ID организации Console, показанный на [platform.claude.com/settings/organization](https://platform.claude.com/settings/organization). Он не проверяет, какой организации принадлежат полученные учетные данные Console, при входе или при запуске. Разработчик, который вошел с учетной записью Console до развертывания ключей, остается в системе, и этот сохраненный ключ блокируется на машине, которая также требует входа [шлюза](/docs/ru/claude-apps-gateway) или в сеансе, который выбирает облачного провайдера.

176 176 

177Если вы установите `forceLoginOrgUUID` в любом файле параметров, Claude Code прекратит предлагать [вход в Console без ключа](#sign-in-without-an-api-key) в сеансах, к которым применяется этот файл, и вместо этого создаст ключ API. Чтобы направить разработчиков на вход claude.ai, установите `forceLoginMethod` на `"claudeai"`.177Если вы установите `forceLoginOrgUUID` в любом файле параметров, Claude Code прекратит предлагать [вход в Console без ключа](#sign-in-without-an-api-key) в сеансах, к которым применяется этот файл, и вместо этого создаст ключ API. Чтобы направить разработчиков на вход claude.ai, установите `forceLoginMethod` на `"claudeai"`.

178 178 


182 182 

183* **Входы терминала, [расширения VS Code](/docs/ru/vs-code) и Agent SDK**: проверяют `forceLoginOrgUUID` для входов учетной записи claude.ai183* **Входы терминала, [расширения VS Code](/docs/ru/vs-code) и Agent SDK**: проверяют `forceLoginOrgUUID` для входов учетной записи claude.ai

184* **`claude setup-token` и `/install-github-app`**: применяют только `forceLoginMethod`, поэтому они могут создать токен в другой организации184* **`claude setup-token` и `/install-github-app`**: применяют только `forceLoginMethod`, поэтому они могут создать токен в другой организации

185* **[Вход через шлюз](/docs/ru/claude-apps-gateway)**: выбран `forceLoginMethod: "gateway"` вместо ограничения им, и не аутентифицируется против организации Anthropic, поэтому `forceLoginOrgUUID` не применяется; используйте поставщика идентификации вашего шлюза для ограничения доступа185* **Вход [шлюза](/docs/ru/claude-apps-gateway)**: выбирается `forceLoginMethod: "gateway"` вместо ограничения им, и не аутентифицируется против организации Anthropic, поэтому `forceLoginOrgUUID` не применяется; используйте поставщика удостоверений вашего шлюза для ограничения доступа

186 186 

187Развертывайте ключи через инструменты управления устройствами. [Параметры, управляемые сервером](/docs/ru/server-managed-settings), достигают только учетных записей, которые уже аутентифицированы в вашей организации, поэтому они не могут перенаправить первый вход разработчика. Если ваша организация также распределяет параметры, управляемые сервером, установите ключи в обоих местах: управляемые источники параметров [не объединяются](/docs/ru/server-managed-settings#settings-precedence), и кэшированные параметры, управляемые сервером, заменяют файл, управляемый устройством, за исключением нескольких [исключений для каждого ключа](/docs/ru/server-managed-settings#per-key-exceptions-across-managed-sources). `forceLoginOrgUUID` и значения `"claudeai"` и `"console"` `forceLoginMethod` не входят в эти исключения, поэтому держите их в обоих местах.187Развертывайте ключи через инструменты управления устройствами. [Параметры, управляемые сервером](/docs/ru/server-managed-settings), достигают только учетных записей, которые уже аутентифицированы в вашей организации, поэтому они не могут перенаправить первый вход разработчика. Если ваша организация также распределяет параметры, управляемые сервером, установите ключи в обоих местах: управляемые источники [не объединяются](/docs/ru/server-managed-settings#settings-precedence), и кэшированные параметры, управляемые сервером, заменяют файл, управляемый устройством, за исключением нескольких [исключений для каждого ключа](/docs/ru/server-managed-settings#per-key-exceptions-across-managed-sources). `forceLoginOrgUUID` и значения `"claudeai"` и `"console"` `forceLoginMethod` не входят в эти исключения, поэтому держите их в обоих местах.

188 188 

189В развертывании [шлюза](/docs/ru/claude-apps-gateway) также держите `forceLoginMethod` и `forceLoginOrgUUID` вне [параметров, которые служит шлюз](/docs/ru/claude-apps-gateway-config#managed).189При развертывании [шлюза](/docs/ru/claude-apps-gateway) также держите `forceLoginMethod` и `forceLoginOrgUUID` вне [параметров, которые служит шлюз](/docs/ru/claude-apps-gateway-config#managed).

190 190 

191Ключи также определяют, может ли сеанс, который не использует учетные данные входа, начаться. См. [`forceLoginOrgUUID`](/docs/ru/settings-reference#forceloginorguuid) в справочнике параметров для полного поведения.191Ключи также определяют, может ли сеанс, который не использует учетные данные входа, начаться. См. [`forceLoginOrgUUID`](/docs/ru/settings-reference#forceloginorguuid) в справочнике параметров для полного поведения.

192 192 

193* **`ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper`**: заблокированы при запуске. При `forceLoginOrgUUID` членство в организации не может быть проверено для учетных данных окружения, и при `forceLoginMethod` учетные данные будут стоять вместо требуемого входа. Когда управляемые параметры также требуют [вход через шлюз](/docs/ru/claude-apps-gateway), Claude Code блокирует ключ API, сохраненный более ранним входом Claude Console, таким же образом. См. [Политика администратора требует вход через облачный шлюз](/docs/ru/errors#administrator-policy-requires-a-cloud-gateway-sign-in)193* **`ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper`**: заблокировано при запуске. При `forceLoginOrgUUID` членство в организации не может быть проверено для учетных данных окружения, и при `forceLoginMethod` учетные данные будут служить вместо требуемого входа. Когда управляемые параметры также требуют входа [шлюза](/docs/ru/claude-apps-gateway), Claude Code блокирует ключ API, сохраненный более ранним входом Claude Console, таким же образом. См. [Политика администратора требует входа облачного шлюза](/docs/ru/errors#administrator-policy-requires-a-cloud-gateway-sign-in)

194* **Сеансы облачного провайдера, такие как Amazon Bedrock**: заблокированы только пока учетные данные `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper`, или ключ API, сохраненный более ранним входом Claude Console, все еще присутствуют на машине. Удалите его и сеанс начнется. Эти сеансы аутентифицируются против вашего облачного провайдера, политики доступа которого их регулируют194* **Сеансы облачного провайдера, такие как Amazon Bedrock**: блокируются только при наличии учетных данных `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper`, или ключа API, сохраненного более ранним входом Claude Console, на машине. Удалите его и сеанс начнется. Эти сеансы аутентифицируются против вашего облачного провайдера, политики доступа которого их регулируют

195* **[Профиль Anthropic или учетные данные федерации](#anthropic-profiles-and-federation-credentials)**: не заблокированы, если только учетные данные `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper`, или ключ API, сохраненный более ранним входом Claude Console, также не присутствуют на машине. Удалите его и сеанс начнется. Ключи не проверяют, какой организации принадлежит профиль195* **[Профиль Anthropic или учетные данные федерации](#anthropic-profiles-and-federation-credentials)**: не блокируются, если только учетные данные `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper`, или ключ API, сохраненный более ранним входом Claude Console, также не присутствуют на машине. Ключи не проверяют, какой организации принадлежит профиль

196 

197<h3 id="restrict-which-api-providers-a-machine-may-use">

198 Ограничить, какие поставщики API может использовать машина

199</h3>

200 

201[`allowedProviders`](/docs/ru/settings-reference#allowedproviders) в [управляемых параметрах](/docs/ru/managed-settings) перечисляет, какие сервисы управляемая машина может использовать для доступа к Claude, такие как Anthropic API, Amazon Bedrock или шлюз LLM. Он дополняет `forceLoginMethod` и `forceLoginOrgUUID`, которые управляют тем, какую учетную запись использует сеанс при разговоре с Anthropic. Требуется Claude Code v2.1.285 или позже.

202 

203```json managed-settings.json theme={null}

204{

205 "forceLoginMethod": "claudeai",

206 "forceLoginOrgUUID": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"],

207 "allowedProviders": ["anthropic", "bedrock"]

208}

209```

210 

211С этим файлом разработчик, вошедший в вашу организацию claude.ai или настроенный для Amazon Bedrock, запускается нормально. Сеанс, настроенный для любого другого провайдера, отказывается при запуске, и работающий сеанс, который переключается на один, отказывается при следующем запросе. [Управляемые параметры не позволяют этому поставщику API](/docs/ru/errors#managed-settings-dont-allow-this-api-provider) показывает каждое сообщение.

212 

213* **Разрешить шлюз LLM или прокси**: перечислите `"customEndpoint"` и установите URL шлюза в управляемом блоке `env` того же источника. [Справочник параметров](/docs/ru/settings-reference#allowedproviders) перечисляет каждое значение и говорит, какие переменные конечной точки требуют управляемого закрепления `env`.

214* **Развертывание на управляемых машинах**: поместите список в управляемый источник, который несет остальную часть вашей политики. Примечание [Scope](/docs/ru/settings-reference#allowedproviders) записи говорит, как управляемый список сервера объединяется с ним.

215* **Только параметры, управляемые сервером**: список, который вы устанавливаете только в [параметрах, управляемых сервером](/docs/ru/server-managed-settings), достигает только сеансов, которые получают параметры вашей организации, поэтому рассматривайте его как удобство для машин, которые вы не можете достичь с помощью управления устройствами, а не как принудительное применение. [Доступность платформы](/docs/ru/server-managed-settings#platform-availability) перечисляет, какие сеансы их получают.

196 216 

197<h2 id="credential-management">217<h2 id="credential-management">

198 Управление учетными данными218 Управление учетными данными

Details

285 Редактирование правил из `/permissions`285 Редактирование правил из `/permissions`

286</h2>286</h2>

287 287 

288Чтобы просмотреть и отредактировать правила классификатора без открытия файла параметров, запустите [`/permissions`](/docs/ru/permissions#manage-permissions) и выберите вкладку **Auto mode**. Вкладка требует Claude Code версии 2.1.246 или более поздней версии и появляется только когда [автоматический режим доступен](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) для вашей сессии.288Чтобы просмотреть и отредактировать правила классификатора и записи `environment` без открытия файла параметров, запустите [`/permissions`](/docs/ru/permissions#manage-permissions) и выберите вкладку **Auto mode**. Вкладка требует Claude Code версии 2.1.246 или более поздней версии и появляется только когда [автоматический режим доступен](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) для вашей сессии.

289 289 

290На вкладке отображаются записи `allow`, `soft_deny`, `hard_deny` и `environment` из каждой из [областей, которые читает классификатор](#where-the-classifier-reads-configuration), и показывается, действуют ли встроенные правила для каждого раздела. Claude Code показывает записи из [управляемых параметров](/docs/ru/server-managed-settings) или флага `--settings` как доступные только для чтения и сохраняет каждое внесённое вами изменение на вкладке в `~/.claude/settings.json`. На вкладке вы можете:290Claude Code показывает записи из [управляемых параметров](/docs/ru/server-managed-settings) или флага `--settings` как доступные только для чтения и сохраняет каждое внесённое вами изменение на вкладке в `~/.claude/settings.json`.

291 

292* Добавлять, редактировать или удалять правила в разделах `allow`, `soft_deny` и `hard_deny`. Когда вы добавляете первое правило в раздел, Claude Code также вставляет `"$defaults"`, чтобы [встроенные правила](#override-the-block-and-allow-rules) оставались в силе.

293* Включать или отключать встроенные правила для `allow`, `soft_deny` или `hard_deny`. Claude Code записывает выбор, добавляя или удаляя `"$defaults"` в вашем списке для этого раздела, поэтому раздел должен содержать по крайней мере одно ваше собственное правило, прежде чем вы сможете отключить его встроенные правила.

294* Редактировать записи `environment` как один документ в вашем редакторе. Если вы ещё не настроили никакие записи `environment`, Claude Code сначала спрашивает, следует ли заменить встроенную среду, затем открывает редактор с полным встроенным текстом. При сохранении Claude Code заменяет ваш массив `autoMode.environment` документом. Включите строку `"$defaults"`, чтобы [сохранить встроенные записи](#define-trusted-infrastructure).

295 291 

296<h2 id="route-all-shell-commands-through-the-classifier">292<h2 id="route-all-shell-commands-through-the-classifier">

297 Маршрутизировать все команды shell через классификатор293 Маршрутизировать все команды shell через классификатор

Details

170| `password` | Нет | Учётные данные базы данных. Установите здесь, а не в `postgres_url`, чтобы учётные данные оставались вне URL. Принимает любые символы и имеет приоритет над учётными данными URL. |170| `password` | Нет | Учётные данные базы данных. Установите здесь, а не в `postgres_url`, чтобы учётные данные оставались вне URL. Принимает любые символы и имеет приоритет над учётными данными URL. |

171| `max_connections` | Нет | Размер пула соединений Postgres на реплику. По умолчанию `5`, что консервативно и дружелюбно к общим базам данных. С включёнными [лимитами расходов](#admin) горячий путь выполняет несколько операций на запрос вывода, поэтому повысьте его для выделенной базы данных под нагрузкой и держите реплики × это ниже `max_connections` базы данных. |171| `max_connections` | Нет | Размер пула соединений Postgres на реплику. По умолчанию `5`, что консервативно и дружелюбно к общим базам данных. С включёнными [лимитами расходов](#admin) горячий путь выполняет несколько операций на запрос вывода, поэтому повысьте его для выделенной базы данных под нагрузкой и держите реплики × это ниже `max_connections` базы данных. |

172| `connect_timeout_seconds` | Нет | Секунды, которые gateway ждёт, когда открывает соединение Postgres. Целое число от `1` до `60`, по умолчанию `5`. Повысьте, если попытки соединения истекают по времени, когда новый экземпляр gateway запускается. Требует Claude Code v2.1.274 или позже на сервере gateway. Более ранние версии отказываются запускаться, когда ключ установлен. |172| `connect_timeout_seconds` | Нет | Секунды, которые gateway ждёт, когда открывает соединение Postgres. Целое число от `1` до `60`, по умолчанию `5`. Повысьте, если попытки соединения истекают по времени, когда новый экземпляр gateway запускается. Требует Claude Code v2.1.274 или позже на сервере gateway. Более ранние версии отказываются запускаться, когда ключ установлен. |

173| `readiness_grace_seconds` | Нет | Сколько секунд `/readyz` продолжает сообщать о готовности после того, как Postgres перестаёт отвечать. Целое число от `0` до `3600`, по умолчанию `0`. См. [Поведение при сбое](/docs/ru/claude-apps-gateway-deploy#outage-behavior) для того, как выбрать значение. Требует Claude Code v2.1.282 или позже на сервере gateway. Более ранние версии отказываются запускаться, когда ключ установлен. |

173 174 

174Для локальной разработки укажите `postgres_url` на одноразовый контейнер Postgres, например `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`.175Для локальной разработки укажите `postgres_url` на одноразовый контейнер Postgres, например `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`.

175 176 


187 188 

188Несколько upstream одного поставщика должны установить отличный `name:`.189Несколько upstream одного поставщика должны установить отличный `name:`.

189 190 

190Клиенты Bedrock, Claude Platform on AWS, Agent Platform и Foundry создаются один раз при запуске, и их SDK обновляют учётные данные внутри, поэтому ротация облачных учётных данных не требует перезагрузки. Статические ключи API Anthropic и носители читаются при запуске; см. [Anthropic API](#anthropic-api).191Клиенты Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform и Microsoft Foundry создаются один раз при запуске, и их SDK обновляют учётные данные внутри, поэтому ротация облачных учётных данных не требует перезагрузки. Статические ключи API Anthropic и носители читаются при запуске; см. [Anthropic API](#anthropic-api).

191 192 

192<h4 id="upstream-error-messages">193<h4 id="upstream-error-messages">

193 Сообщения об ошибках upstream194 Сообщения об ошибках upstream


313| Где-либо ещё | Передайте учётные данные через переменные env `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` и `AWS_SESSION_TOKEN`, или установите их явно в `auth:` с расширением `${VAR}` |314| Где-либо ещё | Передайте учётные данные через переменные env `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` и `AWS_SESSION_TOKEN`, или установите их явно в `auth:` с расширением `${VAR}` |

314| Регион | `region:` — это регион конечной точки API. Профили вывода между регионами маршрутизируют по географии (США, ЕС, APAC) независимо от того, какой вы выберете. Для регионов, не входящих в США, или ARN с выделенной пропускной способностью добавьте блок [`models:`](#models) с правильными ID для каждого upstream. |315| Регион | `region:` — это регион конечной точки API. Профили вывода между регионами маршрутизируют по географии (США, ЕС, APAC) независимо от того, какой вы выберете. Для регионов, не входящих в США, или ARN с выделенной пропускной способностью добавьте блок [`models:`](#models) с правильными ID для каждого upstream. |

315 316 

317<h5 id="apply-an-amazon-bedrock-guardrail">

318 Применить guardrail Amazon Bedrock

319</h5>

320 

321Чтобы применить guardrail Amazon Bedrock к каждому запросу вывода, который gateway отправляет через upstream Bedrock, добавьте блок `guardrail` к этому upstream. Требует Claude Code v2.1.281 или позже на сервере gateway.

322 

323```yaml theme={null}

324upstreams:

325 - provider: bedrock

326 region: us-east-1

327 auth: {}

328 guardrail:

329 id: gr-abc123 # ID guardrail или полный ARN

330 version: "1" # номер опубликованной версии или DRAFT

331 # сохраняйте кавычки: голое 1 не удаётся при загрузке

332```

333 

334<Warning>

335 Gateway не поддерживает входные теги guardrail. Он не добавляет теги содержимого guard к подсказкам, поэтому фильтр guardrail, который Amazon Bedrock применяет только к помеченному входу, не запускается на трафике через gateway. Для того, какие фильтры зависят от входных тегов, см. [входные теги](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-tagging.html) в документации Amazon Bedrock.

336</Warning>

337 

338Также предоставьте `bedrock:ApplyGuardrail` на guardrail основному принципалу, который подписывает запросы этого upstream: основному принципалу AWS gateway, или с [`assume_role`](#bedrock-in-another-aws-account) роли, названной в `role_arn`.

339 

340Установите `guardrail` на каждом upstream `bedrock` или ни на одном. Gateway отказывается запускаться на смеси, потому что [переход](#multiple-upstreams) иначе может отправить запрос на upstream Bedrock, который не имеет guardrail.

341 

342Guardrail охватывает только upstream Bedrock. Если вы перечислите другого поставщика в `upstreams`, gateway отправляет запросы этому поставщику без guardrail.

343 

344Когда запрос `/v1/messages`, чьё тело несёт поле `amazon-bedrock-*`, такое как `amazon-bedrock-guardrailConfig`, достигает upstream Bedrock, который имеет установленный `guardrail`, gateway ответит 400 вместо пересылки его.

345 

346<a id="bedrock-in-another-aws-account" />

347 

348<h5 id="bedrock-in-another-aws-account">

349 Bedrock в другой учётной записи AWS

350</h5>

351 

352Установите `assume_role` на upstream Bedrock и gateway использует собственную идентификацию AWS только для вызова `sts:AssumeRole` на роль, которую вы называете, которая может быть в другой учётной записи AWS от gateway. Каждый запрос Bedrock из этого upstream подписывается с одночасовыми учётными данными, которые STS возвращает, поэтому долгоживущий ключ доступа не пересекает учётные записи.

353 

354Требует gateway, работающий Claude Code v2.1.281 или позже. Более ранний gateway отказывается запускаться, когда находит ключ.

355 

356```yaml theme={null}

357upstreams:

358 - name: bedrock-isolated

359 provider: bedrock

360 region: us-east-1

361 auth: {} # собственная роль gateway: она только вызывает STS

362 assume_role:

363 role_arn: arn:aws:iam::222222222222:role/claude-gateway-bedrock

364 # external_id: ${BEDROCK_ROLE_EXTERNAL_ID} # когда политика доверия роли требует одного

365```

366 

367Блок `assume_role` принимает три ключа:

368 

369| Ключ | Значение |

370| - | - |

371| `role_arn` | Роль IAM, которую gateway предполагает, как `arn:aws:iam::` или `arn:aws-us-gov:iam::` ARN. Дайте ей [разрешения Bedrock](#amazon-bedrock), которые нужны этому upstream, `bedrock:CountTokens` включено, плюс `bedrock:ApplyGuardrail` когда upstream устанавливает `guardrail`. |

372| `external_id` | Опционально. Отправляется как внешний ID на каждый вызов `sts:AssumeRole`. Установите его, когда политика доверия роли требует одного, и заключите в кавычки, если это все цифры. |

373| `session_name` | Опционально. `email` или `sub` дают каждому разработчику свой сеанс: см. [Атрибуция затрат на разработчика AWS](#per-developer-aws-cost-attribution). Не установлено, каждый запрос использует один сеанс с именем `claude-apps-gateway`. |

374 

375Политика доверия роли называет собственный основной принципал gateway, такой как его IRSA или роль задачи ECS. Этот основной принципал нуждается в `sts:AssumeRole` на роль и никаком разрешении Bedrock самого. Удалите `Condition`, если вы не установите `external_id`.

376 

377```json theme={null}

378{

379 "Version": "2012-10-17",

380 "Statement": [{

381 "Effect": "Allow",

382 "Principal": { "AWS": "arn:aws:iam::111111111111:role/claude-gateway" },

383 "Action": "sts:AssumeRole",

384 "Condition": { "StringEquals": { "sts:ExternalId": "your-external-id" } }

385 }]

386}

387```

388 

389* Если STS отказывает или недостижим, gateway не отправляет запрос с собственными учётными данными upstream. Он логирует ошибку STS с тем, что проверить, затем пробует следующий upstream, который вы перечислили. [Сообщения об ошибках upstream](#upstream-error-messages) охватывает то, что клиент получает, когда ни один upstream не успевает. Более поздний upstream без `assume_role` будет служить запросу с собственными учётными данными, поэтому перечислите один только если это то, что вы хотите.

390* Gateway вызывает региональную конечную точку STS `sts.<region>.amazonaws.com`, которую его сеть должна достичь. Для конечной точки FIPS установите `AWS_USE_FIPS_ENDPOINT=true` в окружении gateway, а не `use_fips_endpoint` в файле конфигурации AWS.

391* `assume_role` применяется к `provider: bedrock` только и нуждается в учётных данных источника SigV4: gateway отказывается запускаться, когда это установлено рядом с `aws_bearer_token`.

392* Каждый разработчик, которого gateway допускает, может использовать этот upstream; [`managed`](#managed) управляет тем, какие разработчики могут использовать какие модели. Чтобы держать модель, служащую через роль, от также служения из другой учётной записи, дайте ей пользовательский id, чья карта `upstream_model` имеет только имя этого upstream. Для такого id gateway пропускает каждый другой upstream, поэтому ни запрос, ни подсчёт токенов для отказанного запроса не могут переходить на другую учётную запись. Встроенные имена моделей всё ещё пробуются на каждом upstream по порядку, этот включен, и запрос, который достигает его, подписывается с той же ролью, поэтому перечислите этот upstream в последнюю очередь, если его учётная запись должна также служить им.

393 

394Этот пример дает одной модели пользовательский id, который только изолированный upstream служит:

395 

396```yaml theme={null}

397models:

398 - id: claude-opus-restricted # пользовательский id, не встроенное имя модели

399 upstream_model:

400 bedrock-isolated: us.anthropic.claude-opus-4-8 # единственный upstream, который служит ему

401```

402 

403<a id="per-developer-aws-cost-attribution" />

404 

405<h5 id="per-developer-aws-cost-attribution">

406 Атрибуция затрат на разработчика AWS

407</h5>

408 

409По умолчанию gateway подписывает каждый запрос Bedrock с одними учётными данными, поэтому AWS видит запросы всех разработчиков под одним основным принципалом IAM. Добавьте `session_name: email` к [`assume_role`](#bedrock-in-another-aws-account) и gateway вызывает `sts:AssumeRole` один раз на разработчика в час, с именем сеанса, установленным на электронную почту этого разработчика, и подписывает их запросы с возвращёнными учётными данными, поэтому запросы каждого разработчика достигают AWS под их собственным сеансом предполагаемой роли. Роль может быть в собственной учётной записи gateway.

410 

411Требует gateway, работающий Claude Code v2.1.281 или позже. [Атрибуция затрат на AWS](/docs/ru/claude-apps-gateway-on-aws#cost-attribution) охватывает роль IAM и где AWS billing показывает сеансы.

412 

413```yaml theme={null}

414upstreams:

415 - provider: bedrock

416 region: us-east-1

417 auth: {} # собственная роль gateway: она только вызывает STS

418 assume_role:

419 role_arn: arn:aws:iam::123456789012:role/claude-gateway-bedrock-user

420 session_name: email # или sub

421```

422 

423`session_name` выбирает, какое проверенное утверждение становится AWS `RoleSessionName`: `email` или `sub`. Gateway пишет любой символ, отличный от букв ASCII, цифр и `_+,.@-`, как `=XX` hex на UTF-8 байт, и сокращает результат длиннее 64 символов до префикса плюс хеш, поэтому имя сеанса каждого разработчика остаётся действительным и уникальным. Запрос от разработчика, чей токен не несёт утверждение, не отправляется через этот upstream, и журнал оператора говорит переключиться на `sub` или установить [`oidc.email_claim`](#oidc).

424 

425Активный разработчик стоит один вызов STS в час на реплику gateway, и одновременные первые запросы делят один вызов.

426 

427Gateway также делает один вызов своего собственного на этой роли: подсчёт токенов для запроса, который клиент отказал, поэтому [лимиты расходов](/docs/ru/claude-apps-gateway-spend-limits) остаются точными. Этот подсчёт и его [одноразовый резервный запрос](#amazon-bedrock) подписаны общим сеансом `claude-apps-gateway`, поэтому AWS атрибутирует резервный к `claude-apps-gateway`, а не к разработчику.

428 

429Для строгой атрибуции на разработчика установите `assume_role` с `session_name` на каждом upstream Bedrock, который вы перечислите. Upstream без него подписывает запросы, которые он служит, с собственными учётными данными.

430 

316<h4 id="claude-platform-on-aws">431<h4 id="claude-platform-on-aws">

317 Claude Platform on AWS432 Claude Platform on AWS

318</h4>433</h4>


512| Рычаг | Как |627| Рычаг | Как |

513| - | - |628| - | - |

514| Разные регионы | Один upstream Bedrock на регион, каждый со своим `region:`. С [`auto_include_builtin_models: true`](#models) профили вывода между регионами маршрутизируют автоматически; для развёртываний, закреплённых на регион, используйте блок `models:`. |629| Разные регионы | Один upstream Bedrock на регион, каждый со своим `region:`. С [`auto_include_builtin_models: true`](#models) профили вывода между регионами маршрутизируют автоматически; для развёртываний, закреплённых на регион, используйте блок `models:`. |

515| Разные учётные записи | Один upstream Bedrock на учётную запись, каждый со своими учётными данными в `auth:`. Цепочка по умолчанию (`auth: {}`) использует идентификатор пода; для второй учётной записи установите явные учётные данные или токен-носитель. |630| Разные учётные записи | Один upstream Bedrock на учётную запись. Цепочка по умолчанию (`auth: {}`) использует идентификатор пода; для второй учётной записи добавьте [`assume_role`](#bedrock-in-another-aws-account) для достижения её с короткоживущими учётными данными, или установите явные учётные данные или токен-носитель в `auth:`. |

516| Выделенная пропускная способность | Сопоставьте модель с ARN выделенной пропускной способности в `models:` для имени этого upstream. Другие upstream сохраняют ID по требованию, поэтому пропускная способность PT исчерпывается перед переходом. |631| Выделенная пропускная способность | Сопоставьте модель с ARN выделенной пропускной способности в `models:` для имени этого upstream. Другие upstream сохраняют ID по требованию, поэтому пропускная способность PT исчерпывается перед переходом. |

517| Конечные точки VPC / FIPS | Установите `base_url:` на upstream на URL вашей конечной точки VPC или FIPS |632| Конечные точки VPC / FIPS | Установите `base_url:` на upstream на URL вашей конечной точки VPC или FIPS |

518| Маршрутизация, ограниченная моделью | Только пользовательская модель `id`, которая не является встроенной моделью Claude, пропускает upstream, отсутствующие из её карты `upstream_model:`. Gateway пробует встроенные модели на каждом upstream по порядку и использует ID по умолчанию поставщика, где карта не имеет записи, поэтому для встроенных моделей карта изменяет, какой ID получает upstream, а не пробуется ли он; upstream, который отклоняет ID, следует тем же [правилам переходов](#upstreams), что и любая другая ошибка upstream. |633| Маршрутизация, ограниченная моделью | Только пользовательская модель `id`, которая не является встроенной моделью Claude, пропускает upstream, отсутствующие из её карты `upstream_model:`. Gateway пробует встроенные модели на каждом upstream по порядку и использует ID по умолчанию поставщика, где карта не имеет записи, поэтому для встроенных моделей карта изменяет, какой ID получает upstream, а не пробуется ли он; upstream, который отклоняет ID, следует тем же [правилам переходов](#upstreams), что и любая другая ошибка upstream. |


522CLI применяет одинаковое управление функциями к gateway независимо от того, какой upstream служит данному запросу, поэтому переход не отправляет поле тела, которое upstream отклонил бы.637CLI применяет одинаковое управление функциями к gateway независимо от того, какой upstream служит данному запросу, поэтому переход не отправляет поле тела, которое upstream отклонил бы.

523 638 

524<h2 id="optional-sections">639<h2 id="optional-sections">

525 Опциональные разделы640 Дополнительные разделы

526</h2>641</h2>

527 642 

528<h3 id="admin">643<h3 id="admin">

529 `admin`644 `admin`

530</h3>645</h3>

531 646 

532Опциональный. Включает `/v1/organizations/spend_limits`, который отражает публичный Admin API Anthropic, и применение расходов для каждого разработчика на `/v1/messages`. См. [Лимиты расходов](/docs/ru/claude-apps-gateway-spend-limits) для того, как устанавливаются и применяются ограничения; этот раздел охватывает ключи `gateway.yaml`, которые включают функцию и настраивают её.647Опционально. Включает `/v1/organizations/spend_limits`, который отражает публичный Admin API Anthropic, и принудительное ограничение расходов на разработчика на `/v1/messages`. Смотрите [Spend limits](/docs/ru/claude-apps-gateway-spend-limits), чтобы узнать, как устанавливаются и применяются ограничения; этот раздел охватывает ключи `gateway.yaml`, которые включают функцию и настраивают её.

533 648 

534```yaml theme={null}649```yaml theme={null}

535admin:650admin:

536 # Именованные статические ключи API для конечных точек администратора, отправляемые как x-api-key.651 # Именованные статические API ключи для конечных точек администратора, отправляемые как x-api-key.

537 # ID появляется в журнале аудита как admin-key:<id>, поэтому каждый ключ652 # Идентификатор появляется в журнале аудита как admin-key:<id>, поэтому каждый ключ

538 # атрибутируется. Массив для ротации: добавьте новый ключ, перекатите клиентов,653 # можно отследить. Массив для ротации: добавьте новый ключ, обновите клиентов,

539 # удалите старый.654 # удалите старый.

540 write_keys:655 write_keys:

541 - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }656 - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }

542 - { id: ci, key: "${GATEWAY_ADMIN_WRITE_KEY_CI}" }657 - { id: ci, key: "${GATEWAY_ADMIN_WRITE_KEY_CI}" }

543 read_keys:658 read_keys:

544 - { id: reporting, key: "${GATEWAY_ADMIN_READ_KEY}" }659 - { id: reporting, key: "${GATEWAY_ADMIN_READ_KEY}" }

545 # Группы IdP, предоставленные полному администратору через обычный JWT gateway (без ключа API).660 # Группы IdP с полным доступом администратора через обычный JWT шлюза (без API ключа).

546 admin_groups: [platform-finops]661 admin_groups: [platform-finops]

547 blocked_message: request an increase at https://go.example.com/claude-limits662 blocked_message: request an increase at https://go.example.com/claude-limits

548```663```

549 664 

550| Поле | Обязательно | Описание |665| Поле | Обязательно | Описание |

551| - | - | - |666| - | - | - |

552| `write_keys` | Нет | Массив `{id, key}`. `x-api-key`, соответствующий одному из них, может перечислять, устанавливать и удалять лимиты расходов. Значения ключей должны быть не менее 32 символов; `id` должны быть уникальны в `read_keys` и `write_keys`. |667| `write_keys` | Нет | Массив `{id, key}`. `x-api-key`, соответствующий одному из них, может перечислять, устанавливать и удалять ограничения расходов. Значения ключей должны быть не менее 32 символов; `id` должны быть уникальны в `read_keys` и `write_keys`. |

553| `read_keys` | Нет | Массив `{id, key}`. Только для чтения: каждая конечная точка `GET`, включая перечисление ограничений, получение одного по ID и чтение [`/effective`](/docs/ru/claude-apps-gateway-spend-limits#%2Feffective) и [`/audit`](/docs/ru/claude-apps-gateway-spend-limits#%2Faudit). |668| `read_keys` | Нет | Массив `{id, key}`. Только для чтения: каждая конечная точка `GET`, включая перечисление ограничений, получение одного по ID и чтение [`/effective`](/docs/ru/claude-apps-gateway-spend-limits#%2Feffective) и [`/audit`](/docs/ru/claude-apps-gateway-spend-limits#%2Faudit). |

554| `admin_groups` | Нет | Имена групп IdP. JWT gateway, чьё утверждение `groups` включает одну из них, имеет полный доступ администратора, чтение и запись, и аудиты как `oidc:<sub>`. Используйте это для человеческих администраторов; используйте ключи API для машин. Пустая запись в этом списке останавливает gateway при загрузке. См. [Значения matcher, которые останавливают gateway при загрузке](#matcher-values-that-stop-the-gateway-at-boot). |669| `admin_groups` | Нет | Имена групп IdP. JWT шлюза, чей claim `groups` включает одну из них, имеет полный доступ администратора, чтение и запись, и аудит как `oidc:<sub>`. Используйте это для администраторов-людей; используйте API ключи для машин. Пустая запись в этом списке останавливает шлюз при загрузке. Смотрите [Значения сопоставления, которые останавливают шлюз при загрузке](#matcher-values-that-stop-the-gateway-at-boot). |

555| `blocked_message` | Нет | Добавлено дословно к `429 billing_error`, который видит заблокированный разработчик. Напишите всю инструкцию, такую как URL или канал Slack. Если не установлено, gateway отправляет только сообщение по умолчанию. См. [Как работает применение](/docs/ru/claude-apps-gateway-spend-limits#how-enforcement-works). |670| `blocked_message` | Нет | Добавляется дословно к `429 billing_error`, который видит заблокированный разработчик. Напишите полную инструкцию, такую как URL или канал Slack. Если не установлено, шлюз отправляет только сообщение по умолчанию. Смотрите [Как работает принудительное ограничение](/docs/ru/claude-apps-gateway-spend-limits#how-enforcement-works). |

556| `audit_retention_days` | Нет | По умолчанию `365`. Старые строки `admin_audit` удаляются. |671| `audit_retention_days` | Нет | По умолчанию `365`. Более старые строки `admin_audit` удаляются. |

557| `spend_retention_months` | Нет | По умолчанию `13`. Строки счётчика `spend` старше этого удаляются. По умолчанию сохраняется полный год плюс текущий частичный месяц для отчётности год к году. |672| `spend_retention_months` | Нет | По умолчанию `13`. Строки счётчика `spend` старше этого удаляются. По умолчанию сохраняется полный год плюс текущий неполный месяц для отчётности год к году. |

558| `identity_retention_days` | Нет | По умолчанию `90`. TTL последнего просмотра для строк `principal_emails`, которые содержат электронную почту каждого разработчика, отображаемое имя и группы (PII). Намеренно короче, чем сохранение расходов, поэтому отозванная идентификация стареет, пока её анонимные счётчики расходов остаются. |673| `identity_retention_days` | Нет | По умолчанию `90`. TTL последнего просмотра для строк `principal_emails`, которые содержат электронную почту каждого разработчика, отображаемое имя и группы (PII). Намеренно короче, чем сохранение расходов, поэтому отозванная идентичность устаревает, пока её анонимные счётчики расходов остаются. |

559| `group_limit_mode` | Нет | `min` (по умолчанию) или `max`. Когда разработчик находится в нескольких группах с ограничениями, `min` применяет наиболее ограничивающее и `max` наименее. Используется как применением, так и `/effective`. |674| `group_limit_mode` | Нет | `min` (по умолчанию) или `max`. Когда разработчик находится в нескольких группах с ограничениями, `min` применяет наиболее ограничивающее, а `max` — наименее ограничивающее. Используется как при принудительном ограничении, так и при `/effective`. |

560 675 

561<h3 id="enforcement">676<h3 id="enforcement">

562 `enforcement`677 `enforcement`

563</h3>678</h3>

564 679 

565Блок `enforcement` управляет тем, как проверки лимитов расходов ведут себя, когда хранилище недоступно.680Блок `enforcement` контролирует поведение проверок ограничения расходов, когда хранилище недоступно.

566 681 

567| Поле | Обязательно | Описание |682| Поле | Обязательно | Описание |

568| - | - | - |683| - | - | - |

569| `fail_closed_on_error` | Нет | По умолчанию `false`. При сбое Postgres применение лимитов расходов пропускает запросы (fail-open), поэтому вывод продолжает работать. Установите `true`, чтобы вместо этого блокировать их (fail-closed): разработчики, превысившие лимит, блокируются, но так же и все остальные, если хранилище недоступно. Требует блока [`admin:`](#admin): применение расходов работает только, когда `admin` настроен, и gateway отказывается запускаться, если вы установите это `true` без него. |684| `fail_closed_on_error` | Нет | По умолчанию `false`. Принудительное ограничение расходов открывается при сбое Postgres, поэтому вывод остаётся доступным. Установите `true`, чтобы закрыться: разработчики, превысившие лимит, блокируются, но также блокируется всё остальное, если хранилище недоступно. Требует блока [`admin:`](#admin): принудительное ограничение расходов работает только при настройке `admin`, и шлюз отказывается запускаться, если вы установите это `true` без него. |

570 685 

571<h3 id="pricing">686<h3 id="pricing">

572 `pricing`687 `pricing`


574 689 

575Блок `pricing` сообщает счётчику расходов, что нужно взимать вместо цены USD по прайс-листу, поэтому ограничения и [`/effective`](/docs/ru/claude-apps-gateway-spend-limits#%2Feffective) отражают ваши договорные ставки. Суммы остаются в USD и остаются оценкой, а не счётом. Два предварительных условия:690Блок `pricing` сообщает счётчику расходов, что нужно взимать вместо цены USD по прайс-листу, поэтому ограничения и [`/effective`](/docs/ru/claude-apps-gateway-spend-limits#%2Feffective) отражают ваши договорные ставки. Суммы остаются в USD и остаются оценкой, а не счётом. Два предварительных условия:

576 691 

577* Claude Code v2.1.227 или позже на сервере gateway. Более ранние версии отклоняют неизвестный ключ при загрузке.692* Claude Code v2.1.227 или позже на сервере шлюза. Более ранние версии отклоняют неизвестный ключ при загрузке.

578* Блок [`admin:`](#admin) или, в v2.1.268 или позже, блок [`managed:`](#managed) с по крайней мере одной политикой. Gateway отказывается запускаться с установленным `pricing` и без одного из этих блоков, потому что ничто не будет его читать.693* Блок [`admin:`](#admin) или, в v2.1.268 или позже, блок [`managed:`](#managed) с хотя бы одной политикой. Шлюз отказывается запускаться с установленным `pricing` и без одного из этих блоков, потому что ничто не будет его читать.

579 694 

580```yaml theme={null}695```yaml theme={null}

581pricing:696pricing:


591 706 

592| Поле | Обязательно | Описание |707| Поле | Обязательно | Описание |

593| - | - | - |708| - | - | - |

594| `multiplier` | Нет | По умолчанию `1`. Счётчик умножает каждую измеренную сумму на это, будь то по прайс-листу или переопределённая, поэтому `0.85` выставляет счёт на 85% цены. Должно быть больше 0 и не более 10, и значение выше 1 — это [повышение цены](#mark-prices-up). |709| `multiplier` | Нет | По умолчанию `1`. Счётчик умножает каждую измеренную сумму на это значение, независимо от того, указана ли цена по прайс-листу или переопределена, поэтому `0.85` выставляет счёт на 85% цены. Должно быть больше 0 и не более 10, и значение выше 1 — это [надбавка](#mark-prices-up). |

595| `overrides` | Нет | Строки `{upstream, model, input, output, cache_read, cache_write}` в USD за миллион токенов. Все четыре ставки обязательны. Каждая должна быть больше 0 и не более 10000. |710| `overrides` | Нет | Строки `{upstream, model, input, output, cache_read, cache_write}` в USD за миллион токенов. Все четыре ставки обязательны. Каждая должна быть больше 0 и не более 10000. |

596 711 

597Как счётчик соответствует строке переопределения:712Как счётчик сопоставляет строку переопределения:

598 713 

599* Строка заменяет цену по прайс-листу для запросов, которые `upstream`, [`upstreams[].name`](#upstreams), обслуживает для `model`. Это включает более высокую ставку [быстрого режима](/docs/ru/fast-mode#understand-the-cost-tradeoff), поэтому запросы быстрого и стандартного режимов измеряются по одним и тем же четырём ставкам.714* Строка заменяет цену по прайс-листу для запросов, которые `upstream`, [`upstreams[].name`](#upstreams), обслуживает для `model`. Это включает более высокую ставку [быстрого режима](/docs/ru/fast-mode#understand-the-cost-tradeoff), поэтому запросы быстрого и стандартного режимов измеряются с одинаковыми четырьмя ставками.

600* Встроенный ID, такой как `claude-sonnet-4-6`, соответствующий [`models[].id`](#models), охватывает каждую датированную форму, региональную форму Amazon Bedrock или форму Google Cloud Agent Platform, которую счётчик оценивает как эту модель. Любая другая строка, такая как псевдоним или ARN профиля вывода, соответствует ID, который отправил клиент, или строке, отправленной upstream, без учёта регистра.715* Встроенный ID, такой как `claude-sonnet-4-6`, сопоставляемый как [`models[].id`](#models), охватывает каждую датированную форму, региональную форму Amazon Bedrock или форму Google Cloud's Agent Platform, которую счётчик оценивает как эту модель. Любая другая строка, такая как псевдоним или ARN профиля вывода, сопоставляется с ID, который отправил клиент, или строкой, отправленной вверх по потоку, без учёта регистра.

601* Где строки перекрываются, счётчик выбирает наиболее специфичную строку, а не первую строку: строку, чей `model` — это точная строка модели, отправленная upstream, затем строку, соответствующую точному ID, который отправил клиент, затем строку, называющую встроенную модель.716* Где строки перекрываются, счётчик выбирает наиболее специфичную строку, а не первую: строку, чей `model` — это точная строка модели, отправленная вверх по потоку, затем строку, соответствующую точному ID, отправленному клиентом, затем строку, называющую встроенную модель.

602* Неизвестное имя upstream приводит к сбою при загрузке, как и две строки для одного upstream, которые называют одну и ту же модель, включая два написания одной встроенной модели. Gateway предупреждает при загрузке о строке, которую ни одна запрашиваемая модель не может использовать.717* Неизвестное имя upstream вызывает сбой при загрузке, как и две строки для одного upstream, которые называют одну и ту же модель, включая два написания одной встроенной модели. Шлюз предупреждает при загрузке о строке, которую не может использовать ни одна запрашиваемая модель.

603* Запросы веб-поиска остаются по цене \$0.01 по прайс-листу; множитель всё ещё применяется к ним.718* Запросы веб-поиска остаются на цене по прайс-листу \$0.01; множитель всё ещё применяется к ним.

604 719 

605Для ставок по регионам дайте каждому региону свой именованный upstream и одну строку на upstream.720Для ставок по регионам дайте каждому региону свой именованный upstream и одну строку на upstream.

606 721 

607<h4 id="mark-prices-up">722<h4 id="mark-prices-up">

608 Повышение цены723 Надбавка к ценам

609</h4>724</h4>

610 725 

611С v2.1.271 или позже на сервере gateway вы можете установить `multiplier` выше 1, до 10, чтобы взимать больше, чем взимает поставщик, например внутреннюю ставку возмещения расходов. Этот пример взимает каждый запрос на 120% цены:726С v2.1.271 или позже на сервере шлюза вы можете установить `multiplier` выше 1, до 10, чтобы взимать больше, чем взимает поставщик, например внутреннюю ставку возмещения. Этот пример взимает каждый запрос на 120% цены:

612 727 

613```yaml theme={null}728```yaml theme={null}

614pricing:729pricing:

615 multiplier: 1.2730 multiplier: 1.2

616```731```

617 732 

618С блоком [`admin:`](#admin) повышение также применяется к лимитам расходов. Счётчик считает 120% цены, поэтому разработчики достигают своих ограничений быстрее. Gateway регистрирует предупреждение при загрузке, которое говорит об этом.733С блоком [`admin:`](#admin) надбавка также применяется к ограничениям расходов. Счётчик считает 120% цены, поэтому разработчики достигают своих ограничений быстрее. Шлюз регистрирует предупреждение при загрузке, которое это говорит.

619 734 

620Множитель не изменяет то, что взимает поставщик upstream за запросы.735Множитель не изменяет то, что взимает поставщик upstream за запросы.

621 736 

622Если gateway также [отправляет ставки подписанным клиентам](#send-the-rates-to-signed-in-clients), разработчикам нужен Claude Code v2.1.271 или позже, чтобы видеть повышение. Более ранние клиенты игнорируют `multiplier` выше 1 и показывают затраты без него.737Если шлюз также [отправляет ставки подписанным клиентам](#send-the-rates-to-signed-in-clients), разработчикам нужен Claude Code v2.1.271 или позже, чтобы увидеть надбавку. Более ранние клиенты игнорируют `multiplier` выше 1 и показывают затраты без него.

623 738 

624Сервер gateway ранее v2.1.271 отказывается запускаться, если вы установите `multiplier` выше 1.739Сервер шлюза ранее v2.1.271 отказывается запускаться, если вы установите `multiplier` выше 1.

625 740 

626<h4 id="send-the-rates-to-signed-in-clients">741<h4 id="send-the-rates-to-signed-in-clients">

627 Отправка ставок подписанным клиентам742 Отправка ставок подписанным клиентам

628</h4>743</h4>

629 744 

630С v2.1.268 или позже на сервере gateway, gateway также помещает ставки из `pricing` в политики [`managed`](#managed), которые он обслуживает, как управляемый параметр [`modelPricing`](/docs/ru/settings-reference#modelpricing). Разработчики, соответствующие политике, затем видят ставки `pricing` для первого upstream, который обслуживает каждый ID модели в `/usage`, строке состояния и OpenTelemetry. Разработчик, который не соответствует ни одной политике, не получает управляемые параметры, поэтому его цифры остаются по цене по прайс-листу. Клиенты применяют параметр в Claude Code v2.1.242 или позже.745С v2.1.268 или позже на сервере шлюза шлюз также помещает ставки из `pricing` в политики [`managed`](#managed), которые он обслуживает, как управляемую настройку [`modelPricing`](/docs/ru/settings-reference#modelpricing). Разработчики, соответствующие политике, затем видят ставки `pricing` для первого upstream, который обслуживает каждый ID модели в `/usage`, строке состояния и OpenTelemetry. Разработчик, который не соответствует ни одной политике, не получает управляемые настройки, поэтому его цифры остаются по цене по прайс-листу. Клиенты применяют настройку в Claude Code v2.1.242 или позже.

631 746 

632* Что добавляет gateway: если блок `cli` политики уже не устанавливает `modelPricing`, gateway добавляет `multiplier` и, для каждого ID модели, который клиент может запросить, строку переопределения первого upstream, который обслуживает этот ID. Ставка, которую только failover upstream взимает, остаётся на gateway.747* Что добавляет шлюз: если блок `cli` политики уже не устанавливает `modelPricing`, шлюз добавляет `multiplier` и, для каждого ID модели, который может запросить клиент, строку переопределения первого upstream, который обслуживает этот ID. Ставка, которую взимает только failover upstream, остаётся на шлюзе.

633* Исключить одну политику: установите `modelPricing` на `{}` в блоке `cli` этой политики, и её разработчики остаются по цене по прайс-листу.748* Исключить одну политику: установите `modelPricing` на `{}` в блоке `cli` этой политики, и её разработчики остаются по цене по прайс-листу.

634* Сохранить собственные ставки политики: политика, чей блок `cli` устанавливает `modelPricing` со своим собственным `multiplier` или `overrides`, сохраняет этот `modelPricing` целиком, и gateway не добавляет свои ставки к нему.749* Сохранить собственные ставки политики: политика, чей блок `cli` устанавливает `modelPricing` с собственным `multiplier` или `overrides`, сохраняет этот `modelPricing` целиком, и шлюз не добавляет к нему свои ставки.

635 750 

636<h3 id="models">751<h3 id="models">

637 `models`752 `models`

638</h3>753</h3>

639 754 

640Блок `models` — это опциональный кураторский список моделей администратором, обслуживаемый в `/v1/models` и используемый для перевода ID моделей для каждого upstream. Требуется для регионов Bedrock, не входящих в США, ARN выделенной пропускной способности Amazon Bedrock и имён развёртываний Microsoft Foundry.755Блок `models` — это опциональный список моделей, курируемый администратором, обслуживаемый в `/v1/models` и используемый для перевода ID моделей на upstream. Это требуется для регионов Amazon Bedrock, не входящих в США, ARN с выделенной пропускной способностью Amazon Bedrock и имён развёртывания Microsoft Foundry.

641 756 

642```yaml theme={null}757```yaml theme={null}

643auto_include_builtin_models: true # false: выставляйте только список ниже758auto_include_builtin_models: true # false: expose only the list below

644models:759models:

645 - id: claude-opus-4-8760 - id: claude-opus-4-8

646 label: Claude Opus 4.8761 label: Claude Opus 4.8

647 # description: опциональный текст, показываемый в клиентах, которые его выставляют762 # description: optional text shown in clients that surface it

648 upstream_model:763 upstream_model:

649 anthropic: claude-opus-4-8764 anthropic: claude-opus-4-8

650 bedrock: us.anthropic.claude-opus-4-8 # или ARN профиля вывода765 bedrock: us.anthropic.claude-opus-4-8 # or an inference-profile ARN

651 foundry: your-opus-deployment-name766 foundry: your-opus-deployment-name

652```767```

653 768 

654Каждый ключ под `upstream_model` должен соответствовать `name` настроенного upstream, который по умолчанию является именем поставщика. Ключ, который не соответствует ни одному upstream, приводит к сбою при загрузке, поэтому опустите строки для поставщиков, которых вы не используете.769Каждый ключ под `upstream_model` должен соответствовать `name` настроенного upstream, который по умолчанию является именем поставщика. Ключ, который не соответствует ни одному upstream, вызывает сбой при загрузке, поэтому опустите строки для поставщиков, которых вы не используете.

655 770 

656<h3 id="managed">771<h3 id="managed">

657 `managed`772 `managed`

658</h3>773</h3>

659 774 

660Блок `managed` определяет политики доступа на основе ролей, ключённые на группы IdP или домен электронной почты. Политики оцениваются по порядку; первое совпадение выбирается, затем объединяется на базу `match: {}` catch-all. Они обслуживаются для каждого пользователя в `GET /managed/settings` с кешированием ETag/304.775Блок `managed` определяет политики доступа на основе ролей, ключевые по группам IdP или домену электронной почты. Политики оцениваются по порядку; выбирается первое совпадение, затем объединяется с базовым `match: {}` catch-all. Они обслуживаются для каждого пользователя в `GET /managed/settings` с кешированием ETag/304.

661 776 

662```yaml theme={null}777```yaml theme={null}

663managed:778managed:

664 policies:779 policies:

665 # Конкретные группы в первую очередь.780 # Specific groups first.

666 - match: { groups: [eng-contractors] }781 - match: { groups: [eng-contractors] }

667 cli:782 cli:

668 availableModels: [claude-sonnet-4-6]783 availableModels: [claude-sonnet-4-6]

669 permissions: { deny: ["WebFetch", "WebSearch"] }784 permissions: { deny: ["WebFetch", "WebSearch"] }

670 # Catch-all по умолчанию в последнюю очередь: соответствует каждому аутентифицированному пользователю.785 # Default catch-all last: matches everyone who authenticated.

671 - match: {}786 - match: {}

672 cli:787 cli:

673 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]788 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]

674```789```

675 790 

676Catch-all `match: {}`, обычно указываемый в последнюю очередь, рассматривается как базовый слой. Каждая другая политика наследует любой ключ, который она не устанавливает, из catch-all, поэтому записи для каждой роли должны только перечислять то, что отличается от организационного значения по умолчанию. Правила слияния зависят от типа ключа:791Catch-all `match: {}`, обычно указываемый последним, рассматривается как базовый слой. Каждая другая политика наследует любой ключ, который она не устанавливает, из catch-all, поэтому записи для каждой роли должны только перечислять то, что отличается от организационного значения по умолчанию. Правила объединения зависят от типа ключа:

677 792 

678* **Списки разрешений**: `availableModels` и `permissions.allow`. Список конкретной политики полностью заменяет базовый.793* **Списки разрешений**: `availableModels` и `permissions.allow`. Список конкретной политики полностью заменяет базовый.

679* **Списки запретов и массивы hooks**: `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces` и каждый массив типа события `hooks`. Они берут объединение базового и политики, поэтому организационный запрет или hook аудита не может быть случайно удалён переопределением для каждой роли.794* **Списки запретов и массивы hooks**: `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces` и каждый массив типа события `hooks`. Они берут объединение базового и политики, поэтому организационный запрет или hook аудита не может быть случайно удалён переопределением для каждой роли.

680* **Ключи типа Record**: `env`, `modelOverrides` и `skillOverrides`. Эти поверхностные слияния, поэтому блок `env` для каждой роли переопределяет ключи, которые он устанавливает, и наследует остальное из базового.795* **Ключи типа Record**: `env`, `modelOverrides` и `skillOverrides`. Они выполняют поверхностное объединение, поэтому блок `env` для каждой роли переопределяет ключи, которые он устанавливает, и наследует остальное из базового.

681 796 

682`availableModels` также применяется на стороне сервера в `/v1/messages`, поэтому запрещённая модель возвращает `400` независимо от того, что отправляет клиент.797`availableModels` также применяется на стороне сервера в `/v1/messages`, поэтому запрещённая модель возвращает `400` независимо от того, что отправляет клиент.

683 798 

684Gateway проверяет значение `model` перед тем, как передать запрос, поэтому неправильное значение никогда не достигает upstream. Он отклоняет запрос с `400` в двух случаях:799Шлюз проверяет само значение `model` перед тем, как передать запрос upstream, поэтому неправильное значение никогда не достигает upstream. Он отклоняет запрос с `400` в двух случаях:

685 800 

686* Когда значение отсутствует или пусто, gateway отклоняет запрос с сообщением `model is required`. Эта проверка требует gateway, работающего на Claude Code v2.1.228 или позже.801* Когда значение отсутствует или пусто, шлюз отклоняет запрос с сообщением `model is required`. Эта проверка требует шлюза, работающего на Claude Code v2.1.228 или позже.

687* Когда значение присутствует, но не является строкой, gateway отклоняет запрос с сообщением `model must be a string`. Требует gateway, работающего на Claude Code v2.1.221 или позже.802* Когда значение присутствует, но не является строкой, шлюз отклоняет запрос с сообщением `model must be a string`. Требует шлюза, работающего на Claude Code v2.1.221 или позже.

688 803 

689| Matcher | Поведение |804| Сопоставление | Поведение |

690| - | - |805| - | - |

691| `match: {}` | Соответствует каждому аутентифицированному пользователю. Начните с одного из них и добавьте политики, ограниченные группой, выше позже. |806| `match: {}` | Соответствует каждому аутентифицированному пользователю. Начните с одного из них и добавьте политики для каждой группы выше позже. |

692| `match: { groups: [a, b] }` | Соответствует, если утверждение `groups` JWT содержит любую из перечисленных групп. Чувствительно к регистру: группы должны соответствовать точному регистру IdP. |807| `match: { groups: [a, b] }` | Соответствует, если claim `groups` JWT содержит любую из перечисленных групп. С учётом регистра: группы должны соответствовать точному регистру IdP. |

693| `match: { email_domain: example.com }` | Соответствует части после последнего `@` в утверждении `email` JWT, без учёта регистра. Принимает один домен на политику. |808| `match: { email_domain: example.com }` | Соответствует части после последнего `@` в claim `email` JWT, без учёта регистра. Принимает один домен на политику. |

694| `match: { groups: [a], email_domain: example.com }` | Оба условия должны соответствовать |809| `match: { groups: [a], email_domain: example.com }` | Оба условия должны совпадать |

695 810 

696Аутентифицированный пользователь, который не соответствует ни одной политике, получает значения по умолчанию gateway, что означает каждую модель в каталоге и никаких управляемых параметров. Добавьте catch-all `match: {}` в последнюю очередь, если вы хотите гарантированную политику по умолчанию.811Аутентифицированный пользователь, который не соответствует ни одной политике, получает значения по умолчанию шлюза, что означает каждую модель в каталоге и никаких управляемых настроек. Добавьте catch-all `match: {}` последним, если вы хотите гарантированную политику по умолчанию.

697 812 

698<Note>813<Note>

699 Gateway не ведёт собственный каталог пользователей. Он авторизует каждый запрос из токена IdP пользователя, читая членство в группе из утверждения `groups` токена и оценивая политики против него. Нет реестра для перечисления и нет учётных записей для предварительного создания, и поэтому нет конечной точки SCIM, потому что нечего синхронизировать в SCIM.814 Шлюз не ведёт собственный каталог пользователей. Он авторизует каждый запрос из токена IdP пользователя, читая членство в группе из claim `groups` токена и оценивая политики против него. Нет реестра для перечисления и нет учётных записей для предварительного создания, и поэтому нет конечной точки SCIM, потому что нечего синхронизировать в SCIM.

700 815 

701 Запустите управление жизненным циклом пользователя и группы в источнике истины, который является собственной подготовкой SCIM вашего IdP или выделенной платформой управления идентификацией. Членство и отзыв, управляемые там, автоматически поступают в gateway через токен. Если вы хотите подготовку SCIM самих учётных записей Claude, это возможность [Claude for Enterprise](/docs/ru/admin-setup).816 Запустите управление жизненным циклом пользователя и группы в источнике истины, который является собственной подготовкой SCIM вашего IdP или выделенной платформой управления идентификацией. Членство и отзыв, управляемые там, автоматически поступают в шлюз через токен. Если вы хотите подготовку SCIM самих учётных записей Claude, это возможность [Claude for Enterprise](/docs/ru/admin-setup).

702 817 

703 Применяются два часов распространения:818 Применяются два часов распространения:

704 819 

705 * **Содержимое политики**: редактирование политики и переразвёртывание достигает подключённых клиентов при их следующем опросе управляемых параметров, в течение часа, кроме [изменений, которые применяются только при следующем запуске](/docs/ru/server-managed-settings#fetch-and-caching-behavior)820 * **Содержание политики**: редактирование политики и переразвёртывание достигает подключённых клиентов при их следующем опросе управляемых настроек, в течение часа, кроме [изменений, которые применяются только при следующем запуске](/docs/ru/server-managed-settings#fetch-and-caching-behavior)

706 * **Членство в группе**: изменение членства пользователя в группе изменяет, какая политика соответствует им. Это вступает в силу при следующем переминте сеанса, означая следующее молчаливое обновление, ограниченное `session.ttl_hours`.821 * **Членство в группе**: изменение членства пользователя в группе изменяет, какая политика ему соответствует. Это вступает в силу при следующем переизготовлении сеанса, то есть при следующем молчаливом обновлении, ограниченном `session.ttl_hours`.

707</Note>822</Note>

708 823 

709<h4 id="matcher-values-that-stop-the-gateway-at-boot">824<h4 id="matcher-values-that-stop-the-gateway-at-boot">

710 Значения matcher, которые останавливают gateway при загрузке825 Значения сопоставления, которые останавливают шлюз при загрузке

711</h4>826</h4>

712 827 

713При загрузке gateway проверяет блок `match` каждой политики и список [`admin_groups`](#admin). Любое из этих значений останавливает gateway с ошибкой, которая называет поле:828При загрузке шлюз проверяет блок `match` каждой политики и список [`admin_groups`](#admin). Любое из этих значений останавливает шлюз с ошибкой, которая называет поле:

714 829 

715* Пустой список `groups`830* Пустой список `groups`

716* Пустая запись в `groups` или в `admin_groups`831* Пустая запись в `groups` или в `admin_groups`

717* Пустой `email_domain`832* Пустой `email_domain`

718* `email_domain`, который содержит `@`, пробел или запятую. Gateway обрезает значение и удаляет один ведущий `@` перед этой проверкой. Напишите один голый домен, такой как `example.com`.833* `email_domain`, содержащий `@`, пробел или запятую. Шлюз обрезает значение и удаляет один ведущий `@` перед этой проверкой. Напишите один простой домен, такой как `example.com`.

719 834 

720До v2.1.232 gateway запускался с этими значениями. Каждое значение имело этот эффект:835До v2.1.232 шлюз запускался с этими значениями. Каждое значение имело этот эффект:

721 836 

722* Пустой `email_domain`: gateway пропускал проверку домена, поэтому политика с пустым `email_domain` и без списка `groups` соответствовала каждому аутентифицированному пользователю837* Пустой `email_domain`: шлюз пропустил проверку домена, поэтому политика с пустым `email_domain` и без списка `groups` соответствовала каждому аутентифицированному пользователю

723* Пустой список `groups`: политика не соответствовала никому838* Пустой список `groups`: политика не соответствовала никому

724* `email_domain`, содержащий `@`, пробел или запятую: политика не соответствовала никому839* `email_domain`, содержащий `@`, пробел или запятую: политика не соответствовала никому

725* Пустая запись в `groups` или в `admin_groups`: запись соответствовала пользователю только, когда утверждение `groups` IdP этого пользователя также содержало пустую запись. В `admin_groups` это совпадение предоставляло доступ администратора. Если ваш список `admin_groups` никогда не содержал пустую запись, никто не получал доступ администратора таким образом.840* Пустая запись в `groups` или в `admin_groups`: запись соответствовала пользователю только когда claim `groups` IdP этого пользователя также содержал пустую запись. В `admin_groups` это совпадение предоставляло доступ администратора. Если ваш список `admin_groups` никогда не содержал пустую запись, никто не получал доступ администратора таким образом.

726 841 

727<h4 id="what-goes-in-cli">842<h4 id="what-goes-in-cli">

728 Что входит в `cli`843 Что входит в `cli`

729</h4>844</h4>

730 845 

731Каждое значение `cli` — это полный документ Claude Code `managed-settings.json`, та же схема, которую вы развернули бы через MDM или `/etc/claude-code/managed-settings.json`, выраженная здесь как YAML. CLI применяет доставленный документ на управляемом уровне, выше параметров пользователя и проекта, вместо управляемых параметров сервера. Он поэтому игнорирует параметры [ограниченные источниками политики на уровне ОС](/docs/ru/server-managed-settings#current-limitations), такие как `policyHelper` и `wslInheritsWindowsSettings`.846Каждое значение `cli` — это полный документ Claude Code `managed-settings.json`, та же схема, которую вы развернули бы через MDM или `/etc/claude-code/managed-settings.json`, выраженная здесь как YAML. CLI применяет доставленный документ на управляемом уровне, выше пользовательских и проектных настроек, вместо управляемых на сервере настроек. Поэтому он игнорирует настройки [ограниченные источниками политики на уровне ОС](/docs/ru/server-managed-settings#current-limitations), такие как `policyHelper` и `wslInheritsWindowsSettings`.

732 847 

733Gateway проверяет каждый документ по схеме параметров CLI при загрузке, поэтому нераспознанный ключ верхнего уровня приводит к сбою загрузки с ошибкой, называющей каждый нарушающий ключ. Намеренно открытые части схемы всё ещё принимают произвольные значения, потому что более новые клиенты могут распознавать записи, которые схема gateway не распознаёт. Эти открытые ключи — `env`, `pluginConfigs` и ключи, вложенные под `permissions`.848Шлюз проверяет каждый документ против схемы настроек CLI при загрузке, поэтому неизвестный ключ верхнего уровня вызывает сбой при загрузке с ошибкой, называющей каждый нарушающий ключ. Намеренно открытые части схемы всё ещё принимают произвольные значения, потому что более новые клиенты могут распознавать записи, которые схема шлюза не распознаёт. Эти открытые ключи включают `env`, `pluginConfigs` и ключи, вложенные под `permissions`.

734 849 

735Поскольку проверка использует схему, поставляемую с установленной версией gateway, размещение ключа параметров верхнего уровня, введённого более новым выпуском Claude Code, в управляемую конфигурацию требует сначала обновления gateway. Дымовой тест новой политики на одном клиенте перед развёртыванием.850Поскольку проверка использует схему, поставляемую с установленной версией шлюза, помещение ключа настроек верхнего уровня, введённого более новым выпуском Claude Code, в управляемую конфигурацию требует сначала обновления шлюза. Протестируйте новую политику на одном клиенте перед развёртыванием.

736 851 

737Полный справочник ключей находится в [Параметры Claude Code](/docs/ru/settings-reference#all-settings). Ключи, которые операторы достают в первую очередь:852Полная справка по ключам находится в [Claude Code settings](/docs/ru/settings-reference#all-settings). Ключи, которые операторы чаще всего используют в первую очередь:

738 853 

739```yaml theme={null}854```yaml theme={null}

740managed:855managed:

741 policies:856 policies:

742 - match: {}857 - match: {}

743 cli:858 cli:

744 # Доступ к модели (также применяется на стороне сервера в /v1/messages)859 # Model access (also enforced server-side at /v1/messages)

745 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]860 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]

746 861 

747 # Политика разрешений862 # Permission policy

748 permissions:863 permissions:

749 deny:864 deny:

750 - "WebFetch"865 - "WebFetch"

751 - "Read(./.env)"866 - "Read(./.env)"

752 - "Read(./secrets/**)"867 - "Read(./secrets/**)"

753 disableBypassPermissionsMode: disable # блокирует --dangerously-skip-permissions868 disableBypassPermissionsMode: disable # blocks --dangerously-skip-permissions

754 allowManagedPermissionRulesOnly: true # игнорирует правила разрешений пользователя/проекта869 allowManagedPermissionRulesOnly: true # ignore user/project permission rules

755 870 

756 # Окружение, отправляемое в процесс CLI. DISABLE_UPDATES блокирует871 # Environment pushed into the CLI process. DISABLE_UPDATES blocks

757 # фоновые и ручные обновления; DISABLE_AUTOUPDATER останавливает только872 # background and manual updates; DISABLE_AUTOUPDATER stops only

758 # фоновые обновления.873 # background updates.

759 env:874 env:

760 DISABLE_UPDATES: "1" # закрепите версии через вашу собственную дистрибуцию875 DISABLE_UPDATES: "1" # pin versions via your own distribution

761 876 

762 # Hooks на уровне организации. Команды hook запускаются на машинах разработчиков, не на877 # Org-wide hooks. Hook commands run on developer machines, not the

763 # gateway, поэтому путь должен существовать на каждой ОС клиента в политике.878 # gateway, so the path must exist on every client OS in the policy.

764 hooks:879 hooks:

765 PostToolUse:880 PostToolUse:

766 - matcher: "Edit|Write"881 - matcher: "Edit|Write"


770 885 

771| Ключ | Применяется | Эффект |886| Ключ | Применяется | Эффект |

772| - | - | - |887| - | - | - |

773| `availableModels` | Gateway + CLI | Список разрешений моделей. Также проверяется в `/v1/messages`, поэтому исправленный клиент не может его обойти. |888| `availableModels` | Шлюз + CLI | Список разрешённых моделей. Также проверяется в `/v1/messages`, поэтому исправленный клиент не может его обойти. |

774| `permissions.allow` / `.deny` | CLI | Правила инструментов и команд. См. [Разрешения](/docs/ru/permissions). |889| `permissions.allow` / `.deny` | CLI | Правила инструментов и команд. Смотрите [Permissions](/docs/ru/permissions). |

775| `permissions.disableBypassPermissionsMode` | CLI | Установите на `disable` для блокировки [`bypassPermissions`](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode), режима, который пропускает подсказки разрешений, и флага `--dangerously-skip-permissions` |890| `permissions.disableBypassPermissionsMode` | CLI | Установите на `disable`, чтобы заблокировать [`bypassPermissions`](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode), режим, который пропускает подсказки разрешений, и флаг `--dangerously-skip-permissions` |

776| `allowManagedPermissionRulesOnly` | CLI | Когда `true`, управляемые параметры становятся единственным источником параметров правил разрешений. Запись [`allowManagedPermissionRulesOnly`](/docs/ru/settings-reference#allowmanagedpermissionrulesonly) перечисляет каждый источник, который Claude Code затем игнорирует. |891| `allowManagedPermissionRulesOnly` | CLI | Когда `true`, управляемые настройки становятся единственным источником настроек правил разрешений. Запись [`allowManagedPermissionRulesOnly`](/docs/ru/settings-reference#allowmanagedpermissionrulesonly) перечисляет каждый источник, который Claude Code затем игнорирует. |

777| `env` | CLI | Переменные окружения, объединённые в процесс CLI. Используйте для телеметрии, автообновления и переопределений имён моделей. |892| `env` | CLI | Переменные окружения объединены в процесс CLI. Используйте для телеметрии, автоматического обновления и переопределения имён моделей. |

778| `hooks` | CLI | Org-wide [hooks](/docs/ru/hooks) |893| `hooks` | CLI | Организационные [hooks](/docs/ru/hooks) |

779| `managedMcpServers` | CLI | Удалённые MCP серверы [предоставленные каждому соответствующему разработчику](/docs/ru/managed-mcp#provide-servers-through-managed-settings) наряду с серверами, которые они добавляют сами, `http` и `sse` только. См. [MCP серверы в политике](#mcp-servers-in-a-policy). Требует Claude Code v2.1.259 или позже на сервере gateway и на клиентах. Более ранние клиенты игнорируют ключ. |894| `managedMcpServers` | CLI | Удалённые MCP серверы [предоставляемые каждому соответствующему разработчику](/docs/ru/managed-mcp#provide-servers-through-managed-settings) наряду с серверами, которые они добавляют сами, `http` и `sse` только. Смотрите [MCP серверы в политике](#mcp-servers-in-a-policy). Требует Claude Code v2.1.259 или позже на сервере шлюза и на клиентах. Более ранние клиенты игнорируют ключ. |

780 895 

781Поскольку эти параметры поступают по сети, CLI показывает каждому разработчику диалог одобрения безопасности перед применением параметров, перечисленных ниже:896Поскольку эти настройки поступают по сети, CLI показывает каждому разработчику диалог одобрения безопасности перед применением настроек, указанных ниже:

782 897 

783* `hooks`898* `hooks`

784* переменные `env`, которые требуют одобрения разработчика, такие как переменные прокси и базового URL899* Переменные `env`, требующие одобрения разработчика, такие как переменные прокси и базового URL

785* параметры выполнения оболочки, такие как `apiKeyHelper` и `statusLine`900* Настройки выполнения оболочки, такие как `apiKeyHelper` и `statusLine`

786* параметры двоичного файла sandbox `sandbox.bwrapPath`, `sandbox.socatPath` и `sandbox.ripgrep`901* Настройки двоичного файла песочницы `sandbox.bwrapPath`, `sandbox.socatPath` и `sandbox.ripgrep`

787* Параметры Sandbox, которые перехватывают трафик, внедряют учётные данные или ослабляют изоляцию, такие как `sandbox.network.tlsTerminate` и параметры порта прокси. [Диалоги одобрения безопасности](/docs/ru/server-managed-settings#security-approval-dialogs) перечисляют их все.902* Настройки песочницы, которые перехватывают трафик, внедряют учётные данные или ослабляют изоляцию, такие как `sandbox.network.tlsTerminate` и настройки портов прокси. [Диалоги одобрения безопасности](/docs/ru/server-managed-settings#security-approval-dialogs) перечисляют их все.

788 903 

789[Память одобрения](/docs/ru/server-managed-settings#approval-memory) охватывает, как долго одобрение длится и когда диалог появляется снова.904[Память одобрения](/docs/ru/server-managed-settings#approval-memory) охватывает, как долго длится одобрение и когда диалог появляется снова.

790 905 

791Claude Code применяет некоторые доставленные переменные `env` без показа разработчику диалога одобрения безопасности, такие как параметры выбора модели и числовые ограничения. Другие доставленные переменные могут требовать одобрения разработчика перед вступлением в силу; непустое значение прокси, базового URL или `OTEL_EXPORTER_OTLP_ENDPOINT` всегда это делает. Когда доставленная переменная нуждается в одобрении, диалог называет её.906Claude Code применяет некоторые доставленные переменные `env` без показа разработчику диалога одобрения безопасности, такие как настройки выбора модели и числовые ограничения. Другие доставленные переменные могут требовать одобрения разработчика перед вступлением в силу; непустое значение прокси, базового URL или `OTEL_EXPORTER_OTLP_ENDPOINT` всегда требует. Когда доставленная переменная требует одобрения, диалог называет её.

792 907 

793[Переменные окружения и диалог одобрения](/docs/ru/server-managed-settings#environment-variables-and-the-approval-dialog) имеет детали, включая четыре переключателя конфиденциальности, чьё доставленное значение решает, нуждаются ли они в одобрении. До v2.1.218 Claude Code применял меньше переменных без запроса разработчика, поэтому больше доставленных переменных запускали диалог.908[Переменные окружения и диалог одобрения](/docs/ru/server-managed-settings#environment-variables-and-the-approval-dialog) содержит детали, включая четыре переключателя конфиденциальности, чьё доставленное значение решает, требуют ли они одобрения. До v2.1.218 Claude Code применял меньше переменных без запроса разработчика, поэтому больше доставленных переменных вызывали диалог.

794 909 

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

796 911 

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

798 913 

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

800 915 

801Ключ `cli` был назван `settings` в более ранних выпусках. Это написание всё ещё принимается как псевдоним, но новые развёртывания должны использовать `cli`.916Ключ `cli` был назван `settings` в более ранних выпусках. Это написание всё ещё принимается как псевдоним, но новые развёртывания должны использовать `cli`.

802 917 


804 MCP серверы в политике919 MCP серверы в политике

805</h4>920</h4>

806 921 

807Чтобы предоставить MCP серверы клиентам Claude Code, которым соответствует политика, установите [`managedMcpServers`](/docs/ru/managed-mcp#provide-servers-through-managed-settings) в блоке `cli` этой политики. Вам нужен Claude Code v2.1.259 или позже на сервере gateway и на клиентах.922Чтобы предоставить MCP серверы клиентам Claude Code, которым соответствует политика, установите [`managedMcpServers`](/docs/ru/managed-mcp#provide-servers-through-managed-settings) в блоке `cli` этой политики. Вам нужен Claude Code v2.1.259 или позже на сервере шлюза и на клиентах.

808 923 

809Gateway проверяет каждую запись при загрузке с [теми же правилами, которые Claude Code применяет на клиенте](/docs/ru/managed-mcp#what-an-entry-can-contain), и если запись не проходит проверку, gateway отказывается запускаться и называет запись.924Шлюз проверяет каждую запись при загрузке с [теми же правилами, которые Claude Code применяет на клиенте](/docs/ru/managed-mcp#what-an-entry-can-contain), и если запись не проходит проверку, шлюз отказывается запускаться и называет запись.

810 925 

811Если вы напишете ссылку `${VAR}` в `gateway.yaml`, gateway разрешает её из своего окружения при загрузке через [расширение секретов](#secret-expansion) перед тем, как запустить проверки записей, поэтому каждый соответствующий клиент получает буквальное значение и может его прочитать. [Руководство заголовка для предоставленных серверов](/docs/ru/managed-mcp#provide-servers-through-managed-settings) применяется к расширенному значению.926Если вы напишете ссылку `${VAR}` в `gateway.yaml`, шлюз разрешит её из своего окружения при загрузке через [расширение секретов](#secret-expansion) перед запуском проверок записей, поэтому каждый соответствующий клиент получает буквальное значение и может его прочитать. [Руководство по заголовкам для предоставленных серверов](/docs/ru/managed-mcp#provide-servers-through-managed-settings) применяется к расширенному значению.

812 927 

813Gateway отклоняет написание `.mcp.json` `mcpServers` в блоке `cli`, и его ошибка загрузки называет `managedMcpServers` как ключ для использования. До v2.1.259 gateway отклонял любое определение MCP сервера в блоке `cli`.928Шлюз отклоняет написание `.mcp.json` `mcpServers` в блоке `cli`, и его ошибка загрузки называет `managedMcpServers` как ключ для использования. До v2.1.259 шлюз отклонял любое определение MCP сервера в блоке `cli`.

814 929 

815<h4 id="claude-desktop-overlay">930<h4 id="claude-desktop-overlay">

816 Наложение Claude Desktop931 Наложение Claude Desktop

817</h4>932</h4>

818 933 

819Если ваша организация также развёртывает [Claude Desktop](/docs/ru/desktop), один и тот же gateway обслуживает обоих клиентов. Укажите `bootstrapUrl` в [управляемой конфигурации](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop на `<listen.public_url>/user/bootstrap`. Claude Desktop выводит издателя OAuth из этого URL, запускает ту же подпись входа с кодом устройства против этого gateway и получает свою конфигурацию из ответа.934Если ваша организация также развёртывает [Claude Desktop](/docs/ru/desktop), один и тот же шлюз обслуживает обоих клиентов. Укажите `bootstrapUrl` в [управляемой конфигурации](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop на `<listen.public_url>/user/bootstrap`. Claude Desktop выводит издателя OAuth из этого URL, запускает ту же подпись устройства против этого шлюза и получает свою конфигурацию из ответа.

820 935 

821<Note>936<Note>

822 Требует Claude Code v2.1.203 или позже на сервере gateway и явное согласие: `/user/bootstrap` возвращает 404, если только политика, соответствующая пользователю, не содержит ключ `desktop`. Пустого `desktop: {}` достаточно, чтобы политика дала такое согласие, а ключ `desktop` на базовом слое `match: {}` даёт согласие за каждую политику, которая его наследует. Журнал аудита записывает каждый запрос как `desktop_bootstrap.serve` или `desktop_bootstrap.denied`.937 Требует Claude Code v2.1.203 или позже на сервере шлюза и явное согласие: `/user/bootstrap` возвращает 404, если только политика, соответствующая пользователю, не содержит ключ `desktop`. Пустой `desktop: {}` согласие политики, и ключ `desktop` на базовом слое `match: {}` согласие каждой политики, которая его наследует. Журнал аудита записывает каждый запрос как `desktop_bootstrap.serve` или `desktop_bootstrap.denied`.

823</Note>938</Note>

824 939 

825Gateway выводит большую часть ответа из блока `cli` соответствующей политики и из конфигурации gateway верхнего уровня:940Шлюз выводит большую часть ответа из блока `cli` соответствующей политики и из конфигурации шлюза верхнего уровня:

826 941 

827* Список моделей из `availableModels`942* Список моделей из `availableModels`

828* Отключённые инструменты из записей `permissions.deny` с названием инструмента. Если вы установите `disabledBuiltinTools` в блоке `desktop` политики, gateway обслуживает объединение вашего значения и выведённого списка, поэтому вы можете отключить больше инструментов таким образом, но не можете повторно включить инструмент, который вы отключили через `permissions.deny`943* Отключённые инструменты из записей `permissions.deny` с простым названием инструмента. Если вы установите `disabledBuiltinTools` в блоке `desktop` политики, шлюз обслуживает объединение вашего значения и выведённого списка, поэтому вы можете отключить больше инструментов таким образом, но не можете повторно включить инструмент, который вы отключили через `permissions.deny`

829* Список разрешений исходящего трафика из `sandbox.network.allowedDomains`. Если вы установите `coworkEgressAllowedHosts` в блоке `desktop` политики, gateway использует это значение вместо выведённого списка944* Список разрешённых исходящих соединений из `sandbox.network.allowedDomains`. Если вы установите `coworkEgressAllowedHosts` в блоке `desktop` политики, шлюз использует это значение вместо выведённого списка

830* Конечная точка OTLP, которая указывает на сам gateway, и атрибуты идентификации подписанного пользователя. Gateway передаёт экспорты, которые он получает в этой конечной точке, вашим назначениям `forward_to`. Он включает конечную точку и атрибуты, когда вы устанавливаете оба [`telemetry.forward_to`](#telemetry) и `listen.public_url`.945* Конечная точка OTLP, которая указывает на сам шлюз, и атрибуты идентификации подписанного пользователя. Шлюз передаёт экспорты, которые он получает в этой конечной точке, вашим назначениям `forward_to`. Он включает конечную точку и атрибуты, когда вы устанавливаете оба [`telemetry.forward_to`](#telemetry) и `listen.public_url`.

831 946 

832 Claude Desktop экспортирует каждый сигнал с одной кодировкой: `http/protobuf`, или `http/json`, когда вы установите `OTEL_EXPORTER_OTLP_PROTOCOL` или один из его вариантов для каждого сигнала на `http/json` в `env` политики. До Claude Code v2.1.261 на сервере gateway ответ установил `http/json` независимо, поэтому сборщик, который принимает только protobuf, отклонил экспорты Claude Desktop947 Claude Desktop экспортирует каждый сигнал с одной кодировкой: `http/protobuf`, или `http/json`, когда вы устанавливаете `OTEL_EXPORTER_OTLP_PROTOCOL` или один из его вариантов для каждого сигнала на `http/json` в `env` политики. До Claude Code v2.1.261 на сервере шлюза ответ устанавливал `http/json` независимо, поэтому сборщик, который принимает только protobuf, отклонял экспорты Claude Desktop

833 948 

834Чтобы установить `disabledBuiltinTools`, `coworkEgressAllowedHosts` или собственный параметр `managedMcpServers` Claude Desktop в блоке `desktop` политики, вам нужен Claude Code v2.1.232 или позже на сервере gateway. `managedMcpServers` Claude Desktop принимает значение массива, а не объекта.949Чтобы установить `disabledBuiltinTools`, `coworkEgressAllowedHosts` или собственную настройку Claude Desktop `managedMcpServers` в блоке `desktop` политики, вам нужен Claude Code v2.1.232 или позже на сервере шлюза. `managedMcpServers` Claude Desktop принимает значение массива, а не объекта.

835 950 

836Gateway опускает ключи без эквивалента Claude Desktop, такие как `hooks` и ограниченные правила разрешений, такие как `Bash(npm *)`, из ответа bootstrap.951Шлюз опускает ключи без эквивалента Claude Desktop, такие как `hooks` и правила разрешений для каждой области, такие как `Bash(npm *)`, из ответа bootstrap.

837 952 

838Добавьте опциональный блок `desktop` рядом с `cli` для установки параметров Claude Desktop напрямую. Напишите параметры из [справочника управляемой конфигурации](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop как плоские имена ключей. Не включайте ключи, которые Claude Desktop читает только из MDM или локальных файлов, такие как `bootstrapUrl`; gateway отклоняет их при загрузке. До v2.1.232 gateway принимал фиксированный список из 11 ключей функциональных ворот, такие как `chatTabEnabled` и `disableAutoUpdates`, и отклонял каждый другой ключ при загрузке. До v2.1.227 gateway также отклонял `chatTabEnabled` и `chatAdvancedFileAnalysisEnabled` при загрузке.953Добавьте опциональный блок `desktop` рядом с `cli`, чтобы установить настройки Claude Desktop напрямую. Напишите настройки из [справочника управляемой конфигурации](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop как плоские имена ключей. Оставьте ключи, которые Claude Desktop читает только из MDM или локальных файлов, такие как `bootstrapUrl`; шлюз отклоняет их при загрузке. До v2.1.232 шлюз принимал фиксированный список из 11 ключей функциональных ворот, таких как `chatTabEnabled` и `disableAutoUpdates`, и отклонял каждый другой ключ при загрузке. До v2.1.227 шлюз также отклонял `chatTabEnabled` и `chatAdvancedFileAnalysisEnabled` при загрузке.

839 954 

840```yaml theme={null}955```yaml theme={null}

841managed:956managed:


849 banner: { text: "Contractor build: internal use only" }964 banner: { text: "Contractor build: internal use only" }

850```965```

851 966 

852Каждый ключ опциональный; Claude Desktop применяет свой собственный по умолчанию для любого ключа, который вы опустите. Gateway проверяет каждый блок `desktop` при загрузке по схеме конфигурации, которую сам использует Claude Desktop, поэтому ошибка появляется при запуске gateway как ошибка, называющая ключ, а не достигает каждого подключённого desktop. Gateway не запускается при загрузке, когда блок содержит:967Каждый ключ опционален; Claude Desktop применяет свой собственный стандарт для любого ключа, который вы опустите. Шлюз проверяет каждый блок `desktop` при загрузке против схемы конфигурации, которую использует сам Claude Desktop, поэтому ошибка появляется при запуске шлюза как ошибка, называющая ключ, а не достигает каждого подключённого рабочего стола. Шлюз не запускается, когда блок содержит:

853 968 

854* Неизвестный ключ969* Неизвестный ключ

855* Узнанный ключ, чьё значение Claude Desktop отклонил бы или молча отбросил, такой как пустое значение или неправильно написанный подключ внутри вложенной записи. До v2.1.260 gateway молча отбросил неправильно написанное поле внутри вложенного объекта записи `managedMcpServers` или `orgPluginSettings` вместо отказа при загрузке.970* Распознанный ключ, чьё значение Claude Desktop отклонил бы или молча удалил, такое как пустое значение или неправильно написанный подключ внутри вложенной записи. До v2.1.260 шлюз молча удалял неправильно написанное поле внутри вложенного объекта записи `managedMcpServers` или `orgPluginSettings` вместо отказа при загрузке.

856* Ключ, который gateway вычисляет сам: соединение вывода, список моделей и реле OTLP. Настройте их через [`upstreams`](#upstreams), [`models`](#models) и раздел [`telemetry`](#telemetry) `forward_to`.971* Ключ, который шлюз вычисляет сам: соединение вывода, список моделей и реле OTLP. Настройте их через [`upstreams`](#upstreams), [`models`](#models) и раздел [`telemetry`](#telemetry) `forward_to`.

857* Устаревший псевдоним текущего ключа. В ошибке загрузки gateway называет канонический ключ для написания.972* Устаревший псевдоним текущего ключа. В ошибке загрузки шлюз называет канонический ключ для написания.

858 973 

859Если вы используете устаревшее значение или форму записи, такую как запись `managedMcpServers` без `transport`, gateway запускается и регистрирует предупреждение, которое называет замену.974Если вы используете устаревшее значение или форму записи, такую как запись `managedMcpServers` без `transport`, шлюз запускается и регистрирует предупреждение, которое называет замену.

860 975 

861Gateway проверяет блок `desktop` по схеме, поставляемой с его установленной версией, как он делает блок `cli`. Чтобы доставить параметр, введённый более новым выпуском Claude Desktop, сначала обновите gateway. Например, `userPluginMarketplacesEnabled` и `userPluginUploadsEnabled` нуждаются в Claude Code v2.1.260 или позже на сервере gateway и Claude Desktop 1.37937.0 или позже на машинах членов.976Шлюз проверяет блок `desktop` против схемы, поставляемой с его установленной версией, как он делает блок `cli`. Чтобы доставить настройку, введённую более новым выпуском Claude Desktop, сначала обновите шлюз. Например, `userPluginMarketplacesEnabled` и `userPluginUploadsEnabled` требуют Claude Code v2.1.260 или позже на сервере шлюза и Claude Desktop 1.37937.0 или позже на машинах членов.

862 977 

863Если вы установите `orgPluginSettings` в блоке `desktop` политики, gateway обслуживает его в форме массива, которую читают Claude Desktop 1.15200.0 и позже. Более старые desktops игнорируют массив и не применяют политику инструмента плагина, поэтому обновите членов до 1.15200.0 или позже перед тем, как полагаться на это.978`blockReadsOutsideWorkingDirectories`, `disableBypassPermissionsMode`, `configRecheckIntervalMinutes` и `sshClientPath` требуют Claude Code v2.1.281 или позже на сервере шлюза. Так же как значение `required` `microsoftAuthBroker` и поле `continuousAccessEvaluation` записи Microsoft 365 `managedMcpServers`. Выпуски Claude Desktop, которые предшествуют значению `required`, читают его как `disabled`, поэтому установите `required` только после того, как каждый член Claude Desktop его поддерживает. [Справочник управляемой конфигурации](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop перечисляет выпуск, который первым читает каждый ключ.

864 979 

865Gateway заполняет ключи, которые блок `desktop` политики не устанавливает, из блока `desktop` catch-all `match: {}`, так же, как он заполняет блок `cli` политики из базового. Если вы установите `disabledBuiltinTools` или `builtinToolPolicy` в обоих базовом и политике роли, gateway сохраняет ограничение базового:980Если вы установите `orgPluginSettings` в блоке `desktop` политики, шлюз обслуживает его в форме массива, которую читают Claude Desktop 1.15200.0 и позже. Более старые рабочие столы игнорируют массив и не применяют политику инструмента плагина, поэтому обновите членов до 1.15200.0 или позже перед тем, как полагаться на это.

866 981 

867* `disabledBuiltinTools`: gateway использует объединение списка базового и списка политики982Шлюз заполняет ключи, которые блок `desktop` политики не устанавливает, из блока `desktop` catch-all `match: {}`, так же как он заполняет блок `cli` политики из базового. Если вы установите `disabledBuiltinTools` или `builtinToolPolicy` как в базовом, так и в политике роли, шлюз сохраняет ограничение базового:

868* `builtinToolPolicy`: если вы установите инструмент на значение, отличное от `allow`, в базовом, gateway сохраняет это значение, даже если вы установите `allow` для того же инструмента в политике роли

869 983 

870Для каждого другого ключа, если вы установите его в политике роли, gateway использует значение политики роли. Gateway заменяет массив или вложенный объект, такой как `banner`, целиком, поэтому если вы установите `banner.text` в политике роли, gateway отбросит `banner.backgroundColor` базового.984* `disabledBuiltinTools`: шлюз использует объединение списка базового и списка политики

985* `builtinToolPolicy`: если вы установите инструмент на значение, отличное от `allow`, в базовом, шлюз сохраняет это значение, даже если вы установите `allow` для того же инструмента в политике роли

871 986 

872Если вы не развёртываете Claude Desktop, вообще не включайте `desktop` в ваши политики; gateway затем возвращает 404 из `/user/bootstrap` для каждого пользователя.987Для каждого другого ключа, если вы установите его в политике роли, шлюз использует значение политики роли. Шлюз заменяет массив или вложенный объект, такой как `banner`, целиком, поэтому если вы установите `banner.text` в политике роли, шлюз удаляет `banner.backgroundColor` базового.

988 

989Если вы не развёртываете Claude Desktop, оставьте `desktop` полностью из ваших политик; шлюз затем возвращает 404 из `/user/bootstrap` для каждого пользователя.

873 990 

874<h4 id="precedence-with-other-managed-sources">991<h4 id="precedence-with-other-managed-sources">

875 Приоритет с другими управляемыми источниками992 Приоритет с другими управляемыми источниками

876</h4>993</h4>

877 994 

878Если устройство также имеет политику, доставленную MDM, или локальный `managed-settings.json`, параметры, доставленные gateway, занимают первое место. [Приоритет в управляемом уровне](/docs/ru/managed-settings#precedence-within-the-managed-tier) на странице управляемых параметров говорит, когда применяются локальные источники, и имеет [ключи, которые Claude Code читает из каждого источника администратора](/docs/ru/managed-settings#keys-read-from-every-admin-source) независимо от того, какой источник он выбрал, такие как ключи блокировки sandbox, `forceRemoteSettingsRefresh` и для каждой переменной `env` слияние. [`policyHelper`](/docs/ru/settings-reference#policyhelper), настроенный в профиле MDM или файле управляемых параметров, запускается только, когда gateway не доставляет параметры; запись говорит, что его вывод заменяет.995Если устройство также имеет политику, доставленную MDM, или локальный `managed-settings.json`, параметры, доставленные шлюзом, занимают первое место. [Приоритет в управляемом уровне](/docs/ru/managed-settings#precedence-within-the-managed-tier) на странице управляемых настроек говорит, когда применяются локальные источники, и имеет [ключи, которые Claude Code читает из каждого источника администратора](/docs/ru/managed-settings#keys-read-from-every-admin-source) независимо от того, какой источник он выбрал, такие как ключи блокировки песочницы, `forceRemoteSettingsRefresh` и объединение `env` для каждой переменной. [`policyHelper`](/docs/ru/settings-reference#policyhelper), настроенный в профиле MDM или файле управляемых настроек, работает только когда шлюз не доставляет настройки; запись говорит, что его выход заменяет.

879 996 

880Встраивающие хосты, такие как [Claude Desktop](/docs/ru/desktop), могут предоставлять политику через опцию SDK `managedSettings`. [Параметры родителя из встраивающих хостов](/docs/ru/managed-settings#parent-settings-from-embedding-hosts) говорит, когда Claude Code применяет это, и [Ограничить параметры родителя](/docs/ru/claude-apps-gateway#restrict-parent-settings) перечисляет, какие параметры в направлении разрешения всё ещё применяются без блокировок `allowManaged*Only`.997Хосты встраивания, такие как [Claude Desktop](/docs/ru/desktop), могут предоставлять политику через опцию SDK `managedSettings`. [Параметры родителя от хостов встраивания](/docs/ru/managed-settings#parent-settings-from-embedding-hosts) говорит, когда Claude Code применяет это, и [Ограничить параметры родителя](/docs/ru/claude-apps-gateway#restrict-parent-settings) перечисляет, какие параметры в направлении разрешения всё ещё применяются без блокировок `allowManaged*Only`.

881 998 

882Политики gateway применяются к каждому вызову Claude Code на машине, включая неинтерактивные запуски `claude -p` и сеансы, порождённые Agent SDK. Если gateway недоступен при запуске, сеансы с выполненным входом завершаются с ошибкой, а не работают без своей политики.999Политики шлюза применяются к каждому вызову Claude Code на машине, включая неинтерактивные запуски `claude -p` и сеансы, порождённые Agent SDK. Если шлюз недоступен при запуске, подписанные сеансы выходят с ошибкой, а не работают без своей политики.

883 1000 

884<h3 id="telemetry">1001<h3 id="telemetry">

885 `telemetry`1002 `telemetry`

886</h3>1003</h3>

887 1004 

888CLI отправляет метрики, логи и, когда включено, трассировки на gateway, который передаёт их дословно каждому настроенному назначению. Экспорты используют OpenTelemetry Protocol (OTLP) по HTTP. Чтобы пропустить реле и иметь сеансы, экспортирующие прямо на ваш сборщик, [назовите сборщик в политике](#export-directly-to-your-collector). См. [Мониторинг использования](/docs/ru/monitoring-usage) для метрик и событий, которые выпускает CLI.1005CLI отправляет метрики, логи и, когда включено, трассировки на шлюз, который передаёт их дословно каждому настроенному назначению. Экспорты используют OpenTelemetry Protocol (OTLP) по HTTP. Чтобы пропустить реле и иметь сеансы, экспортирующие прямо на ваш сборщик, [назовите сборщик в политике](#export-directly-to-your-collector). Смотрите [Monitoring usage](/docs/ru/monitoring-usage) для метрик и событий, которые CLI излучает.

889 1006 

890CLI штампует каждый экспорт идентификацией аутентифицированного пользователя, прочитанной из JWT, выданного gateway: атрибуты `user.id`, `user.email` и `user.groups`. Атрибуция затрат и использования для каждого разработчика поэтому работает без конфигурации на стороне разработчика.1007В сеансах, подписанных через `/login`, CLI штампует каждый экспорт идентификацией аутентифицированного пользователя, прочитанной из выданного шлюзом JWT: атрибуты `user.id`, `user.email` и `user.groups`. Атрибуция затрат и использования на разработчика поэтому работает без конфигурации на стороне разработчика.

891 1008 

892[Claude Desktop](#claude-desktop-overlay) и сеансы Cowork, подписанные через gateway, штампуют свою телеметрию с `user.email` и `user.groups` наряду с `enduser.id`, поэтому вы можете охватить использование терминала, Desktop и Cowork одним запросом на `user.email` или `user.groups`. `user.groups` — это список групп IdP, разделённый запятыми.1009[Claude Desktop](#claude-desktop-overlay) и сеансы Cowork, подписанные через шлюз, штампуют свою телеметрию с `user.email` и `user.groups` наряду с `enduser.id`, поэтому вы можете охватить использование терминала, Desktop и Cowork одним запросом на `user.email` или `user.groups`. `user.groups` — это список групп IdP, разделённый запятыми.

893 1010 

894Desktop и Cowork телеметрия также несёт `enduser.sub`, утверждение `sub`, которое выдаёт ваш поставщик идентификации для пользователя, которое остаётся тем же, когда электронная почта пользователя изменяется. Сеансы терминала штампуют то же значение под `user.id`, поэтому запрос, который соответствует `enduser.sub` против терминала `user.id`, охватывает использование одного пользователя терминала, Desktop и Cowork вместе. На экспортах Desktop и Cowork `user.id` — это анонимный идентификатор, а не субъект.1011Телеметрия Desktop и Cowork также несёт `enduser.sub`, claim `sub`, который выдаёт ваш поставщик идентификации для пользователя, который остаётся одинаковым, когда электронная почта пользователя изменяется. Сеансы терминала штампуют то же значение под `user.id`, поэтому запрос, который соответствует `enduser.sub` терминалу `user.id`, охватывает использование одного пользователя терминала, Desktop и Cowork вместе. На экспортах Desktop и Cowork `user.id` — это анонимный идентификатор, а не субъект.

895 1012 

896Как и все данные OpenTelemetry из Claude Code, эти атрибуты идут только на назначения, которые настраивает ваша организация, никогда на Anthropic.1013Как и все данные OpenTelemetry из Claude Code, эти атрибуты идут только на назначения, которые настраивает ваша организация, никогда на Anthropic.

897 1014 

898Если список групп пользователя длиннее 255 символов после процентного кодирования, или имя группы содержит запятую или знак равенства, gateway оставляет `user.groups` из телеметрии Desktop и Cowork этого пользователя, а не усекает его. Сеансы терминала этого пользователя всё ещё несут полный список.1015Если список групп пользователя длиннее 255 символов после процентного кодирования, или имя группы содержит запятую или знак равенства, шлюз оставляет `user.groups` из телеметрии Desktop и Cowork этого пользователя, а не усекает его. Сеансы терминала этого пользователя всё ещё несут полный список.

899 1016 

900Gateway оставляет `enduser.sub` отключённым, когда субъект длиннее 255 символов после процентного кодирования, или содержит пробел, символ вне печатного ASCII, или один из `,` `;` `=` `\` `"` `%`. Телеметрия Desktop и Cowork этого пользователя сохраняет свои другие атрибуты.1017Шлюз оставляет `enduser.sub` когда субъект длиннее 255 символов после процентного кодирования, или содержит пробел, символ вне печатного ASCII, или один из `,` `;` `=` `\` `"` `%`. Телеметрия Desktop и Cowork этого пользователя сохраняет свои другие атрибуты.

901 1018 

902Вам нужен Claude Code v2.1.265 или позже на сервере gateway для `user.email` и `user.groups` на телеметрии Desktop и Cowork, и Claude Desktop 1.24012 или позже на машине каждого разработчика для `user.groups`.1019Вам нужен Claude Code v2.1.265 или позже на сервере шлюза для `user.email` и `user.groups` на телеметрии Desktop и Cowork, и Claude Desktop 1.24012 или позже на машине каждого разработчика для `user.groups`.

903 1020 

904Вам нужен Claude Code v2.1.274 или позже на сервере gateway для `enduser.sub`.1021Вам нужен Claude Code v2.1.274 или позже на сервере шлюза для `enduser.sub`.

905 1022 

906```yaml theme={null}1023```yaml theme={null}

907telemetry:1024telemetry:


909 - url: https://otel-collector.internal.example.com1026 - url: https://otel-collector.internal.example.com

910 headers:1027 headers:

911 Authorization: ${OTLP_TOKEN}1028 Authorization: ${OTLP_TOKEN}

912 # Opt-in для каждого сигнала. По умолчанию: только метрики.1029 # Per-signal opt-in. Default: metrics only.

913 metrics: true1030 metrics: true

914 logs: false1031 logs: false

915 traces: false1032 traces: false


919```1036```

920 1037 

921<Warning>1038<Warning>

922 Каждое назначение выбирает `metrics`, `logs` и `traces` независимо, и по умолчанию только метрики. Сигналы отличаются по чувствительности:1039 Каждое назначение согласует `metrics`, `logs` и `traces` независимо, и по умолчанию только метрики. Сигналы отличаются по чувствительности:

923 1040 

924 * **Метрики**: агрегированные счётчики, такие как количество токенов, количество запросов и задержка1041 * **Metrics**: совокупные счётчики, такие как количество токенов, количество запросов и задержка

925 * **Логи и трассировки**: могут нести полные команды bash, входные данные инструментов и пути файлов, охватывая всё, что Claude Code делает на машине разработчика1042 * **Logs и traces**: могут нести полные команды Bash, входные данные инструмента и пути файлов, охватывая всё, что делает Claude Code на машине разработчика

926 1043 

927 Включайте логи и трассировки только на назначениях с управлением доступом и политикой сохранения, которые данные гарантируют.1044 Включайте логи и трассировки только на назначениях с элементами управления доступом и политикой хранения, которые данные оправдывают.

928</Warning>1045</Warning>

929 1046 

930Каждый URL `forward_to` должен использовать `https://`, с одним исключением для сборщика на собственном интерфейсе loopback gateway:1047Каждый URL `forward_to` должен использовать `https://`, с одним исключением для сборщика на собственном интерфейсе обратной связи шлюза:

931 1048 

932* `http://localhost:<port>` проходит проверку конфигурации, но [защита SSRF](/docs/ru/claude-apps-gateway-deploy#threat-model-summary) блокирует каждый экспорт с `ECONNREFUSED_SSRF`, если вы не установите `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` в окружении gateway1049* `http://localhost:<port>` проходит проверку конфигурации, но [защита SSRF](/docs/ru/claude-apps-gateway-deploy#threat-model-summary) блокирует каждый экспорт с `ECONNREFUSED_SSRF`, если вы не установите `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` в окружении шлюза

933* `http://127.0.0.1:<port>` или `http://[::1]:<port>` не запускается при загрузке, если эта переменная не установлена1050* `http://127.0.0.1:<port>` или `http://[::1]:<port>` не запускается, если эта переменная не установлена

934 1051 

935Для сборщика в кластере выставьте его по HTTPS на его собственный внутренний адрес или запустите его как sidecar с установленной переменной.1052Для сборщика в кластере выставьте его по HTTPS на его собственный внутренний адрес, или запустите его как sidecar с установленной переменной.

936 1053 

937Когда `HTTPS_PROXY` установлен, gateway отправляет экспорты через этот прокси.1054Когда установлен `HTTPS_PROXY`, шлюз отправляет экспорты через этот прокси.

938 1055 

939Чтобы достичь внутреннего сборщика напрямую, добавьте его в `NO_PROXY` по имени хоста или по домену с ведущей точкой, такой как `.internal.example.com`, что требует Claude Code v2.1.277 или позже на сервере gateway. Убедитесь, что gateway может достичь сборщика без прокси. Запись без ведущей точки соответствует только этому точному имени, а не именам под ним. Диапазоны CIDR не соответствуют.1056Чтобы достичь внутреннего сборщика напрямую, добавьте его в `NO_PROXY` по имени хоста или по домену с ведущей точкой, такой как `.internal.example.com`, что требует Claude Code v2.1.277 или позже на сервере шлюза. Убедитесь, что шлюз может достичь сборщика без прокси. Запись без ведущей точки соответствует только этому точному имени, а не именам под ним. Диапазоны CIDR не соответствуют.

940 1057 

941С включённым [прокси-только исходящим трафиком](#proxy-only-egress), разрешите сборщик в прокси вместо этого, так как любая запись `NO_PROXY` отключает прокси-только исходящий трафик.1058С включённым [прокси-только исходящим соединением](#proxy-only-egress), разрешите сборщик в прокси вместо этого, так как любая запись `NO_PROXY` отключает прокси-только исходящее соединение.

942 1059 

943Телеметрия отключена в CLI по умолчанию. Когда вы устанавливаете оба `telemetry.forward_to` и `listen.public_url`, gateway включает её для подключённых клиентов, отправляя шесть переменных окружения через `/managed/settings`:1060Телеметрия отключена в CLI по умолчанию. Когда вы устанавливаете оба `telemetry.forward_to` и `listen.public_url`, шлюз включает её для подключённых клиентов, отправляя шесть переменных окружения через `/managed/settings`:

944 1061 

945* `CLAUDE_CODE_ENABLE_TELEMETRY=1`1062* `CLAUDE_CODE_ENABLE_TELEMETRY=1`

946* `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER` и `OTEL_TRACES_EXPORTER`, каждый установлен на `otlp`, если по крайней мере одно назначение `forward_to` включает этот сигнал, и на `none` в противном случае1063* `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER` и `OTEL_TRACES_EXPORTER`, каждый установлен на `otlp`, если хотя бы одно назначение `forward_to` включает этот сигнал, и на `none` в противном случае

947* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`1064* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`

948* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`1065* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`

949 1066 

950Когда вы [добавляете свои собственные метки](#add-your-own-labels), gateway также отправляет `OTEL_RESOURCE_ATTRIBUTES`.1067Когда вы [добавляете свои собственные метки](#add-your-own-labels), шлюз также отправляет `OTEL_RESOURCE_ATTRIBUTES`.

951 1068 

952До Claude Code v2.1.265 на сервере gateway, gateway отправлял все три селектора экспортера как `otlp`, включая для сигналов, которые ни одно назначение не включало.1069До Claude Code v2.1.265 на сервере шлюза шлюз отправлял все три селектора экспортера как `otlp`, включая для сигналов, которые ни одно назначение не включило.

953 1070 

954Отправленная конечная точка строится из публичного URL, поэтому метрики и логи не нуждаются в конфигурации OTEL от разработчиков или политик.1071Отправленная конечная точка строится из публичного URL, поэтому метрики и логи не требуют конфигурации OTEL от разработчиков или политик.

955 1072 

956Разработчики, подписанные через `/login`, не могут перенаправлять экспорты с собственной конфигурацией OTEL:1073Разработчики, подписанные через `/login`, не могут перенаправить экспорты с собственной конфигурацией OTEL:

957 1074 

958* **Локально установленные переменные**: Claude Code применяет отправленные переменные на управляемом уровне, поэтому каждая переопределяет значение, которое разработчик устанавливает для неё локально.1075* **Локально установленные переменные**: Claude Code применяет отправленные переменные на управляемом уровне, поэтому каждая переопределяет значение, которое разработчик устанавливает для неё локально.

959* **Локально настроенные конечные точки**: с включённым экспортом OTLP/HTTP, CLI игнорирует любую локально настроенную конечную точку, независимо от того, отправил ли gateway переменные телеметрии. Его экспорты идят на gateway, если политика не [называет ваш сборщик как конечную точку](#export-directly-to-your-collector).1076* **Локально настроенные конечные точки**: с включённым экспортом OTLP/HTTP CLI игнорирует любую локально настроенную конечную точку, независимо от того, отправил ли шлюз переменные телеметрии. Его экспорты идут на шлюз, если политика не [называет ваш сборщик как конечную точку](#export-directly-to-your-collector).

960 1077 

961Без назначения `forward_to` для сигнала, gateway принимает и отбрасывает его. Если разработчики уже экспортируют телеметрию Claude Code на один из ваших сборщиков, добавьте его как назначение `forward_to`, с включёнными логами или трассировками, если они их экспортируют, поэтому он продолжает получать их данные после того, как они подпишутся. Чтобы пропустить реле вместо этого, [назовите сборщик в политике](#export-directly-to-your-collector).1078Без назначения `forward_to` для сигнала шлюз принимает и отклоняет его. Если разработчики уже экспортируют телеметрию Claude Code на один из ваших сборщиков, добавьте его как назначение `forward_to`, с включёнными логами или трассировками, если они их экспортируют, поэтому он продолжает получать их данные после подписания. Чтобы пропустить реле вместо этого, [назовите сборщик в политике](#export-directly-to-your-collector).

962 1079 

963[Трассировки](/docs/ru/monitoring-usage#traces-beta) дополнительно требуют `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` на каждом клиенте. Установите её в блоке `env` управляемой политики, так как gateway не отправляет её. Разработчики одобряют её в том же [диалоге одобрения безопасности](#managed), который отправленная конечная точка уже запускает.1080[Traces](/docs/ru/monitoring-usage#traces-beta) также требуют `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` на каждом клиенте. Установите его в блоке `env` управляемой политики, так как шлюз его не отправляет. Разработчики одобряют его в том же [диалоге одобрения безопасности](#managed), который уже вызывает отправленная конечная точка.

964 1081 

965Установите её на `1` только в политиках, чьи группы вы хотите отследить. Политика, которая не устанавливает её, наследует значение из вашей политики `match: {}` catch-all, если эта политика устанавливает одно, согласно [правилам слияния](#managed). Чтобы помешать клиентам группы отправлять трассировки, даже когда разработчик устанавливает переменную локально, установите её на `0` в политике этой группы.1082Установите его на `1` только в политиках, чьи группы вы хотите отследить. Политика, которая его не устанавливает, наследует значение из вашей политики catch-all `match: {}`, если эта политика устанавливает одно, согласно [правилам объединения](#managed). Чтобы помешать клиентам группы отправлять трассировки, даже когда разработчик устанавливает переменную локально, установите её на `0` в политике этой группы.

966 1083 

967Оба кодирования OTLP protobuf и JSON передаются, и любой совместимый с OpenTelemetry backend работает как назначение.1084Оба кодирования OTLP protobuf и JSON передаются, и любой совместимый с OpenTelemetry бэкенд работает как назначение.

968 1085 

969<h4 id="add-your-own-labels">1086<h4 id="add-your-own-labels">

970 Добавление собственных меток1087 Добавьте свои собственные метки

971</h4>1088</h4>

972 1089 

973Чтобы поместить фиксированные метки, такие как `service.namespace` или `deployment.environment.name`, на телеметрию сеансов, подписанных через gateway, установите `telemetry.resource_attributes`. Каждая метка — это атрибут ресурса OpenTelemetry, и каждое назначение получает одни и те же метки.1090Чтобы поместить фиксированные метки, такие как `service.namespace` или `deployment.environment.name`, на телеметрию сеансов, подписанных через шлюз, установите `telemetry.resource_attributes`. Каждая метка — это атрибут ресурса OpenTelemetry, и каждое назначение получает одинаковые метки.

974 1091 

975Сеансы получают метки только, когда вы также устанавливаете `telemetry.forward_to` и `listen.public_url`. Этот пример добавляет две метки:1092Сеансы получают метки только когда вы также устанавливаете `telemetry.forward_to` и `listen.public_url`. Этот пример добавляет две метки:

976 1093 

977```yaml theme={null}1094```yaml theme={null}

978telemetry:1095telemetry:


983 deployment.environment.name: prod1100 deployment.environment.name: prod

984```1101```

985 1102 

986Gateway отказывается запускаться, когда метка нарушает одно из этих правил, и ошибка запуска называет метку:1103Шлюз отказывается запускаться, когда метка нарушает одно из этих правил, и ошибка запуска называет метку:

987 1104 

988* Имена используют только буквы, цифры, `.`, `_` и `-`1105* Имена используют только буквы, цифры, `.`, `_` и `-`

989* Имена не зарезервированы. Сравниваемые в любом регистре букв, зарезервированные имена — это всё, что начинается с `user.`, `enduser.` или `identity.`, плюс `service.name`, `service.version`, `claude.deployment_mode`, `host.arch`, `os.type`, `os.version` и `wsl.version`1106* Имена не зарезервированы. Сравниваемые в любом регистре букв, зарезервированные имена — это всё, что начинается с `user.`, `enduser.` или `identity.`, плюс `service.name`, `service.version`, `claude.deployment_mode`, `host.arch`, `os.type`, `os.version` и `wsl.version`

990* Значения — это непустой печатный ASCII без пробела и ни одного из `, ; = \ " %`1107* Значения — это непустой печатный ASCII без пробела и ни один из `, ; = \ " %`

991* Значения не более 255 символов, как их считает gateway после процентного кодирования, поэтому `/`, `:` и `@` каждый считаются как три1108* Значения не более 255 символов, как шлюз их считает после процентного кодирования, поэтому `/`, `:` и `@` каждый считаются как три

992* Значения — это текст, поэтому заключите в кавычки число, `true` или `false`1109* Значения — это текст, поэтому цитируйте число, `true` или `false`

993 1110 

994Вам нужен Claude Code v2.1.281 или позже на сервере gateway для установки `telemetry.resource_attributes`. Более ранний gateway отказывается запускаться, когда находит ключ. Обновите каждую реплику перед добавлением ключа и удалите ключ перед откатом на более раннюю версию.1111Вам нужен Claude Code v2.1.281 или позже на сервере шлюза, чтобы установить `telemetry.resource_attributes`. Более ранний шлюз отказывается запускаться, когда находит ключ. Обновите каждую реплику перед добавлением ключа и удалите ключ перед откатом на более раннюю версию.

995 1112 

996Сеансы терминала, подписанные через `/login`, получают метки как `OTEL_RESOURCE_ATTRIBUTES`, отправленные с другими [переменными телеметрии](#telemetry). Если вы установите `OTEL_RESOURCE_ATTRIBUTES` в блоке `env` политики, сеансы терминала, которым соответствует эта политика, получают это значение вместо метк. Claude Desktop получает метки от gateway наряду с `user.email` и другими атрибутами идентификации.1113Сеансы терминала, подписанные через `/login`, получают метки как `OTEL_RESOURCE_ATTRIBUTES`, отправленные с другими [переменными телеметрии](#telemetry). Если вы установите `OTEL_RESOURCE_ATTRIBUTES` в блоке `env` политики, сеансы терминала, которым соответствует эта политика, получают это значение вместо метрик. Claude Desktop получает метки от шлюза наряду с `user.email` и другими атрибутами идентификации.

997 1114 

998Claude Code также копирует каждую метку на каждую точку данных метрики, поэтому вы можете фильтровать метрики по ней в backend, который не индексирует атрибуты ресурса. Чтобы отключить эту копию, см. [Контроль кардинальности метрик](/docs/ru/monitoring-usage#metrics-cardinality-control).1115Claude Code также копирует каждую метку на каждую точку данных метрики, поэтому вы можете фильтровать метрики по ней в бэкенде, который не индексирует атрибуты ресурса. Чтобы отключить эту копию, смотрите [Metrics cardinality control](/docs/ru/monitoring-usage#metrics-cardinality-control).

999 1116 

1000<h4 id="export-directly-to-your-collector">1117<h4 id="export-directly-to-your-collector">

1001 Экспорт прямо на ваш сборщик1118 Экспорт прямо на ваш сборщик

1002</h4>1119</h4>

1003 1120 

1004Чтобы иметь сеансы, подписанные через `/login`, отправлять телеметрию прямо на ваш сборщик вместо реле, установите `OTEL_EXPORTER_OTLP_ENDPOINT` на базовый URL `https://` сборщика в блоке `env` [управляемой политики](#managed). Claude Code добавляет `/v1/metrics`, `/v1/logs` или `/v1/traces` к URL, который вы устанавливаете, такой как `https://otel-collector.example.com:4318`, и экспортирует каждый сигнал туда по OTLP/HTTP. Требует Claude Code v2.1.265 или позже на машине каждого разработчика. Более ранние клиенты экспортируют через реле.1121Чтобы иметь сеансы, подписанные через `/login`, отправляющие телеметрию прямо на ваш сборщик вместо реле, установите `OTEL_EXPORTER_OTLP_ENDPOINT` на базовый URL `https://` вашего сборщика в блоке `env` [управляемой политики](#managed). Claude Code добавляет `/v1/metrics`, `/v1/logs` или `/v1/traces` к URL, который вы устанавливаете, такой как `https://otel-collector.example.com:4318`, и экспортирует каждый сигнал туда по OTLP/HTTP. Требует Claude Code v2.1.265 или позже на каждой машине разработчика. Более ранние клиенты экспортируют через реле.

1005 1122 

1006Чтобы аутентифицироваться на сборщик, установите `OTEL_EXPORTER_OTLP_HEADERS` в том же блоке `env`. Сеансы никогда не отправляют токен сеанса gateway разработчика на сборщик, названный таким образом.1123Чтобы аутентифицироваться на сборщике, установите `OTEL_EXPORTER_OTLP_HEADERS` в том же блоке `env`. Сеансы никогда не отправляют токен сеанса шлюза разработчика на сборщик, названный таким образом.

1007 1124 

1008Когда вы добавляете или изменяете эту конечную точку в политике, Claude Code просит каждого разработчика одобрить её в [диалоге одобрения безопасности](#managed) перед применением её в интерактивном сеансе.1125Когда вы добавляете или изменяете эту конечную точку в политике, Claude Code просит каждого разработчика одобрить её в [диалоге одобрения безопасности](#managed) перед применением в интерактивном сеансе.

1009 1126 

1010Claude Code проверяет конечную точку перед экспортом сигнала прямо и сохраняет этот сигнал на реле, когда проверка не удаётся. Проверки включают:1127Claude Code проверяет конечную точку перед экспортом сигнала прямо и сохраняет этот сигнал на реле, когда проверка не удаётся. Проверки включают:

1011 1128 

1012* Конечная точка поступает от самого gateway. Если вы устанавливаете ту же переменную в профиль MDM или локальный `managed-settings.json`, экспорты остаются на реле.1129* Конечная точка поступает от самого шлюза. Если вы установите ту же переменную в профиле MDM или локальном `managed-settings.json`, экспорты остаются на реле.

1013* URL использует `https://`, или `http://` на адрес loopback1130* URL использует `https://`, или `http://` на адрес обратной связи

1014* URL разрешается на путь, заканчивающийся на `/v1/<signal>`, без запроса или фрагмента. Claude Code строит этот путь сам из универсальной переменной. Он использует переменную для каждого сигнала, такую как `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, как написано, поэтому включите полный путь туда.1131* URL разрешается на путь, заканчивающийся на `/v1/<signal>`, без запроса или фрагмента. Claude Code строит этот путь сам из общей переменной. Он использует переменную для каждого сигнала, такую как `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, как написано, поэтому включите полный путь туда.

1015* URL не является собственным хостом gateway. Конечная точка, адресованная gateway, сохраняет путь реле и его токен сеанса.1132* URL не является собственным хостом шлюза. Конечная точка, адресованная шлюзу, сохраняет путь реле и его токен сеанса.

1016* Ни вы, ни разработчик не настроили [`otelHeadersHelper`](/docs/ru/settings-reference#otelheadershelper) ни в каком источнике параметров. С настроенным помощником, каждый сигнал остаётся на реле.1133* Ни вы, ни разработчик не настроили [`otelHeadersHelper`](/docs/ru/settings-reference#otelheadershelper) ни в каком источнике настроек. С настроенным помощником каждый сигнал остаётся на реле.

1017 1134 

1018Конечная точка, которую вы называете, изменяет только то, куда идят экспорты. Вы всё ещё выбираете, какие сигналы экспортируют вообще с селекторами `OTEL_*_EXPORTER`.1135Конечная точка, которую вы называете, изменяет только то, куда идут экспорты. Вы всё ещё выбираете, какие сигналы экспортируются вообще, с селекторами `OTEL_*_EXPORTER`.

1019 1136 

1020Конечная точка одна не включает экспорт, поэтому также установите переменные, которые это делают, если только gateway уже не отправляет их:1137Конечная точка одна не включает экспорт, поэтому также установите переменные, которые это делают, если шлюз их уже не отправляет:

1021 1138 

1022* Если gateway уже [отправляет переменные телеметрии](#telemetry), они охватывают включение, селекторы и протокол, и ваша явная конечная точка переопределяет отправленное значение `<public_url>`. Установите селектор `OTEL_*_EXPORTER` на `otlp` сами только для сигнала, который ни одно назначение `forward_to` не включает.1139* Если шлюз уже [отправляет переменные телеметрии](#telemetry), они охватывают включение, селекторы и протокол, и ваша явная конечная точка переопределяет отправленное значение `<public_url>`. Установите селектор `OTEL_*_EXPORTER` на `otlp` сами только для сигнала, который ни одно назначение `forward_to` не включает.

1023* Если это не так, также установите `CLAUDE_CODE_ENABLE_TELEMETRY=1`, селекторы `OTEL_*_EXPORTER` и `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.1140* Если нет, также установите `CLAUDE_CODE_ENABLE_TELEMETRY=1`, селекторы `OTEL_*_EXPORTER` и `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.

1024 1141 

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

1026 1143 

1027<h4 id="when-a-destination-fails">1144<h4 id="when-a-destination-fails">

1028 Когда назначение не удаётся1145 Когда назначение не удаётся

1029</h4>1146</h4>

1030 1147 

1031Gateway не буферизирует, не повторяет и не хранит телеметрию, поэтому он отбрасывает экспорт, который не достигает назначения, а не доставляет его поздно. Каждое назначение успешно или не удаётся само по себе, и экспортирующий клиент получает ответ об успехе в любом случае, поэтому неудачная доставка появляется только в журнале gateway.1148Шлюз не буферизирует, не повторяет и не хранит телеметрию, поэтому он удаляет экспорт, который не достигает назначения, а не доставляет его поздно. Каждое назначение успешно или не удаётся само по себе, и экспортирующий клиент получает ответ об успехе в любом случае, поэтому неудачная доставка появляется только в логе шлюза.

1032 1149 

1033После пяти последовательных неудачных доставок на назначение, gateway приостанавливает переадресацию на него в 30-секундных растяжениях, регистрируя каждую паузу, пока доставка не удаётся. Любой ответ об ошибке, timeout или ошибка соединения считаются неудачной доставкой, кроме `400`, `413`, `415`, `422` и `431`, которые означают, что сборщик отклонил полезную нагрузку этого экспорта как неправильно сформированную или слишком большую.1150После пяти последовательных неудачных доставок на назначение шлюз приостанавливает пересылку на него в 30-секундных растяжениях, регистрируя каждую паузу, пока доставка не удаётся. Любой ответ об ошибке, тайм-аут или ошибка соединения считаются неудачной доставкой, кроме `400`, `413`, `415`, `422` и `431`, которые означают, что сборщик отклонил полезную нагрузку этого экспорта как неправильно сформированную или слишком большую.

1034 1151 

1035Отклонённая полезная нагрузка ни продвигает, ни сбрасывает счётчик отказов: gateway продолжает переадресацию на назначение и регистрирует предупреждение, называющее его и статус, при первом отказе назначения и каждом сотом после.1152Отклонённая полезная нагрузка ни продвигает, ни сбрасывает счётчик отказов: шлюз продолжает пересылку на назначение и регистрирует предупреждение, называющее его и статус, при первом отказе назначения и каждом сотом после.

1036 1153 

1037<h3 id="http-tuning">1154<h3 id="http-tuning">

1038 HTTP tuning1155 Настройка HTTP

1039</h3>1156</h3>

1040 1157 

1041Четыре опциональных блока верхнего уровня, `access_control`, `limits`, `timeouts` и `rate_limits`, настраивают HTTP поверхность. Значения по умолчанию подходят для большинства развёртываний.1158Четыре опциональных блока верхнего уровня, `access_control`, `limits`, `timeouts` и `rate_limits`, настраивают HTTP поверхность. Значения по умолчанию подходят для большинства развёртываний.

1042 1159 

1043| Блок | Ключ | По умолчанию | Описание |1160| Блок | Ключ | По умолчанию | Описание |

1044| - | - | - | - |1161| - | - | - | - |

1045| `access_control` | `allow_cidrs` / `deny_cidrs` | пусто | Входящее разрешение/запрет IP по адресу клиента, после разрешения `trusted_proxies`. `deny_cidrs` проверяется в первую очередь; клиент, который он соответствует, отклоняется, даже если `allow_cidrs` также соответствует. Если `allow_cidrs` не пусто, gateway по умолчанию отклоняет. `/healthz` и `/readyz` исключены из `allow_cidrs`. Когда доверенный прокси отправляет запись `X-Forwarded-For`, которая не является IP адресом, реальный клиент неизвестен и gateway регистрирует предупреждение один раз, называя что проверить. Где применяется либо список к запросу, он отклоняет его с `403` и причиной аудита `xff_unparseable`. Где ни один не применяется, он обслуживает запрос и использует собственный адрес прокси как IP клиента для ограничений скорости по IP и аудита. |1162| `access_control` | `allow_cidrs` / `deny_cidrs` | пусто | Входящий IP разрешить/запретить по адресу клиента, после разрешения `trusted_proxies`. `deny_cidrs` проверяется первым; клиент, которому он соответствует, отклоняется, даже если `allow_cidrs` также соответствует. Если `allow_cidrs` не пусто, шлюз по умолчанию отклоняет. `/healthz` и `/readyz` исключены из `allow_cidrs`. Когда доверенный прокси отправляет запись `X-Forwarded-For`, которая не является IP адресом, реальный клиент неизвестен и шлюз регистрирует предупреждение один раз, называя что проверить. Где применяется либо список, он отклоняет запрос с `403` и причиной аудита `xff_unparseable`. Где ни один не применяется, он обслуживает запрос и использует собственный адрес прокси как IP клиента для ограничений скорости на IP и аудита. |

1046| `limits` | `max_request_bytes` | 32 MiB | Максимальный входящий размер тела запроса; запросы большего размера получают `413` перед буферизацией тела. Повысьте для больших запросов файлов или изображений. |1163| `limits` | `max_request_bytes` | 32 MiB | Максимальный размер входящего тела запроса; запросы большего размера получают `413` перед буферизацией тела. Поднимите для больших запросов файлов или изображений. |

1047| `limits` | `max_request_header_bytes` | не установлено | Когда установлено, заголовки большего размера возвращают `431` |1164| `limits` | `max_request_header_bytes` | не установлено | Когда установлено, заголовки большего размера возвращают `431` |

1048| `limits` | `max_url_length` | не установлено | Когда установлено, слишком длинный URL возвращает `414` |1165| `limits` | `max_url_length` | не установлено | Когда установлено, слишком длинный URL возвращает `414` |

1049| `timeouts` | `upstream_ttfb_ms` | 120000 | Максимальное ожидание заголовков ответа upstream (время до первого байта). Тело ответа затем потоком без ограничения по стене часов. Применяется к прямому пути upstream Anthropic; для всех остальных поставщиков gateway ждёт до одного часа, пока не начнётся ответ. |1166| `timeouts` | `upstream_ttfb_ms` | 120000 | Максимальное ожидание заголовков ответа upstream (время до первого байта). Тело ответа затем потоком без ограничения по стене часов. Применяется к прямому пути upstream Anthropic; на каждом другом поставщике шлюз ждёт до одного часа, пока ответ не начнётся. |

1050| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Ограничение скорости по IP на неаутентифицированной конечной точке авторизации устройства. Повысьте для большой организации за общим исходящим IP или NAT. [Большие развёртывания](/docs/ru/claude-apps-gateway-deploy#large-rollouts) показывает, как его размер. Эти ограничения применяются только к потоку входа грантов устройств, а не к выводу `/v1/messages`. См. [Сопротивление перебору пользовательского кода](/docs/ru/claude-apps-gateway-deploy#user-code-brute-force-resistance). |1167| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Ограничение скорости на IP для неаутентифицированной конечной точки авторизации устройства. Поднимите для большой организации за общим исходящим IP или NAT. [Large rollouts](/docs/ru/claude-apps-gateway-deploy#large-rollouts) показывает, как его размер. Эти ограничения применяются только к потоку подписи устройства, а не к выводу `/v1/messages`. Смотрите [User-code brute-force resistance](/docs/ru/claude-apps-gateway-deploy#user-code-brute-force-resistance). |

1051| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Ограничение скорости по IP на отправки `user_code` в `/device`. Это то, что останавливает кого-то от угадывания кода другого разработчика. [Большие развёртывания](/docs/ru/claude-apps-gateway-deploy#large-rollouts) показывает, как далеко его повысить. |1168| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Ограничение скорости на IP для отправок `user_code` в `/device`. Это то, что останавливает кого-то от угадывания кода другого разработчика. [Large rollouts](/docs/ru/claude-apps-gateway-deploy#large-rollouts) показывает, как далеко его поднять. |

1052 1169 

1053Если вы оставите оба списка `access_control` пустыми, что является значением по умолчанию, gateway обслуживает любой адрес клиента, поэтому только ваша сеть ограничивает, кто может его достичь. Это важно, потому что gateway может отправлять [управляемые параметры](#managed), которые запускают команды на машинах разработчиков.1170Если вы оставите оба списка `access_control` пустыми, что является значением по умолчанию, шлюз обслуживает любой адрес клиента, поэтому только ваша сеть ограничивает, кто может его достичь. Это важно, потому что шлюз может отправлять [управляемые настройки](#managed), которые запускают команды на машинах разработчиков.

1054 1171 

1055Пока `allow_cidrs` пусто, gateway предупреждает в двух местах, без изменения того, как он отвечает на любой запрос:1172Пока `allow_cidrs` пусто, шлюз предупреждает в двух местах, не изменяя, как он отвечает на любой запрос:

1056 1173 

1057* **При загрузке**: предупреждение в операционном журнале рекомендует разрешить только приватные диапазоны `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `100.64.0.0/10`, `127.0.0.0/8`, `::1/128` и `fc00::/7`, плюс любые другие внутренние диапазоны, из которых ваши разработчики подключаются. Если вы привязываете gateway к адресу loopback и не устанавливаете ни `trusted_proxies`, ни `public_url`, как при локальной разработке, предупреждение не появляется.1174* **При загрузке**: предупреждение в операционном логе рекомендует разрешить только частные диапазоны `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `100.64.0.0/10`, `127.0.0.0/8`, `::1/128` и `fc00::/7`, плюс любые другие внутренние диапазоны, из которых ваши разработчики подключаются. Если вы привязываете шлюз к адресу обратной связи и не устанавливаете ни `trusted_proxies`, ни `public_url`, как при локальной разработке, предупреждение не появляется.

1058* **При выполнении**: в первый раз, когда запрос поступает с адреса вне этих приватных диапазонов, gateway регистрирует предупреждение и выпускает событие аудита [`access.public_client`](/docs/ru/claude-apps-gateway-deploy#logs), несущее IP клиента. Оба срабатывают один раз за процесс. Link-local адреса, `169.254.0.0/16` и `fe80::/10`, не считаются публичными. Gateway отвечает на `/healthz` и `/readyz` перед этой проверкой, поэтому проверки здоровья из публичных диапазонов не запускают её.1175* **При выполнении**: первый раз, когда запрос поступает с адреса вне этих частных диапазонов, шлюз регистрирует предупреждение и излучает событие аудита [`access.public_client`](/docs/ru/claude-apps-gateway-deploy#logs), несущее IP клиента. Оба срабатывают один раз на процесс. Адреса link-local, `169.254.0.0/16` и `fe80::/10`, не считаются публичными. Шлюз отвечает на `/healthz` и `/readyz` перед этой проверкой, поэтому проверки здоровья из публичных диапазонов не вызывают её.

1059 1176 

1060Оба сигнала используют адрес клиента, как его разрешает gateway. Если балансировщик нагрузки, port-forward или туннель передают трафик и не указаны в `listen.trusted_proxies`, gateway видит адрес реле, который обычно приватный, поэтому ни предупреждение при выполнении, ни список приватных разрешений не ловит трафик, передаваемый через него.1177Оба сигнала используют адрес клиента, как его разрешает шлюз. Если балансировщик нагрузки, переадресация портов или туннель передают трафик и не указаны в `listen.trusted_proxies`, шлюз видит адрес реле, который обычно частный, поэтому ни предупреждение при выполнении, ни список частных разрешений не ловит трафик, передаваемый через него.

1061 1178 

1062За таким фронтенд, установите [`listen.trusted_proxies`](#listen) сначала, чтобы gateway видел реальные адреса клиентов, и держите gateway и всё впереди него недостижимыми из публичного интернета независимо.1179За таким фронтенд, установите [`listen.trusted_proxies`](#listen) сначала, чтобы шлюз видел реальные адреса клиентов, и сохраняйте шлюз и всё впереди него недоступным из публичного интернета независимо.

1063 1180 

1064<h3 id="load_test_mode">1181<h3 id="load_test_mode">

1065 `load_test_mode`1182 `load_test_mode`

1066</h3>1183</h3>

1067 1184 

1068Блок `load_test_mode` позволяет вам нагрузочно тестировать gateway без вызова поставщика модели. Пока он включён, gateway строит и подписывает каждый запрос поставщика как обычно, отбрасывает его вместо отправки и потоком консервированный ответ обратно через его нормальный путь ответа. Ответ — это текст-заполнитель, который начинается с предложения, говорящего, что это консервированный.1185Блок `load_test_mode` позволяет вам нагрузочное тестирование шлюза без вызова поставщика модели. Пока он включён, шлюз строит и подписывает каждый запрос поставщика как обычно, отклоняет его вместо отправки и потоком консервированный ответ обратно через его нормальный путь ответа. Ответ — это текст-заполнитель, который начинается с предложения, говорящего, что это консервированный.

1069 1186 

1070Требует Claude Code v2.1.282 или позже на сервере gateway. Более ранние версии отказываются запускаться, когда ключ установлен, поэтому обновите каждую реплику перед добавлением блока и удалите его перед откатом.1187Требует Claude Code v2.1.282 или позже на сервере шлюза. Более ранний шлюз отказывается запускаться, когда находит ключ. Обновите каждую реплику перед добавлением блока и удалите блок перед откатом.

1071 1188 

1072Пример ниже включает режим с значениями по умолчанию, ответ из примерно 750 выходных токенов, потоком в течение примерно 10 секунд:1189Пример ниже включает режим с значениями по умолчанию, ответ примерно 750 токенов текста, потоком в течение примерно 10 секунд:

1073 1190 

1074```yaml theme={null}1191```yaml theme={null}

1075load_test_mode:1192load_test_mode:

1076 enabled: true1193 enabled: true

1077 reply_tokens: 750 # примерно сколько токенов текста несёт каждый консервированный ответ1194 reply_tokens: 750 # roughly how many tokens of text each canned reply carries

1078 reply_seconds: 9.5 # как долго потоком ответ занимает1195 reply_seconds: 9.5 # how long a streamed reply takes

1079```1196```

1080 1197 

1081| Поле | Обязательно | Описание |1198| Поле | Обязательно | Описание |

1082| - | - | - |1199| - | - | - |

1083| `enabled` | Да | `true` включает режим. `false` сохраняет ваши числа в файле с режимом выключенным. Gateway отказывается запускаться, если блок присутствует без него. |1200| `enabled` | Да | `true` включает режим. `false` сохраняет ваши числа в файле с выключенным режимом. Шлюз отказывается запускаться, если блок присутствует без него. |

1084| `reply_tokens` | Нет | По умолчанию `750`. Примерно сколько токенов текста несёт каждый консервированный ответ, целое число от 1 до 100000. |1201| `reply_tokens` | Нет | По умолчанию `750`. Примерно сколько токенов текста несёт каждый консервированный ответ, целое число от 1 до 100000. |

1085| `reply_seconds` | Нет | По умолчанию `9.5`. Как долго потоком ответ занимает, от 0 до 600. `0` отправляет весь ответ сразу. Ответ на запрос без потока всегда приходит сразу. |1202| `reply_seconds` | Нет | По умолчанию `9.5`. Как долго потоком идёт ответ, от 0 до 600. `0` отправляет весь ответ сразу. Ответ на запрос без потока всегда приходит сразу. |

1086 1203 

1087Нагрузочный тест в этом режиме охватывает gateway, ваш Postgres и всё впереди gateway. Он не охватывает ограничения поставщика, скорость или сетевой путь.1204Нагрузочное тестирование в этом режиме охватывает шлюз, ваш Postgres и всё впереди шлюза. Это не охватывает ограничения, скорость или сетевой путь поставщика.

1088 1205 

1089Ни один запрос модели не отправляется поставщику, поэтому CPU реплики на запрос — это оценка и читает ниже, чем производство, которое также шифрует свой трафик поставщику. Подтвердите количество реплик с небольшим пилотом против реального поставщика. До v2.1.283 оценка читает намного ниже.1206Никакой запрос модели не отправляется поставщику, поэтому CPU реплики на запрос — это оценка и читается ниже, чем производство, которое также шифрует свой трафик поставщику. Подтвердите количество реплик с небольшим пилотом против реального поставщика. До v2.1.283 оценка читается намного ниже.

1090 1207 

1091Пока режим включён, запрос может нести заголовок `x-load-test-user`, содержащий целое число до семи цифр. Gateway считает каждое число отдельным разработчиком с электронной почтой и группами разработчика, чей токен пришёл с запросом.1208Пока режим включён, запрос может нести заголовок `x-load-test-user`, содержащий целое число до семи цифр. Шлюз считает каждое число отдельным разработчиком, с электронной почтой и группами разработчика, чей токен пришёл с запросом.

1092 1209 

1093Дайте развёртыванию нагрузочного теста свою собственную пустую базу данных, потому что gateway отказывается запускаться с режимом включённым против базы данных, в которой любой разработчик уже потратил что-то.1210Дайте развёртыванию нагрузочного тестирования свою собственную пустую базу данных, потому что шлюз отказывается запускаться с включённым режимом против базы данных, в которой какой-либо разработчик уже потратил что-либо.

1094 1211 

1095<Warning>1212<Warning>

1096 Никогда не включайте это для gateway, который используют разработчики. Каждый запрос получает консервированный ответ и ни одна модель не вызывается. Gateway регистрирует предупреждение `load_test_mode is on` при загрузке и отмечает каждое событие аудита `inference` [audit event](/docs/ru/claude-apps-gateway-deploy#logs) с `load_test: true` пока режим включён.1213 Никогда не включайте это для шлюза, который используют разработчики. Каждый запрос получает консервированный ответ и ни одна модель не вызывается. Шлюз регистрирует предупреждение `load_test_mode is on` при загрузке и отмечает каждое событие аудита `inference` [audit event](/docs/ru/claude-apps-gateway-deploy#logs) с `load_test: true` пока режим включён.

1097</Warning>1214</Warning>

1098 1215 

1099<h2 id="complete-example">1216<h2 id="complete-example">


1148 postgres_url: ${GATEWAY_POSTGRES_URL}1265 postgres_url: ${GATEWAY_POSTGRES_URL}

1149 # max_connections: 51266 # max_connections: 5

1150 # connect_timeout_seconds: 51267 # connect_timeout_seconds: 5

1268 # readiness_grace_seconds: 300 # продолжайте проходить проверку готовности через отказ базы данных

1151 1269 

1152# Включает /v1/organizations/spend_limits (зеркалирует Admin API Anthropic)1270# Включает /v1/organizations/spend_limits (зеркалирует Admin API Anthropic)

1153# и принудительное соблюдение лимитов расходов на разработчика на /v1/messages. Опустите для отключения.1271# и принудительное соблюдение лимитов расходов на разработчика на /v1/messages. Опустите для отключения.


1269 1387 

1270`parentSettingsBehavior: "merge"` сохраняет доставку Claude Desktop списка разрешённых исходящих соединений в его встроенные сеансы Claude Code; [Доставка политики в сеансы Claude Desktop](/docs/ru/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) объясняет механизм и где должно находиться согласие.1388`parentSettingsBehavior: "merge"` сохраняет доставку Claude Desktop списка разрешённых исходящих соединений в его встроенные сеансы Claude Code; [Доставка политики в сеансы Claude Desktop](/docs/ru/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) объясняет механизм и где должно находиться согласие.

1271 1389 

1390Чтобы помешать разработчикам обойти gateway с помощью переменной облачного провайдера или собственного `ANTHROPIC_BASE_URL`, добавьте `"allowedProviders": ["gateway"]` в тот же файл. Claude Code затем отказывает в каждом сеансе на машине, который не настроен для Cloud gateway, и допускает gateway только когда это тот, который называет `forceLoginGatewayUrl`, или тот, чей URL файл устанавливает в блоке `env` как `ANTHROPIC_BASE_URL`. `claude gateway` отказывается запускаться на машине, которая устанавливает список, поэтому держите ключ отключённым на хосте gateway. См. запись [`allowedProviders`](/docs/ru/settings-reference#allowedproviders) в справочнике параметров. Требуется Claude Code v2.1.285 или позже.

1391 

1272Развёртывайте файл `managed-settings.json` на каждое устройство, обычно через вашу платформу MDM. Путь файла отличается по платформе. См. [где каждый механизм хранит политику](/docs/ru/managed-settings#where-each-mechanism-stores-the-policy).1392Развёртывайте файл `managed-settings.json` на каждое устройство, обычно через вашу платформу MDM. Путь файла отличается по платформе. См. [где каждый механизм хранит политику](/docs/ru/managed-settings#where-each-mechanism-stores-the-policy).

1273 1393 

1274По умолчанию политика реестра в Windows или управляемые предпочтения plist в macOS заменяют файл `managed-settings.json` вместо слияния с ним, за исключением [ключей исключения и проверок между источниками выше](#precedence-with-other-managed-sources). Все три ключа в этом фрагменте следуют правилу источника с наивысшим приоритетом, поэтому парки, которые доставляют политику через Group Policy или профили конфигурации, должны поместить все три в этот механизм вместо этого.1394По умолчанию политика реестра в Windows или управляемые предпочтения plist в macOS заменяют файл `managed-settings.json` вместо слияния с ним, за исключением [ключей исключения и проверок между источниками выше](#precedence-with-other-managed-sources). Все три ключа в этом фрагменте следуют правилу источника с наивысшим приоритетом, поэтому парки, которые доставляют политику через Group Policy или профили конфигурации, должны поместить все три в этот механизм вместо этого.

1275 1395 

1276Для Claude Desktop установите ключ `bootstrapUrl` в собственной [управляемой конфигурации](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop на `<listen.public_url>/user/bootstrap`. Поток входа и политика для каждой группы затем совпадают с CLI после того, как политика на стороне сервера даёт согласие ключом `desktop`; без этого согласия `/user/bootstrap` возвращает 404. См. [Наложение Claude Desktop](#claude-desktop-overlay) для серверной части.1396Для Claude Desktop установите ключ `bootstrapUrl` в собственной [управляемой конфигурации](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop на `<listen.public_url>/user/bootstrap`. Поток входа и политика для каждой группы затем совпадают с CLI после того, как политика на стороне сервера даёт согласие ключом `desktop`; без этого согласия `/user/bootstrap` возвращает 404. См. [Наложение Claude Desktop](#claude-desktop-overlay) для серверной части.

1277 1397 

1278Claude Code соблюдает [`forceLoginGatewayUrl`](/docs/ru/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/ru/settings-reference#gatewayinternalnetworks) и значение `"gateway"` [`forceLoginMethod`](/docs/ru/settings-reference#forceloginmethod) только из управляемого источника на машине: `managed-settings.json`, plist macOS или реестр HKLM Windows, или помощник политики. Разработчик, устанавливающий их в своём собственном `~/.claude/settings.json`, не имеет эффекта, и также не имеет эффекта установка их в полезной нагрузке gateway.1398Claude Code соблюдает [`forceLoginGatewayUrl`](/docs/ru/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/ru/settings-reference#gatewayinternalnetworks) и значение `"gateway"` [`forceLoginMethod`](/docs/ru/settings-reference#forceloginmethod) только из управляемого источника на машине: `managed-settings.json`, plist macOS или реестр HKLM Windows, или помощник политики. Установка их в собственном `~/.claude/settings.json` разработчика или в полезной нагрузке gateway не настраивает вход в gateway.

1399 

1400Оставьте `forceLoginMethod` и `forceLoginOrgUUID` вне полезной нагрузки. Claude Code по-прежнему читает оба ключа из полезной нагрузки для проверки учётных данных при запуске, поэтому разработчик, который хранит выданные Anthropic учётные данные на машине, получает выход при запуске, описанный в разделе [Политика администратора требует вход в Cloud gateway](/docs/ru/errors#administrator-policy-requires-a-cloud-gateway-sign-in) даже после того, как они вошли.

1279 1401 

1280<h2 id="related">1402<h2 id="related">

1281 Связанное1403 Связанное

Details

1544Помимо конфигурации, которую вы создаёте, `~/.claude` содержит данные, которые Claude Code записывает во время сеансов. Эти файлы представляют собой простой текст. Всё, что проходит через инструмент, записывается в транскрипт на диск: содержимое файлов, вывод команд, вставленный текст.1544Помимо конфигурации, которую вы создаёте, `~/.claude` содержит данные, которые Claude Code записывает во время сеансов. Эти файлы представляют собой простой текст. Всё, что проходит через инструмент, записывается в транскрипт на диск: содержимое файлов, вывод команд, вставленный текст.

1545 1545 

1546<h3 id="cleaned-up-automatically">1546<h3 id="cleaned-up-automatically">

1547 Автоматически удаляется1547 Автоматическая очистка

1548</h3>1548</h3>

1549 1549 

1550Claude Code удаляет файлы в путях ниже, как только они становятся старше [`cleanupPeriodDays`](/docs/ru/settings-reference#cleanupperioddays), при условии, что он может безопасно определить период хранения. По умолчанию это 30 дней, минимум — 1 день; установка `0` приводит к ошибке валидации. Тот же порог возраста применяется к автоматическому удалению [orphaned worktrees](/docs/ru/worktrees#clean-up-subagent-and-background-session-worktrees).1550Claude Code удаляет файлы в путях ниже, как только они становятся старше [`cleanupPeriodDays`](/docs/ru/settings-reference#cleanupperioddays), при условии, что он может безопасно определить период хранения. По умолчанию это 30 дней, минимум — 1 день; установка `0` приводит к ошибке валидации. Тот же порог возраста применяется к автоматическому удалению [сиротских worktrees](/docs/ru/worktrees#clean-up-subagent-and-background-session-worktrees).

1551 1551 

1552| Путь в `~/.claude/` | Содержимое |1552| Путь в `~/.claude/` | Содержимое |

1553| - | - |1553| - | - |

1554| `projects/<project>/<session>.jsonl` | Полный транскрипт беседы: каждое сообщение, вызов инструмента и результат инструмента |1554| `projects/<project>/<session>.jsonl` | Полный транскрипт беседы: каждое сообщение, вызов инструмента и результат инструмента |

1555| `projects/<project>/<session>.orphaned-<timestamp>-<suffix>.jsonl`, `projects/<project>/<session>.jsonl.superseded-<timestamp>` | Предыдущий транскрипт сеанса, который Claude Code отложил вместо перезаписи или удаления. Он не отображается в средстве выбора сеанса |1555| `projects/<project>/<session>.orphaned-<timestamp>-<suffix>.jsonl`, `projects/<project>/<session>.jsonl.superseded-<timestamp>` | Предыдущий транскрипт сеанса, который Claude Code отложил вместо перезаписи или удаления. Не отображается в средстве выбора сеанса |

1556| `projects/<project>/<session>/subagents/` | Транскрипты беседы [Subagent](/docs/ru/sub-agents), удаляются вместе с транскриптом родительского сеанса при его устаревании |1556| `projects/<project>/<session>/subagents/` | Транскрипты беседы [Subagent](/docs/ru/sub-agents), удаляются вместе с транскриптом родительского сеанса при его устаревании |

1557| `projects/<project>/<session>/tool-results/` | Большие выходные данные инструментов, разделённые на отдельные файлы, и полноразмерные копии [изображений, возвращаемых инструментами MCP](/docs/ru/mcp#images-in-tool-results) |1557| `projects/<project>/<session>/tool-results/` | Большие выходные данные инструментов, перенесённые в отдельные файлы, и полноразмерные копии [изображений, возвращаемых инструментами MCP](/docs/ru/mcp#images-in-tool-results) |

1558| `file-history/<session>/` | Снимки файлов до редактирования, которые изменил Claude, используются для [восстановления контрольной точки](/docs/ru/checkpointing). Содержит снимки для 100 самых последних контрольных точек; файлы снимков, на которые не ссылается ни одна сохранённая контрольная точка, удаляются, за исключением первого снимка каждого файла |1558| `file-history/<session>/` | Снимки файлов до редактирования, которые Claude изменил, используются для [восстановления контрольной точки](/docs/ru/checkpointing). Содержит снимки для 100 самых последних контрольных точек; файлы снимков, на которые не ссылается ни одна сохранённая контрольная точка, удаляются, кроме первого снимка каждого файла |

1559| `plans/` | Файлы плана, написанные во время [режима плана](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode) |1559| `plans/` | Файлы плана, написанные во время [режима плана](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode) |

1560| `debug/` | Журналы отладки для каждого сеанса, записываются при включённой отладке, например при запуске с [`--debug`](/docs/ru/cli-reference#cli-flags) или выполнении `/debug` |1560| `debug/` | Журналы отладки для каждого сеанса, записываемые при включённой отладке, например при запуске с [`--debug`](/docs/ru/cli-reference#cli-flags) или выполнении `/debug` |

1561| `paste-cache/` | Содержимое больших вставок |1561| `paste-cache/` | Содержимое больших вставок |

1562| `image-cache/<session>/` | Прикреплённые изображения, сохранённые Claude Code v2.1.274 и более ранними версиями. Более поздние версии сохраняют вставленные и прикреплённые изображения вне `~/.claude`, в каталоге `images/` для каждого сеанса в временном каталоге, который контролирует [`CLAUDE_CODE_TMPDIR`](/docs/ru/env-vars). Очистка удаляет оставшиеся каталоги других сеансов здесь, независимо от их возраста. |1562| `image-cache/<session>/` | Изображения, прикреплённые и сохранённые Claude Code v2.1.274 и более ранними версиями. Более поздние версии сохраняют вставленные и прикреплённые изображения вне `~/.claude`, в каталоге `images/` для каждого сеанса в временном каталоге, который контролирует [`CLAUDE_CODE_TMPDIR`](/docs/ru/env-vars). Очистка удаляет оставшиеся каталоги других сеансов здесь, независимо от их возраста. |

1563| `uploads/<session>/` | Файлы, которые вы прикрепляете из веб-приложения или мобильного приложения, и фотографии, которые вы прикрепляете из мобильного приложения, при отправке сообщения в сеанс [Remote Control](/docs/ru/remote-control). Вложение в [облачный сеанс](/docs/ru/claude-code-on-the-web) сохраняется в собственной облачной среде этого сеанса, а не на вашей машине. |1563| `uploads/<session>/` | Файлы, которые вы прикрепляете из веб-приложения или мобильного приложения, и фотографии, которые вы прикрепляете из мобильного приложения, при отправке сообщения в сеанс [Remote Control](/docs/ru/remote-control). Вложение в [облачный сеанс](/docs/ru/claude-code-on-the-web) сохраняется в собственной облачной среде этого сеанса, а не на вашей машине. |

1564| `dev-mods/<session>/` | [Моды, которые написал Claude](/docs/ru/plugins/mods/create#ask-claude-for-a-mod) во время сеанса |

1564| `session-env/` | Метаданные окружения для каждого сеанса |1565| `session-env/` | Метаданные окружения для каждого сеанса |

1565| `tasks/` | Списки задач, написанные инструментами задач, один каталог на список |1566| `tasks/` | Списки задач, написанные инструментами задач, один каталог на список |

1566| `shell-snapshots/` | Псевдонимы, функции и параметры оболочки, захваченные при запуске и применяемые [инструментом Bash](/docs/ru/tools-reference#bash-tool-behavior) к каждой команде. Удаляются при корректном выходе. Очистка удаляет оставшиеся после сбоя. |1567| `shell-snapshots/` | Псевдонимы, функции и параметры оболочки, захваченные при запуске и применяемые [инструментом Bash](/docs/ru/tools-reference#bash-tool-behavior) к каждой команде. Удаляются при корректном выходе. Очистка удаляет оставшиеся после сбоя. |

1567| `backups/` | Более ранние версии `~/.claude.json`, скопированные при перезаписи файла Claude Code. Claude Code сохраняет пять самых новых, плюс копию любой версии, которую он не смог разобрать. |1568| `backups/` | Более ранние версии `~/.claude.json`, скопированные при перезаписи файла Claude Code. Claude Code сохраняет пять самых новых, плюс копию любой версии, которую он не смог разобрать. |

1568| `feedback-bundles/` | Отредактированные архивы транскриптов, написанные `/feedback` на сторонних поставщиках или когда учётные данные Anthropic не настроены, для отправки команде вашего аккаунта Anthropic |1569| `feedback-bundles/` | Отредактированные архивы транскриптов, написанные `/feedback` на сторонних поставщиков или когда учётные данные Anthropic не настроены, для отправки команде вашего аккаунта Anthropic |

1569| `feedback/drafts/` | Очередь [составленного Claude отзыва](/docs/ru/tools-reference#sendfeedback-tool-behavior), ожидающего вашего рассмотрения в `/feedback`. Очищается после `cleanupPeriodDays` или 30 дней, в зависимости от того, что меньше. Когда очередь достигает лимита в 10 черновиков, Claude Code удаляет самый старый черновик, чтобы освободить место. |1570| `feedback/drafts/` | Очередь [черновиков обратной связи, написанных Claude](/docs/ru/tools-reference#sendfeedback-tool-behavior), ожидающих вашего рассмотрения в `/feedback`. Очищается после `cleanupPeriodDays` или 30 дней, в зависимости от того, что меньше. Когда очередь достигает лимита в 10 черновиков, Claude Code удаляет самый старый черновик, чтобы освободить место. |

1570| `usage-data/` | `report.html` и копии отчётов с временными метками, написанные [`/insights`](/docs/ru/costs#analyze-your-usage-patterns), плюс кэшированные данные анализа для каждого сеанса, используемые для их построения |1571| `usage-data/` | `report.html` и копии отчётов с временными метками, написанные [`/insights`](/docs/ru/costs#analyze-your-usage-patterns), плюс кэшированные данные анализа для каждого сеанса, используемые для их построения |

1571| `skills/.trash/`, `plugins/.trash/` | [Skills](/docs/ru/skills#how-synced-skills-behave) и [plugins](/docs/ru/plugins/loading#synced-plugins), которые синхронизация claude.ai удалила, например после отключения одного на claude.ai или остановки синхронизации. Файлы остаются здесь, чтобы вы могли их восстановить, пока очистка их не удалит |1572| `skills/.trash/`, `plugins/.trash/` | [Навыки](/docs/ru/skills#how-synced-skills-behave) и [плагины](/docs/ru/plugins/loading#synced-plugins), которые синхронизация claude.ai удалила, например после отключения одного на claude.ai или остановки синхронизации. Файлы остаются здесь, чтобы вы могли их восстановить, пока очистка их не удалит |

1572| `plugins/installed_plugins.set-aside.<date>.<hash>.json`, `plugins/installed_plugins.unreadable.<date>.<hash>.kept` | Датированные копии, которые Claude Code создаёт перед перезаписью [`installed_plugins.json`](/docs/ru/plugins/loading#find-plugins-on-disk): записи об установке, которые он удалил, и содержимое файла, который он не смог прочитать. |1573| `plugins/installed_plugins.set-aside.<date>.<hash>.json`, `plugins/installed_plugins.unreadable.<date>.<hash>.kept` | Датированные копии, которые Claude Code создаёт перед перезаписью [`installed_plugins.json`](/docs/ru/plugins/loading#find-plugins-on-disk): записи об установке, которые он удалил, и содержимое файла, который он не смог прочитать. |

1573| `todos/`, `statsig/`, `logs/` | Устаревшие каталоги из более старых версий. Больше не записываются. Очистка удаляет их содержимое, а затем пустой каталог. |1574| `todos/`, `statsig/`, `logs/` | Устаревшие каталоги из более старых версий. Больше не записываются. Очистка удаляет их содержимое, а затем пустой каталог. |

1574 1575 

1575Файлы сеанса в `sessions/`, автоматическая память, а также транскрипты Claude Desktop и Cowork следуют своим собственным правилам хранения:1576Файлы сеанса в `sessions/`, автоматическая память, а также транскрипты Claude Desktop и Cowork следуют своим собственным правилам хранения:

1576 1577 

1577* **`sessions/`**: содержит один небольшой файл на работающий сеанс, используется для обнаружения одновременных сеансов и сбоев. Это не часть очистки на основе возраста: Claude Code удаляет каждый файл при выходе из сеанса и очищает остатки сбоев при следующем запуске.1578* **`sessions/`**: содержит один небольшой файл на запущенный сеанс, используется для обнаружения одновременных сеансов и сбоев. Это не часть очистки на основе возраста: Claude Code удаляет каждый файл при выходе из его сеанса и очищает остатки сбоев при следующем запуске.

1578* **Автоматическая память**: очистка не удаляет файлы памяти в каталоге [автоматической памяти](/docs/ru/memory#auto-memory) проекта, `projects/<project>/memory/`. Claude Code удаляет этот каталог только если он был пуст в течение всего периода хранения. До версии v2.1.228 очистка рассматривала папки внутри каталога памяти как данные сеанса и могла удалять старые файлы под ними.1579* **Автоматическая память**: очистка не удаляет файлы памяти в каталоге [автоматической памяти](/docs/ru/memory#auto-memory) проекта, `projects/<project>/memory/`. Claude Code удаляет этот каталог только если он был пуст в течение всего периода хранения. До v2.1.228 очистка рассматривала папки внутри каталога памяти как данные сеанса и могла удалять старые файлы под ними.

1579* **Транскрипты Claude Desktop и Cowork**: Claude Code сохраняет транскрипт сеанса, который вы запустили или последний раз продолжили в Claude Desktop или Cowork, в любом возрасте. Чтобы установить ограничение по возрасту для этих транскриптов, установите [`desktopSessionCleanupPeriodDays`](/docs/ru/settings-reference#desktopsessioncleanupperioddays). Когда [управляемые параметры](/docs/ru/managed-settings) устанавливают `cleanupPeriodDays`, Claude Code удаляет эти транскрипты после этого периода. Требуется Claude Code v2.1.248 или позже; более ранние версии удаляют их после `cleanupPeriodDays`.1580* **Транскрипты Claude Desktop и Cowork**: Claude Code сохраняет транскрипт сеанса, который вы запустили или последний раз продолжили в Claude Desktop или Cowork, в любом возрасте. Чтобы установить ограничение по возрасту для этих транскриптов, установите [`desktopSessionCleanupPeriodDays`](/docs/ru/settings-reference#desktopsessioncleanupperioddays). Когда [управляемые параметры](/docs/ru/managed-settings) устанавливают `cleanupPeriodDays`, Claude Code удаляет эти транскрипты после этого периода вместо этого. Требуется Claude Code v2.1.248 или позже; более ранние версии удаляют их после `cleanupPeriodDays`.

1580 1581 

1581Claude Code пропускает очистку на основе возраста в этих случаях:1582Claude Code пропускает очистку на основе возраста в этих случаях:

1582 1583 

1583* **Bare mode**: когда вы запускаете `claude -p` с [`--bare`](/docs/ru/headless#start-faster-with-bare-mode), Claude Code не запускает очистку в этом сеансе.1584* **Режим Bare**: когда вы запускаете `claude -p` с [`--bare`](/docs/ru/headless#start-faster-with-bare-mode), Claude Code не запускает очистку в этом сеансе.

1584* **Paused sweep**: если Claude Code не может безопасно определить период хранения, он приостанавливает очистку хранения; событие [`retention_sweep`](/docs/ru/monitoring-usage#retention-sweep-event) перечисляет каждую конфигурацию, которая её приостанавливает. Когда причина — файл параметров, который не может быть прочитан или разобран, или ошибки параметров с явно установленными `cleanupPeriodDays` или `desktopSessionCleanupPeriodDays`, Claude Code также показывает предупреждение в `/status` до тех пор, пока вы не исправите ошибки параметров. Когда [управляемые параметры](/docs/ru/server-managed-settings) предоставляют `cleanupPeriodDays`, Claude Code запускает очистку с управляемым значением в любом случае.1585* **Приостановленная очистка**: если Claude Code не может безопасно определить период хранения, он приостанавливает очистку хранения; событие [`retention_sweep`](/docs/ru/monitoring-usage#retention-sweep-event) перечисляет каждую конфигурацию, которая её приостанавливает. Когда причина — файл параметров, который не может быть прочитан или разобран, или ошибки параметров с явно установленными `cleanupPeriodDays` или `desktopSessionCleanupPeriodDays`, Claude Code также показывает предупреждение в `/status` до тех пор, пока вы не исправите ошибки параметров. Когда [управляемые параметры](/docs/ru/server-managed-settings) предоставляют `cleanupPeriodDays`, Claude Code запускает очистку с управляемым значением в любом случае.

1585 1586 

1586<h3 id="session-scratchpad-directory">1587<h3 id="session-scratchpad-directory">

1587 Каталог временной памяти сеанса1588 Каталог блокнота сеанса

1588</h3>1589</h3>

1589 1590 

1590Временная память — это каталог для каждого сеанса, который Claude Code предоставляет Claude для временных файлов: промежуточные результаты, вспомогательные скрипты и черновики, которые не принадлежат вашему проекту. Когда Claude говорит, что он сохранил что-то «в временную память», файл находится там. Claude использует его вместо `/tmp` и может создавать, редактировать и читать файлы в нём без запроса разрешения.1591Блокнот — это каталог для каждого сеанса, который Claude Code предоставляет Claude для временных файлов: промежуточные результаты, вспомогательные скрипты и черновики, которые не принадлежат вашему проекту. Когда Claude говорит, что он сохранил что-то «в блокнот», файл находится там. Claude использует его вместо `/tmp` и может создавать, редактировать и читать файлы в нём без запроса разрешения.

1591 1592 

1592Временная память находится в временном каталоге Claude Code, а не в `~/.claude`. Найдите путь текущего сеанса для вашей платформы:1593Блокнот находится в временном каталоге Claude Code, а не в `~/.claude`. Найдите путь текущего сеанса для вашей платформы:

1593 1594 

1594* **macOS**: `/private/tmp/claude-<uid>/<project>/<session-id>/scratchpad/`1595* **macOS**: `/private/tmp/claude-<uid>/<project>/<session-id>/scratchpad/`

1595* **Linux**: `/tmp/claude-<uid>/<project>/<session-id>/scratchpad/`, или той же формы под `$TMPDIR`, когда ваша система её устанавливает1596* **Linux**: `/tmp/claude-<uid>/<project>/<session-id>/scratchpad/`, или такая же структура под `$TMPDIR`, когда ваша система её устанавливает

1596* **Windows**: `%TEMP%\claude\<project>\<session-id>\scratchpad\`1597* **Windows**: `%TEMP%\claude\<project>\<session-id>\scratchpad\`

1597 1598 

1598`<project>` — это путь вашего рабочего каталога со всеми символами, кроме букв и цифр, заменёнными на `-`, например `-Users-you-my-project`. Если вы установите [`CLAUDE_CODE_TMPDIR`](/docs/ru/env-vars), дерево переместится в этот каталог. Hooks получают путь текущего сеанса как [`scratchpad_dir`](/docs/ru/hooks#common-input-fields).1599`<project>` — это путь вашего рабочего каталога со всеми символами, кроме букв и цифр, заменёнными на `-`, например `-Users-you-my-project`. Если вы установите [`CLAUDE_CODE_TMPDIR`](/docs/ru/env-vars), дерево переместится в этот каталог вместо этого. Hooks получают путь текущего сеанса как [`scratchpad_dir`](/docs/ru/hooks#common-input-fields).

1599 1600 

1600Файлы временной памяти существуют столько же, сколько транскрипт сеанса: [очистка хранения](#cleaned-up-automatically) удаляет каталог при удалении транскрипта, и [`claude project purge`](#clear-local-data) не трогает временный каталог. Поскольку каталог находится в системном временном расположении, ваша операционная система также может его очистить, например при перезагрузке. Чтобы сохранить что-то, что Claude написал там, попросите Claude переместить это в ваш проект.1601Файлы блокнота существуют столько же, сколько транскрипт сеанса: [очистка хранения](#cleaned-up-automatically) удаляет каталог при удалении транскрипта, и [`claude project purge`](#clear-local-data) не трогает временный каталог. Поскольку каталог находится в системном временном расположении, ваша операционная система также может его очистить, например при перезагрузке. Чтобы сохранить что-то, что написал Claude, попросите Claude переместить это в ваш проект.

1601 1602 

1602Сеанс имеет временную память только когда выполняются все эти условия:1603Сеанс имеет блокнот только когда выполняются все эти условия:

1603 1604 

1604* Вы вошли с учётной записью claude.ai, а не с ключом API1605* Вы вошли с учётной записью claude.ai, а не с ключом API

1605* Сеанс использует Anthropic API, а не Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry1606* Сеанс использует Anthropic API, а не Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry


1609 Сохраняется до удаления вручную1610 Сохраняется до удаления вручную

1610</h3>1611</h3>

1611 1612 

1612Очистка хранения не удаляет пути ниже. Claude Code сохраняет их до удаления вручную, за исключением двух кэшей, которые он удаляет при выходе.1613Очистка хранения не удаляет пути ниже. Claude Code сохраняет их до удаления вручную, кроме двух кэшей, которые он удаляет при выходе.

1613 1614 

1614| Путь в `~/.claude/` | Содержимое |1615| Путь в `~/.claude/` | Содержимое |

1615| - | - |1616| - | - |

1616| `history.jsonl` | Каждый запрос, который вы ввели, с временной меткой и путём проекта. Используется для вызова стрелкой вверх, поиска истории `Ctrl+R` и завершения команды оболочки `!`. |1617| `history.jsonl` | Каждый запрос, который вы ввели, с временной меткой и путём проекта. Используется для вызова стрелкой вверх, поиска истории `Ctrl+R` и завершения команды оболочки `!`. |

1617| `stats-cache.json` | Агрегированные подсчёты токенов и затрат, показанные `/usage` |1618| `stats-cache.json` | Агрегированные подсчёты токенов и затрат, показанные `/usage` |

1618| `remote-settings.json` | Кэшированная копия [управляемых параметров сервера](/docs/ru/server-managed-settings) для вашей организации, или `{}`, когда ваша организация не настроила никаких. Присутствует только когда сеанс их [получает](/docs/ru/server-managed-settings#platform-availability). Claude Code проверяет обновления при запуске и ежечасно во время сеанса. Claude Code удаляет его при выходе. |1619| `remote-settings.json` | Кэшированная копия [управляемых параметров сервера](/docs/ru/server-managed-settings) для вашей организации, или `{}` когда ваша организация не настроила никаких. Присутствует только когда сеанс их [получает](/docs/ru/server-managed-settings#platform-availability). Claude Code проверяет обновления при запуске и ежечасно во время сеанса. Claude Code удаляет его при выходе. |

1619| `cache/changelog.md` | Кэшированная копия журнала изменений Claude Code, показанная `/release-notes`. Обновляется в фоне. |1620| `cache/changelog.md` | Кэшированная копия журнала изменений Claude Code, показанная `/release-notes`. Обновляется в фоне. |

1620| `policy-limits.json` | Кэшированные параметры политики функций для вашей организации. Присутствует только для некоторых типов аккаунтов. Обновляется автоматически. Файл `policy-limits.json.stamp.json` записывает, какому аккаунту или ключу API принадлежит кэш. Claude Code удаляет оба файла при выходе. |1621| `policy-limits.json` | Кэшированные параметры политики функций для вашей организации. Присутствует только для некоторых типов аккаунтов. Обновляется автоматически. Файл-спутник `policy-limits.json.stamp.json` записывает, какому аккаунту или ключу API принадлежит кэш. Claude Code удаляет оба файла при выходе. |

1621 1622 

1622<span id="state-files-to-keep" />1623<span id="state-files-to-keep" />

1623 1624 


1628* `jobs/` и `daemon/`: состояние [фонового сеанса](/docs/ru/agent-view#where-state-is-stored)1629* `jobs/` и `daemon/`: состояние [фонового сеанса](/docs/ru/agent-view#where-state-is-stored)

1629 1630 

1630<h3 id="plaintext-storage">1631<h3 id="plaintext-storage">

1631 Хранение в виде простого текста1632 Хранилище в виде простого текста

1632</h3>1633</h3>

1633 1634 

1634Транскрипты и история не зашифрованы в покое. Разрешения файлов ОС — единственная защита. Если инструмент читает файл `.env` или команда выводит учётные данные, это значение записывается в `projects/<project>/<session>.jsonl`. Чтобы снизить риск:1635Транскрипты и история не зашифрованы в покое. Разрешения файлов ОС — единственная защита. Если инструмент читает файл `.env` или команда выводит учётные данные, это значение записывается в `projects/<project>/<session>.jsonl`. Чтобы снизить риск:

1635 1636 

1636* Уменьшите `cleanupPeriodDays`, чтобы сократить время хранения транскриптов Claude Code1637* Уменьшите `cleanupPeriodDays`, чтобы сократить время хранения транскриптов Claude Code

1637* Установите [`desktopSessionCleanupPeriodDays`](/docs/ru/settings-reference#desktopsessioncleanupperioddays), чтобы установить ограничение по возрасту для транскриптов Claude Desktop и Cowork1638* Установите [`desktopSessionCleanupPeriodDays`](/docs/ru/settings-reference#desktopsessioncleanupperioddays), чтобы также установить ограничение по возрасту для транскриптов Claude Desktop и Cowork

1638* Установите переменную окружения [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/ru/env-vars), чтобы пропустить запись транскриптов и истории запросов в любом режиме. В неинтерактивном режиме вы можете вместо этого передать `--no-session-persistence` вместе с `-p`, или установить `persistSession: false` в TypeScript Agent SDK; Python SDK не имеет эквивалентного параметра.1639* Установите переменную окружения [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/ru/env-vars), чтобы пропустить запись транскриптов и истории запросов в любом режиме. В неинтерактивном режиме вы можете вместо этого передать `--no-session-persistence` вместе с `-p`, или установить `persistSession: false` в TypeScript Agent SDK; Python SDK не имеет эквивалентного параметра.

1639* Используйте [правила разрешений](/docs/ru/permissions) для запрета чтения файлов учётных данных1640* Используйте [правила разрешений](/docs/ru/permissions) для запрета чтения файлов учётных данных

1640 1641 

1641<h3 id="clear-local-data">1642<h3 id="clear-local-data">

1642 Очистить локальные данные1643 Очистка локальных данных

1643</h3>1644</h3>

1644 1645 

1645Запустите `claude project purge`, чтобы удалить состояние, которое Claude Code хранит для одного проекта. Он удаляет:1646Запустите `claude project purge`, чтобы удалить состояние, которое Claude Code хранит для одного проекта. Это удаляет:

1646 1647 

1647* Транскрипты и автоматическую память в `projects/`1648* Транскрипты и автоматическую память в `projects/`

1648* Записи `tasks/`, `debug/` и `file-history/` для каждого сеанса1649* Записи `tasks/`, `debug/` и `file-history/` для каждого сеанса

1649* Совпадающие строки запросов в `history.jsonl`1650* Совпадающие строки запроса в `history.jsonl`

1650* Запись проекта в `~/.claude.json`1651* Запись проекта в `~/.claude.json`

1651 1652 

1652Изображения, которые вы вставили или прикрепили в сеансах проекта, и [временная память](#session-scratchpad-directory) каждого сеанса хранятся в временном каталоге Claude Code, а не в `~/.claude`, поэтому очистка их не удаляет. [Очистка хранения](#cleaned-up-automatically) всё ещё удаляет изображения, как только они становятся старше `cleanupPeriodDays`; временная память очищенного сеанса остаётся до удаления вручную или пока ваша операционная система не очистит временный каталог.1653Изображения, которые вы вставили или прикрепили в сеансах проекта, и [блокнот](#session-scratchpad-directory) каждого сеанса хранятся в временном каталоге Claude Code, а не в `~/.claude`, поэтому очистка их не удаляет. [Очистка хранения](#cleaned-up-automatically) всё ещё удаляет изображения, как только они становятся старше `cleanupPeriodDays`; блокнот очищенного сеанса остаётся до удаления вручную или пока ваша операционная система не очистит временный каталог.

1653 1654 

1654Команда выводит полный план удаления и запрашивает подтверждение перед удалением чего-либо.1655Команда выводит полный план удаления и запрашивает подтверждение перед удалением чего-либо.

1655 1656 

1656Примеры ниже используют `~/work/my-repo` в качестве заполнителя. Замените его на путь к вашему проекту. Если состояние не совпадает с путём, команда выводит ошибку и выходит со статусом 1.1657Примеры ниже используют `~/work/my-repo` как заполнитель. Замените его на путь к вашему проекту. Если состояние не совпадает с путём, команда выводит ошибку и выходит со статусом 1.

1657 1658 

1658Просмотрите план без удаления:1659Предпросмотр плана без удаления:

1659 1660 

1660```bash theme={null}1661```bash theme={null}

1661claude project purge ~/work/my-repo --dry-run1662claude project purge ~/work/my-repo --dry-run


1678Dry run: 3 item(s) would be deleted.1679Dry run: 3 item(s) would be deleted.

1679```1680```

1680 1681 

1681Удалите с одним запросом подтверждения:1682Удалить с одним запросом подтверждения:

1682 1683 

1683```bash theme={null}1684```bash theme={null}

1684claude project purge ~/work/my-repo1685claude project purge ~/work/my-repo


1694claude project purge ~/work/my-repo --yes1695claude project purge ~/work/my-repo --yes

1695```1696```

1696 1697 

1697Передайте `--all` вместо пути, чтобы очистить состояние для каждого проекта одновременно, что удаляет `history.jsonl` полностью, а не фильтрует его. Передайте `-i`, чтобы пройти через план удаления по одному элементу за раз.1698Передайте `--all` вместо пути, чтобы очистить состояние для каждого проекта сразу, что удаляет `history.jsonl` полностью, а не фильтруя его. Передайте `-i`, чтобы пройти через план удаления по одному элементу за раз.

1698 1699 

1699Команда оставляет `shell-snapshots/` и `backups/` в покое, потому что они не ограничены проектом, и предупреждает о них в выводе плана.1700Команда оставляет `shell-snapshots/` и `backups/` в покое, потому что они не ограничены проектом, и предупреждает о них в выводе плана.

1700 1701 

1701Вы также можете удалить любой из путей данных приложения выше вручную, за исключением [файлов состояния для сохранения](#state-files-to-keep). Новые сеансы не затронуты. Таблица ниже показывает, что вы теряете для прошлых сеансов.1702Вы также можете удалить любой из путей данных приложения выше вручную, кроме [файлов состояния для сохранения](#state-files-to-keep). Новые сеансы не затронуты. Таблица ниже показывает, что вы теряете для прошлых сеансов.

1702 1703 

1703| Удалить | Вы теряете |1704| Удалить | Вы теряете |

1704| - | - |1705| - | - |

1705| `~/.claude/projects/` | Возобновление, продолжение и перемотка для прошлых сеансов, и автоматическая память для каждого проекта |1706| `~/.claude/projects/` | Возобновление, продолжение и перемотку для прошлых сеансов, и автоматическую память для каждого проекта |

1706| `~/.claude/history.jsonl` | Вызов запроса стрелкой вверх, поиск истории `Ctrl+R` и завершение команды оболочки `!` |1707| `~/.claude/history.jsonl` | Вызов запроса стрелкой вверх, поиск истории `Ctrl+R` и завершение команды оболочки `!` |

1707| `~/.claude/paste-cache/` | Вставленный текст в вызванных запросах; см. [вставка большого содержимого](/docs/ru/terminal-config#paste-large-content) |1708| `~/.claude/paste-cache/` | Вставленный текст в вызванных запросах; см. [вставка большого содержимого](/docs/ru/terminal-config#paste-large-content) |

1708| `~/.claude/uploads/` | Вложения, на которые ссылаются прошлые сеансы [Remote Control](/docs/ru/remote-control) по пути |1709| `~/.claude/uploads/` | Вложения, на которые ссылаются прошлые сеансы [Remote Control](/docs/ru/remote-control) по пути |

1709| `~/.claude/file-history/` | Восстановление контрольной точки для прошлых сеансов |1710| `~/.claude/file-history/` | Восстановление контрольной точки для прошлых сеансов |

1710| `~/.claude/stats-cache.json` | Исторические итоги, показанные `/usage` |1711| `~/.claude/stats-cache.json` | Исторические итоги, показанные `/usage` |

1711| `~/.claude/usage-data/` | Прошлые отчёты [`/insights`](/docs/ru/costs#analyze-your-usage-patterns) и кэшированные данные анализа, используемые для их построения |1712| `~/.claude/usage-data/` | Прошлые отчёты [`/insights`](/docs/ru/costs#analyze-your-usage-patterns) и кэшированные данные анализа, используемые для их построения |

1712| `~/.claude/feedback-bundles/` | Отзывы и архивы отчётов об ошибках, которые вы ещё не отправили команде вашего аккаунта Anthropic |1713| `~/.claude/feedback-bundles/` | Архивы обратной связи и отчётов об ошибках, которые вы ещё не отправили команде вашего аккаунта Anthropic |

1713| `~/.claude/feedback/drafts/` | [Составленный Claude отзыв](/docs/ru/tools-reference#sendfeedback-tool-behavior), который вы не отправили |1714| `~/.claude/feedback/drafts/` | [Черновики обратной связи, написанные Claude](/docs/ru/tools-reference#sendfeedback-tool-behavior), которые вы не отправили |

1714| `~/.claude/remote-settings.json` | Ничего. Повторно получается при следующем запуске. |1715| `~/.claude/remote-settings.json` | Ничего. Повторно получается при следующем запуске. |

1715| `~/.claude/cache/changelog.md` | Ничего. Обновляется в фоне. |1716| `~/.claude/cache/changelog.md` | Ничего. Обновляется в фоне. |

1716| `~/.claude/policy-limits.json` | Ничего. Обновляется автоматически. |1717| `~/.claude/policy-limits.json` | Ничего. Обновляется автоматически. |

1717| `~/.claude/tasks/` | Списки задач, которые возобновлённый сеанс подхватит |1718| `~/.claude/tasks/` | Списки задач, которые возобновлённый сеанс подхватит |

1718| `~/.claude/skills/.trash/`, `~/.claude/plugins/.trash/` | Возможность восстановления [синхронизированных skills](/docs/ru/skills#how-synced-skills-behave) и [синхронизированных plugins](/docs/ru/plugins/loading#synced-plugins), которые Claude Code удалил |1719| `~/.claude/skills/.trash/`, `~/.claude/plugins/.trash/` | Возможность восстановления [синхронизированных навыков](/docs/ru/skills#how-synced-skills-behave) и [синхронизированных плагинов](/docs/ru/plugins/loading#synced-plugins), которые Claude Code удалил |

1719| `~/.claude/plugins/installed_plugins.set-aside.<date>.<hash>.json`, `~/.claude/plugins/installed_plugins.unreadable.<date>.<hash>.kept` | Копии записей об установке плагинов, которые Claude Code удалил, или содержимое файла, который он не смог прочитать. Ничто их не читает обратно |1720| `~/.claude/plugins/installed_plugins.set-aside.<date>.<hash>.json`, `~/.claude/plugins/installed_plugins.unreadable.<date>.<hash>.kept` | Копии записей об установке плагинов, которые Claude Code удалил или не смог прочитать. Ничто их не читает обратно |

1720| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/session-env/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Ничего видимого пользователю |1721| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/session-env/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Ничего видимого пользователю |

1721| `~/.claude/todos/`, `~/.claude/statsig/`, `~/.claude/logs/`, `~/.claude/image-cache/` | Ничего. Устаревшие каталоги, не записываемые текущими версиями. |1722| `~/.claude/todos/`, `~/.claude/statsig/`, `~/.claude/logs/`, `~/.claude/image-cache/` | Ничего. Устаревшие каталоги, не записываемые текущими версиями. |

1722 1723 

1723Не удаляйте `~/.claude.json`, `~/.claude/settings.json` или `~/.claude/plugins/`: они содержат вашу аутентификацию, предпочтения и установленные plugins.1724Не удаляйте `~/.claude.json`, `~/.claude/settings.json` или `~/.claude/plugins/`: они содержат вашу аутентификацию, предпочтения и установленные плагины.

1724 1725 

1725<h2 id="related-resources">1726<h2 id="related-resources">

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

Details

84| `--dangerously-skip-permissions` | Пропустить запросы разрешения. Эквивалентно `--permission-mode bypassPermissions`. См. [режимы разрешения](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) для информации о том, что это пропускает и что не пропускает. Для сеансов, запущенных с `--bg`, режим [сохраняется при перезапуске сеанса супервизором](/docs/ru/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |84| `--dangerously-skip-permissions` | Пропустить запросы разрешения. Эквивалентно `--permission-mode bypassPermissions`. См. [режимы разрешения](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) для информации о том, что это пропускает и что не пропускает. Для сеансов, запущенных с `--bg`, режим [сохраняется при перезапуске сеанса супервизором](/docs/ru/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |

85| `--debug` | Включить режим отладки с дополнительной фильтрацией категорий, такой как `--debug='mcp,startup'` или `--debug='!1p'`. Фильтр привязывается только в форме `=`; разделённый пробелом фильтр включает режим отладки без фильтрации | `claude --debug='mcp,startup'` |85| `--debug` | Включить режим отладки с дополнительной фильтрацией категорий, такой как `--debug='mcp,startup'` или `--debug='!1p'`. Фильтр привязывается только в форме `=`; разделённый пробелом фильтр включает режим отладки без фильтрации | `claude --debug='mcp,startup'` |

86| `--debug-file <path>` | Записать журналы отладки в конкретный путь файла. Неявно включает режим отладки. Имеет приоритет над `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |86| `--debug-file <path>` | Записать журналы отладки в конкретный путь файла. Неявно включает режим отладки. Имеет приоритет над `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |

87| `--desktop` | Открыть [приложение Claude Desktop](/docs/ru/desktop) в текущем каталоге и выйти без запуска сеанса в терминале. Добавьте `--continue` или `--resume` с ID сеанса для [открытия этого сеанса в Desktop](/docs/ru/desktop#coming-from-the-cli) вместо этого. `--resume` здесь принимает только ID сеанса, не имя или путь транскрипта. Не принимает приглашение и никакие другие флаги, кроме `--verbose` и флагов `--debug`, так как приложение само запускает сеанс. Доступно на macOS и x64 Windows, когда вы вошли с подпиской Claude. Требует Claude Code v2.1.285 или позже | `claude --desktop` |

87| `--disable-slash-commands` | Отключить все skills и команды для этого сеанса | `claude --disable-slash-commands` |88| `--disable-slash-commands` | Отключить все skills и команды для этого сеанса | `claude --disable-slash-commands` |

88| `--disallowedTools`, `--disallowed-tools` | Правила отрицания. Простое имя инструмента удаляет соответствующие инструменты из контекста Claude: `"Edit"` удаляет Edit, `"*"` удаляет каждый инструмент, и `"mcp__*"` удаляет каждый MCP инструмент. Правило с областью действия, такое как `Bash(rm *)`, оставляет инструмент доступным и отрицает только вызовы, которые совпадают [как написано](/docs/ru/permissions#bash-rule-limits). Правило, называющее [`EndConversation`](/docs/ru/tools-reference#endconversation-tool-behavior), не может удалить его, пока остаётся любой другой инструмент | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |89| `--disallowedTools`, `--disallowed-tools` | Правила отрицания. Простое имя инструмента удаляет соответствующие инструменты из контекста Claude: `"Edit"` удаляет Edit, `"*"` удаляет каждый инструмент, и `"mcp__*"` удаляет каждый MCP инструмент. Правило с областью действия, такое как `Bash(rm *)`, оставляет инструмент доступным и отрицает только вызовы, которые совпадают [как написано](/docs/ru/permissions#bash-rule-limits). Правило, называющее [`EndConversation`](/docs/ru/tools-reference#endconversation-tool-behavior), не может удалить его, пока остаётся любой другой инструмент | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

89| `--effort` | Установить [уровень усилий](/docs/ru/model-config#adjust-effort-level) для текущего сеанса. Опции: `low`, `medium`, `high`, `xhigh`, `max` или `ultracode`. Доступные уровни зависят от модели. `ultracode` запускает сеанс с усилием `xhigh` с включённым [ultracode](/docs/ru/workflows#let-claude-decide-with-ultracode) и требует Claude Code v2.1.203 или позже. Переопределяет параметры [`modelSettings`](/docs/ru/settings-reference#modelsettings) и [`effortLevel`](/docs/ru/settings-reference#effortlevel) для этого сеанса и не сохраняется | `claude --effort high` |90| `--effort` | Установить [уровень усилий](/docs/ru/model-config#adjust-effort-level) для текущего сеанса. Опции: `low`, `medium`, `high`, `xhigh`, `max` или `ultracode`. Доступные уровни зависят от модели. `ultracode` запускает сеанс с усилием `xhigh` с включённым [ultracode](/docs/ru/workflows#let-claude-decide-with-ultracode) и требует Claude Code v2.1.203 или позже. Переопределяет параметры [`modelSettings`](/docs/ru/settings-reference#modelsettings) и [`effortLevel`](/docs/ru/settings-reference#effortlevel) для этого сеанса и не сохраняется | `claude --effort high` |


111| `--no-chrome` | Отключить [интеграцию браузера Chrome](/docs/ru/chrome) для этого сеанса | `claude --no-chrome` |112| `--no-chrome` | Отключить [интеграцию браузера Chrome](/docs/ru/chrome) для этого сеанса | `claude --no-chrome` |

112| `--no-session-persistence` | Отключить сохранение сеанса, чтобы сеансы не сохранялись на диск и не могли быть возобновлены. Только режим печати. Переменная окружения [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/ru/env-vars) делает то же самое в любом режиме | `claude -p --no-session-persistence "query"` |113| `--no-session-persistence` | Отключить сохранение сеанса, чтобы сеансы не сохранялись на диск и не могли быть возобновлены. Только режим печати. Переменная окружения [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/ru/env-vars) делает то же самое в любом режиме | `claude -p --no-session-persistence "query"` |

113| `--output-format` | Указать формат вывода для режима печати (опции: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |114| `--output-format` | Указать формат вывода для режима печати (опции: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |

114| `--permission-mode` | Начать в указанном [режиме разрешения](/docs/ru/permission-modes). Принимает `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions` или `manual` как псевдоним для `default`. Псевдоним `manual` выбирает режим разрешения, который UI обозначает как Manual и требует Claude Code v2.1.200 или позже; `claude --help` выводит его вместо `default`, и оба значения работают. Переопределяет `defaultMode` из файлов параметров. Без этого флага или `--dangerously-skip-permissions` новый сеанс начинается в режиме разрешения, описанном в [какой режим разрешения начинает сеанс](/docs/ru/permission-modes#which-mode-a-session-starts-in). Для `-p` это `default`, когда ничего не настроено | `claude --permission-mode plan` |115| `--permission-mode` | Начать в указанном [режиме разрешения](/docs/ru/permission-modes). Принимает `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions` или `manual` как псевдоним для `default`. Псевдоним `manual` выбирает режим разрешения, который UI обозначает как Manual и требует Claude Code v2.1.200 или позже; `claude --help` выводит его вместо `default`, и оба значения работают. Переопределяет `defaultMode` из файлов параметров. Без этого флага или `--dangerously-skip-permissions` новый сеанс начинается в режиме разрешения, описанном в [какой режим разрешения начинает сеанс](/docs/ru/permission-modes#which-mode-a-session-starts-in), который также охватывает то, в каком режиме начинается запуск `-p` | `claude --permission-mode plan` |

115| `--permission-prompt-tool` | Указать инструмент MCP для обработки запросов разрешения в неинтерактивном режиме. Claude Code ждёт подключения MCP сервера этого инструмента перед запуском первого хода, до стартового таймаута [`MCP_TIMEOUT`](/docs/ru/env-vars), 30 секунд по умолчанию. <br /><br />Инструмент приглашения не может одобрить инструмент MCP, отмеченный как [требующий взаимодействия пользователя](/docs/ru/mcp#require-approval-for-a-specific-tool): Claude Code преобразует результат `allow` для одного в отрицание. Это ограничение требует Claude Code v2.1.199 или позже | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |116| `--permission-prompt-tool` | Указать инструмент MCP для обработки запросов разрешения в неинтерактивном режиме. Claude Code ждёт подключения MCP сервера этого инструмента перед запуском первого хода, до стартового таймаута [`MCP_TIMEOUT`](/docs/ru/env-vars), 30 секунд по умолчанию. <br /><br />Инструмент приглашения не может одобрить инструмент MCP, отмеченный как [требующий взаимодействия пользователя](/docs/ru/mcp#require-approval-for-a-specific-tool): Claude Code преобразует результат `allow` для одного в отрицание. Это ограничение требует Claude Code v2.1.199 или позже | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

116| `--permission-prompts` | Установить, кто отвечает на запросы разрешения в режиме печати. С по умолчанию `host`, Claude Code отправляет их хосту Agent SDK или инструменту `--permission-prompt-tool`. Передайте `none`, когда никто не может ответить, и Claude Code отклоняет их вместо этого. См. [Отключить запросы разрешения в автоматических запусках](/docs/ru/headless#turn-off-permission-prompts-in-unattended-runs). Требует Claude Code v2.1.259 или позже | `claude -p --permission-prompts none "query"` |117| `--permission-prompts` | Установить, кто отвечает на запросы разрешения в режиме печати. С по умолчанию `host`, Claude Code отправляет их хосту Agent SDK или инструменту `--permission-prompt-tool`. Передайте `none`, когда никто не может ответить, и Claude Code отклоняет их вместо этого. См. [Отключить запросы разрешения в автоматических запусках](/docs/ru/headless#turn-off-permission-prompts-in-unattended-runs). Требует Claude Code v2.1.259 или позже | `claude -p --permission-prompts none "query"` |

117| `--plugin-dir` | Загрузить plugin из каталога или архива `.zip`, или несколько из [папки plugins](/docs/ru/plugins/create#load-a-directory-or-archive-for-one-session), только для этого сеанса. Каждый флаг принимает один путь. Повторите флаг для нескольких путей: `--plugin-dir A --plugin-dir B.zip`. Передача папки plugins требует Claude Code v2.1.265 или позже | `claude --plugin-dir ./my-plugin` |118| `--plugin-dir` | Загрузить plugin из каталога или архива `.zip`, или несколько из [папки plugins](/docs/ru/plugins/create#load-a-directory-or-archive-for-one-session), только для этого сеанса. Каждый флаг принимает один путь. Повторите флаг для нескольких путей: `--plugin-dir A --plugin-dir B.zip`. Передача папки plugins требует Claude Code v2.1.265 или позже | `claude --plugin-dir ./my-plugin` |

118| `--plugin-url` | Получить plugin архив `.zip` из URL только для этого сеанса. Повторите флаг для нескольких plugins, или передайте разделённые пробелом URL в одном значении в кавычках | `claude --plugin-url https://example.com/plugin.zip` |119| `--plugin-url` | Получить plugin архив `.zip` из URL только для этого сеанса. Повторите флаг для нескольких plugins, или передайте разделённые пробелом URL в одном значении в кавычках | `claude --plugin-url https://example.com/plugin.zip` |

119| `--print`, `-p` | Вывести ответ без интерактивного режима (см. [документацию Agent SDK](/docs/ru/agent-sdk/overview) для деталей программного использования) | `claude -p "query"` |120| `--print`, `-p` | Вывести ответ без интерактивного режима (см. [документацию Agent SDK](/docs/ru/agent-sdk/overview) для деталей программного использования). Для `--resume` на фоновом сеансе, который всё ещё работает, см. [Возобновить сеанс](/docs/ru/sessions#resume-a-running-background-session) | `claude -p "query"` |

120| `--prompt-suggestions` | Выдать сообщение `prompt_suggestion` с предсказанным следующим приглашением пользователя после каждого хода, который генерирует один; очень короткие беседы могут не производить ни одного. Требует `--print`, `--output-format stream-json` и `--verbose`. См. [Предложения приглашений](/docs/ru/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |121| `--prompt-suggestions` | Выдать сообщение `prompt_suggestion` с предсказанным следующим приглашением пользователя после каждого хода, который генерирует один; очень короткие беседы могут не производить ни одного. Требует `--print`, `--output-format stream-json` и `--verbose`. См. [Предложения приглашений](/docs/ru/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |

121| `--ref <branch>` | С `--environment`, основать новый checkout сеанса на именованном ref вместо локального `HEAD` | `claude -p "Run the smoke test" --environment ccpool_abc123 --ref main` |122| `--ref <branch>` | С `--environment`, основать новый checkout сеанса на именованном ref вместо локального `HEAD` | `claude -p "Run the smoke test" --environment ccpool_abc123 --ref main` |

122| `--remote` | Устаревший псевдоним для `--cloud`, включая форму существующего сеанса | `claude --remote "Fix the login bug"` |123| `--remote` | Устаревший псевдоним для `--cloud`, включая форму существующего сеанса | `claude --remote "Fix the login bug"` |


124| `--remote-control-session-name-prefix <prefix>` | Префикс для автоматически генерируемых имён сеансов [Remote Control](/docs/ru/remote-control) при отсутствии явного имени. По умолчанию используется имя хоста вашей машины, создавая имена вроде `myhost-graceful-unicorn`. Установите `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` для того же эффекта | `claude remote-control --remote-control-session-name-prefix dev-box` |125| `--remote-control-session-name-prefix <prefix>` | Префикс для автоматически генерируемых имён сеансов [Remote Control](/docs/ru/remote-control) при отсутствии явного имени. По умолчанию используется имя хоста вашей машины, создавая имена вроде `myhost-graceful-unicorn`. Установите `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` для того же эффекта | `claude remote-control --remote-control-session-name-prefix dev-box` |

125| `--replay-user-messages` | Повторно отправить пользовательские сообщения из stdin обратно на stdout для подтверждения. Требует `--input-format stream-json` и `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --verbose --replay-user-messages` |126| `--replay-user-messages` | Повторно отправить пользовательские сообщения из stdin обратно на stdout для подтверждения. Требует `--input-format stream-json` и `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --verbose --replay-user-messages` |

126| `--restricted` | Запустить в ограниченном режиме. Используйте его, когда оценочный каркас управляет `claude` на общей машине и Claude Code не должен запускать команды или читать параметры пользователя и проекта этой машины. Claude Code удаляет встроенные инструменты, которые запускают команды или код, и WebFetch, если вы не назовёте их индивидуально в `--tools`, не через предустановку `default`. Он также ограничивает встроенные инструменты файлов [рабочими каталогами](/docs/ru/permissions#working-directories), загружает только [управляемые параметры](/docs/ru/managed-settings) и `--settings`, отказывает [`bypassPermissions`](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) и [отказывает создавать облачные сеансы](/docs/ru/errors#cloud-sessions-cannot-be-created-from-a-restricted-session). Требует Claude Code v2.1.248 или позже | `claude --restricted -p "query"` |127| `--restricted` | Запустить в ограниченном режиме. Используйте его, когда оценочный каркас управляет `claude` на общей машине и Claude Code не должен запускать команды или читать параметры пользователя и проекта этой машины. Claude Code удаляет встроенные инструменты, которые запускают команды или код, и WebFetch, если вы не назовёте их индивидуально в `--tools`, не через предустановку `default`. Он также ограничивает встроенные инструменты файлов [рабочими каталогами](/docs/ru/permissions#working-directories), загружает только [управляемые параметры](/docs/ru/managed-settings) и `--settings`, отказывает [`bypassPermissions`](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) и [отказывает создавать облачные сеансы](/docs/ru/errors#cloud-sessions-cannot-be-created-from-a-restricted-session). Требует Claude Code v2.1.248 или позже | `claude --restricted -p "query"` |

127| `--resume`, `-r` | Возобновить конкретный сеанс по ID или имени, или показать интерактивный выбор для выбора сеанса. Вместо ID вы можете передать абсолютный путь к [файлу транскрипта `.jsonl` сеанса](/docs/ru/sessions#where-transcripts-are-stored). Выбор и поиск по имени включают сеансы, которые добавили этот каталог с `/add-dir`. Когда вы передаёте ID сеанса, Claude Code ищет текущий каталог проекта и его git worktrees, затем каждый другой проект на этой машине. До v2.1.223 поиск ID охватывал только текущий каталог проекта и его git worktrees. [Фоновые сеансы](/docs/ru/agent-view) появляются в выборе, отмеченные с `bg` | `claude --resume auth-refactor` |128| `--resume`, `-r` | Возобновить конкретный сеанс по ID или имени, или показать интерактивный выбор для выбора сеанса. Вместо ID вы можете передать абсолютный путь к [файлу транскрипта `.jsonl` сеанса](/docs/ru/sessions#where-transcripts-are-stored). Выбор и поиск по имени включают сеансы, которые добавили этот каталог с `/add-dir`. Когда вы передаёте ID сеанса, Claude Code ищет текущий каталог проекта и его git worktrees, затем каждый другой проект на этой машине. До v2.1.223 поиск ID охватывал только текущий каталог проекта и его git worktrees. [Фоновые сеансы](/docs/ru/agent-view) появляются в выборе, отмеченные с `bg`. Возобновление того, который всё ещё работает, [открывает этот сеанс](/docs/ru/sessions#resume-a-running-background-session) в этом терминале через `claude attach`, и приглашение, которое вы передаёте в командной строке, идёт ему как его следующий ход. До v2.1.285 Claude Code отказывал и выводил команду `claude attach` для запуска вместо этого | `claude --resume auth-refactor` |

128| `--safe-mode` | Запустить со всеми отключенными настройками для устранения неполадок в нарушенной конфигурации: CLAUDE.md, skills, plugins, hooks, MCP серверы, пользовательские команды и агенты, стили вывода, рабочие процессы, пользовательские темы, пользовательские сочетания клавиш, строка состояния и команды предложения файлов, LSP серверы и автоматическая память не загружаются. Аутентификация, выбор модели, встроенные инструменты и разрешения работают нормально, что отличается от [`--bare`](/docs/ru/headless#start-faster-with-bare-mode). Политика управляемых параметров всё ещё применяется, включая настроенные политикой hooks, строку состояния и команды предложения файлов; управляемые plugins, управляемые skills, управляемый CLAUDE.md и настроенные политикой MCP серверы не загружаются. Полезно для проверки того, является ли настройка причиной [автоматического переключения модели](/docs/ru/model-config#automatic-model-fallback). Устанавливает [`CLAUDE_CODE_SAFE_MODE`](/docs/ru/env-vars) | `claude --safe-mode` |129| `--safe-mode` | Запустить со всеми отключенными настройками для устранения неполадок в нарушенной конфигурации: CLAUDE.md, skills, plugins, hooks, MCP серверы, пользовательские команды и агенты, стили вывода, рабочие процессы, пользовательские темы, пользовательские сочетания клавиш, строка состояния и команды предложения файлов, LSP серверы и автоматическая память не загружаются. Аутентификация, выбор модели, встроенные инструменты и разрешения работают нормально, что отличается от [`--bare`](/docs/ru/headless#start-faster-with-bare-mode). Политика управляемых параметров всё ещё применяется, включая настроенные политикой hooks, строку состояния и команды предложения файлов; управляемые plugins, управляемые skills, управляемый CLAUDE.md и настроенные политикой MCP серверы не загружаются. Полезно для проверки того, является ли настройка причиной [автоматического переключения модели](/docs/ru/model-config#automatic-model-fallback). Устанавливает [`CLAUDE_CODE_SAFE_MODE`](/docs/ru/env-vars) | `claude --safe-mode` |

129| `--session-id` | Использовать конкретный ID сеанса для беседы (должен быть действительным UUID) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |130| `--session-id` | Использовать конкретный ID сеанса для беседы (должен быть действительным UUID) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |

130| `--setting-sources` | Разделённый запятыми список источников параметров для загрузки (`user`, `project`, `local`). См. [agent view](/docs/ru/agent-view#what-carries-over-when-you-background) и [agent teams](/docs/ru/agent-teams#context-and-communication) для сеансов, которые вы запускаете из этого, которые наследуют список | `claude --setting-sources user,project` |131| `--setting-sources` | Разделённый запятыми список источников параметров для загрузки (`user`, `project`, `local`). См. [agent view](/docs/ru/agent-view#what-carries-over-when-you-background) и [agent teams](/docs/ru/agent-teams#context-and-communication) для сеансов, которые вы запускаете из этого, которые наследуют список | `claude --setting-sources user,project` |

Details

439 439 

440* **Команды, которые запускает Claude**: облачная среда не устанавливает свой собственный timeout команды, поэтому применяются значения по умолчанию инструмента Bash. Claude ждёт 2 минуты для команды переднего плана по умолчанию и может запросить до 10 минут.440* **Команды, которые запускает Claude**: облачная среда не устанавливает свой собственный timeout команды, поэтому применяются значения по умолчанию инструмента Bash. Claude ждёт 2 минуты для команды переднего плана по умолчанию и может запросить до 10 минут.

441 441 

442 Когда команда достигает своего [timeout](/docs/ru/tools-reference#timeout-and-output-limits), Claude Code [перемещает её в фон](/docs/ru/tools-reference#background-commands) вместо того, чтобы остановить её, если только команда не начинается с `sleep`. Команда, перемещённая таким образом, может продолжать работать до 30 дополнительных минут, прежде чем Claude Code остановит её в её [ограничении времени фона](/docs/ru/tools-reference#background-commands). Установка `BASH_DEFAULT_TIMEOUT_MS` выше `1800000` миллисекунд удлиняет это ограничение, а также значение по умолчанию переднего плана.442 Когда команда достигает своего [timeout](/docs/ru/tools-reference#timeout-and-output-limits), Claude Code [перемещает её в фон](/docs/ru/tools-reference#foreground-commands-that-move-to-the-background) вместо того, чтобы остановить её, если только команда не начинается с `sleep`. Команда, перемещённая таким образом, может продолжать работать до 30 дополнительных минут, прежде чем Claude Code остановит её в её [ограничении времени фона](/docs/ru/tools-reference#time-limit-for-background-commands). Установка `BASH_DEFAULT_TIMEOUT_MS` выше `1800000` миллисекунд удлиняет это ограничение, а также значение по умолчанию переднего плана.

443* **SessionStart hooks**: Claude Code отменяет hook `command` после 600 секунд, если вы не установите [`timeout`](/docs/ru/hooks#common-fields), в секундах, на запись hook. Claude Code не применяет timeout на hook, который вы запускаете с [`async: true`](/docs/ru/hooks#run-hooks-in-the-background).443* **SessionStart hooks**: Claude Code отменяет hook `command` после 600 секунд, если вы не установите [`timeout`](/docs/ru/hooks#common-fields), в секундах, на запись hook. Claude Code не применяет timeout на hook, который вы запускаете с [`async: true`](/docs/ru/hooks#run-hooks-in-the-background).

444* **Setup script**: скрипт, который занимает больше примерно пяти минут, не кэшируется. [Требования скрипта](#script-requirements) охватывает, как оставаться ниже этого.444* **Setup script**: скрипт, который занимает больше примерно пяти минут, не кэшируется. [Требования скрипта](#script-requirements) охватывает, как оставаться ниже этого.

445* **Idle sessions**: после нескольких минут без активности, VM сеанса приостанавливается с сохранёнными файлами, и приостановленная VM может позже быть восстановлена. [Установка переменных среды](#set-environment-variables) описывает, что сеанс подхватывает в каждом случае, и [Environment expired](/docs/ru/claude-code-on-the-web#environment-expired) охватывает, как повторно открыть сеанс, чей VM был восстановлен.445* **Idle sessions**: после нескольких минут без активности, VM сеанса приостанавливается с сохранёнными файлами, и приостановленная VM может позже быть восстановлена. [Установка переменных среды](#set-environment-variables) описывает, что сеанс подхватывает в каждом случае, и [Environment expired](/docs/ru/claude-code-on-the-web#environment-expired) охватывает, как повторно открыть сеанс, чей VM был восстановлен.

commands.md +1 −1

Details

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

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

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

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

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

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

138| `/run` | **[Skill](/docs/ru/skills#bundled-skills).** Запустить и управлять приложением вашего проекта, чтобы увидеть работающее изменение, не только проходящие тесты. См. [Запустить и проверить ваше приложение](/docs/ru/skills#run-and-verify-your-app) |138| `/run` | **[Skill](/docs/ru/skills#bundled-skills).** Запустить и управлять приложением вашего проекта, чтобы увидеть работающее изменение, не только проходящие тесты. См. [Запустить и проверить ваше приложение](/docs/ru/skills#run-and-verify-your-app) |

Details

1634 1634 

1635Если вам нужно большее окно, а не меньший разговор, модели Fable, Sonnet 5 и более поздние версии, Opus 4.6 и более поздние версии, а также Sonnet 4.6 поддерживают контекстное окно в 1 миллион токенов. Смотрите [Extended context](/docs/ru/model-config#extended-context) для доступности по плану и как выбрать вариант модели `[1m]`. Компактирование работает так же при большем лимите.1635Если вам нужно большее окно, а не меньший разговор, модели Fable, Sonnet 5 и более поздние версии, Opus 4.6 и более поздние версии, а также Sonnet 4.6 поддерживают контекстное окно в 1 миллион токенов. Смотрите [Extended context](/docs/ru/model-config#extended-context) для доступности по плану и как выбрать вариант модели `[1m]`. Компактирование работает так же при большем лимите.

1636 1636 

1637Sonnet 5.5 и Sonnet 5 работают с контекстным окном 1M и не имеют варианта `[1m]` для выбора. Смотрите [Sonnet 5.5 and Sonnet 5 context window](/docs/ru/model-config#sonnet-5-5-and-sonnet-5-context-window) для их пороговых значений автокомпактирования и исключения шлюза LLM.1637Sonnet 5.5 и Sonnet 5 работают с контекстным окном 1M и не имеют варианта `[1m]` для выбора. Смотрите [Sonnet 5.5 and Sonnet 5 context window](/docs/ru/model-config#sonnet-5-5-and-sonnet-5-context-window) для их пороговых значений автокомпактирования и [the context window behind a gateway](/docs/ru/model-config#context-window-behind-a-gateway) для того, как Claude Code определяет размер окна, когда вы устанавливаете `ANTHROPIC_BASE_URL` на [LLM gateway](/docs/ru/llm-gateway).

1638 1638 

1639Точка, в которой запускается автоматическое компактирование, зависит от вашей модели и конфигурации. Смотрите [Default auto-compact thresholds](/docs/ru/model-config#default-auto-compact-thresholds) для границ по модели и [Correct the window for a gateway or custom model ID](/docs/ru/model-config#correct-the-window-for-a-gateway-or-custom-model-id), если Claude Code предполагает неправильное окно для вашего ID модели, например [LLM gateway](/docs/ru/llm-gateway) псевдоним.1639Точка, в которой запускается автоматическое компактирование, зависит от вашей модели и конфигурации. Смотрите [Default auto-compact thresholds](/docs/ru/model-config#default-auto-compact-thresholds) для границ по модели и [Correct the window for a gateway or custom model ID](/docs/ru/model-config#correct-the-window-for-a-gateway-or-custom-model-id), если Claude Code предполагает неправильное окно для вашего ID модели, например [LLM gateway](/docs/ru/llm-gateway) псевдоним.

1640 1640 

costs.md +1 −1

Details

51 51 

52Промахи, ожидаемые перестроения и горячие или холодные части строки означают следующее:52Промахи, ожидаемые перестроения и горячие или холодные части строки означают следующее:

53 53 

54* **Misses**: запросы, которые повторно обработали содержимое, которое кэш уже содержал, с временем последнего промаха и количеством токенов, которые эти запросы записали обратно в кэш. Claude Code считает запрос промахом, когда запрос повторно обработал более 5% и по крайней мере 2000 токенов того, что он мог бы прочитать из кэша. [Действия, которые инвалидируют кэш](/docs/ru/prompt-caching#actions-that-invalidate-the-cache), перечисляют обычные причины. Когда Claude Code может определить вероятную причину последнего промаха, строка её называет, например `likely cause: tool definitions changed`. Текст вероятной причины требует Claude Code v2.1.260 или более поздней версии.54* **Misses**: запросы, которые повторно обработали содержимое, которое кэш уже содержал, с временем последнего промаха и количеством токенов, которые эти запросы записали обратно в кэш. [Действия, которые инвалидируют кэш](/docs/ru/prompt-caching#actions-that-invalidate-the-cache), перечисляют обычные причины. Когда Claude Code может определить вероятную причину последнего промаха, строка её называет, например `likely cause: tool definitions changed`. Текст вероятной причины требует Claude Code v2.1.260 или более поздней версии.

55* **Expected rebuilds**: когда Claude Code сам только что переписал разговор, путём [компактирования](/docs/ru/prompt-caching#compacting-the-conversation) или путём очистки старых результатов инструментов из контекста, он считает тот же вид промаха как ожидаемое перестроение вместо этого. Эта часть появляется только после того, как произошло по крайней мере одно ожидаемое перестроение.55* **Expected rebuilds**: когда Claude Code сам только что переписал разговор, путём [компактирования](/docs/ru/prompt-caching#compacting-the-conversation) или путём очистки старых результатов инструментов из контекста, он считает тот же вид промаха как ожидаемое перестроение вместо этого. Эта часть появляется только после того, как произошло по крайней мере одно ожидаемое перестроение.

56* **Warm or cold**: находится ли кэшированный префикс всё ещё в пределах своего [времени жизни кэша](/docs/ru/prompt-caching#cache-lifetime), с действующим TTL. Когда кэш холодный, строка показывает, как долго сессия была неактивна. Когда ни один ответ не сообщил о токенах кэша, строка заканчивается `no prompt caching reported by the API` вместо этого.56* **Warm or cold**: находится ли кэшированный префикс всё ещё в пределах своего [времени жизни кэша](/docs/ru/prompt-caching#cache-lifetime), с действующим TTL. Когда кэш холодный, строка показывает, как долго сессия была неактивна. Когда ни один ответ не сообщил о токенах кэша, строка заканчивается `no prompt caching reported by the API` вместо этого.

57 57 

desktop.md +8 −0

Details

967 967 

968Чтобы переместить сеанс CLI в Desktop, запустите `/desktop` в терминале. Claude сохраняет ваш сеанс и открывает его в приложении desktop, затем выходит из CLI. Эта команда доступна на macOS и x64 Windows, когда вы вошли с подпиской Claude. Она недоступна при аутентификации по ключу API или на Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry.968Чтобы переместить сеанс CLI в Desktop, запустите `/desktop` в терминале. Claude сохраняет ваш сеанс и открывает его в приложении desktop, затем выходит из CLI. Эта команда доступна на macOS и x64 Windows, когда вы вошли с подпиской Claude. Она недоступна при аутентификации по ключу API или на Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry.

969 969 

970Из вашей оболочки [`claude --desktop`](/docs/ru/cli-reference#cli-flags) открывает Desktop напрямую без запуска сеанса терминала. Это требует Claude Code v2.1.285 или позже и имеет те же требования к платформе и входу, что и `/desktop`. Без других аргументов он открывает Desktop в текущем каталоге. Чтобы открыть существующий сеанс CLI в Desktop, добавьте `--continue` для самого последнего разговора в этом каталоге или `--resume` с ID сеанса, который показывает `/status`:

971 

972```bash theme={null}

973claude --desktop --resume <session-id>

974```

975 

976Claude Code выводит `Opening session <session-id> in Claude Desktop`, сеанс открывается в приложении и команда завершается. Имя сеанса не работает вместо ID. Claude Code не перемещает сеанс, который открыт в другом терминале или всё ещё работает в фоне. Если Claude Desktop не установлен, команда выводит ссылку для загрузки и завершается.

977 

970Вы также можете продолжить сеанс CLI из Desktop с помощью `/resume`. Команда доступна в локальных сеансах, но не в SSH, WSL или облачных сеансах.978Вы также можете продолжить сеанс CLI из Desktop с помощью `/resume`. Команда доступна в локальных сеансах, но не в SSH, WSL или облачных сеансах.

971 979 

972Чтобы продолжить сеанс терминала в Desktop:980Чтобы продолжить сеанс терминала в Desktop:

desktop-linux.md +12 −0

Details

163 163 

164Если `claude-desktop` завершается с этим сообщением, вы запустили его от имени root. Войдите как обычный пользователь и запустите его оттуда.164Если `claude-desktop` завершается с этим сообщением, вы запустили его от имени root. Войдите как обычный пользователь и запустите его оттуда.

165 165 

166<h3 id="your-sign-in-won’t-be-saved-on-this-device">

167 Your sign-in won't be saved on this device

168</h3>

169 

170Claude Desktop сохраняет вашу учетную запись в связке ключей вашего рабочего стола, такой как GNOME Keyring или KDE Wallet. Если он не может получить доступ к разблокированной связке ключей, ваша учетная запись не сохраняется и вы входите снова каждый раз при запуске приложения. Выберите случай, который соответствует вашей системе:

171 

172* **No keyring installed, on a desktop other than KDE Plasma**: если вы установили с `--no-install-recommends`, или на минимальном образе, который пропускает рекомендуемые пакеты, apt не установил связку ключей. Установите GNOME Keyring с помощью `sudo apt install gnome-keyring`.

173* **KDE Plasma with GNOME Keyring also installed**: KDE Wallet поставляется с рабочим столом Plasma. Две связки ключей конфликтуют, и Claude Desktop может показать это уведомление, даже если KDE Wallet работает. Удалите лишнюю с помощью `sudo apt remove gnome-keyring`, затем перезагрузите компьютер.

174* **Keyring installed but locked**: разблокируйте его.

175 

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

177 

166<h3 id="cowork-isn’t-available">178<h3 id="cowork-isn’t-available">

167 Cowork isn't available179 Cowork isn't available

168</h3>180</h3>

env-vars.md +41 −35

Details

56 </Tab>56 </Tab>

57</Tabs>57</Tabs>

58 58 

59Строка присваивания ничего не выводит при успехе, поэтому подтвердите, что переменная установлена, выведя её в той же оболочке перед запуском `claude`:59Строка присваивания ничего не выводит при успехе. Чтобы подтвердить, что переменная установлена, выведите её в той же оболочке:

60 60 

61<Tabs>61<Tabs>

62 <Tab title="macOS, Linux, WSL">62 <Tab title="macOS, Linux, WSL">


110 110 

111Некоторые поведения имеют как переменную окружения, так и выделенный ключ параметров, и то, какой из них Claude Code читает первым, отличается для каждого ключа. Для `ANTHROPIC_MODEL` и `CLAUDE_CODE_AUTO_CONNECT_IDE` Claude Code сначала читает переменную и использует параметр `model` или `autoConnectIde` только когда переменная не установлена. Для пары, которую вы устанавливаете, проверьте строку переменной ниже и запись ключа в [справочнике параметров](/docs/ru/settings-reference).111Некоторые поведения имеют как переменную окружения, так и выделенный ключ параметров, и то, какой из них Claude Code читает первым, отличается для каждого ключа. Для `ANTHROPIC_MODEL` и `CLAUDE_CODE_AUTO_CONNECT_IDE` Claude Code сначала читает переменную и использует параметр `model` или `autoConnectIde` только когда переменная не установлена. Для пары, которую вы устанавливаете, проверьте строку переменной ниже и запись ключа в [справочнике параметров](/docs/ru/settings-reference).

112 112 

113Когда одна и та же переменная установлена как в вашей оболочке, так и в блоке `env` файла параметров, применяется значение из файла параметров. Claude Code записывает каждую запись `env` в переменные окружения процесса, заменяя значение, унаследованное из оболочки. [Параметр `env`](/docs/ru/settings-reference#when-claude-code-applies-env-values) указывает, когда он их применяет. Несколько переменных имеют специальную обработку; [параметр `env`](/docs/ru/settings-reference#env) перечисляет исключения.113Когда одна и та же переменная установлена как в вашей оболочке, так и в блоке `env` файла параметров, применяется значение из файла параметров в большинстве сеансов. Claude Code записывает каждую запись `env` в переменные окружения процесса, заменяя значение, унаследованное из оболочки. [Как значения `env` взаимодействуют с вашей оболочкой](/docs/ru/settings-reference#how-env-values-interact-with-your-shell) охватывает сеансы, которые сохраняют унаследованное значение вместо этого, и [параметр `env`](/docs/ru/settings-reference#when-claude-code-applies-env-values) указывает, когда он их применяет. Несколько переменных имеют специальную обработку; [параметр `env`](/docs/ru/settings-reference#env) перечисляет исключения.

114 114 

115В файле параметров вы можете установить переменную, но не можете удалить её. Чтобы переопределить переменную, которую вы не можете отменить, например устаревшую `CLAUDE_CODE_USE_VERTEX`, экспортированную профилем оболочки, который вы не контролируете, установите её на пустую строку в блоке `env`: `"CLAUDE_CODE_USE_VERTEX": ""`. Claude Code рассматривает пустое значение как неустановленное для выбора поставщика. Подпроцессы по-прежнему наследуют пустое значение.115В файле параметров вы можете установить переменную, но не можете удалить её. Чтобы переопределить переменную, которую вы не можете отменить, например устаревшую `CLAUDE_CODE_USE_VERTEX`, экспортированную профилем оболочки, который вы не контролируете, установите её на пустую строку в блоке `env`: `"CLAUDE_CODE_USE_VERTEX": ""`. Claude Code рассматривает пустое значение как неустановленное для выбора поставщика. Подпроцессы по-прежнему наследуют пустое значение.

116 116 

117Между файлами параметров значения `env` следуют [приоритету параметров](/docs/ru/settings#settings-precedence), поэтому управляемая запись параметров переопределяет ту же переменную в пользовательских или проектных параметрах.117Между файлами параметров значения `env` следуют [приоритету параметров](/docs/ru/settings#settings-precedence), поэтому управляемая запись параметров переопределяет ту же переменную в пользовательских или проектных параметрах. Проектные и локальные параметры не могут устанавливать некоторые переменные, такие как `CLAUDE_CONFIG_DIR` и переменные экспортера OpenTelemetry. [Переменные, которые Claude Code игнорирует в `env`](/docs/ru/settings-reference#variables-claude-code-ignores-in-env) перечисляет их, а также значения отключения OpenTelemetry, которые по-прежнему применяются.

118 118 

119То, как переменная окружения взаимодействует с флагами CLI и командами в сеансе, варьируется в зависимости от функции: `--model` и `/model` переопределяют `ANTHROPIC_MODEL`, в то время как `CLAUDE_CODE_EFFORT_LEVEL` переопределяет `--effort` и `/effort`. Когда переменная взаимодействует с другим источником конфигурации, её строка в списке [Переменные](#variables) указывает приоритет или ссылается на страницу, которая это документирует.119То, как переменная окружения взаимодействует с флагами CLI и командами в сеансе, варьируется в зависимости от функции: `--model` и `/model` переопределяют `ANTHROPIC_MODEL`, в то время как `CLAUDE_CODE_EFFORT_LEVEL` переопределяет `--effort` и `/effort`. Когда переменная взаимодействует с другим источником конфигурации, её строка в списке [Переменные](#variables) указывает приоритет или ссылается на страницу, которая это документирует.

120 120 


127Числовые переменные, такие как таймауты, бюджеты токенов и количество повторов, принимают научную нотацию и написание с разделителями цифр в дополнение к простым цифрам, за исключением случаев, когда в строке переменной указано, что она принимает только простые цифры. Например, Claude Code читает `2e3` как 2000 и `64_000` как 64000. До версии 2.1.211 эти написания могли молча установить гораздо меньшее значение, например `1e6` установить таймаут на 1.127Числовые переменные, такие как таймауты, бюджеты токенов и количество повторов, принимают научную нотацию и написание с разделителями цифр в дополнение к простым цифрам, за исключением случаев, когда в строке переменной указано, что она принимает только простые цифры. Например, Claude Code читает `2e3` как 2000 и `64_000` как 64000. До версии 2.1.211 эти написания могли молча установить гораздо меньшее значение, например `1e6` установить таймаут на 1.

128 128 

129<Note>129<Note>

130 Для переменных, которые включают или отключают поведение, установите `1` или `true` для включения и `0` или `false` для отключения, в любом регистре.130 Для переменных, которые включают или отключают поведение, установите `1`, `true`, `yes` или `on`, чтобы включить, и `0`, `false`, `no` или `off`, чтобы отключить, в любом регистре.

131 131 

132 Некоторые переменные читают только то, установлены ли они вообще, поэтому любое непустое значение, включая `0`, включает поведение, а отключить поведение можно, отменив установку переменной или установив её на пустое значение. Эти переменные работают таким образом:132 Некоторые переменные читают только то, установлены ли они вообще, поэтому любое непустое значение, включая `0`, включает поведение, а отключить поведение можно, отменив установку переменной или установив её на пустое значение. Эти переменные работают таким образом:

133 133 


189| `ANTHROPIC_VERTEX_BASE_URL` | Переопределить URL конечной точки Google Cloud's Agent Platform. Используйте для пользовательских конечных точек Google Cloud's Agent Platform или при маршрутизации через [LLM gateway](/docs/ru/llm-gateway). См. [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai) |189| `ANTHROPIC_VERTEX_BASE_URL` | Переопределить URL конечной точки Google Cloud's Agent Platform. Используйте для пользовательских конечных точек Google Cloud's Agent Platform или при маршрутизации через [LLM gateway](/docs/ru/llm-gateway). См. [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai) |

190| `ANTHROPIC_VERTEX_PROJECT_ID` | ID проекта GCP, на который адресованы запросы Google Cloud's Agent Platform. См. [Настройка учётных данных GCP](/docs/ru/google-vertex-ai#3-configure-gcp-credentials) |190| `ANTHROPIC_VERTEX_PROJECT_ID` | ID проекта GCP, на который адресованы запросы Google Cloud's Agent Platform. См. [Настройка учётных данных GCP](/docs/ru/google-vertex-ai#3-configure-gcp-credentials) |

191| `ANTHROPIC_WORKSPACE_ID` | ID рабочей области для [федерации рабочей нагрузки](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Установите это, когда ваше правило федерации охватывает более одной рабочей области, чтобы обмен токенов знал, на какую рабочую область ориентироваться |191| `ANTHROPIC_WORKSPACE_ID` | ID рабочей области для [федерации рабочей нагрузки](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Установите это, когда ваше правило федерации охватывает более одной рабочей области, чтобы обмен токенов знал, на какую рабочую область ориентироваться |

192| `API_FORCE_IDLE_TIMEOUT` | Переопределить таймаут простоя тела в 5 минут, который прерывает потоковый ответ модели, когда байты не поступают. Установите на `0`, чтобы отключить таймаут, например, когда медленный [шлюз](/docs/ru/llm-gateway) или локальная модель делает паузу дольше 5 минут между фрагментами, или `1`, чтобы держать его включённым для каждого поставщика. Если не установлено, таймаут активен на поставщиках, отличных от прямого API Anthropic и [Claude Platform on AWS](/docs/ru/claude-platform-on-aws). [Сторожи потока](/docs/ru/network-config#streaming-idle-watchdogs) работают независимо от него и прерывают длительную молчаливую паузу даже при установке `0` здесь |192| `API_FORCE_IDLE_TIMEOUT` | Переопределить таймаут простоя тела в 5 минут, который прерывает потоковый ответ модели, когда байты не поступают. Установите на `0`, чтобы отключить таймаут, например, когда медленный [шлюз](/docs/ru/llm-gateway) или локальная модель делает паузу дольше 5 минут между фрагментами, или `1`, чтобы держать его включённым для каждого поставщика. Если не установлено, таймаут активен на поставщиках, отличных от прямого API Anthropic, [Claude Platform on AWS](/docs/ru/claude-platform-on-aws) и Amazon Bedrock с `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` установленным. [Сторожи потока](/docs/ru/network-config#streaming-idle-watchdogs) работают независимо от него и прерывают длительную молчаливую паузу даже при установке `0` здесь |

193| `API_TIMEOUT_MS` | Таймаут для запросов API в миллисекундах (по умолчанию: 600000 или 10 минут; максимум: 2147483647). Увеличьте это, когда запросы истекают на медленных сетях или при маршрутизации через прокси. Значения выше максимума переполняют базовый таймер и вызывают немедленный отказ запросов |193| `API_TIMEOUT_MS` | Таймаут для запросов API в миллисекундах (по умолчанию: 600000 или 10 минут; максимум: 2147483647). Увеличьте это, когда запросы истекают на медленных сетях или при маршрутизации через прокси. Значения выше максимума переполняют базовый таймер и вызывают немедленный отказ запросов |

194| `AWS_BEARER_TOKEN_BEDROCK` | Ключ API Amazon Bedrock для аутентификации (см. [Ключи API Amazon Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |194| `AWS_BEARER_TOKEN_BEDROCK` | Ключ API Amazon Bedrock для аутентификации (см. [Ключи API Amazon Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

195| `BASH_DEFAULT_TIMEOUT_MS` | Таймаут по умолчанию для долгоживущих команд bash (по умолчанию: 120000 или 2 минуты) |195| `BASH_DEFAULT_TIMEOUT_MS` | Таймаут по умолчанию для команды переднего плана Bash или PowerShell в миллисекундах (по умолчанию: 120000 или 2 минуты). Значение по умолчанию дольше 30 минут также становится значением по умолчанию [ограничение времени для фоновых команд](/docs/ru/tools-reference#time-limit-for-background-commands). Ограничение времени фоновой команды требует Claude Code версии 2.1.285 или позже |

196| `BASH_MAX_OUTPUT_LENGTH` | Максимальное количество символов вывода bash, которое Claude Code читает обратно в результат команды (по умолчанию: 30000; максимум: 150000). Если вы установите параметр [`bashOutputMaxChars`](/docs/ru/settings-reference#bashoutputmaxchars), Claude Code игнорирует эту переменную. См. [Ограничения вывода](/docs/ru/tools-reference#output-limits) |196| `BASH_MAX_OUTPUT_LENGTH` | Максимальное количество символов вывода bash, которое Claude Code читает обратно в результат команды (по умолчанию: 30000; максимум: 150000). Если вы установите параметр [`bashOutputMaxChars`](/docs/ru/settings-reference#bashoutputmaxchars), Claude Code игнорирует эту переменную. См. [Ограничения вывода](/docs/ru/tools-reference#output-limits) |

197| `BASH_MAX_TIMEOUT_MS` | Максимальный таймаут, который модель может установить для долгоживущих команд bash (по умолчанию: 600000 или 10 минут). Эффективный потолок — это больший из этого и `BASH_DEFAULT_TIMEOUT_MS` |197| `BASH_MAX_TIMEOUT_MS` | Максимальный таймаут, который модель может установить для команды переднего плана Bash или PowerShell в миллисекундах (по умолчанию: 600000 или 10 минут). Эффективный потолок — это больший из этого и `BASH_DEFAULT_TIMEOUT_MS`. Эффективный потолок дольше 2 часов также становится максимальным [ограничением времени для фоновых команд](/docs/ru/tools-reference#time-limit-for-background-commands). Ограничение времени фоновой команды требует Claude Code версии 2.1.285 или позже |

198| `BETA_TRACING_ENDPOINT` | Конечная точка OTLP для [детального бета-трассирования](/docs/ru/monitoring-usage#traces-beta): с `ENABLE_BETA_TRACING_DETAILED=1` логи и трассировки идут туда вместо настроенных экспортёров. Установите это в вашей оболочке, пользовательских параметрах или управляемых параметрах. Игнорируется в [параметрах проекта и локальных параметрах](/docs/ru/settings-reference#variables-claude-code-ignores-in-env) |198| `BETA_TRACING_ENDPOINT` | Конечная точка OTLP для [детального бета-трассирования](/docs/ru/monitoring-usage#traces-beta): с `ENABLE_BETA_TRACING_DETAILED=1` логи и трассировки идут туда вместо настроенных экспортёров. Установите это в вашей оболочке, пользовательских параметрах или управляемых параметрах. Игнорируется в [параметрах проекта и локальных параметрах](/docs/ru/settings-reference#variables-claude-code-ignores-in-env) |

199| `CCR_FORCE_BUNDLE` | Установите на `1`, чтобы заставить [`claude --cloud`](/docs/ru/claude-code-on-the-web#send-local-repositories-without-github) упаковать и загрузить ваш локальный репозиторий вместо клонирования из его удалённого источника |199| `CCR_FORCE_BUNDLE` | Установите на `1`, чтобы заставить [`claude --cloud`](/docs/ru/claude-code-on-the-web#send-local-repositories-without-github) упаковать и загрузить ваш локальный репозиторий вместо клонирования из его удалённого источника |

200| `CLAUDECODE` | Установите на `1` в подпроцессах, которые порождает Claude Code (инструменты Bash и PowerShell, сеансы tmux, команды [hook](/docs/ru/hooks), команды [строки состояния](/docs/ru/statusline), подпроцессы [MCP сервера](/docs/ru/mcp) stdio). Расширения IDE также устанавливают это в своих интегрированных терминалах. Используйте для обнаружения, когда скрипт работает внутри подпроцесса, порождённого Claude Code. Чтобы проверить, был ли текущий процесс порождён непосредственно вызовом инструмента или hook, а не внутри MCP сервера stdio, который запустил Claude Code, используйте `CLAUDE_CODE_CHILD_SESSION` вместо этого |200| `CLAUDECODE` | Установите на `1` в подпроцессах, которые порождает Claude Code (инструменты Bash и PowerShell, сеансы tmux, команды [hook](/docs/ru/hooks), команды [строки состояния](/docs/ru/statusline), подпроцессы [MCP сервера](/docs/ru/mcp) stdio). Расширения IDE также устанавливают это в своих интегрированных терминалах. Используйте для обнаружения, когда скрипт работает внутри подпроцесса, порождённого Claude Code. Чтобы проверить, был ли текущий процесс порождён непосредственно вызовом инструмента или hook, а не внутри MCP сервера stdio, который запустил Claude Code, используйте `CLAUDE_CODE_CHILD_SESSION` вместо этого |


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

224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Установить [окно автокомпактирования](/docs/ru/model-config#set-the-auto-compact-window) в токенах, от `100000` до `1000000`. Принимает простое целое число, такое как `500000` только: значение, такое как `500k`, читается как `500` и зажимается на минимум 100K. Эффективное окно также ограничено окном контекста модели. Имеет приоритет над командой `/autocompact`, флагом `--autocompact` и параметром `autoCompactWindow`. Процент `used_percentage` в строке состояния всегда измеряется относительно полного окна контекста модели, поэтому после установки этой переменной этот процент больше не указывает, когда будет запущено компактирование |224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Установить [окно автокомпактирования](/docs/ru/model-config#set-the-auto-compact-window) в токенах, от `100000` до `1000000`. Принимает простое целое число, такое как `500000` только: значение, такое как `500k`, читается как `500` и зажимается на минимум 100K. Эффективное окно также ограничено окном контекста модели. Имеет приоритет над командой `/autocompact`, флагом `--autocompact` и параметром `autoCompactWindow`. Процент `used_percentage` в строке состояния всегда измеряется относительно полного окна контекста модели, поэтому после установки этой переменной этот процент больше не указывает, когда будет запущено компактирование |

225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Переопределить автоматическое [подключение IDE](/docs/ru/vs-code). По умолчанию Claude Code подключается автоматически при запуске внутри интегрированного терминала поддерживаемой IDE. Установите на `false`, чтобы предотвратить это. Установите на `true`, чтобы принудительно попытаться подключиться, когда автоопределение не работает, например, когда tmux скрывает родительский терминал. Имеет приоритет над глобальным параметром конфигурации [`autoConnectIde`](/docs/ru/settings-reference#autoconnectide) |225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Переопределить автоматическое [подключение IDE](/docs/ru/vs-code). По умолчанию Claude Code подключается автоматически при запуске внутри интегрированного терминала поддерживаемой IDE. Установите на `false`, чтобы предотвратить это. Установите на `true`, чтобы принудительно попытаться подключиться, когда автоопределение не работает, например, когда tmux скрывает родительский терминал. Имеет приоритет над глобальным параметром конфигурации [`autoConnectIde`](/docs/ru/settings-reference#autoconnectide) |

226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Контролирует, просит ли Claude Code сервер [проверить действия автоматического режима](/docs/ru/permission-modes#server-side-classifier-review). Если не установлено, Claude Code просит сервер на Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry и Claude Platform on AWS, и когда вы указываете `ANTHROPIC_BASE_URL` на LLM gateway или прокси. Установите на `0`, чтобы использовать вместо этого собственные запросы классификатора Claude Code. Не читается при прямом подключении к API Anthropic. Требует Claude Code версии 2.1.271 или позже; запрос сервера по умолчанию требует версии 2.1.278 или позже |226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Контролирует, просит ли Claude Code сервер [проверить действия автоматического режима](/docs/ru/permission-modes#server-side-classifier-review). Установите на `0`, чтобы использовать вместо этого собственные запросы классификатора Claude Code. На прямом подключении к API Anthropic требуется версия 2.1.281 или позже. Связанный раздел перечисляет, какие сеансы просят сервер, когда переменная не установлена, и с какой версии. Требует Claude Code версии 2.1.271 или позже |

227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Время в миллисекундах, которое Claude Code ждёт, пока цепочка поставщика учётных данных AWS по умолчанию выдаст учётные данные, прежде чем запрос не выполнится с [`AWS default-chain credential resolve timed out`](/docs/ru/errors#aws-default-chain-credential-resolve-timed-out) (по умолчанию: `60000`). Повысьте это, когда шаг в вашей цепочке законно нуждается в большем времени, например вход на основе браузера через обёртку, такую как `aws-vault`, с MFA. Применяется везде, где Claude Code подписывает с цепочкой по умолчанию: [Amazon Bedrock](/docs/ru/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/ru/claude-platform-on-aws) и [конечная точка Mantle](/docs/ru/amazon-bedrock#use-the-mantle-endpoint). Требует Claude Code версии 2.1.207 или позже |227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Время в миллисекундах, которое Claude Code ждёт, пока цепочка поставщика учётных данных AWS по умолчанию выдаст учётные данные, прежде чем запрос не выполнится с [`AWS default-chain credential resolve timed out`](/docs/ru/errors#aws-default-chain-credential-resolve-timed-out) (по умолчанию: `60000`). Повысьте это, когда шаг в вашей цепочке законно нуждается в большем времени, например вход на основе браузера через обёртку, такую как `aws-vault`, с MFA. Применяется везде, где Claude Code подписывает с цепочкой по умолчанию: [Amazon Bedrock](/docs/ru/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/ru/claude-platform-on-aws) и [конечная точка Mantle](/docs/ru/amazon-bedrock#use-the-mantle-endpoint). Требует Claude Code версии 2.1.207 или позже |

228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Установите на `0`, чтобы отключить [diff файлов, которые изменились во время выполнения команды Bash](/docs/ru/hooks#bash), или `1`, чтобы записать его в каждом режиме разрешений. Имеет приоритет над параметром [`bashEditDiffEnabled`](/docs/ru/settings-reference#basheditdiffenabled). Требует Claude Code версии 2.1.269 или позже |228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Установите на `0`, чтобы отключить [diff файлов, которые изменились во время выполнения команды Bash](/docs/ru/hooks#bash), или `1`, чтобы записать его в каждом режиме разрешений. Имеет приоритет над параметром [`bashEditDiffEnabled`](/docs/ru/settings-reference#basheditdiffenabled). Требует Claude Code версии 2.1.269 или позже |

229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Установите на `0`, чтобы неинтерактивный сеанс сообщал статус простоя своему хосту при каждом завершении хода, даже если фоновая работа всё ещё выполняется. По умолчанию сеанс продолжает сообщать статус выполнения после завершения хода, пока фоновая работа, такая как фоновый агент или запуск [workflow](/docs/ru/workflows), всё ещё активна. Это удерживает хост, который наблюдает статус, такой как список удалённых сеансов, от объявления, что Claude ждёт вашего ввода во время работы. Фоновые команды оболочки, такие как сервер разработки, не удерживают статус выполнения. Статус выполнения по умолчанию и отказ `0` требуют Claude Code версии 2.1.269 или позже; на более ранних версиях установите `1`, чтобы удержать статус выполнения |229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Установите на `0`, чтобы неинтерактивный сеанс сообщал статус простоя своему хосту при каждом завершении хода, даже если фоновая работа всё ещё выполняется. По умолчанию сеанс продолжает сообщать статус выполнения после завершения хода, пока фоновая работа, такая как фоновый агент или запуск [workflow](/docs/ru/workflows), всё ещё активна. Это удерживает хост, который наблюдает статус, такой как список удалённых сеансов, от объявления, что Claude ждёт вашего ввода во время работы. Фоновые команды оболочки, такие как сервер разработки, не удерживают статус выполнения. Статус выполнения по умолчанию и отказ `0` требуют Claude Code версии 2.1.269 или позже; на более ранних версиях установите `1`, чтобы удержать статус выполнения |


237| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | Удалено в версии 2.1.186 и теперь не работает. Ранее устанавливало отдельный таймаут для фазы подключения, TLS и заголовка ответа потокового запроса API. Используйте `API_TIMEOUT_MS` для таймаута для каждого запроса. Для фазы заголовка ответа потокового запроса см. `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |237| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | Удалено в версии 2.1.186 и теперь не работает. Ранее устанавливало отдельный таймаут для фазы подключения, TLS и заголовка ответа потокового запроса API. Используйте `API_TIMEOUT_MS` для таймаута для каждого запроса. Для фазы заголовка ответа потокового запроса см. `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |

238| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Переопределить путь файла журнала отладки. Несмотря на имя, это путь к файлу, а не каталог. Требует отдельного включения режима отладки через `--debug`, `/debug` или переменную окружения `DEBUG`: установка только этой переменной не включает логирование. Флаг [`--debug-file`](/docs/ru/cli-reference#cli-flags) делает оба сразу. По умолчанию `~/.claude/debug/<session-id>.txt` |238| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Переопределить путь файла журнала отладки. Несмотря на имя, это путь к файлу, а не каталог. Требует отдельного включения режима отладки через `--debug`, `/debug` или переменную окружения `DEBUG`: установка только этой переменной не включает логирование. Флаг [`--debug-file`](/docs/ru/cli-reference#cli-flags) делает оба сразу. По умолчанию `~/.claude/debug/<session-id>.txt` |

239| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Минимальный уровень логирования, записываемый в файл журнала отладки. Значения: `verbose`, `debug` (по умолчанию), `info`, `warn`, `error`. Установите на `verbose`, чтобы включить высокообъёмную диагностику, такую как полный вывод команды строки состояния, или повысьте на `error`, чтобы уменьшить шум |239| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Минимальный уровень логирования, записываемый в файл журнала отладки. Значения: `verbose`, `debug` (по умолчанию), `info`, `warn`, `error`. Установите на `verbose`, чтобы включить высокообъёмную диагностику, такую как полный вывод команды строки состояния, или повысьте на `error`, чтобы уменьшить шум |

240| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Установите на `1`, чтобы отключить поддержку [окна контекста 1M](/docs/ru/model-config#extended-context). Если установлено, варианты модели 1M недоступны в средстве выбора модели, и Claude Code удерживает сеансы на моделях с собственным окном 1M, таких как [Sonnet 5](/docs/ru/model-config#sonnet-5-context-window) и модели Fable, на окне 200K; см. [Расширенный контекст](/docs/ru/model-config#extended-context) для того, как применяется удержание. Полезно для корпоративных сред с требованиями соответствия. Для его роли в исправлении окна для нераспознанного ID модели `[1m]` см. [Исправить окно для ID шлюза или пользовательской модели](/docs/ru/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |240| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Установите на `1`, чтобы отключить поддержку [окна контекста 1M](/docs/ru/model-config#extended-context). Если установлено, варианты модели 1M недоступны в средстве выбора модели, и Claude Code удерживает сеансы на моделях с собственным окном 1M, таких как [Sonnet 5.5](/docs/ru/model-config#sonnet-5-5-and-sonnet-5-context-window) и модели Fable, на окне 200K; см. [Расширенный контекст](/docs/ru/model-config#extended-context) для того, как применяется удержание. Полезно для корпоративных сред с требованиями соответствия. Для его роли в исправлении окна для нераспознанного ID модели `[1m]` см. [Исправить окно для ID шлюза или пользовательской модели](/docs/ru/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |

241| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Установите на `1`, чтобы отключить [адаптивное рассуждение](/docs/ru/model-config#adjust-effort-level) на Opus 4.6 и Sonnet 4.6 и вернуться к фиксированному бюджету мышления, контролируемому `MAX_THINKING_TOKENS`. Не имеет эффекта на [модели Fable](/docs/ru/model-config#extended-thinking), Sonnet 5 или Opus 4.7 и позже, которые всегда используют адаптивное рассуждение |241| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Установите на `1`, чтобы отключить [адаптивное рассуждение](/docs/ru/model-config#adjust-effort-level) на Opus 4.6 и Sonnet 4.6 и вернуться к фиксированному бюджету мышления, контролируемому `MAX_THINKING_TOKENS`. Не имеет эффекта на [модели Fable](/docs/ru/model-config#extended-thinking), Sonnet 5 или Opus 4.7 и позже, которые всегда используют адаптивное рассуждение |

242| `CLAUDE_CODE_DISABLE_ADMIN_ENV_UNION` | Установите на `1`, чтобы остановить Claude Code от объединения [управляемых параметров](/docs/ru/managed-settings#precedence-within-the-managed-tier) блоков `env` для каждого ключа между источниками администратора, поэтому применяется только весь блок `env` источника с наивысшим приоритетом, как до версии 2.1.223. Установите это в окружении, которое запускает Claude Code, так как Claude Code игнорирует копию, доставленную через блок параметров `env`. Требует Claude Code версии 2.1.223 или позже |242| `CLAUDE_CODE_DISABLE_ADMIN_ENV_UNION` | Установите на `1`, чтобы остановить Claude Code от объединения [управляемых параметров](/docs/ru/managed-settings#precedence-within-the-managed-tier) блоков `env` для каждого ключа между источниками администратора, поэтому применяется только весь блок `env` источника с наивысшим приоритетом, как до версии 2.1.223. Установите это в окружении, которое запускает Claude Code, так как Claude Code игнорирует копию, доставленную через блок параметров `env`. Требует Claude Code версии 2.1.223 или позже |

243| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | Установите на `1`, чтобы отключить [инструмент советника](/docs/ru/advisor). Команда `/advisor` становится недоступной, любой настроенный `advisorModel` игнорируется, и флаг `--advisor` принимается, но не имеет эффекта, поэтому существующие скрипты, которые его передают, продолжают работать без ошибок |243| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | Установите на `1`, чтобы отключить [инструмент советника](/docs/ru/advisor). Команда `/advisor` становится недоступной, любой настроенный `advisorModel` игнорируется, и флаг `--advisor` принимается, но не имеет эффекта, поэтому существующие скрипты, которые его передают, продолжают работать без ошибок |


255| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Установите на `1`, чтобы сохранить инструменты браузера [Claude in Chrome](/docs/ru/chrome) доступными, опуская раздел Chrome системной подсказки и `/claude-in-chrome` [встроенный skill](/docs/ru/skills#bundled-skills). Для хостов, которые встраивают Claude Code и предоставляют свои собственные рекомендации браузера. Требует Claude Code версии 2.1.257 или позже |255| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Установите на `1`, чтобы сохранить инструменты браузера [Claude in Chrome](/docs/ru/chrome) доступными, опуская раздел Chrome системной подсказки и `/claude-in-chrome` [встроенный skill](/docs/ru/skills#bundled-skills). Для хостов, которые встраивают Claude Code и предоставляют свои собственные рекомендации браузера. Требует Claude Code версии 2.1.257 или позже |

256| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Установите на `1`, чтобы предотвратить загрузку любых файлов памяти CLAUDE.md в контекст, включая файлы памяти пользователя, проекта и автоматической памяти |256| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Установите на `1`, чтобы предотвратить загрузку любых файлов памяти CLAUDE.md в контекст, включая файлы памяти пользователя, проекта и автоматической памяти |

257| `CLAUDE_CODE_DISABLE_CRON` | Установите на `1`, чтобы отключить [запланированные задачи](/docs/ru/scheduled-tasks). Skill `/loop` и инструменты cron становятся недоступными, и любые уже запланированные задачи перестают срабатывать, включая задачи, которые уже выполняются в середине сеанса |257| `CLAUDE_CODE_DISABLE_CRON` | Установите на `1`, чтобы отключить [запланированные задачи](/docs/ru/scheduled-tasks). Skill `/loop` и инструменты cron становятся недоступными, и любые уже запланированные задачи перестают срабатывать, включая задачи, которые уже выполняются в середине сеанса |

258| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | Установите на `1`, чтобы отключить ограничение времени на [критические пути удаления](/docs/ru/permission-modes#critical-paths) подсказки. В режиме `auto` Claude Code затем отправляет эти удаления классификатору вместо этого, и в режиме `bypassPermissions` подсказка ждёт вашего ответа. Установите это в окружении, которое запускает Claude Code, так как Claude Code игнорирует копию, доставленную через блок параметров `env`. Требует Claude Code версии 2.1.281 или позже |

258| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Установите на `1`, чтобы удалить заголовки запроса `anthropic-beta`, специфичные для Anthropic, и поля схемы инструмента бета-версии (такие как `defer_loading` и `eager_input_streaming`) из запросов API. Используйте это, когда прокси-шлюз отклоняет запросы с ошибками, такими как "Unexpected value(s) for the `anthropic-beta` header" или "Extra inputs are not permitted". Стандартные поля (`name`, `description`, `input_schema`, `cache_control`) сохраняются. [Поиск инструментов MCP](/docs/ru/mcp#scale-with-mcp-tool-search) отключен и все инструменты MCP загружаются заранее, даже при установке `ENABLE_TOOL_SEARCH`. На Claude Code версии 2.1.227 или позже [управляемые параметры](/docs/ru/managed-settings) могут сохранить поиск инструментов включённым. [Отключить предварительные возможности](/docs/ru/llm-gateway-protocol#disable-pre-release-capabilities) охватывает, где применяется переопределение |259| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Установите на `1`, чтобы удалить заголовки запроса `anthropic-beta`, специфичные для Anthropic, и поля схемы инструмента бета-версии (такие как `defer_loading` и `eager_input_streaming`) из запросов API. Используйте это, когда прокси-шлюз отклоняет запросы с ошибками, такими как "Unexpected value(s) for the `anthropic-beta` header" или "Extra inputs are not permitted". Стандартные поля (`name`, `description`, `input_schema`, `cache_control`) сохраняются. [Поиск инструментов MCP](/docs/ru/mcp#scale-with-mcp-tool-search) отключен и все инструменты MCP загружаются заранее, даже при установке `ENABLE_TOOL_SEARCH`. На Claude Code версии 2.1.227 или позже [управляемые параметры](/docs/ru/managed-settings) могут сохранить поиск инструментов включённым. [Отключить предварительные возможности](/docs/ru/llm-gateway-protocol#disable-pre-release-capabilities) охватывает, где применяется переопределение |

259| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Установите на `1`, чтобы отключить встроенные [подагенты Explore и Plan](/docs/ru/sub-agents#built-in-subagents). Claude исследует с помощью своих инструментов поиска или подагента общего назначения вместо этого, и [режим плана](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode) читает файлы напрямую, а не запускает агентов Explore и Plan. Пользовательские подагенты с именами `Explore` или `Plan` не затронуты. Чтобы удалить каждый встроенный тип подагента в Agent SDK или неинтерактивном режиме, используйте `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` вместо этого. Требует Claude Code версии 2.1.198 или позже |260| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Установите на `1`, чтобы отключить встроенные [подагенты Explore и Plan](/docs/ru/sub-agents#built-in-subagents). Claude исследует с помощью своих инструментов поиска или подагента общего назначения вместо этого, и [режим плана](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode) читает файлы напрямую, а не запускает агентов Explore и Plan. Пользовательские подагенты с именами `Explore` или `Plan` не затронуты. Чтобы удалить каждый встроенный тип подагента в Agent SDK или неинтерактивном режиме, используйте `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` вместо этого. Требует Claude Code версии 2.1.198 или позже |

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


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

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

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

266| `CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK` | Установите на `1`, чтобы остановить Claude Code на [Amazon Bedrock](/docs/ru/amazon-bedrock#when-a-model-is-disabled-mid-session) и [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai#when-a-model-is-disabled-mid-session) от переключения на более старую модель, когда ваша учётная запись теряет доступ к модели сеанса в середине сеанса; отказанный запрос не выполняется сразу вместо этого. [Цепочка модели резервного варианта](/docs/ru/model-config#fallback-model-chains), которую вы настраиваете, по-прежнему переключается на этот отказ, и [проверки модели при запуске](/docs/ru/amazon-bedrock#startup-model-checks) по-прежнему переключаются при запуске. Требует Claude Code версии 2.1.285 или позже |

265| `CLAUDE_CODE_DISABLE_MOUSE` | Установите на `1`, чтобы отключить отслеживание мыши в [полноэкранном рендере](/docs/ru/fullscreen). Прокрутка клавиатуры с `PgUp` и `PgDn` по-прежнему работает. Используйте это, чтобы сохранить собственное поведение копирования при выборе вашего терминала |267| `CLAUDE_CODE_DISABLE_MOUSE` | Установите на `1`, чтобы отключить отслеживание мыши в [полноэкранном рендере](/docs/ru/fullscreen). Прокрутка клавиатуры с `PgUp` и `PgDn` по-прежнему работает. Используйте это, чтобы сохранить собственное поведение копирования при выборе вашего терминала |

266| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | Установите на `1`, чтобы отключить обработку щелчков, перетаскивания и наведения в [полноэкранном рендере](/docs/ru/fullscreen), сохраняя прокрутку колеса мыши. Используйте это, когда вы хотите, чтобы прокрутка колеса работала внутри Claude Code, но не хотите, чтобы щелчки позиционировали курсор, расширяли вывод инструмента или открывали ссылки. `CLAUDE_CODE_DISABLE_MOUSE` имеет приоритет при установке обоих. Требует Claude Code версии 2.1.195 или позже |268| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | Установите на `1`, чтобы отключить обработку щелчков, перетаскивания и наведения в [полноэкранном рендере](/docs/ru/fullscreen) при сохранении прокрутки колеса мыши. Используйте это, когда вы хотите, чтобы прокрутка колеса работала внутри Claude Code, но не хотите, чтобы щелчки позиционировали курсор, расширяли вывод инструмента или открывали ссылки. `CLAUDE_CODE_DISABLE_MOUSE` имеет приоритет при установке обоих. Требует Claude Code версии 2.1.195 или позже |

267| `CLAUDE_CODE_DISABLE_MTLS_RELOAD_ON_STALE_CONNECTION` | Установите на `1`, чтобы остановить Claude Code от повторного чтения [сертификата и ключа клиента mTLS](/docs/ru/network-config#mtls-authentication) при отказе запроса API с ошибкой на уровне подключения, такой как сброс подключения или ошибка TLS handshake. С отключённой перезагрузкой Claude Code загружает повёрнутые файлы только при следующем применении параметров или при следующем запуске. Требует Claude Code версии 2.1.232 или позже |269| `CLAUDE_CODE_DISABLE_MTLS_RELOAD_ON_STALE_CONNECTION` | Установите на `1`, чтобы остановить Claude Code от повторного чтения [сертификата и ключа клиента mTLS](/docs/ru/network-config#mtls-authentication) при отказе запроса API с ошибкой на уровне подключения, такой как сброс подключения или ошибка TLS handshake. С отключённой перезагрузкой Claude Code загружает повёрнутые файлы только при следующем применении параметров или при следующем запуске. Требует Claude Code версии 2.1.232 или позже |

268| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Установите на любое непустое значение, такое как `1`, чтобы отключить несущественный сетевой трафик: автообновления, телеметрию, отчёты об ошибках, команду `/feedback`, [отзывы, составленные Claude](/docs/ru/tools-reference#sendfeedback-tool-behavior), примечания к выпуску, проверки [значка статуса PR и MR](/docs/ru/interactive-mode#pr-review-status) и проверки доступности, такие как проверка [быстрого режима](/docs/ru/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways). Это также останавливает [фоновые запуски источников команд плагина](/docs/ru/plugin-marketplaces#when-claude-code-re-runs-the-command), которые являются локальными командами, а не сетевым трафиком, потому что они могут вызвать установку зависимостей. **Установка на `0` или `false` по-прежнему отключает этот трафик**, в отличие от большинства переменных включения/отключения; отмените установку переменной, чтобы разрешить её снова. Также отключает получение флагов функций, что делает [Remote Control](/docs/ru/remote-control#requirements) и другие [функции, которые нуждаются в получении флагов функций](#features-that-need-feature-flag-fetching) недоступными. Автоустановка официального рынка плагинов не охватывается; отключите её с помощью `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`. Не влияет на [обнаружение модели шлюза](/docs/ru/llm-gateway-connect#add-gateway-models-to-the-model-picker), которое имеет свой собственный opt-in |270| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Установите на любое непустое значение, такое как `1`, чтобы отключить несущественный сетевой трафик: автообновления, телеметрию, отчёты об ошибках, команду `/feedback`, [отзывы, составленные Claude](/docs/ru/tools-reference#sendfeedback-tool-behavior), примечания к выпуску, проверки [значка статуса PR и MR](/docs/ru/interactive-mode#pr-review-status) и проверки доступности, такие как проверка [быстрого режима](/docs/ru/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways). Это также останавливает [фоновые запуски источников команд плагина](/docs/ru/plugins/loading#when-a-command-source-re-runs), которые являются локальными командами, а не сетевым трафиком, потому что они могут вызвать установку зависимостей. **Установка на `0` или `false` по-прежнему отключает этот трафик**, в отличие от большинства переменных включения/отключения; отмените установку переменной, чтобы разрешить её снова. Также отключает получение флагов функций, что делает [Remote Control](/docs/ru/remote-control#requirements) и другие [функции, которые нуждаются в получении флагов функций](#features-that-need-feature-flag-fetching) недоступными. Автоустановка официального рынка плагинов не охватывается; отключите её с помощью `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`. Не влияет на [обнаружение модели шлюза](/docs/ru/llm-gateway-connect#add-gateway-models-to-the-model-picker), которое имеет свой собственный opt-in |

269| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Установите на `1`, чтобы отключить резервный вариант без потока, когда потоковый запрос не выполняется в середине потока. Ошибки потока распространяются на уровень повтора вместо этого. Полезно, когда прокси или шлюз вызывает резервный вариант для создания дублирующегося выполнения инструмента |271| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Установите на `1`, чтобы отключить резервный вариант без потока, когда потоковый запрос не выполняется в середине потока. Ошибки потока распространяются на уровень повтора вместо этого. Полезно, когда прокси или шлюз вызывает резервный вариант для создания дублирующегося выполнения инструмента |

270| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | Установите на `1`, чтобы отправить уведомление рабочего стола инструмента `PushNotification` даже во время ввода текста в терминал или его фокусировки. По умолчанию инструмент пропускает как уведомление рабочего стола, так и [мобильный push](/docs/ru/remote-control#mobile-push-notifications), когда обнаруживает недавнюю активность клавиатуры или фокус терминала. Эта переменная отключает только эту локальную проверку, поэтому сервер по-прежнему может подавить мобильный push, когда обнаруживает, что вы активны. Требует Claude Code версии 2.1.193 или позже |272| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | Установите на `1`, чтобы отправить уведомление рабочего стола инструмента `PushNotification` даже во время ввода текста в терминал или его фокусировки. По умолчанию инструмент пропускает как уведомление рабочего стола, так и [мобильный push](/docs/ru/remote-control#mobile-push-notifications), когда обнаруживает недавнюю активность клавиатуры или фокус терминала. Эта переменная отключает только эту локальную проверку, поэтому сервер по-прежнему может подавить мобильный push, когда обнаруживает, что вы активны. Требует Claude Code версии 2.1.193 или позже |

271| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Установите на `1`, чтобы отключить автоматическую регистрацию официального рынка плагинов. Claude Code читает переменную, когда собирается зарегистрировать рынок, обычно при первом интерактивном запуске машины. Если переменная установлена в этот момент, Claude Code постоянно пропускает регистрацию. Отмена установки переменной позже не отменяет пропуск. Запустите `claude plugin marketplace add anthropics/claude-plugins-official` для регистрации рынка в любое время |273| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Установите на `1`, чтобы отключить автоматическую регистрацию официального рынка плагинов. Claude Code читает переменную, когда собирается зарегистрировать рынок, обычно при первом интерактивном запуске машины. Если переменная установлена в этот момент, Claude Code постоянно пропускает регистрацию. Отмена установки переменной позже не отменяет пропуск. Запустите `claude plugin marketplace add anthropics/claude-plugins-official` для регистрации рынка в любое время |

272| `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | Установите на `1`, чтобы остановить Claude Code от запуска ваших [hooks Notification для неотвеченных запросов разрешений](/docs/ru/hooks#notification) в сеансах, где Claude Code отправляет их обратному вызову `canUseTool` Agent SDK, что является тем, как Claude Desktop и расширение VS Code размещают Claude Code. Не имеет эффекта в сеансах терминала. Требует Claude Code версии 2.1.233 или позже |274| `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | Установите на `1`, чтобы остановить Claude Code от запуска ваших [hooks Notification для неотвеченных запросов разрешений](/docs/ru/hooks#notification) в сеансах, где Claude Code отправляет их обратному вызову `canUseTool` Agent SDK, что является тем, как Claude Desktop и расширение VS Code размещают Claude Code. Не имеет эффекта в сеансах терминала. Требует Claude Code версии 2.1.233 или позже |

273| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Установите на `1`, чтобы пропустить загрузку skills из системного каталога управляемых skills. Полезно для сеансов контейнера или CI, которые не должны загружать skills, предоставленные оператором |275| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Установите на `1`, чтобы пропустить загрузку skills из системного каталога управляемых skills. Полезно для сеансов контейнера или CI, которые не должны загружать skills, предоставленные оператором |

276| `CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY` | Установите на `1`, чтобы отключить проверку [инструмента PowerShell](/docs/ru/tools-reference#powershell-tool), которая отклоняет встроенные команды `cmd` `rd`, `rmdir`, `del` и `erase` на [системном пути](/docs/ru/permission-modes#remove-item-in-powershell), такой как корень диска или ваш домашний каталог. Claude Code игнорирует эту переменную в блоке `env` файла параметров. Требует Claude Code версии 2.1.283 или позже |

277| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Установите на `1`, чтобы отключить проверку [критических путей](/docs/ru/permission-modes#critical-paths) для рекурсивного `rm`, чей целевой объект полностью является выводом подстановки команды, такой как `rm -rf "$(pwd)"`. Другие проверки критических путей продолжают работать. Установите это в окружении, которое запускает Claude Code, так как Claude Code игнорирует копию, доставленную через блок параметров `env`. Требует Claude Code версии 2.1.281 или позже |

274| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Установите на `1`, чтобы отключить автоматические обновления заголовка терминала на основе контекста разговора. Это также пропускает фоновый запрос модели small/fast для [создания заголовка сеанса](/docs/ru/sessions#name-your-sessions) |278| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Установите на `1`, чтобы отключить автоматические обновления заголовка терминала на основе контекста разговора. Это также пропускает фоновый запрос модели small/fast для [создания заголовка сеанса](/docs/ru/sessions#name-your-sessions) |

275| `CLAUDE_CODE_DISABLE_THINKING` | Установите на `1`, чтобы полностью опустить параметр `thinking` из запросов API. Это вариант совместимости для прокси и шлюзов, которые отклоняют параметр. На моделях, которые думают по умолчанию, опущение параметра означает, что модель может всё ещё думать. Чтобы явно отключить [расширенное мышление](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) на API Anthropic, используйте `MAX_THINKING_TOKENS=0` вместо этого. Ни одна переменная не отключает мышление на Opus 5.5 или моделях Fable, которые не могут иметь отключённое мышление. На [сторонних поставщиках](/docs/ru/third-party-integrations) `MAX_THINKING_TOKENS=0` аналогично опускает параметр, поэтому две переменные ведут себя одинаково там |279| `CLAUDE_CODE_DISABLE_THINKING` | Установите на `1`, чтобы полностью опустить параметр `thinking` из запросов API. Это вариант совместимости для прокси и шлюзов, которые отклоняют параметр. На моделях, которые думают по умолчанию, опущение параметра означает, что модель может всё ещё думать. Чтобы явно отключить [расширенное мышление](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) на API Anthropic, используйте `MAX_THINKING_TOKENS=0` вместо этого. Ни одна переменная не отключает мышление на Opus 5.5, Sonnet 5.5 или моделях Fable, которые не могут иметь отключённое мышление. На [сторонних поставщиках](/docs/ru/third-party-integrations) `MAX_THINKING_TOKENS=0` аналогично опускает параметр, поэтому две переменные ведут себя одинаково там |

276| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Установите на `1`, чтобы пропустить проактивное [автокомпактирование](/docs/ru/costs#reduce-token-usage) когда Claude Code не распознаёт ID модели, такой как [LLM gateway](/docs/ru/llm-gateway) псевдоним. Без этой переменной Claude Code компактирует при окне контекста, которое он предполагает для ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` может вместо этого исправить предполагаемое окно; см. [Исправить окно для ID шлюза или пользовательской модели](/docs/ru/model-config#correct-the-window-for-a-gateway-or-custom-model-id) для того, когда каждая переменная применяется. Требует Claude Code версии 2.1.223 или позже |280| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Установите на `1`, чтобы пропустить проактивное [автокомпактирование](/docs/ru/costs#reduce-token-usage) когда Claude Code не распознаёт ID модели, такой как [LLM gateway](/docs/ru/llm-gateway) псевдоним. Без этой переменной Claude Code компактирует при окне контекста, которое он предполагает для ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` может вместо этого исправить предполагаемое окно; см. [Исправить окно для ID шлюза или пользовательской модели](/docs/ru/model-config#correct-the-window-for-a-gateway-or-custom-model-id) для того, когда каждая переменная применяется. Требует Claude Code версии 2.1.223 или позже |

277| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Установите на `1`, чтобы отключить виртуальную прокрутку в [полноэкранном рендере](/docs/ru/fullscreen) и отобразить каждое сообщение в стенограмме. Используйте это, если прокрутка в полноэкранном режиме показывает пустые области, где должны появиться сообщения |281| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Установите на `1`, чтобы отключить виртуальную прокрутку в [полноэкранном рендере](/docs/ru/fullscreen) и отобразить каждое сообщение в стенограмме. Используйте это, если прокрутка в полноэкранном режиме показывает пустые области, где должны появиться сообщения |

278| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | Установите на `1`, чтобы запустить команды [инструмента PowerShell](/docs/ru/tools-reference#powershell-tool) на Windows напрямую вместо использования средства запуска `cmd.exe`. По умолчанию средство запуска позволяет команде PowerShell [работающей в фоне](/docs/ru/tools-reference#background-commands) [переносить на процесс следующего сеанса](/docs/ru/agent-view#the-supervisor-process), например, когда вы [фоновый сеанс](/docs/ru/agent-view#from-inside-a-session). Если вы установите переменную, фоновая команда PowerShell останавливается при выходе процесса сеанса. Команды Bash не затронуты. Требует Claude Code версии 2.1.269 или позже |282| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | Установите на `1`, чтобы запустить команды [инструмента PowerShell](/docs/ru/tools-reference#powershell-tool) на Windows напрямую вместо использования средства запуска `cmd.exe`. По умолчанию средство запуска позволяет команде PowerShell [работающей в фоне](/docs/ru/tools-reference#background-commands) [переносить на процесс следующего сеанса](/docs/ru/agent-view#the-supervisor-process), например, когда вы [фоновый сеанс](/docs/ru/agent-view#from-inside-a-session). Если вы установите переменную, фоновая команда PowerShell останавливается при выходе процесса сеанса. Команды Bash не затронуты. Требует Claude Code версии 2.1.269 или позже |


281| `CLAUDE_CODE_ENABLE_AUTO_MODE` | Принято для совместимости со старыми выпусками и не имеет эффекта. Автоматический режим доступен по умолчанию на каждом поставщике, включая Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry и сеансы [Claude apps gateway](/docs/ru/claude-apps-gateway) с входом. В версиях 2.1.158 через 2.1.206 установка на `1` была необходима для доступности [автоматического режима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) на этих поставщиках |285| `CLAUDE_CODE_ENABLE_AUTO_MODE` | Принято для совместимости со старыми выпусками и не имеет эффекта. Автоматический режим доступен по умолчанию на каждом поставщике, включая Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry и сеансы [Claude apps gateway](/docs/ru/claude-apps-gateway) с входом. В версиях 2.1.158 через 2.1.206 установка на `1` была необходима для доступности [автоматического режима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) на этих поставщиках |

282| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Переопределить доступность [сводки сеанса](/docs/ru/interactive-mode#session-recap). Установите на `0`, чтобы принудительно отключить сводки независимо от переключателя `/config`. Установите на `1`, чтобы принудительно включить сводки, когда [`awaySummaryEnabled`](/docs/ru/settings-reference#awaysummaryenabled) имеет значение `false`. Имеет приоритет над параметром и переключателем `/config` |286| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Переопределить доступность [сводки сеанса](/docs/ru/interactive-mode#session-recap). Установите на `0`, чтобы принудительно отключить сводки независимо от переключателя `/config`. Установите на `1`, чтобы принудительно включить сводки, когда [`awaySummaryEnabled`](/docs/ru/settings-reference#awaysummaryenabled) имеет значение `false`. Имеет приоритет над параметром и переключателем `/config` |

283| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Установите на `1`, чтобы обновить состояние плагина на границах хода в [неинтерактивном режиме](/docs/ru/headless) после завершения фоновой установки. Отключено по умолчанию, потому что обновление изменяет системную подсказку в середине сеанса, что делает недействительным [кэширование подсказок](/docs/ru/prompt-caching) для этого хода |287| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Установите на `1`, чтобы обновить состояние плагина на границах хода в [неинтерактивном режиме](/docs/ru/headless) после завершения фоновой установки. Отключено по умолчанию, потому что обновление изменяет системную подсказку в середине сеанса, что делает недействительным [кэширование подсказок](/docs/ru/prompt-caching) для этого хода |

284| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Установите на `1`, чтобы направить опрос качества сеанса "How is Claude doing?" на ваш собственный [сборщик OpenTelemetry](/docs/ru/monitoring-usage), когда трафик несущественный, связанный с Anthropic, заблокирован. Рейтинги опроса выдаются только как события OTEL вашему настроенному сборщику. Никакие данные опроса не отправляются Anthropic в этом режиме. Применяется, когда установлены `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY` или `DO_NOT_TRACK`, и не имеет эффекта в противном случае. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` и политика отзывов организации имеют приоритет |288| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Установите на `1`, чтобы направить опрос качества сеанса "How is Claude doing?" на ваш собственный [сборщик OpenTelemetry](/docs/ru/monitoring-usage) когда трафик несущественный, связанный с Anthropic, заблокирован. Рейтинги опроса выдаются только как события OTEL вашему настроенному сборщику. Никакие данные опроса не отправляются Anthropic в этом режиме. Применяется, когда установлены `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY` или `DO_NOT_TRACK`, и не имеет эффекта в противном случае. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` и политика отзывов организации имеют приоритет |

285| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Контролирует, потоком ли входные данные вызова инструмента из API по мере их создания Claude. При отключении большой вход инструмента, такой как длинная запись файла, поступает только после завершения создания Claude, что может выглядеть как зависание. Включено по умолчанию на API Anthropic. На Amazon Bedrock и Google Cloud's Agent Platform включено для каждой модели, где развёрнутый контейнер это поддерживает. Установите на `0`, чтобы отказаться. Установите на `1`, чтобы принудительно включить при маршрутизации через прокси через `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL` или `ANTHROPIC_BEDROCK_BASE_URL`. Отключено по умолчанию на Microsoft Foundry и подключениях [шлюза](/docs/ru/llm-gateway) |289| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Контролирует, потоком ли входные данные вызова инструмента из API по мере их создания Claude. При отключении большой вход инструмента, такой как длинная запись файла, поступает только после завершения создания Claude, что может выглядеть как зависание. Включено по умолчанию на API Anthropic. На Amazon Bedrock и Google Cloud's Agent Platform включено для каждой модели, где развёрнутый контейнер это поддерживает. Установите на `0`, чтобы отказаться. Установите на `1`, чтобы принудительно включить при маршрутизации через прокси через `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL` или `ANTHROPIC_BEDROCK_BASE_URL`. Отключено по умолчанию на Microsoft Foundry и подключениях [шлюза](/docs/ru/llm-gateway) |

286| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Установите на `1`, чтобы заполнить средство выбора `/model` из конечной точки `/v1/models` вашего шлюза, когда `ANTHROPIC_BASE_URL` указывает на совместимый с Anthropic шлюз, такой как LiteLLM, Kong или внутренний прокси. Отключено по умолчанию, потому что шлюзы, поддерживаемые общим ключом API, в противном случае показали бы каждому пользователю каждую модель, к которой может получить доступ ключ. Обнаруженные модели по-прежнему фильтруются по [`availableModels`](/docs/ru/settings-reference#availablemodels) списку разрешений, который получает сеанс; доставьте список через [MDM или файл управляемых параметров](/docs/ru/managed-settings#delivery-mechanisms), так как [доставка, управляемая сервером, недоступна на конфигурациях шлюза](/docs/ru/server-managed-settings#platform-availability) |290| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Установите на `1`, чтобы заполнить средство выбора `/model` из конечной точки `/v1/models` вашего шлюза, когда `ANTHROPIC_BASE_URL` указывает на совместимый с Anthropic шлюз, такой как LiteLLM, Kong или внутренний прокси. Отключено по умолчанию, потому что шлюзы, поддерживаемые общим ключом API, в противном случае показали бы каждому пользователю каждую модель, к которой может получить доступ ключ. Обнаруженные модели по-прежнему фильтруются по [`availableModels`](/docs/ru/settings-reference#availablemodels) списку разрешений, который получает сеанс; доставьте список через [MDM или файл управляемых параметров](/docs/ru/managed-settings#delivery-mechanisms), так как [доставка, управляемая сервером, недоступна на конфигурациях шлюза](/docs/ru/server-managed-settings#platform-availability) |

287| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | Удалено в версии 2.1.142, когда [быстрый режим](/docs/ru/fast-mode) по умолчанию переместился с Opus 4.6 на Opus 4.7 |291| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | Удалено в версии 2.1.142, когда [быстрый режим](/docs/ru/fast-mode) по умолчанию переместился с Opus 4.6 на Opus 4.7 |

288| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Установите на `false`, чтобы отключить предложения подсказок, серые предсказания, которые появляются в вводе подсказки. Имеет приоритет над параметром [`promptSuggestionEnabled`](/docs/ru/settings-reference#promptsuggestionenabled), который записывает переключатель **Prompt suggestions** в `/config`. Claude Code также [приостанавливает предложения, пока ваша учётная запись близка к или находится на пределе использования](/docs/ru/interactive-mode#when-claude-code-skips-suggestions). Установите на `true`, чтобы сохранить их включёнными до достижения лимита. Требует Claude Code версии 2.1.238 или позже. См. [Предложения подсказок](/docs/ru/interactive-mode#prompt-suggestions) |292| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Установите на `false`, чтобы отключить предложения подсказок, серые предсказания, которые появляются в вводе подсказки. Имеет приоритет над параметром [`promptSuggestionEnabled`](/docs/ru/settings-reference#promptsuggestionenabled), который записывает переключатель **Prompt suggestions** в `/config`. Claude Code также [приостанавливает предложения, пока ваша учётная запись близка к или находится на пределе использования](/docs/ru/interactive-mode#when-claude-code-skips-suggestions). Установите на `true`, чтобы сохранить их включёнными до достижения лимита. Требует Claude Code версии 2.1.238 или позже. См. [Предложения подсказок](/docs/ru/interactive-mode#prompt-suggestions) |

289| `CLAUDE_CODE_ENABLE_TASKS` | Выбирает, какие инструменты отслеживания задач Claude Code предоставляет в [сеансах, которые их имеют](/docs/ru/tools-reference#task-tool-availability). По умолчанию Claude Code предоставляет инструменты Task `TaskCreate`, `TaskUpdate`, `TaskGet` и `TaskList`. Установите на `0`, чтобы получить вместо этого устаревший инструмент `TodoWrite`. См. [Список задач](/docs/ru/interactive-mode#task-list) |293| `CLAUDE_CODE_ENABLE_TASKS` | Выбирает, какие инструменты отслеживания задач Claude Code предоставляет в [сеансах, которые их имеют](/docs/ru/tools-reference#task-tool-availability). По умолчанию Claude Code предоставляет инструменты Task `TaskCreate`, `TaskUpdate`, `TaskGet` и `TaskList`. Установите на `0`, чтобы получить вместо этого устаревший инструмент `TodoWrite`. См. [Список задач](/docs/ru/interactive-mode#task-list) |

290| `CLAUDE_CODE_ENABLE_TELEMETRY` | Установите на `1`, чтобы включить сбор данных OpenTelemetry для метрик и логирования. Требуется перед настройкой экспортёров OTel. См. [Мониторинг](/docs/ru/monitoring-usage) |294| `CLAUDE_CODE_ENABLE_TELEMETRY` | Установите на `1`, чтобы включить сбор данных OpenTelemetry для метрик и логирования. Требуется перед настройкой экспортёров OTel. Установите это в вашей оболочке, пользовательских параметрах или управляемых параметрах. Игнорируется в [параметрах проекта и локальных параметрах](/docs/ru/settings-reference#variables-claude-code-ignores-in-env). См. [Мониторинг](/docs/ru/monitoring-usage) |

291| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Установите на `1`, чтобы получить инструменты отслеживания задач на каждой модели. Без этого Claude Code предоставляет их по умолчанию только на моделях, перечисленных в [Доступность инструмента Task](/docs/ru/tools-reference#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` по-прежнему выбирает инструменты Task или `TodoWrite`. Требует Claude Code версии 2.1.233 или позже |295| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Установите на `1`, чтобы получить инструменты отслеживания задач на каждой модели. Без этого Claude Code предоставляет их по умолчанию только на моделях, перечисленных в [Доступность инструмента Task](/docs/ru/tools-reference#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` по-прежнему выбирает инструменты Task или `TodoWrite`. Требует Claude Code версии 2.1.233 или позже |

292| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Время в миллисекундах для ожидания после того, как цикл запроса становится неактивным, перед автоматическим выходом. Полезно для автоматизированных рабочих процессов и скриптов, использующих режим SDK |296| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Время в миллисекундах для ожидания после того, как цикл запроса становится неактивным, перед автоматическим выходом. Полезно для автоматизированных рабочих процессов и скриптов, использующих режим SDK |

293| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Установите на `1`, чтобы включить [команды агентов](/docs/ru/agent-teams). Команды агентов являются экспериментальными и отключены по умолчанию |297| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Установите на `1`, чтобы включить [команды агентов](/docs/ru/agent-teams). Команды агентов являются экспериментальными и отключены по умолчанию |


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

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

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

344| `CLAUDE_CODE_PLUGIN_DIRS` | Каталоги плагинов для загрузки для сеанса, каждый загруженный способом, которым флаг [`--plugin-dir`](/docs/ru/plugins#test-your-plugins-locally) загружает его. Разделите несколько путей с `:` на Unix или `;` на Windows. Дайте каждый путь как абсолютный путь или начните его с `~`, потому что Claude Code пропускает относительные пути. Требует Claude Code версии 2.1.280 или позже |348| `CLAUDE_CODE_PLUGIN_DIRS` | Каталоги плагинов для загрузки для сеанса, каждый загруженный способом, которым флаг [`--plugin-dir`](/docs/ru/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) загружает его. Разделите несколько путей с `:` на Unix или `;` на Windows. Дайте каждый путь как абсолютный путь или начните его с `~`, потому что Claude Code пропускает относительные пути. Требует Claude Code версии 2.1.280 или позже. См. [Загрузить плагин для одного сеанса](/docs/ru/plugins/create#load-a-directory-or-archive-for-one-session) |

345| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Таймаут в миллисекундах для операций git при установке или обновлении плагинов (по умолчанию: 120000). Увеличьте это значение для больших репозиториев или медленных сетевых подключений. См. [Операции Git истекают](/docs/ru/plugin-marketplaces#git-operations-time-out) |349| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Таймаут в миллисекундах для операций git при установке или обновлении плагинов (по умолчанию: 120000). Увеличьте это значение для больших репозиториев или медленных сетевых подключений. См. [Операции Git истекают](/docs/ru/plugins/troubleshooting#git-clone-timed-out-after-120s) |

346| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Установите на `1`, чтобы пропустить попытку повторного клонирования и продолжить использование существующего клона рынка, когда обновление рынка не может достичь или аутентифицироваться на удалённом источнике. Полезно в автономных или изолированных окружениях, где повторное клонирование не выполнилось бы так же. См. [Обновления рынка не выполняются в автономных окружениях](/docs/ru/plugin-marketplaces#marketplace-updates-fail-in-offline-environments) |350| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Установите на `1`, чтобы пропустить попытку повторного клонирования и продолжить использование существующего клона рынка, когда обновление рынка не может достичь или аутентифицироваться на удалённом источнике. Полезно в автономных или изолированных окружениях, где повторное клонирование не выполнилось бы так же. См. [Обновления рынка не выполняются в автономных окружениях](/docs/ru/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |

347| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Установите на `1`, чтобы клонировать сокращённые источники GitHub `owner/repo` через HTTPS вместо SSH. Применяется к установке и обновлению плагина, а также к `/plugin marketplace add` и `update`. Полезно в средах CI, контейнерах или любом окружении без настроенного ключа SSH для `github.com` |351| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Установите на `1`, чтобы клонировать сокращённые источники GitHub `owner/repo` через HTTPS вместо SSH. Применяется к установке и обновлению плагина, а также к `/plugin marketplace add` и `update`. Полезно в средах CI, контейнерах или любом окружении без настроенного ключа SSH для `github.com` |

348| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Путь к одному или нескольким каталогам семян плагинов только для чтения, разделённым `:` на Unix или `;` на Windows. Используйте это, чтобы упаковать предварительно заполненный каталог плагинов в образ контейнера. Claude Code регистрирует рынки из этих каталогов при запуске и использует предварительно кэшированные плагины без повторного клонирования. См. [Предварительно заполнить плагины для контейнеров](/docs/ru/plugin-marketplaces#pre-populate-plugins-for-containers) |352| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Путь к одному или нескольким каталогам семян плагинов только для чтения, разделённым `:` на Unix или `;` на Windows. Используйте это, чтобы упаковать предварительно заполненный каталог плагинов в образ контейнера. Claude Code регистрирует рынки из этих каталогов при запуске и использует предварительно кэшированные плагины без повторного клонирования. См. [Предварительно заполнить плагины для контейнеров](/docs/ru/plugins/org#seed-containers-and-ci) |

349| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Установите на `1`, чтобы остановить Claude Code от передачи `-ExecutionPolicy Bypass` при порождении PowerShell для вызовов инструментов, hooks и команд строки состояния, и вместо этого соблюдать эффективную политику выполнения машины. По умолчанию Claude Code обходит политику выполнения в области процесса, поэтому скрипты `.ps1` и импорты модулей работают на установках Windows с ограничением по умолчанию. Обход области процесса никогда не переопределяет Group Policy `MachinePolicy` или `UserPolicy` независимо от этого параметра |353| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Установите на `1`, чтобы остановить Claude Code от передачи `-ExecutionPolicy Bypass` при порождении PowerShell для вызовов инструментов, hooks и команд строки состояния, и вместо этого соблюдать эффективную политику выполнения машины. По умолчанию Claude Code обходит политику выполнения в области процесса, поэтому скрипты `.ps1` и импорты модулей работают на установках Windows с ограничением по умолчанию. Обход области процесса никогда не переопределяет Group Policy `MachinePolicy` или `UserPolicy` независимо от этого параметра |

350| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | Потолок в миллисекундах на ожидание простоя для фоновых подагентов и workflows после финального хода в [неинтерактивном режиме](/docs/ru/headless#background-tasks-at-exit) с флагом `-p`. Ожидание простоя начинается заново каждый раз, когда Claude берёт ход для обработки результата фона. По умолчанию: `600000` или 10 минут. Когда ожидание простоя достигает потолка, Claude Code перестаёт ждать оставшихся фоновых задач и выходит. Установите на `0`, чтобы ждать бесконечно. Этот потолок отделён от пятисекундного периода благодарности, который применяется к простым фоновым оболочкам. Требует Claude Code версии 2.1.182 или позже |354| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | Потолок в миллисекундах на ожидание простоя для фоновых подагентов и workflows после финального хода в [неинтерактивном режиме](/docs/ru/headless#background-tasks-at-exit) с флагом `-p`. Ожидание простоя начинается заново каждый раз, когда Claude берёт ход для обработки результата фона. По умолчанию: `600000` или 10 минут. Когда ожидание простоя достигает потолка, Claude Code перестаёт ждать оставшихся фоновых задач и выходит. Установите на `0`, чтобы ждать бесконечно. Этот потолок отделён от пятисекундного периода благодарности, который применяется к простым фоновым оболочкам. Требует Claude Code версии 2.1.182 или позже |

351| `CLAUDE_CODE_PROCESS_WRAPPER` | Запустить процессы, которые Claude Code запускает из своего собственного двоичного файла, такие как фоновый сервис, который размещает сеансы [представления агента](/docs/ru/agent-view), через корпоративный средство запуска, заданное как префикс argv, такой как `/opt/corp/launcher`. Установите это в блоке `env` пользовательских или [управляемых параметров](/docs/ru/managed-settings), а не как экспорт оболочки, поэтому отделённый фоновый сервис его наследует; параметры проекта и локальные параметры не могут его установить. Эквивалентно параметру [`processWrapper`](/docs/ru/settings-reference#processwrapper), который требует Claude Code версии 2.1.210 или позже; эта переменная имеет приоритет при установке обоих. Расширение VS Code настраивает свой собственный средство запуска отдельно через параметр `claudeProcessWrapper`. Игнорируется на Windows. См. [Запустить Claude Code за корпоративным средством запуска](/docs/ru/corporate-launcher) для формата значения, что охватывает средство запуска и контракт, который должно удовлетворять средство запуска. Требует Claude Code версии 2.1.208 или позже |355| `CLAUDE_CODE_PROCESS_WRAPPER` | Запустить процессы, которые Claude Code запускает из своего собственного двоичного файла, такие как фоновый сервис, который размещает сеансы [представления агента](/docs/ru/agent-view), через корпоративный средство запуска, заданное как префикс argv, такой как `/opt/corp/launcher`. Установите это в блоке `env` пользовательских или [управляемых параметров](/docs/ru/managed-settings), а не как экспорт оболочки, поэтому отделённый фоновый сервис его наследует; параметры проекта и локальные параметры не могут его установить. Эквивалентно параметру [`processWrapper`](/docs/ru/settings-reference#processwrapper), который требует Claude Code версии 2.1.210 или позже; эта переменная имеет приоритет при установке обоих. Расширение VS Code настраивает свой собственный средство запуска отдельно через параметр `claudeProcessWrapper`. Игнорируется на Windows. См. [Запустить Claude Code за корпоративным средством запуска](/docs/ru/corporate-launcher) для формата значения, что охватывает средство запуска и контракт, который должно удовлетворять средство запуска. Требует Claude Code версии 2.1.208 или позже |

352| `CLAUDE_CODE_PROJECT_DIR_NAME` | Установите вместе с `CLAUDE_CONFIG_DIR`, чтобы выбрать имя каталога `projects/`, в котором Claude Code хранит стенограммы этого сеанса и автоматическую память, вместо одного, полученного из пути рабочего каталога. Например, запуск Claude Code с `CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude` хранит их в `/srv/tenant-a/projects/work/`. Claude Code игнорирует эту переменную, когда `CLAUDE_CONFIG_DIR` не установлен, и читает её только из окружения, которое вы запускаете `claude` из, никогда из блока параметров `env` [параметров файла](#in-settings-files). См. [Назовите каталог проекта сами](/docs/ru/sessions#name-the-project-directory-yourself). Требует Claude Code версии 2.1.234 или позже |356| `CLAUDE_CODE_PROJECT_DIR_NAME` | Установите вместе с `CLAUDE_CONFIG_DIR`, чтобы выбрать имя каталога `projects/`, в котором Claude Code хранит стенограммы этого сеанса и автоматическую память, вместо одного, полученного из пути рабочего каталога. Например, запуск Claude Code с `CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude` хранит их под `/srv/tenant-a/projects/work/`. Claude Code игнорирует эту переменную, когда `CLAUDE_CONFIG_DIR` не установлен, и читает её только из окружения, которое вы запускаете `claude` из, никогда из блока параметров `env` [параметров файла](#in-settings-files). См. [Назовите каталог проекта сами](/docs/ru/sessions#name-the-project-directory-yourself). Требует Claude Code версии 2.1.234 или позже |

353| `CLAUDE_CODE_PROMPT_CACHE_TTL` | Установите `5m` или `1h`, единственные значения, которые Claude Code принимает, чтобы выбрать [TTL кэша подсказок](/docs/ru/prompt-caching#cache-lifetime) для основного разговора: ваши интерактивные, `-p` и SDK ходы, плюс помощники, которые работают встроенно с ними. Имеет приоритет над параметром `promptCacheTtl` и над `ENABLE_PROMPT_CACHING_1H`, и `FORCE_PROMPT_CACHING_5M` переопределяет его. API выставляет счета за записи кэша на 1 час по более высокой ставке. Требует Claude Code версии 2.1.242 или позже |357| `CLAUDE_CODE_PROMPT_CACHE_TTL` | Установите `5m` или `1h`, единственные значения, которые Claude Code принимает, чтобы выбрать [TTL кэша подсказок](/docs/ru/prompt-caching#cache-lifetime) для основного разговора: ваши интерактивные, `-p` и SDK ходы, плюс помощники, которые работают встроенно с ними. Имеет приоритет над параметром `promptCacheTtl` и над `ENABLE_PROMPT_CACHING_1H`, и `FORCE_PROMPT_CACHING_5M` переопределяет его. API выставляет счета за записи кэша на 1 час по более высокой ставке. Требует Claude Code версии 2.1.242 или позже |

354| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | Установите на `1`, чтобы распространять контекст трассировки W3C, когда `ANTHROPIC_BASE_URL` указывает на пользовательский прокси. Распространение охватывает заголовок `traceparent` на запросах модели и HTTP MCP и переменную окружения `TRACEPARENT` для подпроцессов Bash, PowerShell и hook. По умолчанию распространение включено только при прямом подключении к API Anthropic. Добавлено в версии 2.1.152. См. [Трассировки (бета)](/docs/ru/monitoring-usage#traces-beta) |358| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | Установите на `1`, чтобы распространять контекст трассировки W3C, когда `ANTHROPIC_BASE_URL` указывает на пользовательский прокси. Распространение охватывает заголовок `traceparent` на запросах модели и HTTP MCP и переменную окружения `TRACEPARENT` для подпроцессов Bash, PowerShell и hook. По умолчанию распространение включено только при прямом подключении к API Anthropic. Добавлено в версии 2.1.152. См. [Трассировки (бета)](/docs/ru/monitoring-usage#traces-beta) |

355| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Установлено хост-платформами, которые встраивают Claude Code и управляют маршрутизацией поставщика модели от его имени. При установке Claude Code игнорирует переменные выбора поставщика, конечной точки и аутентификации, такие как `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL` и `ANTHROPIC_API_KEY` в файлах параметров, поэтому пользовательские параметры не могут переопределить маршрутизацию хоста. Claude Code также игнорирует ключи выбора модели, такие как `model`, `fallbackModel` и `modelOverrides` в [управляемых параметрах](/docs/ru/managed-settings), какой бы управляемый источник их не доставлял, поэтому конфигурация модели хоста имеет приоритет над устаревшей закреплённой моделью. Claude Code также игнорирует переменные выбора модели, такие как `ANTHROPIC_MODEL` и семейство `ANTHROPIC_DEFAULT_*_MODEL` в управляемом блоке `env`; список разрешений [`availableModels`](/docs/ru/model-config#restrict-model-selection) в управляемых параметрах по-прежнему применяется, если только хост не предоставляет свой собственный. Claude Code также пропускает автоматический отказ от телеметрии, который он в противном случае применяет на сторонних поставщиках, таких как Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform и Microsoft Foundry, поэтому телеметрия следует стандартному отказу `DISABLE_TELEMETRY`. См. [Поведение по умолчанию по поставщику API](/docs/ru/data-usage#default-behaviors-by-api-provider) |359| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Установлено хост-платформами, которые встраивают Claude Code и управляют маршрутизацией поставщика модели от его имени. При установке Claude Code игнорирует переменные выбора поставщика, конечной точки и аутентификации, такие как `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL` и `ANTHROPIC_API_KEY` в файлах параметров, поэтому пользовательские параметры не могут переопределить маршрутизацию хоста. Claude Code также игнорирует ключи выбора модели, такие как `model`, `fallbackModel` и `modelOverrides` в [управляемых параметрах](/docs/ru/managed-settings), какой бы управляемый источник их не доставлял, поэтому конфигурация модели хоста имеет приоритет над устаревшей закреплённой моделью. Claude Code также игнорирует переменные выбора модели, такие как `ANTHROPIC_MODEL` и семейство `ANTHROPIC_DEFAULT_*_MODEL` в управляемом блоке `env`; список разрешений [`availableModels`](/docs/ru/model-config#restrict-model-selection) в управляемых параметрах по-прежнему применяется, если только хост не предоставляет свой собственный. Claude Code также пропускает автоматический отказ от телеметрии, который он в противном случае применяет на сторонних поставщиках, таких как Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform и Microsoft Foundry, поэтому телеметрия следует стандартному отказу `DISABLE_TELEMETRY`. См. [Поведение по умолчанию по поставщику API](/docs/ru/data-usage#default-behaviors-by-api-provider) |


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

360| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Установите на `1`, чтобы автоматически возобновить, если предыдущий сеанс закончился в середине хода. Используется в режиме SDK, поэтому модель продолжает без требования SDK повторно отправить подсказку. Чтобы отключить это, отмените установку переменной или установите её на `0`. До версии 2.1.221 Claude Code игнорировал `0` и другие ложные значения, поэтому установка `0` по-прежнему срабатывала возобновление в неинтерактивном режиме и отмена установки переменной была единственным способом отключить это |364| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Установите на `1`, чтобы автоматически возобновить, если предыдущий сеанс закончился в середине хода. Используется в режиме SDK, поэтому модель продолжает без требования SDK повторно отправить подсказку. Чтобы отключить это, отмените установку переменной или установите её на `0`. До версии 2.1.221 Claude Code игнорировал `0` и другие ложные значения, поэтому установка `0` по-прежнему срабатывала возобновление в неинтерактивном режиме и отмена установки переменной была единственным способом отключить это |

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

362| `CLAUDE_CODE_RESUME_PROMPT` | Переопределить сообщение продолжения, введённое при возобновлении сеанса, который закончился в середине хода. По умолчанию `Continue from where you left off.`. Скрипты порождения для долгоживущих агентов могут установить это на более директивное сообщение загрузки. Пустая строка использует значение по умолчанию |366| `CLAUDE_CODE_RESUME_PROMPT` | Переопределить сообщение продолжения, введённое при возобновлении сеанса, который закончился в середине хода. По умолчанию `Continue from where you left off.`. Пустая строка использует значение по умолчанию |

363| `CLAUDE_CODE_RETRY_WATCHDOG` | Установите на `1` для неконтролируемых сеансов, таких как оценочные средства, задачи CI или удалённые рабочие. Повторяет ошибки ёмкости `429` и `529` бесконечно вместо отказа после попыток `CLAUDE_CODE_MAX_RETRIES`. Claude Code не выполняется сразу, когда запрос стандартной скорости получает `429`, который сообщает об ограничении расходов или исчерпанных кредитах использования, даже один из [ограничения расходов шлюза](/docs/ru/errors#spend-limit-reached), который сбрасывается по расписанию. До версии 2.1.239 сторож повторял эти бесконечно. Для запросов быстрого режима см. [Обработка ограничений скорости](/docs/ru/fast-mode#handle-rate-limits). Сторож отступает до 5 минут между попытками или до сброса ограничения, когда ответ несёт время сброса ограничения скорости, поэтому сеанс, который попадает на ограничение использования, ждёт оставшегося окна. На версии 2.1.199 или позже он также повышает количество повторов по умолчанию для других переходных ошибок, таких как ошибки сервера, таймауты и отброшенные подключения, до 300, примерно три часа отступления, и удаляет ограничение 15 на `CLAUDE_CODE_MAX_RETRIES`, если вы явно установите эту переменную. Требует Claude Code версии 2.1.186 или позже |367| `CLAUDE_CODE_RETRY_WATCHDOG` | Установите на `1` для неконтролируемых сеансов, таких как оценочные средства, задачи CI или удалённые рабочие. Повторяет ошибки ёмкости `429` и `529` бесконечно вместо отказа после попыток `CLAUDE_CODE_MAX_RETRIES`. Claude Code не выполняется сразу, когда запрос стандартной скорости получает `429`, который сообщает об ограничении расходов или исчерпанных кредитах использования, даже один из [ограничения расходов шлюза](/docs/ru/errors#spend-limit-reached), который сбрасывается по расписанию. До версии 2.1.239 сторож повторял эти бесконечно. Для запросов быстрого режима см. [Обработка ограничений скорости](/docs/ru/fast-mode#handle-rate-limits). Сторож отступает до 5 минут между попытками или до сброса ограничения, когда ответ несёт время сброса ограничения скорости, поэтому сеанс, который попадает на ограничение использования, ждёт оставшегося окна. На версии 2.1.199 или позже он также повышает количество повторов по умолчанию для других переходных ошибок, таких как ошибки сервера, таймауты и отброшенные подключения, до 300, примерно три часа отступления, и удаляет ограничение 15 на `CLAUDE_CODE_MAX_RETRIES`, если вы явно установите эту переменную. Требует Claude Code версии 2.1.186 или позже |

364| `CLAUDE_CODE_SAFE_MODE` | Установите на `1`, чтобы запустить в безопасном режиме: CLAUDE.md, skills, плагины, hooks, MCP серверы, пользовательские команды и агенты, стили вывода, workflows, пользовательские темы, пользовательские сочетания клавиш, команды строки состояния и предложения файлов, LSP серверы и автоматическая память не загружаются для устранения неполадок сломанной конфигурации. Политика управляемых параметров по-прежнему применяется, включая настроенные политикой hooks, строку состояния и команды предложения файлов; управляемые плагины, управляемые skills, управляемые CLAUDE.md и настроенные политикой MCP серверы не загружаются. Эквивалентно передаче [`--safe-mode`](/docs/ru/cli-reference#cli-flags). Непосредственно порождённые дочерние процессы наследуют переменную |368| `CLAUDE_CODE_SAFE_MODE` | Установите на `1`, чтобы запустить в безопасном режиме: CLAUDE.md, skills, плагины, hooks, MCP серверы, пользовательские команды и агенты, стили вывода, workflows, пользовательские темы, пользовательские сочетания клавиш, команды строки состояния и предложения файлов, LSP серверы и автоматическая память не загружаются для устранения неполадок сломанной конфигурации. Политика управляемых параметров по-прежнему применяется, включая настроенные политикой hooks, строку состояния и команды предложения файлов; управляемые плагины, управляемые skills, управляемые CLAUDE.md и настроенные политикой MCP серверы не загружаются. Эквивалентно передаче [`--safe-mode`](/docs/ru/cli-reference#cli-flags). Непосредственно порождённые дочерние процессы наследуют переменную |

365| `CLAUDE_CODE_SCRIPT_CAPS` | JSON объект, ограничивающий, сколько раз конкретные скрипты могут быть вызваны за сеанс, когда установлен `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`. Ключи — это подстроки, совпадающие с текстом команды; значения — это ограничения количества вызовов. Например, `{"deploy.sh": 2}` позволяет `deploy.sh` быть вызванным максимум дважды. Совпадение основано на подстроке, поэтому трюки расширения оболочки, такие как `./scripts/deploy.sh $(evil)`, по-прежнему считаются против ограничения. Веерное расширение во время выполнения через `xargs` или `find -exec` не обнаруживается; это контроль защиты в глубину |369| `CLAUDE_CODE_SCRIPT_CAPS` | JSON объект, ограничивающий, сколько раз конкретные скрипты могут быть вызваны за сеанс, когда установлен `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`. Ключи — это подстроки, совпадающие с текстом команды; значения — это ограничения количества вызовов. Например, `{"deploy.sh": 2}` позволяет `deploy.sh` быть вызванным максимум дважды. Совпадение основано на подстроке, поэтому трюки расширения оболочки, такие как `./scripts/deploy.sh $(evil)`, по-прежнему считаются против ограничения. Веерное расширение во время выполнения через `xargs` или `find -exec` не обнаруживается; это контроль защиты в глубину |


378| `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | Установите на `1`, чтобы пропустить проверку доступности [быстрого режима](/docs/ru/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) на стороне клиента для прокси, которые перехватывают запрос проверки, а не отказывают в нём. API по-прежнему отклоняет запросы быстрого режима, когда ваша организация отключила быстрый режим |382| `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | Установите на `1`, чтобы пропустить проверку доступности [быстрого режима](/docs/ru/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) на стороне клиента для прокси, которые перехватывают запрос проверки, а не отказывают в нём. API по-прежнему отклоняет запросы быстрого режима, когда ваша организация отключила быстрый режим |

379| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Пропустить аутентификацию Azure для Microsoft Foundry, для прокси или шлюза, который вводит свой собственный заголовок `Authorization`. Claude Code отправляет запросы без учётных данных Azure и сохраняет заголовок `Authorization`, который вы предоставляете, например, через `ANTHROPIC_CUSTOM_HEADERS`. Игнорируется, когда установлены `ANTHROPIC_FOUNDRY_API_KEY` или `ANTHROPIC_FOUNDRY_AUTH_TOKEN`. До версии 2.1.203 эта переменная оставляла клиент Microsoft Foundry неспособным отправлять запросы, если ключ API также не был установлен |383| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Пропустить аутентификацию Azure для Microsoft Foundry, для прокси или шлюза, который вводит свой собственный заголовок `Authorization`. Claude Code отправляет запросы без учётных данных Azure и сохраняет заголовок `Authorization`, который вы предоставляете, например, через `ANTHROPIC_CUSTOM_HEADERS`. Игнорируется, когда установлены `ANTHROPIC_FOUNDRY_API_KEY` или `ANTHROPIC_FOUNDRY_AUTH_TOKEN`. До версии 2.1.203 эта переменная оставляла клиент Microsoft Foundry неспособным отправлять запросы, если ключ API также не был установлен |

380| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Пропустить аутентификацию AWS для Amazon Bedrock Mantle (например, при использовании LLM gateway) |384| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Пропустить аутентификацию AWS для Amazon Bedrock Mantle (например, при использовании LLM gateway) |

385| `CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY` | [Проверки модели при запуске](/docs/ru/amazon-bedrock#startup-model-checks) на [Amazon Bedrock](/docs/ru/amazon-bedrock) и [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai) помнят на этой машине, какие модели они обнаружили, что ваша учётная запись не может вызвать, в течение дня. Установите на `1`, чтобы отключить эту память. Требует Claude Code версии 2.1.285 или позже |

381| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Установите на `1`, чтобы пропустить запись истории подсказок и стенограмм сеансов на диск. Сеансы, запущенные с этой переменной, не появляются в `--resume`, `--continue` или истории со стрелкой вверх. Полезно для эфемерных скриптовых сеансов |386| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Установите на `1`, чтобы пропустить запись истории подсказок и стенограмм сеансов на диск. Сеансы, запущенные с этой переменной, не появляются в `--resume`, `--continue` или истории со стрелкой вверх. Полезно для эфемерных скриптовых сеансов |

382| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Пропустить аутентификацию Google для Google Cloud's Agent Platform (например, при использовании LLM gateway) |387| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Пропустить аутентификацию Google для Google Cloud's Agent Platform (например, при использовании LLM gateway) |

383| `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` | Установите на `1`, чтобы сеанс, запущенный с `--output-format stream-json`, написал [сообщение результата, называющее, почему Claude Code отказался запустить](/docs/ru/agent-sdk/typescript#startup_failure_reason) для отказов при запуске, которые в противном случае заканчиваются только stderr. Требует Claude Code версии 2.1.274 или позже |388| `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` | Установите на `1`, чтобы сеанс, запущенный с `--output-format stream-json`, написал [сообщение результата, называющее, почему Claude Code отказался запустить](/docs/ru/agent-sdk/typescript#startup_failure_reason) для отказов при запуске, которые в противном случае заканчиваются только stderr. Требует Claude Code версии 2.1.274 или позже |


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

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

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

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

416| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Установите на `1`, чтобы принудительно включить сторожа простоя потока на уровне байтов, или установите на `0`, чтобы принудительно отключить его. `0` также отключает [крайний срок первого байта](/docs/ru/network-config#streaming-idle-watchdogs) на подключениях, где этот крайний срок работает. Если не установлено, сторож включен по умолчанию для прямых подключений API Anthropic и [Claude Platform on AWS](/docs/ru/claude-platform-on-aws), и для потоковых ответов на подключениях [шлюза](/docs/ru/gateways), достигнутых через `ANTHROPIC_BASE_URL` или `ANTHROPIC_AWS_BASE_URL`; до версии 2.1.222 он не работал на этих подключениях шлюза, поэтому сторож на уровне событий мог сообщить о стагнации там, даже если ping для поддержания соединения прибывали. Для таймаутов и того, как таймеры взаимодействуют, см. [Сторожи простоя потока](/docs/ru/network-config#streaming-idle-watchdogs) |421| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Установите на `1`, чтобы принудительно включить сторожа простоя потока на уровне байтов, или установите на `0`, чтобы принудительно отключить его. `0` также отключает [крайний срок первого байта](/docs/ru/network-config#streaming-idle-watchdogs) на подключениях, где этот крайний срок работает. Если не установлено, сторож включен по умолчанию для прямых подключений API Anthropic и [Claude Platform on AWS](/docs/ru/claude-platform-on-aws), и для потоковых ответов на подключениях [шлюза](/docs/ru/gateways), достигнутых через `ANTHROPIC_BASE_URL` или `ANTHROPIC_AWS_BASE_URL`; до версии 2.1.222 он не работал на этих подключениях шлюза, поэтому сторож на уровне событий мог сообщить о стагнации там, даже если ping для поддержания соединения прибывали. Для таймаутов и того, как таймеры взаимодействуют, см. [Сторожи простоя потока](/docs/ru/network-config#streaming-idle-watchdogs) |

417| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Установите на `1`, чтобы включить сторожа простоя потока на уровне байтов на ответах Amazon Bedrock `vnd.amazon.eventstream`, что также включает [крайний срок первого байта](/docs/ru/network-config#streaming-idle-watchdogs) на потоковых запросах Bedrock. Отключено по умолчанию. Настройте таймаут с помощью `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |422| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Установите на `1`, чтобы включить сторожа простоя потока на уровне байтов на ответах Amazon Bedrock `vnd.amazon.eventstream`, что также включает [крайний срок первого байта](/docs/ru/network-config#streaming-idle-watchdogs) на потоковых запросах Bedrock. Отключено по умолчанию. Настройте таймаут с помощью `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

418| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Установите на `0`, чтобы принудительно отключить сторожа простоя потока на уровне событий, или установите на `1`, чтобы принудительно включить его. Если не установлено, сторож включен по умолчанию для всех поставщиков. До версии 2.1.196 значение по умолчанию без установки было управляемо сервером на прямом API Anthropic и отключено на других поставщиках. Настройте таймаут с помощью `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; для других таймеров стагнации, которые работают рядом с этим, см. [Сторожи простоя потока](/docs/ru/network-config#streaming-idle-watchdogs) |423| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Установите на `0`, чтобы принудительно отключить сторожа простоя потока на уровне событий, или установите на `1`, чтобы принудительно включить его. Если не установлено, сторож включен по умолчанию для всех поставщиков. До версии 2.1.196 значение по умолчанию без установки было управляемо сервером на прямом API Anthropic и отключено на других поставщиках. Настройте таймаут с помощью `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; для других таймеров стагнации, которые работают рядом с этим, см. [Сторожи простоя потока](/docs/ru/network-config#streaming-idle-watchdogs) |


440| `DISABLE_LOGOUT_COMMAND` | Установите на `1`, чтобы скрыть команду `/logout` |445| `DISABLE_LOGOUT_COMMAND` | Установите на `1`, чтобы скрыть команду `/logout` |

441| `DISABLE_PROMPT_CACHING` | Установите на `1`, чтобы отключить [кэширование подсказок](/docs/ru/prompt-caching#disable-prompt-caching) для всех моделей (имеет приоритет над параметрами для каждой модели) |446| `DISABLE_PROMPT_CACHING` | Установите на `1`, чтобы отключить [кэширование подсказок](/docs/ru/prompt-caching#disable-prompt-caching) для всех моделей (имеет приоритет над параметрами для каждой модели) |

442| `DISABLE_PROMPT_CACHING_FABLE` | Установите на `1`, чтобы отключить кэширование подсказок для моделей Fable |447| `DISABLE_PROMPT_CACHING_FABLE` | Установите на `1`, чтобы отключить кэширование подсказок для моделей Fable |

443| `DISABLE_PROMPT_CACHING_HAIKU` | Установите на `1`, чтобы отключить кэширование подсказок для моделей Haiku |448| `DISABLE_PROMPT_CACHING_HAIKU` | Установите на `1`, чтобы отключить кэширование подсказок для [модели Haiku по умолчанию](/docs/ru/prompt-caching#disable-prompt-caching), где бы она ни работала |

444| `DISABLE_PROMPT_CACHING_OPUS` | Установите на `1`, чтобы отключить кэширование подсказок для моделей Opus |449| `DISABLE_PROMPT_CACHING_OPUS` | Установите на `1`, чтобы отключить кэширование подсказок для [модели Opus по умолчанию](/docs/ru/prompt-caching#disable-prompt-caching) |

445| `DISABLE_PROMPT_CACHING_SONNET` | Установите на `1`, чтобы отключить кэширование подсказок для моделей Sonnet |450| `DISABLE_PROMPT_CACHING_SONNET` | Установите на `1`, чтобы отключить кэширование подсказок для [модели Sonnet по умолчанию](/docs/ru/prompt-caching#disable-prompt-caching) |

446| `DISABLE_TELEMETRY` | Установите на любое непустое значение, такое как `1`, чтобы отказаться от телеметрии. **Установка на `0` или `false` по-прежнему отказывает**, в отличие от большинства переменных включения/отключения; отмените установку переменной, чтобы включить телеметрию обратно. События телеметрии не включают пользовательские данные, такие как код, пути файлов или команды bash. Также отключает получение флагов функций с тем же эффектом, что и `DISABLE_GROWTHBOOK`, что делает [Remote Control](/docs/ru/remote-control#requirements) и другие [функции, которые нуждаются в получении флагов функций](#features-that-need-feature-flag-fetching) недоступными. См. [Отключить телеметрию для вашей организации](/docs/ru/managed-settings#turn-telemetry-off-for-your-organization) |451| `DISABLE_TELEMETRY` | Установите на любое непустое значение, такое как `1`, чтобы отказаться от телеметрии. **Установка на `0` или `false` по-прежнему отказывает**, в отличие от большинства переменных включения/отключения; отмените установку переменной, чтобы включить телеметрию обратно. События телеметрии не включают пользовательские данные, такие как код, пути файлов или команды bash. Также отключает получение флагов функций с тем же эффектом, что и `DISABLE_GROWTHBOOK`, что делает [Remote Control](/docs/ru/remote-control#requirements) и другие [функции, которые нуждаются в получении флагов функций](#features-that-need-feature-flag-fetching) недоступными. См. [Отключить телеметрию для вашей организации](/docs/ru/managed-settings#turn-telemetry-off-for-your-organization) |

447| `DISABLE_UPDATES` | Установите на `1`, чтобы заблокировать все обновления, включая ручной `claude update` и `claude install`. Строже, чем `DISABLE_AUTOUPDATER`. Используйте при распределении Claude Code через ваши собственные каналы и пользователи не должны самостоятельно обновляться |452| `DISABLE_UPDATES` | Установите на `1`, чтобы заблокировать все обновления, включая ручной `claude update` и `claude install`. Строже, чем `DISABLE_AUTOUPDATER`. Используйте при распределении Claude Code через ваши собственные каналы и пользователи не должны самостоятельно обновляться |

448| `DISABLE_UPGRADE_COMMAND` | Установите на `1`, чтобы скрыть команду `/upgrade` |453| `DISABLE_UPGRADE_COMMAND` | Установите на `1`, чтобы скрыть команду `/upgrade` |


461| `IS_DEMO` | Установите на любое непустое значение, такое как `1`, чтобы включить режим демонстрации: скрывает ваш адрес электронной почты и имя организации из заголовка и вывода `/status`, и пропускает адаптацию. **Установка на `0` или `false` по-прежнему включает режим демонстрации**, в отличие от большинства переменных включения/отключения; отмените установку переменной, чтобы отключить его. Полезно при потоковой передаче или записи сеанса |466| `IS_DEMO` | Установите на любое непустое значение, такое как `1`, чтобы включить режим демонстрации: скрывает ваш адрес электронной почты и имя организации из заголовка и вывода `/status`, и пропускает адаптацию. **Установка на `0` или `false` по-прежнему включает режим демонстрации**, в отличие от большинства переменных включения/отключения; отмените установку переменной, чтобы отключить его. Полезно при потоковой передаче или записи сеанса |

462| `MAX_MCP_OUTPUT_TOKENS` | Максимальное количество токенов, разрешённых в ответах инструментов MCP. Claude Code отображает предупреждение, когда вывод превышает 10,000 токенов. Инструменты, которые объявляют [`anthropic/maxResultSizeChars`](/docs/ru/mcp#raise-the-limit-for-a-specific-tool), используют это ограничение символов для текстового содержимого вместо этого, но содержимое изображения из этих инструментов по-прежнему подчиняется этой переменной (по умолчанию: 25000) |467| `MAX_MCP_OUTPUT_TOKENS` | Максимальное количество токенов, разрешённых в ответах инструментов MCP. Claude Code отображает предупреждение, когда вывод превышает 10,000 токенов. Инструменты, которые объявляют [`anthropic/maxResultSizeChars`](/docs/ru/mcp#raise-the-limit-for-a-specific-tool), используют это ограничение символов для текстового содержимого вместо этого, но содержимое изображения из этих инструментов по-прежнему подчиняется этой переменной (по умолчанию: 25000) |

463| `MAX_STRUCTURED_OUTPUT_RETRIES` | Количество попыток Claude Code позволяет, когда ответ модели не выполняет проверку против [`--json-schema`](/docs/ru/cli-reference#cli-flags) в неинтерактивном режиме с флагом `-p`; после такого количества неудачных попыток без действительного вывода запуск не выполняется. То же ограничение применяется, когда структурированный вывод подагента [workflow](/docs/ru/workflows) не выполняет проверку. По умолчанию 5, первая попытка плюс четыре повтора |468| `MAX_STRUCTURED_OUTPUT_RETRIES` | Количество попыток Claude Code позволяет, когда ответ модели не выполняет проверку против [`--json-schema`](/docs/ru/cli-reference#cli-flags) в неинтерактивном режиме с флагом `-p`; после такого количества неудачных попыток без действительного вывода запуск не выполняется. То же ограничение применяется, когда структурированный вывод подагента [workflow](/docs/ru/workflows) не выполняет проверку. По умолчанию 5, первая попытка плюс четыре повтора |

464| `MAX_THINKING_TOKENS` | Фиксированный бюджет токенов для [расширенного мышления](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Claude Code ограничивает его на один токен ниже максимального выходного токена запроса и никогда ниже 1,024. См. `CLAUDE_CODE_MAX_OUTPUT_TOKENS` для того, как устанавливается это ограничение. Если не установлено и мышление включено, модели с [адаптивным рассуждением](/docs/ru/model-config#adjust-effort-level) выбирают свою собственную глубину мышления, и другие модели используют ограничение. Установите на `0`, чтобы отключить мышление на API Anthropic, за исключением Opus 5.5 и моделей Fable, которые не могут иметь отключённое мышление. На [сторонних поставщиках](/docs/ru/third-party-integrations) `0` опускает параметр `thinking` вместо этого. С отключённым мышлением на API Anthropic Claude Code отправляет усилие `high` вместо более высокого уровня на моделях, которые он знает [не принимают эту комбинацию](/docs/ru/errors#effort-isnt-available-with-thinking-turned-off), такие как Opus 5. Claude Code игнорирует ненулевые значения на моделях адаптивного рассуждения, за исключением моделей, где `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` отключает адаптивное рассуждение |469| `MAX_THINKING_TOKENS` | Фиксированный бюджет токенов для [расширенного мышления](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Claude Code ограничивает его на один токен ниже максимального выходного токена запроса и никогда ниже 1,024. См. `CLAUDE_CODE_MAX_OUTPUT_TOKENS` для того, как устанавливается это ограничение. Если не установлено и мышление включено, модели с [адаптивным рассуждением](/docs/ru/model-config#adjust-effort-level) выбирают свою собственную глубину мышления, и другие модели используют ограничение. Установите на `0`, чтобы отключить мышление на API Anthropic, за исключением Opus 5.5, Sonnet 5.5 и моделей Fable, которые не могут иметь отключённое мышление. На [сторонних поставщиках](/docs/ru/third-party-integrations) `0` опускает параметр `thinking` вместо этого. С отключённым мышлением на API Anthropic Claude Code отправляет усилие `high` вместо более высокого уровня на моделях, которые он знает [не принимают эту комбинацию](/docs/ru/errors#effort-isnt-available-with-thinking-turned-off), такие как Opus 5. Claude Code игнорирует ненулевые значения на моделях адаптивного рассуждения, за исключением моделей, где `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` отключает адаптивное рассуждение |

465| `MCP_CLIENT_SECRET` | Секрет клиента OAuth для MCP серверов, которые требуют [предварительно настроенные учётные данные](/docs/ru/mcp#use-pre-configured-oauth-credentials). Избегает интерактивного запроса при добавлении сервера с `--client-secret` |470| `MCP_CLIENT_SECRET` | Секрет клиента OAuth для MCP серверов, которые требуют [предварительно настроенные учётные данные](/docs/ru/mcp#use-pre-configured-oauth-credentials). Избегает интерактивного запроса при добавлении сервера с `--client-secret` |

466| `MCP_CONNECTION_NONBLOCKING` | Контролирует, ждёт ли запуск MCP серверов подключения перед первым запросом. Запуск MCP неблокирующий по умолчанию: серверы подключаются в фоне и их инструменты становятся доступными по мере завершения. Установите на `0`, чтобы Claude Code ждал подключения серверов перед первым запросом. Серверы, настроенные с [`alwaysLoad: true`](/docs/ru/mcp#exempt-a-server-from-deferral), по-прежнему заставляют запуск ждать независимо, за исключением случаев, когда обслуживаются из [кэша обнаружения](/docs/ru/mcp#server-status-detail), так как их инструменты должны присутствовать при построении первой подсказки. В неинтерактивном режиме (`-p`) без `--input-format stream-json` Claude Code также ждёт всё ещё ожидающих серверов перед первым ходом независимо от этой переменной. Когда вы передаёте [`--mcp-config`](/docs/ru/cli-reference#cli-flags) явно, ожидание имеет более длительный крайний срок; см. запись этого флага для исключения кэшированного сервера |471| `MCP_CONNECTION_NONBLOCKING` | Контролирует, ждёт ли запуск MCP серверов подключения перед первым запросом. MCP запуск неблокирующий по умолчанию: серверы подключаются в фоне и их инструменты становятся доступными по мере завершения. Установите на `0`, чтобы Claude Code ждал подключения серверов перед первым запросом. Серверы, настроенные с [`alwaysLoad: true`](/docs/ru/mcp#exempt-a-server-from-deferral), по-прежнему заставляют запуск ждать независимо, за исключением случаев, когда обслуживаются из [кэша обнаружения](/docs/ru/mcp#server-status-detail), так как их инструменты должны присутствовать при построении первой подсказки. В неинтерактивном режиме (`-p`) без `--input-format stream-json` Claude Code также ждёт всё ещё ожидающих серверов перед первым ходом независимо от этой переменной. Когда вы передаёте [`--mcp-config`](/docs/ru/cli-reference#cli-flags) явно, ожидание имеет более длительный крайний срок; см. запись этого флага для исключения кэшированного сервера |

467| `MCP_CONNECT_TIMEOUT_MS` | Как долго блокирующий запуск MCP ждёт, в миллисекундах, пакета подключения перед снимком списка инструментов (по умолчанию: 5000). Применяется, когда `MCP_CONNECTION_NONBLOCKING=0` или для серверов, отмеченных [`alwaysLoad: true`](/docs/ru/mcp#exempt-a-server-from-deferral). Серверы, всё ещё ожидающие на крайнем сроке, продолжают подключаться в фоне. Отличается от `MCP_TIMEOUT`, который ограничивает попытку подключения отдельного сервера |472| `MCP_CONNECT_TIMEOUT_MS` | Как долго блокирующий запуск MCP ждёт, в миллисекундах, пакета подключения перед снимком списка инструментов (по умолчанию: 5000). Применяется, когда `MCP_CONNECTION_NONBLOCKING=0` или для серверов, отмеченных [`alwaysLoad: true`](/docs/ru/mcp#exempt-a-server-from-deferral). Серверы, всё ещё ожидающие на крайнем сроке, продолжают подключаться в фоне. Отличается от `MCP_TIMEOUT`, который ограничивает попытку подключения отдельного сервера |

468| `MCP_DISCOVERY_CACHE` | Включает или отключает [кэш обнаружения MCP](/docs/ru/mcp#server-status-detail). С включённым кэшем удалённый HTTP или SSE сервер, который вы использовали раньше, может показать [статус `cached`](/docs/ru/mcp#server-status-detail), и Claude Code подключает его при первом вызове инструмента вместо запуска. Кэш отключен по умолчанию, если постепенное развёртывание не включило его для вашей учётной записи. Установите на `1`, чтобы включить его, или `0`, чтобы сохранить его отключённым, даже если развёртывание включило его. До версии 2.1.238 кэш был включен по умолчанию. Статус `cached` требует Claude Code версии 2.1.221 или позже |473| `MCP_DISCOVERY_CACHE` | Включает или отключает [кэш обнаружения MCP](/docs/ru/mcp#server-status-detail). С включённым кэшем удалённый HTTP или SSE сервер, который вы использовали раньше, может показать [статус `cached`](/docs/ru/mcp#server-status-detail), и Claude Code подключает его при первом вызове инструмента вместо запуска. Кэш отключен по умолчанию, если постепенное развёртывание не включило его для вашей учётной записи. Установите на `1`, чтобы включить его, или `0`, чтобы сохранить его отключённым, даже если развёртывание включило его. До версии 2.1.238 кэш был включен по умолчанию. Статус `cached` требует Claude Code версии 2.1.221 или позже |

469| `MCP_DISCOVERY_CACHE_MAX_STALE_S` | Максимальный возраст в секундах записи [кэша обнаружения](/docs/ru/mcp#server-status-detail) (по умолчанию: 14400 или 4 часа). При запуске, где запись старше этого, Claude Code отбрасывает её и подключает сервер при запуске, как при отключённом кэше. Claude Code ограничивает значение на 7 дней. До версии 2.1.238 значение по умолчанию было 86400 или 24 часа, и Claude Code не ограничивал значение |474| `MCP_DISCOVERY_CACHE_MAX_STALE_S` | Максимальный возраст в секундах записи [кэша обнаружения](/docs/ru/mcp#server-status-detail) (по умолчанию: 14400 или 4 часа). При запуске, где запись старше этого, Claude Code отбрасывает её и подключает сервер при запуске, как при отключённом кэше. Claude Code ограничивает значение на 7 дней. До версии 2.1.238 значение по умолчанию было 86400 или 24 часа, и Claude Code не ограничивал значение |


481| `OTEL_LOG_ASSISTANT_RESPONSES` | Установите на `1`, чтобы включить текст ответа модели на событиях журнала OpenTelemetry `assistant_response`. Если не установлено, используется значение `OTEL_LOG_USER_PROMPTS`. Установите на `0`, чтобы сохранить ответы отредактированными, даже если установлен `OTEL_LOG_USER_PROMPTS`. Требует Claude Code версии 2.1.193 или позже. См. [Мониторинг](/docs/ru/monitoring-usage#assistant-response-event) |486| `OTEL_LOG_ASSISTANT_RESPONSES` | Установите на `1`, чтобы включить текст ответа модели на событиях журнала OpenTelemetry `assistant_response`. Если не установлено, используется значение `OTEL_LOG_USER_PROMPTS`. Установите на `0`, чтобы сохранить ответы отредактированными, даже если установлен `OTEL_LOG_USER_PROMPTS`. Требует Claude Code версии 2.1.193 или позже. См. [Мониторинг](/docs/ru/monitoring-usage#assistant-response-event) |

482| `OTEL_LOG_MANAGED_SETTINGS` | Установите на `1`, чтобы добавить отредактированные управляемые параметры и дайджест SHA-256 параметров перед редактированием к событиям журнала OpenTelemetry `managed_settings_resolved`. Отключено по умолчанию. Установите это в вашей оболочке, пользовательских параметрах или управляемых параметрах; значение в параметрах проекта или локальных параметрах не включает это. Требует Claude Code версии 2.1.274 или позже. См. [Мониторинг](/docs/ru/monitoring-usage#managed-settings-resolved-event) |487| `OTEL_LOG_MANAGED_SETTINGS` | Установите на `1`, чтобы добавить отредактированные управляемые параметры и дайджест SHA-256 параметров перед редактированием к событиям журнала OpenTelemetry `managed_settings_resolved`. Отключено по умолчанию. Установите это в вашей оболочке, пользовательских параметрах или управляемых параметрах; значение в параметрах проекта или локальных параметрах не включает это. Требует Claude Code версии 2.1.274 или позже. См. [Мониторинг](/docs/ru/monitoring-usage#managed-settings-resolved-event) |

483| `OTEL_LOG_RAW_API_BODIES` | Выдавать JSON запроса и ответа API Anthropic Messages как события журнала `api_request_body` / `api_response_body`. Установите на `1` для встроенных тел, усечённых на пределе содержимого, или `file:<dir>`, чтобы написать неусечённые тела на диск и выдать путь `body_ref` вместо этого. `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` настраивает предел содержимого, 60 КБ по умолчанию. Отключено по умолчанию; тела включают всю историю разговора. Установите это в вашей оболочке, пользовательских параметрах или управляемых параметрах. Игнорируется в [параметрах проекта и локальных параметрах](/docs/ru/settings-reference#variables-claude-code-ignores-in-env). См. [Мониторинг](/docs/ru/monitoring-usage#api-request-body-event) |488| `OTEL_LOG_RAW_API_BODIES` | Выдавать JSON запроса и ответа API Anthropic Messages как события журнала `api_request_body` / `api_response_body`. Установите на `1` для встроенных тел, усечённых на пределе содержимого, или `file:<dir>`, чтобы написать неусечённые тела на диск и выдать путь `body_ref` вместо этого. `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` настраивает предел содержимого, 60 КБ по умолчанию. Отключено по умолчанию; тела включают всю историю разговора. Установите это в вашей оболочке, пользовательских параметрах или управляемых параметрах. Игнорируется в [параметрах проекта и локальных параметрах](/docs/ru/settings-reference#variables-claude-code-ignores-in-env). См. [Мониторинг](/docs/ru/monitoring-usage#api-request-body-event) |

484| `OTEL_LOG_TOOL_CONTENT` | Установите на `1`, чтобы включить содержимое инструмента в событие пролёта OpenTelemetry `tool.output`. Атрибуты пролётов несут содержимое инструмента под [их собственными воротами](/docs/ru/monitoring-usage#new-context-gates). Требует [трассировку](/docs/ru/monitoring-usage#traces-beta). Отключено по умолчанию для защиты чувствительных данных. См. [Мониторинг](/docs/ru/monitoring-usage#tool-output-span-event) |489| `OTEL_LOG_TOOL_CONTENT` | Установите на `1`, чтобы включить содержимое инструмента в событие пролёта OpenTelemetry `tool.output`. Атрибуты пролётов несут содержимое инструмента под [их собственными воротами](/docs/ru/monitoring-usage#new-context-gates). Требует [трассировку](/docs/ru/monitoring-usage#traces-beta). Отключено по умолчанию для защиты чувствительных данных. Установите это в вашей оболочке, пользовательских параметрах или управляемых параметрах. Игнорируется в [параметрах проекта и локальных параметрах](/docs/ru/settings-reference#variables-claude-code-ignores-in-env), кроме значений отключения, которые описывает этот раздел. См. [Мониторинг](/docs/ru/monitoring-usage#tool-output-span-event) |

485| `OTEL_LOG_TOOL_DETAILS` | Установите на `1`, чтобы включить аргументы входа инструмента, имена MCP серверов, имена workflows, созданные пользователем, необработанные строки ошибок при отказах инструментов, категорию отказа `category` на событиях `api_refusal` и другие детали инструментов в трассировках и журналах OpenTelemetry. Отключено по умолчанию для защиты PII. См. [Мониторинг](/docs/ru/monitoring-usage) |490| `OTEL_LOG_TOOL_DETAILS` | Установите на `1`, чтобы включить аргументы входа инструмента, имена MCP серверов, имена workflows, созданные пользователем, необработанные строки ошибок при отказах инструментов, категорию отказа `category` на событиях `api_refusal`, реальные имена агентов, skills, плагинов и MCP серверов на [метриках затрат и токенов](/docs/ru/monitoring-usage#cost-counter) и другие детали инструментов в трассировках и журналах OpenTelemetry. Отключено по умолчанию для защиты PII. Установите это в вашей оболочке, пользовательских параметрах или управляемых параметрах. Игнорируется в [параметрах проекта и локальных параметрах](/docs/ru/settings-reference#variables-claude-code-ignores-in-env), кроме значений отключения, которые описывает этот раздел. См. [Мониторинг](/docs/ru/monitoring-usage) |

486| `OTEL_LOG_USER_PROMPTS` | Установите на `1`, чтобы включить текст подсказки пользователя в трассировки и журналы OpenTelemetry. Отключено по умолчанию (подсказки отредактированы). См. [Мониторинг](/docs/ru/monitoring-usage) |491| `OTEL_LOG_USER_PROMPTS` | Установите на `1`, чтобы включить текст подсказки пользователя в трассировки и журналы OpenTelemetry. Отключено по умолчанию (подсказки отредактированы). Установите это в вашей оболочке, пользовательских параметрах или управляемых параметрах. Игнорируется в [параметрах проекта и локальных параметрах](/docs/ru/settings-reference#variables-claude-code-ignores-in-env), кроме значений отключения, которые описывает этот раздел. См. [Мониторинг](/docs/ru/monitoring-usage) |

487| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Установите на `false`, чтобы исключить UUID учётной записи из атрибутов метрик (по умолчанию: включено). См. [Мониторинг](/docs/ru/monitoring-usage) |492| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Установите на `false`, чтобы исключить UUID учётной записи из атрибутов метрик (по умолчанию: включено). См. [Мониторинг](/docs/ru/monitoring-usage) |

488| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Установите на `true`, чтобы включить точку входа сеанса в атрибуты метрик (по умолчанию: исключено). Добавлено в версии 2.1.152. См. [Мониторинг](/docs/ru/monitoring-usage) |493| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Установите на `true`, чтобы включить точку входа сеанса в атрибуты метрик (по умолчанию: исключено). Добавлено в версии 2.1.152. См. [Мониторинг](/docs/ru/monitoring-usage) |

489| `OTEL_METRICS_INCLUDE_REPOSITORY` | Установите на `true`, чтобы пометить метрики и события OpenTelemetry атрибутами `vcs.*`, определяющими репозиторий сеанса (по умолчанию: исключено). Требует Claude Code версии 2.1.269 или позже. См. [Атрибуты репозитория](/docs/ru/monitoring-usage#repository-attributes) |494| `OTEL_METRICS_INCLUDE_REPOSITORY` | Установите на `true`, чтобы пометить метрики и события OpenTelemetry атрибутами `vcs.*`, определяющими репозиторий сеанса (по умолчанию: исключено). Требует Claude Code версии 2.1.269 или позже. См. [Атрибуты репозитория](/docs/ru/monitoring-usage#repository-attributes) |


506| `VERTEX_REGION_CLAUDE_4_7_OPUS` | Переопределить регион для Claude Opus 4.7 при использовании Google Cloud's Agent Platform |511| `VERTEX_REGION_CLAUDE_4_7_OPUS` | Переопределить регион для Claude Opus 4.7 при использовании Google Cloud's Agent Platform |

507| `VERTEX_REGION_CLAUDE_4_8_OPUS` | Переопределить регион для Claude Opus 4.8 при использовании Google Cloud's Agent Platform |512| `VERTEX_REGION_CLAUDE_4_8_OPUS` | Переопределить регион для Claude Opus 4.8 при использовании Google Cloud's Agent Platform |

508| `VERTEX_REGION_CLAUDE_5_5_OPUS` | Переопределить регион для Claude Opus 5.5 при использовании Google Cloud's Agent Platform. Добавлено в версии 2.1.280 |513| `VERTEX_REGION_CLAUDE_5_5_OPUS` | Переопределить регион для Claude Opus 5.5 при использовании Google Cloud's Agent Platform. Добавлено в версии 2.1.280 |

514| `VERTEX_REGION_CLAUDE_5_5_SONNET` | Переопределить регион для Claude Sonnet 5.5 при использовании Google Cloud's Agent Platform. Добавлено в версии 2.1.284 |

509| `VERTEX_REGION_CLAUDE_5_OPUS` | Переопределить регион для Claude Opus 5 при использовании Google Cloud's Agent Platform. Добавлено в версии 2.1.219 |515| `VERTEX_REGION_CLAUDE_5_OPUS` | Переопределить регион для Claude Opus 5 при использовании Google Cloud's Agent Platform. Добавлено в версии 2.1.219 |

510| `VERTEX_REGION_CLAUDE_5_SONNET` | Переопределить регион для Claude Sonnet 5 при использовании Google Cloud's Agent Platform. Добавлено в версии 2.1.197 |516| `VERTEX_REGION_CLAUDE_5_SONNET` | Переопределить регион для Claude Sonnet 5 при использовании Google Cloud's Agent Platform. Добавлено в версии 2.1.197 |

511| `VERTEX_REGION_CLAUDE_FABLE_5` | Переопределить регион для Claude Fable 5 при использовании Google Cloud's Agent Platform. Добавлено в версии 2.1.170 |517| `VERTEX_REGION_CLAUDE_FABLE_5` | Переопределить регион для Claude Fable 5 при использовании Google Cloud's Agent Platform. Добавлено в версии 2.1.170 |


514 520 

515Также поддерживаются стандартные переменные экспортёра OpenTelemetry (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES` и варианты, специфичные для сигнала). См. [Мониторинг](/docs/ru/monitoring-usage) для деталей конфигурации.521Также поддерживаются стандартные переменные экспортёра OpenTelemetry (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES` и варианты, специфичные для сигнала). См. [Мониторинг](/docs/ru/monitoring-usage) для деталей конфигурации.

516 522 

523Установите `CLAUDE_CODE_ENABLE_TELEMETRY` и переменные OpenTelemetry, которые включают экспорт, выбирают его назначение или захватывают содержимое в вашей оболочке, пользовательских параметрах или управляемых параметрах. Claude Code [игнорирует их в параметрах проекта и локальных параметрах](/docs/ru/settings-reference#variables-claude-code-ignores-in-env), кроме значений отключения, которые описывает этот раздел. `OTEL_RESOURCE_ATTRIBUTES` и переменные интервала экспорта, таймаута и сжатия, такие как `OTEL_METRIC_EXPORT_INTERVAL`, по-прежнему применяются из параметров проекта и локальных параметров.

524 

517<h2 id="features-that-need-feature-flag-fetching">525<h2 id="features-that-need-feature-flag-fetching">

518 Функции, требующие получения флагов функций526 Функции, требующие получения флагов функций

519</h2>527</h2>


526 534 

527Когда получение отключено, вы не можете:535Когда получение отключено, вы не можете:

528 536 

529* [Запускать сеансы в режиме auto по умолчанию](/docs/ru/permission-modes#which-mode-a-session-starts-in) на планах Pro, Max и Team

530* Иметь расширение VS Code [читающее файлы параметров для режима разрешений при запуске](/docs/ru/permission-modes#switch-permission-modes)

531* Запускать [`/auto-mode-setup`](/docs/ru/auto-mode-config#generate-environment-entries) для создания записей `autoMode.environment`537* Запускать [`/auto-mode-setup`](/docs/ru/auto-mode-config#generate-environment-entries) для создания записей `autoMode.environment`

532* Использовать [Remote Control](/docs/ru/remote-control#requirements)538* Использовать [Remote Control](/docs/ru/remote-control) с установленными `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` или `DISABLE_GROWTHBOOK`. Для `DISABLE_TELEMETRY` и `DO_NOT_TRACK` см. [требования Remote Control](/docs/ru/remote-control#requirements)

533* [Отправлять сообщения сеансам за пределами этой машины](/docs/ru/cross-session-messaging#message-sessions-on-other-machines); обмен сообщениями между сеансами на этой машине работает с отключённым получением539* [Отправлять сообщения сеансам за пределами этой машины](/docs/ru/cross-session-messaging#message-sessions-on-other-machines), когда [Remote Control](/docs/ru/remote-control#requirements) недоступен. Обмен сообщениями между сеансами на этой машине работает с отключённым получением

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

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

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

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

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

539* Иметь Claude Code, зондирующий серверы соединителя claude.ai для [MCP протокола версии 2026-07-28](/docs/ru/mcp#mcp-client-runtimes), если вы не установите `MCP_PROTOCOL_NEGOTIATION=auto`545* Иметь Claude Code, зондирующий серверы соединителя claude.ai для [MCP протокола версии 2026-07-28](/docs/ru/mcp#mcp-client-runtimes), если вы не установите `MCP_PROTOCOL_NEGOTIATION=auto`


546 Первый сеанс после установки или обновления552 Первый сеанс после установки или обновления

547</h3>553</h3>

548 554 

549В вашем первом сеансе после установки Claude Code или обновления до версии, которая добавляет функцию, [функция с флагом](#features-that-need-feature-flag-fetching) может отсутствовать, и сеанс может запуститься в режиме Manual на плане, который в противном случае запускается в режиме auto. Claude Code получает флаги во время этого сеанса, поэтому оба они присутствуют в вашем следующем сеансе.555В вашем первом сеансе после установки Claude Code или обновления до версии, которая добавляет функцию, [функция с флагом](#features-that-need-feature-flag-fetching) может отсутствовать. Этот сеанс также может запуститься в другом [режиме разрешений](/docs/ru/permission-modes#which-mode-a-session-starts-in), чем ваши последующие сеансы. Claude Code получает флаги во время этого сеанса, поэтому ваш следующий сеанс имеет функцию и обычный режим разрешений при запуске.

550 556 

551После свежей установки в неинтерактивном сеансе, таком как `claude -p`, Agent SDK или расширение VS Code, Claude Code всё ещё может получить флаги перед тем, как он [выбирает режим разрешений при запуске](/docs/ru/permission-modes#which-mode-a-session-starts-in).557После свежей установки в неинтерактивном сеансе, таком как `claude -p`, Agent SDK или расширение VS Code, Claude Code всё ещё может получить флаги перед тем, как он [выбирает режим разрешений при запуске](/docs/ru/permission-modes#which-mode-a-session-starts-in).

552 558 

errors.md +64 −36

Details

322| `Transcript writes are failing (...)` | [Session saving warnings](#transcript-writes-are-failing) |322| `Transcript writes are failing (...)` | [Session saving warnings](#transcript-writes-are-failing) |

323| `Transcript saving is off — CLAUDE_CODE_SKIP_PROMPT_HISTORY is set` | [Session saving warnings](#transcript-saving-is-off-skip-prompt-history) |323| `Transcript saving is off — CLAUDE_CODE_SKIP_PROMPT_HISTORY is set` | [Session saving warnings](#transcript-saving-is-off-skip-prompt-history) |

324| `Transcript saving is off — inherited CLAUDE_CODE_CHILD_SESSION marker` | [Session saving warnings](#transcript-saving-is-off-child-session-marker) |324| `Transcript saving is off — inherited CLAUDE_CODE_CHILD_SESSION marker` | [Session saving warnings](#transcript-saving-is-off-child-session-marker) |

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

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

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

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


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

332| `Managed settings were not approved; exiting without applying them.` | [Configuration warnings](#managed-settings-were-not-approved) |332| `Managed settings were not approved; exiting without applying them.` | [Configuration warnings](#managed-settings-were-not-approved) |

333| `Claude Code can't start: your organization's managed settings block the default model` / `Claude Code can't start: your organization allows only the models listed in "availableModels"` | [Configuration warnings](#managed-settings-block-the-default-model) |333| `Claude Code can't start: your organization's managed settings block the default model` / `Claude Code can't start: your organization allows only the models listed in "availableModels"` | [Configuration warnings](#managed-settings-block-the-default-model) |

334| `Your organization's managed settings allow Claude Code to use: <providers>` | [Configuration warnings](#managed-settings-dont-allow-this-api-provider) |

335| `Your organization's managed settings allow Claude Code to use no API provider at all` | [Configuration warnings](#managed-settings-dont-allow-this-api-provider) |

334| `MCP server <name> is blocked by enterprise managed policy` | [Configuration warnings](#mcp-server-is-blocked-by-enterprise-managed-policy) |336| `MCP server <name> is blocked by enterprise managed policy` | [Configuration warnings](#mcp-server-is-blocked-by-enterprise-managed-policy) |

335| `Managed settings document could not be parsed as a JSON object; none of its settings are in effect. Fix or remove it.` | [Configuration warnings](#managed-settings-document-could-not-be-parsed) |337| `Managed settings document could not be parsed as a JSON object; none of its settings are in effect. Fix or remove it.` | [Configuration warnings](#managed-settings-document-could-not-be-parsed) |

336| `Managed settings drop-in directory could not be read` | [Configuration warnings](#managed-settings-document-could-not-be-parsed) |338| `Managed settings drop-in directory could not be read` | [Configuration warnings](#managed-settings-document-could-not-be-parsed) |

339| `Unable to read managed policy settings` | [Configuration warnings](#unable-to-read-managed-policy-settings) |

337| `otelHeadersHelper failed; telemetry is not being exported. See /status: ...` | [Configuration warnings](#otelheadershelper-failed) |340| `otelHeadersHelper failed; telemetry is not being exported. See /status: ...` | [Configuration warnings](#otelheadershelper-failed) |

338| `"crossSessionInbound" must be one of "accept", "hold", "refuse"` | [Configuration warnings](#crosssessioninbound-must-be-one-of-accept-hold-refuse) |341| `"crossSessionInbound" must be one of "accept", "hold", "refuse"` | [Configuration warnings](#crosssessioninbound-must-be-one-of-accept-hold-refuse) |

339| `headersHelper not run — this workspace has no persisted trust` | [Configuration warnings](#headershelper-not-run) |342| `headersHelper not run — this workspace has no persisted trust` | [Configuration warnings](#headershelper-not-run) |


3657 Не удалось открыть Claude Desktop3660 Не удалось открыть Claude Desktop

3658</h3>3661</h3>

3659 3662 

3660Вы запустили [`/desktop`](/docs/ru/desktop#coming-from-the-cli) или его псевдоним `/app`, и системная команда, которую Claude Code использует для открытия Claude Desktop, не прошла. Сеанс остаётся в терминале.3663Вы запустили [`/desktop`](/docs/ru/desktop#coming-from-the-cli) или его псевдоним `/app` в сеансе, или [`claude --desktop`](/docs/ru/cli-reference#cli-flags) в вашей оболочке, и системная команда Claude Code использует для открытия Claude Desktop не прошла. После `/desktop`, сеанс остаётся в терминале; `claude --desktop` выводит сообщение без префикса `Error:` и завершает работу со статусом 1.

3664 

3665Текст в скобках указывает команду, которая не прошла, с её кодом выхода и первой строкой её вывода ошибки, когда она их выдала. На macOS эта команда — это `open`, как в этом примере; на Windows это `rundll32`:

3661 3666 

3662```text theme={null}3667```text theme={null}

3663Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and run /desktop again.3668Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and try again.

3664```3669```

3665 3670 

3666**Что делать:**3671**Что делать:**

3667 3672 

3668* Откройте Claude Desktop самостоятельно, затем запустите `/desktop` снова3673* Откройте Claude Desktop самостоятельно, затем запустите `/desktop` или `claude --desktop` снова

3669* Чтобы прочитать полный вывод ошибки этой команды, включите отладочное логирование с `/debug`, запустите `/desktop` снова и проверьте журнал отладки3674* Чтобы прочитать полный вывод ошибки этой команды, включите отладочное логирование с `/debug` и запустите `/desktop` снова, или запустите `claude --desktop --debug-file <path>`, затем проверьте журнал отладки

3670 3675 

3671До версии v2.1.275 сообщение было `Failed to open Claude Desktop. Please try opening it manually.` и не говорило, что не прошло.3676До версии v2.1.285 сообщение заканчивалось `Open Claude Desktop and run /desktop again.` До версии v2.1.275 это было `Failed to open Claude Desktop. Please try opening it manually.` и не говорило, что не прошло.

3672 3677 

3673<h3 id="terminal-setup-left-your-zed-keymap-unchanged">3678<h3 id="terminal-setup-left-your-zed-keymap-unchanged">

3674 /terminal-setup оставил вашу Zed keymap без изменений3679 /terminal-setup оставил вашу Zed keymap без изменений


3921commands path escapes plugin directory: ./commands\deploy.md — its path contains a backslash, which is not resolved reliably on this platform3926commands path escapes plugin directory: ./commands\deploy.md — its path contains a backslash, which is not resolved reliably on this platform

3922```3927```

3923 3928 

3924До версии v2.1.251 Claude Code загружала путь `commands`, объявленный в записи маркетплейса, даже когда он указывал вне директории плагина. Claude Code уже отклоняла пути, объявленные в `plugin.json`, и другие пути компонентов в записи маркетплейса.3929До версии v2.1.251 Claude Code загружала путь `commands`, объявленный в записи маркетплейса, даже когда он указывал вне директории плагина.

3925 3930 

3926До версии v2.1.257 проверка смотрела только на написание пути, а не на то, где ведёт символическая ссылка.3931До версии v2.1.257 проверка смотрела только на написание пути, а не на то, где ведёт символическая ссылка.

3927 3932 


4001* `Failed to load marketplace configuration`: файл не является действительным JSON, или не может быть прочитан. Пустой файл также не работает таким образом.4006* `Failed to load marketplace configuration`: файл не является действительным JSON, или не может быть прочитан. Пустой файл также не работает таким образом.

4002* `Marketplace configuration file is corrupted`: файл является действительным JSON, но его содержимое не соответствует схеме реестра.4007* `Marketplace configuration file is corrupted`: файл является действительным JSON, но его содержимое не соответствует схеме реестра.

4003 4008 

4004Отсутствующий файл не является ошибкой: Claude Code рассматривает его как реестр без маркетплейсов.

4005 

4006С пустым файлом `claude plugin install` сообщает:4009С пустым файлом `claude plugin install` сообщает:

4007 4010 

4008```text theme={null}4011```text theme={null}


4460 4463 

4461Команды, которые открывают интерактивный диалог, не могут это делать, пока к фоновому сеансу не подключён терминал. `/install-github-app`, список параметров `/mcp` и действия аутентификации в меню сервера MCP отвечают сообщением. Для `/install-github-app` и списка параметров `/mcp` сеанс также появляется под **Needs input** в [представлении агента](/docs/ru/agent-view), чтобы вы могли его найти, подключиться и запустить команду снова. Пока терминал подключён, эти команды работают нормально.4464Команды, которые открывают интерактивный диалог, не могут это делать, пока к фоновому сеансу не подключён терминал. `/install-github-app`, список параметров `/mcp` и действия аутентификации в меню сервера MCP отвечают сообщением. Для `/install-github-app` и списка параметров `/mcp` сеанс также появляется под **Needs input** в [представлении агента](/docs/ru/agent-view), чтобы вы могли его найти, подключиться и запустить команду снова. Пока терминал подключён, эти команды работают нормально.

4462 4465 

4463До версии 2.1.216 сеанс не появлялся под **Needs input** после `/install-github-app` или списка параметров `/mcp` был отклонён. В версиях 2.1.213–2.1.215 команды всё ещё работали, пока был подключён терминал, и сообщение об отказе говорило вам подключиться и запустить команду снова. С версии 2.1.208 по 2.1.212 Claude Code отклонял их даже при подключённом терминале с сообщением вроде `Can't open MCP settings in a background session`; на этих версиях запустите команду из обычного сеанса `claude` вместо этого или обновитесь. До версии 2.1.208 они открывали свой диалог внутри фонового сеанса. Только в версии 2.1.208 Claude Code также отклонял средство выбора `/model` в фоновом сеансе, и `/upgrade` выводил URL обновления вместо открытия браузера.4466До версии 2.1.216 сеанс не появлялся под **Needs input** после того, как `/install-github-app` или список параметров `/mcp` был отклонён. В версиях 2.1.213–2.1.215 команды всё ещё работали, пока был подключён терминал, и сообщение об отказе говорило вам подключиться и запустить команду снова. С версии 2.1.208 по 2.1.212 Claude Code отклонял их даже при подключённом терминале с сообщением вроде `Can't open MCP settings in a background session`; на этих версиях запустите команду из обычного сеанса `claude` вместо этого или обновитесь. До версии 2.1.208 они открывали свой диалог внутри фонового сеанса. Только в версии 2.1.208 Claude Code также отклонял средство выбора `/model` в фоновом сеансе, и `/upgrade` выводил URL обновления вместо открытия браузера.

4464 4467 

4465Формулировка называет команду. Список параметров `/mcp` сообщает:4468Формулировка называет команду. Список параметров `/mcp` сообщает:

4466 4469 


4626terminal host process died — press Enter to restart4629terminal host process died — press Enter to restart

4627```4630```

4628 4631 

4629Если вы откроете строку до запуска проверки, нижний колонтитул показывает `This session's terminal host process died (the conversation is saved) — press Enter to restart it` и строка становится неудачной.

4630 

4631Из оболочки `claude attach <id>` перезапускает сеанс, уже отмеченный как неудачный для мёртвого хоста, и в противном случае выводит причину и выходит:4632Из оболочки `claude attach <id>` перезапускает сеанс, уже отмеченный как неудачный для мёртвого хоста, и в противном случае выводит причину и выходит:

4632 4633 

4633```text theme={null}4634```text theme={null}


5023 5024 

5024Claude Code записывает большинство этих сообщений в stderr, а не в беседу, и выводит большинство из них при запуске. Запись указывает, когда её сообщение появляется в другом месте, например в журнале отладки или как уведомление при запуске в представлении беседы, или в другое время, например [диагностическая строка unrecognized-model](#unrecognized-model-id-on-a-request) во время запроса.5025Claude Code записывает большинство этих сообщений в stderr, а не в беседу, и выводит большинство из них при запуске. Запись указывает, когда её сообщение появляется в другом месте, например в журнале отладки или как уведомление при запуске в представлении беседы, или в другое время, например [диагностическая строка unrecognized-model](#unrecognized-model-id-on-a-request) во время запроса.

5025 5026 

5026<h3 id="fullscreen-failed-start-notice">

5027 Fullscreen renderer didn't finish starting

5028</h3>

5029 

5030Предыдущий сеанс [fullscreen](/docs/ru/fullscreen) на этом компьютере завершился до того, как закончил запускаться, поэтому Claude Code запускает этот сеанс на классическом renderer и выводит одно из этих уведомлений:

5031 

5032```text theme={null}

5033Claude Code's fullscreen renderer didn't finish starting last time on this machine, so this launch is using the classic renderer. It will try fullscreen again next launch; /tui default keeps the classic renderer.

5034 

5035Claude Code's fullscreen renderer has repeatedly failed to start on this machine, so it has been turned off here. Run /tui fullscreen to try it again (this also resets after an update).

5036```

5037 

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

5039 

5040* Следуйте инструкциям [Fullscreen rendering](/docs/ru/fullscreen#fullscreen-renderer-didnt-finish-starting). Там указано, какое уведомление вы получите, что Claude Code делает в последующих сеансах и как снова попробовать fullscreen или оставить классический renderer.

5041* Если сеанс, который завершился, вывел сообщение об выходе, см. [Claude Code exited after an unrecoverable interface error](#exited-after-an-unrecoverable-interface-error) для получения информации о том, что оно называет.

5042 

5043До версии 2.1.236 Claude Code не выводил уведомление и продолжал запускать сеансы в fullscreen rendering после неудачного запуска.

5044 

5045<h3 id="exited-after-an-unrecoverable-interface-error">5027<h3 id="exited-after-an-unrecoverable-interface-error">

5046 Claude Code exited after an unrecoverable interface error5028 Claude Code exited after an unrecoverable interface error

5047</h3>5029</h3>


5193* Если вы администрируете параметры, добавьте модель, которую ваши пользователи могут запустить, в `availableModels` или сузьте записи `deniedModels`, которые блокируют каждый fallback. [Block specific models or versions](/docs/ru/model-config#block-specific-models-or-versions) описывает, как Default option переходит5175* Если вы администрируете параметры, добавьте модель, которую ваши пользователи могут запустить, в `availableModels` или сузьте записи `deniedModels`, которые блокируют каждый fallback. [Block specific models or versions](/docs/ru/model-config#block-specific-models-or-versions) описывает, как Default option переходит

5194* Если вы их не администрируете, отправьте сообщение вашему администратору. Ваши собственные файлы параметров не могут расширить управляемый `availableModels` или `deniedModels` список5176* Если вы их не администрируете, отправьте сообщение вашему администратору. Ваши собственные файлы параметров не могут расширить управляемый `availableModels` или `deniedModels` список

5195 5177 

5178<h3 id="managed-settings-dont-allow-this-api-provider">

5179 Managed settings don't allow this API provider

5180</h3>

5181 

5182[managed settings](/docs/ru/managed-settings) вашей организации устанавливают список [`allowedProviders`](/docs/ru/settings-reference#allowedproviders), и поставщик API сеанса не находится в нём или сеанс использует конечную точку, которая не закреплена так, как требует эта запись. Claude Code отказывает при запуске, перед входом или когда сеанс в следующий раз свяжется с API. Сообщение начинается с разрешённых поставщиков:

5183 

5184```text theme={null}

5185Your organization's managed settings allow Claude Code to use: Anthropic API, Amazon Bedrock.

5186```

5187 

5188Когда список пуст, сообщение читается вместо этого:

5189 

5190```text theme={null}

5191Your organization's managed settings allow Claude Code to use no API provider at all (allowedProviders is an empty list), so it cannot start on this machine.

5192```

5193 

5194Когда каждая запись не распознана, скобка читается `(allowedProviders lists only unrecognized entries)` вместо этого.

5195 

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

5197 

5198* Следуйте шагам `To continue:` сообщения

5199* Если вы администрируете параметры, строки сообщения, начинающиеся с `Admins:`, называют запись для добавления или значение для закрепления, и запись [`allowedProviders`](/docs/ru/settings-reference#allowedproviders) говорит, какой блок `env` источника может закрепить его

5200 

5196<h3 id="mcp-server-is-blocked-by-enterprise-managed-policy">5201<h3 id="mcp-server-is-blocked-by-enterprise-managed-policy">

5197 MCP server is blocked by enterprise managed policy5202 MCP server is blocked by enterprise managed policy

5198</h3>5203</h3>


5246* Если вы администрируете машину, исправьте названный документ так, чтобы он анализировался как объект JSON, или удалите файл, профиль или значение реестра. Пустой `managed-settings.json` считается `{}` и не блокирует запуск.5251* Если вы администрируете машину, исправьте названный документ так, чтобы он анализировался как объект JSON, или удалите файл, профиль или значение реестра. Пустой `managed-settings.json` считается `{}` и не блокирует запуск.

5247* Если нет, попросите вашего администратора исправить развёрнутый документ. Ничто в ваших собственных файлах параметров не вызывает и не очищает эту ошибку.5252* Если нет, попросите вашего администратора исправить развёрнутый документ. Ничто в ваших собственных файлах параметров не вызывает и не очищает эту ошибку.

5248 5253 

5254<h3 id="unable-to-read-managed-policy-settings">

5255 Unable to read managed policy settings

5256</h3>

5257 

5258Ваша организация развёртывает [managed settings](/docs/ru/managed-settings), и один из развёрнутых источников существует, но не мог быть прочитан по причине, такой как ошибка ввода-вывода, а не отказ операционной системы в чтении. Без другого источника администратора, поставляющего политику, Claude Code выходит при запуске, а не запускается без политики, которую может нести источник:

5259 

5260```text theme={null}

5261Unable to read managed policy settings.

5262This machine may require organization login enforcement, but the policy file failed to load.

5263Contact your administrator.

5264 

5265Detail: <source>: <reason>

5266```

5267 

5268В том же состоянии потоки входа, запросы API из уже работающего сеанса и сервер [`claude gateway`](/docs/ru/claude-apps-gateway) отказываются с вариантом первой строки, которая называет [`allowedProviders`](/docs/ru/settings-reference#allowedproviders).

5269 

5270Чтение, которое операционная система отклонила, например на файле только для root, не создаёт этот выход: [сеанс запускается без политик этого источника](/docs/ru/managed-settings#find-entries-claude-code-dropped). Для источника, который не может быть проанализирован, Claude Code выходит с [другим сообщением, называющим источник](#managed-settings-document-could-not-be-parsed).

5271 

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

5273 

5274* Если вы администрируете машину, исправьте проблему, которую называет строка `Detail:`, чтобы развёрнутый источник мог быть прочитан, или удалите источник

5275* Если нет, отправьте сообщение вашему администратору. Ничто в ваших собственных файлах параметров не вызывает и не очищает эту ошибку

5276 

5277До версии 2.1.285 только сеансы, вошедшие с учётными данными claude.ai или Claude Console, выходили с этим сообщением, и чтение, которое операционная система отклонила, также создавало его.

5278 

5249<h3 id="otelheadershelper-failed">5279<h3 id="otelheadershelper-failed">

5250 otelHeadersHelper failed5280 otelHeadersHelper failed

5251</h3>5281</h3>


5344* Исправьте правило в источнике, который называет предупреждение в скобках: путь файла параметров или сам флаг `--allowed-tools`. Путь `claude-settings-<hash>.json`, который не существует на диске, обозначает встроенное значение `--settings`. Исправьте JSON, который вы передаёте этому флагу.5374* Исправьте правило в источнике, который называет предупреждение в скобках: путь файла параметров или сам флаг `--allowed-tools`. Путь `claude-settings-<hash>.json`, который не существует на диске, обозначает встроенное значение `--settings`. Исправьте JSON, который вы передаёте этому флагу.

5345* Если источник читает `managed policy settings`, перенаправьте предупреждение тому, кто поддерживает ваши управляемые параметры, так как вы не можете очистить его самостоятельно.5375* Если источник читает `managed policy settings`, перенаправьте предупреждение тому, кто поддерживает ваши управляемые параметры, так как вы не можете очистить его самостоятельно.

5346 5376 

5347Claude Code не предупреждает о правилах deny и ask с той же формой: он отказывает или запрашивает дополнительные команды, которые они соответствуют, а не одобряет их. Он также не предупреждает о правилах, чья подкоманда приходит перед первым `*`, например `Bash(git commit *)`, или правилах, в которых ни одно слово, кроме опции, не следует за `*`, например `Bash(git *)`, или о правилах префикса `:*` такие как `Bash(git:*)`.

5348 

5349В [background session](/docs/ru/agent-view) или с `--output-format json` или `stream-json`, Claude Code записывает предупреждение в журнал отладки вместо stderr, поэтому вывод, читаемый машиной, остаётся чистым. Выполните с `--debug` для захвата его в `~/.claude/debug/<session-id>.txt`. До версии 2.1.246 Claude Code принимал эти правила без предупреждения.5377В [background session](/docs/ru/agent-view) или с `--output-format json` или `stream-json`, Claude Code записывает предупреждение в журнал отладки вместо stderr, поэтому вывод, читаемый машиной, остаётся чистым. Выполните с `--debug` для захвата его в `~/.claude/debug/<session-id>.txt`. До версии 2.1.246 Claude Code принимал эти правила без предупреждения.

5350 5378 

5351<h3 id="crosssessioninbound-must-be-one-of-accept-hold-refuse">5379<h3 id="crosssessioninbound-must-be-one-of-accept-hold-refuse">


5458 Ответы кажутся ниже обычного качества5486 Ответы кажутся ниже обычного качества

5459</h2>5487</h2>

5460 5488 

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

5462 5490 

5463* Настроенный [`--fallback-model`](/docs/ru/cli-reference#cli-flags) берёт на себя управление после ошибки доступности только для этого хода с уведомлением в расшифровке5491* Настроенный [`--fallback-model`](/docs/ru/cli-reference#cli-flags) берёт на себя управление после ошибки доступности только для этого хода с уведомлением в расшифровке

5464* Проверка запуска Amazon Bedrock или Google Cloud's Agent Platform обнаруживает, что ваша модель по умолчанию недоступна5492* Проверка запуска Amazon Bedrock или Google Cloud's Agent Platform обнаруживает, что ваша модель по умолчанию недоступна, или ваша учётная запись [теряет доступ к ней во время сеанса](/docs/ru/amazon-bedrock#when-a-model-is-disabled-mid-session)

5465* [Автоматический переход на резервную модель](/docs/ru/model-config#automatic-model-fallback) на Fable 5.1, Fable 5, Opus 5.5, Sonnet 5.5 и Opus 5 переводит сеанс на резервную модель категории с флагом, когда у этой категории она есть, и показывает уведомление в расшифровке5493* [Автоматический переход на резервную модель](/docs/ru/model-config#automatic-model-fallback) на Fable 5.1, Fable 5, Opus 5.5, Sonnet 5.5 и Opus 5 переводит сеанс на резервную модель категории с флагом, когда у этой категории она есть, и показывает уведомление в расшифровке

5466 5494 

5467Проверка выбора модели ниже ловит второй и третий случаи; первый появляется как уведомление в расшифровке, а не как изменение `/model`. [Конфигурация модели](/docs/ru/model-config) объясняет, когда применяется каждый переход на резервную модель.5495Проверка выбора модели ниже ловит второй и третий случаи; первый появляется как уведомление в расшифровке, а не как изменение `/model`. [Конфигурация модели](/docs/ru/model-config) объясняет, когда применяется каждый переход на резервную модель.


5477 5505 

5478Если качество всё ещё кажется неправильным после проверки вышеуказанного, запустите `/feedback` и опишите, что вы ожидали в сравнении с тем, что вы получили. Обратная связь, отправленная таким образом, включает расшифровку разговора, что является самым быстрым способом для Anthropic диагностировать реальную регрессию. См. [Сообщить об ошибке](#report-an-error), если `/feedback` недоступен в вашей среде.5506Если качество всё ещё кажется неправильным после проверки вышеуказанного, запустите `/feedback` и опишите, что вы ожидали в сравнении с тем, что вы получили. Обратная связь, отправленная таким образом, включает расшифровку разговора, что является самым быстрым способом для Anthropic диагностировать реальную регрессию. См. [Сообщить об ошибке](#report-an-error), если `/feedback` недоступен в вашей среде.

5479 5507 

5480Если Claude предупреждает о подозреваемой инъекции подсказки или отказывает в запросе из-за подозреваемой инъекции, и текст, который называет предупреждение, — это контекст, который Claude Code добавляет к разговору автоматически, а не содержимое файла или веб-сайта, запустите `claude update` и повторите попытку. Если предупреждение повторяется после обновления, [сообщите об этом](#report-an-error) вместо того, чтобы вставлять отмеченное содержимое обратно в подсказку. До версии 2.1.201 Sonnet 5 отказывал в некоторых запросах таким же образом.5508Если Claude предупреждает о подозреваемой инъекции подсказки, или отказывает в запросе из-за подозреваемой инъекции, и текст, который называет предупреждение, — это контекст, который Claude Code добавляет к разговору автоматически, а не содержимое файла или веб-сайта, запустите `claude update` и повторите попытку. Если предупреждение повторяется после обновления, [сообщите об этом](#report-an-error) вместо того, чтобы вставлять отмеченное содержимое обратно в подсказку. До версии 2.1.201 Sonnet 5 отказывал в некоторых запросах таким же образом.

5481 5509 

5482<h2 id="report-an-error">5510<h2 id="report-an-error">

5483 Сообщить об ошибке5511 Сообщить об ошибке

Details

293 293 

294Псевдонимы моделей, такие как `opus`, не действуют как закрепления, и также не действует ID модели, который Claude Code не распознает.294Псевдонимы моделей, такие как `opus`, не действуют как закрепления, и также не действует ID модели, который Claude Code не распознает.

295 295 

296Когда эти проверки находят модель, которую ваш проект не может вызвать, Claude Code запоминает отказ на этой машине на срок до одного дня и во время этого времени запускается, пропуская запомненную модель без повторного обращения к Agent Platform. Claude Code проверяет запомненный отказ текущей модели по умолчанию снова при запуске один раз через десять минут после последней проверки, поэтому значение по умолчанию, которое ваш администратор повторно включит, вернется. Чтобы отключить память, установите [`CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY=1`](/docs/ru/env-vars).

297 

298<h3 id="when-a-model-is-disabled-mid-session">

299 Когда модель отключена во время сеанса

300</h3>

301 

302Если ваш проект потеряет доступ к модели, на которой работает ваш сеанс, например потому что администратор отключит ее в [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden), Claude Code переключает сеанс на другую модель вместо того, чтобы не выполнять каждый запрос, и показывает `Switched to <fallback> because <model> is not available`. Он пытается использовать те же модели, что и откат при запуске: более ранние версии того же уровня сначала и, для сеанса Opus без доступной версии Opus, модель Sonnet по умолчанию.

303 

304Переключение применяется только к уровню, который вы не закрепили, то же условие, что и откат при запуске. Сеанс на конкретной версии, которую вы выбрали, сохраняет свою модель и, без цепочки моделей отката, запрос не выполняется. В [режиме auto](/docs/ru/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry) Claude Code переключается только на модель, которую режим auto поддерживает на Agent Platform. Если ни одна из этих моделей также недоступна, запрос не выполняется.

305 

306[Цепочка моделей отката](/docs/ru/model-config#fallback-model-chains), которую вы настраиваете, заменяет переключение уровня: при этих отказах Claude Code переключается на вашу настроенную модель отката вместо этого. Чтобы отказанные запросы не выполнялись вместо переключения, установите [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](/docs/ru/env-vars). Цепочка отката, которую вы настроили, все еще переключается при этих отказах; удалите цепочку также, если вы хотите, чтобы каждый отказанный запрос не выполнялся.

307 

296<h2 id="iam-configuration">308<h2 id="iam-configuration">

297 Конфигурация IAM309 Конфигурация IAM

298</h2>310</h2>

headless.md +2 −2

Details

296 Автоматическое одобрение инструментов296 Автоматическое одобрение инструментов

297</h3>297</h3>

298 298 

299Используйте `--allowedTools` для разрешения Claude использовать определённые инструменты без запроса. Этот пример запускает набор тестов и исправляет ошибки, позволяя Claude выполнять команды Bash и читать/редактировать файлы без запроса разрешения:299Используйте `--allowedTools` для разрешения Claude использовать определённые инструменты без запроса. Перечисление `Read` и `Edit` позволяет Claude читать и редактировать файлы без запроса разрешения. Перечисление `Bash` делает то же самое для команд shell, за исключением запуска, который начинается в [режиме auto](/docs/ru/permission-modes#how-auto-mode-evaluates-actions), где Claude Code отбрасывает запись `Bash` как широкое правило разрешения и режим auto оценивает каждую команду вместо этого. Этот пример запускает набор тестов и исправляет ошибки с этими тремя инструментами в списке:

300 300 

301```bash theme={null}301```bash theme={null}

302claude -p "Run the test suite and fix any failures" \302claude -p "Run the test suite and fix any failures" \

303 --allowedTools "Bash,Read,Edit"303 --allowedTools "Bash,Read,Edit"

304```304```

305 305 

306Чтобы установить базовый уровень для всего сеанса вместо перечисления отдельных инструментов, передайте [режим разрешений](/docs/ru/permission-modes). Для `-p` [встроенный начальный режим разрешений](/docs/ru/permission-modes#which-mode-a-session-starts-in) — это Manual на каждом плане, поэтому передайте нужный вам режим разрешений:306Чтобы установить базовый уровень для всего сеанса вместо перечисления отдельных инструментов, передайте [режим разрешений](/docs/ru/permission-modes). Запуск, где ничто не устанавливает режим разрешений, принимает [встроенный начальный режим разрешений](/docs/ru/permission-modes#which-mode-a-session-starts-in), который может быть `auto`, поэтому передайте нужный вам режим:

307 307 

308* **`auto`**: передайте `--permission-mode auto`, чтобы классификатор проверил большинство действий вместо вас308* **`auto`**: передайте `--permission-mode auto`, чтобы классификатор проверил большинство действий вместо вас

309* **`dontAsk`**: Claude Code отклоняет каждый вызов, который иначе вызвал бы запрос, что полезно для заблокированных CI запусков. Действия, которые не требуют одобрения в режиме Manual, всё ещё выполняются, такие как чтение файлов в ваших рабочих каталогах и [набор команд только для чтения](/docs/ru/permissions#read-only-commands), а также действия, которые охватывают ваши записи `--allowedTools` или правила `permissions.allow`. `AskUserQuestion`, инструменты соединителя [которые ваша организация установила на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) и MCP инструменты, отмеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), отклоняются даже когда правило разрешения совпадает309* **`dontAsk`**: Claude Code отклоняет каждый вызов, который иначе вызвал бы запрос, что полезно для заблокированных CI запусков. Действия, которые не требуют одобрения в режиме Manual, всё ещё выполняются, такие как чтение файлов в ваших рабочих каталогах и [набор команд только для чтения](/docs/ru/permissions#read-only-commands), а также действия, которые охватывают ваши записи `--allowedTools` или правила `permissions.allow`. `AskUserQuestion`, инструменты соединителя [которые ваша организация установила на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) и MCP инструменты, отмеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), отклоняются даже когда правило разрешения совпадает

hooks.md +2 −2

Details

12 12 

13Hooks — это определяемые пользователем команды оболочки, конечные точки HTTP, вызовы инструментов MCP, подсказки LLM или подагенты, которые выполняются автоматически в определённых точках жизненного цикла Claude Code. Claude Code запускает одни и те же события hook везде, где он работает: сеансы в терминале, расширения IDE, [приложение Desktop](/docs/ru/desktop-quickstart) и [облачные сеансы](/docs/ru/claude-code-on-the-web). Используйте этот справочник для поиска схем событий, параметров конфигурации, форматов JSON входа/выхода и расширенных функций, таких как асинхронные hooks, HTTP hooks и MCP tool hooks.13Hooks — это определяемые пользователем команды оболочки, конечные точки HTTP, вызовы инструментов MCP, подсказки LLM или подагенты, которые выполняются автоматически в определённых точках жизненного цикла Claude Code. Claude Code запускает одни и те же события hook везде, где он работает: сеансы в терминале, расширения IDE, [приложение Desktop](/docs/ru/desktop-quickstart) и [облачные сеансы](/docs/ru/claude-code-on-the-web). Используйте этот справочник для поиска схем событий, параметров конфигурации, форматов JSON входа/выхода и расширенных функций, таких как асинхронные hooks, HTTP hooks и MCP tool hooks.

14 14 

15Плагин также может регистрировать hooks как функции JavaScript, которые Claude Code вызывает в своём собственном процессе, которые могут отображаться в интерфейсе, а также реагировать на события. Плагин, который это делает, — это [mod](/docs/ru/plugins/mods/overview), и эти функциональные hooks рассматриваются в разделе [Реагирование на события](/docs/ru/plugins/mods/events), а не здесь. Hooks на этой странице продолжают работать наряду с модами.

16 

15<h2 id="hook-lifecycle">17<h2 id="hook-lifecycle">

16 Жизненный цикл hook18 Жизненный цикл hook

17</h2>19</h2>


453| `Bash(git *)` | `npm test && git push` | да | каждая подкоманда проверяется; `git push` совпадает |455| `Bash(git *)` | `npm test && git push` | да | каждая подкоманда проверяется; `git push` совпадает |

454| `Bash(rm *)` | `echo $(rm -rf /)` | да | команды внутри `$()` и обратных кавычек проверяются; `rm -rf /` совпадает |456| `Bash(rm *)` | `echo $(rm -rf /)` | да | команды внутри `$()` и обратных кавычек проверяются; `rm -rf /` совпадает |

455| `Bash(rm *)` | `echo $(date)` | нет | ни одна подкоманда не совпадает с `rm *` |457| `Bash(rm *)` | `echo $(date)` | нет | ни одна подкоманда не совпадает с `rm *` |

456| `Bash(cat *)` | `echo before $(date) after` | нет | подстановка может находиться в любой позиции аргумента, поэтому проверяются полная команда и `date`; ни одна не совпадает с `cat *` |

457| `Bash(git *)` | `$TOOL git push` | да | Claude Code не может определить, на что расширяется имя команды, поэтому он запускает hook |

458| `Bash(git push *)` | `echo $(date)` | да | шаблоны, которые указывают больше чем имя команды, запускают hook в любом случае на `$()`, обратных кавычках или `$VAR` |458| `Bash(git push *)` | `echo $(date)` | да | шаблоны, которые указывают больше чем имя команды, запускают hook в любом случае на `$()`, обратных кавычках или `$VAR` |

459 459 

460Когда Claude Code не может определить, какие команды запускает входные данные Bash, он запускает ваш hook независимо от шаблона. Поскольку фильтр `if` является лучшим усилием, используйте [систему разрешений](/docs/ru/permissions) вместо hook для обеспечения жёсткого разрешения или отказа.460Когда Claude Code не может определить, какие команды запускает входные данные Bash, он запускает ваш hook независимо от шаблона. Поскольку фильтр `if` является лучшим усилием, используйте [систему разрешений](/docs/ru/permissions) вместо hook для обеспечения жёсткого разрешения или отказа.

hooks-guide.md +3 −1

Details

1014 1014 

1015Hooks `PreToolUse` срабатывают перед любой проверкой режима разрешений в каждом [режиме разрешений](/docs/ru/permission-modes), включая `dontAsk`. Hook, возвращающий `permissionDecision: "deny"`, блокирует инструмент даже в режиме `bypassPermissions` или с `--dangerously-skip-permissions`. Это позволяет вам применять политику, которую пользователи не могут обойти, изменив свой режим разрешений.1015Hooks `PreToolUse` срабатывают перед любой проверкой режима разрешений в каждом [режиме разрешений](/docs/ru/permission-modes), включая `dontAsk`. Hook, возвращающий `permissionDecision: "deny"`, блокирует инструмент даже в режиме `bypassPermissions` или с `--dangerously-skip-permissions`. Это позволяет вам применять политику, которую пользователи не могут обойти, изменив свой режим разрешений.

1016 1016 

1017Обратное неверно: hook, возвращающий `"allow"`, не обходит правила отказа из параметров, и он не может подавить запрос для инструментов MCP, отмеченных [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), или для инструментов соединителя [которые ваша организация установила на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) в сеансах, где эта настройка достигает Claude Code. Hooks могут ужесточить ограничения, но не ослабить их сверх того, что разрешают правила разрешений.1017Обратное неверно: hook, возвращающий `"allow"`, не обходит правила отказа из параметров, и он не может подавить запрос для инструментов MCP, отмеченных [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), или для инструментов соединителя [которые ваша организация установила на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) в сеансах, где эта настройка достигает Claude Code. Hooks в файлах параметров и в `hooks/hooks.json` плагина могут ужесточить ограничения, но не ослабить их сверх того, что разрешают правила разрешений.

1018 

1019A [mod](/docs/ru/plugins/mods/overview) that you install that hooks `tool.check` can approve a call that your `PreToolUse` hook blocked, unless the hook is in managed settings. [Extend permissions with hooks](/docs/ru/permissions#extend-permissions-with-hooks) lists which rules hold over a mod.

1018 1020 

1019<h3 id="hook-not-firing">1021<h3 id="hook-not-firing">

1020 Hook не срабатывает1022 Hook не срабатывает

Details

346* Попросить Claude Code запустить команду в фоне346* Попросить Claude Code запустить команду в фоне

347* Нажать `Ctrl+B` для перемещения обычного вызова инструмента Bash в фон. Пользователи Tmux должны нажать `Ctrl+B` дважды из-за префиксного ключа tmux.347* Нажать `Ctrl+B` для перемещения обычного вызова инструмента Bash в фон. Пользователи Tmux должны нажать `Ctrl+B` дважды из-за префиксного ключа tmux.

348 348 

349Когда команда достигает своего времени ожидания до завершения, Claude Code автоматически [перемещает её в фон](/docs/ru/tools-reference#background-commands) вместо остановки, если только команда не начинается с `sleep`. Чтобы изменить, как долго команды выполняются перед этим, установите [переменные окружения для времени ожидания Bash](/docs/ru/tools-reference#timeout-and-output-limits).349Когда команда достигает своего времени ожидания до завершения, Claude Code автоматически [перемещает её в фон](/docs/ru/tools-reference#foreground-commands-that-move-to-the-background) вместо остановки, если только команда не начинается с `sleep`. Если вы отключили фоновые задачи с помощью [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](/docs/ru/env-vars#variables) или запустив в [режиме bare](/docs/ru/headless#start-faster-with-bare-mode), команда останавливается при достижении времени ожидания. Чтобы изменить время ожидания, установите [переменные окружения для времени ожидания Bash](/docs/ru/tools-reference#timeout-and-output-limits).

350 350 

351**Ключевые возможности:**351**Ключевые возможности:**

352 352 


358* На macOS и Linux Claude Code останавливает ваши работающие фоновые задачи, когда операционная система сообщает о критическом давлении памяти, при условии, что сеанс был неактивен не менее 30 минут и не выполняется ни один ход или подагент. Требуется Claude Code v2.1.193 или позже358* На macOS и Linux Claude Code останавливает ваши работающие фоновые задачи, когда операционная система сообщает о критическом давлении памяти, при условии, что сеанс был неактивен не менее 30 минут и не выполняется ни один ход или подагент. Требуется Claude Code v2.1.193 или позже

359 * [Журнал отладки](/docs/ru/debug-your-config) указывает, почему задачи были остановлены или почему событие давления оставило их работающими359 * [Журнал отладки](/docs/ru/debug-your-config) указывает, почему задачи были остановлены или почему событие давления оставило их работающими

360 * Установите [`CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP`](/docs/ru/env-vars) в `1`, чтобы отключить остановки из-за давления памяти360 * Установите [`CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP`](/docs/ru/env-vars) в `1`, чтобы отключить остановки из-за давления памяти

361* Фоновые команды Bash и PowerShell имеют ограничение по времени, отсчитываемое с момента входа команды в фон: 30 минут или `timeout`, который Claude запрашивает при запуске команды в фоне, до максимума 2 часов. Команда, которая переходит в фон во время выполнения, например с `Ctrl+B`, получает 30 минут с момента перемещения. Когда команда достигает своего лимита, Claude Code останавливает её и сообщает Claude причину, и Claude может запустить её снова с более длительным `timeout`, если работа всё ещё необходима. Две переменные окружения повышают лимиты в миллисекундах, и ни одна из них не может их сократить:361* Фоновые команды Bash и PowerShell имеют ограничение по времени, отсчитываемое с момента входа команды в фон: 30 минут или `timeout`, который Claude запрашивает при запуске команды в фоне, до максимума 2 часов. Команда, которая переходит в фон во время выполнения, например с `Ctrl+B`, получает 30 минут с момента перемещения. Когда команда достигает своего лимита, Claude Code останавливает её и сообщает Claude причину, и Claude может запустить её снова с более длительным `timeout`, если работа всё ещё необходима. Чтобы увеличить лимиты, см. [Повышение временного лимита для фоновых команд](/docs/ru/tools-reference#raise-the-time-limit-for-background-commands) в справочнике инструментов

362 * Установите [`BASH_DEFAULT_TIMEOUT_MS`](/docs/ru/env-vars) выше `1800000`, чтобы заменить 30-минутное значение по умолчанию этим значением для перемещённых команд также362* Фоновая команда, запущенная переднеплановым [подагентом](/docs/ru/sub-agents#run-subagents-in-foreground-or-background), заканчивается, когда заканчивается выполнение этого подагента, независимо от того, завершилась ли она, не удалась или была прервана; см. [Когда фоновая команда останавливается](/docs/ru/tools-reference#when-a-background-command-stops) в справочнике инструментов

363 * Установите [`BASH_MAX_TIMEOUT_MS`](/docs/ru/env-vars) выше `7200000`, чтобы повысить максимум 2 часов. Установка `BASH_DEFAULT_TIMEOUT_MS` выше `7200000` повышает его таким же образом

364* Фоновая команда, запущенная переднеплановым [подагентом](/docs/ru/sub-agents#run-subagents-in-foreground-or-background), заканчивается, когда заканчивается выполнение этого подагента, независимо от того, завершилась ли она, не удалась или была прервана; см. [Фоновые команды](/docs/ru/tools-reference#background-commands) в справочнике инструментов

365 363 

366Чтобы отключить всю функциональность фоновых задач, установите переменную окружения `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` в `1`. См. [Переменные окружения](/docs/ru/env-vars) для получения подробной информации.364Чтобы отключить всю функциональность фоновых задач, установите переменную окружения [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](/docs/ru/env-vars#variables) в `1`. Запуск в [режиме bare](/docs/ru/headless#start-faster-with-bare-mode) также отключает её.

367 365 

368**Часто используемые фоновые команды:**366**Часто используемые фоновые команды:**

369 367 

keybindings.md +1 −3

Details

545* При использовании нелатинской раскладки, такой как кириллица, Claude Code сопоставляет сочетания Ctrl по позиции клавиши в раскладке US, когда терминал использует протокол клавиатуры Kitty и сообщает эту позицию. В таком терминале с активной русской раскладкой нажатие Ctrl и физической клавиши W запускает `ctrl+w`. В терминале, который не сообщает позицию, Claude Code сопоставляет то, что отправляет терминал для нажатия клавиши: код управления ASCII запускает латинское сочетание, а нажатие клавиши, которое приходит как кириллический символ, не соответствует никакой привязке545* При использовании нелатинской раскладки, такой как кириллица, Claude Code сопоставляет сочетания Ctrl по позиции клавиши в раскладке US, когда терминал использует протокол клавиатуры Kitty и сообщает эту позицию. В таком терминале с активной русской раскладкой нажатие Ctrl и физической клавиши W запускает `ctrl+w`. В терминале, который не сообщает позицию, Claude Code сопоставляет то, что отправляет терминал для нажатия клавиши: код управления ASCII запускает латинское сочетание, а нажатие клавиши, которое приходит как кириллический символ, не соответствует никакой привязке

546* При использовании раскладок, которые переставляют латинские буквы, такие как AZERTY, Claude Code сопоставляет букву, которую вводит клавиша, поэтому нажатие Ctrl и клавиши с надписью A запускает `ctrl+a`546* При использовании раскладок, которые переставляют латинские буквы, такие как AZERTY, Claude Code сопоставляет букву, которую вводит клавиша, поэтому нажатие Ctrl и клавиши с надписью A запускает `ctrl+a`

547 547 

548До версии 2.1.247 нажатие сочетания Ctrl при использовании нелатинской раскладки не запускало его привязку в терминалах, которые используют протокол клавиатуры Kitty, таких как Ghostty, Kitty, WezTerm и iTerm2.

549 

550<h3 id="chords">548<h3 id="chords">

551 Аккорды549 Аккорды

552</h3>550</h3>


697* Неправильно написанных модификаторов, таких как `ctl+k`. Claude Code удаляет часть, которую он не распознаёт, и применяет привязку к оставшемуся нажатию клавиши, `k` в этом примере.695* Неправильно написанных модификаторов, таких как `ctl+k`. Claude Code удаляет часть, которую он не распознаёт, и применяет привязку к оставшемуся нажатию клавиши, `k` в этом примере.

698* Неверных имён контекстов696* Неверных имён контекстов

699* Неверных значений действий, таких как действие, которое не является строкой или `null`697* Неверных значений действий, таких как действие, которое не является строкой или `null`

700* Неизвестных имён действий, таких как опечатка зарегистрированного действия. Claude Code пропускает привязку и сохраняет любую привязку по умолчанию для этого ключа в силе. До версии 2.1.246 привязка с неизвестным именем действия молча отключала этот ключ698* Неизвестных имён действий, таких как опечатка зарегистрированного действия. Claude Code пропускает привязку и сохраняет любую привязку по умолчанию для этого ключа в силе.

701* Конфликтов зарезервированных сочетаний699* Конфликтов зарезервированных сочетаний

702* Дублирующихся привязок в одном контексте700* Дублирующихся привязок в одном контексте

703 701 

llm-gateway.md +2 −0

Details

45 45 

46[Развертывание LLM gateway для вашей организации](/docs/ru/llm-gateway-rollout) проходит каждый шаг и показывает файлы конфигурации для распределения на каждом. Шлюз — это одна часть организационной настройки; для применения политики, видимости использования и решений по обработке данных см. [Настройка Claude Code для вашей организации](/docs/ru/admin-setup).46[Развертывание LLM gateway для вашей организации](/docs/ru/llm-gateway-rollout) проходит каждый шаг и показывает файлы конфигурации для распределения на каждом. Шлюз — это одна часть организационной настройки; для применения политики, видимости использования и решений по обработке данных см. [Настройка Claude Code для вашей организации](/docs/ru/admin-setup).

47 47 

48Чтобы сделать шлюз, доступный через `ANTHROPIC_BASE_URL`, единственным пунктом назначения, который может использовать управляемая машина, установите [`allowedProviders`](/docs/ru/settings-reference#allowedproviders) на `["customEndpoint"]` в том же управляемом файле параметров и поместите `ANTHROPIC_BASE_URL` шлюза в блок `env` этого файла. Claude Code затем отказывает в сеансе, направленном куда-либо еще, включая непосредственно в Anthropic или на собственный прокси разработчика, и принимает `ANTHROPIC_BASE_URL` только со значением, которое вы там установили. Для шлюза, доступного через переменную конечной точки, специфичную для поставщика, такую как `ANTHROPIC_BEDROCK_BASE_URL`, запись `allowedProviders` указывает, какую переменную закрепить. Требуется Claude Code v2.1.285 или более поздняя версия.

49 

48<h2 id="subscriptions-and-gateways">50<h2 id="subscriptions-and-gateways">

49 Подписки и шлюзы51 Подписки и шлюзы

50</h2>52</h2>

Details

310 310 

311Claude Code отправляет запрос обнаружения с обоими заголовками учетных данных ниже и опускает заголовок, значение которого не разрешается. Отправка обоих заголовков требует Claude Code v2.1.248 или позже. Более ранние версии отправляют только `Authorization`, когда установлен `ANTHROPIC_AUTH_TOKEN`, и только `x-api-key` в противном случае.311Claude Code отправляет запрос обнаружения с обоими заголовками учетных данных ниже и опускает заголовок, значение которого не разрешается. Отправка обоих заголовков требует Claude Code v2.1.248 или позже. Более ранние версии отправляют только `Authorization`, когда установлен `ANTHROPIC_AUTH_TOKEN`, и только `x-api-key` в противном случае.

312 312 

313* `Authorization`: `ANTHROPIC_AUTH_TOKEN` как токен носителя, в противном случае значение [`apiKeyHelper`](/docs/ru/llm-gateway-connect#rotate-credentials-with-apikeyhelper) как токен носителя. В этом случае Claude Code ждет, пока помощник вернет результат перед отправкой запроса.313* `Authorization`: `ANTHROPIC_AUTH_TOKEN` как токен носителя, в противном случае значение [`apiKeyHelper`](/docs/ru/llm-gateway-connect#rotate-credentials-with-apikeyhelper) как токен носителя.

314* `x-api-key`: разрешенный Claude Code ключ API, такой как `ANTHROPIC_API_KEY`. Когда значение помощника является единственным учетным данием, этот заголовок также его содержит, поэтому значение поступает в оба заголовка.314* `x-api-key`: разрешенный Claude Code ключ API, такой как `ANTHROPIC_API_KEY`. Когда значение помощника является единственным учетным данием, этот заголовок также его содержит, поэтому значение поступает в оба заголовка.

315 315 

316Claude Code также отправляет любые заголовки из `ANTHROPIC_CUSTOM_HEADERS`. Когда пользовательский заголовок имеет непустое значение, Claude Code отправляет его вместо встроенного заголовка с тем же именем, сопоставляя имена без учета регистра.316Claude Code также отправляет любые заголовки из `ANTHROPIC_CUSTOM_HEADERS`. Когда пользовательский заголовок имеет непустое значение, Claude Code отправляет его вместо встроенного заголовка с тем же именем, сопоставляя имена без учета регистра.

Details

199 199 

200Ключи [входа в шлюз](#choose-a-delivery-mechanism) следуют отдельному правилу. Claude Code никогда не читает их из параметров, управляемых сервером, поэтому пока параметры, управляемые сервером, являются выбранным источником, источник администратора на машине с наивысшим рейтингом, который несёт ключ политики, всё ещё их предоставляет. Значение в источнике администратора, ранжированном ниже этого, или в реестре HKCU, игнорируется.200Ключи [входа в шлюз](#choose-a-delivery-mechanism) следуют отдельному правилу. Claude Code никогда не читает их из параметров, управляемых сервером, поэтому пока параметры, управляемые сервером, являются выбранным источником, источник администратора на машине с наивысшим рейтингом, который несёт ключ политики, всё ещё их предоставляет. Значение в источнике администратора, ранжированном ниже этого, или в реестре HKCU, игнорируется.

201 201 

202[`allowedProviders`](/docs/ru/settings-reference#allowedproviders) имеет своё собственное правило: примечание Scope его записи говорит, как список, установленный на машине, объединяется с управляемым сервером. Требует Claude Code v2.1.285 или позже.

203 

202Когда источник администратора устанавливает `allowManagedMcpServersOnly` или список `allowedMcpServers` и это значение не является тем, которое действует, `/status` и `claude doctor` называют этот источник и ключ.204Когда источник администратора устанавливает `allowManagedMcpServersOnly` или список `allowedMcpServers` и это значение не является тем, которое действует, `/status` и `claude doctor` называют этот источник и ключ.

203 205 

204<h3 id="compose-every-managed-source">206<h3 id="compose-every-managed-source">


353* Пустой файл управляемых параметров считается `{}`.355* Пустой файл управляемых параметров считается `{}`.

354* Неправильное значение в доступном для записи ключе реестра HKCU никогда не блокирует запуск. Claude Code сообщает об этом как уведомление в `/status` и `claude doctor` вместо этого.356* Неправильное значение в доступном для записи ключе реестра HKCU никогда не блокирует запуск. Claude Code сообщает об этом как уведомление в `/status` и `claude doctor` вместо этого.

355 357 

356Если файл управляемых параметров, файл drop-in или каталог `managed-settings.d/` не могут быть прочитаны и ни один источник администратора не предоставляет политику, сеансы, вошедшие с учетными данными claude.ai или Claude Console, выходят при запуске с сообщением о необходимости связаться с администратором.358Когда файл управляемых параметров, файл drop-in, каталог `managed-settings.d/`, профиль MDM или значение реестра HKLM существуют, но не могут быть прочитаны, и ни один источник администратора не предоставляет политику, что происходит, зависит от причины сбоя чтения:

359 

360* Если операционная система отказала в чтении, например на файле только для root, каждый сеанс запускается без политик этого источника. `/status` и `claude doctor` записывают сбой, и запуск с `-p` также выводит его в stderr.

361* Для любого другого сбоя чтения, такого как ошибка ввода-вывода, каждый сеанс выходит при запуске с [сообщением о необходимости связаться с администратором](/docs/ru/errors#unable-to-read-managed-policy-settings).

357 362 

358Чтобы найти отброшенную запись, посмотрите в одном из трех мест:363Чтобы найти отброшенную запись, посмотрите в одном из трех мест:

359 364 


387| Поле | Поведение при наличии, но неправильном |392| Поле | Поведение при наличии, но неправильном |

388| :- | :- |393| :- | :- |

389| `allowedMcpServers` | Применяется как пустой список разрешений до исправления значения, поэтому ни один MCP-сервер, который добавляют пользователи, не допускается. Серверы, которые ваша организация доставляет через [`managedMcpServers`](/docs/ru/settings-reference#managedmcpservers), все еще загружаются, и серверы `managed-mcp.json` загружаются в соответствии с [Как сервер оценивается](/docs/ru/managed-mcp#how-a-server-is-evaluated). Неправильная отдельная запись удаляется и применяется допустимое подмножество. |394| `allowedMcpServers` | Применяется как пустой список разрешений до исправления значения, поэтому ни один MCP-сервер, который добавляют пользователи, не допускается. Серверы, которые ваша организация доставляет через [`managedMcpServers`](/docs/ru/settings-reference#managedmcpservers), все еще загружаются, и серверы `managed-mcp.json` загружаются в соответствии с [Как сервер оценивается](/docs/ru/managed-mcp#how-a-server-is-evaluated). Неправильная отдельная запись удаляется и применяется допустимое подмножество. |

395| [`allowedProviders`](/docs/ru/settings-reference#allowedproviders) | Применяется как пустой список разрешений до исправления значения, поэтому каждый поставщик API отказывается и Claude Code не запускается на машине. Если только отдельная запись не является известным именем поставщика, Claude Code отбрасывает и сообщает эту запись и применяет остальное. |

390| `allowedHttpHookUrls` | Claude Code применяет пустой управляемый [список разрешений](/docs/ru/settings-reference#allowedhttphookurls) до исправления значения, поэтому HTTP hook работает только если другой файл параметров перечисляет его URL. Если неправильна только отдельная запись, Claude Code удаляет эту запись и применяет остальное. |396| `allowedHttpHookUrls` | Claude Code применяет пустой управляемый [список разрешений](/docs/ru/settings-reference#allowedhttphookurls) до исправления значения, поэтому HTTP hook работает только если другой файл параметров перечисляет его URL. Если неправильна только отдельная запись, Claude Code удаляет эту запись и применяет остальное. |

391| `httpHookAllowedEnvVars` | Claude Code применяет пустой управляемый [список разрешений](/docs/ru/settings-reference#httphookallowedenvvars) до исправления значения, поэтому переменная заголовка интерполируется только если другой файл параметров ее называет. Если неправильна только отдельная запись, Claude Code удаляет эту запись и применяет остальное. |397| `httpHookAllowedEnvVars` | Claude Code применяет пустой управляемый [список разрешений](/docs/ru/settings-reference#httphookallowedenvvars) до исправления значения, поэтому переменная заголовка интерполируется только если другой файл параметров ее называет. Если неправильна только отдельная запись, Claude Code удаляет эту запись и применяет остальное. |

392| `allowedChannelPlugins` | Claude Code применяет пустой список разрешений до исправления значения, поэтому ни один плагин канала, переданный в `--channels`, не допускается. Если неправильна только отдельная запись, он удаляет эту запись и применяет остальное. |398| `allowedChannelPlugins` | Claude Code применяет пустой список разрешений до исправления значения, поэтому ни один плагин канала, переданный в `--channels`, не допускается. Если неправильна только отдельная запись, он удаляет эту запись и применяет остальное. |


437 443 

438Большинство из них — это блокировки: значение, которое блокировка управляет, такое как правила разрешения или `sandbox.network.allowedDomains`, — это обычный ключ, который может установить любой уровень, и блокировка говорит Claude Code чтить только управляемое значение.444Большинство из них — это блокировки: значение, которое блокировка управляет, такое как правила разрешения или `sandbox.network.allowedDomains`, — это обычный ключ, который может установить любой уровень, и блокировка говорит Claude Code чтить только управляемое значение.

439 445 

440Таблица охватывает элементы управления разрешением, плагином и доставкой. Для любого ключа, не указанного здесь, столбец Scope [справочника параметров](/docs/ru/settings-reference#all-settings) говорит, является ли он только управляемым; оставшиеся ключи только управляемые там включают URL входа шлюза, версию, браузер, мобильный симулятор, хост SSH, локальный сеанс Desktop, путь двоичного файла песочницы, ценообразование модели, ограничение модели и элементы управления CLAUDE.md.446Таблица охватывает элементы управления разрешением, плагином и доставкой. Для любого ключа, не указанного здесь, столбец Scope [справочника параметров](/docs/ru/settings-reference#all-settings) говорит, является ли он только управляемым.

441 447 

442| Параметр | Описание |448| Параметр | Описание |

443| :- | :- |449| :- | :- |

mcp.md +6 −6

Details

273 273 

274* ``⏸ Pending approval (run `claude` to approve)``: сервер с областью проекта из `.mcp.json`, который вы ещё не одобрили. Claude Code показывает его как в `claude mcp list`, так и в `claude mcp get <name>`. Запустите `claude` интерактивно, чтобы просмотреть и одобрить его.274* ``⏸ Pending approval (run `claude` to approve)``: сервер с областью проекта из `.mcp.json`, который вы ещё не одобрили. Claude Code показывает его как в `claude mcp list`, так и в `claude mcp get <name>`. Запустите `claude` интерактивно, чтобы просмотреть и одобрить его.

275* `✘ Rejected (see disabledMcpjsonServers in settings)`: сервер `.mcp.json`, который запись [`disabledMcpjsonServers`](/docs/ru/settings-reference#disabledmcpjsonservers) отклоняет. Claude Code показывает его только в `claude mcp get <name>`.275* `✘ Rejected (see disabledMcpjsonServers in settings)`: сервер `.mcp.json`, который запись [`disabledMcpjsonServers`](/docs/ru/settings-reference#disabledmcpjsonservers) отклоняет. Claude Code показывает его только в `claude mcp get <name>`.

276* `⊘ Disabled for this project (re-enable via /mcp)`: сервер, который список [`disabledMcpServers`](#disable-a-server-without-removing-it) проекта называет. Claude Code показывает его как в `claude mcp list`, так и в `claude mcp get <name>`. Включите сервер обратно из панели `/mcp`. До версии v2.1.238 обе команды подключались к отключённому серверу для проверки здоровья и сообщали результат подключения.276* `⊘ Disabled for this project (re-enable via /mcp)`: сервер, который список [`disabledMcpServers`](#disable-a-server-without-removing-it) проекта называет. Claude Code показывает его как в `claude mcp list`, так и в `claude mcp get <name>`. Включите сервер обратно из панели `/mcp`.

277 277 

278WebSocket серверы не появляются в выводе `claude mcp list`. Используйте `claude mcp get <name>` или панель `/mcp` для их проверки.278WebSocket серверы не появляются в выводе `claude mcp list`. Используйте `claude mcp get <name>` или панель `/mcp` для их проверки.

279 279 


289* управляемые параметры289* управляемые параметры

290* параметры, переданные с `--settings`290* параметры, переданные с `--settings`

291 291 

292Claude Code также применяет одобрения из отслеживаемого `.claude/settings.local.json`, но он запускает git для проверки, отслеживается ли файл, и запускает эту проверку только в [доверенной папке](/docs/ru/permissions#project-allow-rules-and-workspace-trust). В папке, которую вы никогда не доверяли, Claude Code ждёт диалога доверия перед применением одобрений файла, если только папка не является вашей конфигурационной домашней директорией: вашей домашней директорией или директорией, чей `.claude` вы установили как [`CLAUDE_CONFIG_DIR`](/docs/ru/env-vars). До версии v2.1.207 Claude Code применял одобрения из отслеживаемого `.claude/settings.local.json` даже в папке, которую вы никогда не доверяли.292Claude Code также применяет одобрения из неотслеживаемого `.claude/settings.local.json`, но он запускает git для проверки, отслеживается ли файл, и запускает эту проверку только в [доверенной папке](/docs/ru/permissions#project-allow-rules-and-workspace-trust). В папке, которую вы никогда не доверяли, Claude Code ждёт диалога доверия перед применением одобрений файла, если только папка не является вашей конфигурационной домашней директорией: вашей домашней директорией или директорией, чей `.claude` вы установили как [`CLAUDE_CONFIG_DIR`](/docs/ru/env-vars). До версии v2.1.207 Claude Code применял одобрения из неотслеживаемого `.claude/settings.local.json` даже в папке, которую вы никогда не доверяли.

293 293 

294Запись `disabledMcpjsonServers` в любом файле параметров по-прежнему отклоняет сервер.294Запись `disabledMcpjsonServers` в любом файле параметров по-прежнему отклоняет сервер.

295 295 


321 321 

322* **Скрытое пробельное пространство**: Claude Code предупреждает, когда значение конфигурации MCP несёт скрытое ведущее или конечное пробельное пространство, которое часто происходит из вставки токена с конечным переводом строки. Claude Code проверяет `command`, `url`, каждую запись `args` и значения и имена ключей под `env` и `headers`. Claude Code показывает предупреждение в выводе `claude mcp list` и в `/mcp`, называя затронутые поля без повторения их значений, например `Leading or trailing whitespace in: headers.Authorization`. Claude Code не обрезает пробельное пространство и использует значения точно так, как написано, поэтому отредактируйте конфигурацию, чтобы удалить его.322* **Скрытое пробельное пространство**: Claude Code предупреждает, когда значение конфигурации MCP несёт скрытое ведущее или конечное пробельное пространство, которое часто происходит из вставки токена с конечным переводом строки. Claude Code проверяет `command`, `url`, каждую запись `args` и значения и имена ключей под `env` и `headers`. Claude Code показывает предупреждение в выводе `claude mcp list` и в `/mcp`, называя затронутые поля без повторения их значений, например `Leading or trailing whitespace in: headers.Authorization`. Claude Code не обрезает пробельное пространство и использует значения точно так, как написано, поэтому отредактируйте конфигурацию, чтобы удалить его.

323* **Одно имя в более чем одной области**: если вы определяете одно имя сервера в более чем одной [области](#mcp-installation-scopes) с разными конечными точками, Claude Code предупреждает о конфликте в выводе `claude mcp list` и в `/mcp`. Claude Code хранит входы OAuth для каждой конечной точки, поэтому когда вы аутентифицируете определение, которое загружается в одном проекте, вам по-прежнему нужно отдельно войти в проект, где загружается другое определение. Сохраните конечную точку, которую вы хотите, и удалите остальные с помощью `claude mcp remove <name> --scope <scope>`. В предупреждении Claude Code цитирует конечную точку каждой области, как написано в вашей конфигурации, с [ссылками `${VAR}`](#environment-variable-expansion-in-mcp-json) не развёрнутыми, поэтому она никогда не показывает разрешённое значение, такое как ключ API.323* **Одно имя в более чем одной области**: если вы определяете одно имя сервера в более чем одной [области](#mcp-installation-scopes) с разными конечными точками, Claude Code предупреждает о конфликте в выводе `claude mcp list` и в `/mcp`. Claude Code хранит входы OAuth для каждой конечной точки, поэтому когда вы аутентифицируете определение, которое загружается в одном проекте, вам по-прежнему нужно отдельно войти в проект, где загружается другое определение. Сохраните конечную точку, которую вы хотите, и удалите остальные с помощью `claude mcp remove <name> --scope <scope>`. В предупреждении Claude Code цитирует конечную точку каждой области, как написано в вашей конфигурации, с [ссылками `${VAR}`](#environment-variable-expansion-in-mcp-json) не развёрнутыми, поэтому она никогда не показывает разрешённое значение, такое как ключ API.

324* **Зарезервированные имена**: Claude Code резервирует имена своих встроенных серверов, включая `workspace`, `claude-in-chrome`, `computer-use`, `Claude Preview` и `Claude Browser`. Если ваша конфигурация определяет сервер с зарезервированным именем, Claude Code пропускает его при загрузке и показывает предупреждение, прося вас переименовать его. `claude mcp add` отклоняет зарезервированное имя с ошибкой. `Claude Preview` и `Claude Browser` оба называют встроенный сервер, который использует [панель предпросмотра настольного приложения Claude Code](/docs/ru/desktop#preview-your-app). До версии v2.1.205 `Claude Browser` не был зарезервирован, поэтому пользовательский сервер мог зарегистрироваться под этим именем.324* **Зарезервированные имена**: Claude Code резервирует имена своих встроенных серверов, включая `workspace`, `claude-in-chrome`, `computer-use`, `Claude Preview` и `Claude Browser`. Если ваша конфигурация определяет сервер с зарезервированным именем, Claude Code пропускает его при загрузке и показывает предупреждение, прося вас переименовать его. `claude mcp add` отклоняет зарезервированное имя с ошибкой. `Claude Preview` и `Claude Browser` оба называют встроенный сервер, который использует [панель предпросмотра настольного приложения Claude Code](/docs/ru/desktop#preview-your-app).

325* **Отсутствующая переменная окружения**: если ссылка [`${VAR}`](#environment-variable-expansion-in-mcp-json) в конфигурации сервера называет переменную, которая не установлена и не имеет `:-default`, Claude Code предупреждает в выводе `claude mcp list` и в `/mcp`, называя переменную, и по-прежнему загружает сервер с текстом `${VAR}` не развёрнутым. Установите переменную или добавьте резервный вариант `${VAR:-default}`. В `url` и `headers` удалённого сервера некоторые переменные учётных данных [читаются как пустые](#credential-variables-that-read-as-empty) вместо этого, без предупреждения.325* **Отсутствующая переменная окружения**: если ссылка [`${VAR}`](#environment-variable-expansion-in-mcp-json) в конфигурации сервера называет переменную, которая не установлена и не имеет `:-default`, Claude Code предупреждает в выводе `claude mcp list` и в `/mcp`, называя переменную, и по-прежнему загружает сервер с текстом `${VAR}` не развёрнутым. Установите переменную или добавьте резервный вариант `${VAR:-default}`. В `url` и `headers` удалённого сервера некоторые переменные учётных данных [читаются как пустые](#credential-variables-that-read-as-empty) вместо этого, без предупреждения.

326 326 

327<h4 id="tool-availability">327<h4 id="tool-availability">


417 Неудачные первые подключения417 Неудачные первые подключения

418</h4>418</h4>

419 419 

420Когда первое подключение HTTP или SSE сервера не удаётся с переходной ошибкой, такой как ответ 5xx, отказ в соединении или тайм-аут, Claude Code повторяет попытку до трёх раз. Если подключение по-прежнему не удаётся, Claude Code отмечает сервер как неудачный. Claude Code повторяет попытку таким образом при запуске и когда сервер добавляется во время сеанса. Это включает сервер, который Claude Code добавляет в [облачный сеанс](/docs/ru/claude-code-on-the-web) из его конфигурации, и сервер, который вы добавляете с помощью метода [`setMcpServers()`](/docs/ru/agent-sdk/typescript) Agent SDK.420Когда первое подключение HTTP или SSE сервера не удаётся с переходной ошибкой, такой как ответ 5xx, отказ в соединении или тайм-аут, Claude Code повторяет попытку до трёх раз. Если подключение по-прежнему не удаётся, Claude Code отмечает сервер как неудачный.

421 421 

422Claude Code не повторяет попытку в этих случаях:422Claude Code не повторяет попытку в этих случаях:

423 423 


551 551 

552Серверы плагинов появляются в `/mcp` с индикаторами, показывающими, что они поступают из плагинов.552Серверы плагинов появляются в `/mcp` с индикаторами, показывающими, что они поступают из плагинов.

553 553 

554Для stdio сервера плагина `claude mcp get` выводит `Command: stdio`, пустую строку `Args:` и каждую переменную окружения как `NAME=[REDACTED]`. Значения скрыты, потому что они могут нести учётные данные.

555 

554**Имена инструментов MCP плагинов**:556**Имена инструментов MCP плагинов**:

555 557 

556Инструменты с сервера MCP, объединённого с плагином, включают как имя плагина, так и ключ сервера в их вызываемое имя. Полная форма — `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`, где любой символ вне `A-Z`, `a-z`, `0-9`, `_` и `-` заменяется на `_`. Для сервера `database-tools`, объединённого в плагин с именем `my-plugin`, инструмент `query` вызывается как:558Инструменты с сервера MCP, объединённого с плагином, включают как имя плагина, так и ключ сервера в их вызываемое имя. Полная форма — `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`, где любой символ вне `A-Z`, `a-z`, `0-9`, `_` и `-` заменяется на `_`. Для сервера `database-tools`, объединённого в плагин с именем `my-plugin`, инструмент `query` вызывается как:


1456* Имена свойств верхнего уровня должны быть длиной от 1 до 64 символов и использовать только буквы и цифры ASCII, `_`, `.` и `-`1458* Имена свойств верхнего уровня должны быть длиной от 1 до 64 символов и использовать только буквы и цифры ASCII, `_`, `.` и `-`

1457* Схема должна быть действительной в соответствии с метасхемой JSON Schema draft 2020-12. Claude Code применяет эту проверку к схемам, которые не объявляют `$schema`, и к схемам, которые объявляют draft 2020-12. Схема, которая объявляет любой другой диалект, пропускает эту проверку, хотя проверка имен свойств выше все еще применяется1459* Схема должна быть действительной в соответствии с метасхемой JSON Schema draft 2020-12. Claude Code применяет эту проверку к схемам, которые не объявляют `$schema`, и к схемам, которые объявляют draft 2020-12. Схема, которая объявляет любой другой диалект, пропускает эту проверку, хотя проверка имен свойств выше все еще применяется

1458 1460 

1459Claude Code запускает проверки после [переписывания комбинатора корневого уровня](#tool-input-schemas-with-a-root-level-combinator), на схеме, которую он фактически отправит.

1460 

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

1462 1462 

1463Claude Code включает исключение через флаг функции, который он получает от Anthropic. На [развертывании, где получение флагов отключено](/docs/ru/env-vars#features-that-need-feature-flag-fetching), или на машине, флаги которой никогда не поступали, например на изолированной машине, Claude Code все еще запускает проверки и записывает в журнал сервера, какой инструмент будет отклонен, но отправляет схему инструмента в API в любом случае. API отклоняет запрос, который включает эту схему с [ошибкой 400, называющей инструмент по его позиции](/docs/ru/errors#tool-input-schema-is-invalid). До версии 2.1.216 ни одно развертывание не запускало эти проверки.1463Claude Code включает исключение через флаг функции, который он получает от Anthropic. На [развертывании, где получение флагов отключено](/docs/ru/env-vars#features-that-need-feature-flag-fetching), или на машине, флаги которой никогда не поступали, например на изолированной машине, Claude Code все еще запускает проверки и записывает в журнал сервера, какой инструмент будет отклонен, но отправляет схему инструмента в API в любом случае. API отклоняет запрос, который включает эту схему с [ошибкой 400, называющей инструмент по его позиции](/docs/ru/errors#tool-input-schema-is-invalid). До версии 2.1.216 ни одно развертывание не запускало эти проверки.

Details

360 360 

361 То, что происходит дальше, говорит вам, где находится проблема:361 То, что происходит дальше, говорит вам, где находится проблема:

362 362 

363 * Команда запускается и ждёт ввода: сам сервер работает. Запустите `claude mcp get <name>` и подтвердите, что команда, показанная там, совпадает с тем, что вы только что запустили. Если показанная команда отличается от того, что вы набрали, вы, вероятно, пропустили разделитель `--` перед командой сервера. Удалите сервер и повторно добавьте его с `--` на месте. Если вы написали `.mcp.json` вручную, проверьте его синтаксис и местоположение.363 * Команда запускается и ждёт ввода: сам сервер работает.

364 * Команда выдаёт ошибку: сообщение называет то, что отсутствует, например Node.js или браузер.364 

365 Запустите `claude mcp get <name>` и подтвердите, что команда, показанная там, совпадает с тем, что вы только что запустили. Если показанная команда отличается от того, что вы набрали, вы, вероятно, пропустили разделитель `--` перед командой сервера. Удалите сервер и повторно добавьте его с `--` на месте. Если вы написали `.mcp.json` вручную, проверьте его синтаксис и местоположение. До версии 2.1.285 `claude mcp get` не печатал строку `Command` для записи stdio, сохранённой без поля `type`, такой как запись `.mcp.json`, написанная вручную. На этих версиях запустите `claude mcp list` вместо этого, который печатает командную строку в любом случае.

366 * Команда выдаёт ошибку: сообщение называет то, что отсутствует, такое как Node.js или браузер.

365 </Accordion>367 </Accordion>

366 368 

367 <Accordion title="Connection timed out at startup">369 <Accordion title="Connection timed out at startup">

model-config.md +12 −7

Details

39| **`sonnet`** | Использует последнюю модель Sonnet для ежедневных задач кодирования |39| **`sonnet`** | Использует последнюю модель Sonnet для ежедневных задач кодирования |

40| **`opus`** | Использует последнюю модель Opus для сложных задач рассуждения |40| **`opus`** | Использует последнюю модель Opus для сложных задач рассуждения |

41| **`haiku`** | Использует быструю и эффективную модель Haiku для простых задач |41| **`haiku`** | Использует быструю и эффективную модель Haiku для простых задач |

42| **`sonnet[1m]`** | Использует Sonnet с [контекстным окном в 1 миллион токенов](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) для длительных сеансов. Не имеет эффекта, когда `sonnet` уже разрешается на Sonnet 5.5 или Sonnet 5 с их встроенным окном 1M; за [шлюзом LLM](/docs/ru/llm-gateway) выбирает окно 1M для этой модели |42| **`sonnet[1m]`** | Использует Sonnet с [контекстным окном в 1 миллион токенов](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) для длительных сеансов. Не имеет эффекта, когда `sonnet` уже разрешается на Sonnet 5.5 или Sonnet 5 с их встроенным окном 1M |

43| **`opus[1m]`** | Использует Opus с [контекстным окном в 1 миллион токенов](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) для длительных сеансов |43| **`opus[1m]`** | Использует Opus с [контекстным окном в 1 миллион токенов](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) для длительных сеансов |

44| **`opusplan`** | Специальный режим, который использует `opus` во время режима плана, затем переключается на `sonnet` для выполнения |44| **`opusplan`** | Специальный режим, который использует `opus` во время режима плана, затем переключается на `sonnet` для выполнения |

45 45 


521 Цепочки резервных моделей521 Цепочки резервных моделей

522</h3>522</h3>

523 523 

524Когда основная модель перегружена, недоступна или возвращает другую неповторяемую ошибку сервера, Claude Code может переключиться на резервную модель вместо отказа в запросе. Ошибки аутентификации, выставления счетов, ограничения скорости, размера запроса и транспорта, а также [отказ в соответствии с проверкой политики вашей организации](/docs/ru/errors#automatic-retries), никогда не вызывают переключение; они следуют обычной обработке повторных попыток и ошибок.524Когда основная модель перегружена, недоступна или возвращает другую неповторяемую ошибку сервера, Claude Code может переключиться на резервную модель вместо отказа в запросе. Ошибки аутентификации, выставления счетов, ограничения скорости, размера запроса и транспорта, а также [отказ в соответствии с проверкой политики вашей организации](/docs/ru/errors#automatic-retries), никогда не вызывают переключение; они следуют обычной обработке повторных попыток и ошибок. Он переключается, когда [Amazon Bedrock](/docs/ru/amazon-bedrock#when-a-model-is-disabled-mid-session) или [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai#when-a-model-is-disabled-mid-session) отказывает в модели, которую ваша учетная запись не может вызвать, что Claude Code рассматривает как недоступность модели, а не как ошибку аутентификации.

525 525 

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

527 527 


775 775 

776Claude Code проверяет эти требования плана только при прямом подключении к Anthropic API. Если вы указываете `ANTHROPIC_BASE_URL` на [LLM gateway](/docs/ru/llm-gateway#subscriptions-and-gateways) и ваш сохраненный вход claude.ai остается активным учетным данным, Claude Code не проверяет кредиты использования вашего плана. Параметры `[1m]` остаются доступными в `/model`, и шлюз решает, успешен ли запрос. До версии 2.1.229 Claude Code отклонял `/model sonnet[1m]` в этой конфигурации, когда не мог подтвердить кредиты использования на учетной записи.776Claude Code проверяет эти требования плана только при прямом подключении к Anthropic API. Если вы указываете `ANTHROPIC_BASE_URL` на [LLM gateway](/docs/ru/llm-gateway#subscriptions-and-gateways) и ваш сохраненный вход claude.ai остается активным учетным данным, Claude Code не проверяет кредиты использования вашего плана. Параметры `[1m]` остаются доступными в `/model`, и шлюз решает, успешен ли запрос. До версии 2.1.229 Claude Code отклонял `/model sonnet[1m]` в этой конфигурации, когда не мог подтвердить кредиты использования на учетной записи.

777 777 

778<span id="context-window-behind-a-gateway" />

779 

780Если вы установите `ANTHROPIC_BASE_URL` на [LLM gateway](/docs/ru/llm-gateway) или другой прокси, Claude Code дает каждой модели, которую он распознает, то же окно контекста, которое модель имеет на Anthropic API. Fable 5.1, Fable 5, Sonnet 5 и позже, и Opus 4.7 и позже получают окно 1M без варианта `[1m]` для выбора, и модель, которая достигает 1M только через свой вариант `[1m]`, такая как Opus 4.6, работает на 200K без него. Claude Code не может обнаружить более низкий предел, который шлюз или сервер позади него применяет. Если ваш шлюз отклоняет запросы выше 200K токенов, запустите [`/autocompact 200k`](#set-the-auto-compact-window), чтобы сеансы компактировались на этой границе.

781 

778Чтобы отключить контекст 1M, установите `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Claude Code удаляет варианты модели 1M из средства выбора модели. На моделях с собственным окном 1M, таких как Sonnet 5 и модели Fable, он также рассматривает модель как имеющую окно контекста 200K:782Чтобы отключить контекст 1M, установите `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Claude Code удаляет варианты модели 1M из средства выбора модели. На моделях с собственным окном 1M, таких как Sonnet 5 и модели Fable, он также рассматривает модель как имеющую окно контекста 200K:

779 783 

780* С включенным auto-compact сеансы компактируются на границе 200K через [auto-compact](#set-the-auto-compact-window). Установка окна auto-compact выше 200K не снимает удержание, потому что Claude Code ограничивает это окно окном контекста модели.784* С включенным auto-compaction сеансы компактируются на границе 200K через [auto-compaction](#set-the-auto-compact-window). Установка окна auto-compact выше 200K не снимает удержание, потому что Claude Code ограничивает это окно окном контекста модели.

781* С отключенным auto-compact сеансы останавливаются на границе 200K с [ошибкой ограничения контекста](/docs/ru/errors#prompt-is-too-long) вместо компактирования.785* С отключенным auto-compaction сеансы останавливаются на границе 200K с [ошибкой ограничения контекста](/docs/ru/errors#prompt-is-too-long) вместо компактирования.

782 786 

783До версии 2.1.223 Claude Code удерживал только сеансы Sonnet 5, Opus 4.8 и Opus 5 на 200K. См. [переменные окружения](/docs/ru/env-vars).787До версии 2.1.223 Claude Code удерживал только сеансы Sonnet 5, Opus 4.8 и Opus 5 на 200K. См. [переменные окружения](/docs/ru/env-vars).

784 788 


803 807 

804На Anthropic API Sonnet 5.5 и Sonnet 5 всегда работают с окном контекста 1M. Нет варианта 200K, нет суффикса `[1m]` для выбора и нет требуемых кредитов использования ни на одном плане. Сеансы автоматически компактируются перед заполнением окна, примерно на 967K токенов по умолчанию; установите [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/ru/env-vars), чтобы выбрать другой порог.808На Anthropic API Sonnet 5.5 и Sonnet 5 всегда работают с окном контекста 1M. Нет варианта 200K, нет суффикса `[1m]` для выбора и нет требуемых кредитов использования ни на одном плане. Сеансы автоматически компактируются перед заполнением окна, примерно на 967K токенов по умолчанию; установите [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/ru/env-vars), чтобы выбрать другой порог.

805 809 

806Две конфигурации бюджетируют окно на 200K вместо этого:810Claude Code дает Sonnet 5.5 и Sonnet 5 то же окно 1M позади [LLM gateway](/docs/ru/llm-gateway) или другого пользовательского `ANTHROPIC_BASE_URL`. Если ваш шлюз применяет более низкий предел, см. [окно контекста позади шлюза](#context-window-behind-a-gateway).

811 

812Этот параметр бюджетирует окно на 200K вместо этого:

807 813 

808* **LLM gateway**: когда `ANTHROPIC_BASE_URL` указывает на [шлюз](/docs/ru/llm-gateway), Claude Code не может проверить поддержку 1M. Чтобы использовать полное окно, выберите Sonnet 5.5 (1M context) в средстве выбора модели, которое сопоставляется с `sonnet[1m]`, или запустите `/model claude-sonnet-5[1m]` для Sonnet 5.

809* **`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`**: удерживает сеансы на каждой модели с собственным окном 1M на окне 200K; см. [Extended context](#extended-context) для того, как удержание применяется. Полезно для развертываний, которым нужно ограничить контекст.814* **`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`**: удерживает сеансы на каждой модели с собственным окном 1M на окне 200K; см. [Extended context](#extended-context) для того, как удержание применяется. Полезно для развертываний, которым нужно ограничить контекст.

810 815 

811<h2 id="context-window-and-auto-compaction">816<h2 id="context-window-and-auto-compaction">


841* [Cloud sessions](/docs/ru/claude-code-on-the-web) выполняют компактирование по мере приближения разговора к пределу модели846* [Cloud sessions](/docs/ru/claude-code-on-the-web) выполняют компактирование по мере приближения разговора к пределу модели

842* Sonnet 4.6 и Opus 4.6 без [extended context](#extended-context) выполняют компактирование на границе 200K, как и Opus 4.8 и более поздние версии при работе с контекстным окном 200K, например на Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry847* Sonnet 4.6 и Opus 4.6 без [extended context](#extended-context) выполняют компактирование на границе 200K, как и Opus 4.8 и более поздние версии при работе с контекстным окном 200K, например на Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry

843* Когда вы установите [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/ru/env-vars), модели с собственным окном 1M, такие как Sonnet 5 и модели Fable, выполняют компактирование на границе 200K848* Когда вы установите [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/ru/env-vars), модели с собственным окном 1M, такие как Sonnet 5 и модели Fable, выполняют компактирование на границе 200K

844* Модели, работающие с собственным окном 1M, такие как Sonnet 5, модели Fable и Opus 4.7 и более поздние версии на Anthropic API, выполняют компактирование перед заполнением окна, примерно на 967K токенов по умолчанию. На Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry раздел [Pin models for third-party deployments](#pin-models-for-third-party-deployments) указывает, какие модели работают с этим окном; для конфигураций, которые бюджетируют Sonnet 5.5 и Sonnet 5 на 200K, см. [Sonnet 5.5 and Sonnet 5 context window](#sonnet-5-5-and-sonnet-5-context-window)849* Модели, работающие с собственным окном 1M, выполняют компактирование перед заполнением окна, примерно на 967K токенов по умолчанию. На Anthropic API это включает Sonnet 5, модели Fable и Opus 4.7 и более поздние версии. На Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry см. [Pin models for third-party deployments](#pin-models-for-third-party-deployments), чтобы узнать, какие модели работают с этим окном. За пользовательским `ANTHROPIC_BASE_URL` см. [the context window behind a gateway](#context-window-behind-a-gateway)

845* Сеансы на ID модели, которую Claude Code не распознаёт, такие как псевдоним [LLM gateway](/docs/ru/llm-gateway), выполняют компактирование при контекстном окне, которое Claude Code предполагает для ID; см. [Correct the window for a gateway or custom model ID](#correct-the-window-for-a-gateway-or-custom-model-id)850* Сеансы на ID модели, которую Claude Code не распознаёт, такие как псевдоним [LLM gateway](/docs/ru/llm-gateway), выполняют компактирование при контекстном окне, которое Claude Code предполагает для ID; см. [Correct the window for a gateway or custom model ID](#correct-the-window-for-a-gateway-or-custom-model-id)

846 851 

847<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">852<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">

Details

1430* `error.type`: почему Claude Code остановил сеанс. Присутствует только на событиях `refused`:1430* `error.type`: почему Claude Code остановил сеанс. Присутствует только на событиях `refused`:

1431 * `"helper_failed"`: [запуск помощника политики не удался](/docs/ru/settings-reference#helper-failures)1431 * `"helper_failed"`: [запуск помощника политики не удался](/docs/ru/settings-reference#helper-failures)

1432 * `"policy_invalid"`: управляемые параметры содержат ошибку, которая останавливает Claude Code от запуска, или источник администратора не смог загрузиться, поэтому Claude Code не может проверить принудительный вход организации1432 * `"policy_invalid"`: управляемые параметры содержат ошибку, которая останавливает Claude Code от запуска, или источник администратора не смог загрузиться, поэтому Claude Code не может проверить принудительный вход организации

1433 *

1434 * `"provider_not_allowed"`: сеанс будет использовать поставщика API или отправлять трафик поставщика на хост, который управляемый список [`allowedProviders`](/docs/ru/settings-reference#allowedproviders) не разрешает. Требуется Claude Code v2.1.285 или позже

1433 * `"consent_rejected"`: пользователь отклонил [диалог одобрения безопасности](/docs/ru/server-managed-settings#security-approval-dialogs) для параметров, управляемых сервером1435 * `"consent_rejected"`: пользователь отклонил [диалог одобрения безопасности](/docs/ru/server-managed-settings#security-approval-dialogs) для параметров, управляемых сервером

1434 * `"force_refresh_failed"`: выборка параметров, которую требует [`forceRemoteSettingsRefresh`](/docs/ru/settings-reference#forceremotesettingsrefresh), не удалась1436 * `"force_refresh_failed"`: выборка параметров, которую требует [`forceRemoteSettingsRefresh`](/docs/ru/settings-reference#forceremotesettingsrefresh), не удалась

1435 * `"gateway_rejected"`: [шлюз приложений Claude](/docs/ru/claude-apps-gateway) ответил на загрузку управляемых параметров с HTTP 4031437 * `"gateway_rejected"`: [шлюз приложений Claude](/docs/ru/claude-apps-gateway) ответил на загрузку управляемых параметров с HTTP 403

Details

246| `storage.googleapis.com` | Собственный установщик и собственный автоматический обновитель в версиях до 2.1.116 |246| `storage.googleapis.com` | Собственный установщик и собственный автоматический обновитель в версиях до 2.1.116 |

247| `registry.npmjs.org` | Установки плагинов (получение пакетов плагинов из источника npm и установка зависимостей пакетов Node.js плагинов), MCP-серверы, запущенные через `npx`, и реестр пакетов для установок npm и bun самого Claude Code |247| `registry.npmjs.org` | Установки плагинов (получение пакетов плагинов из источника npm и установка зависимостей пакетов Node.js плагинов), MCP-серверы, запущенные через `npx`, и реестр пакетов для установок npm и bun самого Claude Code |

248| `bridge.claudeusercontent.com` | [Claude in Chrome](/docs/ru/chrome) расширение WebSocket bridge |248| `bridge.claudeusercontent.com` | [Claude in Chrome](/docs/ru/chrome) расширение WebSocket bridge |

249| `*.frame.claudeusercontent.com` | [Artifact](/docs/ru/artifacts) чтение содержимого. CLI получает файлы артефакта с этого хоста, когда Claude открывает его, и только когда инструмент Artifact [доступен](/docs/ru/artifacts#availability) для вашей учетной записи. Чтобы отключить инструмент и удалить это требование, установите [`"enableArtifact": false`](/docs/ru/settings-reference#enableartifact) или [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/ru/env-vars); Claude Code также соблюдает устаревший параметр [`disableArtifact`](/docs/ru/settings-reference#disableartifact). См. [Disable artifacts](/docs/ru/artifacts#disable-artifacts) для того, как эти параметры взаимодействуют |249| `*.frame.claudeusercontent.com` | [Artifact](/docs/ru/artifacts) чтение содержимого. CLI получает файлы артефакта с этого хоста, когда Claude открывает его, и только когда инструмент Artifact [доступен](/docs/ru/artifacts#availability) для вашей учетной записи. Чтобы отключить инструмент и удалить это требование, установите [`"enableArtifact": false`](/docs/ru/settings-reference#enableartifact) или [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/ru/env-vars) |

250| `github.com` | Клонирование размещенных на GitHub [plugin marketplaces](/docs/ru/plugins/overview) и плагинов, включая официальный рынок Anthropic, через HTTPS или SSH. Чтобы клонировать источники GitHub `owner/repo` только через HTTPS, установите [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/ru/env-vars) |250| `github.com` | Клонирование размещенных на GitHub [plugin marketplaces](/docs/ru/plugins/overview) и плагинов, включая официальный рынок Anthropic, через HTTPS или SSH. Чтобы клонировать источники GitHub `owner/repo` только через HTTPS, установите [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/ru/env-vars) |

251| `raw.githubusercontent.com` | Лента изменений для [`/release-notes`](/docs/ru/commands). В интерактивных сеансах Claude Code также получает ее в фоновом режиме при запуске, когда его кэшированная лента изменений еще не охватывает запущенную версию, например при первом запуске после обновления; неинтерактивные и облачные сеансы никогда не получают ее |251| `raw.githubusercontent.com` | Лента изменений для [`/release-notes`](/docs/ru/commands). В интерактивных сеансах Claude Code также получает ее в фоновом режиме при запуске, когда его кэшированная лента изменений еще не охватывает запущенную версию, например при первом запуске после обновления; неинтерактивные и облачные сеансы никогда не получают ее |

252| `*-review.googlesource.com` | Поиск изменений Gerrit на checkouts `googlesource.com`. Когда сеанс вкладки Claude Desktop Code запускается или возобновляется на [доверенном](/docs/ru/permissions#project-allow-rules-and-workspace-trust) checkout, чей `origin` является хостом `googlesource.com`, Claude Code анонимно запрашивает сервер `-review` этого хоста для открытого изменения, соответствующего `Change-Id` HEAD, один раз за запуск или возобновление. Другие типы сеансов пропускают поиск, и никакой другой хост Gerrit не контактируется. Опционально: отключите с помощью [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/ru/env-vars) |252| `*-review.googlesource.com` | Поиск изменений Gerrit на checkouts `googlesource.com`. Когда сеанс вкладки Claude Desktop Code запускается или возобновляется на [доверенном](/docs/ru/permissions#project-allow-rules-and-workspace-trust) checkout, чей `origin` является хостом `googlesource.com`, Claude Code анонимно запрашивает сервер `-review` этого хоста для открытого изменения, соответствующего `Change-Id` HEAD, один раз за запуск или возобновление. Другие типы сеансов пропускают поиск, и никакой другой хост Gerrit не контактируется. Опционально: отключите с помощью [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/ru/env-vars) |

permission-modes.md +116 −117

Details

86| Как вы запускаете Claude Code | Встроенный начальный режим разрешений |86| Как вы запускаете Claude Code | Встроенный начальный режим разрешений |

87| :- | :- |87| :- | :- |

88| Любой файл параметров устанавливает `disableAutoMode` на `"disable"` | `default` |88| Любой файл параметров устанавливает `disableAutoMode` на `"disable"` | `default` |

89| `claude -p` или [Agent SDK](/docs/ru/agent-sdk/permissions) | `default` |89| `claude -p` или [Agent SDK](/docs/ru/agent-sdk/permissions#permission-modes) | `default` в сеансах, которые [получают флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching). В сеансах, которые не получают, таких как на стороннем поставщике или с отключённой телеметрией, `auto` с Claude Code v2.1.285 или позже и `default` на более ранних версиях. Сеанс в организации, политика которой не предоставляет режим `auto`, начинается в `default` вместо этого |

90| В терминале или через [расширение VS Code](/docs/ru/vs-code) | `auto` с Claude Code v2.1.283 или позже; на более ранних версиях `auto` на планах Pro, Max или Team в сеансах, которые [получают флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching), и `default` в противном случае |90| В терминале или через [расширение VS Code](/docs/ru/vs-code) | `auto` с Claude Code v2.1.283 или позже; на более ранних версиях `auto` на планах Pro, Max или Team в сеансах, которые [получают флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching), и `default` в противном случае |

91 91 

92В вашем [первом сеансе после установки или обновления](/docs/ru/env-vars#first-session-after-an-install-or-upgrade), Claude Code может выбрать начальный режим разрешений до того, как прибудут его флаги функций. Этот сеанс может начаться в другом режиме разрешений, чем указано в таблице, и ваш следующий сеанс соответствует таблице.92В вашем [первом сеансе после установки или обновления](/docs/ru/env-vars#first-session-after-an-install-or-upgrade), Claude Code может выбрать начальный режим разрешений до того, как прибудут его флаги функций. Этот сеанс может начаться в другом режиме разрешений, чем указано в таблице, и ваш следующий сеанс соответствует таблице.


98* В терминале один раз в верхней части сеанса98* В терминале один раз в верхней части сеанса

99* В расширении VS Code как карточка на экране нового разговора, которая остаётся до тех пор, пока вы её не закроете99* В расширении VS Code как карточка на экране нового разговора, которая остаётся до тех пор, пока вы её не закроете

100 100 

101На планах Pro, Max и Team, если ваш `~/.claude/settings.json` устанавливает `defaultMode` отличный от `auto` и ни один другой файл параметров не устанавливает его, ваши сеансы продолжают запускаться в этом режиме. Claude Code спрашивает один раз в терминале или в расширении VS Code, следует ли изменить параметр на режим auto. Если вы отклоните, ваш параметр остаётся как есть.101Если ваш `~/.claude/settings.json` устанавливает `defaultMode` отличный от `auto` и ни один другой файл параметров не устанавливает его, ваши сеансы продолжают запускаться в этом режиме. На планах Pro, Max и Team, а также в сеансах, которые [не получают флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching), Claude Code спрашивает один раз в терминале или в расширении VS Code, следует ли изменить параметр на режим auto. Если вы отклоните, ваш параметр остаётся как есть.

102 102 

103<h3 id="start-in-a-different-mode">103<h3 id="start-in-a-different-mode">

104 Начните в другом режиме разрешений104 Начните в другом режиме разрешений


288Чтобы сделать режим plan значением по умолчанию для сеансов терминала проекта, установите `defaultMode` на `plan` в `.claude/settings.json`, размещённый как пример в [Начните в другом режиме разрешений](#start-in-a-different-mode) показывает. Разговоры, которые [расширение VS Code](/docs/ru/vs-code) запускает, не читают параметры проекта для начального режима разрешений. Там установите `claudeCode.initialPermissionMode` на `plan` в параметрах пользователя VS Code вместо этого.288Чтобы сделать режим plan значением по умолчанию для сеансов терминала проекта, установите `defaultMode` на `plan` в `.claude/settings.json`, размещённый как пример в [Начните в другом режиме разрешений](#start-in-a-different-mode) показывает. Разговоры, которые [расширение VS Code](/docs/ru/vs-code) запускает, не читают параметры проекта для начального режима разрешений. Там установите `claudeCode.initialPermissionMode` на `plan` в параметрах пользователя VS Code вместо этого.

289 289 

290<h2 id="eliminate-prompts-with-auto-mode">290<h2 id="eliminate-prompts-with-auto-mode">

291 Исключение запросов разрешения с помощью автоматического режима291 Исключите запросы разрешений с помощью автоматического режима

292</h2>292</h2>

293 293 

294Автоматический режим позволяет Claude выполнять действия без обычных запросов разрешения. Отдельная модель классификатора проверяет действия перед их выполнением, блокируя все, что выходит за рамки вашего запроса, нацелено на неизвестную инфраструктуру или выглядит как результат враждебного контента, который прочитал Claude. Явные [правила запроса](/docs/ru/permissions#manage-permissions) по-прежнему вызывают запрос.294Автоматический режим позволяет Claude выполнять действия без обычных запросов разрешений. Отдельная модель классификатора проверяет действия перед их выполнением, блокируя все, что выходит за рамки вашего запроса, нацелено на неизвестную инфраструктуру или выглядит как результат враждебного контента, который прочитал Claude. Явные [правила запроса](/docs/ru/permissions#manage-permissions) по-прежнему вызывают запрос.

295 295 

296С Claude Code v2.1.283 или более поздней версии автоматический режим является [встроенным начальным режимом разрешений](#which-mode-a-session-starts-in) для интерактивных сеансов терминала и VS Code на каждом плане и поставщике. На более ранних версиях это встроенный начальный режим разрешений только на планах Pro, Max и Team.296С Claude Code v2.1.283 или позже автоматический режим является [встроенным начальным режимом разрешений](#which-mode-a-session-starts-in) для интерактивных сеансов терминала и VS Code на всех планах и провайдерах. В более ранних версиях это встроенный начальный режим разрешений только на планах Pro, Max и Team.

297 297 

298Классификатор также проверяет каждое сообщение, которое Claude отправляет другому агенту с помощью [`SendMessage`](/docs/ru/tools-reference), будь то простой текст или структурированное сообщение [команды агентов](/docs/ru/agent-teams), перед тем как Claude Code его доставит, как в автоматическом режиме, так и в [режиме плана, пока классификатор проверяет команды](#analyze-before-you-edit-with-plan-mode); проверка отправки требует Claude Code v2.1.222 или более поздней версии.298Классификатор также проверяет каждое сообщение, которое Claude отправляет другому агенту с помощью [`SendMessage`](/docs/ru/tools-reference), будь то простой текст или структурированное сообщение [команды агентов](/docs/ru/agent-teams), перед тем как Claude Code его доставит, как в автоматическом режиме, так и в [режиме плана, пока классификатор проверяет команды](#analyze-before-you-edit-with-plan-mode); проверка отправки требует Claude Code v2.1.222 или позже.

299 299 

300По умолчанию классификатор не проверяет удаления `rm` и `rmdir`, нацеленные на критический путь, такие как `rm -rf /` или `rm -rf ~`. [Критические пути](#critical-paths) охватывает то, что с ними происходит в каждом режиме разрешений.300По умолчанию классификатор не проверяет удаления `rm` и `rmdir`, нацеленные на критический путь, такие как `rm -rf /` или `rm -rf ~`. [Критические пути](#critical-paths) описывают, что с ними происходит в каждом режиме разрешений.

301 301 

302Автоматический режим также побуждает Claude продолжать работу без остановки для уточняющих вопросов, хотя Claude по-прежнему спрашивает, когда ваш запрос или навык явно на этом основаны. Для более сильного автономного поведения в режиме, который по-прежнему вас спрашивает, установите [стиль вывода Proactive](/docs/ru/output-styles).302Автоматический режим также побуждает Claude продолжать работу без остановки для уточняющих вопросов, хотя Claude все еще спрашивает, когда ваш запрос или навык явно на это полагаются. Для более сильного автономного поведения в режиме, который все еще вас спрашивает, установите вместо этого [стиль проактивного вывода](/docs/ru/output-styles).

303 303 

304<Warning>304<Warning>

305 Автоматический режим снижает количество запросов разрешения, но не гарантирует безопасность. Используйте его для задач, в которых вы доверяете общему направлению, а не как замену проверке при чувствительных операциях.305 Автоматический режим снижает количество запросов разрешений, но не гарантирует безопасность. Используйте его для задач, в которых вы доверяете общему направлению, а не как замену проверке при чувствительных операциях.

306</Warning>306</Warning>

307 307 

308Автоматический режим доступен только при соблюдении всех следующих требований вашей учетной записи:308Автоматический режим доступен только когда ваша учетная запись соответствует всем этим требованиям:

309 309 

310* **План**: Все планы.310* **План**: Все планы.

311* **Организация**: на Team и Enterprise автоматический режим доступен по умолчанию. Администраторы могут отключить его для организации, установив `permissions.disableAutoMode` на `"disable"` в [управляемых параметрах](/docs/ru/managed-settings).311* **Организация**: на Team и Enterprise автоматический режим доступен по умолчанию. Администраторы могут отключить его для организации, установив `permissions.disableAutoMode` на `"disable"` в [управляемых параметрах](/docs/ru/managed-settings).

312* **Модель**: на Anthropic API и [Claude Platform on AWS](/docs/ru/claude-platform-on-aws), Claude Opus 4.6 или более поздней версии, Sonnet 4.6 или более поздней версии, или [модель Fable](/docs/ru/model-config#work-with-fable). На Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry и сеансах [Claude apps gateway](/docs/ru/claude-apps-gateway) с входом, только Claude Sonnet 5 или более поздней версии, Opus 4.7 или более поздней версии и модели Fable. Более старые модели, включая Sonnet 4.5, Opus 4.5, Haiku и модели claude-3, не поддерживаются ни на одном поставщике.312* **Модель**: на Anthropic API и [Claude Platform on AWS](/docs/ru/claude-platform-on-aws), Claude Opus 4.6 или позже, Sonnet 4.6 или позже, или [модель Fable](/docs/ru/model-config#work-with-fable). На Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry и сеансах подписанного [Claude apps gateway](/docs/ru/claude-apps-gateway), только Claude Sonnet 5 или позже, Opus 4.7 или позже и модели Fable. Более старые модели, включая Sonnet 4.5, Opus 4.5, Haiku и модели claude-3, не поддерживаются ни на одном провайдере.

313* **Поставщик**: доступен по умолчанию на Anthropic API, Claude Platform on AWS, Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry и сеансах Claude apps gateway с входом.313* **Провайдер**: доступен по умолчанию на Anthropic API, Claude Platform on AWS, Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry и сеансах подписанного Claude apps gateway.

314 314 

315Если Claude Code сообщает, что автоматический режим недоступен, сначала проверьте эти требования и не устанавливает ли какой-либо файл параметров [`disableAutoMode`](/docs/ru/settings-reference#disableautomode). Anthropic также может отключить автоматический режим на стороне сервера, или сервер может отклонить автоматический режим для вашей учетной записи. Сеанс, получивший любой из этих ответов, держит автоматический режим отключенным до конца сеанса, поэтому позже начните новый сеанс.315Если Claude Code сообщает, что автоматический режим недоступен, сначала проверьте эти требования и установлены ли в файле параметров [`disableAutoMode`](/docs/ru/settings-reference#disableautomode). Anthropic также может отключить автоматический режим на стороне сервера, или сервер может отклонить автоматический режим для вашей учетной записи. Сеанс, получивший любой из этих ответов, держит автоматический режим отключенным до конца сеанса, поэтому позже начните новый сеанс.

316 316 

317Отдельное сообщение, которое называет модель и говорит, что автоматический режим "не может определить безопасность" действия, означает, что запрос классификатора не удался. Этот сбой обычно временный, но на Amazon Bedrock он может повторяться до тех пор, пока ваша учетная запись не сможет вызвать названную модель. Смотрите [справочник ошибок](/docs/ru/errors#auto-mode-cannot-determine-the-safety-of-an-action) для причин и что делать.317Отдельное сообщение, которое называет модель и говорит, что автоматический режим "не может определить безопасность" действия, означает, что запрос классификатора не удался. Этот сбой обычно временный, но на Amazon Bedrock он может повторяться до тех пор, пока ваша учетная запись не сможет вызвать названную модель. Смотрите [справочник ошибок](/docs/ru/errors#auto-mode-cannot-determine-the-safety-of-an-action) для причин и что делать.

318 318 

319Если вы установили `defaultMode: "auto"` в [параметрах](/docs/ru/settings-reference#all-settings) и сеанс терминала начинается в режиме Manual без ошибки, параметр, вероятно, находится в `.claude/settings.json` или `.claude/settings.local.json`. `auto` не вступает в силу из этих файлов. Переместите его в `~/.claude/settings.json`. Для разговора, который запустило расширение VS Code, вместо этого проверьте собственный список расширения в [Переключение режимов разрешений](#switch-permission-modes).319Если вы установили `defaultMode: "auto"` в [параметрах](/docs/ru/settings-reference#all-settings) и сеанс терминала начинается в режиме Manual без ошибки, параметр, вероятно, находится в `.claude/settings.json` или `.claude/settings.local.json`. `auto` не вступает в силу из этих файлов. Переместите его в `~/.claude/settings.json`. Для разговора, который расширение VS Code запустило, вместо этого проверьте собственный список расширения в [Переключение режимов разрешений](#switch-permission-modes).

320 320 

321<h3 id="enable-auto-mode-on-bedrock-agent-platform-or-foundry">321<h3 id="enable-auto-mode-on-bedrock-agent-platform-or-foundry">

322 Автоматический режим на Bedrock, Agent Platform или Foundry322 Автоматический режим на Bedrock, Agent Platform или Foundry

323</h3>323</h3>

324 324 

325На [Amazon Bedrock](/docs/ru/amazon-bedrock), [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai), [Microsoft Foundry](/docs/ru/microsoft-foundry) и сеансах [Claude apps gateway](/docs/ru/claude-apps-gateway) с входом автоматический режим доступен по умолчанию. С Claude Code v2.1.283 или более поздней версии это также [встроенный начальный режим разрешений](#which-mode-a-session-starts-in) для интерактивных сеансов терминала и [VS Code](/docs/ru/vs-code). Чтобы выбрать начальный режим разрешений самостоятельно, установите `permissions.defaultMode` как [Начать в другом режиме разрешений](#start-in-a-different-mode) описывает, или выберите режим разрешений из индикатора режима расширения VS Code.325На [Amazon Bedrock](/docs/ru/amazon-bedrock), [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai), [Microsoft Foundry](/docs/ru/microsoft-foundry) и сеансах подписанного [Claude apps gateway](/docs/ru/claude-apps-gateway), автоматический режим доступен по умолчанию. Когда ничто другое не устанавливает режим разрешений, это также [встроенный начальный режим разрешений](#which-mode-a-session-starts-in), на версиях, которые перечисляет таблица этого раздела. Чтобы выбрать начальный режим разрешений самостоятельно, установите `permissions.defaultMode` как описывает [Начать в другом режиме разрешений](#start-in-a-different-mode), или выберите режим разрешений из индикатора режима расширения VS Code.

326 326 

327На этих поставщиках поддерживаются только Claude Sonnet 5 или более поздней версии, Opus 4.7 или более поздней версии и модели Fable. На любой другой модели сеанс начинается в Manual вместо этого.327Только Claude Sonnet 5 или позже, Opus 4.7 или позже и модели Fable поддерживаются на этих провайдерах. На любой другой модели сеанс начинается в режиме Manual.

328 328 

329Чтобы предотвратить использование автоматического режима разработчиками, установите `disableAutoMode` на `"disable"` в [управляемых параметрах](/docs/ru/managed-settings). Это удаляет `auto` из цикла `Shift+Tab`, и сеанс, запущенный с `--permission-mode auto`, начинается в Manual вместо этого. Сеанс, уже работающий в автоматическом режиме, выходит из него, когда параметр достигает этого сеанса из [источника, развернутого администратором](/docs/ru/managed-settings#which-managed-source-claude-code-uses), и показывает `auto mode disabled by settings`. До v2.1.251 работающий сеанс оставался в автоматическом режиме до конца.329Чтобы предотвратить использование разработчиками автоматического режима, установите `disableAutoMode` на `"disable"` в [управляемых параметрах](/docs/ru/managed-settings). Это удаляет `auto` из цикла `Shift+Tab`, и сеанс, запущенный с `--permission-mode auto`, начинается в режиме Manual. Сеанс, уже работающий в автоматическом режиме, выходит из него, когда параметр достигает этого сеанса из [развернутого администратором источника](/docs/ru/managed-settings#which-managed-source-claude-code-uses), и показывает `auto mode disabled by settings`. До v2.1.251 работающий сеанс держал автоматический режим до конца.

330 330 

331В v2.1.158 через v2.1.206 автоматический режим был отключен на этих поставщиках до тех пор, пока вы не установили `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, и Claude Code игнорировал `defaultMode: "auto"` на этих поставщиках, если переменная также не была установлена. Переменная по-прежнему принимается для совместимости и не имеет эффекта с v2.1.207 и далее.331В v2.1.158 через v2.1.206 автоматический режим был отключен на этих провайдерах до тех пор, пока вы не установили `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, и Claude Code игнорировал `defaultMode: "auto"` на этих провайдерах, если переменная также не была установлена. Переменная все еще принимается для совместимости и не имеет эффекта с v2.1.207 и позже.

332 332 

333<h3 id="server-side-classifier-review">333<h3 id="server-side-classifier-review">

334 Проверка классификатора на стороне сервера334 Проверка классификатора на стороне сервера

335</h3>335</h3>

336 336 

337В автоматическом режиме Claude Code может попросить сервер проверить действия, которые [порядок решений](#how-the-classifier-evaluates-actions) отправляет на проверку, как часть запросов модели сеанса, вместо отправки собственных запросов классификатора. Эти сеансы спрашивают:337В автоматическом режиме Claude Code может попросить сервер проверить действия, которые [порядок решения](#how-the-classifier-evaluates-actions) отправляет на проверку, как часть запросов модели сеанса, вместо отправки собственных запросов классификатора. Эти сеансы спрашивают:

338 338 

339* **Прямое подключение к Anthropic API**: в интерактивном сеансе терминала, на каждом плане claude.ai и на учетных записях, которые используют Claude API, по мере развертывания Anthropic. Требует Claude Code v2.1.271 или более поздней версии на планах Pro, Max и Team, и v2.1.278 или более поздней версии на планах Enterprise и учетных записях Claude API. С v2.1.282 сеанс, который [не получает флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching), например потому что вы отключили телеметрию, спрашивает сервер по умолчанию в любом виде сеанса.339* **Прямое соединение с Anthropic API**: в интерактивном сеансе терминала, на каждом плане claude.ai и на учетных записях, которые используют Claude API, по мере развертывания Anthropic. Требует Claude Code v2.1.271 или позже на планах Pro, Max и Team, и v2.1.278 или позже на планах Enterprise и учетных записях Claude API. С v2.1.282 сеанс, который [не получает флаги функций](/docs/ru/env-vars#features-that-need-feature-flag-fetching), например потому что вы отключили телеметрию, по умолчанию спрашивает сервер в любом виде сеанса.

340* **Облачный поставщик, или LLM gateway или proxy**: на [Claude Platform on AWS](/docs/ru/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry, и всякий раз, когда вы указываете `ANTHROPIC_BASE_URL` на [LLM gateway или proxy](/docs/ru/llm-gateway), независимо от вашего плана. Запрос по умолчанию требует Claude Code v2.1.278 или более поздней версии.340* **Облачный провайдер, или шлюз LLM или прокси**: на [Claude Platform on AWS](/docs/ru/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry, и всякий раз, когда вы указываете `ANTHROPIC_BASE_URL` на [шлюз LLM или прокси](/docs/ru/llm-gateway), независимо от вашего плана. Запрос по умолчанию требует Claude Code v2.1.278 или позже.

341* **Сеанс [Claude apps gateway](/docs/ru/claude-apps-gateway) с входом**: требует Claude Code v2.1.280 или более поздней версии341* **Сеанс подписанного [Claude apps gateway](/docs/ru/claude-apps-gateway)**: требует Claude Code v2.1.280 или позже

342 342 

343Где сервер проверяет действия, его вердикты решают их. Возможны два других результата:343Где сервер проверяет действия, его вердикты их решают. Возможны два других результата:

344 344 

345* **Сервер не проверяет сеанс**: ответ завершается без результатов проверки, или сервер отвечает, что он не проверяет этот сеанс. Наиболее частые причины — это LLM gateway или proxy, который блокирует запрос на проверку или результаты, и платформа, регион или учетные данные, которые еще не имеют проверок на стороне сервера. Claude Code возвращается к собственным запросам классификатора. Как только этот откат сохраняется для остальной части сеанса, он показывает [уведомление о расходах на запросы классификатора](/docs/ru/auto-mode-classifier-billing) на учетных записях, где эти запросы выставляются счетом.345* **Сервер не проверяет сеанс**: ответ завершается без результатов проверки, или сервер отвечает, что он не проверяет этот сеанс. Наиболее частые причины — шлюз LLM или прокси, который отбрасывает запрос на проверку или результаты, и платформа, регион или учетные данные, которые еще не имеют проверок на стороне сервера. Claude Code возвращается к собственным запросам классификатора. Как только этот откат сохраняется для остальной части сеанса, он показывает [уведомление о расходах на запросы классификатора](/docs/ru/auto-mode-classifier-billing) на учетных записях, где эти запросы выставляются счетом.

346* **Сервер не дает вердикт для действия**: Claude Code отклоняет действие, а не выполняет его без проверки. На любом подключении это происходит, когда ответ заканчивается до прибытия результатов проверки или результаты прибывают в форме, которую Claude Code не может прочитать. LLM gateway или proxy, который сокращает ответы или переписывает результаты, может вызвать любое из них. На прямом подключении к Anthropic API это также происходит, когда проверка сервера не удается для действия, например истечение времени ожидания. [Сервер не вернул вердикт безопасности](/docs/ru/errors#the-server-returned-no-safety-verdict) охватывает сообщение об отказе, что происходит, когда отказы повторяются, и что делать.346* **Сервер не дает вердикт для действия**: Claude Code отклоняет действие, а не выполняет его без проверки. На любом соединении это происходит, когда ответ заканчивается до прибытия результатов проверки или результаты прибывают в форме, которую Claude Code не может прочитать. Шлюз LLM или прокси, который сокращает ответы или переписывает результаты, может вызвать любое из них. На прямом соединении с Anthropic API это также происходит, когда проверка сервера не удается для действия, например истечение времени ожидания. [Сервер не вернул вердикт безопасности](/docs/ru/errors#the-server-returned-no-safety-verdict) описывает сообщение об отклонении, что происходит при повторных отклонениях и что делать.

347 347 

348Чтобы пропустить запрос к серверу и всегда использовать собственные запросы классификатора Claude Code, установите [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/ru/env-vars). На прямом подключении к Anthropic API переменная требует Claude Code v2.1.281 или более поздней версии. Установка ее на `1` там включает проверку сервера в сеансе, который еще ее не имеет, такой как сеанс `-p` или Agent SDK, если вы также не установили `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`. Если вы установили `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` и оставили `CLAUDE_CODE_AUTO_MODE_SERVER` неустановленным, Claude Code также перестает запрашивать сервер, кроме как [Отключение предварительных возможностей](/docs/ru/llm-gateway-protocol#disable-pre-release-capabilities) описывает.348Чтобы пропустить запрос к серверу и всегда использовать собственные запросы классификатора Claude Code, установите [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/ru/env-vars). На прямом соединении с Anthropic API переменная требует Claude Code v2.1.281 или позже. Установка ее на `1` там включает проверку сервера в сеансе, который еще не имеет ее, такой как сеанс `-p` или Agent SDK, если вы также не установили `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`. Если вы установили `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` и оставили `CLAUDE_CODE_AUTO_MODE_SERVER` неустановленным, Claude Code также перестает спрашивать сервер, кроме как описывает [Отключить возможности предварительного выпуска](/docs/ru/llm-gateway-protocol#disable-pre-release-capabilities).

349 349 

350<h3 id="what-the-classifier-blocks-by-default">350<h3 id="what-the-classifier-blocks-by-default">

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


357 357 

358* Загрузка и выполнение кода, например `curl | bash`358* Загрузка и выполнение кода, например `curl | bash`

359* Отправка чувствительных данных на внешние конечные точки359* Отправка чувствительных данных на внешние конечные точки

360* Развертывание и миграция в production360* Развертывания и миграции в производстве

361* Массовое удаление в облачном хранилище361* Массовое удаление в облачном хранилище

362* Предоставление разрешений IAM или репозитория362* Предоставление разрешений IAM или репозитория

363* Изменение общей инфраструктуры363* Изменение общей инфраструктуры

364* Необратимое уничтожение файлов, которые существовали до сеанса364* Необратимое уничтожение файлов, которые существовали до сеанса

365* Force push365* Принудительная отправка

366* Фиксация или отправка изменения, которое отправило бы секреты или чувствительные данные за пределы репозитория при его запуске, или расширило бы то, что развертывание раскрывает. Это охватывает рабочий процесс CI или конфигурацию развертывания, которая передает секрет на назначение, которое его еще не получает, скрипт или шаг настройки, который читает хранилище секретов и отправляет данные, и изменение конфигурации, которое расширяет то, что развертывание публикует, такое как реестр, видимость, артефакт или параметр sourcemap. Проверка применяется на любой ветке, применяется даже когда репозиторий является общедоступным, и срабатывает при фиксации или отправке изменения, независимо от того, запускает ли эта фиксация или отправка конвейер; очистка требует назвать эффект выполнения, а не только фиксацию или отправку. До v2.1.211 эта проверка была ограничена ветвью по умолчанию: отправка туда была заблокирована, когда она содержала чувствительное содержимое, изменения скрытые или неправильно описанные относительно того, что вы просили, содержимое перенесенное из-за пределов репозитория или направленное вокруг проверки, которую вы просили366* Фиксация или отправка изменения, которое отправит секреты или чувствительные данные за пределы репозитория при его запуске, или расширит то, что развертывание раскрывает. Это охватывает рабочий процесс CI или конфигурацию развертывания, которая передает секрет на назначение, которое его еще не получает, скрипт или шаг настройки, который читает хранилище секретов и отправляет данные, и изменение конфигурации, которое расширяет то, что развертывание публикует, такое как параметр реестра, видимости, артефакта или sourcemap. Проверка применяется на любой ветке, применяется даже когда репозиторий является общедоступным, и срабатывает при фиксации или отправке изменения, независимо от того, запускает ли эта фиксация или отправка конвейер; очистка требует назвать эффект выполнения, а не только фиксацию или отправку. До v2.1.211 эта проверка была ограничена ветвью по умолчанию: отправка туда была заблокирована, когда она содержала чувствительный контент, изменения скрыты или неправильно описаны относительно того, что вы просили, контент перенесен из-за пределов репозитория или направлен вокруг проверки, которую вы просили

367* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop` или `git stash clear`, которые классификатор предполагает отбросили бы незафиксированные изменения367* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop` или `git stash clear`, которые классификатор предполагает отбросят незафиксированные изменения

368* `git commit --amend` когда фиксация в HEAD не была создана в этом сеансе368* `git commit --amend` когда фиксация в HEAD не была создана в этом сеансе

369* С v2.1.198, `git commit --amend` когда фиксация в HEAD уже была отправлена. Переформулировка только сообщения не блокируется: `--amend -m` без ничего вновь поставленного на сцену, на фиксации, которую Claude создал во время этого сеанса369* С v2.1.198 `git commit --amend` когда фиксация в HEAD уже была отправлена. Переформулировка только сообщения не блокируется: `--amend -m` без ничего вновь подготовленного, на фиксации, которую Claude создал во время этого сеанса

370* `terraform destroy`, `pulumi destroy`, `cdk destroy` или `terragrunt destroy`, и применение плана, который уничтожает ресурсы370* `terraform destroy`, `pulumi destroy`, `cdk destroy` или `terragrunt destroy`, и применение плана, который уничтожает ресурсы

371 371* Запись в менеджер секретов, или изменение записей DNS или сертификатов TLS

372Claude Code v2.1.195 и более поздние версии блокируют больше категорий по умолчанию. Несколько зависят от записей [окружения](/docs/ru/auto-mode-config#define-trusted-infrastructure), таких как чувствительные удаленные цели и защищенные области IaC, которые вы можете сузить до конкретных имен.372* Объединение запроса на слияние, который ни один человек не одобрил, одобрение собственного запроса на слияние Claude, или отключение проверок CI

373 

374* Запись в менеджер секретов или изменение записей DNS или сертификатов TLS

375* Слияние pull request, который не одобрил ни один человек, одобрение собственного pull request Claude или отключение проверок CI

376* Размещение комментария, который сам по себе является командой для автоматизации, такой как `atlantis apply` или `/deploy` или `/merge` бота373* Размещение комментария, который сам по себе является командой для автоматизации, такой как `atlantis apply` или `/deploy` или `/merge` бота

377* Переключение, постепенное развертывание или удаление флага функции production374* Переключение, постепенное развертывание или удаление флага функции в производстве

378* Применение изменений инфраструктуры к защищенной области IaC или осушение и удаление узлов кластера375* Применение изменений инфраструктуры к защищенной области IaC, или осушение и удаление узлов кластера

379* Записи в общий вычислительный кластер, которые выходят за пределы названного вами ресурса, такие как селектор меток или `--all`, который захватывает задания других пользователей376* Записи в общий вычислительный кластер, которые выходят за пределы названного вами ресурса, такие как селектор меток или `--all`, который захватывает задания других пользователей

380* Создание ресурсов Kubernetes, которые работают на каждом узле или перехватывают трафик кластера, такие как DaemonSets и admission webhooks377* Создание ресурсов Kubernetes, которые работают на каждом узле или перехватывают трафик кластера, такие как DaemonSets и admission webhooks

381* Интерактивные оболочки или port-forwards в чувствительную удаленную цель378* Интерактивные оболочки или переадресация портов в чувствительную удаленную цель

382* Открытие туннеля или обратной оболочки, которая делает локальный сервис доступным из общедоступного интернета379* Открытие туннеля или обратной оболочки, которая делает локальный сервис доступным из общедоступного интернета

383* Вывод живого учетного данного или токена в стенограмму или файл380* Печать живого учетного данного или токена в стенограмму или файл

384* Доступ к местоположению, указанному как местоположение чувствительных данных в вашем [окружении](/docs/ru/auto-mode-config#define-trusted-infrastructure), или копирование данных из него. Начиная с v2.1.198, это также блокирует отправку данных из одного на аудиторию, которую запись исключает381* Доступ к местоположению, указанному как местоположение чувствительных данных в вашей [среде](/docs/ru/auto-mode-config#define-trusted-infrastructure), или копирование данных из одного. С v2.1.198 это также блокирует отправку данных из одного на аудиторию, которую запись исключает

385* Маршрутизация установки пакета вокруг вашего внутреннего реестра пакетов на общедоступный реестр. Начиная с v2.1.198, это также применяется, когда вы сказали Claude, что внутренний реестр или зеркало существует в разговоре, а не только когда один указан в вашем окружении382* Маршрутизация установки пакета вокруг вашего внутреннего реестра пакетов на общедоступный реестр. С v2.1.198 это также применяется, когда вы сказали Claude, что внутренний реестр или зеркало существует в разговоре, а не только когда один указан в вашей среде

386* Запуск команды с флагом, который отключает защиту безопасности, например `--insecure`383* Запуск команды с флагом, который отключает защиту безопасности, например `--insecure`

387* Запуск цикла автономного агента, который работает без одобрения человека или песочницы, такой как запущенный с `--dangerously-skip-permissions` или `--no-sandbox`. Начиная с v2.1.198, это также охватывает запуск стороннего агента или eval harness с отключенной изоляцией и одобрением для каждого действия, такой как runner, запущенный с `--yes-always`384* Запуск цикла автономного агента, который работает без одобрения человека или песочницы, такой как запущенный с `--dangerously-skip-permissions` или `--no-sandbox`. С v2.1.198 это также охватывает запуск агента третьей стороны или eval harness с отключенной изоляцией и одобрением для каждого действия, такой как runner, запущенный с `--yes-always`

388* [Claude in Chrome](/docs/ru/chrome) действия браузера, которые могут отправить содержимое страницы, cookies или учетные данные за пределы origin385* [Claude в Chrome](/docs/ru/chrome) действия браузера, которые могут отправить контент страницы, куки или учетные данные за пределы источника

386 

387Несколько из этих категорий зависят от записей [среды](/docs/ru/auto-mode-config#define-trusted-infrastructure), таких как чувствительные удаленные цели и защищенные области IaC, которые вы можете сузить до конкретных имен.

389 388 

390Claude Code v2.1.198 и более поздние версии также блокируют эти по умолчанию:389Claude Code v2.1.198 и позже также блокируют эти по умолчанию:

391 390 

392* Удаление файлов в `/tmp`, `$TMPDIR` или другом общем каталоге scratch или cache по подстановочному знаку, glob или фильтру возраста, а не по конкретному названному пути391* Удаление файлов в `/tmp`, `$TMPDIR` или другом общем каталоге временных файлов или кэша по подстановочному знаку, глобусу или фильтру возраста, а не по конкретному названному пути

393* Включение чувствительных деталей в содержимое, отправленное, загруженное, опубликованное или написанное другим людям или общим системам, когда ваше собственное сообщение не авторизовало эти детали для этого получателя. Тела PR и issues, сообщения фиксации и комментарии считаются этим видом исходящего содержимого, когда репозиторий находится вне границы доверия или является общедоступным, включая собственные общедоступные репозитории вашей организации; внутренние пути файлов, кодовые имена, данные живого ответа API, такие как электронные письма или идентификаторы учетных записей, и идентификаторы инфраструктуры считаются чувствительными деталями. Область PR, issue и сообщения фиксации требует Claude Code v2.1.200 или более поздней версии. Живые личные данные из ответа API в теле PR или issue, такие как адрес электронной почты, идентификатор учетной записи или организации или метрика использования, требуют, чтобы вы назвали эти детали и получателя независимо от видимости репозитория или границы доверия. Эта проверка требует Claude Code v2.1.203 или более поздней версии392* Включение чувствительных деталей в контент, отправленный, загруженный, опубликованный или написанный другим людям или общим системам, когда ваше собственное сообщение не авторизовало эти детали для этого получателя. Тела PR и проблем, сообщения фиксации и комментарии считаются этим видом исходящего контента, когда репозиторий находится вне границы доверия или является общедоступным, включая собственные общедоступные репозитории вашей организации; внутренние пути файлов, кодовые имена, данные живого ответа API, такие как электронные письма или идентификаторы учетных записей, и идентификаторы инфраструктуры считаются чувствительными деталями. Область PR, проблемы и сообщения фиксации требует Claude Code v2.1.200 или позже. Живые личные данные из ответа API в теле PR или проблемы, такие как адрес электронной почты, идентификатор учетной записи или организации, или метрика использования, требуют, чтобы вы назвали эти детали и получателя независимо от видимости репозитория или границы доверия. Эта проверка требует Claude Code v2.1.203 или позже

394* Отправка нажатий клавиш на собственную панель tmux Claude Code для управления его собственным интерфейсом, что классификатор рассматривает как Claude, изменяющий свои собственные разрешения или надзор393* Отправка нажатий клавиш на собственную панель tmux Claude Code для управления его собственным интерфейсом, которую классификатор рассматривает как Claude, изменяющий свои собственные разрешения или надзор

395 394 

396Claude Code v2.1.200 и более поздние версии также блокируют эти по умолчанию:395Claude Code v2.1.200 и позже также блокируют эти по умолчанию:

397 396 

398* Комментирование, удаление или force-passing теста или утверждения, которое охраняет поведение безопасности, такое как аутентификация, контроль доступа, валидация входных данных или песочница397* Комментирование, удаление или принудительное прохождение теста или утверждения, которое охраняет поведение безопасности, такое как аутентификация, контроль доступа, валидация входных данных или песочница

399* Удаление или разборка stateful ресурса, который Claude не создал в сеансе, когда не применяется более конкретное правило удаления и вы не назвали этот ресурс398* Удаление или разборка ресурса с состоянием, который Claude не создал в сеансе, когда не применяется более конкретное правило удаления и вы не назвали этот ресурс

400* Переориентирование базового URL API, конечной точки proxy, получателя webhook или зеркала реестра на хост третьей стороны, который не подходит для задачи, включая в файлы примеров, такие как `.env.example`399* Переориентирование базового URL API, конечной точки прокси, получателя webhook или зеркала реестра на хост третьей стороны, который не подходит для задачи, включая в файлы примеров, такие как `.env.example`

401* Изменение того, куда идут отправки с помощью `git remote set-url` или `git remote add`, если вы не назвали новое удаленное хранилище400* Изменение того, куда идут отправки с помощью `git remote set-url` или `git remote add`, если вы не назвали новое удаленное хранилище

402* Отправка секретов или личных или доверенных данных в репозиторий, известный как общедоступный, или отправка конфиденциального материала туда, который не является частью собственной работы этого репозитория. Собственный предмет репозитория dotfiles является единственным исключением для личных или доверенных данных, и содержимое из приватного репозитория, достигающее любой общедоступной поверхности, блокируется так же; оба уточнения требуют Claude Code v2.1.203 или более поздней версии. До v2.1.203 личные данные были сгруппированы с конфиденциальным материалом и блокировались только когда они не были частью собственной работы этого репозитория. Когда видимость репозитория не установлена, классификатор не блокирует только на этом; он судит содержимое по другим правилам вместо этого401* Отправка секретов или личных или доверенных данных в репозиторий, известный как общедоступный, или отправка конфиденциального материала туда, который не является частью собственной работы этого репозитория. Собственный предмет репозитория dotfiles — единственное исключение для личных или доверенных данных, и контент из приватного репозитория, достигающий любой общедоступной поверхности, блокируется так же; оба уточнения требуют Claude Code v2.1.203 или позже. До v2.1.203 личные данные были сгруппированы с конфиденциальным материалом и блокировались только когда они не были частью собственной работы этого репозитория. Когда видимость репозитория не установлена, классификатор не блокирует только на этом; он судит контент против других правил вместо этого

403* Открытие pull request против другого репозитория или организации, форк с помощью `gh repo fork` или отправка в репозиторий третьей стороны, если вы не назвали эту внешнюю цель402* Открытие запроса на слияние против другого репозитория или организации, разветвление с помощью `gh repo fork` или отправка в репозиторий третьей стороны, если вы не назвали эту внешнюю цель

404 403 

405Claude Code v2.1.203 и более поздние версии также блокируют эти по умолчанию:404Claude Code v2.1.203 и позже также блокируют эти по умолчанию:

406 405 

407* Содержимое из чувствительного локального хранилища или из файла, имя, путь или тип которого отмечает его как чувствительный, входящее в фиксацию, отправку, текст PR или issue, gist или paste или публикацию пакета, если вы не назвали как источник, так и назначение. Стенограммы сеансов и журналы разговоров, папки с точками учетных данных и конфигурации, такие как ключи SSH, облачные учетные данные, профили браузера и история оболочки, и экспорты пользовательских данных, все считаются, и приватность репозитория не очищает это406* Контент из чувствительного локального хранилища, или из файла, имя, путь или тип которого отмечает его как чувствительный, входящий в фиксацию, отправку, текст PR или проблемы, gist или paste, или публикацию пакета, если вы не назвали как источник, так и назначение. Стенограммы сеансов и журналы разговоров, папки с точками учетных данных и конфигурации, такие как ключи SSH, облачные учетные данные, профили браузера и история оболочки, и экспорты пользовательских данных, все считаются, и репозиторий, являющийся приватным, не очищает его

408 407 

409Claude Code v2.1.205 и более поздние версии также блокируют эти по умолчанию:408Claude Code v2.1.205 и позже также блокируют эти по умолчанию:

410 409 

411* Запись в стенограммы сеансов Claude Code, файлы истории `.jsonl` в `~/.claude/projects/` или вашем настроенном каталоге конфигурации, прямо или через команду оболочки. Правило также охватывает строки метаданных, которые Claude Code добавляет к каждой записи стенограммы для своих собственных проверок. Чтение стенограммы не блокируется410* Запись в стенограммы сеансов Claude Code, файлы истории `.jsonl` в `~/.claude/projects/` или вашем настроенном каталоге конфигурации, прямо или через команду оболочки. Правило также охватывает строки метаданных, которые Claude Code добавляет к каждой записи стенограммы для собственных проверок. Чтение стенограммы не блокируется

412* Рекурсивное принудительное удаление, такое как `rm -rf "$VAR"` или `Remove-Item -Recurse -Force $dir`, цель которого является переменной оболочки, которая не назначена где-либо в разговоре, который видит классификатор, или glob, укорененным в такой переменной. Значение пришло только из более раннего вывода команды, который классификатор никогда не получает, поэтому классификатор не может проверить цель удаления по другим правилам удаления. Блок очищается, когда вы называете точный удаляемый путь, или когда Claude повторно запускает удаление с разрешенным буквальным путем, написанным в команду. Удаления, цель которых классификатор может разрешить, не затронуты.411* Рекурсивное принудительное удаление, такое как `rm -rf "$VAR"` или `Remove-Item -Recurse -Force $dir`, цель которого является переменной оболочки, которая не назначена нигде в разговоре, который видит классификатор, или глобус, укорененный в такой переменной. Значение пришло только из более раннего вывода команды, который классификатор никогда не получает, поэтому классификатор не может проверить цель удаления против других правил удаления. Блок очищается, когда вы называете точный удаляемый путь, или когда Claude повторно запускает удаление с разрешенным буквальным путем, написанным в команду. Удаления, цель которых классификатор может разрешить, не затронуты.

413 412 

414 Glob непосредственно под переменной, как в `rm -rf "$VAR"/*`, является [критическим путем](#critical-paths) вместо этого. Цели `Remove-Item`, которые являются голым `*` или заканчиваются на `/*` или `\*`, никогда не достигают классификатора: Claude Code [отклоняет их сразу](#remove-item-in-powershell).413 Глобус непосредственно под переменной, как в `rm -rf "$VAR"/*`, является [критическим путем](#critical-paths) вместо этого. Цели `Remove-Item`, которые являются голым `*` или заканчиваются на `/*` или `\*`, никогда не достигают классификатора: Claude Code [отклоняет их сразу](#remove-item-in-powershell).

415 414 

416Claude Code v2.1.257 и более поздние версии также блокируют эти по умолчанию:415Claude Code v2.1.257 и позже также блокируют эти по умолчанию:

417 416 

418* Запрос учетных данных из конечной точки метаданных облачного экземпляра, такой как `169.254.169.254`, или явная аутентификация облачного, кластерного или реестрового вызова с собственной учетной записью обслуживания машины или идентичностью узла417* Запрос учетных данных из конечной точки метаданных облачного экземпляра, такой как `169.254.169.254`, или явная аутентификация облачного, кластерного или реестрового вызова с использованием собственного удостоверения сервис-аккаунта или узла машины

419* Достижение общедоступного хоста маршрутом, отличным от прямого запроса, такой как туннель, обратная оболочка или конфигурация resolver или proxy, переписанная для указания за пределы418* Достижение общедоступного хоста маршрутом, отличным от прямого запроса, такой как туннель, обратная оболочка или конфигурация резолвера или прокси, переписанная для указания за пределы

420* Чтение учетных данных, которые принадлежат хосту, а не вашей задаче, такие как сертификаты узла или auth реестра контейнеров узла419* Чтение учетных данных, которые принадлежат хосту, а не вашей задаче, такие как сертификаты узла или аутентификация реестра контейнеров узла

421* Подключение к или сканирование соседних контейнеров, подов или ВМ, которые Claude не запустил, или узла под контейнером420* Подключение к или сканирование соседних контейнеров, подов или виртуальных машин, которые Claude не запустил, или узла под контейнером

422 421 

423Если Claude Code работает где-то, что предназначено для разрешения одного из этих, опишите эту настройку в записи [Host containment](/docs/ru/auto-mode-config#define-trusted-infrastructure) в `autoMode.environment`.422Если Claude Code работает где-то, что предназначено для разрешения одного из них, опишите эту настройку в записи [Host containment](/docs/ru/auto-mode-config#define-trusted-infrastructure) в `autoMode.environment`.

424 423 

425Claude Code v2.1.261 и более поздние версии также блокируют эти по умолчанию:424Claude Code v2.1.261 и позже также блокируют эти по умолчанию:

426 425 

427* Размещение или запись ссылки на общедоступный paste, диаграмму или сервис обмена данными в сообщение, текст PR или issue, документ или где-либо еще, где ссылка будет открыта или получена, когда сам URL несет обмениваемое содержимое, если вы не назвали этот сервис426* Размещение или запись ссылки на общедоступный paste, диаграмму или сервис обмена данными в сообщение, текст PR или проблемы, документ или где-либо еще, где ссылка будет открыта или получена, когда сам URL несет обмениваемый контент, если вы не назвали этот сервис

428 427 

429**Разрешено по умолчанию**:428**Разрешено по умолчанию**:

430 429 


432* Установка зависимостей, объявленных в ваших файлах блокировки или манифестах431* Установка зависимостей, объявленных в ваших файлах блокировки или манифестах

433* Чтение `.env` и отправка учетных данных на их соответствующий API432* Чтение `.env` и отправка учетных данных на их соответствующий API

434* Запросы HTTP только для чтения433* Запросы HTTP только для чтения

435* Отправка на любую ветку репозитория, в котором вы работаете, включая ветку по умолчанию. Ветка, не являющаяся веткой по умолчанию, имя которой отмечает ее как цель развертывания или публикации, такая как `production` или `gh-pages`, не охватывается: классификатор судит отправку туда по ее собственным условиям. Содержимое отправки по-прежнему проверяется по другим правилам, [`permissions.deny` правила](/docs/ru/permissions#manage-permissions) по-прежнему могут блокировать команды push [как написано](/docs/ru/permissions#bash-rule-limits) в каждом режиме, и собственная защита ветки удаленного хранилища по-прежнему применяется. До v2.1.211 разрешены были только отправки на ветку, на которой вы начали, ветки, которые создал Claude, и обычные отправки на ветку по умолчанию, и до v2.1.203 любая прямая отправка на ветку по умолчанию была заблокирована434* Отправка на любую ветку репозитория, в котором вы работаете, включая ветку по умолчанию. Ветка, не являющаяся ветвью по умолчанию, имя которой отмечает ее как цель развертывания или публикации, такая как `production` или `gh-pages`, не охватывается: классификатор судит отправку туда на его собственных условиях. Контент отправки все еще проверяется против других правил, [`permissions.deny` правила](/docs/ru/permissions#manage-permissions) все еще могут блокировать команды push [как написано](/docs/ru/permissions#bash-rule-limits) в каждом режиме, и собственная защита ветки удаленного хранилища все еще применяется. До v2.1.211 разрешены были только отправки на ветку, на которой вы начали, ветки, которые создал Claude, и обычные отправки на ветку по умолчанию, и до v2.1.203 любая прямая отправка на ветку по умолчанию была заблокирована

436 

437Claude Code v2.1.195 и более поздние версии также разрешают эти по умолчанию:

438 

439* Удаление точных заданий, которые Claude создал ранее в том же сеансе435* Удаление точных заданий, которые Claude создал ранее в том же сеансе

440* Чтение, проверка или запись кода, конфигов и моделей угроз, связанных с безопасностью, как часть вашей задачи436* Чтение, проверка или запись кода, конфигов и моделей угроз, связанных с безопасностью, как часть вашей задачи

441* Сообщения между агентами, работающими вместе в одном многоагентном сеансе437* Сообщения между агентами, работающими вместе в одном многоагентном сеансе

442* Отправка данных на доверенные домены, buckets и сервисы, которые вы указываете в [`environment`](/docs/ru/auto-mode-config#define-trusted-infrastructure). Это охватывает только поток данных, а не деструктивные или операции с учетными данными на той же инфраструктуре438* Отправка данных на доверенные домены, корзины и сервисы, которые вы указываете в [`environment`](/docs/ru/auto-mode-config#define-trusted-infrastructure). Это охватывает только поток данных, а не деструктивные или операции с учетными данными на той же инфраструктуре

443* [Claude in Chrome](/docs/ru/chrome) навигация на доверенный внутренний домен, localhost или URL, который вы назвали439* [Claude в Chrome](/docs/ru/chrome) навигация на доверенный внутренний домен, localhost или URL, который вы назвали

444 440 

445Команды в песочнице не получают доступ в сеть по умолчанию. Claude называет хосты, которые команде нужны, на самой команде, классификатор проверяет их с командой, и одобренный список открывает эти хосты только для этой одной команды. [Разрешенные домены для каждой команды](/docs/ru/sandboxing#per-command-allowed-domains-in-auto-mode) охватывает то, что список может и не может открыть и что происходит, когда команда достигает неуказанного хоста.441Команды в песочнице не получают доступ в сеть по умолчанию. Claude называет хосты, которые команде нужны, на самой команде, классификатор проверяет их с командой, и одобренный список открывает эти хосты только для этой одной команды. [Разрешенные домены для каждой команды](/docs/ru/sandboxing#per-command-allowed-domains-in-auto-mode) охватывает, что список может и не может открыть и что происходит, когда команда достигает неуказанного хоста.

446 442 

447Запустите `claude auto-mode defaults` для вывода полных списков правил как JSON. Если обычные действия блокируются, администратор может добавить доверенные репозитории, buckets и сервисы через параметр `autoMode.environment`: смотрите [Настройка автоматического режима](/docs/ru/auto-mode-config).443Запустите `claude auto-mode defaults` для печати полных списков правил как JSON. Если обычные действия блокируются, администратор может добавить доверенные репозитории, корзины и сервисы через параметр `autoMode.environment`: смотрите [Настройка автоматического режима](/docs/ru/auto-mode-config).

448 444 

449Отправка на любую ветку репозитория, в котором вы работаете, и создание pull request, который соответствует вашему запросу, выполняются без запроса, если только отправка или pull request не попадают под [список блокировок](#what-the-classifier-blocks-by-default), такой как секреты или чувствительные данные, покидающие репозиторий, или pull request, нацеленный на другой репозиторий или организацию. Чтобы требовать контрольную точку человека перед этими командами, оставаясь в автоматическом режиме, добавьте правила `permissions.ask`, которые соответствуют команде [как написано](/docs/ru/permissions#bash-rule-limits): смотрите [Общие границы](/docs/ru/auto-mode-config#common-boundaries).445Отправка на любую ветку репозитория, в котором вы работаете, и создание запроса на слияние, который соответствует вашему запросу, выполняются без запроса, если только отправка или запрос на слияние не попадают под [список блокировок](#what-the-classifier-blocks-by-default), такой как секреты или чувствительные данные, покидающие репозиторий, или запрос на слияние, нацеленный на другой репозиторий или организацию. Чтобы требовать контрольную точку человека перед этими командами, оставаясь в автоматическом режиме, добавьте правила `permissions.ask`, которые соответствуют команде [как написано](/docs/ru/permissions#bash-rule-limits): смотрите [Общие границы](/docs/ru/auto-mode-config#common-boundaries).

450 446 

451<h3 id="first-read-outside-the-working-directories">447<h3 id="first-read-outside-the-working-directories">

452 Первое чтение вне рабочих каталогов448 Первое чтение вне рабочих каталогов

453</h3>449</h3>

454 450 

455Пока [`permissions.blockReadsOutsideWorkingDirectories`](/docs/ru/settings-reference#permissions-blockreadsoutsideworkingdirectories) отключен, чтения файлов выполняются без запроса в автоматическом режиме, включая чтения вне [рабочих каталогов](/docs/ru/permissions#working-directories). Первый раз, когда Claude использует инструмент Read, Grep или Glob на пути вне них, Claude Code спрашивает вас, продолжать ли разрешать эти чтения.451Пока [`permissions.blockReadsOutsideWorkingDirectories`](/docs/ru/settings-reference#permissions-blockreadsoutsideworkingdirectories) отключен, чтения файлов выполняются без запроса в автоматическом режиме, включая чтения вне [рабочих каталогов](/docs/ru/permissions#working-directories). Первый раз Claude использует инструмент Read, Grep или Glob на пути вне них, Claude Code спрашивает, разрешить ли это чтение.

456 452 

457Запрос не появляется в неинтерактивных запусках `-p` или фоновых сеансах; чтения там выполняются как раньше.453Запрос не появляется в неинтерактивных запусках `-p` или фоновых сеансах; чтения там выполняются как раньше.

458 454 

459Независимо от вашего ответа, Claude продолжает работать:455Независимо от вашего ответа, Claude продолжает работать:

460 456 

461* **Продолжить разрешение**: чтение выполняется, более поздние чтения вне рабочих каталогов выполняются как раньше, и Claude Code записывает ваш ответ, чтобы запрос больше не появлялся457* **Да, и продолжайте разрешать любые чтения вне рабочих каталогов**: чтение выполняется, более поздние чтения вне рабочих каталогов выполняются как раньше, и Claude Code записывает ваш ответ, чтобы запрос не появился снова

462* **Блокировать с этого момента**: чтение отклоняется, и Claude Code устанавливает [`permissions.blockReadsOutsideWorkingDirectories`](/docs/ru/settings-reference#permissions-blockreadsoutsideworkingdirectories) на `true` в ваши пользовательские параметры, что заставляет инструменты файлов отклонять такие чтения в каждом более позднем сеансе и каждом режиме разрешений. Чтобы позволить Claude позже прочитать такой путь, добавьте его каталог с `/add-dir` или удалите параметр.458* **Нет, и блокируйте чтения вне рабочих каталогов с этого момента**: чтение отклоняется, и Claude Code устанавливает [`permissions.blockReadsOutsideWorkingDirectories`](/docs/ru/settings-reference#permissions-blockreadsoutsideworkingdirectories) на `true` в ваших пользовательских параметрах, что заставляет инструменты файлов отклонять такие чтения в каждом более позднем сеансе и каждом режиме разрешений. Чтобы позволить Claude позже прочитать такой путь, добавьте его каталог с `/add-dir` или удалите параметр.

463* **Спросить снова в следующий раз**: чтение отклоняется, и следующее чтение вне рабочих каталогов снова спрашивает459* **Нет, и спросите снова в следующий раз**: чтение отклоняется, и следующее чтение вне рабочих каталогов спрашивает снова

464* **Да, но спросить снова в следующий раз**: чтение выполняется, ничего не сохраняется, и следующее чтение вне рабочих каталогов снова спрашивает460* **Да, но спросите снова в следующий раз**: чтение выполняется, ничего не сохраняется, и следующее чтение вне рабочих каталогов спрашивает снова

465 461 

466<h3 id="boundaries-you-state-in-conversation">462<h3 id="boundaries-you-state-in-conversation">

467 Границы, которые вы указываете в разговоре463 Границы, которые вы указываете в разговоре


469 465 

470Классификатор рассматривает границы, которые вы указываете в разговоре, как сигнал блокировки. Если вы скажете Claude "не отправляй" или "подожди, пока я проверю перед развертыванием", классификатор блокирует соответствующие действия, даже когда правила по умолчанию их разрешали бы. Граница остается в силе до тех пор, пока вы не снимете ее в более позднем сообщении. Собственное суждение Claude о том, что условие было выполнено, не снимает его.466Классификатор рассматривает границы, которые вы указываете в разговоре, как сигнал блокировки. Если вы скажете Claude "не отправляй" или "подожди, пока я проверю перед развертыванием", классификатор блокирует соответствующие действия, даже когда правила по умолчанию их разрешали бы. Граница остается в силе до тех пор, пока вы не снимете ее в более позднем сообщении. Собственное суждение Claude о том, что условие было выполнено, не снимает его.

471 467 

472Границы не хранятся как правила. Классификатор перечитывает их из стенограммы при каждой проверке, поэтому граница может быть потеряна, если [компактирование контекста](/docs/ru/costs#reduce-token-usage) удаляет сообщение, которое ее указало. Для жесткой гарантии добавьте вместо этого [правило отказа](/docs/ru/permissions#permission-rule-syntax).468Границы не сохраняются как правила. Классификатор перечитывает их из стенограммы при каждой проверке, поэтому граница может быть потеряна, если [компактирование контекста](/docs/ru/costs#reduce-token-usage) удаляет сообщение, которое ее указало. Для жесткой гарантии добавьте вместо этого [правило отклонения](/docs/ru/permissions#permission-rule-syntax).

473 469 

474<h3 id="approvals-you-state-in-conversation">470<h3 id="approvals-you-state-in-conversation">

475 Одобрения, которые вы указываете в разговоре471 Одобрения, которые вы указываете в разговоре


477 473 

478Если вы скажете Claude, что заблокированное действие разрешено, классификатор читает это как ваше одобрение и может снять блок. То, как вы это сформулировали, решает, выполняется ли действие и как далеко распространяется одобрение:474Если вы скажете Claude, что заблокированное действие разрешено, классификатор читает это как ваше одобрение и может снять блок. То, как вы это сформулировали, решает, выполняется ли действие и как далеко распространяется одобрение:

479 475 

480* **Назовите действие и его специфику**: ваше сообщение должно назвать действие и конкретную вещь, которая делает его опасным, такую как ветка force push. Название только глагола ничего не очищает, поэтому "вы можете force-push" оставляет блок на месте.476* **Назовите действие и его специфику**: ваше сообщение должно назвать действие и конкретную вещь, которая делает его опасным, такую как ветка принудительной отправки. Название только глагола ничего не очищает, поэтому "вы можете принудительно отправить" оставляет блок на месте.

481* **Ожидайте, что это охватит одно действие**: одобрение охватывает деструктивное действие, которое вы назвали, поэтому более позднее действие снова блокируется, если вы не предоставили одобрение как постоянное. Чтобы перестать одобрять обычный паттерн одно действие за раз, добавьте его в [`autoMode.allow`](/docs/ru/auto-mode-config#override-the-block-and-allow-rules).477* **Ожидайте, что это охватит одно действие**: одобрение охватывает деструктивное действие, которое вы назвали, поэтому более позднее действие снова блокируется, если вы не предоставили одобрение как постоянное. Чтобы перестать одобрять рутинный паттерн одно действие за раз, добавьте его в [`autoMode.allow`](/docs/ru/auto-mode-config#override-the-block-and-allow-rules).

482* **Некоторые блоки остаются на месте**: [порядок приоритета классификатора](/docs/ru/auto-mode-config#override-the-block-and-allow-rules) устанавливает, какие блоки может достичь ваше одобрение. Чтобы запустить шаг, который оно не очистит, [выйдите из автоматического режима](#switch-permission-modes) и ответьте на запрос разрешения.478* **Некоторые блоки остаются на месте**: [порядок приоритета классификатора](/docs/ru/auto-mode-config#override-the-block-and-allow-rules) устанавливает, какие блоки может достичь ваше одобрение. Чтобы запустить шаг, который оно не очистит, [выйдите из автоматического режима](#switch-permission-modes) и ответьте на запрос разрешения.

483 479 

484<h3 id="when-auto-mode-falls-back">480<h3 id="when-auto-mode-falls-back">


488Когда автоматический режим не может одобрить действия вашего сеанса, что происходит, зависит от случая:484Когда автоматический режим не может одобрить действия вашего сеанса, что происходит, зависит от случая:

489 485 

490* **Заблокированное действие**: Claude Code показывает уведомление и перечисляет действие в `/permissions` на вкладке **Recently denied**, где вы можете нажать `r` для повторной попытки с ручным одобрением.486* **Заблокированное действие**: Claude Code показывает уведомление и перечисляет действие в `/permissions` на вкладке **Recently denied**, где вы можете нажать `r` для повторной попытки с ручным одобрением.

491* **Повторные блоки**: если классификатор блокирует действие 3 раза подряд или 20 раз всего, автоматический режим приостанавливается и Claude Code возобновляет запросы. Одобрение запрошенного действия возобновляет автоматический режим. Смотрите [Пороги повторных блоков](#repeated-block-thresholds) для того, как блоки считаются.487* **Повторные блоки**: если классификатор блокирует действие 3 раза подряд или 20 раз всего, автоматический режим приостанавливается и Claude Code возобновляет запросы. Одобрение запрашиваемого действия возобновляет автоматический режим. Смотрите [Пороги повторных блоков](#repeated-block-thresholds) для того, как блоки считаются.

492* **Нет вердикта от классификатора**: когда проверка безопасности, отдельная от автоматического режима, отклоняет собственный запрос классификатора, или ответ классификатора не разбирается, Claude Code отклоняет действие без уведомления или записи **Recently denied**. Смотрите [Auto mode cannot determine the safety of an action](/docs/ru/errors#auto-mode-cannot-determine-the-safety-of-an-action) для сообщения каждого случая и что делать.488* **Нет вердикта от классификатора**: когда проверка безопасности, отдельная от автоматического режима, отклоняет собственный запрос классификатора, или ответ классификатора не разбирается, Claude Code отклоняет действие без уведомления или записи **Recently denied**. Смотрите [Автоматический режим не может определить безопасность действия](/docs/ru/errors#auto-mode-cannot-determine-the-safety-of-an-action) для сообщения, которое показывает каждый случай, и что делать.

493* **Нет вердикта от сервера**: под [проверкой классификатора на стороне сервера](#server-side-classifier-review), Claude Code отклоняет действие, для которого сервер не дает вердикт, и останавливает ход после десяти ответов подряд без вердикта. Смотрите [Сервер не вернул вердикт безопасности](/docs/ru/errors#the-server-returned-no-safety-verdict).489* **Нет вердикта от сервера**: под [проверкой классификатора на стороне сервера](#server-side-classifier-review), Claude Code отклоняет действие, для которого сервер не дает вердикт, и останавливает ход после десяти ответов подряд без вердикта. Смотрите [Сервер не вернул вердикт безопасности](/docs/ru/errors#the-server-returned-no-safety-verdict).

494* **Переключение режима во время проверки**: если вы переключаете режимы разрешений, пока проверка классификатора ожидает, Claude Code отклоняет вердикт, который новый режим не запросил бы. Вместо этого вас спрашивают для одобрения, или действие автоматически отклоняется в [`dontAsk` режиме](#allow-only-pre-approved-tools-with-dontask-mode).490* **Переключение режима во время проверки**: если вы переключаете режимы разрешений, пока проверка классификатора ожидается, Claude Code отклоняет вердикт, который новый режим не запросил бы. Вместо этого вас спрашивают для одобрения, или действие автоматически отклоняется в [режиме `dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).

495 491 

496<h4 id="repeated-block-thresholds">492<h4 id="repeated-block-thresholds">

497 Пороги повторных блоков493 Пороги повторных блоков

498</h4>494</h4>

499 495 

500Пороги 3 блоков подряд и 20 блоков всего не настраиваются. Счетчик всего сохраняется для сеанса и сбрасывается только когда его собственный предел запускает откат. Claude Code не считает отказ к любому пороговому значению, когда проверка безопасности, отдельная от автоматического режима, отклоняет собственный запрос классификатора.496Пороги 3 блоков подряд и 20 блоков всего не настраиваются. Счетчик всего сохраняется для сеанса и сбрасывается только когда его собственный предел запускает откат. Claude Code не считает отклонение к любому порогу, когда проверка безопасности, отдельная от автоматического режима, отклоняет собственный запрос классификатора.

501 497 

502[Неинтерактивный](/docs/ru/headless) запуск `-p` без [`--permission-prompt-tool`](/docs/ru/cli-reference#cli-flags) не имеет запроса для возврата. Когда повторные блоки достигают порога, действие не выполняется и Claude продолжает работать. Claude Code не останавливает запуск.498Запуск [неинтерактивного](/docs/ru/headless) `-p` без [`--permission-prompt-tool`](/docs/ru/cli-reference#cli-flags) не имеет запроса для отката. Когда повторные блоки достигают порога, действие не выполняется и Claude продолжает работу. Claude Code не останавливает запуск.

503 499 

504Повторные блоки обычно означают, что классификатор упускает контекст о вашей инфраструктуре. Используйте `/feedback` для сообщения о ложных срабатываниях, или пусть администратор [настроит доверенную инфраструктуру](/docs/ru/auto-mode-config).500Повторные блоки обычно означают, что классификатор упускает контекст о вашей инфраструктуре. Используйте `/feedback` для сообщения о ложных срабатываниях, или пусть администратор [настроит доверенную инфраструктуру](/docs/ru/auto-mode-config).

505 501 


507 Как автоматический режим оценивает действия503 Как автоматический режим оценивает действия

508</h3>504</h3>

509 505 

510Следующие разделы охватывают порядок, в котором Claude Code оценивает действие, как классификатор проверяет работу подагента, и какие вызовы классификатора добавляют в стоимость и задержку.506Следующие разделы охватывают порядок, в котором Claude Code оценивает действие, как классификатор проверяет работу подагента и какие вызовы классификатора добавляют в стоимость и задержку.

511 507 

512<span id="how-the-classifier-evaluates-actions" />508<span id="how-the-classifier-evaluates-actions" />

513 509 

514<AccordionGroup>510<AccordionGroup>

515 <Accordion title="Как классификатор оценивает действия">511 <Accordion title="Как классификатор оценивает действия">

516 Каждое действие проходит через фиксированный порядок решений. Первый соответствующий шаг побеждает:512 Каждое действие проходит через фиксированный порядок решения. Первый соответствующий шаг побеждает:

517 513 

518 1. Действия, соответствующие вашим [правилам разрешения, запроса или отказа](/docs/ru/permissions#manage-permissions), разрешаются немедленно, с этими исключениями:514 1. Действия, соответствующие вашим [правилам разрешения, запроса или отклонения](/docs/ru/permissions#manage-permissions), разрешаются немедленно, с этими исключениями:

519 * Записи в [защищенные пути](#protected-paths) маршрутизируются к классификатору, даже когда правило разрешения соответствует515 * Записи в [защищенные пути](#protected-paths) маршрутизируются классификатору, даже когда правило разрешения соответствует

520 * Нет правила разрешения, которое одобряет удаления `rm` и `rmdir`, нацеленные на [критический путь](#critical-paths)516 * Ни одно правило разрешения не одобряет удаления `rm` и `rmdir`, нацеленные на [критический путь](#critical-paths)

521 * MCP инструменты, отмеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), спрашивают вас напрямую, даже когда правило разрешения соответствует, и так же инструменты connector, которые ваша организация установила на `ask`]\(/ru/mcp#organization-controls-on-connector-tools) в сеансах, где этот параметр достигает Claude Code517 * Инструменты MCP, отмеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), спрашивают вас напрямую, даже когда правило разрешения соответствует, и то же самое делают инструменты соединителя [ваша организация установила на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) в сеансах, где эта параметр достигает Claude Code

522 * Команда оболочки, которая несет [разрешенные домены для каждой команды](/docs/ru/sandboxing#per-command-allowed-domains-in-auto-mode), также маршрутизируется к классификатору, даже когда правило разрешения соответствует, потому что правило одобряет команду, а не ее хосты518 * Команда оболочки, которая несет [разрешенные домены для каждой команды](/docs/ru/sandboxing#per-command-allowed-domains-in-auto-mode), также маршрутизируется классификатору, даже когда правило разрешения соответствует, потому что правило одобряет команду, а не ее хосты

523 * Правила запроса, которые соответствуют содержимому команды, такие как `Bash(git push *)`, возвращаются к запросу разрешения519 * Правила запроса, которые соответствуют содержанию команды, такие как `Bash(git push *)`, возвращаются к запросу разрешения

524 * Запись, которую [проверка symlink](/docs/ru/permissions#symlinks) разрешает на защищенный путь, спрашивает вас, когда путь, который запросил Claude, сам не защищен520 * Запись, которую [проверка символической ссылки](/docs/ru/permissions#symlinks) разрешает защищенному пути, спрашивает вас, когда путь, который запросил Claude, сам не защищен

525 2. Действия только для чтения и редактирование файлов в вашем рабочем каталоге автоматически одобряются, кроме записей в [защищенные пути](#protected-paths) и [первое чтение вне рабочих каталогов](#first-read-outside-the-working-directories), которое вас спрашивает521 2. Действия только для чтения и редактирования файлов в вашем рабочем каталоге автоматически одобряются, кроме записей в [защищенные пути](#protected-paths) и [первое чтение вне рабочих каталогов](#first-read-outside-the-working-directories), которое спрашивает вас

526 * В сеансе с [проверкой классификатора на стороне сервера](#server-side-classifier-review), действия только для чтения и [команды оболочки в песочнице](/docs/ru/sandboxing#sandbox-modes) ждут эту проверку и блокируются, если она их отмечает522 * В сеансе с [проверкой классификатора на стороне сервера](#server-side-classifier-review), действия только для чтения и [команды оболочки в песочнице](/docs/ru/sandboxing#sandbox-modes) ждут эту проверку и блокируются, если она их отмечает

527 * Запись внутри вашего рабочего каталога, которую [проверка symlink](/docs/ru/permissions#symlinks) разрешает на местоположение вне него, спрашивает вас523 * Запись внутри вашего рабочего каталога, которую [проверка символической ссылки](/docs/ru/permissions#symlinks) разрешает местоположению вне него, спрашивает вас

528 3. Все остальное идет к классификатору, кроме [удаления критических путей](#critical-paths) при их обработке по умолчанию. Инструменты connector и `requiresUserInteraction` MCP инструменты, которые спрашивают вас напрямую на шаге 1, никогда не достигают классификатора, поэтому ни одобрение, требуемое организацией, ни шаг согласия не автоматически одобряются524 3. Все остальное идет классификатору, кроме [удалений критического пути](#critical-paths) под их обработкой по умолчанию. Инструменты соединителя и инструменты MCP `requiresUserInteraction`, которые спрашивают вас напрямую на шаге 1, никогда не достигают классификатора, поэтому ни одобрение, требуемое организацией, ни шаг согласия не одобряются автоматически

529 4. Если классификатор блокирует, Claude получает причину. В большинстве сеансов причина называет правило, которое классификатор совпал, такое как `[Data Exfiltration]`, вместо того чтобы давать письменное объяснение; смотрите [Проверка отказов](/docs/ru/auto-mode-config#review-denials)525 4. Если классификатор блокирует, Claude получает причину. В большинстве сеансов причина называет правило, которое классификатор совпал, такое как `[Data Exfiltration]`, а не дает письменное объяснение; смотрите [Проверка отклонений](/docs/ru/auto-mode-config#review-denials)

526 

527 [Мод](/docs/ru/plugins/mods/overview), который вы устанавливаете и который подключает `tool.check`, может одобрить действие перед шагом 3, и классификатор не проверяет действие, которое мод одобрил. Смотрите [Расширьте разрешения с помощью hooks](/docs/ru/permissions#extend-permissions-with-hooks).

530 528 

531 При входе в автоматический режим широкие правила разрешения, которые предоставляют произвольное выполнение кода, отбрасываются:529 При входе в автоматический режим широкие правила разрешения, которые предоставляют произвольное выполнение кода, отбрасываются:

532 530 

533 * Blanket `Bash(*)` или `PowerShell(*)`531 * Универсальные `Bash(*)` или `PowerShell(*)`

534 * Подстановочные интерпретаторы, такие как `Bash(python*)`532 * Подстановочные интерпретаторы, такие как `Bash(python*)`

535 * Команды запуска менеджера пакетов533 * Команды запуска менеджера пакетов

536 * Правила `Agent`534 * Правила `Agent`

537 * [`Monitor`](/docs/ru/tools-reference#monitor-tool) правила разрешения, потому что Claude Code запускает команды Monitor через оболочку535 * Правила [`Monitor`](/docs/ru/tools-reference#monitor-tool), потому что Claude Code запускает команды Monitor через оболочку

538 536 

539 Узкие правила, такие как `Bash(npm test)`, остаются в силе. Claude Code восстанавливает отброшенные правила, когда вы выходите из автоматического режима. До v2.1.236 Claude Code оставлял правила `Monitor` разрешения в силе в автоматическом режиме, поэтому правило, которое совпадало со всем инструментом, одобряло команды Monitor без проверки классификатора.537 Узкие правила, такие как `Bash(npm test)`, остаются в силе. Claude Code восстанавливает отброшенные правила, когда вы выходите из автоматического режима. До v2.1.236 Claude Code оставлял правила `Monitor` в силе в автоматическом режиме, поэтому правило, которое совпадало со всем инструментом, одобряло команды Monitor без проверки классификатора.

540 538 

541 Claude Code также запускает `git status` сам перед командой, которая отбросила бы незафиксированную работу, такой как `git reset --hard` или `rm -rf`, и показывает классификатору, присутствует ли поставленная на сцену, измененная или неотслеживаемая работа. Claude Code сообщает неотслеживаемые файлы в этой проверке, даже когда конфигурация git репозитория устанавливает `status.showUntrackedFiles=no`.539 Claude Code также запускает `git status` сам перед командой, которая отбросит незафиксированную работу, такой как `git reset --hard` или `rm -rf`, и показывает классификатору, присутствует ли подготовленная, измененная или неотслеживаемая работа. Claude Code сообщает неотслеживаемые файлы в этой проверке, даже когда конфигурация git репозитория устанавливает `status.showUntrackedFiles=no`.

542 540 

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

544 542 

545 Вы можете аннотировать результат вызова с помощью поля [`classifierContext`](/docs/ru/hooks#annotate-a-result-for-the-auto-mode-classifier) hook PostToolUse, которое классификатор читает как контекст, предоставленный приложением. Поле требует Claude Code v2.1.236 или более поздней версии.543 Вы можете аннотировать результат вызова с помощью [поля `classifierContext` hook PostToolUse](/docs/ru/hooks#annotate-a-result-for-the-auto-mode-classifier), которое классификатор читает как контекст, предоставленный приложением. Поле требует Claude Code v2.1.236 или позже.

546 544 

547 Отдельный зонд на стороне сервера сканирует входящие результаты инструментов и отмечает подозрительное содержимое перед тем как Claude его прочитает. Для получения дополнительной информации о том, как эти слои работают вместе, смотрите [объявление автоматического режима](https://claude.com/blog/auto-mode) и [инженерное углубленное погружение](https://www.anthropic.com/engineering/claude-code-auto-mode).545 Отдельный зонд на стороне сервера сканирует входящие результаты инструментов и отмечает подозрительный контент перед тем, как Claude его прочитает. Для получения дополнительной информации о том, как эти слои работают вместе, смотрите [объявление автоматического режима](https://claude.com/blog/auto-mode) и [инженерное углубленное погружение](https://www.anthropic.com/engineering/claude-code-auto-mode).

548 </Accordion>546 </Accordion>

549 547 

550 <Accordion title="Как автоматический режим обрабатывает подагентов">548 <Accordion title="Как автоматический режим обрабатывает подагентов">

551 Классификатор проверяет работу [подагента](/docs/ru/sub-agents) в трех точках:549 Классификатор проверяет работу [подагента](/docs/ru/sub-agents) в трех точках:

552 550 

553 1. Перед запуском подагента описание делегированной задачи оценивается, поэтому опасно выглядящая задача блокируется во время создания.551 1. Перед запуском подагента описание делегированной задачи оценивается, поэтому опасно выглядящая задача блокируется во время создания.

554 2. Пока подагент работает, каждое из его действий проходит через классификатор с теми же правилами, что и родительский сеанс, и любой `permissionMode` в frontmatter подагента игнорируется.552 2. Пока подагент работает, каждое из его действий проходит через тот же [порядок решения](#how-the-classifier-evaluates-actions), что и в родительском сеансе, с теми же правилами блокировки и разрешения. Любой `permissionMode` в frontmatter подагента игнорируется.

555 3. Когда подагент завершается, классификатор проверяет его работу и его финальный отчет перед тем как родитель прочитает отчет. Когда классификатор отмечает работу подагента или отчет, или отдельная проверка безопасности API отклоняет проверку, отчет все еще доставляется, предваренный предупреждением безопасности. Когда классификатор недоступен для проверки, отчет прибывает с примечанием для проверки работы подагента перед действием на его основе.553 3. Когда подагент завершается, классификатор проверяет его работу и его финальный отчет перед тем, как родитель прочитает отчет. Когда классификатор отмечает работу подагента или отчет, или отдельная проверка безопасности API отклоняет проверку, отчет все еще доставляется, предваренный предупреждением безопасности. Когда классификатор недоступен для проверки, отчет прибывает с примечанием для проверки работы подагента перед действием на его основе.

556 </Accordion>554 </Accordion>

557 555 

558 <Accordion title="Стоимость и задержка">556 <Accordion title="Стоимость и задержка">

559 Классификатор работает на Claude Sonnet 5 по умолчанию, а не на выборе вашего `/model`. Модель классификатора, которую Anthropic настраивает на стороне сервера, имеет приоритет над этим по умолчанию. Когда модель вашего сеанса является Claude Sonnet 4.6, или когда [`availableModels`](/docs/ru/model-config#restrict-model-selection) исключает Sonnet 5, классификатор работает на модели вашего сеанса вместо этого, или на модели Opus, когда сеанс работает на [модели Fable](/docs/ru/model-config#work-with-fable); на поставщиках, отличных от Anthropic API, этот fallback Opus является моделью Opus по умолчанию поставщика.557 Классификатор работает на Claude Sonnet 5 по умолчанию, а не на вашем выборе `/model`. Модель классификатора, которую Anthropic настраивает на стороне сервера, имеет приоритет над этим значением по умолчанию. Когда модель вашего сеанса — Claude Sonnet 4.6, или когда [`availableModels`](/docs/ru/model-config#restrict-model-selection) исключает Sonnet 5, классификатор работает на модели вашего сеанса вместо этого, или на модели Opus, когда сеанс работает на [модели Fable](/docs/ru/model-config#work-with-fable); на провайдерах, отличных от Anthropic API, этот откат Opus — модель по умолчанию провайдера.

560 558 

561 Первый запрос автоматического режима сеанса проверяет по умолчанию Sonnet 5: если запрос успешен, Sonnet 5 остается моделью классификатора сеанса, и если он не удается, потому что модель недоступна, сеанс использует fallback вместо этого. После того как эта проверка урегулируется, модель классификатора не изменяется для сеанса.559 Первый запрос автоматического режима сеанса проверяет значение по умолчанию Sonnet 5: если запрос успешен, Sonnet 5 остается моделью классификатора сеанса, и если он не удается, потому что модель недоступна, сеанс использует откат вместо этого.

562 560 

563 На планах Enterprise и на учетных записях, которые используют Claude API, [Claude Platform on AWS](/docs/ru/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry, вызовы классификатора считаются в сторону использования вашего токена. Каждая проверка отправляет часть стенограммы плюс ожидающее действие, добавляя round-trip перед выполнением. Чтения и редактирования рабочего каталога вне защищенных путей пропускают классификатор, поэтому накладные расходы поступают в основном из команд оболочки и сетевых операций. Где сервер проверяет действия как часть запросов модели сеанса, нет отдельных вызовов классификатора для подсчета; смотрите [Проверка классификатора на стороне сервера](#server-side-classifier-review).561 На планах Enterprise и на учетных записях, которые используют Claude API, [Claude Platform on AWS](/docs/ru/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry, вызовы классификатора считаются в сторону использования вашего токена. Каждая проверка отправляет часть стенограммы плюс ожидающее действие, добавляя круговой ход перед выполнением. Чтения и редактирования рабочего каталога вне защищенных путей пропускают классификатор, поэтому накладные расходы поступают в основном из команд оболочки и сетевых операций. Где сервер проверяет действия как часть запросов модели сеанса, нет отдельных вызовов классификатора для подсчета; смотрите [Проверка классификатора на стороне сервера](#server-side-classifier-review).

564 562 

565 Доступ в песочнице в сеть не добавляет запросы классификатора для каждого соединения. Классификатор судит [хосты, которые команда называет](/docs/ru/sandboxing#per-command-allowed-domains-in-auto-mode), вместе с командой в одной проверке, и Claude Code проверяет каждое соединение по одобренному списку без повторного вызова классификатора.563 Доступ в сеть в песочнице не добавляет запросы классификатора для каждого соединения. Классификатор судит [хосты, которые команда называет](/docs/ru/sandboxing#per-command-allowed-domains-in-auto-mode), вместе с командой в одной проверке, и Claude Code проверяет каждое соединение против одобренного списка без повторного вызова классификатора.

566 </Accordion>564 </Accordion>

567</AccordionGroup>565</AccordionGroup>

568 566 


671* `.yarn`669* `.yarn`

672* `.mvn`670* `.mvn`

673* `.claude`, кроме `.claude/worktrees`, где Claude хранит свои собственные git worktrees671* `.claude`, кроме `.claude/worktrees`, где Claude хранит свои собственные git worktrees

672* Каталог, который вы загрузили с помощью [`--plugin-dir`](/docs/ru/plugins/mods/create#change-a-mod-with-claude), потому что Claude Code перезагружает и запускает код мода из него при изменении файла

674 673 

675Защищённые файлы:674Защищённые файлы:

676 675 

permissions.md +13 −2

Details

603 603 

604Решения hook не обходят правила разрешений. Claude Code оценивает правила deny и ask независимо от того, что возвращает PreToolUse hook: совпадающее правило deny блокирует вызов, и совпадающее правило ask по-прежнему запрашивает даже когда hook вернул `"allow"` или `"ask"`. Это сохраняет приоритет deny-first, описанный в [Управление разрешениями](#manage-permissions), включая правила deny, установленные в управляемых параметрах.604Решения hook не обходят правила разрешений. Claude Code оценивает правила deny и ask независимо от того, что возвращает PreToolUse hook: совпадающее правило deny блокирует вызов, и совпадающее правило ask по-прежнему запрашивает даже когда hook вернул `"allow"` или `"ask"`. Это сохраняет приоритет deny-first, описанный в [Управление разрешениями](#manage-permissions), включая правила deny, установленные в управляемых параметрах.

605 605 

606Этот приоритет охватывает hooks в файлах параметров и в `hooks/hooks.json` плагина. [mod](/docs/ru/plugins/mods/overview), который вы устанавливаете и который подключается к `tool.check`, отвечает после того, как правила и `PreToolUse` hooks приняли решение, и его ответ может заменить их:

607 

608* **Правила Ask**: mod может одобрить вызов, для которого правило ask запросило бы подтверждение

609* **Блокировка от `PreToolUse` hook**: mod может одобрить вызов, если только hook не находится в управляемых параметрах

610* **Классификатор автоматического режима**: в [автоматическом режиме](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) вызов, одобренный mod, выполняется без проверки классификатора

611* **Правила Deny**: на машине с управляемыми параметрами или когда вы вошли с планом Team или Enterprise, правила deny по умолчанию имеют приоритет над mod, и ваша организация может это изменить. В любом другом месте mod может одобрить вызов, который правило deny отклоняет.

612 

613См. [Решить, доверять ли mod](/docs/ru/plugins/mods/overview#decide-whether-to-trust-a-mod) или [Управление mod для вашей организации](/docs/ru/plugins/mods/admin#know-what-happens-by-default), если вы развёртываете управляемые параметры.

614 

606Инструменты MCP, отмеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), также по-прежнему запрашивают, когда hook возвращает `"allow"`, как и инструменты соединителя [установленные вашей организацией на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) в сеансах, где эта настройка достигает Claude Code.615Инструменты MCP, отмеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), также по-прежнему запрашивают, когда hook возвращает `"allow"`, как и инструменты соединителя [установленные вашей организацией на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) в сеансах, где эта настройка достигает Claude Code.

607 616 

608Блокирующий hook также имеет приоритет над правилами allow. Hook, который выходит с кодом 2, останавливает вызов инструмента перед оценкой правил разрешений, поэтому блокировка применяется даже когда правило allow иначе позволило бы вызову продолжиться. Чтобы запустить все Bash команды без запросов, кроме нескольких, которые вы хотите заблокировать, добавьте `"Bash"` в список allow и зарегистрируйте PreToolUse hook, который отклоняет эти конкретные команды. См. [Блокировка редактирования защищённых файлов](/docs/ru/hooks-guide#block-edits-to-protected-files) для скрипта hook, который вы можете адаптировать.617Блокирующий hook также имеет приоритет над правилами allow. Hook, который выходит с кодом 2, останавливает вызов инструмента перед оценкой правил разрешений, поэтому блокировка применяется даже когда правило allow иначе позволило бы вызову продолжиться. Чтобы запустить все Bash команды без запросов, кроме нескольких, которые вы хотите заблокировать, добавьте `"Bash"` в список allow и зарегистрируйте PreToolUse hook, который отклоняет эти конкретные команды. См. [Блокировка редактирования защищённых файлов](/docs/ru/hooks-guide#block-edits-to-protected-files) для скрипта hook, который вы можете адаптировать.


719 728 

720То же самое применяется и к областям параметров: если параметры пользователя разрешают разрешение, а параметры проекта его запрещают, правило запрета блокирует его. Обратное также верно: запрет на уровне пользователя блокирует разрешение на уровне проекта, потому что правила запрета из любой области оцениваются перед правилами разрешения.729То же самое применяется и к областям параметров: если параметры пользователя разрешают разрешение, а параметры проекта его запрещают, правило запрета блокирует его. Обратное также верно: запрет на уровне пользователя блокирует разрешение на уровне проекта, потому что правила запрета из любой области оцениваются перед правилами разрешения.

721 730 

731Этот приоритет применяется между файлами параметров и аргументами командной строки. Относительно того, действует ли правило запрета над [mod](/docs/ru/plugins/mods/overview), который вы устанавливаете, см. [Расширение разрешений с помощью hooks](#extend-permissions-with-hooks).

732 

722Хосты встраивания могут предоставлять дополнительную управляемую политику через опцию SDK `managedSettings`, включая правила разрешения разрешений, если администратор не устанавливает блокировки `allowManaged*Only`; раздел [Deliver policy to Claude Desktop sessions](/docs/ru/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) описывает, когда политика встраивающей стороны применяется вообще.733Хосты встраивания могут предоставлять дополнительную управляемую политику через опцию SDK `managedSettings`, включая правила разрешения разрешений, если администратор не устанавливает блокировки `allowManaged*Only`; раздел [Deliver policy to Claude Desktop sessions](/docs/ru/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) описывает, когда политика встраивающей стороны применяется вообще.

723 734 

724<h2 id="project-allow-rules-and-workspace-trust">735<h2 id="project-allow-rules-and-workspace-trust">


765| [Hooks](/docs/ru/hooks) в файлах параметров, блок [`env`](/docs/ru/settings-reference#env) и вспомогательные команды, такие как [`apiKeyHelper`](/docs/ru/settings-reference#apikeyhelper), и [hooks](/docs/ru/hooks#hooks-in-skills-and-agents) проектного skill и [`allowed-tools`](/docs/ru/skills#pre-approve-tools-for-a-skill) | Используется | Используется. Доверие рабочей области никогда не блокирует `allowed-tools` skill в любом сеансе |776| [Hooks](/docs/ru/hooks) в файлах параметров, блок [`env`](/docs/ru/settings-reference#env) и вспомогательные команды, такие как [`apiKeyHelper`](/docs/ru/settings-reference#apikeyhelper), и [hooks](/docs/ru/hooks#hooks-in-skills-and-agents) проектного skill и [`allowed-tools`](/docs/ru/skills#pre-approve-tools-for-a-skill) | Используется | Используется. Доверие рабочей области никогда не блокирует `allowed-tools` skill в любом сеансе |

766| Правила `permissions.allow` и `additionalDirectories` в `.claude/settings.json` | Не используется до тех пор, пока вы не примете диалог доверия, который появляется снова, перечисляя их | Не используется. Claude Code выводит предупреждение [`this workspace has not been trusted`](/docs/ru/errors#workspace-has-not-been-trusted) в stderr |777| Правила `permissions.allow` и `additionalDirectories` в `.claude/settings.json` | Не используется до тех пор, пока вы не примете диалог доверия, который появляется снова, перечисляя их | Не используется. Claude Code выводит предупреждение [`this workspace has not been trusted`](/docs/ru/errors#workspace-has-not-been-trusted) в stderr |

767| Hooks frontmatter в проектном [subagent](/docs/ru/sub-agents#hooks-in-subagent-frontmatter), проектном плагине [`@skills-dir`](/docs/ru/plugins/loading#plugins-shared-through-a-repository) и записях [`extraKnownMarketplaces`](/docs/ru/settings-reference#extraknownmarketplaces) из репозитория или каталога `--add-dir` | Не используется, и диалог не предлагается | Не используется |778| Hooks frontmatter в проектном [subagent](/docs/ru/sub-agents#hooks-in-subagent-frontmatter), проектном плагине [`@skills-dir`](/docs/ru/plugins/loading#plugins-shared-through-a-repository) и записях [`extraKnownMarketplaces`](/docs/ru/settings-reference#extraknownmarketplaces) из репозитория или каталога `--add-dir` | Не используется, и диалог не предлагается | Не используется |

768| Встроенные [`mcpServers`](/docs/ru/sub-agents#scope-mcp-servers-to-a-subagent) в frontmatter subagent из репозитория или каталога `--add-dir`. До версии 2.1.238 Claude Code загружал эти серверы в обоих ситуациях | Не используется, и диалог не предлагается | Не используется |779| Встроенные [`mcpServers`](/docs/ru/sub-agents#scope-mcp-servers-to-a-subagent) в frontmatter subagent из репозитория или каталога `--add-dir` | Не используется, и диалог не предлагается | Не используется |

769| Серверы в `.mcp.json`, включая те, которые репозиторий [одобряет в своих собственных параметрах](/docs/ru/mcp#project-server-approvals-and-workspace-trust) | Claude Code спрашивает вас перед подключением. Собственные одобрения репозитория не учитываются | Подключены без запроса, одобрены или нет. SDK загружает их только когда `settingSources` включает параметры проекта. `claude mcp list` в той же папке по-прежнему сообщает о таком сервере как ожидающем |780| Серверы в `.mcp.json`, включая те, которые репозиторий [одобряет в своих собственных параметрах](/docs/ru/mcp#project-server-approvals-and-workspace-trust) | Claude Code спрашивает вас перед подключением. Собственные одобрения репозитория не учитываются | Подключены без запроса, одобрены или нет. SDK загружает их только когда `settingSources` включает параметры проекта. `claude mcp list` в той же папке по-прежнему сообщает о таком сервере как ожидающем |

770| [`headersHelper`](/docs/ru/mcp#trust-a-folder-before-its-headershelper-runs) на сервере в `.mcp.json`. До версии 2.1.238 Claude Code запускал помощника в обоих ситуациях | Не запускается до тех пор, пока вы не примете диалог доверия, который появляется снова, указывая, где объявлен помощник. Claude Code подключает сервер только с его статическими `headers` до этого момента | Не запускается. Claude Code подключает сервер с его статическими `headers` и выводит строку [`headersHelper not run`](/docs/ru/errors#headershelper-not-run) на сервер в stderr |781| [`headersHelper`](/docs/ru/mcp#trust-a-folder-before-its-headershelper-runs) на сервере в `.mcp.json` | Не запускается до тех пор, пока вы не примете диалог доверия, который появляется снова, указывая, где объявлен помощник. Claude Code подключает сервер только с его статическими `headers` до этого момента | Не запускается. Claude Code подключает сервер с его статическими `headers` и выводит строку [`headersHelper not run`](/docs/ru/errors#headershelper-not-run) на сервер в stderr |

771 782 

772Для строк, которым требуется доверие этой точной папки, доверьте ей вручную: установите `projects["<path>"].hasTrustDialogAccepted` на `true` в `~/.claude.json`, где `<path>` — это корень репозитория или сама папка вне репозитория. Claude Code выводит точный ключ в строку журнала отладки для пропущенного hook subagent или встроенного MCP сервера, в предупреждение stderr для пропущенных правил разрешений и в строку `headersHelper not run` для пропущенного помощника.783Для строк, которым требуется доверие этой точной папки, доверьте ей вручную: установите `projects["<path>"].hasTrustDialogAccepted` на `true` в `~/.claude.json`, где `<path>` — это корень репозитория или сама папка вне репозитория. Claude Code выводит точный ключ в строку журнала отладки для пропущенного hook subagent или встроенного MCP сервера, в предупреждение stderr для пропущенных правил разрешений и в строку `headersHelper not run` для пропущенного помощника.

773 784 

Details

29Каждая подкоманда имеет эти коды выхода, аргументы плагина и значения области действия:29Каждая подкоманда имеет эти коды выхода, аргументы плагина и значения области действия:

30 30 

31* **Коды выхода**: `0` при успехе и `1` при ошибке. `validate` добавляет выход `2` для неожиданной ошибки, а `eval` добавляет коды, указанные в [его разделе](#plugin-eval).31* **Коды выхода**: `0` при успехе и `1` при ошибке. `validate` добавляет выход `2` для неожиданной ошибки, а `eval` добавляет коды, указанные в [его разделе](#plugin-eval).

32* **Аргументы плагина**: аргумент `<plugin>` — это `name` плагина или `name@marketplace`. Когда два маркетплейса предлагают одно и то же имя, используйте квалифицированную форму.32* **Аргументы плагина**: аргумент `<plugin>` — это `name` плагина или `name@marketplace`. Когда два маркетплейса предлагают одно и то же имя, используйте квалифицированную форму. `configure` принимает только квалифицированную форму.

33* **Области действия**: `--scope` принимает `user`, `project` или `local`, и называет файл параметров, в который команда записывает. `update` также принимает `managed`.33* **Области действия**: `--scope` принимает `user`, `project` или `local`, и называет файл параметров, в который команда записывает. `update` также принимает `managed`.

34 34 

35<h3 id="plugin-init">35<h3 id="plugin-init">


87| Флаг | Описание |87| Флаг | Описание |

88| :- | :- |88| :- | :- |

89| `-s, --scope <scope>` | Область действия установки: `user`, `project` или `local`. По умолчанию `user` |89| `-s, --scope <scope>` | Область действия установки: `user`, `project` или `local`. По умолчанию `user` |

90| `--config <key=value>` | Установите опцию [`userConfig`](/docs/ru/plugins/manifest-reference), которую объявляет манифест плагина. Повторите флаг для каждой опции. Требует Claude Code v2.1.147 или позже |90| `--config <key=value>` | Установите опцию [`userConfig`](/docs/ru/plugins/manifest-reference), которую объявляет манифест плагина. Повторите флаг для каждой опции. Требует Claude Code v2.1.147 или позже. Ключ, написанный как `<server>.<key>`, устанавливает параметр, который [упакованный MCP сервер](/docs/ru/plugins/components#include-a-packaged-mcpb-server) объявляет в своём собственном `user_config` вместо этого, для файла пакета, поставляемого внутри плагина. Форма `<server>.<key>` требует Claude Code v2.1.285 или позже |

91| `-y, --yes` | Примите отображаемую команду установки без запроса `Run this command now?`. Игнорируется, когда команда запускается внутри сеанса Claude Code, например из инструмента Bash или hook. Требует Claude Code v2.1.229 или позже |91| `-y, --yes` | Примите отображаемую команду установки без запроса `Run this command now?`. Игнорируется, когда команда запускается внутри сеанса Claude Code, например из инструмента Bash или hook. Требует Claude Code v2.1.229 или позже |

92| `--accept-command <sha256>` | Примите отображаемую команду установки, чей `sha256` предыдущий запуск [`--json`](#plugin-json-result) сообщил в `shownCommand`, вместо `-y`. Не может быть объединён с `-y`. См. [Принять отображаемую команду установки](#accept-a-displayed-install-command). Требует Claude Code v2.1.271 или позже |92| `--accept-command <sha256>` | Примите отображаемую команду установки, чей `sha256` предыдущий запуск [`--json`](#plugin-json-result) сообщил в `shownCommand`, вместо `-y`. Не может быть объединён с `-y`. См. [Принять отображаемую команду установки](#accept-a-displayed-install-command). Требует Claude Code v2.1.271 или позже |

93| `--json` | Выведите результат как один JSON объект на последней строке stdout вместо читаемого сообщения для использования в скриптах. См. [Формат результата JSON](#plugin-json-result). Требует Claude Code v2.1.268 или позже |93| `--json` | Выведите результат как один JSON объект на последней строке stdout вместо читаемого сообщения для использования в скриптах. См. [Формат результата JSON](#plugin-json-result). Требует Claude Code v2.1.268 или позже |


297| :- | :- |297| :- | :- |

298| `--json` | Выведите список как JSON |298| `--json` | Выведите список как JSON |

299| `--available` | Также выведите плагины, которые предлагают ваши маркетплейсы, но которые вы не установили. Не имеет эффекта без `--json` |299| `--available` | Также выведите плагины, которые предлагают ваши маркетплейсы, но которые вы не установили. Не имеет эффекта без `--json` |

300| `--data-size [plugin]` | Измерьте каталог сохранённых данных каждого установленного плагина [saved data directory](#what-an-uninstall-deletes-and-keeps), или только названного плагина, указанного как `name@marketplace`. Не имеет эффекта без `--json`. Если имя не имеет записи об установке, команда выводит `--data-size names a plugin that is not installed` и выходит с кодом `1` вместо вывода списка. Требует Claude Code v2.1.285 или позже |

300 301 

301Claude Code группирует читаемый выход по тому, как загружается каждый плагин:302Claude Code группирует читаемый выход по тому, как загружается каждый плагин:

302 303 


328| `notes` | array of strings | Предупреждения авторства для плагина, который загрузился и работает |329| `notes` | array of strings | Предупреждения авторства для плагина, который загрузился и работает |

329| `errorDetails` | array of objects | Один объект на запись `errors`, дающий его диагностический `type` и имена, на которые он ссылается, такие как плагин, маркетплейс, сервер или файл. Требует Claude Code v2.1.268 или позже |330| `errorDetails` | array of objects | Один объект на запись `errors`, дающий его диагностический `type` и имена, на которые он ссылается, такие как плагин, маркетплейс, сервер или файл. Требует Claude Code v2.1.268 или позже |

330| `noteDetails` | array of objects | Те же объекты деталей для каждой записи `notes`. Требует Claude Code v2.1.268 или позже |331| `noteDetails` | array of objects | Те же объекты деталей для каждой записи `notes`. Требует Claude Code v2.1.268 или позже |

332| `hasUserConfig` | boolean | Присутствует и `true`, когда плагин загрузился и его манифест объявляет опции [`userConfig`](/docs/ru/plugins/manifest-reference#user-configuration). Отсутствует для плагина, который не загрузился, независимо от того, что объявляет его манифест. Сохранённые значения никогда не включаются. Требует Claude Code v2.1.285 или позже |

333| `projectEnabled` | boolean | Включает ли общий файл `.claude/settings.json` проекта плагин. Только установки маркетплейса. Требует Claude Code v2.1.285 или позже |

334| `dataDirSize` | object | С `--data-size`, размер каталога сохранённых данных плагина [saved data directory](#what-an-uninstall-deletes-and-keeps) как `bytes` и `human`; отсутствует, когда каталог отсутствует или пуст. Только установки маркетплейса. Требует Claude Code v2.1.285 или позже |

335| `dataDirUnreadable` | boolean | С `--data-size`, `true`, когда каталог сохранённых данных существует, но не мог быть измерен. Только установки маркетплейса. Требует Claude Code v2.1.285 или позже |

331 336 

332С `--json --available` Claude Code выводит один объект вместо массива. Его поле `installed` содержит массив объектов установленных плагинов, а его поле `available` содержит один объект на неустановленный плагин маркетплейса с полями ниже.337С `--json --available` Claude Code выводит один объект вместо массива. Его поле `installed` содержит массив объектов установленных плагинов, а его поле `available` содержит один объект на неустановленный плагин маркетплейса с полями ниже.

333 338 


371 376 

372Для плагина, который не загружен, Claude Code выводит ``Plugin "formatter" not found. Run `claude plugin list` to see installed plugins, or pass --plugin-dir <path> to load one from disk.`` и выходит с кодом `1`.377Для плагина, который не загружен, Claude Code выводит ``Plugin "formatter" not found. Run `claude plugin list` to see installed plugins, or pass --plugin-dir <path> to load one from disk.`` и выходит с кодом `1`.

373 378 

379<h3 id="plugin-configure">

380 plugin configure

381</h3>

382 

383Покажите опции [`userConfig`](/docs/ru/plugins/manifest-reference#user-configuration) установленного плагина и какие из них установлены, или сохраните значения, переданные на stdin. Требует Claude Code v2.1.285 или позже.

384 

385```bash theme={null}

386claude plugin configure <plugin>

387```

388 

389| Флаг | Описание |

390| :- | :- |

391| `--values-stdin` | Прочитайте значения опций из stdin как JSON объект однострочных строк и сохраните их. Опции, которые вы оставляете, сохраняют свои сохранённые значения |

392| `--json` | Выведите результат как один JSON объект на stdout. Без `--values-stdin` объект содержит `schema` и `choices` опций, их начальные `inputs` и имена `configured` и `unconfigured` опций. С `--values-stdin` он содержит имена `saved` опций и, когда они могут быть прочитаны обратно, имена `unconfigured` |

393 

394Без флагов команда выводит список каждой опции с до трёх ярлыков: `required` или `optional`, затем `sensitive` для опции, которую манифест объявляет чувствительной, затем `set` или `not set`. Она не выводит сохранённые значения. С `--json` выходные данные включают сохранённые значения опций, которые не чувствительны, и никогда текст чувствительной.

395 

396Чтобы сохранить значения, запишите их в файл как JSON объект, который отображает ключи опций на строковые значения, затем передайте файл на stdin. Замените `formatter@my-marketplace` на id вашего собственного плагина, как показывает `claude plugin list`. Этот пример устанавливает одну опцию с именем `api_url` из файла `values.json`, который содержит `{"api_url": "https://example.com"}`:

397 

398```bash theme={null}

399claude plugin configure formatter@my-marketplace --values-stdin < values.json

400```

401 

402Claude Code проверяет каждое значение против объявленного типа опции и выводит `Configuration saved. Restart Claude Code to apply it.` Если вы передаёте ключ, который манифест не объявляет, или значение, которое не проходит проверку, команда ничего не сохраняет, выводит `Failed to save configuration:` с причиной и выходит с кодом `1`. С `--json` отклонённое значение также выводит объект на stdout, чьё поле `refused` содержит `message` и, когда одна опция виновата, её ключ `option`.

403 

404Передайте полный id плагина `name@marketplace`, как показывает `claude plugin list`. `configure` не принимает простое `name`. Когда ни один загруженный плагин не имеет этот id, команда выводит `No installed plugin has the id "<plugin>".` и выходит с кодом `1`.

405 

406Для параметров упакованного MCP сервера см. [`plugin install --config`](#plugin-install) или элемент **Configure** в `/plugin`.

407 

374<h3 id="plugin-prune">408<h3 id="plugin-prune">

375 plugin prune409 plugin prune

376</h3>410</h3>

Details

791 791 

792Hooks в `hooks/hooks.json` и в ключе манифеста `hooks` оба загружаются. Для каждого события и его payload см. [Hook events](/docs/ru/hooks#hook-events).792Hooks в `hooks/hooks.json` и в ключе манифеста `hooks` оба загружаются. Для каждого события и его payload см. [Hook events](/docs/ru/hooks#hook-events).

793 793 

794Чтобы написать hooks как функции JavaScript, которые запускаются внутри Claude Code и могут рисовать в его интерфейсе, перечислите файл модуля под ключом `modules` в том же `hooks/hooks.json`. Плагин с одним — это мод. См. [Create a mod](/docs/ru/plugins/mods/create).

795 

794<h4 id="when-plugin-hooks-fire">796<h4 id="when-plugin-hooks-fire">

795 Когда запускаются hooks плагина797 Когда запускаются hooks плагина

796</h4>798</h4>


868 870 

869Сервер берёт своё имя из `name` в манифесте пакета.871Сервер берёт своё имя из `name` в манифесте пакета.

870 872 

873Пакет собственного манифеста может объявлять параметры, которые серверу нужны от пользователя в блоке `user_config`. Упакованный сервер с требуемым параметром, который не имеет сохранённого значения, не запускается. На вкладке **Errors** в `/plugin` показывается `Bundled MCP server "<name>" was not started: it needs configuration`.

874 

875Пользователи предоставляют значения одним из двух способов:

876 

877* **В `/plugin`**: выберите плагин на вкладке **Installed** и выберите **Configure**

878* **При установке из оболочки**: передайте [`--config <server>.<key>=<value>`](/docs/ru/plugins/cli-reference#plugin-install) в `claude plugin install`. Требуется Claude Code v2.1.285 или позже, и работает только для пакета, упакованного внутри плагина.

879 

871Для транспортов и аутентификации см. [MCP](/docs/ru/mcp#plugin-provided-mcp-servers).880Для транспортов и аутентификации см. [MCP](/docs/ru/mcp#plugin-provided-mcp-servers).

872 881 

873<h3 id="lsp-servers">882<h3 id="lsp-servers">


1071 Когда появляется диалог конфигурации1080 Когда появляется диалог конфигурации

1072</h3>1081</h3>

1073 1082 

1074Диалог появляется только в интерактивном интерфейсе `/plugin`. Он открывается для любого варианта, который ещё не установлен, когда пользователь делает любое из следующего:1083Диалог является частью интерактивного интерфейса `/plugin`. Когда пользователь делает любое из следующего, он открывается для любого варианта, который ещё не установлен:

1075 1084 

1076* Устанавливает плагин в `/plugin`1085* Устанавливает плагин в `/plugin`

1077* Запускает `/plugin install <plugin>@<marketplace>` внутри сессии1086* Запускает `/plugin install <plugin>@<marketplace>` внутри сессии


1079 1088 

1080Чтобы открыть тот же диалог в любое время, пользователь запускает `/plugin configure <plugin>@<marketplace>`.1089Чтобы открыть тот же диалог в любое время, пользователь запускает `/plugin configure <plugin>@<marketplace>`.

1081 1090 

1082Команда оболочки `claude plugin install` никогда не запрашивает значения `userConfig`. Чтобы установить значения из оболочки, передайте каждое как `--config KEY=VALUE`. Когда варианты остаются неустановленными, команда выводит строку `userConfig options not yet set`, которая называет оба способа их установки. [The `userConfig` dialog never appears](/docs/ru/plugins/troubleshooting#the-userconfig-dialog-never-appears) цитирует строку.1091Диалог управления плагинами VS Code [Manage plugins dialog](/docs/ru/vs-code#install-plugins) запрашивает неустановленные варианты в виде формы после установки, и значок шестерёнки в строке плагина открывает форму снова со всеми вариантами.

1092 

1093Команда оболочки `claude plugin install` никогда не запрашивает значения `userConfig`. Чтобы установить значения из оболочки, передайте каждое как `--config KEY=VALUE` при установке, или передайте объект JSON в [`claude plugin configure --values-stdin`](/docs/ru/plugins/cli-reference#plugin-configure) после этого.

1094 

1095Когда варианты остаются неустановленными, `claude plugin install` выводит строку `userConfig options not yet set`. Для точного текста строки см. [The `userConfig` dialog never appears](/docs/ru/plugins/troubleshooting#the-userconfig-dialog-never-appears).

1083 1096 

1084Для полей варианта, где хранится каждое значение, как компонент ссылается на сохранённое значение и какие поля отклоняют `${user_config.*}`, см. [User configuration](/docs/ru/plugins/manifest-reference#user-configuration).1097Для полей варианта, где хранится каждое значение, как компонент ссылается на сохранённое значение и какие поля отклоняют `${user_config.*}`, см. [User configuration](/docs/ru/plugins/manifest-reference#user-configuration).

1085 1098 

Details

72 Последнее предложение сводки говорит вам, доступен ли плагин в этой сессии прямо сейчас:72 Последнее предложение сводки говорит вам, доступен ли плагин в этой сессии прямо сейчас:

73 73 

74 * **Active now**: `Plugin is now active.` Перезагрузка не требуется.74 * **Active now**: `Plugin is now active.` Перезагрузка не требуется.

75 * **Active, but a server needs setup**: `Plugin is now active.` сопровождается `Its bundled MCP server needs configuration before it can start`. [Bundled MCP server](/docs/ru/plugins/components#include-a-packaged-mcpb-server) плагина не может запуститься, пока вы не установите его параметры. Выберите плагин на вкладке **Installed** в `/plugin` и выберите **Configure**, чтобы установить параметры сервера.

75 * **Reload needed**: `Run /reload-plugins to activate.` Панель закрывается и Claude Code запускает эту перезагрузку для вас. Если перезагрузка [инвалидирует кэш подсказок](/docs/ru/prompt-caching#enabling-or-disabling-a-plugin), она предупреждает и оставляет плагин в ожидании. Запустите `/reload-plugins --force`, чтобы активировать его в любом случае, что стоит один некэшированный запрос.76 * **Reload needed**: `Run /reload-plugins to activate.` Панель закрывается и Claude Code запускает эту перезагрузку для вас. Если перезагрузка [инвалидирует кэш подсказок](/docs/ru/prompt-caching#enabling-or-disabling-a-plugin), она предупреждает и оставляет плагин в ожидании. Запустите `/reload-plugins --force`, чтобы активировать его в любом случае, что стоит один некэшированный запрос.

76 * **Load failed**: `The plugin couldn't be loaded`. Откройте вкладку **Errors** в `/plugin`, чтобы узнать причину, затем см. [After install: plugin not working](/docs/ru/plugins/troubleshooting#plugin-installed-but-not-working).77 * **Load failed**: `The plugin couldn't be loaded`. Откройте вкладку **Errors** в `/plugin`, чтобы узнать причину, затем см. [After install: plugin not working](/docs/ru/plugins/troubleshooting#plugin-installed-but-not-working).

77 </Step>78 </Step>


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

249 250 

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

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

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

253 254 

254Те же учётные данные применяются, когда вы запускаете `/plugin install`, `/plugin marketplace update` и `claude plugin update`.255Те же учётные данные применяются, когда вы запускаете `/plugin install`, `/plugin marketplace update` и `claude plugin update`.


288 289 

289* Введите для фильтрации по имени или описанию.290* Введите для фильтрации по имени или описанию.

290* Нажмите **Space**, чтобы включить или отключить выбранный плагин, и **f**, чтобы добавить его в избранное.291* Нажмите **Space**, чтобы включить или отключить выбранный плагин, и **f**, чтобы добавить его в избранное.

291* Нажмите **Enter**, чтобы открыть детали плагина. Меню там предлагает **Disable plugin** или **Enable plugin**, **Update now** и **Uninstall**. Плагины, которые принимают настройки, также предлагают **Configure options**.292* Нажмите **Enter**, чтобы открыть детали плагина.

293 

294Меню деталей плагина предлагает **Disable plugin** или **Enable plugin**, **Update now** и **Uninstall**. Для плагинов, которые принимают настройки, появляются ещё два элемента, и плагин может показать оба:

295 

296* **Configure options**: показывается, когда манифест плагина объявляет [параметры `userConfig`](/docs/ru/plugins/manifest-reference#user-configuration). Открывает диалог для этих параметров

297* **Configure**: показывается, когда плагин включает [упакованный MCP сервер](/docs/ru/plugins/components#include-a-packaged-mcpb-server). Устанавливает собственные параметры `user_config` этого сервера

292 298 

293Вкладка также может показывать плагины в области **Managed**. Ваша организация установила их через [управляемые настройки](/docs/ru/settings#settings-files), и вы не можете включить, отключить или удалить их здесь.299Вкладка также может показывать плагины в области **Managed**. Ваша организация установила их через [управляемые настройки](/docs/ru/settings#settings-files), и вы не можете включить, отключить или удалить их здесь.

294 300 

Details

146| [`dependencies`](#dependencies) | Array of strings or objects | Плагины, которые должны быть включены для работы этого |146| [`dependencies`](#dependencies) | Array of strings or objects | Плагины, которые должны быть включены для работы этого |

147| [`settings`](#settings) | Object | Параметры, которые Claude Code применяет при включении плагина. Действуют только `agent` и `subagentStatusLine` |147| [`settings`](#settings) | Object | Параметры, которые Claude Code применяет при включении плагина. Действуют только `agent` и `subagentStatusLine` |

148| [`userConfig`](#user-configuration) | Object | Значения, которые Claude Code запрашивает у пользователя при включении плагина |148| [`userConfig`](#user-configuration) | Object | Значения, которые Claude Code запрашивает у пользователя при включении плагина |

149| `types` | Path | Файл `.d.ts`, который объявляет значения `$.state` и существительные `$` [mod](/docs/ru/plugins/mods/reference#files) |

149| [`channels`](#channels) | Array of objects | Каналы сообщений, которые предоставляет плагин, каждый привязан к одному из его MCP серверов |150| [`channels`](#channels) | Array of objects | Каналы сообщений, которые предоставляет плагин, каждый привязан к одному из его MCP серверов |

150| `skills` | Path, or array of paths | Директории для сканирования skills, каждая — директория папок `<name>/SKILL.md` или одна папка, содержащая `SKILL.md` напрямую. `"."` обозначает корень плагина. Добавляет к сканированию по умолчанию `skills/` |151| `skills` | Path, or array of paths | Директории для сканирования skills, каждая — директория папок `<name>/SKILL.md` или одна папка, содержащая `SKILL.md` напрямую. `"."` обозначает корень плагина. Добавляет к сканированию по умолчанию `skills/` |

151| [`commands`](#commands) | Path, array of paths, or object | Плоские файлы команд `.md`, директории с ними или объект-карта имени команды на `source` или `content`. Заменяет сканирование по умолчанию `commands/` |152| [`commands`](#commands) | Path, array of paths, or object | Плоские файлы команд `.md`, директории с ними или объект-карта имени команды на `source` или `content`. Заменяет сканирование по умолчанию `commands/` |


170 171 

171Claude Code помещает каждый компонент в пространство имен под ним, поэтому агент `reviewer` в плагине `deploy-tools` появляется как `deploy-tools:reviewer`.172Claude Code помещает каждый компонент в пространство имен под ним, поэтому агент `reviewer` в плагине `deploy-tools` появляется как `deploy-tools:reviewer`.

172 173 

174`claude plugin validate` также проверяет, что имя не проходит как один из собственных плагинов Anthropic. Проверка игнорирует регистр и рассматривает любой набор разделителей как один:

175 

176| Имя | Результат |

177| :- | :- |

178| Начинается с `claude-`, `anthropic-`, `anthropics-` или `cc-plugin-` | Ошибка |

179| Это `claude`, `anthropic`, `anthropics`, `claude-code` или `claude-mods` | Ошибка |

180| Ставит `official` рядом с `claude` или `anthropic`, например `official-claude-tools` | Ошибка |

181| Имеет `claude`, `anthropic` или `anthropics` как целое слово где-либо еще, например `mcp-for-claude` | Предупреждение |

182 

183Ошибка читается как `Plugin name "<name>" is reserved: it passes as one of Anthropic's own`, а предупреждение читается как `Plugin name "<name>" reads as one of Anthropic's own`. `claude plugin init` и `claude plugin tag` отказывают в имени, которое вызывает ошибку. Только эти команды проверяют имя. Claude Code все еще устанавливает и загружает плагин, имя которого они отказывают.

184 

173<h3 id="displayname">185<h3 id="displayname">

174 `displayName`186 `displayName`

175</h3>187</h3>

Details

484| `Author name cannot be empty` | Ошибка | `owner.name` |484| `Author name cannot be empty` | Ошибка | `owner.name` |

485| `Plugin name cannot contain spaces. Use kebab-case (e.g., "my-plugin")` | Ошибка | `plugins[i].name` |485| `Plugin name cannot contain spaces. Use kebab-case (e.g., "my-plugin")` | Ошибка | `plugins[i].name` |

486| `Plugin name cannot contain control or bidirectional-formatting characters` | Ошибка | `plugins[i].name` |486| `Plugin name cannot contain control or bidirectional-formatting characters` | Ошибка | `plugins[i].name` |

487| `Plugin name "x" is reserved: it passes as one of Anthropic's own` | Ошибка | `plugins[i].name`. См. манифест [`name`](/docs/ru/plugins/manifest-reference#name) для зарезервированных имён |

488| `Plugin name "x" reads as one of Anthropic's own` | Предупреждение | `plugins[i].name` |

487| `Claude Code cannot install plugins from marketplace "x". Each part of a plugin id (plugin@marketplace) may use only the letters a-z and A-Z, digits, ".", "_" and "-", and must start with a letter or digit. Change the marketplace's "name".` | Ошибка | `name` |489| `Claude Code cannot install plugins from marketplace "x". Each part of a plugin id (plugin@marketplace) may use only the letters a-z and A-Z, digits, ".", "_" and "-", and must start with a letter or digit. Change the marketplace's "name".` | Ошибка | `name` |

488| `Claude Code cannot install plugin "x". Each part of a plugin id (plugin@marketplace) may use only the letters a-z and A-Z, digits, ".", "_" and "-", and must start with a letter or digit. Change this entry's "name".` | Ошибка | `plugins[i].name` |490| `Claude Code cannot install plugin "x". Each part of a plugin id (plugin@marketplace) may use only the letters a-z and A-Z, digits, ".", "_" and "-", and must start with a letter or digit. Change this entry's "name".` | Ошибка | `plugins[i].name` |

489| `Duplicate plugin name "x" found in marketplace` | Ошибка | Две записи совместно используют `name` |491| `Duplicate plugin name "x" found in marketplace` | Ошибка | Две записи совместно используют `name` |

plugins/mods/admin.md +375 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Управление модами для вашей организации

6 

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

8 

9[Мод](/docs/ru/plugins/mods/overview) — это плагин, который выполняет код внутри Claude Code с разрешениями пользователя, который его установил. Моды не изолированы в песочнице. Через [управляемые параметры](/docs/ru/managed-settings) вы решаете, будут ли моды работать на машинах ваших пользователей, какие именно и в каком порядке. Вы также можете установить собственный мод, который отслеживает или отказывает в том, что делают другие моды.

10 

11Эта страница предназначена для человека, который развертывает управляемые параметры для Claude Code, будь то в виде файла, через MDM или из консоли администратора claude.ai. Моды включены по умолчанию в Claude Code v2.1.287 и более поздних версиях. Начните с раздела, который соответствует тому, что вы хотите сделать:

12 

13* **Исключить собственные моды пользователей, с модами вашей организации или без них**: [Остановить загрузку установленных пользователем модов](#stop-user-installed-mods-from-loading)

14* **Узнать, что получат ваши пользователи, если вы ничего не измените**: [Узнать, что происходит по умолчанию](#know-what-happens-by-default)

15* **Оставить моды включенными с другими ограничениями**: [Выбрать, сколько разрешить](#choose-how-much-to-allow)

16 

17<Note>

18 Эти случаи рассматриваются на других страницах:

19 

20 * **Вы раньше не развертывали управляемые параметры**: начните с [Развертывание управляемых параметров](/docs/ru/managed-settings)

21 * **Вы хотите контролировать, какие плагины могут устанавливать пользователи**: см. [Управление плагинами для вашей организации](/docs/ru/plugins/org)

22</Note>

23 

24<h2 id="stop-user-installed-mods-from-loading">

25 Остановить загрузку установленных пользователем модов

26</h2>

27 

28Чтобы предотвратить загрузку каждого мода, который приносят ваши пользователи, установите параметр `allowManagedModsOnly` на [встроенной защите](#know-what-happens-by-default), политическом моде, который Claude Code загружает перед каждым модом, установленным пользователем. Параметр находится в управляемых параметрах под `pluginConfigs`, с ключом `cc-plugin-sec-default@builtin`:

29 

30```json managed-settings.json theme={null}

31{

32 "pluginConfigs": {

33 "cc-plugin-sec-default@builtin": {

34 "options": {

35 "allowManagedModsOnly": true

36 }

37 }

38 }

39}

40```

41 

42С установленным параметром в управляемых параметрах:

43 

44* **Ни один мод, который приносит пользователь, не загружается**: это охватывает мод в плагине, установленном пользователем, мод, загруженный с помощью `--plugin-dir`, и мод, [который Claude написал во время сеанса](/docs/ru/plugins/mods/create#ask-claude-for-a-mod)

45* **Моды вашей организации по-прежнему загружаются**: мод, который [считается модом вашей организации](#install-your-organizations-mods), не проверяется. Все остальные моды считаются модами пользователя и не загружаются. Это включает мод в плагине, который вы включаете из GitHub или другого удаленного маркетплейса, и мод, который ваша организация включает для своих членов на claude.ai. Если ни один не считается вашим, установленный мод не загружается.

46* **Пользователи не могут это отменить**: защита читает параметр только из управляемых параметров, поэтому та же запись в файле параметров пользователя, проекта или локальных параметров или в файле, переданном с помощью `--settings`, ничего не меняет

47* **Файл или политика MDM охватывают каждого поставщика**: когда вы доставляете параметр в виде файла или через MDM, он работает одинаково на Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry. Для доставки из консоли администратора claude.ai см. [Доступность платформы](/docs/ru/server-managed-settings#platform-availability)

48* **Другие настройки пользователей продолжают работать**: их [hooks в файлах параметров](/docs/ru/hooks), строки состояния и `/goal` не затронуты

49* **Встроенные моды продолжают работать**: моды, встроенные в Claude Code, такие как поддержка `AGENTS.md`, имеют [свой собственный переключатель](/docs/ru/plugins/mods/overview#mods-built-into-claude-code)

50 

51Чтобы подтвердить параметр на машине пользователя, запустите Claude Code там с `--plugin-dir` и путем к каталогу, который содержит мод, например `claude --plugin-dir ./first-mod`. Hooks мода не запускаются, и транскрипт и журнал отладки содержат [сообщение защиты](/docs/ru/plugins/mods/troubleshoot#messages-from-the-built-in-guard), которое называет мод и `allowManagedModsOnly`. Если мод загружается, см. [Проверить, что политика действует](/docs/ru/managed-settings#check-that-a-policy-is-in-force) и [правила, которые определяют, вступает ли параметр в силу](#set-options-on-the-built-in-guard).

52 

53Если вы установили `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` на `0` во время раннего доступа, замените его этим параметром. Claude Code v2.1.287 и более поздние версии игнорируют переменную при любом значении, поэтому `0` там оставляет моды включенными.

54 

55<h2 id="know-what-happens-by-default">

56 Узнать, что происходит по умолчанию

57</h2>

58 

59Без собственных параметров модов вот что получают ваши пользователи:

60 

61* **Моды включены.** Пользователь может установить плагин, содержащий мод из любого маркетплейса, который разрешают ваши параметры плагинов, или загрузить его из каталога с помощью `--plugin-dir`.

62* **Встроенная защита работает первой.** Claude Code загружает встроенный мод с именем `sec-default@builtin` перед каждым модом, установленным пользователем. Пользователи не могут его отключить. `/plugin` и журнал отладки указывают его как `cc-plugin-sec-default`. Защита загружается, когда верно одно из следующих условий:

63 

64 * На машине есть управляемые параметры

65 * Пользователь вошел в Claude Code с планом Team или Enterprise

66 

67 Пользователь, который аутентифицируется с помощью ключа API или через Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry, получает защиту только на машине с управляемыми параметрами.

68* **Защита защищает то, что вы управляете.** Мод пользователя не может изменить то, что получают или решают ваши управляемые hooks, системный запрос, ваши управляемые `CLAUDE.md` и другие управляемые инструкции, то, что любой мод читает как параметры, или инструменты и описания ваших управляемых MCP серверов.

69* **Все остальное разрешено.** Защита не добавляет других ограничений. Мод пользователя по-прежнему может читать и писать файлы, запускать процессы, делать сетевые запросы, переписывать вызовы инструментов и запросы, отказывать в вызове инструмента, одобрять вызов, который иначе потребовал бы подтверждения, и рисовать в интерфейсе, все с разрешениями этого пользователя.

70* **Правила отказа и ваши управляемые hooks имеют приоритет.** Где загружается защита, мод пользователя не может одобрить вызов, который правило `deny` отказывает, независимо от того, какой файл параметров содержит правило. Блокировка из hook `PreToolUse` в управляемых параметрах также окончательна. Оба применяются к вызовам инструментов Claude. Ни один не применяется к собственным вызовам мода [`$.fs` и `$.process`](/docs/ru/plugins/mods/api#reach-files-processes-and-the-network): с отказанным `Read(.env)`, мод все еще может прочитать этот файл с помощью `$.fs.read` или запустить программу, которая это делает. Чтобы ограничить эти вызовы, не позволяйте моду загружаться или подключите вызов в [политическом моде](#enforce-a-policy-with-a-mod-of-your-own).

71* **Другие проверки разрешений могут быть переопределены.** Мод пользователя, который одобряет вызовы инструментов, может одобрить вызов, который правило `ask` потребовало бы подтверждения, или который hook `PreToolUse` вне управляемых параметров заблокировал. В автоматическом режиме вызов, одобренный модом, выполняется без проверки классификатора.

72 

73Исходный код защиты является общедоступным в [каталоге `mods/sec-default` репозитория Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).

74 

75<h3 id="know-which-controls-still-apply">

76 Узнать, какие элементы управления по-прежнему применяются

77</h3>

78 

79Моды не заменяют элементы управления, которые у вас уже есть:

80 

81* **Hooks параметров продолжают работать.** Hooks команд, HTTP, запросов и агентов в файлах параметров и в `hooks/hooks.json` плагинов работают как раньше, наряду с модами. Ничего в них не устарело.

82* **Правила отказа имеют приоритет, где загружается защита.** Мод пользователя не может одобрить вызов, который правило `deny` отказывает, если вы не установите [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).

83* **Управляемые hooks работают первыми.** Hook `PreToolUse` в управляемых параметрах работает перед тем, как любой мод увидит вызов инструмента, и его блокировка окончательна. Если мод затем переписывает вызов, ваши управляемые hooks работают снова на переписанном вызове, поэтому блокировка по-прежнему применяется. Hooks `PreToolUse` из других файлов параметров и из плагинов работают после последнего мода, поэтому мод, который возвращает свой собственный результат вместо запуска инструмента, не позволяет им работать. См. [Порядок, в котором работают моды](/docs/ru/plugins/mods/events#the-order-mods-run-in).

84* **Политика сети охватывает `$.http.fetch`.** Если ваша организация отключает веб-выборку или отключен несущественный сетевой трафик для сеанса, Claude Code отказывает в сетевом запросе, который мод делает с помощью `$.http.fetch`. Политика не охватывает программу, которую мод запускает с помощью `$.process.run`. Эта программа достигает сети с собственным доступом пользователя.

85* **Элементы управления плагинами охватывают моды.** Мод — это плагин, поэтому [параметры, которые ограничивают то, что пользователи могут установить](/docs/ru/plugins/org#restrict-what-users-can-install), такие как `strictKnownMarketplaces`, определяют, может ли он быть установлен вообще.

86* **Моды не могут изменить запрос разрешения.** Мод может переделать большую часть интерфейса Claude Code, но не запрос разрешения, поэтому он не может изменить то, что показывает запрос. Мод все еще может одобрить или отказать в вызове инструмента перед появлением запроса, как описано в [Узнать, что происходит по умолчанию](#know-what-happens-by-default).

87* **Запросы доверия идут первыми.** В интерактивном сеансе в каталоге, который пользователь еще не доверил, ни один мод не загружается, пока они не ответят на запрос доверия.

88* **`--safe-mode` отключает установленные моды, включая ваши.** Запустите сеанс с `claude --safe-mode`, чтобы проверить, вызвал ли мод проблему.

89 

90Ни один из этих элементов управления не изолирует мод в песочнице. Мод, который вы разрешаете, работает как пользователь, с доступом пользователя к файлам, процессам и сети.

91 

92<h2 id="decide-whether-to-leave-mods-on">

93 Решить, оставить ли моды включенными

94</h2>

95 

96Мод может делать больше, чем другие части плагина, потому что он работает внутри Claude Code. Он видит каждый запрос и вызов инструмента, может их изменять и может разрешить или отказать в вызове инструмента перед появлением запроса разрешения.

97 

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

99 

100| Ваши элементы управления плагинами сегодня | Что пользователь может загрузить как мод |

101| :- | :- |

102| Нет | Мод из любого маркетплейса, из любого каталога с `--plugin-dir` или который Claude пишет во время сеанса |

103| Список разрешений маркетплейса | Мод из маркетплейсов, которые вы разрешаете, или из любого каталога с `--plugin-dir`. Мод, который Claude пишет во время сеанса, загружается только когда список разрешений [включает `skills-dir`](/docs/ru/plugins/org#keep-skills-directory-plugins-loading). |

104| Список разрешений маркетплейса и `disableSideloadFlags` | Мод из маркетплейсов, которые вы разрешаете |

105 

106[Управление плагинами для вашей организации](/docs/ru/plugins/org) перечисляет каждый способ загрузки плагина и параметр, который управляет каждым.

107 

108Чтобы проверить моды в маркетплейсе перед тем, как ваши пользователи их установят, см. [Просмотреть возможности мода](#review-what-a-mod-can-do). Чтобы исключить моды пользователей, пока вы это делаете, см. [Остановить загрузку установленных пользователем модов](#stop-user-installed-mods-from-loading).

109 

110<h3 id="review-what-a-mod-can-do">

111 Просмотреть возможности мода

112</h3>

113 

114Вы можете увидеть, что может делать мод, не запуская его. В вашей оболочке запустите `claude plugin validate` в каталоге плагина:

115 

116```bash theme={null}

117claude plugin validate ./some-mod

118```

119 

120Две строки в выводе описывают код мода:

121 

122```text theme={null}

123 ❯ ./register.js hooks: session.start, tool.call, ui.render{component=Pane}

124 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open

125```

126 

127Строка `hooks:` перечисляет события, которые получает мод. Строка `calls:` перечисляет методы API модов, которые вызывает его код. [API модов](/docs/ru/plugins/mods/api), написанный `$` в коде мода, — это то, как мод достигает файлов, процессов и сети. Claude Code отказывается загружать мод, который использует API модов способом, который эта команда не может прочитать.

128 

129Посмотрите на строку `calls:` для этих:

130 

131| Вызов | Что это означает |

132| :- | :- |

133| `$.fs.read`, `$.fs.write` | Читает или пишет файлы в любом месте, где может пользователь |

134| `$.process.run`, `$.process.spawn` | Запускает программы как пользователь |

135| `$.http.fetch` | Делает сетевые запросы |

136| `$.env.get`, `$.settings.read` | Читает переменные окружения и параметры, которые могут содержать ключи API. Строка `env reads:` в выводе называет каждую переменную. |

137| `$.env.set` | Устанавливает переменную окружения для Claude Code и для каждой команды и MCP сервера, который он запускает впоследствии, что может изменить то, что эти программы запускают. Строка `env writes:` называет каждую переменную. |

138| `$.mcp.call` | Вызывает инструмент на подключенном MCP сервере в соответствии с правилами разрешений сеанса |

139| `$.model.complete` | Использует план пользователя или ключ API для вызовов модели |

140| `$.prompt.submit` | Отправляет запрос и может отправить его как собственные слова пользователя |

141| `$.session.send` | Отправляет сообщение, которое читает Claude другого сеанса или подагента |

142 

143В строке `hooks:`, [`tool.call`](/docs/ru/plugins/mods/reference#tools) и [`prompt.submit`](/docs/ru/plugins/mods/reference#prompts-and-what-claude-reads) означают, что мод видит каждый вызов инструмента и каждый запрос и может их изменять. [`session.append`](/docs/ru/plugins/mods/reference#session) означает, что мод может переписать каждую строку разговора перед ее сохранением. [`ui.render{component=AskUserQuestion}`](/docs/ru/plugins/mods/interface#change-what-claude-code-already-draws) означает, что мод может переделать диалог, который Claude использует для вопроса пользователю. `tool.check` означает, что мод может одобрить или отказать в вызове инструмента перед появлением запроса разрешения. [Узнать, что происходит по умолчанию](#know-what-happens-by-default) перечисляет, какие из ваших правил и hooks имеют приоритет над его ответом.

144 

145<h2 id="choose-how-much-to-allow">

146 Выбрать, сколько разрешить

147</h2>

148 

149Политики модов варьируются от отсутствия установленных модов вообще до любого мода, который выбирает пользователь, с вашим собственным модом, проверяющим остальные, и каждая из них — это несколько управляемых параметров. Найдите политику, которую вы хотите, в первом столбце и установите то, что называет второй столбец. [Развертывание управляемых параметров](/docs/ru/managed-settings) охватывает, где находятся управляемые параметры.

150 

151| Что вы хотите | Параметры |

152| :- | :- |

153| Нет установленных модов, с hooks без изменений | Установите [`allowManagedModsOnly`](#set-options-on-the-built-in-guard) и не развертывайте моды вашей организации |

154| Нет установленных модов и вообще нет hooks, включая ваши управляемые hooks | Установите `disableAllHooks` на `true` |

155| Только моды вашей организации | Установите параметр [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading) защиты и [установите ваши моды](#install-your-organizations-mods), чтобы они считались вашими |

156| Любой мод из маркетплейсов, которые вы одобряете | Сохраните ваши [ограничения маркетплейса](/docs/ru/plugins/org#restrict-what-users-can-install) и установите `disableSideloadFlags` на `true` |

157| Любой мод, с вашим собственным модом, проверяющим остальные | [Установите ваш мод](#install-your-organizations-mods) и перечислите его с `sec-default@builtin` в `prependPlugins` |

158 

159Что делает каждый параметр:

160 

161* **`allowManagedModsOnly`**: параметр встроенной защиты. Моды пользователей не загружаются, и их hooks параметров, строки состояния и `/goal` продолжают работать. [Остановить загрузку установленных пользователем модов](#stop-user-installed-mods-from-loading) перечисляет, что он охватывает.

162* **`allowManagedHooksOnly`**: более широкий параметр. Загружаются только [моды вашей организации](#install-your-organizations-mods) и моды, встроенные в Claude Code. Мод, который пользователь установил сам, не загружается. Параметр также блокирует hooks в собственных файлах параметров пользователей. Прочитайте [Что работает под `allowManagedHooksOnly`](/docs/ru/settings-reference#what-runs-under-allowmanagedhooksonly) перед тем, как установить его.

163* **`disableAllHooks`**: самый широкий параметр. В управляемых параметрах он останавливает моды в каждом установленном плагине, включая ваши, и отключает каждый hook в файлах параметров, поэтому hook `PreToolUse` в ваших управляемых параметрах больше ничего не блокирует. Пользовательские строки состояния и `/goal` также перестают работать. Прочитайте [`disableAllHooks`](/docs/ru/settings-reference#disableallhooks) перед тем, как установить его.

164* **`disableSideloadFlags`**: отклоняет `--plugin-dir` и `--plugin-url` при запуске, поэтому никто не загружает мод из каталога и не позволяет модам, которые Claude пишет во время сеанса, загружаться. Параметр также отклоняет `--agents` и `--mcp-config`. Прочитайте [`disableSideloadFlags`](/docs/ru/settings-reference#disablesideloadflags) перед тем, как установить его.

165 

166Моды, встроенные в Claude Code, такие как поддержка `AGENTS.md`, не затронуты этими параметрами. Каждый имеет [свой собственный переключатель](/docs/ru/plugins/mods/overview#mods-built-into-claude-code).

167 

168Пользователь, чей мод не загрузился, найдет причину в своем журнале отладки. [Сообщения об отказе](/docs/ru/plugins/mods/troubleshoot#refusal-messages) перечисляет строки для `allowManagedHooksOnly` и `disableAllHooks`, и [Сообщения от встроенной защиты](/docs/ru/plugins/mods/troubleshoot#messages-from-the-built-in-guard) содержит строку для `allowManagedModsOnly`.

169 

170<h3 id="set-options-on-the-built-in-guard">

171 Установить параметры на встроенной защите

172</h3>

173 

174Встроенная защита принимает два параметра. Установите их в управляемых параметрах под `pluginConfigs`, с ключом `cc-plugin-sec-default@builtin`, как это делает пример в [Остановить загрузку установленных пользователем модов](#stop-user-installed-mods-from-loading).

175 

176Таблица показывает, что получают ваши пользователи с каждым параметром не установленным и установленным на `true`:

177 

178| Параметр | Не установлен | `true` |

179| :- | :- | :- |

180| `allowManagedModsOnly` | Моды пользователей загружаются | Загружаются только [моды вашей организации](#install-your-organizations-mods) и моды, встроенные в Claude Code. Claude Code отказывает каждому другому моду, включая мод, установленный пользователем или названный с помощью `--plugin-dir`. |

181| `allowModsToOverrideDenyRules` | Правила отказа имеют приоритет над модами пользователей | Мод пользователя, который одобряет вызовы инструментов, может одобрить вызов, который правило `deny` отказывает |

182 

183Эти правила определяют, вступает ли параметр в силу:

184 

185* **Id имеет одно написание здесь**: Claude Code читает параметры только под `cc-plugin-sec-default@builtin`. `prependPlugins` также принимает `sec-default@builtin`, и `pluginConfigs` — нет.

186* **Считаются только управляемые параметры**: та же запись в файле параметров пользователя, проекта или локальных параметров или в файле, переданном с помощью `--settings`, ни устанавливает параметр, ни ослабляет его

187* **Защита должна загружаться**: если вы установите `prependPlugins`, [назовите защиту в списке](#install-your-organizations-mods). Где защита не загружается, ни один параметр не применяется.

188* **Защита отказывает закрыто**: если защита не может прочитать управляемые параметры, она отказывает каждому моду пользователя при загрузке. Если она не может проверить правила отказа для вызова, который одобрил мод пользователя, она отказывает вызову.

189 

190[Сообщения от встроенной защиты](/docs/ru/plugins/mods/troubleshoot#messages-from-the-built-in-guard) — это то, что видят ваши пользователи, когда применяется любой параметр.

191 

192<h2 id="run-your-organization’s-own-mods">

193 Развертывание собственных модов вашей организации

194</h2>

195 

196Вы можете развертывать собственные моды для каждого пользователя, выбирать, где они выполняются относительно модов пользователей, и использовать один из них для обеспечения политики.

197 

198<h3 id="install-your-organizations-mods">

199 Установка модов вашей организации и установка порядка

200</h3>

201 

202Моды вашей организации загружаются там, где не загружаются моды пользователей, и могут выполняться перед ними, поэтому Claude Code должен иметь возможность определить, что мод поступил от вас. Он рассматривает мод как принадлежащий вашей организации только в том случае, если все следующие условия верны:

203 

204* Управляемый `enabledPlugins` устанавливает плагин мода в `true`

205* Управляемые параметры называют [marketplace](/docs/ru/plugins/create-marketplace) плагина как каталог на машине пользователя по абсолютному пути. Запись `extraKnownMarketplaces` делает это и также регистрирует marketplace для пользователя.

206* Marketplace указывает плагин по относительному пути, поэтому Claude Code [загружает его на месте](/docs/ru/plugins/loading#in-place-and-copied-plugins) из этого каталога

207 

208Чтобы выполнить эти условия, скопируйте каталог marketplace на одинаковый путь на каждой машине с помощью управления устройствами. Сделайте каталог и каждый каталог выше него доступными для записи только администратором, как и файл управляемых параметров. Любой, кто может писать туда, может переписать ваш мод. Управляемые параметры, которые вы доставляете из консоли администратора claude.ai, могут содержать ключи, но они не могут поместить каталог на машину.

209 

210Каталог содержит манифест marketplace и плагин:

211 

212```text theme={null}

213/opt/acme/claude-plugins/

214├── .claude-plugin/

215│ └── marketplace.json

216└── plugins/

217 └── acme-guard/

218 ├── .claude-plugin/

219 │ └── plugin.json

220 └── hooks/

221 ├── hooks.json

222 └── register.js

223```

224 

225Манифест указывает плагин по его пути относительно этого каталога:

226 

227```json /opt/acme/claude-plugins/.claude-plugin/marketplace.json theme={null}

228{

229 "name": "acme-tools",

230 "owner": { "name": "Acme" },

231 "plugins": [

232 { "name": "acme-guard", "source": "./plugins/acme-guard", "description": "Acme policy mod" }

233 ]

234}

235```

236 

237Плагин, который Claude Code копирует в свой кэш, считается плагином пользователя, даже если управляемый `enabledPlugins` его включает. Это охватывает каждый плагин из источника GitHub, git, URL или npm. Его мод выполняется среди модов пользователей, `prependPlugins` и `appendPlugins` его пропускают, и он не загружается под `allowManagedModsOnly` или `allowManagedHooksOnly`. В журнале отладки пользователя есть строка, которая начинается с идентификатора плагина и `is enabled by managed settings, but`.

238 

239Claude Code вызывает событие каждый раз, когда он собирается действовать, например запустить инструмент, и передает его каждому моду по очереди. Мод, который считается вашим, [выполняется перед модами пользователей](/docs/ru/plugins/mods/events#the-order-mods-run-in) даже если вы его нигде не указываете. Чтобы установить его место, укажите его идентификатор в одном из двух параметров. Идентификатор — это имя плагина, `@` и имя marketplace, например `acme-guard@acme-tools`.

240 

241* **`prependPlugins`**: ваш мод видит каждое событие перед любым модом пользователя и каждый результат после. Он может изменить событие, отказать в нем или пропустить моды пользователей.

242* **`appendPlugins`**: ваш мод выполняется после каждого мода пользователя, поэтому он видит только события, которые эти моды передают, в форме, в которой они их передают

243 

244Этот пример объявляет marketplace `acme-tools` в `/opt/acme/claude-plugins`, включает `acme-guard` из него и запускает этот мод первым, со встроенной защитой после него:

245 

246```json managed-settings.json theme={null}

247{

248 "extraKnownMarketplaces": {

249 "acme-tools": {

250 "source": { "source": "directory", "path": "/opt/acme/claude-plugins" }

251 }

252 },

253 "enabledPlugins": { "acme-guard@acme-tools": true },

254 "prependPlugins": ["acme-guard@acme-tools", "sec-default@builtin"]

255}

256```

257 

258Каждый ключ выполняет одну работу:

259 

260* **`extraKnownMarketplaces`**: называет каталог, который содержит marketplace `acme-tools`. `path` — это абсолютный путь каталога, который содержит `.claude-plugin/marketplace.json`.

261* **`enabledPlugins`**: включает `acme-guard` для каждого пользователя, который получает эти управляемые параметры

262* **`prependPlugins`**: ставит `acme-guard` первым и встроенную защиту второй, обе впереди любого мода, который устанавливает пользователь. Claude Code следует порядку, который вы указываете.

263 

264Чтобы подтвердить, что машина пользователя получила параметры, см. [Проверка того, что политика действует](/docs/ru/managed-settings#check-that-a-policy-is-in-force).

265 

266Чтобы подтвердить, где выполняется мод, запустите сеанс на этой машине с `claude --debug` и найдите в [журнале отладки](/docs/ru/plugins/mods/troubleshoot#read-the-debug-log) идентификатор мода:

267 

268* **`hooks module acme-guard@acme-tools loaded`, с `tier prepend`**: мод считается принадлежащим вашей организации и выполняется первым

269* **Та же строка с `tier user`**: Claude Code рассматривает его как мод пользователя. Вторая строка, `prependPlugins names acme-guard@acme-tools, which is not an enabled managed plugin with a hooks module; skipped`, говорит, что список его пропустил.

270 

271Эти правила определяют, какие идентификаторы в двух списках вступают в силу:

272 

273* **Список заменяет значение по умолчанию**: когда вы устанавливаете `prependPlugins` в управляемых параметрах, назовите `sec-default@builtin` в нем, чтобы сохранить встроенную защиту. Защита встроена и не требует записи `enabledPlugins`.

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

275* **Репозитории не могут их устанавливать**: Claude Code читает оба параметра из управляемых параметров и никогда из файла параметров репозитория. Пользователь может установить их в `~/.claude/settings.json`, чтобы упорядочить только свои моды на машине без управляемых параметров, и только если они не вошли в систему с планом Team или Enterprise. В любом другом месте Claude Code игнорирует оба ключа в параметрах пользователя. Список там ни не добавляет, ни не удаляет встроенную защиту.

276 

277<h3 id="enforce-a-policy-with-a-mod-of-your-own">

278 Обеспечение политики с помощью собственного мода

279</h3>

280 

281Чтобы не допустить загрузку любого мода пользователя, вам не нужен собственный мод. Установите [`allowManagedModsOnly`](#stop-user-installed-mods-from-loading). Напишите мод политики, когда вы хотите допустить некоторые моды пользователей и отказать в других, или чтобы записать, что делают моды.

282 

283Каждый раз, когда другой мод собирается загрузиться, ваш мод получает список, который печатает `claude plugin validate`, в событии с именем [`plugin.register`](/docs/ru/plugins/mods/reference#other-mods). Мод в `prependPlugins` может прочитать этот список и отказать в загрузке мода. Он также может [перехватить любой вызов API модов по имени](/docs/ru/plugins/mods/api#reach-files-processes-and-the-network), чтобы записать или отказать в этом вызове для каждого другого мода. Имя — это метод без `$.`, поэтому перехват на `fs.write` видит каждый вызов `$.fs.write`.

284 

285Этот мод политики отказывает любому моду пользователя, чей собственный код вызывает `$.process.run` или `$.process.spawn`. Он также ведет журнал аудита, записывая каждый вызов инструмента и каждый файл, который мод записывает, в журнал отладки. Поскольку он выполняется первым, журнал записывает то, что было запрошено, перед тем как любой мод пользователя его изменит. Сохраните его как `acme-guard/hooks/register.js`:

286 

287```javascript acme-guard/hooks/register.js theme={null}

288// The methods no user's mod may call, each spelled namespace.method

289const BLOCKED_CALLS = ['process.run', 'process.spawn']

290 

291export function register(on) {

292 // Runs each time another mod is about to load

293 on('plugin.register', async ($, e, next) => {

294 // Keep the calls in that mod's code that are on the blocked list

295 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))

296 if (e.tier === 'user' && blocked.length > 0) {

297 // Returning refuse keeps the mod from loading, and the text is the reason

298 return { refuse: 'Acme policy: mods may not call ' + blocked.join(', ') }

299 }

300 // Let every other mod load

301 return next(e)

302 })

303 

304 // Record each tool call, then let it go ahead unchanged

305 on('tool.call', async ($, e, next) => {

306 $.ui.log('audit tool.call ' + e.tool, { to: 'debug' })

307 return next(e)

308 })

309 

310 // Record which mod wrote a file, then the path, quoted because the mod chose it

311 on('fs.write', async ($, e, next) => {

312 $.ui.log('audit fs.write by ' + next.origin.plugin + ' ' + JSON.stringify(e.path), { to: 'debug' })

313 return next(e)

314 })

315}

316```

317 

318Файл регистрирует три перехвата:

319 

320* **`plugin.register`**: решает, загружается ли другой мод. Он отказывает моду пользователя, который вызывает заблокированный метод, и передает каждый другой мод дальше.

321* **`tool.call`**: записывает строку, такую как `audit tool.call Bash`, в журнал отладки для каждого вызова инструмента и ничего не изменяет

322* **`fs.write`**: записывает строку, такую как `audit fs.write by reader "/tmp/notes.md"`, для каждого вызова `$.fs.write`, который делает другой мод, и ничего не изменяет. Имя мода идет первым, а путь заключен в кавычки, поэтому путь, который выбирает мод, не может выдать себя за другое поле строки.

323 

324Перехват `plugin.register` читает два поля события:

325 

326* **`e.tier`**: где будет выполняться мод, один из `prepend`, `user`, `append` или `builtin`. Каждый мод, который устанавливает человек, — это `user`.

327* **`e.uses.calls`**: методы API модов, которые вызывает мод, каждый написанный как `namespace.method`, например `process.run`, без `$.`, который печатает `claude plugin validate`

328 

329Когда пользователь устанавливает мод, который вызывает `$.process.run`, мод не загружается, и в его журнале отладки есть строка, которая заканчивается на `refused by acme-guard:` и ваша причина. Отказ также достигает стенограммы в [сеансе, который горячо перезагружает каталог плагина](/docs/ru/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing). Чтобы заблокировать вызов без отказа всему моду, верните `{ deny: 'your reason' }` из перехвата на имя этого вызова.

330 

331Чтобы отправить строки аудита куда-то, кроме журнала отладки, вызовите `$.http.fetch` из тех же перехватов.

332 

333Сеанс может выполняться без вашего мода. Если рабочий поток, который запускает установленные моды, [падает три раза](/docs/ru/plugins/mods/troubleshoot#mods-that-run-in-the-hooks-worker-are-off-for-this-session), Claude Code выгружает каждый мод, который не встроен, включая ваш, пока пользователь не запустит `/reload-plugins` или не начнет новый сеанс. И пользователь, который запускает Claude Code с `--safe-mode`, выполняется без установленных модов, включая ваш.

334 

335[Создание мода](/docs/ru/plugins/mods/create) охватывает файлы, которые нужны моду. [Тестирование мода, который судит другие моды](/docs/ru/plugins/mods/test#test-a-mod-that-judges-other-mods) содержит файл теста для этого мода политики.

336 

337<h4 id="refuse-mods-when-your-check-fails">

338 Отказ в загрузке модов, когда ваша проверка не удается

339</h4>

340 

341Если ваш перехват `plugin.register` выбросит исключение или превысит лимит времени, Claude Code пропускает перехват, поэтому проверка не удается открыто и мод, который он проверял, загружается. Чтобы не удалось закрыто и отказать в загрузке модов пользователей, переместите проверку в именованную функцию и добавьте обработчик `.catch`, который возвращает отказ. Эта версия файла показывает только перехват `plugin.register`, поэтому сохраните два перехвата аудита из первой версии в `register`:

342 

343```javascript acme-guard/hooks/register.js theme={null}

344const BLOCKED_CALLS = ['process.run', 'process.spawn']

345 

346// The same check as before, moved into a function of its own

347async function checkMod($, e, next) {

348 const blocked = e.uses.calls.filter((call) => BLOCKED_CALLS.includes(call))

349 if (e.tier === 'user' && blocked.length > 0) {

350 return { refuse: 'Acme policy: mods may not call ' + blocked.join(', ') }

351 }

352 return next(e)

353}

354 

355export function register(on) {

356 // The handler runs only when checkMod throws or runs past its time limit

357 on('plugin.register', checkMod).catch(async ($, e, next) => {

358 // Let your organization's mods and built-in mods load

359 if (e.tier !== 'user') return next(e)

360 // Refuse the user's mod that couldn't be checked

361 return { refuse: 'Acme policy check failed, so this mod was not loaded' }

362 })

363}

364```

365 

366С обработчиком на месте мод, который проверялся, когда проверка выбросила исключение или истекло время, не загружается, и строка отказа содержит вторую причину, как в `refused by acme-guard: Acme policy check failed, so this mod was not loaded`. Обработчик передает каждый мод вне уровня `user` к `next(e)`, поэтому неудачная проверка не останавливает моды, которые указывает ваша организация. [Обработка перехвата, который не удается](/docs/ru/plugins/mods/events#handle-a-hook-that-fails) охватывает `.catch` для других событий.

367 

368<h2 id="next-steps">

369 Следующие шаги

370</h2>

371 

372* [Безопасность плагинов](/docs/ru/plugins/security): что может делать любой плагин на машине пользователя и как просмотреть один перед его установкой

373* [Обзор модов](/docs/ru/plugins/mods/overview): что такое мод и как он сравнивается с hooks, skills и MCP серверами

374* [Порядок, в котором работают моды](/docs/ru/plugins/mods/events#the-order-mods-run-in): как `prependPlugins` и `appendPlugins` подходят к модам пользователей

375* [Параметры и переменные окружения](/docs/ru/plugins/mods/reference#settings-and-environment-variables): каждый параметр, названный на этой странице, в одной таблице

plugins/mods/api.md +218 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Использование mods API

6 

7> Вызывайте mods API из Claude Code mod для добавления команд и инструментов, вызова модели, запуска работы по таймеру, отправки сообщений другим сеансам и доступа к файлам и сети.

8 

9mods API — это набор методов, которые mod вызывает для выполнения действий: добавления команд и инструментов, вызова модели, запуска работы между событиями и доступа к файловой системе, процессам и сети. Каждый hook получает её в качестве первого аргумента, `$`, с методами, сгруппированными в пространства имён, такие как `$.ui` и `$.fs`. [События](/docs/ru/plugins/mods/events) определяют, когда выполняется hook, а mods API — это то, что hook вызывает после этого.

10 

11Создайте свой [первый mod](/docs/ru/plugins/mods/create) перед тем, как начать здесь. Для каждого метода см. [методы mods API](/docs/ru/plugins/mods/reference#mods-api-methods) или прочитайте [типы для вашей сборки](/docs/ru/plugins/mods/create#get-the-types-for-your-build).

12 

13<h2 id="add-a-command-or-a-tool">

14 Добавление команды или инструмента

15</h2>

16 

17Mod может добавить команду для запуска пользователем и инструмент для вызова Claude. Зарегистрируйте оба в hook [`session.start`](/docs/ru/plugins/mods/reference#session). Claude Code ждёт этого hook перед первым запросом, поэтому то, что вы регистрируете, доступно с первого хода.

18 

19<h3 id="add-a-command">

20 Добавление команды

21</h3>

22 

23Команда предназначена для пользователя. Зарегистрируйте её, затем обработайте [`command.run`](/docs/ru/plugins/mods/reference#commands-and-configuration) для её имени. Этот пример добавляет команду `/standup`, которая принимает необязательное количество дней:

24 

25```javascript theme={null}

26on('session.start', async ($, e, next) => {

27 // Add /standup to the command list, with the description the user sees there

28 await $.command.register({ name: 'standup', description: 'Summarize what changed today', argumentHint: '[days]' })

29 return next(e)

30})

31 

32// The matcher limits the hook to /standup, so other commands don't reach it

33on('command.run', { command: 'standup' }, async ($, e) => {

34 // e.args is the text typed after the command name, or an empty string

35 return { text: 'Summary for the last ' + (e.args || '1') + ' day(s): ...' }

36})

37```

38 

39После запуска сеанса `/standup` появляется с его описанием в списке, который вы видите при вводе `/`. `argumentHint` отображается в подсказке после ввода команды и пробела, как в `/standup [days]`. Когда вы запускаете `/standup 3`, второй hook возвращает `Summary for the last 3 day(s): ...`, и стенограмма показывает этот текст после имени плагина. Hook никогда не вызывает `next`, потому что команда не имеет поведения, кроме вашего.

40 

41`text`, который вы возвращаете, печатается в стенограмме и Claude его читает. Чтобы ничего не печатать, как команда, которая только открывает [pane](/docs/ru/plugins/mods/interface#pick-where-to-draw), верните `{}`. Чтобы позволить команде выполняться, пока Claude работает, добавьте `immediate: true` к регистрации.

42 

43Выберите имя, которое не использует ни одна встроенная команда. Введите `/` в сеансе, чтобы увидеть их. `$.command.register` выбрасывает исключение для занятого имени с сообщением, таким как `"/focus" refused: it is the built-in /focus"`. Hook, который выбрасывает исключение, пропускается, поэтому остальная часть вашего hook `session.start` тоже не выполняется. Регистрируйте команды в последнюю очередь в этом hook или оберните вызов в `try` и `catch`.

44 

45<h3 id="add-a-tool">

46 Добавление инструмента

47</h3>

48 

49Инструмент предназначен для Claude. Зарегистрируйте его с именем, описанием, которое читает Claude, и JSON Schema для его входных данных. Claude видит его под более длинным именем, состоящим из `mcp__`, имени вашего плагина, двух подчёркиваний и имени, которое вы зарегистрировали. Вы обрабатываете его вызовы в hook [`tool.call`](/docs/ru/plugins/mods/events#guard-or-change-a-tool-call), отфильтрованном по этому полному имени. Этот пример из плагина с именем `my-mod` регистрирует `ticket`, поэтому полное имя — `mcp__my-mod__ticket`. Он даёт Claude инструмент, который ищет билет в трекере проблем:

50 

51```javascript theme={null}

52on('session.start', async ($, e, next) => {

53 await $.tool.register({

54 name: 'ticket',

55 // Claude decides when to call the tool from this description

56 description: 'Look up a ticket by its id and return its title and status',

57 // The arguments Claude has to send: one required string named id

58 inputSchema: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] },

59 })

60 return next(e)

61})

62 

63// The full tool name is mcp__, the plugin's name, and the registered name

64on('tool.call', { tool: 'mcp__my-mod__ticket' }, async ($, e) => {

65 // The tool's arguments are fields of e, so the id is e.id

66 const response = await $.http.fetch('https://tickets.example.com/api/' + encodeURIComponent(e.id))

67 // Return a result either way, so Claude learns when the lookup failed

68 return { result: response.ok ? response.text : 'Lookup failed with status ' + response.status }

69})

70```

71 

72Когда вы спрашиваете о билете, Claude может вызвать `mcp__my-mod__ticket` с его id. Второй hook получает билет и возвращает тело ответа, которое Claude читает как результат инструмента. Когда сервер отвечает с кодом ошибки, Claude читает `Lookup failed with status` и номер.

73 

74<h2 id="call-a-model">

75 Вызов модели

76</h2>

77 

78Mod может задать модели вопрос самостоятельно, вне разговора, для небольшой работы, такой как сортировка или суммирование текста. `$.model.complete` отправляет один запрос модели с учётными данными вашего сеанса и разрешается в ответ. У неё нет истории разговора.

79 

80Этот hook отвечает на команду `/triage`, [зарегистрированную как команда](#add-a-command), попросив небольшую модель пометить текст, введённый после неё:

81 

82```javascript theme={null}

83on('command.run', { command: 'triage' }, async ($, e) => {

84 const r = await $.model.complete({

85 model: 'haiku',

86 // The system prompt sets the job, and the prompt carries the text to label

87 system: 'Reply with one word: bug, feature, or question.',

88 prompt: e.args,

89 // One word needs few tokens, and the call gives up after 15 seconds

90 maxTokens: 20,

91 timeoutMs: 15000,

92 })

93 // r.text exists only when the model answered, so check r.isAnswered first

94 const label = r.isAnswered ? r.text.trim() : 'unknown'

95 return { text: 'Label: ' + label }

96})

97```

98 

99Когда вы запускаете `/triage the export button does nothing`, mod отправляет этот текст модели и печатает её ответ, например `Label: bug`. Разговор Claude не является частью запроса. Когда модель не отвечает, метка — `unknown`.

100 

101Сбой Claude API не отклоняет вызов, поэтому проверьте `r.isAnswered` и прочитайте `r.reason`, когда это `false`. Вызов отклоняется только для запроса, который Claude Code не отправит, например для модели, которую блокирует ваша организация. [Типы для вашей сборки](/docs/ru/plugins/mods/create#get-the-types-for-your-build) перечисляют другие параметры, такие как `effort`, а [ограничения](/docs/ru/plugins/mods/reference#limits) дают значение по умолчанию `maxTokens`.

102 

103`$.model.fork({ prompt })` вместо этого задаёт один вопрос по текущему разговору с той же моделью и системным запросом, поэтому Claude API обслуживает большую часть из кэша запросов.

104 

105Эти вызовы используют план пользователя или ключ API.

106 

107<h2 id="run-work-in-the-background">

108 Запуск работы в фоне

109</h2>

110 

111Работа, которая переживает одно событие, например проверка чего-либо раз в минуту, выполняется на таймере, который вы запускаете из `session.start`. Сам hook выполняется для одного события и имеет ограничение по времени в 10 секунд собственного времени выполнения. Время, потраченное на ожидание `next` или вызова mods API, не учитывается, кроме `$.clock.sleep`. `$.clock.every` и `$.clock.after` заменяют `setInterval` и `setTimeout`, с задержкой в миллисекундах в первую очередь: `$.clock.after(5000, fn)` вызывает `fn` один раз через пять секунд. Каждый возвращает таймер с методом `cancel()`, и `await $.clock.now()` даёт время в миллисекундах.

112 

113Этот hook ищет проверки pull request один раз в минуту и показывает результат под запросом. `summarize` — это функция вашего собственного, которая превращает вывод JSON команды в несколько слов:

114 

115```javascript theme={null}

116on('session.start', async ($, e, next) => {

117 // Call the function every 60,000 milliseconds, starting one minute from now

118 $.clock.every(60_000, async () => {

119 const status = await $.process.run(['gh', 'pr', 'checks', '--json', 'state'])

120 // Replace the line under the prompt with the latest summary

121 $.ui.status('checks: ' + summarize(status.stdout))

122 })

123 // Return without waiting for the timer, so the session starts right away

124 return next(e)

125})

126```

127 

128Сеанс начинается как обычно. Через минуту под запросом появляется строка с `⚠`, именем mod и затем `checks:` и вашей сводкой. Она заменяется один раз в минуту после этого. Обратный вызов таймера выполняется вне любого события, поэтому он продолжает работать между ходами и не запускает один. Если обратный вызов выбрасывает исключение, ошибка переходит в [журнал отладки](/docs/ru/plugins/mods/troubleshoot#read-the-debug-log) и таймер снова выполняется в следующем интервале.

129 

130<h3 id="show-something-without-starting-a-turn">

131 Показать что-то без запуска хода

132</h3>

133 

134Фоновая работа может показать пользователю что-то без запуска хода. Каждый из этих вызовов помещает текст в другое место:

135 

136| Вызов | Что видит пользователь |

137| :- | :- |

138| `$.ui.status(text)` | Одна строка под запросом, которая остаётся, пока вы её не измените. Она начинается с `⚠` и имени mod, как в `⚠ my-mod: checks: 3 passing`. |

139| `$.ui.toast(text)` | Небольшой прямоугольник в верхнем правом углу с именем mod над текстом, который исчезает через несколько секунд |

140| `$.ui.log(text)` | Тусклая строка в стенограмме, которую Claude не читает. Она начинается с `●` и имени mod, как в `● my-mod: build finished`. |

141 

142<h3 id="start-a-turn-from-a-background-job">

143 Запуск хода из фоновой работы

144</h3>

145 

146Когда фоновая работа находит что-то, что требует внимания Claude, она может запустить ход, отправив запрос с `$.prompt.submit({ text })`. Claude читает текст после предложения, которое называет ваш mod как отправителя. Чтобы отправить его как собственные слова пользователя, без этого предложения, добавьте `asUser: true`. Вызов ждёт, пока сеанс будет неактивным, а затем запускает новый ход. Он разрешается при запуске этого хода, поэтому не `await` его в обработчике, который выполняется, пока Claude работает.

147 

148<h3 id="stop-background-work">

149 Остановка фоновой работы

150</h3>

151 

152Фоновая работа останавливается двумя способами. Таймеры останавливаются при перезагрузке модуля. Для долгоживущей работы внутри hook, [`next.signal`](/docs/ru/plugins/mods/reference#the-hook-function) — это `AbortSignal`, который прерывается, когда событие, которое обрабатывает ваш hook, отменяется, например когда пользователь прерывает, поэтому передайте его чему-либо долгоживущему.

153 

154<h2 id="send-and-receive-messages-between-sessions">

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

156</h2>

157 

158Mod может отправить простое текстовое сообщение другому вашему сеансу или одному из подагентов этого сеанса и наблюдать сообщения, которые приходят и уходят. `$.session.send({ to, text })` отправляет один, такую же доставку, которую делает инструмент SendMessage. `to` — это `{ sessionId }` для сеанса, `{ agentId }` для подагента из `$.agent.list()` или адрес строки, из которого пришло полученное сообщение. Вызов разрешается после того, как сообщение поставлено в очередь, с `{ isDelivered: true }`. Когда ничего не было доставлено, он разрешается с `{ isDelivered: false, reason }`, и `reason` говорит почему.

159 

160Этот hook отвечает на команду `/ping`, [зарегистрированную как команда](#add-a-command), попросив сеанс, чей id вы вводите после неё, получить статус:

161 

162```javascript theme={null}

163on('command.run', { command: 'ping' }, async ($, e) => {

164 // e.args is the session id typed after /ping

165 const sent = await $.session.send({ to: { sessionId: e.args }, text: 'Status? One line.' })

166 // The call resolves either way, so check isDelivered to learn what happened

167 if (!sent.isDelivered) $.ui.toast('Not delivered: ' + sent.reason)

168 // An empty result prints nothing in this session's transcript

169 return {}

170})

171```

172 

173Когда сообщение поставлено в очередь, в вашем сеансе ничего не появляется, и Claude другого сеанса читает `Status? One line.` Когда ничего не было доставлено, небольшой прямоугольник в верхнем правом углу даёт причину и исчезает через несколько секунд.

174 

175Два события позволяют mod наблюдать сообщения. Верните `next(e)` из обоих, чтобы пропустить каждое сообщение без изменений:

176 

177| Событие | Срабатывает когда | Полезные поля |

178| :- | :- | :- |

179| `session.receive` | Сообщение поступает для этого сеанса, перед тем как Claude его прочитает | `e.text` и `e.origin.kind`, такие как `peer` или `peer-send-message` для другого сеанса или агента, `task-notification` или `scheduled-trigger`. Верните `{ consumed: reason }`, чтобы помешать Claude. |

180| `session.send` | Сообщение вот-вот уйдёт, из инструмента SendMessage или mod | `e.to`, `e.text` и `e.origin.kind`, который является `model` или `plugin` |

181 

182Сеанс, установленный на [отказ входящих сообщений](/docs/ru/cross-session-messaging#control-inbound-messages), отказывает сообщение перед срабатыванием `session.receive`, поэтому hook никогда его не видит. Сообщение, которое удерживается для вашего одобрения, сначала достигает hook, поэтому mod может прочитать сообщение, которое вы ещё не одобрили. `next(e)` hook отклоняет, когда сообщение не доставляется.

183 

184Имя отправителя в полученном сообщении — это то, что написал отправитель, поэтому не основывайте решение на нём.

185 

186<h2 id="reach-files-processes-and-the-network">

187 Доступ к файлам, процессам и сети

188</h2>

189 

190Mod получает доступ к файловой системе, процессам и сети через mods API с теми же разрешениями, что и пользователь, запускающий Claude Code. Сам модуль hooks не имеет API Node.js, нет глобальных таймеров, таких как `setTimeout`, и нет собственного доступа к сети или файлам. Доступны стандартный JavaScript и веб-API, такие как `URL`, `TextEncoder`, `AbortController` и `crypto.subtle`. Каждое пространство имён ниже охватывает один вид доступа:

191 

192| Пространство имён | Что оно делает |

193| :- | :- |

194| `$.fs` | `read(path)`, `write(path, text)`, `exists(path)`, `stat(path)` и `list(path)` работают с файлами и каталогами |

195| `$.process` | `run(['git', 'status'])` запускает команду и разрешается при выходе. `spawn` потоком выводит долгоживущую команду. |

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

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

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

199| `$.settings` | `read` то, что содержат файлы параметров и управляемая политика |

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

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

202 

203Файлы и процессы имеют несколько собственных правил:

204 

205* **Пути**: относительный путь находится в рабочем каталоге сеанса

206* **`$.fs.list`**: возвращает записи одного каталога как `{ name, kind, size, isLink }` и не спускается в подкаталоги

207* **`$.process.run`**: принимает список аргументов и не использует оболочку. Он разрешается в `{ exitCode, stdout, stderr }` независимо от кода выхода. Он отклоняется, если программа не может запуститься или всё ещё выполняется при истечении времени ожидания, которое по умолчанию составляет 30 секунд, поэтому оберните его в `try` и `catch`.

208 

209Каждый из этих вызовов сам по себе является событием, названным по его пространству имён и методу без `$.`, например `fs.read` для `$.fs.read`. Mod [ранее в цепи](/docs/ru/plugins/mods/events#the-order-mods-run-in) может наблюдать, переписывать или отказывать ваш вызов, что является тем, как организация ограничивает то, что mods достигают.

210 

211<h2 id="next-steps">

212 Следующие шаги

213</h2>

214 

215* [Реагирование на события](/docs/ru/plugins/mods/events): hook вызовы инструментов, запросы и ходы

216* [Рисование в интерфейсе](/docs/ru/plugins/mods/interface): показать то, что собирает ваш mod в pane или над запросом

217* [Тестирование mod](/docs/ru/plugins/mods/test): заглушка любого из этих вызовов в тесте

218* [Справочник Mods](/docs/ru/plugins/mods/reference): каждое событие, каждый метод mods API и ограничения

plugins/mods/create.md +395 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Создание мода

6 

7> Попросите Claude написать мод Claude Code из описания или напишите его сами, чтобы подсчитывать вызовы инструментов и добавить команду. Изучите цикл перезагрузки и валидации.

8 

9Мод — это плагин Claude Code [plugin](/docs/ru/plugins/overview) с файлом входа, называемым модулем hooks: файл JavaScript или TypeScript, функции которого Claude Code вызывает при возникновении событий. Есть два способа создать мод:

10 

11* **Попросите Claude написать его**: [опишите, что вы хотите](#ask-claude-for-a-mod) в сеансе Claude Code

12* **Напишите его сами**: [следуйте руководству](#write-a-mod-yourself), чтобы узнать, как работает код мода. Вам не нужны Node.js, бандлер или этап сборки, потому что Claude Code загружает файлы `.js` и `.ts` напрямую.

13 

14Если вы еще не решили, является ли мод правильным инструментом, сначала прочитайте [сравнение на странице обзора](/docs/ru/plugins/mods/overview#compare-mods-settings-hooks-skills-and-mcp-servers).

15 

16<Note>

17 Моды требуют Claude Code v2.1.287 или позже. В вашей оболочке выполните `claude --version`, чтобы проверить. Чтобы узнать, могут ли моды загружаться для вас, см. [Проверка возможности загрузки модов](/docs/ru/plugins/mods/troubleshoot#check-whether-mods-can-load).

18</Note>

19 

20<h2 id="ask-claude-for-a-mod">

21 Попросите Claude написать мод

22</h2>

23 

24Опишите нужный вам мод в интерактивном сеансе Claude Code, и Claude напишет его. Claude работает из встроенного [skill](/docs/ru/skills) с именем `plugin-authoring`, который сообщает ему, где написать мод, какие события и методы есть в вашей версии, и как загружается мод. Claude может загрузить skill, когда вы попросите мод, или вы можете загрузить его сами, выполнив `/plugin-authoring` в приглашении Claude Code.

25 

26Мод запускается после того, как вы его одобрите, кроме [сеансов, где мод, написанный Claude, не может загрузиться](#sessions-that-skip-the-approval).

27 

28<Steps>

29 <Step title="Опишите мод">

30 Попросите мод своими словами, например `make a mod that shows the current git branch above the prompt`. Claude пишет мод в отдельном каталоге в папке модов сеанса, которая находится в `~/.claude/dev-mods/`, за которой следует ID сеанса. Полный путь мода выглядит как `~/.claude/dev-mods/3f2a9c1e-5b7d-4e8a-9c21-6d0f4b8a7e13/git-branch/`.

31 

32 <Note>

33 В режимах разрешений `default` и `acceptEdits` [permission modes](/docs/ru/permission-modes#protected-paths) Claude Code спрашивает перед тем, как Claude создаст каждый из файлов мода, потому что `~/.claude` — это защищённый путь. Одобрите каждый файл по мере его появления.

34 </Note>

35 </Step>

36 

37 <Step title="Одобрите мод">

38 Когда Claude сохраняет первый файл, Claude Code спрашивает, следует ли включить горячую перезагрузку для сеанса. Горячая перезагрузка запускает моды, написанные Claude в этом сеансе, и подхватывает каждое последующее изменение.

39 

40 Выберите один из этих ответов:

41 

42 * **Enable for this session**: моды в папке модов сеанса загружаются при завершении хода и перезагружаются в конце каждого хода, который их изменяет. Ваш ответ действует для сеанса, включая после его возобновления.

43 * **Not now**: ничего не загружается пока. Файлы остаются там, где их написал Claude, и моды загружаются при следующем запуске этого сеанса. Чтобы мод никогда не загружался, удалите его каталог.

44 </Step>

45 

46 <Step title="Проверьте, что мод загрузился">

47 Выполните `/plugin` в приглашении Claude Code и нажимайте Tab, пока не будет выбрана вкладка **Installed**. Она перечисляет мод, и вы можете отключить его там.

48 </Step>

49 

50 <Step title="Попробуйте мод">

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

52 </Step>

53</Steps>

54 

55<h3 id="use-the-mod-in-other-sessions">

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

57</h3>

58 

59Мод, написанный Claude, загружается только в сеансе, который его создал, и Claude Code удаляет папку модов этого сеанса после того, как она старше [`cleanupPeriodDays`](/docs/ru/settings-reference#cleanupperioddays). Чтобы сохранить мод, скопируйте его каталог из папки модов в место по вашему выбору, например `~/mods/git-branch`. Затем выберите, как его загружать:

60 

61* **В сеансе, который вы запускаете**: в вашей оболочке выполните `claude --plugin-dir ~/mods/git-branch`

62* **Для других людей**: [добавьте его на маркетплейс](#share-your-mod), чтобы они могли его установить

63 

64<h3 id="sessions-that-skip-the-approval">

65 Сеансы, где мод, написанный Claude, не может загрузиться

66</h3>

67 

68Мод, написанный Claude, загружается только после того, как вы его одобрите, в доверенной рабочей области, где разрешено запускать моды. В этих сеансах он не загружается:

69 

70* **Никого нет, чтобы одобрить**: сеанс не может показать вам приглашение, как в запуске `claude -p` или в режиме [`dontAsk`](/docs/ru/permission-modes)

71* **Рабочая область не доверена**: вы не приняли приглашение доверия для каталога

72* **Моды остановлены**: вы запустили с `--safe-mode` или `--bare`, вы установили `disableAllHooks`, или [управляемые параметры](/docs/ru/plugins/mods/admin#choose-how-much-to-allow) вашей организации это блокируют

73 

74<h2 id="write-a-mod-yourself">

75 Напишите мод сами

76</h2>

77 

78В этом руководстве вы создаёте мод с именем `first-mod`, который подсчитывает вызовы инструментов, которые делает Claude, показывает счётчик рядом со спиннером во время работы Claude и добавляет команду `/tally`, которая его выводит. Затем вы читаете объявления типов, которые Claude Code пишет рядом с вашим модом, и выполняете `claude plugin validate`. Вместе они показывают вам события и методы, которые предлагает ваша версия, и что Claude Code читает из вашего кода.

79 

80Эта запись показывает готовый мод. Спиннер подсчитывает вызовы инструментов, `/tally` выводит счётчик, и редактирование кода вступает в силу во время работы сеанса:

81 

82<Frame>

83 <video autoPlay muted loop playsInline controls className="w-full dark:hidden" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-first-mod-light.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=eb561134afa90375777408453ba51c77" aria-label="In a Claude Code session, the prompt 'list the files here and read the README' is typed and sent. The spinner reads 'Thinking · tool calls: 1' and the count rises as Claude works. The /tally command prints 'first-mod: Claude has made 3 tool calls since this mod loaded'. A line says first-mod reloaded and lists its four hooks. On the next prompt the spinner reads 'Thinking · tools used: 1'." data-path="images/mods-first-mod-light.mp4" />

84 

85 <video autoPlay muted loop playsInline controls className="w-full hidden dark:block" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-first-mod-dark.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=09779dadc7ef66c2b1e2da0c2e31ac72" aria-label="In a Claude Code session, the prompt 'list the files here and read the README' is typed and sent. The spinner reads 'Thinking · tool calls: 1' and the count rises as Claude works. The /tally command prints 'first-mod: Claude has made 3 tool calls since this mod loaded'. A line says first-mod reloaded and lists its four hooks. On the next prompt the spinner reads 'Thinking · tools used: 1'." data-path="images/mods-first-mod-dark.mp4" />

86</Frame>

87 

88Вы пишете три файла:

89 

90```text theme={null}

91first-mod/

92├── .claude-plugin/

93│ └── plugin.json

94└── hooks/

95 ├── hooks.json

96 └── register.js

97```

98 

99* **`plugin.json`**: [манифест](/docs/ru/plugins/manifest-reference) плагина

100* **`hooks.json`**: [указывает на ваш файл кода](/docs/ru/plugins/mods/reference#files)

101* **`register.js`**: ваш код, называемый модулем hooks

102 

103<Steps>

104 <Step title="Создайте каталог плагина">

105 Создайте два каталога, которые содержат файлы:

106 

107 <Tabs>

108 <Tab title="Bash или Zsh">

109 ```bash theme={null}

110 mkdir -p first-mod/.claude-plugin first-mod/hooks

111 ```

112 </Tab>

113 

114 <Tab title="PowerShell">

115 ```powershell theme={null}

116 New-Item -ItemType Directory -Force first-mod\.claude-plugin, first-mod\hooks

117 ```

118 </Tab>

119 </Tabs>

120 </Step>

121 

122 <Step title="Напишите манифест">

123 Мод — это плагин, и моду нужен [манифест](/docs/ru/plugins/manifest-reference). Манифест этого мода не имеет специальных полей. Сохраните это как `first-mod/.claude-plugin/plugin.json`:

124 

125 ```json first-mod/.claude-plugin/plugin.json theme={null}

126 {

127 "name": "first-mod",

128 "version": "0.1.0",

129 "description": "Counts Claude's tool calls, shows the count beside the spinner, and adds a /tally command",

130 "author": { "name": "Your Name" }

131 }

132 ```

133 </Step>

134 

135 <Step title="Скажите Claude Code, где находится ваш код">

136 Когда Claude Code загружает плагин, он читает `hooks/hooks.json` плагина. Ключ `modules` в этом файле указывает путь к вашему коду, и его наличие делает плагин модом. Перечислите один путь, относительный к `hooks.json`. Здесь он указывает на `register.js`, который вы напишете на следующем шаге.

137 

138 Сохраните это как `first-mod/hooks/hooks.json`:

139 

140 ```json first-mod/hooks/hooks.json theme={null}

141 {

142 "description": "The first-mod hooks module",

143 "modules": ["./register.js"]

144 }

145 ```

146 </Step>

147 

148 <Step title="Напишите код">

149 Этот файл — это код мода, называемый модулем hooks. Когда мод загружается, Claude Code вызывает функцию `register`, которую экспортирует файл, и передаёт ей функцию с именем [`on`](/docs/ru/plugins/mods/reference#the-hook-function). Каждый вызов `on` регистрирует обработчик события, называемый hook, для события, которое он называет.

150 

151 Сохраните это как `first-mod/hooks/register.js`:

152 

153 ```javascript first-mod/hooks/register.js theme={null}

154 // The count, shared by the hooks below

155 let calls = 0

156 

157 // Claude Code calls this once when the mod loads

158 export function register(on) {

159 // Runs when the session starts, before your first prompt

160 on('session.start', async ($, e, next) => {

161 // Add the /tally command

162 await $.command.register({

163 name: 'tally',

164 description: 'Show how many tool calls Claude has made',

165 })

166 // Let the session start as usual

167 return next(e)

168 })

169 

170 // Runs each time Claude is about to use a tool

171 on('tool.call', async ($, e, next) => {

172 calls += 1

173 // Ask Claude Code to draw the interface again, so the new count shows

174 $.ui.invalidate('ui.render')

175 // Let the tool run as usual

176 return next(e)

177 })

178 

179 // Runs when you type /tally, and only then, because of the matcher

180 on('command.run', { command: 'tally' }, async () => {

181 // The text to print in the transcript

182 return { text: 'Claude has made ' + calls + ' tool calls since this mod loaded' }

183 })

184 

185 // Runs each time Claude Code draws the spinner

186 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

187 // Keep Claude Code's spinner, with the count added after its word

188 return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })

189 })

190 }

191 ```

192 

193 Файл хранит счётчик в `calls` и регистрирует четыре hook:

194 

195 * **[`session.start`](/docs/ru/plugins/mods/reference#session)** запускается при запуске сеанса, перед вашим первым приглашением, и снова каждый раз, когда мод перезагружается. Он добавляет команду `/tally` в Claude Code.

196 * **[`tool.call`](/docs/ru/plugins/mods/reference#tools)** запускается каждый раз, когда Claude собирается использовать инструмент. Он добавляет один к `calls` и просит Claude Code нарисовать интерфейс снова.

197 * **[`command.run`](/docs/ru/plugins/mods/reference#commands-and-configuration)** запускается, когда вы вводите `/tally`. Он возвращает текст для вывода.

198 * **[`ui.render`](/docs/ru/plugins/mods/reference#interface)** запускается каждый раз, когда Claude Code рисует спиннер. Он добавляет счётчик после слова спиннера.

199 

200 [Как работает пример мода](#how-the-example-mod-works) объясняет три аргумента, которые принимает каждый hook, и что каждый из них возвращает.

201 </Step>

202 

203 <Step title="Загрузите мод">

204 Запустите Claude Code с флагом `--plugin-dir`, который загружает каталог плагина для одного сеанса без его установки:

205 

206 ```bash theme={null}

207 claude --plugin-dir ./first-mod

208 ```

209 </Step>

210 

211 <Step title="Попробуйте мод">

212 Попросите Claude сделать что-то, что требует нескольких вызовов инструментов, например `list the files here and read the README`. Пока Claude работает, слово спиннера сопровождается счётчиком, который растёт, как в `Thinking · tool calls: 2…`. Когда Claude закончит, введите `/tally` и нажмите Enter. Транскрипт показывает `first-mod: Claude has made 2 tool calls since this mod loaded` с вашим собственным счётчиком. Claude Code ставит имя плагина перед текстом команды.

213 

214 Чтобы проверить команду без интерактивного сеанса, выполните её в неинтерактивном режиме:

215 

216 ```bash theme={null}

217 claude -p "/tally" --plugin-dir ./first-mod

218 ```

219 

220 ```text theme={null}

221 first-mod: Claude has made 0 tool calls since this mod loaded

222 ```

223 

224 Если `/tally` не в списке команд, модуль не загрузился. См. [Узнайте, почему мод ничего не делает](/docs/ru/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing).

225 </Step>

226 

227 <Step title="Измените код во время работы сеанса">

228 Оставьте сеанс открытым. В `register.js` измените `' · tool calls: '` на `' · tools used: '` в hook `ui.render` и сохраните. Выделенная строка — это та, которая изменяется:

229 

230 ```javascript first-mod/hooks/register.js {4} theme={null}

231 // Runs each time Claude Code draws the spinner

232 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

233 // Keep Claude Code's spinner, with the count added after its word

234 return next({ ...e, props: { ...e.props, suffix: ' · tools used: ' + calls + '…' } })

235 })

236 ```

237 

238 Строка в транскрипте говорит, что `first-mod` перезагрузился и перечисляет его hooks, и следующий спиннер использует новый текст, как в `Thinking · tools used: 1…`.

239 </Step>

240</Steps>

241 

242<h3 id="how-the-example-mod-works">

243 Как работает пример мода

244</h3>

245 

246Каждая функция, которую вы передаёте `on`, — это hook, который является обработчиком события. Claude Code передаёт каждому hook одни и те же три аргумента:

247 

248* **API модов**, названный `$`: каждый метод, который мод может вызвать, чтобы выйти за пределы себя, в [пространствах имён](/docs/ru/plugins/mods/reference#mods-api-methods) таких как `$.ui` и `$.command`

249* **Событие**, названное `e`: [входные данные события](/docs/ru/plugins/mods/reference#events) как простые данные, такие как имя и аргументы вызова инструмента

250* **Следующий обработчик**, названный [`next`](/docs/ru/plugins/mods/events#how-a-hook-handles-an-event): функция, которая передаёт событие другим модам, а затем собственному поведению Claude Code, и возвращает результат

251 

252Hooks в `first-mod` обрабатывают свои события тремя способами, которыми может обрабатывать hook:

253 

254* **Observe**: hook `session.start` регистрирует команду, и hook `tool.call` подсчитывает вызов и просит перерисовку. Оба возвращают `next(e)`, поэтому сеанс запускается и инструмент работает как обычно.

255* **Answer**: hook `command.run` возвращает свой собственный результат и никогда не вызывает `next`. Второй аргумент `on`, `{ command: 'tally' }`, — это фильтр, называемый [matcher](/docs/ru/plugins/mods/events#filter-which-events-a-hook-handles), поэтому hook запускается только для `/tally`.

256* **Rewrite**: hook `ui.render` вызывает `next` с копией `e`, чей `suffix` содержит счётчик, поэтому Claude Code рисует свой обычный спиннер с вашим текстом после слова

257 

258Claude Code следит за каталогом, загруженным с `--plugin-dir`, и горячо перезагружает модуль hooks при изменении файла в нём. Каждая перезагрузка запускает `register` снова, поэтому `calls` возвращается к `0` и `/tally` начинает считать снова. Чтобы сохранить значение между перезагрузками, см. [Сохранение состояния](/docs/ru/plugins/mods/interface#keep-state).

259 

260<h2 id="keep-working-on-a-mod">

261 Продолжайте работать над модом

262</h2>

263 

264После загрузки мода вы можете попросить Claude изменить его, проверить ваш код против определений типов для вашей версии, перечислить события и вызовы, которые Claude Code находит в нём, и протестировать его.

265 

266<h3 id="change-a-mod-with-claude">

267 Измените мод с помощью Claude

268</h3>

269 

270Чтобы изменить мод, который у вас уже есть, запустите сеанс с `--plugin-dir`, указывающим на каталог мода, чтобы то, что пишет Claude, загружалось в том же сеансе:

271 

272```bash theme={null}

273claude --plugin-dir ./first-mod

274```

275 

276Затем попросите изменение, например `add a /tally-reset command to this mod that sets the tally back to zero`. Claude редактирует модуль hooks, выполняет `claude plugin validate` и исправляет то, что он сообщает. Каталог, который вы загружаете с `--plugin-dir`, — это [защищённый путь](/docs/ru/permission-modes#protected-paths), поэтому в режимах `default` и `acceptEdits` вас просят одобрить каждое редактирование Claude мода. Таблица защищённых путей даёт результат для других режимов разрешений.

277 

278Файлы, которые Claude сохраняет во время его хода, перезагружаются при завершении хода, поэтому вы можете попробовать `/tally-reset` сразу после завершения Claude.

279 

280<h3 id="get-the-types-for-your-build">

281 Получите определения типов для вашей версии

282</h3>

283 

284Каждый раз, когда Claude Code загружает или перезагружает мод из каталога, который вы передаёте `--plugin-dir`, или мод [Claude написал для вас](#ask-claude-for-a-mod), он пишет файлы объявлений TypeScript, заканчивающиеся на `.d.ts`, в `.claude-plugin/types/` внутри каталога мода. Они описывают точные события, методы API модов и элементы в версии Claude Code, которую вы запускаете, поэтому ваш редактор может автодополнять и проверять типы ваших hooks. Чтобы просмотреть объявления в Интернете, прочитайте [`mods/types/claude-code.d.ts`](https://github.com/anthropics/claude-code/blob/main/mods/types/claude-code.d.ts) в репозитории Claude Code, первая строка которого называет версию, которая его написала. Каталог содержит эти файлы:

285 

286| Путь | Что он объявляет |

287| :- | :- |

288| `claude-code/index.d.ts` | Каждое событие и его входные данные и результат, каждое пространство имён API модов и метод, и элементы, которые каждая поверхность может рисовать |

289| `claude-code-tools/index.d.ts` | Входные данные встроенных инструментов и результаты, поэтому проверка `e.tool === 'Bash'` сужает `e` |

290| `claude-code-mcp/index.d.ts` | Входные данные инструментов MCP, которые были подключены в последний раз, когда вы сохранили файл в модо |

291| `index.d.ts` в каталоге, названном в честь плагина | Что этот плагин добавляет в API модов. Есть один каталог для каждого плагина, который ваш `plugin.json` перечисляет в `dependencies`. |

292| `tsconfig.json` | Параметры компилятора, которые подходят для модуля hooks |

293 

294Если ваш мод не имеет собственного `tsconfig.json`, Claude Code добавляет один в корень мода, который расширяет сгенерированный, поэтому ваш редактор и `tsc -p ./first-mod` проверяют тип мода без дополнительной настройки.

295 

296События и методы могут изменяться между выпусками, поэтому доверяйте этим файлам больше, чем любой странице, включая эту, когда они не согласны.

297 

298`claude-code/index.d.ts` — это самый полный справочник для вашей сборки, с комментарием и примером для каждого метода API модов. Чтобы что-то найти, поищите в файле его имя, например `'tool.call'`.

299 

300<h3 id="check-what-claude-code-reads-from-your-mod">

301 Проверьте, что Claude Code читает из вашего мода

302</h3>

303 

304Чтобы увидеть ваш мод так, как Claude Code его видит, без запуска вашего кода или запуска сеанса, используйте `claude plugin validate`. Он проверяет манифест и выполняет тот же статический анализ на исходном коде модуля hooks, который Claude Code выполняет при загрузке мода. В вашей оболочке выполните его на каталоге мода:

305 

306```bash theme={null}

307claude plugin validate ./first-mod

308```

309 

310Для `first-mod` вывод включает эти строки.

311 

312```text theme={null}

313 ❯ ./register.js hooks: session.start, tool.call, command.run{command=tally}, ui.render{component=Spinner}

314 ❯ ./register.js calls: $.command.register, $.ui.invalidate

315 

316✔ Validation passed

317```

318 

319Строка `hooks:` перечисляет события, которые ваш модуль hook, каждое с его фильтром в скобках. Строка `calls:` перечисляет каждый метод API модов, который он вызывает. Модуль, который читает или устанавливает переменные окружения, также получает строки `env reads:` и `env writes:`, и тот, который использует [`$.state`](/docs/ru/plugins/mods/interface#keep-state), получает `state reads:` и `state writes:`.

320 

321Если событие, которое вы хотели hook, отсутствует в первой строке, Claude Code не будет вызывать этот hook либо. Обычная причина — неправильное написание имени события, которое команда сообщает как ошибку, такую как `"tool.calls" is not an event`.

322 

323Следуйте этим правилам, чтобы статический анализ мог найти каждый hook и вызов:

324 

325* Напишите каждый вызов API модов полностью: `$`, пространство имён, затем метод, как в `$.store.get('notes')`. Вы можете передать `$` функции, объявленной на верхнем уровне того же файла, и для функции вашей с именем `loadNotes` строка `calls:` затем читает `$.store.get (via loadNotes)`. Передача `$` методу, функции, определённой внутри hook, или функции, которую вы импортируете из другого из ваших файлов, не проходит валидацию. Функции `read` и `update`, которые использует [`$.state`](/docs/ru/plugins/mods/interface#keep-state), — это импорты, которые могут её принять. Не присваивайте `$` или одно из его пространств имён переменной, не деструктурируйте его и не индексируйте его с вычисленным именем. `const ui = $.ui` не проходит с `$.ui is used as a value`.

326* Напишите имя события в каждом вызове `on` как строковый литерал, например `'tool.call'`. Переменная или цикл по списку имён не проходит с `the event name passed to on() is not a string literal`.

327* Внутри `register` не объявляйте вторую переменную или параметр с именем `on`. Валидация не проходит с `"on" is declared again (shadowed)`.

328* Импортируйте только из файлов внутри каталога плагина, по относительному пути. Единственный разрешённый голый импорт — это `claude-code`, для типов и нескольких помощников.

329* Используйте объявления `import` в верхней части файла, как в `import { name } from './file.js'`. Динамический `import()` не проходит с `a dynamic import(); a hooks module imports its own files with an import declaration`.

330* Напишите каждый файл как модуль ES, с `import`, а не `require`. [Справочник](/docs/ru/plugins/mods/reference#files) перечисляет расширения файлов, которые загружает Claude Code.

331 

332<h3 id="test-the-mod">

333 Протестируйте мод

334</h3>

335 

336Вы можете написать автоматизированные тесты для мода и запустить их из вашей оболочки с `claude plugin test`, без сеанса, входа или сети. Тест вызывает события, которые обрабатывают ваши hooks, и проверяет, что сделали hooks.

337 

338Этот тест вызывает два вызова инструментов, запускает `/tally` и проверяет, что ответ считает оба. Сохраните это как `first-mod/tests/first-mod.test.ts`:

339 

340```typescript first-mod/tests/first-mod.test.ts theme={null}

341import { expect, test } from 'claude-code/testing'

342 

343test('/tally reports the tool calls the mod has seen', async ($, on) => {

344 // Answer each tool call in Claude Code's place, so no tool runs

345 on('tool.call', () => ({ result: 'ok' }))

346 

347 // Raise two tool calls, which the mod's tool.call hook counts

348 await $.tool.call({ tool: 'Bash', command: 'ls' })

349 await $.tool.call({ tool: 'Read', file_path: 'README.md' })

350 

351 // Run /tally and check the text its hook returns

352 const answer = await $.command.run({ command: 'tally', args: '' })

353 expect(answer.text).toBe('Claude has made 2 tool calls since this mod loaded')

354})

355```

356 

357В вашей оболочке выполните тесты из каталога `first-mod`:

358 

359```bash theme={null}

360claude plugin test

361```

362 

363Вывод называет каждый тест и прошёл ли он, с временем, которое варьируется от запуска к запуску:

364 

365```text theme={null}

366tests/first-mod.test.ts:

367(pass) /tally reports the tool calls the mod has seen [22.87ms]

368 

369 1 pass

370 0 fail

371Ran 1 test across 1 file. [0.19s]

372```

373 

374[Протестируйте мод](/docs/ru/plugins/mods/test) охватывает заглушку вызова модели или хранилища, и тестирование таймеров и рисунков.

375 

376<h2 id="share-your-mod">

377 Поделитесь своим модом

378</h2>

379 

380Мод — это плагин, поэтому вы версионируете его в манифесте, и люди устанавливают и обновляют его с помощью команд `/plugin`. Чтобы дать его другим людям, [добавьте его на маркетплейс](/docs/ru/plugins/publish).

381 

382Перед этим проверьте `name` плагина: `claude plugin validate` не проходит имя, которое [выглядит как одно из собственных Anthropic](/docs/ru/plugins/manifest-reference#name), например то, которое начинается с `claude-`. События и методы могут изменяться между выпусками, поэтому ваш README — это место, где нужно сказать, какую версию Claude Code вы тестировали.

383 

384Продолжайте разработку против каталога с `--plugin-dir`, а не против установленной копии. Claude Code кэширует установленный плагин по версии, поэтому ваши редактирования не достигают установленной копии, пока вы не повысите версию и не установите снова.

385 

386<h2 id="next-steps">

387 Следующие шаги

388</h2>

389 

390* [Рисуйте в интерфейсе](/docs/ru/plugins/mods/interface): откройте панель, рисуйте над приглашением и добавляйте кнопки и текстовые поля

391* [Реагируйте на события](/docs/ru/plugins/mods/events): hook вызовы инструментов, приглашения и ходы

392* [Используйте API модов](/docs/ru/plugins/mods/api): добавляйте команды и инструменты, вызывайте модель и запускайте работу по таймеру

393* [Протестируйте мод](/docs/ru/plugins/mods/test): заглушка того, что Claude Code ответит, и тестирование таймеров и рисунков

394* [Устраняйте неполадки мода](/docs/ru/plugins/mods/troubleshoot): причины, по которым мод ничего не делает, и журнал отладки

395* [Прочитайте исходный код встроенных модов](/docs/ru/plugins/mods/overview#read-the-source-of-built-in-mods): полные плагины, каждый со своим модулем hooks и тестами

plugins/mods/events.md +336 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Реагировать на события с помощью мода

6 

7> Обрабатывайте события Claude Code из мода: наблюдайте, переписывайте или отвечайте на вызовы инструментов, подсказки и ходы, фильтруйте события, которые обрабатывает hook, и планируйте для других модов.

8 

9Hook — это обработчик события: функция, которую Claude Code запускает при возникновении именованного события. Claude Code генерирует событие в каждой точке, где он собирается действовать, например, когда он запускает инструмент, отправляет подсказку, отправляет запрос к модели или начинает или завершает сеанс. Ваш hook запускается перед тем, как Claude Code действует, поэтому он может наблюдать событие, переписать его или ответить на него вместо Claude Code. Вы регистрируете hook с помощью [`on(eventName, handler)`](/docs/ru/plugins/mods/reference#the-hook-function).

10 

11Создайте свой [первый мод](/docs/ru/plugins/mods/create) перед тем, как начать здесь. Для каждого события и его точных полей см. [справочник](/docs/ru/plugins/mods/reference#events) или прочитайте [типы для вашей сборки](/docs/ru/plugins/mods/create#get-the-types-for-your-build).

12 

13<h2 id="how-a-hook-handles-an-event">

14 Как hook обрабатывает событие

15</h2>

16 

17Hook находится между событием и тем, что Claude Code сделает с ним, поэтому он может наблюдать событие, переписать его или ответить на него сам. Он получает три аргумента: [mods API](/docs/ru/plugins/mods/api) как `$`, событие как `e` и следующий обработчик как `next`. Обработчики события образуют цепочку middleware. `next(e)` вызывает следующий обработчик, который является hook другого мода или, в конце цепочки, собственным поведением Claude Code, и разрешается в результат. То, что ваш hook делает с `next`, определяет, какой из трёх вариантов он выполняет.

18 

19<h3 id="observe-an-event">

20 Наблюдать событие

21</h3>

22 

23Чтобы наблюдать событие без его изменения, выполните свою работу и верните `next(e)`. Этот hook регистрирует каждый инструмент, который Claude собирается использовать:

24 

25```javascript theme={null}

26on('tool.call', async ($, e, next) => {

27 // Запускается перед запуском инструмента

28 $.ui.log('Claude is about to use ' + e.tool)

29 // Передайте событие дальше без изменений

30 return next(e)

31})

32```

33 

34Перед запуском каждого инструмента в расшифровке появляется тусклая строка, такая как `● my-mod: Claude is about to use Bash`, где `my-mod` — это имя вашего плагина. Инструмент запускается так же, как без мода.

35 

36Чтобы действовать после события, `await next(e)`, выполните свою работу и верните результат. Этот hook регистрирует каждый инструмент после его запуска:

37 

38```javascript theme={null}

39on('tool.call', async ($, e, next) => {

40 // Позвольте инструменту запуститься и дождитесь его результата

41 const result = await next(e)

42 // Запускается после запуска инструмента

43 $.ui.log(e.tool + ' finished')

44 // Верните результат без изменений

45 return result

46})

47```

48 

49Строка теперь появляется после завершения каждого инструмента. Claude читает один и тот же результат в любом случае, потому что hook возвращает то, в чём разрешился `next(e)`.

50 

51<h3 id="rewrite-an-event">

52 Переписать событие

53</h3>

54 

55Чтобы изменить то, на что действует Claude Code, например текст подсказки, вызовите `next` с изменённой копией события. Само событие неизменяемо: оно заморожено на каждой глубине, и присваивание полю выбрасывает исключение. Этот hook обрезает каждую подсказку перед её отправкой:

56 

57```javascript theme={null}

58on('prompt.submit', async ($, e, next) => {

59 // Передайте копию события с изменённым текстом

60 return next({ ...e, text: e.text.trim() })

61})

62```

63 

64Более поздние обработчики и Claude Code получают обрезанную подсказку и никогда не видят оригинал. Вы также можете изменить результат: `await next(e)`, затем верните копию результата с заменённым полем.

65 

66<h3 id="answer-an-event">

67 Ответить на событие

68</h3>

69 

70Чтобы обработать событие самостоятельно, верните результат без вызова `next`. Это короткозамыкает цепочку, поэтому более поздние моды и собственное поведение Claude Code не запускаются. Этот hook отказывает в каждой команде Bash:

71 

72```javascript theme={null}

73on('tool.call', { tool: 'Bash' }, async () => {

74 // Нет вызова next, поэтому команда никогда не запускается

75 return { deny: 'Bash is turned off in this project. Use the file tools.' }

76})

77```

78 

79Когда Claude пытается выполнить команду Bash, команда не запускается, и Claude читает текст `deny` как результат инструмента. Каждое событие имеет свою форму результата, которую [справочник событий](/docs/ru/plugins/mods/reference#events) перечисляет.

80 

81<h3 id="filter-which-events-a-hook-handles">

82 Фильтровать события, которые обрабатывает hook

83</h3>

84 

85Чтобы запустить hook только для некоторых событий, передайте фильтр в качестве второго аргумента `on`. Claude Code называет фильтр matcher. Это объект, чьи поля сравниваются с полями события, и hook запускается только когда каждое поле совпадает. Поле может быть значением, массивом допустимых значений или регулярным выражением.

86 

87Каждая строка в этом примере регистрирует одну и ту же функцию, `hook`, для более узкого набора вызовов инструментов:

88 

89```javascript theme={null}

90// Строка совпадает с одним значением: только вызовы Bash

91on('tool.call', { tool: 'Bash' }, hook)

92// Массив совпадает с любым значением в нём: вызовы Edit и Write

93on('tool.call', { tool: ['Edit', 'Write'] }, hook)

94// Регулярное выражение совпадает по шаблону: каждый инструмент одного сервера MCP

95on('tool.call', { tool: /^mcp__github__/ }, hook)

96```

97 

98`hook` запускается один раз для вызова Bash, Edit или Write и один раз для вызова инструмента, имя которого начинается с `mcp__github__`. Вызов любого другого инструмента, такого как Read, не совпадает ни с одним из трёх, поэтому `hook` не запускается для него.

99 

100Имя события может быть подстановочным символом. `'classic.*'` совпадает с каждым [событием hook настроек](#hook-the-settings-hook-events). `'*'` совпадает с каждым событием, кроме [событий телеметрии](/docs/ru/plugins/mods/reference#telemetry), которые вы подключаете по имени или как `'telemetry.*'`.

101 

102Регистрируйте каждое событие один раз для каждого matcher. Если вы вызовете `on` дважды для `session.start` без matcher, модуль не загружается с ошибкой `on("session.start") is registered twice without a matcher`. Поместите всё, что ваш мод делает при запуске сеанса, в один hook.

103 

104<h2 id="hook-what-claude-is-doing">

105 Подключить то, что делает Claude

106</h2>

107 

108Подключите эти события, чтобы увидеть или изменить вызов инструмента, подсказку или ход по мере их возникновения. Для каждого события и того, что может вернуть hook, см. [справочник событий](/docs/ru/plugins/mods/reference#events).

109 

110<h3 id="guard-or-change-a-tool-call">

111 Охранять или изменять вызов инструмента

112</h3>

113 

114Hook `tool.call` видит каждый инструмент, который Claude собирается использовать, поэтому он может отказать в вызове, изменить его аргументы или пропустить его. `tool.call` срабатывает, когда Claude Code собирается запустить инструмент, включая вызовы, которые делает подагент, и вызовы инструментов MCP. `e.tool` — это имя инструмента, а аргументы инструмента — это поля `e`, такие как `e.command` для Bash. Когда вы вызываете `next(e)`, Claude Code запускает проверку разрешений, а затем инструмент.

115 

116Этот hook отказывает в команде Bash, которая выполняет force-push, и объясняет Claude почему:

117 

118```javascript theme={null}

119// Matcher ограничивает hook вызовами Bash, поэтому e.command — это команда оболочки

120on('tool.call', { tool: 'Bash' }, async ($, e, next) => {

121 if (/git push .*--force/.test(e.command)) {

122 // Возврат без вызова next отвечает на событие, поэтому команда никогда не запускается

123 return { deny: 'Force pushes are not allowed in this repository. Push to a new branch instead.' }

124 }

125 // Каждая другая команда переходит к проверке разрешений, а затем к Bash

126 return next(e)

127})

128```

129 

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

131 

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

133 

134```javascript theme={null}

135on('tool.call', { tool: ['Edit', 'Write'] }, async ($, e, next) => {

136 // Дождитесь проверки разрешений и инструмента, и сохраните то, что они произвели

137 const result = await next(e)

138 // Отказанный вызов возвращается как { deny }, а неудачный имеет установленный isError

139 const changed = !result.deny && !result.isError

140 if (changed && e.file_path.endsWith('.mdx')) $.ui.log('Claude changed ' + e.file_path)

141 // Верните результат как он пришёл, чтобы Claude читал то, что вернул инструмент

142 return result

143})

144```

145 

146После того как Claude редактирует или записывает файл `.mdx`, тусклая строка в расшифровке называет файл. Ничего не регистрируется для другого вида файла или для вызова, который был отказан или не удался. Представление Claude о вызове не меняется, потому что hook возвращает результат, который он получил.

147 

148Чтобы изменить вызов, передайте изменённые аргументы `next`. Чтобы повторить вызов, вызовите `next(e)` снова: hook, который видит `isError` на первом результате, может запустить инструмент второй раз и вернуть этот результат. Чтобы ответить на вызов самостоятельно, верните объект с полем `result`, такой как `{ result: 'Skipped by my-mod' }`, без вызова `next`. Когда вы это делаете, запрос разрешения не появляется и инструмент не запускается, поэтому результат, который вы возвращаете, — это всё, что Claude узнает о том, что произошло.

149 

150Hooks в [управляемых настройках](/docs/ru/server-managed-settings) вашей организации запускаются перед любым hook `tool.call` мода, и блокировка от одного из них является окончательной.

151 

152<h4 id="hold-a-tool-call-until-the-user-decides">

153 Удерживать вызов инструмента до тех пор, пока пользователь не решит

154</h4>

155 

156Hook может приостановить вызов инструмента и спросить пользователя, что делать, прежде чем он продолжится. Hook `tool.call` может `await` перед вызовом `next` или возвратом, и вызов инструмента остаётся в ожидании до тех пор. Чтобы задать вопрос пользователю, вызовите `$.ui.ask`. Он показывает ваш вопрос над пронумерованным списком ваших вариантов в диалоге, который Claude использует, чтобы спросить вас что-то, и разрешается в метку, которую выбрал пользователь. После ваших вариантов диалог добавляет строку для ввода другого ответа и строку **Chat about this**.

157 

158Шаблон `RISKY` в этом примере совпадает с `rm -r`, `rm -rf`, `git reset --hard` и `git push` с `--force`, и он пропускает другие написания, такие как `git push -f`. Этот модуль спрашивает перед запуском команды Bash, которая совпадает с шаблоном:

159 

160```javascript theme={null}

161const RISKY = /\brm\s+-rf?\b|\bgit\s+reset\s+--hard\b|\bgit\s+push\b.*--force/

162 

163export function register(on) {

164 on('tool.call', { tool: 'Bash' }, async ($, e, next) => {

165 // Пропустите каждую другую команду без вопроса

166 if (!RISKY.test(e.command)) return next(e)

167 // Начните с безопасного ответа, чтобы вопрос, на который никто не ответит, отказал в команде

168 let answer = 'Refuse'

169 try {

170 // Вызов инструмента ждёт здесь, пока пользователь выберет один из двух ярлыков

171 answer = await $.ui.ask('Run this command? ' + e.command, ['Run it', 'Refuse'])

172 } catch {

173 // Пользователь отклонил вопрос, или это запуск claude -p без кого-либо, кого можно спросить

174 }

175 if (answer !== 'Run it') {

176 // Ответьте без вызова next, чтобы команда не запускалась

177 return { deny: 'The user declined this command. Ask before trying a different approach.' }

178 }

179 return next(e)

180 })

181}

182```

183 

184Когда Claude пытается выполнить команду, такую как `rm -rf build`, вопрос появляется с командой в нём, и команда ждёт ответа:

185 

186* **Пользователь выбирает Run it**: hook вызывает `next(e)`, и обычная проверка разрешений всё ещё запускается после неё

187* **Пользователь выбирает Refuse**: команда не запускается, и Claude читает текст `deny`

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

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

190 

191Держите ожидание внутри вызова mods API, такого как `$.ui.ask`, потому что это время не учитывается в [10-секундном ограничении времени](/docs/ru/plugins/mods/reference#limits) hook. Время, потраченное на ожидание собственного обещания, учитывается. Claude Code пропускает hook, который истекает по времени, поэтому удерживаемая команда запустится.

192 

193<h3 id="rewrite-or-add-to-a-prompt">

194 Переписать или добавить к подсказке

195</h3>

196 

197Hook `prompt.submit` видит каждую подсказку перед началом хода, поэтому он может переписать текст или добавить к нему. `e.text` — это то, что было введено.

198 

199| Чтобы сделать это | Верните это |

200| :- | :- |

201| Переписать подсказку. Сообщение в расшифровке показывает новый текст. | `next({ ...e, text: newText })` |

202| Добавить текст, который читает только Claude, после подсказки | `next({ ...e, context: [...(e.context ?? []), extraText] })` |

203| Остановить отправку подсказки | `{ drop: 'the reason' }` |

204 

205Этот hook добавляет имя текущей ветки для Claude всякий раз, когда подсказка упоминает pull request:

206 

207```javascript theme={null}

208on('prompt.submit', async ($, e, next) => {

209 // Передайте подсказку, которая не упоминает pull request, как она есть

210 if (!/\bPR\b|pull request/i.test(e.text)) return next(e)

211 const git = await $.process.run(['git', 'branch', '--show-current'])

212 // Вне репозитория git команда не удаётся, поэтому нет ветки для добавления

213 if (git.exitCode !== 0) return next(e)

214 // Сохраните любой контекст, который добавил более ранний hook, и добавьте ещё одну строку для Claude

215 return next({ ...e, context: [...(e.context ?? []), 'Current branch: ' + git.stdout.trim()] })

216})

217```

218 

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

220 

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

222 

223<h3 id="follow-a-turn">

224 Следить за ходом

225</h3>

226 

227Ход — это всё, что Claude делает в ответ на одну подсказку. Подключите `turn.start`, `turn.step` и `turn.complete`, чтобы следить за одним:

228 

229| Событие | Когда оно срабатывает | Что может делать hook |

230| :- | :- | :- |

231| `turn.start` | Ход начинается | Наблюдать. `e.turnId` идентифицирует ход в двух других событиях. |

232| `turn.step` | Claude Code собирается отправить один запрос к модели. Ход с вызовами инструментов имеет несколько. `e.agentId` установлен для запроса подагента. | Прочитайте использование токенов каждого запроса, отправьте его другой модели с `next({ ...e, model })` или ответьте без вызова модели |

233| `turn.complete` | Ход закончился, включая ход, который пользователь прервал, где `e.isAborted` — `true`. `e.answer` — это финальный текст Claude, `e.durationMs` — сколько времени это заняло, и `e.usage` — итоги токенов хода. Ход подагента срабатывает с установленным `e.agentId`. | Наблюдать или вернуть объект с полем `text`, такой как `{ text: 'Done in 12 seconds' }`, чтобы показать строку под ответом |

234 

235Напишите hook `turn.step` как асинхронный генератор, потому что событие потоковое. `yield* next(e)` пересылает ответ по мере его потока и вычисляется в завершённый результат. Этот hook регистрирует, сколько каждого запроса Claude API обслужил из [кэша подсказок](/docs/ru/prompt-caching):

236 

237```javascript theme={null}

238// function* делает hook генератором, который может передавать ответ по частям

239on('turn.step', async function* ($, e, next) {

240 // Отправьте запрос, пересылайте каждую часть по мере её поступления и сохраняйте завершённый результат

241 const result = yield* next(e)

242 // Пропустите результат, который не сообщает количество токенов

243 if (result.usage) {

244 $.ui.log('cache read ' + result.usage.cache_read_input_tokens + ' · wrote ' + result.usage.cache_creation_input_tokens)

245 }

246 // Верните результат без изменений, чтобы ход продолжался как обычно

247 return result

248})

249```

250 

251Ответ Claude потоком идёт на экран так же, как без мода. После завершения каждого запроса тусклая строка в расшифровке даёт количество токенов, прочитанных из кэша, и количество записанных в него. Ход с вызовами инструментов имеет несколько запросов, поэтому он добавляет несколько строк.

252 

253`result.usage` содержит четыре количества токенов, которые сообщает Claude API для запроса, плюс `model`, который ответил: `input_tokens`, `output_tokens`, `cache_read_input_tokens` и `cache_creation_input_tokens`. Hook запускается и для запросов подагентов, поэтому проверьте `e.agentId`, когда вам нужна только основная беседа.

254 

255<h3 id="hook-the-settings-hook-events">

256 Подключить события hook настроек

257</h3>

258 

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

260 

261Этот hook использует `Stop`, который срабатывает, когда Claude заканчивает отвечать, чтобы зарегистрировать, где сохраняется расшифровка сеанса:

262 

263```javascript theme={null}

264on('classic.Stop', async ($, e, next) => {

265 // e имеет те же поля, которые hook Stop в файле настроек читает из stdin

266 $.ui.log('Transcript saved at ' + e.transcript_path)

267 // Передайте событие дальше, чтобы hooks Stop в ваших файлах настроек всё ещё запускались

268 return next(e)

269})

270```

271 

272Каждый раз, когда Claude заканчивает отвечать, тусклая строка в расшифровке даёт путь файла расшифровки.

273 

274<h2 id="run-alongside-other-mods">

275 Запускаться рядом с другими модами

276</h2>

277 

278Несколько модов могут подключить одно и то же событие, и любой из них может не удаться. Если ваш мод блокирует вызовы инструментов, проверьте его позицию в цепочке и что происходит, когда его hook не удаётся.

279 

280<h3 id="the-order-mods-run-in">

281 Порядок, в котором запускаются моды

282</h3>

283 

284Hooks на одно и то же событие образуют одну цепочку middleware. Каждый `next` мода вызывает hook следующего мода, и последний `next` достигает собственного поведения Claude Code. Первый мод является самым внешним: он видит событие перед другими и результат после них, и он решает, запускаются ли другие вообще. Более поздний мод не может остановить более ранний от просмотра события.

285 

286Claude Code упорядочивает цепочку по тому, откуда берётся каждый мод:

287 

2881. Встроенная защита `sec-default@builtin`, мод, встроенный в Claude Code, который `/plugin` перечисляет как `cc-plugin-sec-default`, где [он загружается](/docs/ru/plugins/mods/admin#know-what-happens-by-default), моды, которые ваша организация перечисляет в [`prependPlugins`](/docs/ru/plugins/mods/admin#install-your-organizations-mods), а затем любой другой мод, который считается модом вашей организации и не находится в `appendPlugins`

2892. Моды, которые вы устанавливаете

2903. Моды, которые ваша организация перечисляет в `appendPlugins`

2914. Другие моды, встроенные в Claude Code

292 

293Среди модов, которые вы устанавливаете, мод запускается перед модами, которые он перечисляет в `dependencies` в своём манифесте. В одном модуле hooks запускаются в порядке, в котором `register` вызвал `on`.

294 

295<h4 id="where-settings-hooks-run-in-the-order">

296 Где hooks настроек запускаются в порядке

297</h4>

298 

299Hooks `PreToolUse`, настроенные в файлах настроек, также запускаются во время вызова инструмента в фиксированных точках цепочки модов:

300 

301* **Hooks `PreToolUse` из управляемых настроек**: запускаются перед hook `tool.call` первого мода, и блокировка от одного из них является окончательной, поэтому ни один мод не видит вызов.

302* **Hooks `PreToolUse` из каждого другого файла настроек и из `hooks/hooks.json` плагинов**: запускаются после того, как последний мод вызовет `next`, как часть собственного поведения Claude Code. Мод, который отвечает на `tool.call` без вызова `next`, не позволяет им запускаться, и мод, который вызывает `next`, видит их решение в результате, который он возвращает.

303 

304[`tool.check`](/docs/ru/plugins/mods/reference#tools) — это событие, где Claude Code решает, может ли вызов инструмента запуститься. Оно срабатывает после этих hooks и правил разрешений, и `next(e)` разрешается в их решение. Hook на `tool.check` может вернуть другое решение, такое как `{ decision: 'allow' }`, поэтому он может одобрить вызов, который hook из второй группы заблокировал. [Расширить разрешения с помощью hooks](/docs/ru/permissions#extend-permissions-with-hooks) перечисляет, какие решения имеют приоритет над модом.

305 

306<h3 id="handle-a-hook-that-fails">

307 Обработать hook, который не удаётся

308</h3>

309 

310Hook, который не удаётся, не нарушает сеанс, и вы можете решить, что происходит вместо этого. Когда hook без обработчика `.catch` выбрасывает исключение, истекает по времени или возвращает результат неправильной формы, что происходит дальше, зависит от того, вызвал ли он `next`:

311 

312* **Он не удался перед вызовом `next`**: Claude Code пропускает его, и следующий обработчик запускается на его месте

313* **Он не удался после разрешения `next`**: этот результат стоит, и ничего не запускается второй раз

314 

315Одна строка называет мод, событие и причину, такую как `my-mod: tool.call hook skipped: threw Error: boom`. Где вы это читаете, зависит от сеанса, как [Узнать, почему мод ничего не делает](/docs/ru/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing) перечисляет. Hook `ui.render`, чей рисунок не проходит валидацию, сообщается иначе, как [Построить дерево из элементов](/docs/ru/plugins/mods/interface#build-a-tree-from-elements) описывает.

316 

317Чтобы сделать hook, который блокирует вызовы, не удаётся закрыто, добавьте обработчик ошибок `.catch`, который отвечает на его месте. Здесь `guard` — это ваша функция hook:

318 

319```javascript theme={null}

320// on возвращает регистрацию, и .catch присоединяет обработчик к этому одному hook

321on('tool.call', { tool: 'Bash' }, guard).catch(async ($, e, next) => {

322 // next.error.kind — это 'throw' или 'timeout', что говорит, как guard не удался

323 return { deny: 'The command guard failed, so this command was not run: ' + next.error.kind }

324})

325```

326 

327Пока `guard` работает, обработчик никогда не запускается. Когда `guard` выбрасывает исключение или истекает по времени при вызове Bash, Claude Code вызывает обработчик с тем же событием. Обработчик возвращает `{ deny }`, поэтому команда не запускается, и Claude читает текст с `throw` или `timeout` в конце. Без обработчика Claude Code пропустил бы `guard` и запустил бы команду. Обработчик имеет [одну секунду](/docs/ru/plugins/mods/reference#limits) для ответа.

328 

329<h2 id="next-steps">

330 Следующие шаги

331</h2>

332 

333* [Использовать mods API](/docs/ru/plugins/mods/api): добавлять команды и инструменты, вызывать модель и запускать работу по таймеру

334* [Рисовать в интерфейсе](/docs/ru/plugins/mods/interface): показывать то, что собирают ваши hooks, в панели или над подсказкой

335* [Тестировать мод](/docs/ru/plugins/mods/test): вызывать любое из этих событий из теста

336* [Справочник модов](/docs/ru/plugins/mods/reference): каждое событие, каждый метод mods API и ограничения

plugins/mods/interface.md +867 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Рисование в интерфейсе с помощью мода

6 

7> Рисуйте панели, полосу над приглашением, кнопки и текстовые поля из мода Claude Code, обрабатывайте нажатия и ввод, и сохраняйте состояние между перерисовками и сеансами.

8 

9Мод может рисовать свой собственный интерфейс в Claude Code и изменять части интерфейса, которые уже рисует Claude Code. Каждое место, где мод может рисовать, называется [сайтом рендеринга](/docs/ru/plugins/mods/reference#render-sites), например панель, полоса над приглашением или спиннер. Claude Code вызывает событие [`ui.render`](/docs/ru/plugins/mods/reference#interface) каждый раз, когда собирается рисовать сайт рендеринга, и ваш хук для этого события возвращает то, что нужно рисовать там.

10 

11На этой карте показано, где мод может рисовать в сеансе терминала:

12 

13<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5fda26b6609c62b68c6f9e528c1590ea" className="dark:hidden" alt="Map of a Claude Code terminal session. A mod can add a pane as a sidebar on the right, a toast at the top right of the transcript, a log line in the transcript, a band above the prompt, and a status line under the prompt. A mod can redraw messages, tool call rows, and the spinner. The prompt is Claude Code's own." width="600" height="336" data-path="images/mods-screen-map.svg" />

14 

15<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map-dark.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5b4161581a1bd2c0450b0c8b57bc1225" className="hidden dark:block" alt="Map of a Claude Code terminal session. A mod can add a pane as a sidebar on the right, a toast at the top right of the transcript, a log line in the transcript, a band above the prompt, and a status line under the prompt. A mod can redraw messages, tool call rows, and the spinner. The prompt is Claude Code's own." width="600" height="336" data-path="images/mods-screen-map-dark.svg" />

16 

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

18 

19Создайте свой [первый мод](/docs/ru/plugins/mods/create) перед тем, как начать здесь. Начните с рабочего примера, который создает панель с двумя вкладками и счетчиком, затем прочитайте раздел для каждой части, которую вы хотите изменить.

20 

21<Note>

22 Чтобы найти одно свойство или ограничение, см. [справку](/docs/ru/plugins/mods/reference#render-sites).

23</Note>

24 

25<h2 id="build-a-pane-with-tabs">

26 Создание панели с вкладками

27</h2>

28 

29В этом разделе вы создаете мод, который добавляет команду `/hello-tabs`, и команда открывает панель. Панель — это боковая панель рядом с расшифровкой в широком полноэкранном терминале или обрамленная область над приглашением в противном случае. Эта панель показывает две вкладки, и вторая вкладка имеет кнопку, которая добавляет единицу к счетчику. Счет остается там после перезагрузки Claude Code.

30 

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

32 

33<Frame>

34 <video autoPlay muted loop playsInline controls className="w-full dark:hidden" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-hello-tabs-light.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=49d520094d87b5b44bfe50fa49677f06" aria-label="The /hello-tabs command is typed at the Claude Code prompt and a framed pane opens above it, with '1: One' and '2: Two' across the top and the text 'This is the first tab.' The second tab shows an 'Add one' button beside 'Count: 1', and the count rises to 3. The pane then returns to the first tab." data-path="images/mods-hello-tabs-light.mp4" />

35 

36 <video autoPlay muted loop playsInline controls className="w-full hidden dark:block" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-hello-tabs-dark.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=ff7a14d713d6e5d3b0000efa8522ea4b" aria-label="The /hello-tabs command is typed at the Claude Code prompt and a framed pane opens above it, with '1: One' and '2: Two' across the top and the text 'This is the first tab.' The second tab shows an 'Add one' button beside 'Count: 1', and the count rises to 3. The pane then returns to the first tab." data-path="images/mods-hello-tabs-dark.mp4" />

37</Frame>

38 

39Claude Code не имеет встроенного элемента вкладок, поэтому вкладки — это две кнопки в ряду. Мод отслеживает, какая из них активна, и рисует содержимое этой вкладки под рядом.

40 

41<Steps>

42 <Step title="Создание плагина">

43 Мод — это плагин с манифестом, `hooks.json`, который указывает на ваш код, и файл кода. [Создание мода](/docs/ru/plugins/mods/create#write-a-mod-yourself) объясняет каждый из них. Создайте каталог с именем `hello-tabs` с каталогами `.claude-plugin` и `hooks` внутри него, затем сохраните первые два файла.

44 

45 Сохраните манифест как `hello-tabs/.claude-plugin/plugin.json`:

46 

47 ```json hello-tabs/.claude-plugin/plugin.json theme={null}

48 {

49 "name": "hello-tabs",

50 "version": "0.1.0",

51 "description": "Opens a pane with two tabs and a counter",

52 "author": { "name": "Your Name" }

53 }

54 ```

55 

56 Назовите точку входа в `hello-tabs/hooks/hooks.json`:

57 

58 ```json hello-tabs/hooks/hooks.json theme={null}

59 {

60 "modules": ["./register.js"]

61 }

62 ```

63 </Step>

64 

65 <Step title="Написание кода">

66 Код выполняет три задачи, по одной в каждом хуке:

67 

68 * Добавляет команду `/hello-tabs`

69 * Открывает панель при запуске этой команды

70 * Рисует содержимое панели: ряд вкладок и тело открытой вкладки

71 

72 Две переменные уровня модуля, `tab` и `count`, содержат состояние панели.

73 

74 Сохраните это как `hello-tabs/hooks/register.js`:

75 

76 ```javascript hello-tabs/hooks/register.js theme={null}

77 // The pane's id, used to open the pane and to recognize it when drawing

78 const PANE = 'hello-tabs'

79 

80 // What the pane shows: which tab is open, and the counter's value

81 let tab = 'one'

82 let count = 0

83 

84 export function register(on) {

85 // Runs before your first prompt, and again after a reload

86 on('session.start', async ($, e, next) => {

87 await $.command.register({ name: 'hello-tabs', description: 'Open the hello-tabs pane' })

88 // Load the count an earlier session saved, if there is one

89 const saved = await $.store.get('count')

90 if (typeof saved === 'number') count = saved

91 return next(e)

92 })

93 

94 // Runs when you type /hello-tabs

95 on('command.run', { command: 'hello-tabs' }, async ($) => {

96 // Open the pane, give it the keyboard, and let Esc close it

97 await $.ui.open({ id: PANE, title: 'Hello tabs', focus: true, closeOnEscape: true })

98 // Print nothing in the transcript

99 return {}

100 })

101 

102 // Runs each time Claude Code draws a pane

103 on('ui.render', { component: 'Pane' }, async ($, e, next) => {

104 // Leave other mods' panes alone

105 if (e.requestId !== PANE) return next(e)

106 // Get the elements this app can draw

107 const { Box, Text, Button } = $.ui.resolve(e)

108 // Ask Claude Code to run this hook again

109 const redraw = () => $.ui.invalidate('ui.render')

110 

111 // One tab: a button that switches to its tab when pressed

112 const tabButton = (name, label, hotkey) =>

113 Button({

114 key: 'tab-' + name,

115 label,

116 hotkey,

117 plain: true,

118 // Dim the tab that isn't open

119 dimColor: tab !== name,

120 onPress: () => {

121 tab = name

122 redraw()

123 },

124 })

125 

126 // What goes under the tabs, depending on which one is open

127 const body =

128 tab === 'one'

129 ? [Text({ children: ['This is the first tab.'] })]

130 : [

131 Box({

132 flexDirection: 'row',

133 columnGap: 2,

134 children: [

135 Button({

136 key: 'more',

137 label: 'Add one',

138 hotkey: 'a',

139 onPress: async () => {

140 count += 1

141 redraw()

142 // Save the count so it's there after a restart

143 await $.store.set('count', count)

144 },

145 }),

146 Text({ children: ['Count: ' + count] }),

147 ],

148 }),

149 ]

150 

151 // The whole pane: the row of tabs, a blank line, then the body

152 return Box({

153 flexDirection: 'column',

154 children: [

155 Box({

156 flexDirection: 'row',

157 columnGap: 3,

158 children: [tabButton('one', 'One', '1'), tabButton('two', 'Two', '2')],

159 }),

160 Text({ children: [' '] }),

161 ...body,

162 ],

163 })

164 })

165 }

166 ```

167 

168 Каждый хук также делает что-то, что код не делает явным:

169 

170 * **[`session.start`](/docs/ru/plugins/mods/reference#session)** также читает сохраненный счет из [`$.store`](#keep-state), хранилища ключ-значение, которое сохраняется между сеансами.

171 * **[`command.run`](/docs/ru/plugins/mods/api#add-a-command)** только сообщает Claude Code, что панель существует. Открытие панели ничего не рисует само по себе: Claude Code затем вызывает `ui.render`, чтобы спросить, что в ней находится.

172 * **`ui.render`** возвращает дерево элементов, `Box`, который содержит другие боксы, текст и кнопки, и строит его снова из `tab` и `count` каждый раз, когда он запускается.

173 

174 Нажатие кнопки запускает ее обратный вызов `onPress`, который изменяет переменную и вызывает `redraw`. Claude Code затем запускает хук `ui.render` снова, и хук строит новое дерево из новых значений. Каждое интерактивное рисование использует этот цикл рендеринга: обратный вызов изменяет состояние, и хук рисует снова из нового состояния.

175 </Step>

176 

177 <Step title="Открытие панели">

178 В вашей оболочке запустите Claude Code с помощью `claude --plugin-dir ./hello-tabs`. В приглашении Claude Code запустите `/hello-tabs`. Панель открывается с `1: One` и `2: Two` в верхней части. Нажмите `2`, затем нажмите `a`, горячую клавишу для **Add one**, несколько раз. Счет растет.

179 </Step>

180 

181 <Step title="Проверка того, что счет был сохранен">

182 Нажмите Esc, чтобы закрыть панель, затем выйдите из сеанса. В вашей оболочке запустите Claude Code снова с той же командой `claude --plugin-dir ./hello-tabs`, и в приглашении Claude Code запустите `/hello-tabs`. Счет находится там, где вы его оставили.

183 

184 Чтобы очистить счет, попросите мод вызвать `$.store.delete('count')`. [Сохранение состояния](#keep-state) охватывает, как долго длится каждый вид значения.

185 </Step>

186</Steps>

187 

188<h2 id="pick-where-to-draw">

189 Выбор места для рисования

190</h2>

191 

192Хук `ui.render` запускается для каждого сайта рендеринга, если вы не сузите его до того, который вы хотите рисовать. Чтобы выбрать сайт рендеринга, передайте фильтр, называемый [matcher](/docs/ru/plugins/mods/events#filter-which-events-a-hook-handles), в качестве второго аргумента для `on`. `{ component: 'Pane' }` запускает хук только для панелей. В хуке `e.component` называет сайт, `e.surface` говорит, какое приложение рисует, и `e.props` содержит собственные данные сайта. Для панели `e.requestId` — это `id`, с которым вы ее открыли.

193 

194Два сайта пусты, пока мод их не заполнит, панель и полоса. Выберите вкладку, чтобы увидеть, что это такое и как рисовать в них:

195 

196<Tabs>

197 <Tab title="Pane">

198 Панель — это боковая панель рядом с расшифровкой в широком полноэкранном терминале или обрамленная область над приглашением в противном случае. При открытии нескольких панелей каждая получает вкладку, которая показывает ее название.

199 

200 Панель появляется, когда ваш мод вызывает `$.ui.open` с `id`, который вы выбираете, как в `$.ui.open({ id: 'hello-tabs' })`. [Открытие панели в нужное время](#open-a-pane-at-the-right-time) охватывает другие поля и когда панель ждет более широкого терминала.

201 

202 Чтобы рисовать в вашей панели, отфильтруйте по `{ component: 'Pane' }` и проверьте, что `e.requestId` — это ваш `id`.

203 </Tab>

204 

205 <Tab title="Band above the prompt">

206 Полоса — это полоса прямо над вводом приглашения. Она всегда там, и каждый мод делит ее.

207 

208 Ваш хук возвращает дерево, чтобы показать что-то в полосе, или `next(e)`, чтобы показать ничего. Дерево заменяет то, что модов [после вашего](/docs/ru/plugins/mods/events#the-order-mods-run-in) рисуют там. Чтобы сохранить их, поместите результат `await next(e)` среди дочерних элементов [`Box`](#build-a-tree-from-elements) в вашем дереве.

209 

210 Чтобы рисовать в полосе, отфильтруйте по `{ component: 'AbovePrompt' }`.

211 </Tab>

212</Tabs>

213 

214<h3 id="change-what-claude-code-already-draws">

215 Изменение того, что уже рисует Claude Code

216</h3>

217 

218Claude Code рисует большую часть своего интерфейса сам: сообщения, строки вызовов инструментов, спиннер и многое другое. Каждая из этих частей также является сайтом рендеринга, поэтому мод может переделать стиль или заменить его. Чтобы изменить один, отфильтруйте ваш хук `ui.render` по его имени из этой таблицы:

219 

220| Сайт | Что это такое |

221| :- | :- |

222| `UserMessage`, `AssistantMessage` | Сообщение в расшифровке |

223| `ToolUse`, `ToolResult`, `ToolGroup` | Строка вызова инструмента, его результат и свернутый запуск вызовов |

224| `CommandOutput` | Строка, которую напечатала команда |

225| `AskUserQuestion` | Диалог, который Claude открывает, чтобы задать вам вопрос |

226| `Spinner`, `ToolProgress`, `TurnDuration` | Строки состояния для хода: строка, которая анимируется, пока Claude работает, строка прямого прогресса работающего инструмента и строка, которая закрывает ход |

227| `InfoNotice`, `SessionMode`, `PromptHint` | Строки состояния под логотипом, метки режима в нижнем колонтитуле и строка подсказки под приглашением |

228 

229На сайте, который Claude Code уже рисует, ваш хук имеет три варианта: изменить деталь, заменить рисование или оставить его в покое. Выберите вкладку, чтобы увидеть каждый из них, применяемый к спиннеру. Примеры читают переменную `calls`, которую другой хук считает, как в [учебном моде](/docs/ru/plugins/mods/create#write-a-mod-yourself).

230 

231<Tabs>

232 <Tab title="Change a detail">

233 Чтобы сохранить рисование Claude Code и изменить одну его часть, передайте `next` копию события с измененными `props`. Этот хук изменяет текст после слова спиннера:

234 

235 ```javascript theme={null}

236 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

237 // Keep Claude Code's spinner, and change the text after its word

238 return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })

239 })

240 ```

241 

242 Спиннер сохраняет свою анимацию и свое слово, и ваш текст следует за словом:

243 

244 ```text theme={null}

245 Thinking · tool calls: 2…

246 ```

247 </Tab>

248 

249 <Tab title="Replace the drawing">

250 Чтобы нарисовать что-то свое на месте сайта, верните дерево и не вызывайте `next`. Этот хук рисует одну строку текста там, где был бы спиннер:

251 

252 ```javascript theme={null}

253 on('ui.render', { component: 'Spinner' }, async ($, e) => {

254 const { Text } = $.ui.resolve(e)

255 // No call to next, so this line is drawn in the spinner's place

256 return Text({ children: ['Claude has made ' + calls + ' tool calls'] })

257 })

258 ```

259 

260 Пока Claude работает, ваша строка показывается и спиннер Claude Code не показывается:

261 

262 ```text theme={null}

263 Claude has made 2 tool calls

264 ```

265 </Tab>

266 

267 <Tab title="Leave it alone">

268 Чтобы оставить сайт так, как его рисует Claude Code, верните `next(e)`. Хук часто делает это для некоторых событий и не для других. Этот хук оставляет спиннер в покое, пока нечего считать:

269 

270 ```javascript theme={null}

271 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

272 // Nothing to show yet, so pass the event on unchanged

273 if (calls === 0) return next(e)

274 return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })

275 })

276 ```

277 

278 До первого вызова инструмента спиннер выглядит так, как он выглядит без мода:

279 

280 ```text theme={null}

281 Thinking…

282 ```

283 </Tab>

284</Tabs>

285 

286Приглашение разрешения не является сайтом рендеринга, поэтому мод не может изменить то, что оно показывает. Диалог вопроса, `AskUserQuestion`, является одним, поэтому мод может изменить это.

287 

288Терминал и приложение Desktop не вызывают все одни и те же сайты. `Pane`, `AbovePrompt`, `Spinner` и сайты расшифровки работают в обоих. Несколько других строк состояния вызываются только в терминале. Таблица [сайтов рендеринга](/docs/ru/plugins/mods/reference#render-sites) указывает, где каждый из них вызывается.

289 

290<h3 id="open-a-pane-at-the-right-time">

291 Открытие панели в нужное время

292</h3>

293 

294Панель появляется только когда ваш мод ее открывает. То, как и когда вы ее открываете, определяет, получает ли она фокус клавиатуры, сколько места она запрашивает и появляется ли она вообще в узком терминале.

295 

296Чтобы открыть панель, вызовите [`$.ui.open`](/docs/ru/plugins/mods/reference#mods-api-methods) с `id`, который вы выбираете. `id` — это имя панели: ваш хук `ui.render` проверяет его, и вы передаете его снова, чтобы закрыть панель.

297 

298```javascript theme={null}

299await $.ui.open({ id: 'hello-tabs', title: 'Hello tabs', focus: true })

300```

301 

302Чтобы закрыть панель, вызовите `$.ui.close` с `id`, с которым вы ее открыли:

303 

304```javascript theme={null}

305await $.ui.close({ id: 'hello-tabs' })

306```

307 

308Помимо `id`, `$.ui.open` принимает эти необязательные поля:

309 

310| Поле | Что оно делает |

311| :- | :- |

312| `title` | Метка вкладки панели, когда открыто несколько панелей |

313| `focus` | Запрашивает [фокус клавиатуры](#know-which-keys-your-mod-can-receive) |

314| `closeOnEscape` | Делает Esc закрытие панели. Передайте `true` или оставьте поле, потому что Claude Code отказывает `false`. |

315| `holdToasts` | Удерживает всплывающие уведомления, небольшие уведомления от [`$.ui.toast`](/docs/ru/plugins/mods/api#show-something-without-starting-a-turn), пока панель не закроется |

316| `rows` | Высота, которую нужно запросить, когда панель находится над приглашением. По умолчанию треть пространства. |

317| `columns` | Ширина, которую нужно запросить, когда панель находится рядом с расшифровкой |

318 

319Чтобы позволить команде открыть панель, пока Claude работает, добавьте `immediate: true` при [регистрации команды](/docs/ru/plugins/mods/api#add-a-command). Без этого команда, введенная во время хода, ждет конца хода.

320 

321<h4 id="when-a-pane-waits-for-a-wider-terminal">

322 Когда панель ждет более широкого терминала

323</h4>

324 

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

326 

327* **Открыто чем-то, что сделал пользователь**, например командой, которую он запустил, или кнопкой, которую он нажал, панель появляется при любой ширине

328* **Открыто вашим модом, действующим самостоятельно**, например из таймера или хука [`turn.start`](/docs/ru/plugins/mods/events#follow-a-turn), панель появляется только в терминале шириной не менее 144 столбцов. После того, как пользователь открыл эту панель один раз сам, достаточно 110 столбцов.

329 

330Когда панель появляется, `$.ui.open` разрешается в `{ isPlaced: true }`. Когда панель ждет, `isPlaced` — это `false` и `reason` — это строка, которая говорит почему. Ожидающая панель появляется, когда пользователь ее открывает или расширяет терминал. Чтобы сказать, что что-то доступно без открытия панели, вызовите `$.ui.toast('Your message')`, которая показывает небольшое уведомление, которое исчезает через несколько секунд.

331 

332<h2 id="build-a-tree-from-elements">

333 Построение дерева из элементов

334</h2>

335 

336То, что возвращает хук `ui.render`, — это дерево элементов: описание того, что рисовать, состоящее из боксов, текста и элементов управления, вложенных друг в друга. Вы описываете рисование, и Claude Code рисует его в терминале или приложении Desktop.

337 

338Чтобы получить элементы, вызовите `$.ui.resolve(e)` в вашем хуке, как в `const { Box, Text, Button } = $.ui.resolve(e)`. Каждый элемент — это функция. Вы передаете ей свойства, и вы помещаете элементы и строки, которые идут внутри него, в `children`.

339 

340Большинство рисунков используют четыре элемента. Выберите вкладку, чтобы увидеть каждый из них и как терминал его рисует:

341 

342<Tabs>

343 <Tab title="Text">

344 `Text` рисует строку с необязательным стилем, таким как `bold` и `color`:

345 

346 ```javascript theme={null}

347 Text({ children: ['This is the first tab.'] })

348 ```

349 

350 ```text theme={null}

351 This is the first tab.

352 ```

353 </Tab>

354 

355 <Tab title="Box">

356 `Box` расставляет то, что находится внутри него, в ряд или столбец. Этот помещает кнопку и строку текста рядом, два столбца отдельно:

357 

358 ```javascript theme={null}

359 Box({

360 flexDirection: 'row',

361 columnGap: 2,

362 children: [

363 Button({ key: 'more', label: 'Add one', onPress: addOne }),

364 Text({ children: ['Count: 0'] }),

365 ],

366 })

367 ```

368 

369 ```text theme={null}

370 [ Add one ] Count: 0

371 ```

372 </Tab>

373 

374 <Tab title="Button">

375 `Button` — это элемент управления, который пользователь может нажать. Он запускает ваш обратный вызов `onPress`. С `plain: true` он не имеет скобок и показывает его горячую клавишу:

376 

377 ```javascript theme={null}

378 Button({ key: 'more', label: 'Add one', onPress: addOne })

379 Button({ key: 'tab-one', label: 'One', hotkey: '1', plain: true, onPress: showTabOne })

380 ```

381 

382 ```text theme={null}

383 [ Add one ]

384 1: One

385 ```

386 </Tab>

387 

388 <Tab title="Input">

389 `Input` — это текстовое поле. Он запускает ваш обратный вызов `onSubmit` с текстом, когда пользователь нажимает Enter:

390 

391 ```javascript theme={null}

392 Input({

393 key: 'new-note',

394 label: 'Note',

395 placeholder: 'Type a note and press Enter',

396 value: '',

397 submitLabel: 'add',

398 onSubmit: addNote,

399 })

400 ```

401 

402 ```text theme={null}

403 Note: Type a note and press Enter ⏎ add

404 ```

405 </Tab>

406</Tabs>

407 

408Эта таблица перечисляет каждый элемент:

409 

410| Элемент | Что он рисует | Где |

411| :- | :- | :- |

412| `Box` | Контейнер flex. Принимает свойства макета, такие как `flexDirection`, `columnGap`, `padding`, `borderStyle` и `width`. | Везде |

413| `Text` | Стилизованный текст. Принимает `color`, `bold`, `dimColor`, `italic` и `wrap`. `color` — это ключ темы или цвет, такой как `'red'`. `wrap` — это `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'` или `'truncate-end'`. | Везде |

414| `Button` | Элемент управления, который вызывает `onPress` | Везде |

415| `Link`, `Code`, `Markdown` | Ссылка с `href` и необязательной `label`, блок кода и текст, отформатированный так, как ответы Claude. `Markdown` принимает свое содержимое в свойстве `text`, а не в `children`, и нуждается в `key`, когда вы передаете `onLinkPress`. | Везде |

416| `Input`, `Select` | Текстовое поле и средство выбора | Терминал, Desktop |

417| `Svg` | Документ SVG | Desktop |

418| `Client` | Область, нарисованная вторым файлом вашего, для анимации и ввода указателя. Этот файл не получает API модов. Он достигает ваших хуков только путем отправки данных, которые поступают как событие `ui.message`. | Терминал, Desktop |

419| `Raster`, `Image` | [Сетка цветных ячеек](#draw-a-grid-of-colored-cells) и изображение | Терминал |

420 

421Если ваш модуль — это файл `.tsx` или `.jsx`, вы можете написать дерево как JSX. Сначала деструктурируйте элементы из `$.ui.resolve(e)`, потому что модуль хуков не имеет глобальных элементов.

422 

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

424 

425В сеансе, запущенном с `--plugin-dir`, строка расшифровки говорит об этом, например `ui.render (Pane) refused: Text prop "bogusProp" is not allowed; the engine drew its own`. [Журнал отладки](/docs/ru/plugins/mods/troubleshoot#read-the-debug-log) записывает это как `ui.render (Pane): a hook returned a tree that does not validate` с той же причиной. Ничего больше не появляется в сеансе, поэтому когда рисование не показывается, проверьте эту строку или журнал.

426 

427<h3 id="draw-a-grid-of-colored-cells">

428 Рисование сетки цветных ячеек

429</h3>

430 

431Для тепловой карты, спарклайна или игровой доски в терминале нарисуйте один `Raster`, а не `Box` для каждой ячейки. `Raster` принимает `key`, его размер в `columns` и `rows`, и `cells`, который упаковывает каждую ячейку в одну строку. Каждая ячейка — это три числа: кодовая точка символа, его цвет и цвет фона. Цвет — это шестнадцатеричное число с двумя цифрами каждого для красного, зеленого и синего, например `0xc62828` для красного или `0x01000000` для терминала по умолчанию.

432 

433Приложение Desktop не имеет `Raster`, поэтому проверьте `e.surface` и нарисуйте текст там. Это тело панели рисует тепловую карту три на два:

434 

435```javascript theme={null}

436// The value that means "use the terminal's default color"

437const DEFAULT_COLOR = 0x01000000

438 

439// Pack rows of [character, color] pairs into the one string a Raster takes

440// One cell is three numbers: the character's code point, its color, and its background

441function cellsOf(rows) {

442 const numbers = rows.flat().flatMap(([char, color]) => [char.codePointAt(0), color, DEFAULT_COLOR])

443 return new Uint8Array(Uint32Array.from(numbers).buffer).toBase64()

444}

445 

446on('ui.render', { component: 'Pane' }, async ($, e, next) => {

447 // Draw only in the pane opened with the id 'heat'

448 if (e.requestId !== 'heat') return next(e)

449 const { Box, Text, Raster } = $.ui.resolve(e)

450 // Two rows of three cells, each a block character and its color

451 const rows = [

452 [['█', 0x2e7d32], ['█', 0xf9a825], ['█', 0xc62828]],

453 [['█', 0x2e7d32], ['█', 0x2e7d32], ['█', 0xf9a825]],

454 ]

455 if (e.surface !== 'terminal') {

456 return Text({ children: ['The heat map needs the terminal.'] })

457 }

458 return Box({

459 flexDirection: 'column',

460 children: [Raster({ key: 'grid', columns: 3, rows: 2, cells: cellsOf(rows) })],

461 })

462})

463```

464 

465В терминале панель показывает сетку:

466 

467<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-heat-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=b91bcce3bad74bc851149133d4acc5d5" alt="A pane in the terminal that holds a small grid of colored blocks, two rows of three. The top row is green, amber, and red. The bottom row is green, green, and amber." width="360" height="132" data-path="images/mods-heat-map.svg" />

468 

469Массив `rows` — это часть, которую вы бы изменили, и `cellsOf` превращает его в упакованную строку. Хук рисует только в панели, чей `id` — это `heat`, поэтому откройте один с `$.ui.open({ id: 'heat' })` из команды, как пример [`hello-tabs`](#build-a-pane-with-tabs) открывает свою панель.

470 

471Каждый символ должен быть шириной в одну ячейку. Чтобы анимировать `Raster`, который уже на экране, вызовите `$.ui.blit` с `id` панели как `requestId`, `key` `Raster`, тем же размером и новыми ячейками. Для этого примера это `$.ui.blit({ requestId: 'heat', key: 'grid', columns: 3, rows: 2, cells: cellsOf(newRows) })`. Он перерисовывает только этот элемент без повторного запуска вашего хука `ui.render`.

472 

473<h2 id="respond-to-presses-and-typing">

474 Ответ на нажатия и ввод

475</h2>

476 

477Когда пользователь нажимает кнопку, вводит текст в поле или выбирает из списка, который нарисовал ваш мод, Claude Code вызывает функцию, которую вы дали этому элементу управления, и она запускается в вашем модуле. Каждый элемент управления принимает свои собственные обратные вызовы:

478 

479* **`Button`**: принимает `onPress(e)`, где `e.surface` — это приложение, из которого пришло нажатие

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

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

482 

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

484 

485<h3 id="know-which-keys-your-mod-can-receive">

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

487</h3>

488 

489Ваш мод никогда не читает клавиатуру сам. Пользователь нажимает клавишу, Claude Code решает, для какого из ваших элементов управления она предназначена, и запускается обратный вызов этого элемента управления. Кроме [горячей клавиши цифры на полосе](/docs/ru/plugins/mods/reference#elements), это происходит только пока ваша панель или полоса имеет фокус клавиатуры. Остальное время клавиши идут к приглашению.

490 

491<h4 id="how-a-pane-gets-keyboard-focus">

492 Как панель получает фокус клавиатуры

493</h4>

494 

495Панель получает фокус клавиатуры одним из трех способов:

496 

497* Ваш мод открывает его с `focus: true` из команды или нажатия

498* Пользователь нажимает Ctrl+X, затем Tab

499* Пользователь нажимает на него

500 

501Claude Code предоставляет `focus: true` только пока приглашение пусто и ничто другое не имеет фокус клавиатуры. Панель, которая открывается, пока пользователь печатает, не берет его нажатия клавиш.

502 

503<h4 id="what-each-key-does">

504 Что делает каждая клавиша

505</h4>

506 

507Эта таблица перечисляет, что делает клавиша, пока ваша панель или полоса имеет фокус клавиатуры:

508 

509| Клавиша | Что она делает |

510| :- | :- |

511| Tab | Переходит к следующему элементу управления |

512| Up и Down | Перемещаются между элементами управления, пока ваше рисование подходит. Когда панель или полоса имеет больше строк, чем может показать, они прокручивают ее. |

513| Enter | Нажимает сфокусированный `Button`, отправляет сфокусированный `Input` или выбирает в `Select` |

514| Горячая клавиша кнопки | Нажимает эту кнопку. Пока `Input` имеет фокус, каждая печатаемая клавиша идет в поле. |

515| Esc | Возвращает фокус клавиатуры к приглашению. С `closeOnEscape: true`, он также закрывает панель. |

516 

517Мод не может привязать Tab или клавиши со стрелками к чему-либо еще, поэтому игра управляется с помощью `w`, `a`, `s` и `d`.

518 

519<h4 id="set-a-hotkey-and-the-first-focus">

520 Установка горячей клавиши и первого фокуса

521</h4>

522 

523Два свойства элемента управления решают, как клавиатура его достигает:

524 

525* **`hotkey`**: чтобы позволить пользователю нажать `Button` одной клавишей, дайте ему `hotkey` одной цифры или одной строчной буквы, как в `hotkey: 'a'`

526* **`autoFocus`**: чтобы выбрать, какой элемент управления имеет фокус при открытии панели, добавьте `autoFocus: true` к нему. Оставьте свойство на других, потому что Claude Code отказывает `autoFocus: false`.

527 

528То, как горячая клавиша показывается, зависит от кнопки и приложения:

529 

530| Кнопка | В терминале | В приложении Desktop |

531| :- | :- | :- |

532| С скобками, по умолчанию | `[ Add one ]`, без показанной горячей клавиши | Метка с маленькой клавишей рядом |

533| С `plain: true` | `1: One` | Метка с маленькой клавишей рядом |

534 

535В терминале назовите клавишу в метке кнопки в скобках или используйте `plain: true`, чтобы пользователь мог видеть, что нажать. [Справка элементов](/docs/ru/plugins/mods/reference#elements) имеет другие правила `Button`: `action`, горячие клавиши цифр на полосе и две кнопки на одной горячей клавише.

536 

537<h3 id="take-typed-input-and-draw-a-row-for-each-item">

538 Получение введенного текста и рисование строки для каждого элемента

539</h3>

540 

541Многие панели — это текстовое поле со списком под ним. Пример в этом разделе — панель заметок: вы вводите заметку и нажимаете Enter, чтобы добавить ее, и каждая заметка имеет кнопку `x`, которая удаляет ее. С двумя добавленными заметками терминал рисует панель таким образом:

542 

543```text theme={null}

544╭──────────────────────────────────────────────────────────╮

545│ Note: Type a note and press Enter ⏎ add ✕ │

546│ x buy milk │

547│ x call bob │

548╰──────────────────────────────────────────────────────────╯

549```

550 

551Пример использует две техники:

552 

553* **Получение введенного текста**: `Input` вызывает `onSubmit(value)` с текстом поля, когда пользователь нажимает Enter, и `onInput(value)` при каждом изменении

554* **Рисование списка**: отобразите ваши данные в одну строку каждый, и дайте каждой кнопке строки свой собственный `key`

555 

556Этот хук рисует содержимое панели:

557 

558```javascript theme={null}

559// The list the pane draws

560let notes = []

561 

562on('ui.render', { component: 'Pane' }, async ($, e, next) => {

563 // Draw only in the pane opened with the id 'notes'

564 if (e.requestId !== 'notes') return next(e)

565 const { Box, Text, Button, Input } = $.ui.resolve(e)

566 const redraw = () => $.ui.invalidate('ui.render')

567 

568 return Box({

569 flexDirection: 'column',

570 children: [

571 Input({

572 key: 'new-note',

573 label: 'Note',

574 placeholder: 'Type a note and press Enter',

575 // Draw the field empty each time, which clears it after a submit

576 value: '',

577 submitLabel: 'add',

578 autoFocus: true,

579 // Runs when you press Enter in the field

580 onSubmit: async (value) => {

581 // Ignore an empty line

582 if (!value.trim()) return

583 notes = [...notes, value.trim()]

584 redraw()

585 await $.store.set('notes', notes)

586 },

587 }),

588 // One row for each note: a delete button, then the note's text

589 ...notes.map((note, i) =>

590 Box({

591 flexDirection: 'row',

592 columnGap: 1,

593 children: [

594 Button({

595 // A key of its own, so each row's button can be told apart

596 key: 'delete-' + i,

597 label: 'x',

598 plain: true,

599 onPress: async () => {

600 notes = notes.filter((_, j) => j !== i)

601 redraw()

602 await $.store.set('notes', notes)

603 },

604 }),

605 Text({ children: [note] }),

606 ],

607 }),

608 ),

609 ],

610 })

611})

612```

613 

614Чтобы попробовать панель:

615 

616* **Добавить заметку**: введите строку и нажмите Enter. Строка появляется как новая строка, и поле очищается.

617* **Удалить заметку**: нажимайте Tab, пока кнопка `x` заметки не получит фокус, затем нажмите Enter. `x` — это метка кнопки, а не горячая клавиша, поэтому ввод буквы не нажимает ее.

618 

619Каждое изменение следует тому же циклу рендеринга, что и `hello-tabs`: обратный вызов изменяет `notes`, вызывает `redraw` и сохраняет список в `$.store`.

620 

621Поле очищается после каждой отправки из-за его свойства `value`. `value` — это текст, который поле содержит при его рисовании, и ввод пользователя заменяет его до тех пор, пока ваш хук не нарисует поле снова. Пример всегда рисует поле с `''`.

622 

623Пример сохраняет заметки и не загружает их. Чтобы вернуть их в следующем сеансе, прочитайте их в хуке `session.start`, как `hello-tabs` читает `count`.

624 

625Три свойства составляют строку поля, `Note: Type a note and press Enter ⏎ add`:

626 

627| Свойство | В примере | Что это такое |

628| :- | :- | :- |

629| `label` | `Note` | Текст перед полем. Терминал рисует `: ` после него. |

630| `placeholder` | `Type a note and press Enter` | Тусклый текст, который показывается, пока поле пусто |

631| `submitLabel` | `add` | Слово после `⏎`, которое говорит, что делает Enter |

632 

633Отправка `Input` не запускает ход, если ваш обратный вызов не вызывает [`$.prompt.submit`](/docs/ru/plugins/mods/api#start-a-turn-from-a-background-job).

634 

635<h2 id="redraw-when-something-changes">

636 Перерисовка сайта

637</h2>

638 

639Рисование — это снимок: оно показывает то, что ваш хук `ui.render` вернул в последний раз, когда хук запустился. Чтобы показать что-то новое, хук должен запуститься снова. Claude Code запускает его снова для некоторых изменений, и ваш мод просит остальное.

640 

641<h3 id="when-claude-code-redraws-without-being-asked">

642 Когда Claude Code перерисовывает без запроса

643</h3>

644 

645Claude Code запускает ваш хук `ui.render` снова, когда свойства сайта изменяются или ширина терминала изменяется. Он не запускает хук на таймере и не может сказать, когда переменная в вашем модуле изменяется.

646 

647<h3 id="redraw-when-your-data-changes">

648 Перерисовка при изменении ваших данных

649</h3>

650 

651Чтобы ваши сайты были нарисованы снова после изменения ваших собственных данных, вызовите `$.ui.invalidate('ui.render')`. Эта панель считает нажатия. Обратный вызов кнопки изменяет `count`, затем просит перерисовку:

652 

653```javascript theme={null}

654let count = 0

655 

656on('ui.render', { component: 'Pane' }, async ($, e, next) => {

657 if (e.requestId !== 'counter') return next(e)

658 const { Box, Text, Button } = $.ui.resolve(e)

659 return Box({

660 flexDirection: 'row',

661 columnGap: 2,

662 children: [

663 Button({

664 key: 'more',

665 label: 'Add one',

666 onPress: () => {

667 count += 1

668 // The data changed, so ask Claude Code to draw the pane again

669 $.ui.invalidate('ui.render')

670 },

671 }),

672 Text({ children: ['Count: ' + count] }),

673 ],

674 })

675})

676```

677 

678Каждое нажатие поднимает число в панели. Пример [`hello-tabs`](#build-a-pane-with-tabs) оборачивает тот же вызов в свою функцию `redraw`.

679 

680Значение, которое вы сохраняете в [`$.state`](#keep-a-value-in-\$-state), не нуждается в вызове, потому что написание значения перерисовывает сайты, которые его читают.

681 

682<h3 id="redraw-on-a-timer">

683 Перерисовка на таймере

684</h3>

685 

686Чтобы сохранить часы, обратный отсчет или значение извне сеанса в актуальном состоянии, перерисовывайте по расписанию. Запустите таймер в хуке `session.start` модуля. Если модуль уже имеет один, как `hello-tabs`, добавьте строку [`$.clock.every`](/docs/ru/plugins/mods/api#run-work-in-the-background) к нему:

687 

688```javascript theme={null}

689on('session.start', async ($, e, next) => {

690 // Every 1000 milliseconds, ask Claude Code to draw your sites again

691 $.clock.every(1000, () => $.ui.invalidate('ui.render'))

692 return next(e)

693})

694```

695 

696Claude Code теперь запускает ваш хук `ui.render` один раз в секунду. Таймер останавливается при перезагрузке модуля, и новая копия модуля запускает свой собственный.

697 

698<h3 id="how-often-a-site-can-redraw">

699 Как часто сайт может перерисовываться

700</h3>

701 

702Claude Code ограничивает, как часто он перерисовывает сайт, поэтому ваш мод может вызывать `$.ui.invalidate` так часто, как его данные изменяются. Видимая панель и полоса имеют более высокий лимит, чем другие сайты, и [таблица лимитов](/docs/ru/plugins/mods/reference#limits) содержит цифры.

703 

704Вызовы, которые приходят быстрее, чем лимит, объединяются в одну перерисовку. Эта перерисовка запускает ваш хук один раз, и хук читает ваши данные такими, какие они есть в этот момент, поэтому показывается последнее значение и значения между ними не показываются. Анимация не может работать быстрее, чем лимит.

705 

706<h2 id="keep-state">

707 Сохранение состояния

708</h2>

709 

710Мод имеет три места для сохранения значения, и они отличаются тем, как долго значение длится: пока модуль не перезагрузится, пока сеанс не закончится или от одного сеанса к другому. Выбирайте по тому, как долго значение должно длиться:

711 

712| Сохраняйте это в | Это длится до | Используйте это для |

713| :- | :- | :- |

714| Переменная уровня модуля | Модуль перезагружается, что происходит каждый раз, когда вы сохраняете файл во время разработки | Значения, которые вы можете потерять, как `tab` в `hello-tabs` |

715| `$.state` | Сеанс заканчивается, или пользователь запускает `/clear`, `/resume` или `/branch` | Значения, от которых зависит рисование, которые должны пережить перезагрузку |

716| `$.store` | Ваш мод удаляет его, или ни один сеанс не читает и не пишет в хранилище в течение [`cleanupPeriodDays`](/docs/ru/settings-reference#cleanupperioddays). Хранилище — это хранилище ключ-значение, сохраненное как файл JSON вашего плагина под `~/.claude/plugins/store/`. | Настройки, история, все, что пользователь ожидает найти в следующий раз |

717 

718`$.store.get(key)` разрешается в значение или `undefined`, и `$.store.set(key, value)` принимает любое значение JSON.

719 

720<h3 id="keep-a-value-in-state">

721 Сохранение значения в `$.state`

722</h3>

723 

724`$.state` содержит значения на протяжении сеанса, и он перерисовывает для вас. Это реактивное состояние: хук `ui.render`, который читает значение, подписывается на него, поэтому Claude Code перерисовывает этот сайт каждый раз, когда вы пишете значение, и вам не нужно вызывать `$.ui.invalidate`. Значение в `$.state` также пережит перезагрузку модуля, которую переменная не пережит.

725 

726Чтобы установить его, объявите ваши значения, укажите ваш манифест на объявление, затем определите и используйте каждое значение. Примеры перемещают `count` из `hello-tabs` в `$.state`.

727 

728<h4 id="declare-the-values">

729 Объявление значений

730</h4>

731 

732Объявите значения в файле типов. Внешний ключ — это имя вашего плагина, и каждая запись под ним — это значение и его тип. Сохраните это как `hello-tabs/types/index.d.ts`:

733 

734```typescript hello-tabs/types/index.d.ts theme={null}

735declare module 'claude-code' {

736 interface PluginState {

737 'hello-tabs': {

738 tab: 'one' | 'two'

739 count: number

740 }

741 }

742}

743```

744 

745<h4 id="point-the-manifest-at-the-declaration">

746 Указание манифеста на объявление

747</h4>

748 

749Чтобы позволить `claude plugin validate` проверить ваш код против этого файла, добавьте поле `types` в манифест с его путем:

750 

751```json hello-tabs/.claude-plugin/plugin.json theme={null}

752{

753 "name": "hello-tabs",

754 "version": "0.1.0",

755 "description": "Opens a pane with two tabs and a counter",

756 "author": { "name": "Your Name" },

757 "types": "./types/index.d.ts"

758}

759```

760 

761<h4 id="define-read-and-write-a-value">

762 Определение, чтение и запись значения

763</h4>

764 

765В вашем модуле определите каждое значение с по умолчанию, прочитайте его при рисовании и напишите его из обратного вызова. `atom` называет значение и его по умолчанию, `read` возвращает его, и `update` пишет его. Три помощника вызывают `$.state.get` и `$.state.set` для вас:

766 

767```javascript theme={null}

768import { atom, read, update } from 'claude-code'

769 

770// At the top of the module: name the value and give its default

771const count = atom({ plugin: 'hello-tabs', key: 'count' }, 0)

772 

773// In the ui.render hook: read the value to draw it

774const n = await read($, count)

775 

776// In a Button: write a new value from the old one

777onPress: () => update($, count, (value) => value + 1)

778```

779 

780Потому что хук `ui.render` прочитал `count`, Claude Code запускает хук снова каждый раз, когда кнопка пишет его.

781 

782Три правила применяются к коду:

783 

784* **Напишите `plugin` и `key` как буквальные строки**: `claude plugin validate` читает их из вашего источника

785* **Объявите каждое значение в файле типов**: в противном случае валидация не пройдет с `hello-tabs.count is not declared`

786* **Напишите из обратного вызова или хука другого события**: хук `ui.render` может читать состояние и не может писать его, поэтому пишите из `onPress`, `onSubmit` или хука для другого события

787 

788<h4 id="change-hello-tabs-to-use-state">

789 Изменение `hello-tabs` для использования `$.state`

790</h4>

791 

792Чтобы переместить `count` в `hello-tabs` в `$.state`, измените каждую строку, которая его использует:

793 

794* **В верхней части модуля**: добавьте строку `import` и замените `let count = 0` на строку `atom`

795* **В хуке `ui.render`**: добавьте строку `read` перед `tabButton` и нарисуйте `'Count: ' + n` в `Text`

796* **В кнопке Add one**: замените `onPress` на тот, что в [Сохранение из более чем одного сеанса](#save-from-more-than-one-session), который сохраняет счет, а также пишет его

797* **В хуке `session.start`**: замените две строки, которые читают `saved`, на вызов `loadCount` из [Загрузка сохраненного значения снова после `/clear`](#load-a-saved-value-again-after-clear)

798 

799Сохраняйте `redraw` для кнопок вкладок, потому что `tab` все еще переменная.

800 

801<h3 id="load-a-saved-value-again-after-clear">

802 Загрузка сохраненного значения снова после `/clear`

803</h3>

804 

805Если ваш мод копирует сохраненное значение из `$.store` в `$.state` при `session.start`, он должен скопировать его снова после `/clear`, `/resume` или `/branch`. Эти команды возвращают каждое значение `$.state` к его по умолчанию, и `session.start` не запускается снова. [`classic.SessionStart`](/docs/ru/plugins/mods/events#hook-the-settings-hook-events) запускается после каждого из них, с `e.source`, установленным на `clear`, `resume` или `fork`, поэтому скопируйте значение снова в хук на нем. В противном случае ваше рисование показывает по умолчанию, и обратный вызов, который сохраняет значение `$.state`, пишет по умолчанию над тем, что вы сохранили.

806 

807Этот код загружает `count` из обоих хуков. Он строится на версии `$.state` `hello-tabs`, где `count` — это атом и `update` импортируется. Поместите `loadCount` выше `register` и добавьте вызов `loadCount` к хуку `session.start`, который у вас уже есть. `classic.SessionStart` также запускается при запуске и после компактирования, которое не сбрасывает `$.state`, поэтому фильтр на `source` сохраняет хук к трем сбросам:

808 

809```javascript theme={null}

810// Copy the saved count from $.store into $.state, or 0 if nothing is saved

811async function loadCount($) {

812 const saved = Number((await $.store.get('count')) ?? 0)

813 await update($, count, () => saved)

814}

815 

816// Runs before your first prompt, and again after a reload

817on('session.start', async ($, e, next) => {

818 await loadCount($)

819 return next(e)

820})

821 

822// Runs again after /clear, /resume, and /branch, which reports fork

823on('classic.SessionStart', { source: ['clear', 'resume', 'fork'] }, async ($, e, next) => {

824 await loadCount($)

825 return next(e)

826})

827```

828 

829С обоими хуками на месте, панель показывает сохраненный счет после `/clear` и не `0`, и следующее нажатие **Add one** добавляет к сохраненному счету.

830 

831`loadCount` пишет сохраненное значение над тем, что в `$.state`, и `session.start` запускается снова каждый раз, когда модуль перезагружается. Чтобы хранилище не отставало, сохраняйте при каждом изменении, как кнопка **Add one** делает.

832 

833Чтобы проверить перезагрузку без сеанса, [протестируйте рисование после `/clear`](/docs/ru/plugins/mods/test#test-a-drawing-after-clear).

834 

835<h3 id="save-from-more-than-one-session">

836 Сохранение из более чем одного сеанса

837</h3>

838 

839Каждый сеанс на вашей машине, который запускает ваш мод, делит одно `$.store`. `get`, за которым следует `set`, не является атомарным. Когда два сеанса каждый читают значение, изменяют его и пишут его обратно, они гонятся, и второе написание заменяет первое.

840 

841Два выбора делают это менее вероятным:

842 

843* **Дайте каждому элементу свой собственный ключ**: `set` изменяет только свой собственный ключ, поэтому сеансы, которые пишут разные ключи, не перезаписывают друг друга

844* **Прочитайте снова прямо перед тем, как вы напишете**: для значения, которое несколько сеансов изменяют, `get` ключ в обратном вызове и постройте новое значение из этого, а не из копии, которую вы загрузили при `session.start`. Написание другого сеанса все еще теряется, если оно приземляется между вашим `get` и вашим `set`.

845 

846Эта кнопка добавляет один к тому, что хранилище содержит сейчас, затем обновляет рисование:

847 

848```javascript theme={null}

849onPress: async () => {

850 // Read what the store holds now, which another session may have changed

851 const saved = Number((await $.store.get('count')) ?? 0)

852 // Save the new count, then show it

853 await $.store.set('count', saved + 1)

854 await update($, count, () => saved + 1)

855}

856```

857 

858Если второй сеанс нажал свою собственную кнопку три раза с тех пор, как этот сеанс начался, это нажатие показывает и сохраняет счет, который включает эти три.

859 

860<h2 id="next-steps">

861 Следующие шаги

862</h2>

863 

864* [Реагирование на события](/docs/ru/plugins/mods/events): питайте ваше рисование из вызовов инструментов и ходов

865* [Использование API модов](/docs/ru/plugins/mods/api): питайте ваше рисование из таймеров и вызовов модели

866* [Тестирование рисования](/docs/ru/plugins/mods/test#test-a-drawing): нажимайте ваши кнопки из теста, на более чем одной поверхности

867* [Сайты рендеринга](/docs/ru/plugins/mods/reference#render-sites) и [элементы](/docs/ru/plugins/mods/reference#elements): свойства каждого сайта и свойства каждого элемента

plugins/mods/overview.md +269 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Обзор модов

6 

7> Добавляйте панели, команды и правила вызова инструментов в Claude Code с помощью мода. Узнайте, что может делать мод, как его создать или установить, и где работают моды.

8 

9Мод — это [плагин](/docs/ru/plugins/overview), который изменяет внешний вид и поведение Claude Code. Он состоит из обработчиков событий на JavaScript или TypeScript: Claude Code вызывает один из них при возникновении события, например при вызове инструмента, отправке подсказки или отрисовке части интерфейса, и обработчик может наблюдать за событием, изменять его или брать его под контроль. Используйте мод для добавления собственной функции в Claude Code, например панели, которая показывает, насколько заполнен ваш контекст после каждого запроса. Информацию о файлах в моде и полный пример см. в разделе [Как работает мод](#how-a-mod-works).

10 

11<Note>

12 Существующие [hooks](/docs/ru/hooks) Claude Code также работают на событиях в виде команды оболочки, HTTP-запроса или подсказки, которые вы настраиваете в файле параметров. Обработчики мода — это функции, которые работают внутри Claude Code. Claude Code вызывает оба типа hooks: на этих страницах «hook» означает обработчик мода, а тип из файла параметров — это «settings hook».

13</Note>

14 

15<h2 id="what-a-mod-can-do">

16 Что может делать мод

17</h2>

18 

19Settings hooks, skills, строки состояния и серверы MCP работают вне Claude Code: каждый из них запускает скрипт или предоставляет Claude текст или инструменты. Мод работает внутри Claude Code, поэтому он может делать то, что они не могут:

20 

21* **Нарисовать интерфейс, который вы можете использовать**: панель рядом с транскриптом или полоса над подсказкой с вкладками, кнопками и текстовыми полями. См. [Рисование в интерфейсе](/docs/ru/plugins/mods/interface).

22* **Перерисовать собственный интерфейс Claude Code**: заменить или переоформить части, которые рисует сам Claude Code, такие как строка вызова инструмента, спиннер или диалог, в котором Claude задает вопросы. См. [Изменение того, что уже рисует Claude Code](/docs/ru/plugins/mods/interface#change-what-claude-code-already-draws).

23* **Вмешаться в вызов инструмента или запрос**: например, удержать вызов инструмента, пока вы задаете пользователю вопрос, ответить без запуска инструмента или отправить один запрос другой модели. См. [Охрана или изменение вызова инструмента](/docs/ru/plugins/mods/events#guard-or-change-a-tool-call) и [Следование за ходом](/docs/ru/plugins/mods/events#follow-a-turn).

24* **Запустить собственный код на команде**: `/command`, который запускает вашу функцию сразу же, без хода Claude, даже если Claude работает. См. [Добавление команды или инструмента](/docs/ru/plugins/mods/api#add-a-command-or-a-tool).

25* **Обмен данными между hooks**: hooks мода совместно используют переменные в его файле, поэтому то, что записывает один hook, может показать другой. Например, один hook может считать вызовы инструментов, а другой показывает счетчик рядом со спиннером, или один может читать использование токенов каждого запроса, а другой отображает его на графике в панели. См. [Реакция на события](/docs/ru/plugins/mods/events).

26 

27Моды работают в CLI Claude Code и на вкладке Code приложения Claude Desktop. См. [Где работают моды](#where-mods-run), чтобы понять, как они ведут себя в других местах, например в расширении VS Code, `claude -p` и облачных сеансах. Если settings hook, skill или сервер MCP уже делает то, что вам нужно, [сравните их](#compare-mods-settings-hooks-skills-and-mcp-servers) перед написанием мода. Для управления модами для организации см. [Управление модами для вашей организации](/docs/ru/plugins/mods/admin).

28 

29<h2 id="get-a-mod">

30 Получить мод

31</h2>

32 

33Вы можете начать с мода одним из трех способов:

34 

35* **Используйте уже имеющийся**: некоторые собственные функции Claude Code — это моды, такие как `/diff`. См. [Моды, встроенные в Claude Code](#mods-built-into-claude-code).

36* **Создайте один**: опишите, что вы хотите, в сеансе Claude Code, и Claude напишет мод. См. [Попросите Claude написать мод](/docs/ru/plugins/mods/create#ask-claude-for-a-mod). Чтобы узнать, как работает код мода, [напишите его сами](/docs/ru/plugins/mods/create#write-a-mod-yourself).

37* **Установите один**: см. [Установка или обновление мода](#install-or-update-a-mod)

38 

39<h3 id="install-or-update-a-mod">

40 Установка или обновление мода

41</h3>

42 

43<Warning>

44 Мод — это код, который работает с вашими разрешениями. Он может читать и писать ваши файлы, запускать процессы и делать сетевые запросы. Устанавливайте моды только от авторов и маркетплейсов, которым вы доверяете. См. [Решите, доверять ли моду](#decide-whether-to-trust-a-mod).

45</Warning>

46 

47Мод устанавливается как плагин из маркетплейса. Укажите имя плагина, `@` и имя маркетплейса. Эти примеры устанавливают плагин с именем `token-chart` из маркетплейса с именем `your-org`:

48 

49* В сеансе Claude Code запустите `/plugin install token-chart@your-org`.

50* В вашей оболочке запустите `claude plugin install token-chart@your-org`.

51 

52[Установка плагинов](/docs/ru/plugins/install) охватывает маркетплейсы, области видимости, расширение VS Code и приложение Desktop, а также [поддержание плагинов в актуальном состоянии](/docs/ru/plugins/install#keep-plugins-updated), все из которых применяются к плагину, содержащему мод без изменений.

53 

54Если вы устанавливаете или обновляете мод из вашей оболочки, пока сеанс открыт, запустите `/reload-plugins` в этом сеансе, чтобы загрузить его. В противном случае он загружается при следующем запуске Claude Code.

55 

56<h2 id="decide-whether-to-trust-a-mod">

57 Решите, доверять ли моду

58</h2>

59 

60Мод — это код, который работает с вашими разрешениями внутри Claude Code. Устанавливайте моды только от авторов и [маркетплейсов, которым вы доверяете](/docs/ru/plugins/security).

61 

62<h3 id="what-a-mod-can-reach">

63 Что может достичь мод

64</h3>

65 

66Мод работает с вашими разрешениями, поэтому перед установкой знайте, к чему у него есть доступ. После загрузки мод может:

67 

68* **Действовать на вашей машине от вашего имени**: читать и писать файлы в любом месте, где может ваша учетная запись пользователя, запускать программы и делать сетевые запросы

69* **Читать ваши секреты**: переменные окружения и файлы параметров, включая ключ API, который вы храните в любом из них

70* **Видеть ваш сеанс**: каждую подсказку, которую вы отправляете, и каждый вызов инструмента, который делает Claude

71* **Изменять ваш сеанс**: переписывать подсказку или вызов инструмента, отправлять подсказку так, как если бы вы ее набрали, или отправлять сообщение в другой из ваших сеансов

72* **Действовать без вашего разрешения**: одобрить вызов инструмента перед тем, как вас спросят

73* **Потратить вашу квоту**: вызвать модель в вашем плане или ключе API

74 

75Мод, который одобряет вызовы инструментов, может одобрить тот, который правило `ask` запросит, или который заблокировал один из ваших собственных hooks `PreToolUse`. [Расширение разрешений с помощью hooks](/docs/ru/permissions#extend-permissions-with-hooks) перечисляет, что может одобрить такой мод, включая случаи, когда он может одобрить вызов, который правило `deny` отказывает.

76 

77Мод может переоформить большую часть интерфейса Claude Code, но не подсказку разрешения. Он не может изменить то, что вам показывает подсказка.

78 

79<h3 id="list-what-a-mod-does-before-you-install-one">

80 Перечислите, что делает мод перед установкой

81</h3>

82 

83Перед установкой мода вы можете перечислить, какие события он перехватывает и что он просит Claude Code делать, например читать файл или делать сетевой запрос, без его запуска. Сначала получите файлы плагина, например клонировав его репозиторий. Затем в вашей оболочке запустите `claude plugin validate` в каталоге плагина:

84 

85```bash theme={null}

86claude plugin validate ./some-mod

87```

88 

89Строки `hooks:` и `calls:` в выводе перечисляют события, которые обрабатывает мод, и что он просит Claude Code делать. [Просмотр того, что может делать мод](/docs/ru/plugins/mods/admin#review-what-a-mod-can-do) показывает вывод и какие вызовы искать.

90 

91<h2 id="turn-mods-on-or-off">

92 Включение или отключение модов

93</h2>

94 

95Моды требуют Claude Code v2.1.287 или позже, и они включены по умолчанию. В вашей оболочке запустите `claude --version`, чтобы проверить, и обновите Claude Code, если ваша версия старше.

96 

97Чтобы отключить моды, выберите, сколько их остановить и на как долго. Чтобы включить их обратно, отмените то же изменение:

98 

99* **Один мод**: отключите или удалите его плагин со [вкладки **Installed** в `/plugin`](/docs/ru/plugins/install#manage-installed-plugins)

100* **Каждый установленный мод, для одного сеанса**: запустите Claude Code с [`--safe-mode`](/docs/ru/cli-reference#cli-flags), что также исключает ваши другие настройки

101* **Каждый мод, который вы установили, в каждом сеансе**: установите [`"disableAllHooks": true`](/docs/ru/settings-reference#disableallhooks) в `~/.claude/settings.json`. Ваши settings hooks и пользовательская строка состояния также остановятся. То, что управляет ваша организация, продолжает работать.

102 

103Если вы используете Claude Code через организацию, администратор также может ограничить, какие моды загружаются. Администраторы начинают с [Остановка загрузки модов, установленных пользователем](/docs/ru/plugins/mods/admin#stop-user-installed-mods-from-loading).

104 

105Чтобы узнать, могут ли моды загружаться для вас, см. [Проверка, могут ли загружаться моды](/docs/ru/plugins/mods/troubleshoot#check-whether-mods-can-load).

106 

107<Note>

108 Если вы установили `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` во время раннего доступа, удалите его. Claude Code v2.1.287 и позже игнорирует его, поэтому установка его на `0` не отключает моды.

109</Note>

110 

111<h3 id="see-which-mods-a-session-loaded">

112 Посмотрите, какие моды загрузил сеанс

113</h3>

114 

115Чтобы увидеть, какие моды загрузил сеанс терминала, запустите `/plugin` в подсказке Claude Code. Тусклая линия под вкладками дает счетчик и имена, такие как `1 mod active · first-mod`. Если мод, который вы установили, не указан там, см. [Узнайте, почему мод ничего не делает](/docs/ru/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing).

116 

117<h2 id="how-a-mod-works">

118 Как работает мод

119</h2>

120 

121Мод — это [плагин](/docs/ru/plugins/overview), чей код регистрирует обработчики событий, называемые hooks. Claude Code запускает hook при возникновении его события, например когда Claude вызывает инструмент или когда рисуется спиннер. Небольшой мод имеет три файла:

122 

123```text theme={null}

124first-mod/

125├── .claude-plugin/

126│ └── plugin.json

127└── hooks/

128 ├── hooks.json

129 └── register.js

130```

131 

132* **`plugin.json`**: [манифест](/docs/ru/plugins/manifest-reference) плагина

133* **`hooks.json`**: [указывает на ваш файл кода](/docs/ru/plugins/mods/reference#files)

134* **`register.js`**: [ваш код](/docs/ru/plugins/mods/create#write-a-mod-yourself), называемый модулем hooks. Он сообщает Claude Code, на каких событиях запускать ваши функции.

135 

136Это полный `register.js`. Он считает вызовы инструментов, которые делает Claude, и показывает счетчик рядом со спиннером, пока Claude работает, как в `Thinking · tool calls: 3…`.

137 

138```javascript hooks/register.js theme={null}

139// Счетчик, совместно используемый двумя hooks ниже

140let calls = 0

141 

142// Claude Code вызывает это один раз при загрузке мода

143export function register(on) {

144 // Запускается каждый раз, когда Claude собирается использовать инструмент

145 on('tool.call', async ($, e, next) => {

146 calls += 1

147 // Попросите Claude Code перерисовать интерфейс, чтобы показался новый счетчик

148 $.ui.invalidate('ui.render')

149 // Позвольте инструменту работать как обычно

150 return next(e)

151 })

152 

153 // Запускается каждый раз, когда Claude Code рисует спиннер

154 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

155 // Сохраните спиннер Claude Code со счетчиком, добавленным после его слова

156 return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })

157 })

158}

159```

160 

161Файл регистрирует два hook, и оба используют переменную `calls` в верхней части:

162 

163* **Hook [`tool.call`](/docs/ru/plugins/mods/reference#tools)** запускается каждый раз, когда Claude собирается использовать инструмент. Он добавляет один к `calls`, просит Claude Code перерисовать интерфейс и позволяет инструменту работать как обычно.

164* **Hook [`ui.render`](/docs/ru/plugins/mods/reference#interface)** запускается каждый раз, когда Claude Code рисует спиннер. Он сохраняет собственный спиннер Claude Code и добавляет счетчик после слова.

165 

166Эта запись показывает мод в действии. Смотрите строку спиннера над полем подсказки: пока Claude перечисляет каталог и читает два файла, он читает `Thinking · tool calls: 1…`, затем `2…`, затем `3…`.

167 

168<Frame>

169 <video autoPlay muted loop playsInline controls className="w-full dark:hidden" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-overview-light.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=00a18aa0743b59a700f0275ce226e6d1" aria-label="В сеансе Claude Code вводится и отправляется подсказка 'list the files here and read the README'. Пока Claude работает, спиннер читает 'Thinking · tool calls: 1', затем 2, затем 3, когда Claude перечисляет файлы и читает два из них." data-path="images/mods-overview-light.mp4" />

170 

171 <video autoPlay muted loop playsInline controls className="w-full hidden dark:block" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-overview-dark.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=d5223da2fef16ceaaa214a36d72c0536" aria-label="В сеансе Claude Code вводится и отправляется подсказка 'list the files here and read the README'. Пока Claude работает, спиннер читает 'Thinking · tool calls: 1', затем 2, затем 3, когда Claude перечисляет файлы и читает два из них." data-path="images/mods-overview-dark.mp4" />

172</Frame>

173 

174<h3 id="what-a-hook-can-do-with-an-event">

175 Что hook может делать с событием

176</h3>

177 

178Claude Code запускает ваш hook перед тем, как действовать на событие, поэтому hook решает, что произойдет дальше. У него есть три варианта:

179 

180* **Наблюдать**: заметить, что происходит, и позволить ему продолжаться без изменений, как делает hook `tool.call` в примере

181* **Переписать**: изменить событие перед его продолжением, как делает hook `ui.render`, когда добавляет счетчик к спиннеру

182* **Ответить**: обработать событие самостоятельно, чтобы обычное поведение не запускалось, например отказать в команде

183 

184Чтобы делать что-либо вне собственного кода, такое как рисование, добавление команды, вызов модели, чтение файла, запуск процесса или создание сетевого запроса, hook вызывает API модов. Hook не имеет другого способа делать эти вещи, поэтому Claude Code может [перечислить, что делает мод](#list-what-a-mod-does-before-you-install-one) перед его установкой.

185 

186Для кода, стоящего за каждым выбором, см. [Реакция на события](/docs/ru/plugins/mods/events#how-a-hook-handles-an-event). Для того, что может вызвать hook, см. [Использование API модов](/docs/ru/plugins/mods/api).

187 

188<h3 id="where-mods-run">

189 Где работают моды

190</h3>

191 

192Hooks мода работают в каждом типе сеанса, который загружает плагин. Рисование более узко: только терминал и приложение Desktop показывают панели, полосы и замененные строки мода. Эта таблица перечисляет каждое место, где вы можете запустить Claude Code:

193 

194| Где вы запускаете Claude Code | Hooks работают | Что рисует мод появляется |

195| :- | :- | :- |

196| `claude` в терминале, включая интегрированный терминал редактора и плагин JetBrains | Да | Да |

197| Вкладка Code приложения Desktop, кроме сеанса WSL | Да | Да, кроме элементов, которые [таблица элементов](/docs/ru/plugins/mods/reference#elements) отмечает как только для терминала |

198| [Сеанс WSL](/docs/ru/desktop-wsl) в приложении Desktop | Нет, потому что плагины недоступны в сеансах WSL | Нет |

199| Панель чата расширения VS Code | Да | Нет |

200| `claude -p` и [Agent SDK](/docs/ru/agent-sdk/overview) | Да | Нет |

201| [Remote Control](/docs/ru/remote-control) из claude.ai или мобильного приложения | Да, в сеансе на вашей машине | В терминале на вашей машине |

202| [Облачный сеанс](/docs/ru/claude-code-on-the-web) | Да, для плагина, который [достигает облачного сеанса](/docs/ru/cloud-environments#what-carries-over-from-your-setup) | Нет |

203 

204Мод, который рисует, может проверить, в каком приложении он работает, и вернуться к строке в транскрипте или текстовому ответу команды, где ничего не рисуется.

205 

206<h2 id="control-mods-for-your-organization">

207 Управление модами для вашей организации

208</h2>

209 

210Администраторы решают, работают ли моды и какие из них, через [управляемые параметры](/docs/ru/managed-settings). [Управление модами для вашей организации](/docs/ru/plugins/mods/admin) охватывает, что происходит по умолчанию, как просмотреть мод и как применить политику с помощью собственного мода.

211 

212<h2 id="compare-mods-settings-hooks-skills-and-mcp-servers">

213 Сравнение модов, settings hooks, skills и серверов MCP

214</h2>

215 

216Моды, settings hooks, skills и серверы MCP перекрываются. Эта таблица показывает, что это такое и когда выбрать каждый.

217 

218| | Мод | Settings hook | Skill | Сервер MCP |

219| :- | :- | :- | :- | :- |

220| Что это | Функции в плагине, которые Claude Code вызывает в своем собственном процессе | Команда оболочки, HTTP-запрос или подсказка, которую Claude Code запускает на событии жизненного цикла | Файл `SKILL.md` с инструкциями, которые читает Claude | Внешний процесс или сервис, который предоставляет Claude инструменты |

221| Что он может изменить | Вызовы инструментов, подсказки, команды, ходы и то, что рисует интерфейс | Продолжается ли вызов инструмента или подсказка, аргументы и результат вызова инструмента, а также контекст, добавленный для Claude | Что знает и делает Claude | Какие инструменты есть у Claude |

222| Может ли он рисовать в интерфейсе | Да | Нет | Нет | Нет |

223| Что вы пишете | JavaScript или TypeScript | Скрипт и запись `settings.json` | Markdown | Сервер на любом языке |

224| Выберите его, когда | Вы хотите панель, полосу над подсказкой, пользовательскую команду или переписать событие | Вы хотите заблокировать, разрешить или зарегистрировать событие со скриптом, который у вас уже есть | Вы постоянно вставляете одни и те же инструкции в чат | Claude нужно достичь внешней системы |

225 

226Каждый из остальных имеет свою собственную страницу: [Hooks](/docs/ru/hooks), [Skills](/docs/ru/skills) и [MCP](/docs/ru/mcp). Плагин может содержать все четыре, поэтому мод может поставляться в одном плагине с skill и сервером MCP.

227 

228<h2 id="mods-built-into-claude-code">

229 Моды, встроенные в Claude Code

230</h2>

231 

232Некоторые собственные функции Claude Code — это моды. Чтобы увидеть те, которые есть в вашем сеансе, запустите `/plugin` в подсказке Claude Code и перейдите на вкладку **Installed**, которая перечисляет их в разделе **Built-in**. Вы не можете обновлять или удалять встроенный мод, и последний столбец таблицы говорит, как отключить каждый. Строка [`mods active`](#see-which-mods-a-session-loaded) исключает встроенные моды.

233 

234Эта таблица перечисляет каждую запись по имени, которое показывает `/plugin`:

235 

236| Имя в `/plugin` | Что он делает | Где он включен | Как его отключить |

237| :- | :- | :- | :- |

238| `cc-plugin-agents-md` | Загружает `AGENTS.md` как инструкции проекта | Каждый сеанс, кроме [тех, которые не могут читать `AGENTS.md`](/docs/ru/memory#when-agents-md-support-is-unavailable) | Отключите его в `/plugin` или [выберите, какие файлы инструкций загружаются](/docs/ru/memory#choose-which-instruction-files-load) |

239| `cc-plugin-diff` | Берет на себя [`/diff`](/docs/ru/interactive-mode#review-changes-with-%2Fdiff) и рисует его панель | Интерактивные сеансы терминала | Отключите его в `/plugin`. `/diff` остается, и встроенная версия команды Claude Code отвечает на него. |

240| `cc-plugin-plugin-authoring` | Дает Claude skill [`plugin-authoring`](/docs/ru/plugins/mods/create#ask-claude-for-a-mod) для написания модов. Он содержит skill и без кода мода. | Если Anthropic не отключила установленные моды удаленно | Отключите его в `/plugin` |

241| `cc-plugin-sec-default` | Охраняет то, что управляет ваша организация, от модов, которые устанавливает пользователь | [Где загружается охрана](/docs/ru/plugins/mods/admin#know-what-happens-by-default) | Вы не можете. Администратор [устанавливает порядок](/docs/ru/plugins/mods/admin#install-your-organizations-mods) в управляемых параметрах |

242| `cc-plugin-telemetry` | Отправляет записи аналитики, которые регистрируют Claude Code и его встроенные моды | Везде, где включена собственная аналитика Claude Code | Отключите его в `/plugin` или отключите аналитику, например с помощью [`DISABLE_TELEMETRY`](/docs/ru/env-vars) |

243| `cc-plugin-you-should-know` | Запускает вспомогательного агента, который следит за вами, пока Claude работает над более длительными задачами. Когда он находит что-то стоящее знать, что вы можете пропустить, он показывает вам заметку над подсказкой. | Отключено по умолчанию. Указано в `/plugin` -> **Installed** -> **Show disabled**, если доступно для вашей организации. Включите с помощью [`/plugin enable cc-plugin-you-should-know@builtin`](/docs/ru/plugins/cli-reference#plugin-in-a-session). | Отключите его в `/plugin` |

244 

245Параметры и флаги, которые останавливают установленные моды, такие как `disableAllHooks`, `--bare` и `--safe-mode`, не останавливают встроенные моды.

246 

247<h3 id="read-the-source-of-built-in-mods">

248 Прочитайте исходный код встроенных модов

249</h3>

250 

251Исходный код четырех из этих модов является общедоступным в [каталоге `mods` репозитория Claude Code](https://github.com/anthropics/claude-code/tree/main/mods). Каждый — это полный плагин с его модулем hooks и тестами:

252 

253* [`diff`](https://github.com/anthropics/claude-code/tree/main/mods/diff): панель `/diff` с кнопками, привязанными к действиям клавиатуры и прокруткой, которую обрабатывает мод

254* [`agents-md`](https://github.com/anthropics/claude-code/tree/main/mods/agents-md): загружает `AGENTS.md` как инструкции проекта с опцией [`userConfig`](/docs/ru/plugins/components#user-configuration)

255* [`sec-default`](https://github.com/anthropics/claude-code/tree/main/mods/sec-default): охрана, описанная в [Знайте, что происходит по умолчанию](/docs/ru/plugins/mods/admin#know-what-happens-by-default), модель для мода, который применяет политику

256* [`telemetry`](https://github.com/anthropics/claude-code/tree/main/mods/telemetry): добавляет методы, которые могут вызывать другие моды, и поставляет их типы

257 

258<h2 id="next-steps">

259 Следующие шаги

260</h2>

261 

262* [Создание мода](/docs/ru/plugins/mods/create): создайте один, который считает вызовы инструментов, показывает счетчик рядом со спиннером и добавляет команду, и узнайте цикл редактирования и перезагрузки

263* [Рисование в интерфейсе](/docs/ru/plugins/mods/interface): панели, полоса над подсказкой, кнопки, текстовые поля и состояние

264* [Реакция на события](/docs/ru/plugins/mods/events): вызовы инструментов, подсказки, ходы и порядок, в котором работают моды

265* [Использование API модов](/docs/ru/plugins/mods/api): команды, инструменты, вызовы моделей, таймеры и файлы

266* [Тестирование мода](/docs/ru/plugins/mods/test): автоматизированные тесты, которые работают без сеанса

267* [Устранение неполадок мода](/docs/ru/plugins/mods/troubleshoot): причины, по которым мод ничего не делает, и журнал отладки

268* [Управление модами для вашей организации](/docs/ru/plugins/mods/admin): значения по умолчанию, управляемые параметры, просмотр мода и моды политики

269* [Справочник модов](/docs/ru/plugins/mods/reference): каждое событие, метод, элемент и ограничение

plugins/mods/test.md +422 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Тестирование мода

6 

7> Напишите автоматизированные тесты для мода Claude Code, которые вызывают события, подменяют ответы Claude Code и нажимают кнопки, без сеанса, входа или сети.

8 

9Вы можете написать автоматизированные тесты для мода и запустить их из оболочки с помощью [`claude plugin test`](/docs/ru/plugins/mods/reference#commands). Тест вызывает события, которые обрабатывают ваши hooks, и проверяет, что сделали hooks, чтобы вы поймали проблему до того, как она попадёт в сеанс. Первый пример тестирует мод из [Create a mod](/docs/ru/plugins/mods/create).

10 

11<h2 id="write-a-test">

12 Напишите тест

13</h2>

14 

15Тест загружает ваш мод, отправляет события через его hooks так, как это делал бы Claude Code, и проверяет, что сделали hooks, без сеанса, входа или сети. Вы запускаете тесты из своей оболочки с помощью `claude plugin test`, и каждый файл теста импортирует набор для тестирования, библиотеку тестирования в модуле `claude-code/testing`.

16 

17Дайте каждому файлу теста имя, заканчивающееся на `.test.ts`, например `first-mod.test.ts`, и сохраните его где угодно в директории плагина. Каждый файл теста должен содержать по крайней мере один `test()`, иначе запуск завершится с ошибкой `declares no test(): nothing ran`. Файл теста может импортировать собственные файлы вашего мода и вспомогательные файлы `.ts` соседних уровней, поэтому вы можете модульно тестировать простые функции, такие как правила игры, без набора.

18 

19Этот тест вызывает два tool call, запускает команду `/tally` из [Create a mod](/docs/ru/plugins/mods/create), и проверяет, что ответ считает оба. Его первая строка — это [stub](#stub-what-claude-code-would-answer), который отвечает на tool call в место Claude Code. Сохраните его как `first-mod/tests/first-mod.test.ts`:

20 

21```typescript first-mod/tests/first-mod.test.ts theme={null}

22import { expect, test } from 'claude-code/testing'

23 

24test('/tally reports the tool calls the mod has seen', async ($, on) => {

25 // Answer each tool call in Claude Code's place, so no tool runs

26 on('tool.call', () => ({ result: 'ok' }))

27 

28 // Raise two tool calls, which the mod's tool.call hook counts

29 await $.tool.call({ tool: 'Bash', command: 'ls' })

30 await $.tool.call({ tool: 'Read', file_path: 'README.md' })

31 

32 // Run /tally and check the text its hook returns

33 const answer = await $.command.run({ command: 'tally', args: '' })

34 expect(answer.text).toBe('Claude has made 2 tool calls since this mod loaded')

35})

36```

37 

38В вашей оболочке запустите тесты из директории `first-mod`:

39 

40```bash theme={null}

41claude plugin test

42```

43 

44Вывод называет каждый тест и прошёл ли он, с временем выполнения, которое варьируется от запуска к запуску:

45 

46```text theme={null}

47tests/first-mod.test.ts:

48(pass) /tally reports the tool calls the mod has seen [22.87ms]

49 

50 1 pass

51 0 fail

52Ran 1 test across 1 file. [0.19s]

53```

54 

55Каждый `$.tool.call` прошёл через hook [`tool.call`](/docs/ru/plugins/mods/reference#tools) вашего мода, который добавил один к его счётчику и передал вызов дальше stub. Никакой `ls` не запустился и никакой файл не был прочитан. `$.command.run` затем перешёл к hook [`command.run`](/docs/ru/plugins/mods/reference#commands-and-configuration) вашего мода, и `answer` — это объект, который вернул этот hook.

56 

57Команда выходит со статусом 1, когда тест не пройден, поэтому она работает в CI. Если ваши собственные моды не могут загружаться в оболочке, которая её запускает, она выводит строку, начинающуюся с `claude plugin test: hooks modules are turned off` с причиной и выходит со статусом 1.

58 

59<h3 id="stub-what-claude-code-would-answer">

60 Stub что Claude Code ответит бы

61</h3>

62 

63В тесте не запускаются модель, хранилище или инструмент, поэтому везде, где ваш мод ожидает ответ от Claude Code, тест предоставляет ответ с помощью stub. Функция теста получает два аргумента для этого:

64 

65* **`$`**: собственный `$` теста, который стоит на месте Claude Code. Это не [mods API](/docs/ru/plugins/mods/reference#mods-api-methods), который получает hook. Каждый из его методов вызывает событие с тем же именем, отправляет его через hooks вашего мода и разрешается в результат: `$.tool.call({ tool: 'Bash', command: 'ls' })` вызывает `tool.call`. `$.command.run`, `$.prompt.submit`, `$.session.start` и `$.turn.complete` работают так же, и `$.classic.Stop` и другие методы `$.classic` вызывают [settings hook event](/docs/ru/plugins/mods/events#hook-the-settings-hook-events). Тест не может напрямую вызвать mods API, такой как `ui.close`. Вызовите его через ваш мод, например нажав кнопку, которая закрывает панель.

66* **`on`**: вызовите её для регистрации stub, которые являются hooks, отвечающими в место Claude Code. Назовите stub для вызова mods API без `$.`, поэтому stub, зарегистрированный как `store.get`, отвечает на `$.store.get` вашего мода. Когда ваш мод вызывает [`$.model.complete`](/docs/ru/plugins/mods/api#call-a-model) или [`$.store.get`](/docs/ru/plugins/mods/interface#keep-state), stub предоставляет ответ.

67 

68Этот пример stub вызова модели. Hook принадлежит моду с именем `grader` и обрабатывает команду `/grade`, которая отправляет предложение модели и сообщает, начинается ли ответ с `PASS`. Файл содержит только hook под тестом, поэтому моду также нужны `plugin.json` и `hooks.json`, как в [Create a mod](/docs/ru/plugins/mods/create#write-a-mod-yourself). Чтобы ввести `/grade` в сеансе, моду также нужно [зарегистрировать команду](/docs/ru/plugins/mods/api#add-a-command):

69 

70```javascript grader/hooks/register.js theme={null}

71export function register(on) {

72 on('command.run', { command: 'grade' }, async ($, e) => {

73 // e.args is the text typed after /grade

74 const reply = await $.model.complete({

75 model: 'haiku',

76 system: 'Grade the sentence. Start your reply with PASS or FAIL.',

77 prompt: e.args,

78 })

79 const passed = reply.isAnswered && reply.text.startsWith('PASS')

80 return { text: passed ? 'Passed' : 'Try again' }

81 })

82}

83```

84 

85Этот тест stub вызова модели для проверки того, что делает hook с проходящим ответом:

86 

87```typescript grader/tests/grader.test.ts theme={null}

88import { expect, test } from 'claude-code/testing'

89 

90test('a passing grade is reported', async ($, on) => {

91 // Answer the mod's $.model.complete call with a fixed reply, so no model runs

92 on('model.complete', () => ({

93 value: {

94 isAnswered: true,

95 text: 'PASS\nNice sentence.',

96 usage: { input_tokens: 10, output_tokens: 5, cache_read_input_tokens: 0, cache_creation_input_tokens: 0 },

97 },

98 }))

99 

100 // Run /grade, which makes the mod call the model

101 const answer = await $.command.run({ command: 'grade', args: 'The cat sat on the mat.' })

102 expect(answer.text).toBe('Passed')

103})

104```

105 

106Тест проходит, потому что `reply` hook — это объект под `value`, чей `text` начинается с `PASS`. Чтобы проверить другую ветвь, добавьте второй тест, чей stub возвращает `text`, начинающийся с `FAIL`, и ожидайте `Try again`.

107 

108Stub для вызова mods API возвращает объект с полем `value`, которое содержит то, на что разрешается вызов в вашем моде: `{ value: 7 }` делает `$.store.get` разрешённым в `7`. Stub для одного из событий Claude Code, такого как [`turn.step`](/docs/ru/plugins/mods/reference#turns) или `tool.call`, возвращает результат этого события, такой как `{ result: 'ok' }`. `$.session.send` и `$.prompt.fill` также принимают результат события, как показано в таблице. [Look up what a stub returns](#look-up-what-a-stub-returns) показывает, какую форму принимает каждое общее имя. Две ошибки означают, что stub неправильный или отсутствует. Вывод неудачного теста включает блок с заголовком `the engine reported:`, и каждая ошибка появляется там:

109 

110* `returned neither { value } nor { deny }`: stub для вызова mods API вернул простое значение

111* `no implementation for` с последующим именем: ваш мод сделал этот вызов и никакой stub не отвечает на него

112 

113Набор также экспортирует встроенные mock, которые отвечают за целое пространство имён для вас. `mock.clock(on)` отвечает на [`$.clock`](/docs/ru/plugins/mods/api#run-work-in-the-background), `mock.store(on, { count: 7 })` отвечает на `$.store` из хранилища, которое начинается с этих записей, и `mock.env(on, { CI: 'true' })` отвечает на `$.env.get` из этих переменных. `mock.clock` возвращает mock часы, которые ваш тест продвигает, поэтому тест таймера не ждёт. `mock.store` ничего не возвращает, поэтому чтобы проверить, что сохранил ваш мод, напишите два `store` stub сами, как это делает [drawing test](#test-a-drawing).

114 

115<h3 id="follow-the-test-kit’s-rules">

116 Следуйте правилам набора для тестирования

117</h3>

118 

119Набор для тестирования имеет несколько собственных правил, и нарушение одного из них производит ошибки, которые встречают первые авторы тестов:

120 

121* **Зарегистрируйте каждый stub перед первым вызовом теста на `$`.** Вызов `on` после этого выбрасывает ошибку, такую как `on("ui.render") after the test first called $`.

122 

123* **[`session.start`](/docs/ru/plugins/mods/reference#session) не запускается сам по себе.** Каждый тест начинается с вашего модуля, свежезагруженного и ни один из его hooks не вызван, поэтому переменные уровня модуля содержат свои начальные значения. Если hook зависит от того, что устанавливает `session.start`, вызовите его первым:

124 

125 ```typescript theme={null}

126 // Answer the event after your hook passes it on with next(e)

127 on('session.start', () => ({ cwd: '/work' }))

128 // Answer the $.command.register call your hook makes

129 on('command.register', () => ({ value: undefined }))

130 // Raise the event, which runs your session.start hook

131 await $.session.start({ surface: 'terminal', isInteractive: true, cwd: '/work' })

132 ```

133 

134 Второй stub отвечает на вызов `$.command.register`, который делает hook `session.start`, такой как [tutorial's](/docs/ru/plugins/mods/create#write-a-mod-yourself). Без него этот вызов отклоняется с `no implementation for command.register` и набор пропускает ваш hook, поэтому ничего после вызова в hook не запускается. Тест не завершается неудачей в этой точке. Пропущенный hook указан под `the engine reported:` только если позже проверка завершится неудачей.

135 

136* **Hook, который возвращает `next(e)`, нуждается в stub для ответа.** Когда ваш [`ui.render`](/docs/ru/plugins/mods/reference#interface) hook возвращает `next(e)`, например чтобы ничего не рисовать, пока Claude неактивен, [mounting it](#test-a-drawing) завершается неудачей с `no implementation for ui.render`. Зарегистрируйте stub, который возвращает элемент как простые данные:

137 

138 ```typescript theme={null}

139 // Stands for what Claude Code would draw at the site

140 on('ui.render', () => ({ type: 'Text', props: {}, children: ['drawn by Claude Code'] }))

141 ```

142 

143 С зарегистрированным stub монтирование успешно, и `ui.find({ type: 'Text' })` возвращает этот элемент всякий раз, когда ваш hook возвращал `next(e)`.

144 

145* **Stub для `turn.step` — это асинхронный генератор**, и тест читает поток до конца, чтобы получить результат:

146 

147 ```typescript theme={null}

148 on('turn.step', async function* ($, e) {

149 // Each yield is one piece of the model's streamed reply

150 yield { kind: 'text', index: 0, text: 'ok' }

151 // The return value is the result of the whole request

152 return { turnId: e.turnId, index: e.index, answer: 'ok', toolUses: [], stopReason: 'end_turn', usage: null }

153 })

154 

155 // Raise one request to the model, which runs your turn.step hook

156 const stream = $.turn.step({ turnId: 't', index: 0, model: 'claude-test', messageCount: 1 })

157 // Read every piece until the stream says it's done

158 let step = await stream.next()

159 while (step.done !== true) step = await stream.next()

160 const result = step.value

161 ```

162 

163 Когда цикл заканчивается, `result` — это объект, который вернул stub, после того как ваш hook `turn.step` имел возможность его изменить. Здесь `result.answer` — это `'ok'`.

164 

165* **Вызовите tool call с именем инструмента и аргументами как полями**, такие как `await $.tool.call({ tool: 'Bash', command: 'ls' })`, и зарегистрируйте stub `tool.call`, который возвращает `{ result }`.

166 

167<h3 id="look-up-what-a-stub-returns">

168 Посмотрите, что возвращает stub

169</h3>

170 

171Каждый вызов mods API, который ваш мод делает в тесте, нуждается в stub, который отвечает в место Claude Code, кроме нескольких, которые набор отвечает сам: [`$.ui.invalidate`](/docs/ru/plugins/mods/interface#redraw-when-something-changes) и [`$.state`](/docs/ru/plugins/mods/interface#keep-state) вызовы. Для вызовов `$.clock` используйте `mock.clock(on)`, иначе `$.clock.now()` вашего мода завершится неудачей с `no implementation for clock.now`.

172 

173Эта таблица перечисляет те, которые моды используют чаще всего. Первый столбец — это вызов, который делает ваш мод, или событие, которое он передаёт с `next(e)`. Второй — это функция для передачи `on` под этим именем, поэтому строка `$.store.get` становится `on('store.get', ($, e) => ({ value: saved.get(e.key) }))`. `'...'` в stub отмечает текст для вас, чтобы заполнить:

174 

175| Ваш мод вызывает или передаёт | Stub |

176| :- | :- |

177| `$.command.register`, `$.tool.register`, `$.ui.toast`, `$.ui.log`, `$.ui.status`, `$.ui.close`, `$.store.set` | `() => ({ value: undefined })`. Для `ui.toast` и `ui.log` текст — это `e.text`. |

178| `$.store.get` | `($, e) => ({ value: saved.get(e.key) })` |

179| `$.fs.read` | `($, e) => ({ value: e.path.endsWith('notes.md') ? '# Notes' : '' })`. `e.path` приходит как абсолютный путь, поэтому сравнивайте с `endsWith`. |

180| `$.ui.open` | `() => ({ value: { isPlaced: true } })` |

181| `$.ui.ask` | Stub `tool.call`, потому что вопрос достигает его как вызов инструмента `AskUserQuestion`: `($, e) => ({ result: { answers: { [e.questions[0].question]: 'Run it' } } })`. Сначала проверьте `e.tool`, если ваш мод передаёт другие tool call. |

182| `$.model.complete` | `() => ({ value: { isAnswered: true, text: '...', usage } })` |

183| `$.process.run` | `($, e) => ({ value: { exitCode: 0, stdout: '...', stderr: '' } })`. `e.argv` — это список аргументов и `e.init` содержит `cwd` и `timeoutMs`. |

184| Любой вызов mods API, который должен завершиться неудачей | `() => ({ deny: 'the reason' })`, что делает вызов отклонённым в вашем моде. Stub, который выбрасывает, пропускается вместо этого. |

185| `session.start` | `() => ({ cwd: '/work' })` |

186| `turn.start` | `($, e) => ({ turnId: e.turnId })` |

187| `tool.call` | `() => ({ result: '...' })` |

188| `turn.complete` | `() => ({ text: '' })`. Вызовите его с `$.turn.complete({ turnId, answer, durationMs, isAborted: false, usage: null })`. |

189| `prompt.submit` | `($, e) => ({ text: e.text })` |

190| `prompt.fill` | `() => ({ isFilled: true })` |

191| `$.prompt.read` | `() => ({ value: { text: '...', cursor: 0 } })` |

192| `$.ui.copy` | `() => ({ value: { isCopied: true } })` |

193| `$.session.messages` | `() => ({ value: [{ role: 'assistant', text: '...', toolUses: [] }] })` |

194| `$.session.id`, `$.agent.list` | `() => ({ value: 'abc123' })`, `() => ({ value: [] })` |

195| `session.send` | `() => ({ isDelivered: true })`. `e.to` приходит как строка даже когда ваш мод передал `{ sessionId }`. |

196| `session.receive` | `($, e) => ({ text: e.text })`. Вызовите его с `$.session.receive({ origin: { kind: 'peer-send-message' }, text })`. |

197| `ui.render` | `() => ({ type: 'Text', props: {}, children: ['...'] })` |

198 

199`expect` имеет утверждения `toBe`, `toEqual`, `toMatch`, `toMatchObject`, `toContain`, `toBeDefined`, `toBeUndefined` и `toThrow`, и `.not` перед любым из них.

200 

201<h2 id="test-a-timer">

202 Тестируйте таймер

203</h2>

204 

205Мод, который запускает работу на таймере, нуждается в clock, который тест контролирует, поэтому тест может продвигать время вперёд вместо ожидания. `const clock = mock.clock(on)` возвращает mock clock, который начинается с `0` и движется только когда ваш тест его движет. Чтобы начать в другое время, передайте его в миллисекундах, как в `mock.clock(on, { now: 5000 })`. Clock имеет эти методы:

206 

207| Метод | Что он делает |

208| :- | :- |

209| `await clock.advance(1000)` | Продвигает время вперёд на столько миллисекунд и запускает каждый таймер, который наступает |

210| `await clock.set(5000)` | Продвигает время вперёд на это значение, как `advance` |

211| `clock.now()` | Возвращает время, которое разрешает `$.clock.now()` вашего мода |

212| `await clock.settle()` | Запускает таймеры, которые уже наступили, такие как цепь нулевой задержки `$.clock.after` вызовов, без продвижения времени |

213| `await clock.sleep(2000)` | Внутри stub, делает этот stub ответом только после того, как тест продвинулся так далеко, что это то, как вы имитируете медленную модель или процесс |

214 

215Этот hook принадлежит моду с именем `countdown` и обрабатывает команду `/countdown`, которая принимает количество секунд, запускает таймер `$.clock.every` в одну секунду и показывает toast на нуле. Как с `grader`, файл содержит только тестируемый hook и не регистрирует команду:

216 

217```javascript countdown/hooks/register.js theme={null}

218export function register(on) {

219 on('command.run', { command: 'countdown' }, async ($, e) => {

220 // e.args is the text typed after /countdown

221 let left = Number(e.args)

222 const timer = $.clock.every(1000, () => {

223 left -= 1

224 if (left === 0) {

225 timer.cancel()

226 $.ui.toast('Time is up')

227 }

228 })

229 // Print nothing in the transcript

230 return {}

231 })

232}

233```

234 

235Этот тест запускает `/countdown 3` и движет mock clock, поэтому он проверяет три секунды поведения без ожидания трёх секунд:

236 

237```typescript countdown/tests/countdown.test.ts theme={null}

238import { expect, mock, test } from 'claude-code/testing'

239 

240test('the countdown ends with a toast', async ($, on) => {

241 // Answer every $.clock call from a clock the test controls

242 const clock = mock.clock(on)

243 // Collect the text of each toast the mod shows

244 const toasts: string[] = []

245 on('ui.toast', ($, e) => {

246 toasts.push(e.text)

247 return { value: undefined }

248 })

249 

250 await $.command.run({ command: 'countdown', args: '3' })

251 // After two seconds the timer has fired twice, and no toast is due

252 await clock.advance(2000)

253 expect(toasts).toEqual([])

254 // The third second brings the count to zero

255 await clock.advance(1000)

256 expect(toasts).toEqual(['Time is up'])

257})

258```

259 

260Первый `expect` показывает, что toast не приходит рано, и второй показывает, что он приходит один раз. Каждый `advance` разрешается после того, как таймеры, которые наступили, запустились, поэтому проверка на следующей строке видит их эффект.

261 

262<h2 id="test-a-drawing">

263 Тестируйте рисунок

264</h2>

265 

266Тест может нарисовать один из [render sites](/docs/ru/plugins/mods/reference#render-sites) вашего мода, затем нажать, ввести текст в и найти элементы, которые он нарисовал. `$.ui.mount` рисует сайт через hook `ui.render` вашего мода и возвращает handle с методом для каждого из них. Чтобы охватить несколько приложений в одном тесте, установите `surface` на приложение для рисования. Этот тест открывает панель из [Build a pane with tabs](/docs/ru/plugins/mods/interface#build-a-pane-with-tabs), переключает вкладки, нажимает кнопку и проверяет счётчик в терминале и приложении Desktop:

267 

268```typescript hello-tabs/tests/hello-tabs.test.ts theme={null}

269import { expect, test } from 'claude-code/testing'

270 

271// What Claude Code passes to a ui.render hook for this pane, apart from the app

272const PANE = {

273 plugin: 'hello-tabs',

274 component: 'Pane',

275 requestId: 'hello-tabs',

276 viewport: { columns: 100, rows: 30 },

277 props: {

278 title: 'Hello tabs',

279 isFocused: true,

280 bodyColumns: 60,

281 placement: 'inline',

282 scroll: { offset: 0, bodyRows: 10 },

283 view: {},

284 },

285} as const

286 

287test('the second tab counts presses and saves the count', async ($, on) => {

288 // Stub $.store with a Map, so the test can read what the mod saved

289 const saved = new Map<string, unknown>()

290 on('store.get', ($, e) => ({ value: saved.get(e.key) }))

291 on('store.set', ($, e) => {

292 saved.set(e.key, e.value)

293 return { value: undefined }

294 })

295 

296 // Draw the pane once for each app

297 for (const surface of ['terminal', 'desktop'] as const) {

298 const ui = await $.ui.mount({ ...PANE, surface })

299 // Press the buttons by the key the mod gave them

300 await ui.press({ key: 'tab-two' })

301 await ui.press({ key: 'more' })

302 // The second tab's count line is in the drawing

303 expect(await ui.find({ type: 'Text', text: /^Count: \d+$/ })).toBeDefined()

304 await ui.unmount()

305 }

306 

307 // One press in each app makes two

308 expect(saved.get('count')).toBe(2)

309})

310```

311 

312В вашей оболочке запустите `claude plugin test` из директории `hello-tabs`. Тест проходит, когда оба приложения рисуют строку счётчика и мод сохранил `2`. Счётчик переносится из первого приложения во второе, потому что оба mount используют один и тот же загруженный модуль.

313 

314Handle, который возвращает `$.ui.mount`, имеет эти методы, которые адресуют элементы по `key`, который вы им дали:

315 

316| Метод | Что он делает |

317| :- | :- |

318| `press({ key: 'more' })` | Нажимает `Button` с этим key |

319| `input({ key: 'new-note', text: 'buy milk' })` | Вводит текст в `Input` с этим key и нажимает Enter. Добавьте `kind: 'change'` для ввода без отправки. |

320| `select({ key: 'size', value: 'large' })` | Выбирает опцию с этим значением в `Select` с этим key |

321| `find({ key: 'more' })` или `find({ type: 'Text', text: 'Count: 2' })` | Возвращает первый совпадающий элемент как `{ type, props, children }` или `undefined`. `text` может быть строкой или регулярным выражением. |

322| `unmount()` | Удаляет рисунок |

323 

324Каждый метод разрешается после того, как ваш обработчик завершился, поэтому вы можете проверить результат на следующей строке. Установите `props` на то, что Claude Code передал бы для этого сайта. Таблица [render sites](/docs/ru/plugins/mods/reference#render-sites) перечисляет props каждого сайта, и [типы для вашей сборки](/docs/ru/plugins/mods/create#get-the-types-for-your-build) имеют их типы.

325 

326Тест рисунка проверяет дерево, которое возвращает ваш hook, и является ли оно действительным для этого приложения. Он не проверяет, как приложение его рисует, поэтому посмотрите новый макет в реальном сеансе также.

327 

328<h3 id="test-a-drawing-after-clear">

329 Тестируйте рисунок после `/clear`

330</h3>

331 

332Каждый тест начинается с каждого значения `$.state` на его значении по умолчанию, что то, как `/clear` их оставляет. Чтобы тестировать, что делает ваш мод дальше, пропустите `session.start`, вызовите `classic.SessionStart` с `source: 'clear'` и проверьте, что рисует ваш мод.

333 

334Этот тест проверяет модуль из [Load a saved value again after `/clear`](/docs/ru/plugins/mods/interface#load-a-saved-value-again-after-clear). Добавьте его в файл из [Test a drawing](#test-a-drawing), где определён `PANE`. Первый тест этого файла ожидает, что кнопка сохранит счётчик, как кнопка в [Save from more than one session](/docs/ru/plugins/mods/interface#save-from-more-than-one-session):

335 

336```typescript hello-tabs/tests/hello-tabs.test.ts theme={null}

337test('the saved count comes back after /clear', async ($, on) => {

338 // The store already holds a count of 7

339 on('store.get', () => ({ value: 7 }))

340 // Answer the event after your hook passes it on with next(e)

341 on('classic.SessionStart', () => ({}))

342 

343 // Raise the event that fires after /clear, which runs your hook

344 await $.classic.SessionStart({ source: 'clear' })

345 

346 const ui = await $.ui.mount({ ...PANE, surface: 'terminal' })

347 await ui.press({ key: 'tab-two' })

348 // The pane shows the stored count, not the default of 0

349 expect(await ui.find({ type: 'Text', text: 'Count: 7' })).toBeDefined()

350})

351```

352 

353Тест проходит, когда ваш hook `classic.SessionStart` скопировал сохранённый `7` в `$.state` перед тем, как панель нарисовалась. Без этого hook в вашем модуле, панель рисует `Count: 0`, `find` возвращает `undefined` и тест завершается неудачей на `toBeDefined`.

354 

355<h2 id="test-a-mod-that-judges-other-mods">

356 Тестируйте мод, который судит другие моды

357</h2>

358 

359Мод, который ваша организация перечисляет в [`prependPlugins`](/docs/ru/plugins/mods/admin), может отказать другому моду перед его загрузкой. Чтобы тестировать один, установите уровень вашего мода и дайте тесту второй мод для вашего, чтобы допустить или отказать:

360 

361* **`tier`**: вызовите его один раз в верхней части файла теста, как в `tier('prepend')`, чтобы загрузить ваш мод как `prepend`, `append` или `builtin`, его место в [порядке запуска модов](/docs/ru/plugins/mods/events#the-order-mods-run-in). Без него ваш мод загружается как `user`.

362* **`plugins`**: передайте `test` объект опций перед телом теста. Его массив `plugins` содержит моды, которые вы пишете встроенными, каждый с `name` и функцией `register`. Чтобы загрузить один где-то кроме `user`, добавьте `tier` к нему.

363 

364Этот файл теста загружает [policy mod со страницы admin](/docs/ru/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) первым. Он проверяет, что policy mod отказывает моду, который запускает процесс, и допускает тот, который не запускает:

365 

366```typescript acme-guard/tests/guard.test.ts theme={null}

367import { expect, test, tier } from 'claude-code/testing'

368 

369// Load the mod under test ahead of every other mod

370tier('prepend')

371 

372// A second mod whose code calls $.process.run, which the policy blocks

373const runner = {

374 name: 'runner',

375 register(on) {

376 on('tool.call', async ($, e, next) => {

377 await $.process.run(['ls'])

378 return { result: 'runner answered' }

379 })

380 },

381}

382 

383// A second mod that calls nothing the policy blocks

384const reader = {

385 name: 'reader',

386 register(on) {

387 on('tool.call', async ($, e, next) => {

388 return { result: 'reader answered' }

389 })

390 },

391}

392 

393test('refuses a mod that starts a process', { plugins: [runner] }, async ($, on) => {

394 on('tool.call', () => ({ result: 'claude code answered' }))

395 let message = ''

396 try {

397 // The first call on $ loads the mods, so the refusal is thrown here

398 await $.tool.call({ tool: 'Bash', command: 'ls' })

399 } catch (error) {

400 message = error.message

401 }

402 expect(message).toBe('runner: refused by acme-guard: Acme policy: mods may not call process.run')

403})

404 

405test('admits a mod that starts no process', { plugins: [reader] }, async ($, on) => {

406 on('tool.call', () => ({ result: 'claude code answered' }))

407 const out = await $.tool.call({ tool: 'Bash', command: 'ls' })

408 // The answer comes from reader, which shows that it loaded

409 expect(out).toEqual({ result: 'reader answered' })

410})

411```

412 

413В вашей оболочке запустите `claude plugin test` из директории `acme-guard`. Оба теста проходят с policy mod, как показано на странице admin.

414 

415Kit загружает каждый мод при первом вызове теста на `$`. Когда ваш мод отказывает одному, этот вызов выбрасывает, и сообщение называет отказанный мод, мод, который отказал, и вашу причину. Во втором тесте ничего не отказано, поэтому `reader` отвечает на вызов инструмента перед тем, как он достигнет stub.

416 

417<h2 id="next-steps">

418 Следующие шаги

419</h2>

420 

421* [Troubleshoot a mod](/docs/ru/plugins/mods/troubleshoot): узнайте, почему мод ничего не делает в сеансе

422* [Mods reference](/docs/ru/plugins/mods/reference): каждое событие input и result для написания stubs

plugins/mods/troubleshoot.md +284 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

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

6 

7> Узнайте, почему мод Claude Code ничего не делает: сопоставьте симптом или сообщение с его причиной, посмотрите сообщения об отказе и прочитайте журнал отладки.

8 

9Когда модуль мода или один из его hooks дает сбой, Claude Code пропускает его и сеанс продолжается, поэтому неработающий мод может выглядеть как мод, который ничего не делает. Начните с проверки того, что Claude Code прочитал из вашего мода и где он сообщает о проблеме, затем найдите симптом или сообщение, которое у вас есть.

10 

11<h2 id="find-out-why-a-mod-does-nothing">

12 Узнайте, почему мод ничего не делает

13</h2>

14 

15Когда мод ничего не делает, две проверки находят причину: что Claude Code читает из файлов мода и строку, которую он пишет, когда что-то пропускает. Для первого запустите [`claude plugin validate`](/docs/ru/plugins/mods/create#check-what-claude-code-reads-from-your-mod) в вашей оболочке с директорией мода, как в `claude plugin validate ./first-mod`. Это ловит неправильно написанное событие, неправильный манифест и модуль, который Claude Code не может прочитать, без запуска сеанса.

16 

17Когда модуль не загружается, hook пропускается или другой мод отказывает вашему, Claude Code пишет одну строку, которая называет ваш мод. Где вы читаете эту строку, зависит от сеанса:

18 

19* **Сеанс, который горячо перезагружает директорию плагина**: тусклая строка в стенограмме. Это интерактивный сеанс, который вы запустили с `--plugin-dir`, или сеанс, где вы [включили горячую перезагрузку](/docs/ru/plugins/mods/create#ask-claude-for-a-mod) для модов, которые написал Claude.

20* **Любой другой интерактивный сеанс, например тот, который запускает мод, установленный вами из маркетплейса**: [журнал отладки](#read-the-debug-log) только. Чтобы получить его, запустите сеанс с `claude --debug`.

21* **Запуск `claude -p` с `--plugin-dir`**: stderr в формате вывода текста по умолчанию. Отказ другого мода идет только в журнал отладки.

22 

23<h2 id="check-whether-mods-can-load">

24 Проверьте, могут ли загружаться моды

25</h2>

26 

27Чтобы проверить, позволяет ли ваша установка вообще загружать моды, без установки одного, запустите `claude plugin test` в вашей оболочке из директории, которая не содержит мода. Вам не нужен сеанс. Сообщение, которое оно печатает, говорит вам о состоянии:

28 

29| Сообщение включает | Что это означает |

30| :- | :- |

31| `no hooks module to load` | Моды могут загружаться. Команда не нашла мода для тестирования в этой директории. |

32| `hooks modules are turned off here` | Параметр препятствует вашим модам: `disableAllHooks` в ваших собственных параметрах или политика вашей организации |

33| `hooks modules are turned off in this process` | Anthropic отключила установленные моды удаленно. Никакой параметр на вашей машине их не включит. |

34 

35Организация также может установить `allowManagedModsOnly`, чтобы разрешить только свои моды, что эта команда не сообщает. В этом случае мод, который вы устанавливаете, не загружается, и [сообщение говорит почему](/docs/ru/plugins/mods/troubleshoot#messages-from-the-built-in-guard).

36 

37<h2 id="the-mod-doesn’t-load">

38 Мод не загружается

39</h2>

40 

41Ничего, что добавляет мод, не появляется: нет команды, нет рисунка и нет изменения в поведении.

42 

43<h3 id="your-version-is-older-than-2-1-287">

44 Ваша версия старше 2.1.287

45</h3>

46 

47`claude --version` печатает версию старше 2.1.287. Ваша версия предшествует тому, как моды были включены по умолчанию.

48 

49[Обновите Claude Code](/docs/ru/setup#update-claude-code).

50 

51<h3 id="the-mods-active-line-doesn’t-name-the-mod">

52 Строка `mods active` не называет мод

53</h3>

54 

55Ничего, что добавляет мод, не появляется, и [строка `mods active`](/docs/ru/plugins/mods/overview#see-which-mods-a-session-loaded) в `/plugin` не называет его. Модуль hooks не загрузился. Когда Claude Code отказала ему, журнал отладки имеет строку, которая начинается с `hooks module`, имени мода и `not loaded:`, как в `hooks module first-mod@inline not loaded: disableAllHooks in managed settings` для мода, загруженного с `--plugin-dir`.

56 

57Прочитайте причину после двоеточия. Раздел [сообщения об отказе](#refusal-messages) перечисляет каждое. Если журнал не имеет такой строки, пройдите через другие записи в этой группе.

58 

59<h3 id="a-claude-p-run-prints-hooks-module-not-loaded">

60 Запуск `claude -p` печатает `hooks module not loaded`

61</h3>

62 

63Строка начинается с имени мода и идет в stderr. Модуль hooks был отказан. Неинтерактивный запуск не имеет стенограммы, поэтому сообщение идет в stderr.

64 

65Прочитайте причину после двоеточия. Раздел [сообщения об отказе](#refusal-messages) перечисляет каждое.

66 

67<h3 id="refusal-messages">

68 Сообщения об отказе

69</h3>

70 

71Каждое из них следует за `hooks module`, именем мода и `not loaded:` в журнале отладки.

72 

73| Сообщение начинается с | Что это означает |

74| :- | :- |

75| `hooks modules are turned off for installed plugins in this process` | Anthropic отключила установленные моды удаленно. Никакой параметр на вашей машине их не включит. |

76| `disableAllHooks in managed settings` | Ваша организация отключила hooks из установленных плагинов |

77| `only managed plugins and built-in plugins run` | `allowManagedHooksOnly` установлен или `disableAllHooks` установлен в файле параметров, отличном от управляемых параметров |

78| `installed plugins that are not managed load no hooks module in this mode (--bare)` | Вы запустили Claude Code с `--bare` |

79| `another plugin of that name loads first` | Два плагина имеют одно имя. Используется управляемый или загруженный первым. |

80 

81<h3 id="messages-from-the-built-in-guard">

82 Сообщения от встроенной защиты

83</h3>

84 

85На машине с управляемыми параметрами или для пользователя, вошедшего в систему с планом Team или Enterprise, [встроенная защита](/docs/ru/plugins/mods/admin#know-what-happens-by-default) может отказать моду или одному из его ответов. Каждое сообщение называет опцию, которую администратор вашей организации устанавливает для изменения правила.

86 

87| Сообщение содержит | Что это означает | Где оно появляется |

88| :- | :- | :- |

89| `mods are limited to your organization's by policy (allowManagedModsOnly)` | Ваша организация разрешает только [свои моды](/docs/ru/plugins/mods/admin#install-your-organizations-mods), поэтому ваш не был загружен | Журнал отладки и стенограмма в [сеансе, который горячо перезагружает директорию плагина](#find-out-why-a-mod-does-nothing) |

90| `tried to lift a deny rule in your settings` | Hook вашего мода [`tool.check`](/docs/ru/plugins/mods/reference#tools) одобрил вызов, который правило `deny` отказывает. Вызов остается отказанным. | Стенограмма и журнал отладки, один раз для каждого мода в сеансе. В запуске `claude -p` только журнал отладки. |

91| `the deny rules in your settings could not be checked for this call, so it is refused` | Защита не прошла при проверке вызова, который одобрил мод, поэтому она отказала вызову | Причина, которую Claude читает для отказанного вызова |

92 

93<h3 id="validate-passes-and-lists-no-hooks-line">

94 `validate` проходит и не перечисляет строку `hooks`

95</h3>

96 

97`hooks/hooks.json` не имеет ключа `modules` или ключ неправильно написан.

98 

99Добавьте `"modules": ["./register.js"]`.

100 

101<h3 id="hooks-module-did-not-load">

102 `hooks module did not load`

103</h3>

104 

105Строка начинается с имени мода, затем `hooks module did not load:` и причина, которая дает файл и строку, когда проблема в вашем коде. Claude Code не смогла загрузить модуль, например потому что его код верхнего уровня выбросил.

106 

107Исправьте ошибку, которую называет причина.

108 

109<h3 id="options-do-not-fit-plugin-json-userconfig">

110 `options do not fit plugin.json userConfig`

111</h3>

112 

113Строка начинается с имени мода, затем `hooks module did not load: options do not fit plugin.json userConfig:` и причина. Опция не подходит к своему полю [`userConfig`](/docs/ru/plugins/components#user-configuration), например число выше `max` поля или обязательное поле не имеет значения.

114 

115Установите или измените значение. Конец строки называет его запись `pluginConfigs` в `settings.json`.

116 

117<h3 id="no-mod-loads-in-a-directory-you-opened-for-the-first-time">

118 Ни один мод не загружается в директории, которую вы открыли впервые

119</h3>

120 

121Вы не ответили на приглашение доверия для директории.

122 

123Запустите интерактивный сеанс в этой директории с `claude` и примите приглашение доверия, которое оно открывает.

124 

125<h3 id="no-installed-plugin-loads-at-all">

126 Ни один установленный плагин не загружается вообще

127</h3>

128 

129Вы запустили Claude Code с `--safe-mode`.

130 

131Запустите без флага.

132 

133<h2 id="a-hook-is-skipped-or-a-mod-is-unloaded">

134 Hook пропускается или мод выгружается

135</h2>

136 

137Мод загрузился, а затем Claude Code пропустила один из его hooks или выгрузила его.

138 

139<h3 id="hook-skipped">

140 `hook skipped`

141</h3>

142 

143Строка называет мод и событие, затем говорит `hook skipped:` и причину, как в `first-mod: tool.call hook skipped: threw Error: boom`. Hook выбросила, прошла мимо своего [10-секундного ограничения по времени](/docs/ru/plugins/mods/reference#limits) или вернула результат неправильной формы. Строка появляется один раз для каждого события и вида отказа до перезагрузки мода.

144 

145Исправьте ошибку. Журнал отладки имеет строку для каждого возникновения.

146 

147<h3 id="it-crashed-the-hooks-worker">

148 `it crashed the hooks worker`

149</h3>

150 

151Строка начинается с имени мода, как в `first-mod was unloaded: it crashed the hooks worker`. Установленные моды используют один рабочий поток. Рабочий перестал отвечать или упал, и Claude Code проследила это до этого мода и выгрузила его. Hook, который блокирует поток, например цикл, который никогда не ожидает, является одной из причин.

152 

153Исправьте hook.

154 

155<h3 id="mods-that-run-in-the-hooks-worker-are-off-for-this-session">

156 `mods that run in the hooks worker are off for this session`

157</h3>

158 

159Строка читает `hooks: mods that run in the hooks worker are off for this session: it crashed 3 times`. Рабочий остановился три раза и Claude Code не смогла проследить остановки до одного мода, поэтому она выгрузила каждый мод, который не встроен, включая моды, которые устанавливает ваша организация. Эта строка достигает стенограммы в каждом интерактивном сеансе.

160 

161Запустите `/reload-plugins` для их перезагрузки.

162 

163<h2 id="a-tool-call-is-denied">

164 Вызов инструмента отказан

165</h2>

166 

167Мод загрузился и его hooks работают, и вызов инструмента, который он коснулся, отказан.

168 

169<h3 id="a-hook-changed-this-call’s-input-after-the-model-wrote-it">

170 `a hook changed this call's input after the model wrote it`

171</h3>

172 

173В автоматическом режиме отказанный вызов инструмента дает эту причину. Hook изменила входные данные вызова инструмента после того, как [классификатор на стороне сервера](/docs/ru/permission-modes#server-side-classifier-review) его рассмотрел, поэтому этот обзор не охватывает то, что будет запущено. Hook может быть [`tool.call`](/docs/ru/plugins/mods/reference#tools) мода или [`turn.step`](/docs/ru/plugins/mods/reference#turns) hook или [`PreToolUse`](/docs/ru/hooks#pretooluse) hook параметров. Сообщение не говорит, какой.

174 

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

176 

177<h3 id="a-message-about-the-deny-rules-in-your-settings">

178 Сообщение о правилах deny в ваших параметрах

179</h3>

180 

181`tried to lift a deny rule in your settings` и `the deny rules in your settings could not be checked for this call, so it is refused` оба поступают от встроенной защиты.

182 

183Посмотрите их в [Сообщения от встроенной защиты](#messages-from-the-built-in-guard).

184 

185<h2 id="a-drawing-doesn’t-appear-or-respond">

186 Рисунок не появляется или не отвечает

187</h2>

188 

189Мод загрузился, и его панель, полоса или элементы управления не ведут себя так, как вы ожидаете.

190 

191<h3 id="a-pane-or-band-is-empty-or-shows-claude-code’s-usual-content">

192 Панель или полоса пуста или показывает обычное содержимое Claude Code

193</h3>

194 

195[Дерево](/docs/ru/plugins/mods/interface#build-a-tree-from-elements), которое вернула ваша hook, не прошло валидацию. С `--plugin-dir` стенограмма говорит `ui.render (Pane) refused:` с причиной, как в `first-mod: ui.render (Pane) refused: Box prop "flexDirection" must be one of row, column, row-reverse, column-reverse; the engine drew its own`. Журнал отладки имеет `a hook returned a tree that does not validate` с той же причиной.

196 

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

198 

199<h3 id="ui-open-runs-and-no-pane-appears">

200 `$.ui.open` работает и панель не появляется

201</h3>

202 

203Вызов не поступил от чего-то, что сделал пользователь, и терминал уже, чем 144 столбца.

204 

205Откройте панель из команды или кнопки или проверьте результат `isPlaced` вызова. См. [Откройте панель в нужное время](/docs/ru/plugins/mods/interface#open-a-pane-at-the-right-time).

206 

207<h3 id="hotkeys-do-nothing">

208 Горячие клавиши ничего не делают

209</h3>

210 

211Ваша панель не имеет фокуса клавиатуры.

212 

213Нажмите Ctrl+X затем Tab или щелкните панель. Откройте ее с `focus: true` из команды.

214 

215<h3 id="a-drawing-works-in-the-terminal-and-not-in-the-desktop-app">

216 Рисунок работает в терминале и не в приложении Desktop

217</h3>

218 

219Сайт или элемент там недоступны.

220 

221Проверьте таблицы [сайтов рендеринга](/docs/ru/plugins/mods/reference#render-sites) и [элементов](/docs/ru/plugins/mods/reference#elements).

222 

223<h2 id="an-edit-or-a-value-is-lost">

224 Редактирование или значение потеряно

225</h2>

226 

227Мод работает, и изменение, которое вы сделали, или значение, которое оно сохранило, отсутствует.

228 

229<h3 id="your-edits-don’t-take-effect">

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

231</h3>

232 

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

234 

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

236 

237<h3 id="a-value-resets-when-the-module-reloads">

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

239</h3>

240 

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

242 

243[Сохраняйте значение в `$.state` или `$.store`](/docs/ru/plugins/mods/interface#keep-state).

244 

245<h3 id="a-value-resets-after-/clear-/resume-or-/branch">

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

247</h3>

248 

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

250 

251[Загрузите сохраненное значение снова](/docs/ru/plugins/mods/interface#load-a-saved-value-again-after-clear) в hook `classic.SessionStart`.

252 

253<h2 id="read-the-debug-log">

254 Прочитайте журнал отладки

255</h2>

256 

257Журнал отладки имеет строку для каждого модуля, который Claude Code загружает или отказывает, каждого hook, который дает сбой, и каждого результата, который она отказывает, поэтому это место для поиска, когда стенограмма ничего не показывает. Чтобы написать один, в вашей оболочке запустите Claude Code с `--debug` или с `--debug-file <path>` для выбора места назначения:

258 

259```bash theme={null}

260claude --debug-file ./mod-debug.log --plugin-dir ./first-mod

261```

262 

263В другом терминале следите за файлом и фильтруйте по имени вашего мода:

264 

265```bash theme={null}

266tail -f ./mod-debug.log | grep first-mod

267```

268 

269Мод, который загрузился, имеет строку, которая называет его и перечисляет события, которые он подключает. Мод, загруженный с `--plugin-dir`, появляется под его именем, за которым следует `@inline`:

270 

271```text theme={null}

272hooks module first-mod@inline loaded (worker, environment 2, tier user); events: session.start,tool.call,command.run,ui.render

273```

274 

275Рисунок, который не прошел валидацию, считается отказанным результатом и получает строку тоже. Чтобы написать свои собственные строки в журнал, вызовите [`$.ui.log`](/docs/ru/plugins/mods/api#show-something-without-starting-a-turn) со вторым аргументом, как в `$.ui.log('message', { to: 'debug' })`. Без второго аргумента `$.ui.log` добавляет тусклую строку в стенограмму.

276 

277Пока вы редактируете мод, загруженный с `--plugin-dir`, стенограмма показывает строку для каждой перезагрузки, которая называет мод и перечисляет его hooks. Если сохранение нарушает модуль, строка говорит `reload failed, the previous version stays loaded:` с причиной, и последняя рабочая версия продолжает работать.

278 

279<h2 id="next-steps">

280 Следующие шаги

281</h2>

282 

283* [Протестируйте мод](/docs/ru/plugins/mods/test): ловите проблемы до того, как они достигнут сеанса

284* [Устранение неполадок плагинов](/docs/ru/plugins/troubleshooting): проблемы с установкой и загрузкой плагина, которые не специфичны для модов

plugins/org.md +4 −1

Details

212| `pluginTrustMessage` | Добавляет ваш текст к предупреждению доверия, которое `/plugin` показывает перед установкой плагина | Не изменяет собственный текст предупреждения |212| `pluginTrustMessage` | Добавляет ваш текст к предупреждению доверия, которое `/plugin` показывает перед установкой плагина | Не изменяет собственный текст предупреждения |

213| `allowedChannelPlugins` | Заменяет список плагинов по умолчанию, разрешенных для отправки сообщений канала. Требует `channelsEnabled: true` | См. [Ограничить, какие плагины канала могут работать](/docs/ru/channels#restrict-which-channel-plugins-can-run) |213| `allowedChannelPlugins` | Заменяет список плагинов по умолчанию, разрешенных для отправки сообщений канала. Требует `channelsEnabled: true` | См. [Ограничить, какие плагины канала могут работать](/docs/ru/channels#restrict-which-channel-plugins-can-run) |

214| [`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1`](/docs/ru/env-vars) | Останавливает интерактивные сессии терминала от автоматической регистрации официального marketplace | Не удаляет marketplace, уже зарегистрированный. Allowlist и blocklist управляют той же автоматической регистрацией без него. Машина, которая запустилась один раз с установленным, не возобновляет автоматическую регистрацию после того, как вы его отключите |214| [`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1`](/docs/ru/env-vars) | Останавливает интерактивные сессии терминала от автоматической регистрации официального marketplace | Не удаляет marketplace, уже зарегистрированный. Allowlist и blocklist управляют той же автоматической регистрацией без него. Машина, которая запустилась один раз с установленным, не возобновляет автоматическую регистрацию после того, как вы его отключите |

215| [`allowManagedModsOnly`](/docs/ru/plugins/mods/admin#stop-user-installed-mods-from-loading) | Останавливает каждый установленный [mod](/docs/ru/plugins/mods/overview), который не [считается модом вашей организации](/docs/ru/plugins/mods/admin#install-your-organizations-mods), от загрузки | Не останавливает плагин, содержащий mod, от установки. Для этого используйте ключи marketplace в этой таблице |

215 216 

216Каждый ключ в таблице является управляемым параметром, кроме `enabledPlugins`, `syncClaudeAiPlugins` и `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`:217Каждый ключ в таблице является управляемым параметром, кроме `enabledPlugins`, `syncClaudeAiPlugins`, `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` и `allowManagedModsOnly`:

217 218 

218* **`enabledPlugins`**: вы можете установить его в любой области, и управляемые параметры его блокируют.219* **`enabledPlugins`**: вы можете установить его в любой области, и управляемые параметры его блокируют.

219* **`syncClaudeAiPlugins`**: каждый пользователь также может установить его в своих собственных пользовательских или локальных параметрах. См. его [область в справочнике параметров](/docs/ru/settings-reference#syncclaudeaiplugins).220* **`syncClaudeAiPlugins`**: каждый пользователь также может установить его в своих собственных пользовательских или локальных параметрах. См. его [область в справочнике параметров](/docs/ru/settings-reference#syncclaudeaiplugins).

220* **`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`**: это переменная окружения, которую вы доставляете через управляемый блок `env`, показанный под [Отключить обновления для всего флота](#turn-updates-off-for-the-whole-fleet).221* **`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`**: это переменная окружения, которую вы доставляете через управляемый блок `env`, показанный под [Отключить обновления для всего флота](#turn-updates-off-for-the-whole-fleet).

222* **`allowManagedModsOnly`**: это опция встроенного плагина, которую вы устанавливаете под `pluginConfigs` в управляемых параметрах. См. [Остановить загрузку пользовательских установленных mods](/docs/ru/plugins/mods/admin#stop-user-installed-mods-from-loading).

221 223 

222Каждый ключ параметров здесь имеет запись в [справочнике параметров](/docs/ru/settings-reference).224Каждый ключ параметров здесь имеет запись в [справочнике параметров](/docs/ru/settings-reference).

223 225 


457* [Marketplace reference](/docs/ru/plugins/marketplace-reference#marketplace-sources): значения `source`, которые `extraKnownMarketplaces`, `strictKnownMarketplaces` и `blockedMarketplaces` принимают459* [Marketplace reference](/docs/ru/plugins/marketplace-reference#marketplace-sources): значения `source`, которые `extraKnownMarketplaces`, `strictKnownMarketplaces` и `blockedMarketplaces` принимают

458* [Host and maintain a marketplace](/docs/ru/plugins/host-marketplace): запустите marketplace, на который указывает ваша политика460* [Host and maintain a marketplace](/docs/ru/plugins/host-marketplace): запустите marketplace, на который указывает ваша политика

459* [Plugin security and trust](/docs/ru/plugins/security): что плагин может делать на машине и как просмотреть один перед установкой461* [Plugin security and trust](/docs/ru/plugins/security): что плагин может делать на машине и как просмотреть один перед установкой

462* [Manage mods for your organization](/docs/ru/plugins/mods/admin): отключите или ограничьте mods, плагины, которые запускают JavaScript внутри Claude Code

460* [Server-managed settings](/docs/ru/server-managed-settings): доставляйте эти ключи из консоли администратора claude.ai463* [Server-managed settings](/docs/ru/server-managed-settings): доставляйте эти ключи из консоли администратора claude.ai

461* [Troubleshoot plugins](/docs/ru/plugins/troubleshooting#blocked-by-your-organization): сообщения, которые пользователи видят, когда политика их блокирует464* [Troubleshoot plugins](/docs/ru/plugins/troubleshooting#blocked-by-your-organization): сообщения, которые пользователи видят, когда политика их блокирует

Details

30* [**Skills**](/docs/ru/plugins/components#skills): инструкции `SKILL.md`, которые Claude загружает при необходимости, и которые вы также можете запустить как команду30* [**Skills**](/docs/ru/plugins/components#skills): инструкции `SKILL.md`, которые Claude загружает при необходимости, и которые вы также можете запустить как команду

31* [**Agents**](/docs/ru/plugins/components#agents): определения подагентов, которым Claude может делегировать31* [**Agents**](/docs/ru/plugins/components#agents): определения подагентов, которым Claude может делегировать

32* [**Hooks**](/docs/ru/plugins/components#hooks): команды, которые Claude Code запускает в точках своего жизненного цикла, например после каждого редактирования32* [**Hooks**](/docs/ru/plugins/components#hooks): команды, которые Claude Code запускает в точках своего жизненного цикла, например после каждого редактирования

33* [**A hooks module**](/docs/ru/plugins/mods/overview): hooks, написанные как функции JavaScript, которые также могут рисовать панели и добавлять команды. Plugin, который имеет один, называется mod

33* [**MCP servers**](/docs/ru/plugins/components#mcp-servers): серверы инструментов, к которым Claude Code подключается, пока plugin включен34* [**MCP servers**](/docs/ru/plugins/components#mcp-servers): серверы инструментов, к которым Claude Code подключается, пока plugin включен

34 35 

35На этой диаграмме показан plugin с именем `my-plugin`, который содержит по одному из каждого из этих компонентов, и что вы получаете от каждого файла после загрузки plugin.36На этой диаграмме показан plugin с именем `my-plugin`, который содержит skill, agent, hooks и MCP server, и что вы получаете от каждого файла после загрузки plugin.

36 37 

37<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=f623b64e82713b830e48174f0a922888" className="dark:hidden" alt="Диаграмма в двух столбцах, соединенных пятью прямыми стрелками. Слева — директория plugin с именем my-plugin, содержащая манифест в .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json и другие компоненты. Справа — то, что каждый файл дает вам в вашем сеансе: манифест устанавливает имя plugin, my-plugin; skill запускается как /my-plugin:review; файл agent — это подагент, которому Claude может делегировать; файл hooks содержит hooks, которые запускаются на событиях жизненного цикла; и .mcp.json добавляет MCP server, который дает Claude инструменты." width="760" height="336" data-path="images/plugin-directory.svg" />38<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=f623b64e82713b830e48174f0a922888" className="dark:hidden" alt="Диаграмма в двух столбцах, соединенных пятью прямыми стрелками. Слева — директория plugin с именем my-plugin, содержащая манифест в .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json и другие компоненты. Справа — то, что каждый файл дает вам в вашем сеансе: манифест устанавливает имя plugin, my-plugin; skill запускается как /my-plugin:review; файл agent — это подагент, которому Claude может делегировать; файл hooks содержит hooks, которые запускаются на событиях жизненного цикла; и .mcp.json добавляет MCP server, который дает Claude инструменты." width="760" height="336" data-path="images/plugin-directory.svg" />

38 39 

Details

29Плагин может содержать контент, который выполняет код на вашей машине с вашими привилегиями пользователя, и контент, который входит в контекст Claude в качестве инструкций, поэтому [перед установкой плагина его следует проверить](#review-a-plugin-before-you-install). Вот что может делать установленный плагин:29Плагин может содержать контент, который выполняет код на вашей машине с вашими привилегиями пользователя, и контент, который входит в контекст Claude в качестве инструкций, поэтому [перед установкой плагина его следует проверить](#review-a-plugin-before-you-install). Вот что может делать установленный плагин:

30 30 

31* **Hooks**: [hooks](/docs/ru/hooks) плагина выполняются как команды shell в определённых точках жизненного цикла Claude Code, например до или после вызова инструмента.31* **Hooks**: [hooks](/docs/ru/hooks) плагина выполняются как команды shell в определённых точках жизненного цикла Claude Code, например до или после вызова инструмента.

32* **Mods**: [mod](/docs/ru/plugins/mods/overview) плагина выполняет JavaScript внутри Claude Code с вашими разрешениями. Чтобы увидеть, что делает mod перед установкой, см. [Решите, доверять ли mod](/docs/ru/plugins/mods/overview#decide-whether-to-trust-a-mod).

32* **MCP и LSP серверы**: Claude Code подключается к [MCP серверам](/docs/ru/mcp), которые объявляет включённый плагин, и предоставляет Claude их инструменты. Stdio MCP сервер работает как процесс, который Claude Code запускает на вашей машине. Claude Code также запускает языковые серверы, которые объявляет плагин.33* **MCP и LSP серверы**: Claude Code подключается к [MCP серверам](/docs/ru/mcp), которые объявляет включённый плагин, и предоставляет Claude их инструменты. Stdio MCP сервер работает как процесс, который Claude Code запускает на вашей машине. Claude Code также запускает языковые серверы, которые объявляет плагин.

33* **`bin/` директория**: Claude Code добавляет директорию `bin/` каждого включённого плагина в `PATH` shell инструмента Bash, поэтому команды Bash от Claude могут запускать любой исполняемый файл там.34* **`bin/` директория**: Claude Code добавляет директорию `bin/` каждого включённого плагина в `PATH` shell инструмента Bash, поэтому команды Bash от Claude могут запускать любой исполняемый файл там.

34* **Skills, команды и агенты**: они входят в контекст Claude в качестве инструкций, поэтому они влияют на то, что Claude делает с инструментами, которые у него уже есть.35* **Skills, команды и агенты**: они входят в контекст Claude в качестве инструкций, поэтому они влияют на то, что Claude делает с инструментами, которые у него уже есть.


37[Правила разрешений](/docs/ru/permissions) Claude Code и [sandbox](/docs/ru/sandboxing) охватывают вызовы инструментов, которые делает Claude, а не код, который плагин запускает самостоятельно:38[Правила разрешений](/docs/ru/permissions) Claude Code и [sandbox](/docs/ru/sandboxing) охватывают вызовы инструментов, которые делает Claude, а не код, который плагин запускает самостоятельно:

38 39 

39* **Hooks и серверные процессы**: command hooks выполняют команды shell с вашими полными привилегиями пользователя. Claude Code запускает hooks и MCP серверы вне sandbox.40* **Hooks и серверные процессы**: command hooks выполняют команды shell с вашими полными привилегиями пользователя. Claude Code запускает hooks и MCP серверы вне sandbox.

40* **Вызовы инструментов Claude**: вызов одного из инструментов MCP плагина и команда Bash, которая запускает исполняемый файл из `bin/` плагина, являются вызовами инструментов, поэтому к ним применяются ваши правила разрешений.41* **Вызовы инструментов Claude**: вызов одного из инструментов MCP плагина и команда Bash, которая запускает исполняемый файл из `bin/` плагина, являются вызовами инструментов, поэтому к ним применяются ваши правила разрешений. Чтобы узнать, что mod может делать с вызовом инструмента, см. [Решите, доверять ли mod](/docs/ru/plugins/mods/overview#decide-whether-to-trust-a-mod).

41 42 

42Установка плагина также включает его, если только его манифест или запись маркетплейса не устанавливают [`defaultEnabled: false`](/docs/ru/plugins/install#choose-an-install-scope) и вы сами его не включили.43Установка плагина также включает его, если только его манифест или запись маркетплейса не устанавливают [`defaultEnabled: false`](/docs/ru/plugins/install#choose-an-install-scope) и вы сами его не включили.

43 44 

Details

201 201 

202Успешное добавление выводит `Successfully added marketplace: <name>`.202Успешное добавление выводит `Successfully added marketplace: <name>`.

203 203 

204<h3 id="invalid-git-url">

205 `Invalid git URL`

206</h3>

207 

208Вы добавили маркетплейс, установили плагин или запустили обновление с адреса git, и команда не удалась с `Invalid git URL` в сообщении.

209 

210Claude Code проверяет каждый адрес git перед запуском git. Он отказывает адресу, чей протокол он не поддерживает. Он также отказывает адресу, который git может прочитать как именование другого сервера или папки, чем тот, который показывает адрес.

211 

212Текст после адреса называет, что изменить. Переведите адрес так, как говорит сообщение, и запустите команду снова.

213 

214Отказ, который вместо этого говорит `is blocked by enterprise policy`, исходит из параметров вашей организации. См. [Источник маркетплейса заблокирован корпоративной политикой](#marketplace-source-is-blocked-by-enterprise-policy).

215 

204<h3 id="path-does-not-exist">216<h3 id="path-does-not-exist">

205 `Path does not exist: <path>`217 `Path does not exist: <path>`

206</h3>218</h3>


410 422 

411`claude plugin install` в вашей оболочке выводит другое сообщение. Для плагина, уже установленного в целевой области, он выводит `Plugin "<name>@<marketplace>" is already installed (scope: user)` и выходит с кодом 0. Если его каталог кэша отсутствует, та же команда повторно загружает его.423`claude plugin install` в вашей оболочке выводит другое сообщение. Для плагина, уже установленного в целевой области, он выводит `Plugin "<name>@<marketplace>" is already installed (scope: user)` и выходит с кодом 0. Если его каталог кэша отсутствует, та же команда повторно загружает его.

412 424 

425<h3 id="plugin-would-share-its-folder">

426 `"<plugin>" was not installed: it would share its folder with "<other>"`

427</h3>

428 

429Вы установили плагин через `claude plugin install`, `/plugin` или предложение установки в сеансе, и Claude Code отказал ему с этой строкой или с `would share its saved data with`.

430 

431ID отказанного плагина и ID установленного плагина отображаются в одну и ту же папку на диске: они одинаковы, когда `.` и `@` записываются как `-`. На macOS и Windows ID, которые отличаются только заглавными буквами, также отображаются в одну и ту же папку. Установка обоих поместит файлы одного плагина в папку другого, поэтому Claude Code отказывает и установленный плагин сохраняет свои файлы.

432 

433Сообщение называет способ выхода:

434 

435* **Другой плагин установлен**: сообщение говорит `Only one of the two can be installed.` и называет команду `claude plugin uninstall` или шаг удаления в `/plugin`, который удаляет другой плагин. Запустите его, затем установите снова. Для того, что удаляет удаление, см. [Что удаление удаляет и сохраняет](/docs/ru/plugins/cli-reference#what-an-uninstall-deletes-and-keeps).

436* **Оба ID приходят в одну установку**, такие как плагин и зависимость, которая ему нужна: никакой порядок установки не помогает. Только разработчик маркетплейса, который содержит оба плагина, может исправить это, переименовав один из них. Когда два приходят из разных маркетплейсов, разработчик любого из них может.

437 

413<h3 id="this-plugin-uses-a-source-type-your-claude-code-version-does-not-suppo">438<h3 id="this-plugin-uses-a-source-type-your-claude-code-version-does-not-suppo">

414 `This plugin uses a source type your Claude Code version does not support`439 `This plugin uses a source type your Claude Code version does not support`

415</h3>440</h3>


790* **`URL is unset or invalid`**: опция `${user_config.*}`, которую использует URL, не установлена. Запустите `/plugin configure <plugin>`, чтобы установить её815* **`URL is unset or invalid`**: опция `${user_config.*}`, которую использует URL, не установлена. Запустите `/plugin configure <plugin>`, чтобы установить её

791* **`has an invalid MCP url`** или **`headersHelper for MCP server '<server>' references ${user_config.*}`**: конфигурация самого плагина виновата. Исправьте `url` или `headersHelper` в конфигурации MCP вашего плагина или сообщите об этом автору плагина, если плагин не ваш. Случай `headersHelper` имеет свою собственную запись в разделе [команда плагина ссылается на user\_config](/docs/ru/errors#plugin-command-references-user-config)816* **`has an invalid MCP url`** или **`headersHelper for MCP server '<server>' references ${user_config.*}`**: конфигурация самого плагина виновата. Исправьте `url` или `headersHelper` в конфигурации MCP вашего плагина или сообщите об этом автору плагина, если плагин не ваш. Случай `headersHelper` имеет свою собственную запись в разделе [команда плагина ссылается на user\_config](/docs/ru/errors#plugin-command-references-user-config)

792 817 

818<h4 id="bundled-mcp-server-name-was-not-started-it-needs-configuration">

819 `Bundled MCP server "<name>" was not started: it needs configuration`

820</h4>

821 

822Плагин включает сервер как [MCPB bundle](/docs/ru/plugins/components#include-a-packaged-mcpb-server), который объявляет `user_config`, и требуемый параметр не имеет сохранённого значения или сохранённое значение не проходит собственную проверку bundle, поэтому Claude Code пропускает запуск сервера. Остальная часть плагина работает.

823 

824Выберите плагин на вкладке **Installed** в `/plugin` и выберите **Configure**, чтобы предоставить значения. После сохранения `/plugin` показывает `Configuration saved.` и закрывается, и Claude Code перезагружает плагины, как описано в разделе [Управление установленными плагинами](/docs/ru/plugins/install#manage-installed-plugins). Сервер запускается после применения этой перезагрузки. До v2.1.285 Claude Code пропускал сервер без отображения этой строки.

825 

793<h4 id="server-is-configured-but-never-connects">826<h4 id="server-is-configured-but-never-connects">

794 Сервер настроен, но никогда не подключается827 Сервер настроен, но никогда не подключается

795</h4>828</h4>


934 967 

935Ваш плагин объявляет опции `userConfig`, но диалог конфигурации не появляется при его установке.968Ваш плагин объявляет опции `userConfig`, но диалог конфигурации не появляется при его установке.

936 969 

937Интерактивная установка показывает диалог, и команда оболочки принимает значения как флаги вместо этого:970Появляется ли диалог при установке, зависит от того, где вы его запускаете:

938 971 

939* **`/plugin install` в сеансе или вкладка Discover в `/plugin`**: диалог является частью этой интерактивной установки972* **`/plugin install` в сеансе или вкладка Discover в `/plugin`**: диалог является частью этой интерактивной установки

973* **Диалог управления плагинами расширения VS Code**: запрашивает неустановленные опции как форму после установки. До v2.1.285 установка там не показывала форму опций, поэтому установите значения из сеанса терминала с помощью `/plugin configure <plugin>@<marketplace>`

940* **`claude plugin install` в вашей оболочке**: никогда не запрашивает значения `userConfig`. Он сохраняет любые значения `--config KEY=VALUE`, которые вы передаёте, и когда опции остаются неустановленными, он выводит `N userConfig options not yet set — run /plugin configure <plugin>@<marketplace> in Claude Code, or pass --config KEY=VALUE.` Когда любая из неустановленных опций требуется, `(M required)` следует за `not yet set`.974* **`claude plugin install` в вашей оболочке**: никогда не запрашивает значения `userConfig`. Он сохраняет любые значения `--config KEY=VALUE`, которые вы передаёте, и когда опции остаются неустановленными, он выводит `N userConfig options not yet set — run /plugin configure <plugin>@<marketplace> in Claude Code, or pass --config KEY=VALUE.` Когда любая из неустановленных опций требуется, `(M required)` следует за `not yet set`.

941 975 

942Если вы установили из оболочки, передайте значения с `--config`, один флаг на опцию:976Если вы установили из оболочки, передайте значения с `--config`, один флаг на опцию:


945claude plugin install my-plugin@my-marketplace --config api_url=https://example.com979claude plugin install my-plugin@my-marketplace --config api_url=https://example.com

946```980```

947 981 

948Когда каждая опция установлена, вывод установки не содержит строку `not yet set`. Чтобы открыть диалог позже вместо этого, запустите `/plugin configure my-plugin@my-marketplace` в сеансе.982Когда каждая опция установлена, вывод установки не содержит строку `not yet set`.

983 

984Чтобы открыть диалог позже вместо этого, запустите `/plugin configure my-plugin@my-marketplace` в сеансе. Из оболочки, [`claude plugin configure`](/docs/ru/plugins/cli-reference#plugin-configure) показывает, какие опции всё ещё не установлены, и сохраняет значения, переданные в stdin. Это требует Claude Code v2.1.285 или позже.

949 985 

950Если вы передаёте ключ `--config`, который манифест не объявляет, плагин всё ещё устанавливается, и команда выводит `⚠ Installed, but --config not applied: --config key "<key>" isn't declared in this plugin's userConfig.` за которым следуют ключи, которые плагин объявляет.986Если вы передаёте ключ `--config`, который манифест не объявляет, плагин всё ещё устанавливается, и команда выводит `⚠ Installed, but --config not applied: --config key "<key>" isn't declared in this plugin's userConfig.` за которым следуют ключи, которые плагин объявляет.

951 987 

988Для плагина, который поставляет [файл пакета MCPB](/docs/ru/plugins/components#include-a-packaged-mcpb-server), объявляющий `user_config` собственный, сообщение читается `isn't declared in this plugin's userConfig or by its bundled MCP servers.` вместо этого, и известные ключи включают ключи этого сервера, написанные `<server>.<key>`. Пакет, на который манифест ссылается по URL, не читается во время установки, поэтому его ключи не указаны и сообщение говорит настроить его в `/plugin`. Установка ключей `<server>.<key>` требует Claude Code v2.1.285 или позже.

989 

952<h3 id="claude-plugin-validate-reports-errors">990<h3 id="claude-plugin-validate-reports-errors">

953 `claude plugin validate` сообщает об ошибках991 `claude plugin validate` сообщает об ошибках

954</h3>992</h3>


968| `Path contains ".." which could be a path traversal attempt: <path>` | Путь компонента выходит за пределы каталога плагина. | Используйте пути внутри корня плагина. |1006| `Path contains ".." which could be a path traversal attempt: <path>` | Путь компонента выходит за пределы каталога плагина. | Используйте пути внутри корня плагина. |

969| `Path is a file; skills entries must be directories containing SKILL.md` | Запись `skills` указывает на `SKILL.md` вместо его каталога. | Укажите на родительский каталог или `.` для `SKILL.md` на уровне корня. |1007| `Path is a file; skills entries must be directories containing SKILL.md` | Запись `skills` указывает на `SKILL.md` вместо его каталога. | Укажите на родительский каталог или `.` для `SKILL.md` на уровне корня. |

970| `No frontmatter block found` или `YAML frontmatter failed to parse: <error>` | Файл skill, агента или команды имеет отсутствующий или недействительный YAML frontmatter. | Добавьте или исправьте frontmatter между разделителями `---`. Сообщается при валидации каталога плагина. |1008| `No frontmatter block found` или `YAML frontmatter failed to parse: <error>` | Файл skill, агента или команды имеет отсутствующий или недействительный YAML frontmatter. | Добавьте или исправьте frontmatter между разделителями `---`. Сообщается при валидации каталога плагина. |

1009| `Plugin name "<name>" is reserved: it passes as one of Anthropic's own` | Имя плагина `name` является одним из [зарезервированных имён](/docs/ru/plugins/manifest-reference#name). | Переименуйте плагин в соответствии с его функциональностью. |

971| `Unknown field '<key>'` | Манифест имеет поле, которое схема не определяет. | Удалите его или используйте имя, которое предлагает сообщение. Claude Code игнорирует неизвестные поля во время загрузки. |1010| `Unknown field '<key>'` | Манифест имеет поле, которое схема не определяет. | Удалите его или используйте имя, которое предлагает сообщение. Claude Code игнорирует неизвестные поля во время загрузки. |

972 1011 

973Запустите команду снова после каждого исправления до тех пор, пока она не выведет никаких ошибок.1012Запустите команду снова после каждого исправления до тех пор, пока она не выведет никаких ошибок.

Details

84<span id="loop-provider-differences" />84<span id="loop-provider-differences" />

85 85 

86<Note>86<Note>

87 Динамически выбранные интервалы и [встроенная подсказка обслуживания](#run-the-built-in-maintenance-prompt) работают на каждом поставщике и с [получением флага функции](/docs/ru/env-vars#features-that-need-feature-flag-fetching) отключенным. На Amazon Bedrock, Claude Platform на AWS, Google Cloud's Agent Platform и Microsoft Foundry, или с отключенным получением, оба требуют Claude Code v2.1.248 или позже. В этих случаях на более ранних версиях подсказка без интервала запускается по фиксированному расписанию в 10 минут, а `/loop` без подсказки выводит сообщение об использовании.87 Динамически выбранные интервалы и [встроенная подсказка обслуживания](#run-the-built-in-maintenance-prompt) работают на каждом поставщике и с [получением флага функции](/docs/ru/env-vars#features-that-need-feature-flag-fetching) отключенным. На Amazon Bedrock, Claude Platform на AWS, Google Cloud's Agent Platform и Microsoft Foundry, или с отключенным получением, оба требуют Claude Code v2.1.248 или позже.

88</Note>88</Note>

89 89 

90<h3 id="run-the-built-in-maintenance-prompt">90<h3 id="run-the-built-in-maintenance-prompt">

Details

87Runner служит одному владельцу за раз. Первый сеанс, который runner берёт в работу, закрепляет runner за владельцем этого сеанса, и runner затем запускает сеансы только для этого владельца, до настроенной емкости. Кто владелец, зависит от того, как был запущен сеанс:87Runner служит одному владельцу за раз. Первый сеанс, который runner берёт в работу, закрепляет runner за владельцем этого сеанса, и runner затем запускает сеансы только для этого владельца, до настроенной емкости. Кто владелец, зависит от того, как был запущен сеанс:

88 88 

89* **Сеансы, запущенные пользователем**: владелец — это учетная запись этого пользователя.89* **Сеансы, запущенные пользователем**: владелец — это учетная запись этого пользователя.

90* **Сеансы канала Claude Tag**: Claude запускает их без прикрепленной учетной записи пользователя, поэтому владелец — это [агент Claude Tag](https://claude.com/docs/claude-tag/concepts/glossary#agent-identity), который запустил сеанс. Каждый сеанс канала, который запускает этот агент, имеет одного владельца, кто бы ни отправил сообщение Slack, поэтому runner, закреплённый за ним, обслуживает сеансы, которые разные люди запустили, когда вы запускаете его с `--capacity` выше одного или с положительным `--drain-grace-sec`. Runner, закреплённый за пользователем, никогда не берёт эти сеансы, а runner, закреплённый за агентом Claude Tag, никогда не берёт сеансы пользователя.90* **Сеансы канала Claude Tag**: Claude запускает их без прикрепленной учетной записи пользователя, поэтому владелец — это [агент Claude Tag](https://claude.com/docs/claude-tag/concepts/glossary#agent-identity), который запустил сеанс. Каждый сеанс канала, который запускает этот агент, имеет одного владельца, кто бы ни отправил сообщение Slack, поэтому runner, закреплённый за ним, обслуживает сеансы, которые разные люди запустили, когда вы запускаете его с `--capacity` выше одного или с положительным `--drain-grace-sec`.

91 91 

92Минимальный размер флота — это количество владельцев, которых вы ожидаете быть активными одновременно, считая пользователей и агентов Claude Tag.92Минимальный размер флота — это количество владельцев, которых вы ожидаете быть активными одновременно, считая пользователей и агентов Claude Tag.

93 93 

Details

163 Исключения для отдельных ключей в управляемых источниках163 Исключения для отдельных ключей в управляемых источниках

164</h3>164</h3>

165 165 

166Три вида ключей являются исключениями из правила отсутствия объединения:166Эти ключи являются исключениями из правила отсутствия объединения:

167 167 

168* **Ключи блокировки между источниками**: небольшой набор ключей, таких как блокировки списка разрешений песочницы, [указанные на странице управляемых параметров](/docs/ru/managed-settings#precedence-within-the-managed-tier). Claude Code соблюдает их, когда любой управляемый администратором источник их устанавливает; уровень реестра HKCU, доступный для записи пользователем, исключен.168* **Ключи блокировки между источниками**: небольшой набор ключей, таких как блокировки списка разрешений песочницы, [указанные на странице управляемых параметров](/docs/ru/managed-settings#precedence-within-the-managed-tier). Claude Code соблюдает их, когда любой управляемый администратором источник их устанавливает; уровень реестра HKCU, доступный для записи пользователем, исключен.

169 169 


171* **Блок `env`**: помимо единицы телеметрии и переменных маршрутизации, связанных с ключом учетных данных, оба рассмотрены ниже, он объединяется по ключам в управляемых администратором источниках. Для каждой переменной окружения источник с наивысшим приоритетом, определяющий ее, побеждает, а источники администратора с более низким приоритетом заполняют переменные, которые источники с более высоким приоритетом оставляют неустановленными. Запись `env`, управляемая конечной точкой, поэтому применяется всякий раз, когда конфигурация управляемых сервером параметров оставляет эту переменную неустановленной, или пока кэшированное значение сервера для нее [удерживается в ожидании подтверждения сервером](#fetch-and-caching-behavior). Требуется Claude Code v2.1.223 или более поздняя версия. До v2.1.223 Claude Code применяет только весь блок `env` выбранного источника.171* **Блок `env`**: помимо единицы телеметрии и переменных маршрутизации, связанных с ключом учетных данных, оба рассмотрены ниже, он объединяется по ключам в управляемых администратором источниках. Для каждой переменной окружения источник с наивысшим приоритетом, определяющий ее, побеждает, а источники администратора с более низким приоритетом заполняют переменные, которые источники с более высоким приоритетом оставляют неустановленными. Запись `env`, управляемая конечной точкой, поэтому применяется всякий раз, когда конфигурация управляемых сервером параметров оставляет эту переменную неустановленной, или пока кэшированное значение сервера для нее [удерживается в ожидании подтверждения сервером](#fetch-and-caching-behavior). Требуется Claude Code v2.1.223 или более поздняя версия. До v2.1.223 Claude Code применяет только весь блок `env` выбранного источника.

172 * **Единица телеметрии**: ключи экспортера `OTEL_EXPORTER_OTLP_*`, переключатели захвата содержимого `OTEL_LOG_*`, `OTEL_LOGS_EXPORTER` и бета-переменные трассировки `ENABLE_BETA_TRACING_DETAILED` и `BETA_TRACING_ENDPOINT` следуют источнику с наивысшим приоритетом, который устанавливает любой из них как единицу. Источник, который доставляет ключ учетных данных `otelHeadersHelper`, также претендует на единицу, но размещает эти переменные только когда он является выбранным источником: источник, который не выбран, но доставляет ключ, не вносит ни один из них и все еще блокирует более низкие источники от их заполнения. В любом случае конечная точка экспортера из одного источника никогда не может быть связана с учетными данными из другого.172 * **Единица телеметрии**: ключи экспортера `OTEL_EXPORTER_OTLP_*`, переключатели захвата содержимого `OTEL_LOG_*`, `OTEL_LOGS_EXPORTER` и бета-переменные трассировки `ENABLE_BETA_TRACING_DETAILED` и `BETA_TRACING_ENDPOINT` следуют источнику с наивысшим приоритетом, который устанавливает любой из них как единицу. Источник, который доставляет ключ учетных данных `otelHeadersHelper`, также претендует на единицу, но размещает эти переменные только когда он является выбранным источником: источник, который не выбран, но доставляет ключ, не вносит ни один из них и все еще блокирует более низкие источники от их заполнения. В любом случае конечная точка экспортера из одного источника никогда не может быть связана с учетными данными из другого.

173 * **Маршрутизация с привязкой к учетным данным**: источник, который связывает переменные маршрутизации с ключом учетных данных, доступным только для выбранного источника, такой как `apiKeyHelper` или `otelHeadersHelper`, вносит эти переменные маршрутизации только когда он выигрывает слот.173 * **Маршрутизация с привязкой к учетным данным**: источник, который связывает переменные маршрутизации с ключом учетных данных, доступным только для выбранного источника, такой как `apiKeyHelper` или `otelHeadersHelper`, вносит эти переменные маршрутизации только когда он выигрывает слот.

174* **`allowedProviders`**: список, установленный на машине, и список, управляемый сервером, объединяются как [указано в примечании Scope этой записи](/docs/ru/settings-reference#allowedproviders). Требуется Claude Code v2.1.285 или более поздняя версия

174* **Ключи входа в шлюз**: Claude Code никогда не читает [`forceLoginGatewayUrl`](/docs/ru/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/ru/settings-reference#gatewayinternalnetworks) или значение `"gateway"` [`forceLoginMethod`](/docs/ru/settings-reference#forceloginmethod) из управляемых сервером параметров, поэтому значение там ни не применяется, ни не скрывает значение, установленное в политике MDM или файле управляемых параметров. Запись [`managedSourcesBehavior`](/docs/ru/settings-reference#managedsourcesbehavior) указывает, какой источник администратора на машине их предоставляет.175* **Ключи входа в шлюз**: Claude Code никогда не читает [`forceLoginGatewayUrl`](/docs/ru/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/ru/settings-reference#gatewayinternalnetworks) или значение `"gateway"` [`forceLoginMethod`](/docs/ru/settings-reference#forceloginmethod) из управляемых сервером параметров, поэтому значение там ни не применяется, ни не скрывает значение, установленное в политике MDM или файле управляемых параметров. Запись [`managedSourcesBehavior`](/docs/ru/settings-reference#managedsourcesbehavior) указывает, какой источник администратора на машине их предоставляет.

175 176 

176<h3 id="fetch-and-caching-behavior">177<h3 id="fetch-and-caching-behavior">

sessions.md +20 −2

Details

29 29 

30`claude --continue` открывает [фоновый сеанс](/docs/ru/agent-view), который завершился, но не тот, который всё ещё выполняется; открытие завершённых фоновых сеансов требует Claude Code v2.1.257 или более поздней версии. Если ваш самый последний диалог — это тот, который вы [переместили в фон](/docs/ru/agent-view#send-the-session-to-the-background), и он всё ещё выполняется там, Claude Code завершается с сообщением `Your most recent conversation is running in the background` и ID этого сеанса. Подключитесь к сеансу из [`claude agents`](/docs/ru/agent-view#attach-to-a-session) или запустите `claude --resume`, чтобы выбрать другой.30`claude --continue` открывает [фоновый сеанс](/docs/ru/agent-view), который завершился, но не тот, который всё ещё выполняется; открытие завершённых фоновых сеансов требует Claude Code v2.1.257 или более поздней версии. Если ваш самый последний диалог — это тот, который вы [переместили в фон](/docs/ru/agent-view#send-the-session-to-the-background), и он всё ещё выполняется там, Claude Code завершается с сообщением `Your most recent conversation is running in the background` и ID этого сеанса. Подключитесь к сеансу из [`claude agents`](/docs/ru/agent-view#attach-to-a-session) или запустите `claude --resume`, чтобы выбрать другой.

31 31 

32<span id="resume-a-running-background-session" />

33 

34Когда диалог, который вы возобновляете с помощью `claude --resume` или `/resume`, принадлежит [фоновому сеансу](/docs/ru/agent-view), который всё ещё выполняется, Claude Code открывает сам выполняющийся сеанс. С флагом `--bg` в командной строке возобновление является [фоновой отправкой](/docs/ru/agent-view#from-your-shell) вместо этого. До версии 2.1.285 Claude Code отказывал и говорил вам открыть сеанс с помощью `claude attach <id>` или сначала остановить его с помощью `claude stop <id>`.

35 

36* **Из вашей оболочки**: `claude --resume <session>` запускает [`claude attach`](/docs/ru/agent-view#attach-to-a-session) на этом сеансе в том же терминале вместо загрузки самой стенограммы. Приглашение, которое вы передаёте в командной строке, как в `claude --resume <session> "check the tests too"`, идёт в сеанс как его следующий ход в первую очередь, и Claude Code выводит `Sent your prompt to the background session (<id>); opening it…` перед подключением. `claude -p --resume <session> "prompt"`, введённый в терминал, делает то же самое, поэтому `-p` не сохраняет этот запуск неинтерактивным.

37 

38 Claude Code не открывает сеанс, когда командная строка содержит любое из следующего:

39 

40 * Перенаправленный или перенаправленный ввод или вывод

41 * Флаги, которые конфигурируют сеанс, такие как `--permission-mode`, `--model` или `--settings`

42 * Флаги, которые читают вывод, такие как `--output-format json` или `--json-schema`

43 * Флаги, которые ограничивают или перематывают запуск, такие как `--max-turns` или `--max-budget-usd`

44 

45 С любым из этих, или когда [представление agent отключено](/docs/ru/agent-view#turn-off-agent-view), Claude Code ничего не отправляет и выходит со статусом 1, выводя, что сеанс выполняется в фоне вместе с командой `claude attach <id>`, которая его открывает, или говоря вам найти его в `claude agents`, когда он не может определить ID. Добавьте `--fork-session`, чтобы возобновить копию диалога вместо этого. Чтобы продолжить сам диалог в сеансе вашего собственного, с применением ваших флагов, запустите `claude stop <id>` и затем повторите команду.

46 

47 Приглашение, которое начинается с `/` или `!`, не отправляется, и ни одно приглашение, пока сеанс ждёт вашего ответа на вопрос. В обоих случаях Claude Code не открывает сеанс, и сообщение включает `Your prompt was not sent to it` с причиной.

48* **Из внутри сеанса**: `/resume` перемещает ваш текущий диалог в фон и подключает этот терминал к выполняющемуся сеансу, выводя `Opening "<title>", running in the background (<id>)`. Нажмите `←` на пустом приглашении, чтобы вернуться к представлению agent, которое также перечисляет диалог, который вы оставили. Когда текущий диалог не может переместиться в фон, например потому что вы уже подключены к фоновому сеансу или сохранение сеанса отключено, `/resume` выводит команду `claude attach`, которую нужно запустить вместо этого.

49 

32Вы можете запустить `claude --resume <session-id>` из любого каталога: Claude Code ищет ID в каталоге текущего проекта и его git worktrees в первую очередь, затем в каждом другом проекте на этой машине, поэтому находит сеанс, который начался в другом месте или переместился с помощью [`/cd`](/docs/ru/commands). Поиск по проектам разрешает ID только когда ровно один другой проект содержит стенограмму с сообщениями для него, поэтому ручное копирование дубликата заставляет Claude Code сообщить об отсутствии, а не возобновить произвольную копию. Если ни один сохранённый сеанс не соответствует ID, Claude Code сообщает `No conversation found with session ID: <session-id>`. До версии 2.1.223 поиск останавливался в каталоге текущего проекта и его git worktrees, поэтому вам приходилось возобновлять из каталога, в котором сеанс в последний раз работал.50Вы можете запустить `claude --resume <session-id>` из любого каталога: Claude Code ищет ID в каталоге текущего проекта и его git worktrees в первую очередь, затем в каждом другом проекте на этой машине, поэтому находит сеанс, который начался в другом месте или переместился с помощью [`/cd`](/docs/ru/commands). Поиск по проектам разрешает ID только когда ровно один другой проект содержит стенограмму с сообщениями для него, поэтому ручное копирование дубликата заставляет Claude Code сообщить об отсутствии, а не возобновить произвольную копию. Если ни один сохранённый сеанс не соответствует ID, Claude Code сообщает `No conversation found with session ID: <session-id>`. До версии 2.1.223 поиск останавливался в каталоге текущего проекта и его git worktrees, поэтому вам приходилось возобновлять из каталога, в котором сеанс в последний раз работал.

33 51 

34<h3 id="what-a-resumed-session-restores">52<h3 id="what-a-resumed-session-restores">

35 Что восстанавливает возобновлённый сеанс53 Что восстанавливает возобновлённый сеанс

36</h3>54</h3>

37 55 

38Возобновлённый сеанс восстанавливает диалог вместе с состоянием, сохранённым в нём:56Когда Claude Code загружает диалог из его стенограммы, возобновлённый сеанс восстанавливает диалог вместе с состоянием, сохранённым в нём:

39 57 

40* История диалога: полная история, включая вызовы инструментов и результаты. Инструмент, который всё ещё выполнялся, когда предыдущий процесс завершился, например при сбое, не завершается и не запускается снова при возобновлении. Claude видит вызов, отмеченный как прерванный до того, как был записан его результат, и ему сообщается проверить, был ли он выполнен, перед тем как запустить его снова, если только не установлена переменная [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/ru/env-vars#variables). До версии 2.1.281 Claude Code либо удалял прерванный вызов из диалога, либо показывал его Claude как вызов, который вы прервали.58* История диалога: полная история, включая вызовы инструментов и результаты. Инструмент, который всё ещё выполнялся, когда предыдущий процесс завершился, например при сбое, не завершается и не запускается снова при возобновлении. Claude видит вызов, отмеченный как прерванный до того, как был записан его результат, и ему сообщается проверить, был ли он выполнен, перед тем как запустить его снова, если только не установлена переменная [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/ru/env-vars#variables). До версии 2.1.281 Claude Code либо удалял прерванный вызов из диалога, либо показывал его Claude как вызов, который вы прервали.

41* Модель: сеанс продолжается на модели, которую он использовал. Модель не восстанавливается, когда она была снята с производства или не разрешена `availableModels`, когда флаг `--model` или переменная окружения семейства `ANTHROPIC_MODEL` выбирает одну при запуске, или у поставщиков, которые используют ID развёртывания, специфичные для поставщика, такие как [Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry](/docs/ru/third-party-integrations); см. [конфигурация модели](/docs/ru/model-config#setting-your-model) для порядка разрешения.59* Модель: сеанс продолжается на модели, которую он использовал. Модель не восстанавливается, когда она была снята с производства или не разрешена `availableModels`, когда флаг `--model` или переменная окружения семейства `ANTHROPIC_MODEL` выбирает одну при запуске, или у поставщиков, которые используют ID развёртывания, специфичные для поставщика, такие как [Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry](/docs/ru/third-party-integrations); см. [конфигурация модели](/docs/ru/model-config#setting-your-model) для порядка разрешения.


51 Режим разрешений при возобновлении69 Режим разрешений при возобновлении

52</h4>70</h4>

53 71 

54Режим разрешений, в котором Claude Code запускает возобновлённый сеанс, зависит от того, как вы возобновляете:72Режим разрешений, в котором Claude Code запускает возобновлённый сеанс, зависит от того, как вы возобновляете. Случаи ниже применяются, когда Claude Code загружает диалог из его стенограммы; когда вы [открываете фоновый сеанс, который всё ещё выполняется](#resume-a-running-background-session) вместо этого, этот сеанс сохраняет режим разрешений, в котором он находится.

55 73 

56* Терминал: `claude --continue`, `claude --resume <session-id>` или `claude --resume <name>`, когда имя соответствует одному сеансу, без `-p`. Claude Code восстанавливает режим разрешений, в котором находился сеанс, за исключением случаев в таблице. Передайте `--permission-mode` или `--dangerously-skip-permissions`, чтобы переопределить восстановленный режим.74* Терминал: `claude --continue`, `claude --resume <session-id>` или `claude --resume <name>`, когда имя соответствует одному сеансу, без `-p`. Claude Code восстанавливает режим разрешений, в котором находился сеанс, за исключением случаев в таблице. Передайте `--permission-mode` или `--dangerously-skip-permissions`, чтобы переопределить восстановленный режим.

57* Неинтерактивный: `claude -p --resume` или `claude -p --continue`. Claude Code запускает выполнение в режиме разрешений, в котором запустился бы новый запуск `claude -p`, за исключением того, что сеанс, который завершился в режиме Plan Mode, возобновляется в режиме Plan Mode при [условиях ниже](#resume-in-plan-mode-with-p).75* Неинтерактивный: `claude -p --resume` или `claude -p --continue`. Claude Code запускает выполнение в режиме разрешений, в котором запустился бы новый запуск `claude -p`, за исключением того, что сеанс, который завершился в режиме Plan Mode, возобновляется в режиме Plan Mode при [условиях ниже](#resume-in-plan-mode-with-p).

settings-reference.md +223 −130

Details

599| [`allowedChannelPlugins`](#allowedchannelplugins) | Замените список разрешений по умолчанию для [плагинов канала](/docs/ru/channels#restrict-which-channel-plugins-can-run), которые могут отправлять сообщения | Plugins and skills | Managed |599| [`allowedChannelPlugins`](#allowedchannelplugins) | Замените список разрешений по умолчанию для [плагинов канала](/docs/ru/channels#restrict-which-channel-plugins-can-run), которые могут отправлять сообщения | Plugins and skills | Managed |

600| [`allowedHttpHookUrls`](#allowedhttphookurls) | Ограничьте, какие URL-адреса могут использовать [HTTP hooks](/docs/ru/hooks) | Hooks and automation | Any file |600| [`allowedHttpHookUrls`](#allowedhttphookurls) | Ограничьте, какие URL-адреса могут использовать [HTTP hooks](/docs/ru/hooks) | Hooks and automation | Any file |

601| [`allowedMcpServers`](#allowedmcpservers) | Создайте список разрешений для [MCP серверов](/docs/ru/mcp), которые могут добавлять пользователи | MCP | Any file |601| [`allowedMcpServers`](#allowedmcpservers) | Создайте список разрешений для [MCP серверов](/docs/ru/mcp), которые могут добавлять пользователи | MCP | Any file |

602| [`allowedProviders`](#allowedproviders) | Ограничьте, какие [поставщики API](/docs/ru/third-party-integrations) может использовать машина | Authentication and providers | Managed |

602| [`allowManagedHooksOnly`](#allowmanagedhooksonly) | Запускайте только [hooks](/docs/ru/hooks), которые развёртывает ваша организация | Hooks and automation | Managed |603| [`allowManagedHooksOnly`](#allowmanagedhooksonly) | Запускайте только [hooks](/docs/ru/hooks), которые развёртывает ваша организация | Hooks and automation | Managed |

603| [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly) | Сделайте список разрешений управляемых [MCP](/docs/ru/mcp) единственным применяемым | MCP | Managed |604| [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly) | Сделайте список разрешений управляемых [MCP](/docs/ru/mcp) единственным применяемым | MCP | Managed |

604| [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly) | Сделайте [управляемые параметры](/docs/ru/managed-settings) единственным источником параметров для [правил разрешений](/docs/ru/permissions#managed-settings) | Permission settings | Managed |605| [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly) | Сделайте [управляемые параметры](/docs/ru/managed-settings) единственным источником параметров для [правил разрешений](/docs/ru/permissions#managed-settings) | Permission settings | Managed |

605| [`alwaysThinkingEnabled`](#alwaysthinkingenabled) | Отключите [расширенное мышление](/docs/ru/model-config#extended-thinking) для каждого сеанса | Model and responses | Any file |606| [`alwaysThinkingEnabled`](#alwaysthinkingenabled) | Отключите [расширенное мышление](/docs/ru/model-config#extended-thinking) для каждого сеанса | Model and responses | Any file |

606| [`apiKeyHelper`](#apikeyhelper) | Создайте [учётные данные API](/docs/ru/authentication#credential-management) с помощью вашей собственной команды | Authentication and providers | Any file |607| [`apiKeyHelper`](#apikeyhelper) | Создайте [учётные данные API](/docs/ru/authentication#credential-management) с помощью вашей собственной команды | Authentication and providers | Any file |

607| [`askUserQuestionTimeout`](#askuserquestiontimeout) | Позвольте неотвеченному вопросу [автоматически продолжиться](/docs/ru/tools-reference#question-auto-continue-timeout) после времени простоя | Interface and terminal | User or managed |608| [`askUserQuestionTimeout`](#askuserquestiontimeout) | Позвольте неотвеченному вопросу [автоматически продолжиться](/docs/ru/tools-reference#question-auto-continue-timeout) после времени простоя | Interface and terminal | User or managed |

609| [`appendPlugins`](#appendplugins) | Запускайте [моды](/docs/ru/plugins/mods/admin) вашей организации после каждого мода, который устанавливает пользователь | Plugins and skills | User or managed |

608| [`attribution`](#attribution) | Настройте атрибуцию, которую Claude Code добавляет к коммитам и pull request'ам | Git and attribution | Any file |610| [`attribution`](#attribution) | Настройте атрибуцию, которую Claude Code добавляет к коммитам и pull request'ам | Git and attribution | Any file |

609| [`attribution.commit`](#attribution-commit) | Измените или скройте трейлер, который Claude Code добавляет к коммитам | Git and attribution | Any file |611| [`attribution.commit`](#attribution-commit) | Измените или скройте трейлер, который Claude Code добавляет к коммитам | Git and attribution | Any file |

610| [`attribution.pr`](#attribution-pr) | Измените или скройте строку атрибуции в описаниях pull request'ов | Git and attribution | Any file |612| [`attribution.pr`](#attribution-pr) | Измените или скройте строку атрибуции в описаниях pull request'ов | Git and attribution | Any file |


729| [`policyHelper.timeoutMs`](#policyhelper-timeoutms) | Установите, как долго Claude Code ждёт [помощника](/docs/ru/managed-settings#compute-the-policy-with-a-helper-program) | Enterprise and managed settings | Managed |731| [`policyHelper.timeoutMs`](#policyhelper-timeoutms) | Установите, как долго Claude Code ждёт [помощника](/docs/ru/managed-settings#compute-the-policy-with-a-helper-program) | Enterprise and managed settings | Managed |

730| [`preferredNotifChannel`](#preferrednotifchannel) | Выберите [звонок терминала или уведомление рабочего стола](/docs/ru/terminal-config#get-a-terminal-bell-or-notification) для завершения задачи | Remote, desktop, and notifications | Any file |732| [`preferredNotifChannel`](#preferrednotifchannel) | Выберите [звонок терминала или уведомление рабочего стола](/docs/ru/terminal-config#get-a-terminal-bell-or-notification) для завершения задачи | Remote, desktop, and notifications | Any file |

731| [`prefersReducedMotion`](#prefersreducedmotion) | [Уменьшите или отключите](/docs/ru/accessibility#accessibility-settings) анимацию спиннера, мерцания и вспышки | Interface and terminal | Any file |733| [`prefersReducedMotion`](#prefersreducedmotion) | [Уменьшите или отключите](/docs/ru/accessibility#accessibility-settings) анимацию спиннера, мерцания и вспышки | Interface and terminal | Any file |

734| [`prependPlugins`](#prependplugins) | Запускайте [моды](/docs/ru/plugins/mods/admin) вашей организации перед каждым модом, который устанавливает пользователь | Plugins and skills | User or managed |

732| [`processWrapper`](#processwrapper) | Запускайте фоновые процессы Claude Code через [корпоративный запускатель](/docs/ru/corporate-launcher) на macOS и Linux | Agents, sessions, and worktrees | User or managed |735| [`processWrapper`](#processwrapper) | Запускайте фоновые процессы Claude Code через [корпоративный запускатель](/docs/ru/corporate-launcher) на macOS и Linux | Agents, sessions, and worktrees | User or managed |

733| [`promptCacheTtl`](#promptcachettl) | Выберите [время жизни кэша подсказок](/docs/ru/prompt-caching#cache-lifetime) для основного разговора | Model and responses | Any file |736| [`promptCacheTtl`](#promptcachettl) | Выберите [время жизни кэша подсказок](/docs/ru/prompt-caching#cache-lifetime) для основного разговора | Model and responses | Any file |

734| [`promptSuggestionEnabled`](#promptsuggestionenabled) | Скройте серые [предложения подсказок](/docs/ru/interactive-mode#prompt-suggestions) в поле ввода | Interface and terminal | Any file |737| [`promptSuggestionEnabled`](#promptsuggestionenabled) | Скройте серые [предложения подсказок](/docs/ru/interactive-mode#prompt-suggestions) в поле ввода | Interface and terminal | Any file |


3203 `askUserQuestionTimeout`3206 `askUserQuestionTimeout`

3204</h3>3207</h3>

3205 3208 

3206Позвольте диалогу [`AskUserQuestion`](/docs/ru/tools-reference) без ответа автоматически продолжить работу после периода простоя, отправив любые уже выбранные вами параметры. Установите это, когда вы отходите и хотите, чтобы Claude продолжал работу без вас. По умолчанию вопросы ждут, пока вы на них ответите. Требуется Claude Code v2.1.200 или позже.3209Позвольте диалогу [`AskUserQuestion`](/docs/ru/tools-reference) без ответа автоматически продолжить работу после периода неактивности, отправив любые уже выбранные вами параметры. Установите это значение, когда вы отходите и хотите, чтобы Claude продолжил работу без вас. По умолчанию вопросы ждут, пока вы на них ответите. Требуется Claude Code v2.1.200 или более поздняя версия.

3207 3210 

3208* **Область действия**: [`Пользователь или управляемый`](#scopes)3211* **Область действия**: [`User or managed`](#scopes)

3209* **Тип**: строка, одна из `"60s"`, `"5m"`, `"10m"` или `"never"`3212* **Тип**: строка, одно из значений `"60s"`, `"5m"`, `"10m"` или `"never"`

3210* **По умолчанию**: `"never"`3213* **По умолчанию**: `"never"`

3211* **Переопределения для каждого сеанса**: [`CLAUDE_AFK_TIMEOUT_MS`](/docs/ru/env-vars) имеет приоритет над этим ключом для одного сеанса3214* **Переопределения для отдельного сеанса**: [`CLAUDE_AFK_TIMEOUT_MS`](/docs/ru/env-vars) имеет приоритет над этим ключом для одного сеанса

3212 3215 

3213```json settings.json theme={null}3216```json settings.json theme={null}

3214{3217{


3216}3219}

3217```3220```

3218 3221 

3219Появляется в `/config` как **Question auto-continue timeout**, который записывает этот ключ в пользовательские параметры; Claude Code скрывает строку, пока управляемые параметры или флаг `--settings` устанавливают ключ. Требуется Claude Code v2.1.200 или позже.3222Появляется в `/config` как **Question auto-continue timeout**, который записывает этот ключ в пользовательские параметры; Claude Code скрывает строку, пока управляемые параметры или флаг `--settings` устанавливают ключ. Требуется Claude Code v2.1.200 или более поздняя версия.

3220 3223 

3221<h3 id="autocontinueatusagelimit">3224<h3 id="autocontinueatusagelimit">

3222 `autoContinueAtUsageLimit`3225 `autoContinueAtUsageLimit`

3223</h3>3226</h3>

3224 3227 

3225После того как лимит использования claude.ai остановит ваш сеанс, ждите в открытом сеансе и продолжайте задачу автоматически после сброса. См. [Отключение автоматического продолжения](/docs/ru/interactive-mode#turn-automatic-continue-off). Требуется Claude Code v2.1.234 или позже.3228После того как лимит использования claude.ai остановит ваш сеанс, ждите в открытом сеансе и автоматически продолжите задачу после сброса. См. [Отключение автоматического продолжения](/docs/ru/interactive-mode#turn-automatic-continue-off). Требуется Claude Code v2.1.234 или более поздняя версия.

3226 3229 

3227* **Область действия**: [`Пользователь или управляемый`](#scopes). Читается из пользовательских параметров, `--settings` и управляемых параметров только. Когда ни один из них не устанавливает ключ, файл параметров проекта или локальный файл, который его устанавливает, отключает функцию, а не игнорируется.3230* **Область действия**: [`User or managed`](#scopes). Читается из пользовательских параметров, `--settings` и управляемых параметров только. Когда ни один из них не устанавливает ключ, файл параметров проекта или локальных параметров, который его устанавливает, отключает функцию, а не игнорируется.

3228* **Тип**: Boolean3231* **Тип**: Boolean

3229 * `true`: после того как лимит использования claude.ai остановит ваш сеанс, Claude Code ждет в открытом сеансе и продолжает задачу автоматически после сброса3232 * `true`: после того как лимит использования claude.ai остановит ваш сеанс, Claude Code ждет в открытом сеансе и автоматически продолжает задачу после сброса

3230 * `false`: Claude Code не запускает ожидание самостоятельно. Вы все еще можете [начать ожидание самостоятельно](/docs/ru/interactive-mode#start-a-wait-yourself) из меню параметров лимита использования3233 * `false`: Claude Code не запускает ожидание самостоятельно. Вы все еще можете [начать ожидание самостоятельно](/docs/ru/interactive-mode#start-a-wait-yourself) из меню параметров лимита использования

3231* **По умолчанию**: `true`3234* **По умолчанию**: `true`

3232 3235 


3242 `autoScrollEnabled`3245 `autoScrollEnabled`

3243</h3>3246</h3>

3244 3247 

3245Следите за новым выводом в конце разговора в [полноэкранном режиме](/docs/ru/fullscreen). Отключите это, чтобы остаться там, где вы прокручивали, пока Claude продолжает работать; подсказки разрешений все еще прокручиваются в поле зрения.3248Следите за новым выводом в конце разговора при [полноэкранном отображении](/docs/ru/fullscreen). Отключите это, чтобы остаться там, где вы прокручивали, пока Claude продолжает работу; подсказки разрешений все еще прокручиваются в поле зрения.

3246 3249 

3247* **Область действия**: [`Любой файл`](#scopes)3250* **Область действия**: [`Any file`](#scopes)

3248* **Тип**: Boolean3251* **Тип**: Boolean

3249 * `true`: разговор следует за новым выводом в конец3252 * `true`: разговор следует за новым выводом в конец

3250 * `false`: вы остаетесь там, где вы прокручивали, пока Claude продолжает работать; подсказки разрешений все еще появляются ниже стенограммы3253 * `false`: вы остаетесь там, где вы прокручивали, пока Claude продолжает работу; подсказки разрешений все еще появляются ниже стенограммы

3251* **По умолчанию**: `true`3254* **По умолчанию**: `true`

3252 3255 

3253```json settings.json theme={null}3256```json settings.json theme={null}


3256}3259}

3257```3260```

3258 3261 

3259Появляется в `/config` как **Auto-scroll**, когда полноэкранный режим включен, который записывает этот ключ в пользовательские параметры.3262Появляется в `/config` как **Auto-scroll**, когда включено полноэкранное отображение, которое записывает этот ключ в пользовательские параметры.

3260 3263 

3261<h3 id="axscreenreader">3264<h3 id="axscreenreader">

3262 `axScreenReader`3265 `axScreenReader`

3263</h3>3266</h3>

3264 3267 

3265Отрисовка вывода, удобного для программ чтения с экрана: плоский текст без декоративных границ или анимаций. Режим программы чтения с экрана использует классический рендерер, поэтому параметр `tui` не имеет эффекта, пока он активен; прикрепленные [фоновые сеансы](/docs/ru/agent-view) все еще отрисовываются в полноэкранном режиме.3268Отображайте вывод, удобный для программ чтения с экрана: плоский текст без декоративных границ или анимации. Режим программы чтения с экрана использует классический рендерер, поэтому параметр `tui` не имеет эффекта, пока он активен; прикрепленные [фоновые сеансы](/docs/ru/agent-view) все еще отображаются в полноэкранном режиме.

3266 3269 

3267* **Область действия**: [`Любой файл`](#scopes)3270* **Область действия**: [`Any file`](#scopes)

3268* **Тип**: Boolean3271* **Тип**: Boolean

3269 * `true`: Claude Code отрисовывает плоский текст без декоративных границ или анимаций, используя классический рендерер3272 * `true`: Claude Code отображает плоский текст без декоративных границ или анимации, используя классический рендерер

3270 * `false`: Claude Code отрисовывает нормально3273 * `false`: Claude Code отображается нормально

3271* **По умолчанию**: не установлено, поэтому режим программы чтения с экрана отключен3274* **По умолчанию**: не установлено, поэтому режим программы чтения с экрана отключен

3272* **Переопределения для каждого сеанса**: [`--ax-screen-reader`](/docs/ru/cli-reference#cli-flags) имеет приоритет над [`CLAUDE_AX_SCREEN_READER`](/docs/ru/env-vars), и оба имеют приоритет над этим ключом для одного сеанса3275* **Переопределения для отдельного сеанса**: [`--ax-screen-reader`](/docs/ru/cli-reference#cli-flags) имеет приоритет над [`CLAUDE_AX_SCREEN_READER`](/docs/ru/env-vars), и оба имеют приоритет над этим ключом для одного сеанса

3273 3276 

3274```json settings.json theme={null}3277```json settings.json theme={null}

3275{3278{


3283 3286 

3284Выберите, записывает ли Claude Code, какие файлы изменились в репозитории Git, пока выполняется команда Bash. Когда он их записывает, вы видите их diff в терминале после команды, и ваши [PostToolUse Bash hooks](/docs/ru/hooks#bash) получают список измененных файлов.3287Выберите, записывает ли Claude Code, какие файлы изменились в репозитории Git, пока выполняется команда Bash. Когда он их записывает, вы видите их diff в терминале после команды, и ваши [PostToolUse Bash hooks](/docs/ru/hooks#bash) получают список измененных файлов.

3285 3288 

3286Указанный файл не всегда является тем, который команда изменила. Изменение, которое другая программа или другой вызов Bash сделали, пока команда выполнялась, может появиться там тоже.3289Указанный файл не всегда является файлом, который команда изменила. Изменение, которое другая программа или другой вызов Bash сделали во время выполнения команды, может также появиться там.

3287 3290 

3288Установите ключ на `true`, чтобы записывать их в каждом режиме разрешений. Требуется Claude Code v2.1.269 или позже.3291Установите ключ на `true`, чтобы записывать их в каждом режиме разрешений. Требуется Claude Code v2.1.269 или более поздняя версия.

3289 3292 

3290* **Область действия**: [`Пользователь или управляемый`](#scopes). `true` считается только из ваших пользовательских параметров, JSON, переданного с `--settings`, или [управляемых параметров](/docs/ru/managed-settings), поэтому `true` в `.claude/settings.json` или `.claude/settings.local.json` репозитория не может включить запись. `false` в любом файле репозитория все еще отключает его, если файл с [более высоким приоритетом](/docs/ru/settings#settings-precedence) не устанавливает `true`.3293* **Область действия**: [`User or managed`](#scopes). `true` считается только из ваших пользовательских параметров, JSON, переданного с `--settings`, или [управляемых параметров](/docs/ru/managed-settings), поэтому `true` в файле `.claude/settings.json` или `.claude/settings.local.json` репозитория не может включить запись. `false` в любом файле репозитория все еще отключает его, если только файл с [более высоким приоритетом](/docs/ru/settings#settings-precedence) не устанавливает `true`.

3291* **Тип**: Boolean3294* **Тип**: Boolean

3292* **По умолчанию**: не установлено, поэтому Claude Code записывает изменения в режиме auto и режиме `bypassPermissions`, когда он направляет Claude на редактирование файлов через Bash3295* **По умолчанию**: не установлено, поэтому Claude Code записывает изменения в режиме auto и режиме `bypassPermissions`, когда он направляет Claude на редактирование файлов через Bash

3293* **Переопределения для каждого сеанса**: [`CLAUDE_CODE_BASH_EDIT_DIFF`](/docs/ru/env-vars) имеет приоритет над этим ключом для одного сеанса3296* **Переопределения для отдельного сеанса**: [`CLAUDE_CODE_BASH_EDIT_DIFF`](/docs/ru/env-vars) имеет приоритет над этим ключом для одного сеанса

3294 3297 

3295```json settings.json theme={null}3298```json settings.json theme={null}

3296{3299{


3304 3307 

3305Показывайте объявления вашей организации пользователям при запуске. Когда вы указываете более одного, Claude Code выбирает один случайно для каждого сеанса; при первом запуске человека он показывает первую запись.3308Показывайте объявления вашей организации пользователям при запуске. Когда вы указываете более одного, Claude Code выбирает один случайно для каждого сеанса; при первом запуске человека он показывает первую запись.

3306 3309 

3307* **Область действия**: [`Любой файл`](#scopes)3310* **Область действия**: [`Any file`](#scopes)

3308* **Тип**: массив строк3311* **Тип**: массив строк

3309* **По умолчанию**: не установлено, поэтому объявление не показывается3312* **По умолчанию**: не установлено, поэтому объявление не отображается

3310 3313 

3311```json settings.json theme={null}3314```json settings.json theme={null}

3312{3315{


3322 3325 

3323Выберите, запускается ли Bash или PowerShell команды оболочки, которые вы вводите с префиксом [`!`](/docs/ru/interactive-mode#shell-mode-with-prefix) в поле ввода, те, которые Claude Code запускает напрямую и добавляет в сеанс.3326Выберите, запускается ли Bash или PowerShell команды оболочки, которые вы вводите с префиксом [`!`](/docs/ru/interactive-mode#shell-mode-with-prefix) в поле ввода, те, которые Claude Code запускает напрямую и добавляет в сеанс.

3324 3327 

3325`"powershell"` работает только при включенном [инструменте PowerShell](/docs/ru/tools-reference#powershell-tool). Инструмент включен по умолчанию на Windows без Git Bash и на Windows с Git Bash для учетных записей claude.ai и Console. В сеансах Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry, а также на macOS, Linux и WSL установите `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`, чтобы включить инструмент. Установите эту переменную на `0`, чтобы отключить инструмент.3328`"powershell"` работает только при включенном [инструменте PowerShell](/docs/ru/tools-reference#powershell-tool). Инструмент включен по умолчанию в Windows без Git Bash и в Windows с Git Bash для учетных записей claude.ai и Console. В сеансах Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry, а также на macOS, Linux и WSL установите `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`, чтобы включить инструмент. Установите эту переменную на `0`, чтобы отключить инструмент.

3326 3329 

3327* **Область действия**: [`Любой файл`](#scopes)3330* **Область действия**: [`Any file`](#scopes)

3328* **Тип**: строка, одна из:3331* **Тип**: строка, одно из:

3329 * `"bash"`: Claude Code запускает ваши команды `!` в Bash3332 * `"bash"`: Claude Code запускает ваши команды `!` в Bash

3330 * `"powershell"`: Claude Code запускает ваши команды `!` в PowerShell3333 * `"powershell"`: Claude Code запускает ваши команды `!` в PowerShell

3331* **По умолчанию**: `"bash"` или `"powershell"` на Windows, когда Bash недоступен3334* **По умолчанию**: `"bash"`, или `"powershell"` в Windows, когда Bash недоступен

3332 3335 

3333```json settings.json theme={null}3336```json settings.json theme={null}

3334{3337{


3336}3339}

3337```3340```

3338 3341 

3339Если оболочка, которую вы назвали, недоступна, Claude Code использует другую: `"powershell"` возвращается к Bash, когда инструмент PowerShell отключен, и `"bash"` возвращается к PowerShell, когда Bash не установлен.3342Если названная вами оболочка недоступна, Claude Code использует другую: `"powershell"` возвращается к Bash, когда инструмент PowerShell отключен, и `"bash"` возвращается к PowerShell, когда Bash не установлен.

3340 3343 

3341<h3 id="dialogexpiry">3344<h3 id="dialogexpiry">

3342 `dialogExpiry`3345 `dialogExpiry`

3343</h3>3346</h3>

3344 3347 

3345Установите крайний срок для диалогов, которые Claude Code [пересылает удаленному клиенту](/docs/ru/remote-control#limitations), такому как хост Remote Control или SDK, и для диалога одобрения [удерживаемого кросссеансового сообщения](/docs/ru/cross-session-messaging#control-inbound-messages). На Claude Code v2.1.236 или позже тот же крайний срок ограничивает подсказку согласия на использование кредитов Fable в середине сеанса]\(/ru/model-config#fable-and-usage-credits) в сеансе, в котором может никого не быть у терминала. Когда ответ не поступает до крайнего срока, Claude Code отменяет диалог и продолжает с его действием по умолчанию без действия. Требуется Claude Code v2.1.224 или позже.3348Установите крайний срок для диалогов, которые Claude Code [пересылает удаленному клиенту](/docs/ru/remote-control#limitations), такому как хост Remote Control или SDK, и для диалога одобрения [удерживаемого кросс-сеансового сообщения](/docs/ru/cross-session-messaging#control-inbound-messages). На Claude Code v2.1.236 или более поздней версии тот же крайний срок ограничивает подсказку согласия на использование кредитов Fable в середине сеанса]\(/ru/model-config#fable-and-usage-credits) в сеансе, в котором может никого не быть у терминала. Когда ответ не поступает до крайнего срока, Claude Code отменяет диалог и продолжает с его действием по умолчанию без действия. Требуется Claude Code v2.1.224 или более поздняя версия.

3346 3349 

3347* **Область действия**: [`Пользователь или управляемый`](#scopes)3350* **Область действия**: [`User or managed`](#scopes)

3348* **Тип**: строка, одна из `"60s"`, `"5m"`, `"10m"` или `"never"`, что отключает крайний срок3351* **Тип**: строка, одно из `"60s"`, `"5m"`, `"10m"` или `"never"`, что отключает крайний срок

3349* **По умолчанию**: `"5m"`3352* **По умолчанию**: `"5m"`

3350* **Переопределения для каждого сеанса**: [`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`](/docs/ru/env-vars) имеет приоритет над этим ключом для одного сеанса3353* **Переопределения для отдельного сеанса**: [`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`](/docs/ru/env-vars) имеет приоритет над этим ключом для одного сеанса

3351 3354 

3352```json settings.json theme={null}3355```json settings.json theme={null}

3353{3356{


3355}3358}

3356```3359```

3357 3360 

3358Подсказки разрешений и вопросы [`AskUserQuestion`](/docs/ru/tools-reference#askuserquestion-tool-behavior) используют свои собственные потоки и не регулируются этим крайним сроком. Появляется в `/config` как **Dialog expiry**, который записывает этот ключ в пользовательские параметры; строка требует Claude Code v2.1.232 или позже, и Claude Code скрывает ее, пока управляемые параметры или флаг `--settings` устанавливают ключ.3361Подсказки разрешений и вопросы [`AskUserQuestion`](/docs/ru/tools-reference#askuserquestion-tool-behavior) используют свои собственные потоки и не регулируются этим крайним сроком. Появляется в `/config` как **Dialog expiry**, который записывает этот ключ в пользовательские параметры; строка требует Claude Code v2.1.232 или более поздней версии, и Claude Code скрывает ее, пока управляемые параметры или флаг `--settings` устанавливают ключ.

3359 3362 

3360<h3 id="editormode">3363<h3 id="editormode">

3361 `editorMode`3364 `editorMode`

3362</h3>3365</h3>

3363 3366 

3364Выберите режим сочетаний клавиш для приглашения ввода.3367Выберите режим сочетания клавиш для приглашения ввода.

3365 3368 

3366* **Область действия**: [`Любой файл`](#scopes)3369* **Область действия**: [`Any file`](#scopes)

3367* **Тип**: строка, одна из:3370* **Тип**: строка, одно из:

3368 * `"normal"`: стандартные сочетания клавиш в приглашении ввода3371 * `"normal"`: стандартные сочетания клавиш в приглашении ввода

3369 * `"vim"`: редактирование в стиле vim с режимами NORMAL, INSERT и VISUAL3372 * `"vim"`: редактирование в стиле vim с режимами NORMAL, INSERT и VISUAL

3370* **По умолчанию**: `"normal"`3373* **По умолчанию**: `"normal"`


3381 `emojiCompletionEnabled`3384 `emojiCompletionEnabled`

3382</h3>3385</h3>

3383 3386 

3384Показывайте предложения эмодзи, когда вы вводите `:` плюс сокращение в приглашение ввода, и замените завершенное сокращение, такое как `:heart:`, его эмодзи. Установите это на `false`, чтобы отключить оба.3387Показывайте предложения эмодзи, когда вы вводите `:` плюс сокращение в приглашение ввода, и замените завершенное сокращение, такое как `:heart:`, его эмодзи. Установите это значение на `false`, чтобы отключить оба.

3385 3388 

3386* **Область действия**: [`Любой файл`](#scopes)3389* **Область действия**: [`Any file`](#scopes)

3387* **Тип**: Boolean3390* **Тип**: Boolean

3388 * `true`: Claude Code показывает предложения эмодзи после `:` и заменяет завершенное сокращение его эмодзи3391 * `true`: Claude Code показывает предложения эмодзи после `:` и заменяет завершенное сокращение его эмодзи

3389 * `false`: Claude Code ни предлагает эмодзи, ни заменяет сокращения3392 * `false`: Claude Code ни предлагает эмодзи, ни заменяет сокращения


3395}3398}

3396```3399```

3397 3400 

3398См. [Сокращения эмодзи](/docs/ru/interactive-mode#emoji-shortcodes). Требуется Claude Code v2.1.217 или позже.3401См. [Сокращения эмодзи](/docs/ru/interactive-mode#emoji-shortcodes). Требуется Claude Code v2.1.217 или более поздняя версия.

3399 3402 

3400<span id="file-suggestion-settings" />3403<span id="file-suggestion-settings" />

3401 3404 


3403 `fileSuggestion`3406 `fileSuggestion`

3404</h3>3407</h3>

3405 3408 

3406Запустите вашу собственную команду для предоставления автодополнения пути файла `@` вместо встроенного предложения файла. Встроенное предложение использует быстрый обход файловой системы; большой монорепозиторий может работать лучше с индексированием, специфичным для проекта, таким как предварительно построенный индекс файлов.3409Запустите вашу собственную команду для предоставления автодополнения пути файла `@` вместо встроенного предложения файла. Встроенное предложение использует быстрый обход файловой системы; большой монорепо может работать лучше с индексированием, специфичным для проекта, таким как предварительно построенный индекс файлов.

3407 3410 

3408* **Область действия**: [`Любой файл`](#scopes). В соответствии с [шлюзами строки состояния и предложения файла](#status-line-and-file-suggestion-gates), Claude Code отключает команду или запускает только управляемое значение и пропускает ваше без предупреждения.3411* **Область действия**: [`Any file`](#scopes). В соответствии с [воротами строки состояния и предложения файла](#status-line-and-file-suggestion-gates), Claude Code отключает команду или запускает только управляемое значение и пропускает ваше без предупреждения.

3409* **Тип**: объект с `type`, всегда `"command"`, и `command`, команда оболочки для запуска3412* **Тип**: объект с `type`, всегда `"command"`, и `command`, команда оболочки для запуска

3410* **По умолчанию**: не установлено, поэтому Claude Code использует встроенное предложение файла3413* **По умолчанию**: не установлено, поэтому Claude Code использует встроенное предложение файла

3411 3414 


3453 `footerLinksRegexes`3456 `footerLinksRegexes`

3454</h3>3457</h3>

3455 3458 

3456Отрисовка дополнительных кликабельных значков в нижнем колонтитуле под полем ввода, когда регулярное выражение совпадает с выводом хода: результаты инструментов, включая содержимое файлов и полученные страницы, и собственные ответы Claude. Используйте это, чтобы превратить идентификаторы, напечатанные проектными CLI, такие как инструменты проверки и трекеры проблем, в ссылки сеанса.3459Отображайте дополнительные кликабельные значки в нижнем колонтитуле под полем ввода, когда регулярное выражение соответствует выводу хода: результатам инструментов, включая содержимое файлов и полученные страницы, и собственным ответам Claude. Используйте это, чтобы превратить идентификаторы, напечатанные проектными CLI, такие как инструменты проверки и трекеры проблем, в ссылки сеанса.

3457 3460 

3458* **Область действия**: [`Пользователь или управляемый`](#scopes)3461* **Область действия**: [`User or managed`](#scopes)

3459* **Тип**: массив объектов, каждый с `type`, установленным на `"regex"`, регулярное выражение `pattern`, шаблон `url` и необязательный `label`; заполнители `{name}` в `url` и `label` заполняются из именованных групп захвата в `pattern`3462* **Тип**: массив объектов, каждый с `type`, установленным на `"regex"`, регулярное выражение `pattern`, шаблон `url` и необязательный `label`; заполнители `{name}` в `url` и `label` заполняются из именованных групп захвата в `pattern`

3460* **По умолчанию**: не установлено, поэтому значки не отрисовываются3463* **По умолчанию**: не установлено, поэтому значки не отображаются

3461 3464 

3462Этот пример совпадает с ключами проблем, такими как `PROJ-1234`, и строит каждую ссылку из захваченного ключа:3465Этот пример соответствует ключам проблем, таким как `PROJ-1234`, и создает каждую ссылку из захваченного ключа:

3463 3466 

3464```json settings.json theme={null}3467```json settings.json theme={null}

3465{3468{


3480 Ограничения значков3483 Ограничения значков

3481</h4>3484</h4>

3482 3485 

3483Каждая запись URL, метка и количество значков ограничены следующим образом:3486URL, метка и количество значков каждой записи ограничены следующим образом:

3484 3487 

3485| Ограничение | Поведение |3488| Ограничение | Поведение |

3486| :- | :- |3489| :- | :- |

3487| Источник URL | Захваченные значения кодируются в URL, и построенный URL должен совместно использовать буквальный источник шаблона. Захват может заполнить сегмент пути или значение запроса, но не может изменить, куда указывает ссылка |3490| Источник URL | Захваченные значения кодируются в URL, и построенный URL должен совместно использовать источник шаблона. Захват может заполнить сегмент пути или значение запроса, но не может изменить, куда указывает ссылка |

3488| Длина URL | Построенные URL длиннее 2048 символов отбрасываются |3491| Длина URL | Построенные URL длиннее 2048 символов удаляются |

3489| Схема URL | Должна быть `https`, `http` или признанная схема глубокой ссылки редактора или рабочего пространства: `vscode`, `vscode-insiders`, `cursor`, `windsurf`, `zed`, `jetbrains`, `idea`, `slack`, `linear`, `notion`, `figma` |3492| Схема URL | Должна быть `https`, `http` или признанная схема глубокой ссылки редактора или рабочего пространства: `vscode`, `vscode-insiders`, `cursor`, `windsurf`, `zed`, `jetbrains`, `idea`, `slack`, `linear`, `notion`, `figma` |

3490| Метка | По умолчанию совпадает с текстом и усекается до 28 столбцов отображения |3493| Метка | По умолчанию соответствует совпадающему тексту и усекается до 28 столбцов отображения |

3491| Количество значков | Максимум 5 значков отрисовываются. Самый старый вытесняется новыми совпадениями и `/clear` удаляет их |3494| Количество значков | Максимум 5 значков отображаются. Самый старый вытесняется новыми совпадениями, и `/clear` удаляет их |

3492 3495 

3493Когда ход завершается, Claude Code совпадает с регулярным выражением `pattern` каждой записи с выводом хода в главном потоке, поэтому медленное регулярное выражение блокирует пользовательский интерфейс до его завершения. Вложенные квантификаторы, такие как `(a+)+$`, могут занимать экспоненциально долго против определенных входов и заморозить сеанс, поэтому держите каждый `pattern` линейным и избегайте вложения `+` или `*`.3496Когда ход завершается, Claude Code сопоставляет регулярное выражение `pattern` каждой записи с выводом хода в главном потоке, поэтому медленное регулярное выражение блокирует пользовательский интерфейс до его завершения. Вложенные квантификаторы, такие как `(a+)+$`, могут занимать экспоненциально долго для определенных входов и заморозить сеанс, поэтому держите каждый `pattern` линейным и избегайте вложения `+` или `*`.

3494 3497 

3495Значки нижнего колонтитула отрисовываются рядом с [пользовательской строкой состояния](/docs/ru/statusline), когда она настроена; ни один не заменяет другой. Используйте строку состояния для строки, управляемой скриптом, которая вычисляет свое собственное содержимое из данных сеанса, и значки нижнего колонтитула, чтобы превратить идентификаторы из разговора в ссылки без скрипта.3498Значки нижнего колонтитула отображаются рядом с [пользовательской строкой состояния](/docs/ru/statusline), когда она настроена; ни один не заменяет другой. Используйте строку состояния для строки, управляемой скриптом, которая вычисляет свое собственное содержимое из данных сеанса, и значки нижнего колонтитула, чтобы превратить идентификаторы из разговора в ссылки без скрипта.

3496 3499 

3497<h3 id="keybindingflavor">3500<h3 id="keybindingflavor">

3498 `keybindingFlavor`3501 `keybindingFlavor`


3504 3507 

3505В v2.1.238 через v2.1.260 установка его на `"readline"` заставляла `Ctrl+W` удалять назад к предыдущему пробелу вместо только предыдущего слова.3508В v2.1.238 через v2.1.260 установка его на `"readline"` заставляла `Ctrl+W` удалять назад к предыдущему пробелу вместо только предыдущего слова.

3506 3509 

3507* **Область действия**: [`Любой файл`](#scopes)3510* **Область действия**: [`Any file`](#scopes)

3508* **Тип**: строка, `"classic"` или `"readline"`3511* **Тип**: строка, `"classic"` или `"readline"`

3509* **По умолчанию**: не установлено3512* **По умолчанию**: не установлено

3510 3513 


3512 `maxProseWidth`3515 `maxProseWidth`

3513</h3>3516</h3>

3514 3517 

3515Ограничьте ширину прозы в ответах Claude, чтобы строки оставались читаемыми в широком терминале. Абзацы, заголовки, списки и блокировки цитат переносятся в пределах этого количества столбцов, в то время как таблицы и блоки кода сохраняют полную ширину терминала. Требуется Claude Code v2.1.282 или позже.3518Ограничьте ширину прозы в ответах Claude, чтобы строки оставались читаемыми в широком терминале. Абзацы, заголовки, списки и цитаты переносятся в пределах этого количества столбцов, в то время как таблицы и блоки кода сохраняют полную ширину терминала. Требуется Claude Code v2.1.282 или более поздняя версия.

3516 3519 

3517* **Область действия**: [`Любой файл`](#scopes)3520* **Область действия**: [`Any file`](#scopes)

3518* **Тип**: количество столбцов терминала, целое число, минимум `40`. Claude Code игнорирует любое другое значение3521* **Тип**: количество столбцов терминала, целое число, минимум `40`. Claude Code игнорирует любое другое значение

3519* **По умолчанию**: не установлено, поэтому проза переносится на край терминала3522* **По умолчанию**: не установлено, поэтому проза переносится на край терминала

3520 3523 


3530 3533 

3531Уменьшите или отключите анимацию интерфейса, такую как спиннер, мерцание и эффекты вспышки. Появляется в `/config` как **Reduce motion**.3534Уменьшите или отключите анимацию интерфейса, такую как спиннер, мерцание и эффекты вспышки. Появляется в `/config` как **Reduce motion**.

3532 3535 

3533* **Область действия**: [`Любой файл`](#scopes)3536* **Область действия**: [`Any file`](#scopes)

3534* **Тип**: Boolean3537* **Тип**: Boolean

3535 * `true`: Claude Code уменьшает или отключает анимацию интерфейса, такую как спиннер, мерцание и эффекты вспышки3538 * `true`: Claude Code уменьшает или отключает анимацию интерфейса, такую как спиннер, мерцание и эффекты вспышки

3536 * `false`: то же самое, что не установлено; Claude Code показывает свои анимации3539 * `false`: то же самое, что не установлено; Claude Code показывает свои анимации


3546 `promptSuggestionEnabled`3549 `promptSuggestionEnabled`

3547</h3>3550</h3>

3548 3551 

3549Показывайте или скрывайте [предложения приглашения](/docs/ru/interactive-mode#prompt-suggestions), затемненные предсказания, которые появляются в вашем приглашении ввода. Установите это на `false` или отключите **Prompt suggestions** в `/config`, чтобы скрыть их.3552Показывайте или скрывайте [предложения приглашения](/docs/ru/interactive-mode#prompt-suggestions), затемненные предсказания, которые появляются в вашем приглашении ввода. Установите это значение на `false` или отключите **Prompt suggestions** в `/config`, чтобы скрыть их.

3550 3553 

3551* **Область действия**: [`Любой файл`](#scopes)3554* **Область действия**: [`Any file`](#scopes)

3552* **Тип**: Boolean3555* **Тип**: Boolean

3553 * `true`: вы видите предложения приглашения в вашем приглашении ввода3556 * `true`: вы видите предложения приглашения в вашем приглашении ввода

3554 * `false`: Claude Code скрывает предложения приглашения3557 * `false`: Claude Code скрывает предложения приглашения

3555* **По умолчанию**: `true`3558* **По умолчанию**: `true`

3556* **Переопределения для каждого сеанса**: [`CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION`](/docs/ru/env-vars) имеет приоритет над этим ключом для одного сеанса3559* **Переопределения для отдельного сеанса**: [`CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION`](/docs/ru/env-vars) имеет приоритет над этим ключом для одного сеанса

3557 3560 

3558```json settings.json theme={null}3561```json settings.json theme={null}

3559{3562{


3561}3564}

3562```3565```

3563 3566 

3564Предложения приглашения требуют учетной записи claude.ai или Console с включенной телеметрией. На Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry, или с отключенной телеметрией, такой как [`DISABLE_TELEMETRY`](/docs/ru/env-vars), этот ключ не имеет эффекта и только `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=1` включает их.3567Предложения приглашения требуют учетную запись claude.ai или Console с включенной телеметрией. На Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry, или с отключенной телеметрией, такой как [`DISABLE_TELEMETRY`](/docs/ru/env-vars), этот ключ не имеет эффекта и только `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=1` включает их.

3565 3568 

3566<h3 id="respectgitignore">3569<h3 id="respectgitignore">

3567 `respectGitignore`3570 `respectGitignore`

3568</h3>3571</h3>

3569 3572 

3570Контролируйте, оставляет ли средство выбора файлов `@` файлы, которые совпадают с шаблонами `.gitignore`. Появляется в `/config` как **Respect .gitignore in file picker**.3573Контролируйте, оставляет ли средство выбора файлов `@` файлы, которые соответствуют шаблонам `.gitignore`. Появляется в `/config` как **Respect .gitignore in file picker**.

3571 3574 

3572* **Область действия**: [`Любой файл`](#scopes). Когда ни один файл параметров его не устанавливает, Claude Code возвращается к `respectGitignore` в `~/.claude.json`, который переключатель `/config` записывает.3575* **Область действия**: [`Any file`](#scopes). Когда ни один файл параметров его не устанавливает, Claude Code возвращается к `respectGitignore` в `~/.claude.json`, который переключатель `/config` записывает.

3573* **Тип**: Boolean3576* **Тип**: Boolean

3574 * `true`: средство выбора файлов `@` оставляет файлы, которые совпадают с шаблонами `.gitignore`3577 * `true`: средство выбора файлов `@` оставляет файлы, которые соответствуют шаблонам `.gitignore`

3575 * `false`: средство выбора файлов `@` включает файлы, которые совпадают с шаблонами `.gitignore`3578 * `false`: средство выбора файлов `@` включает файлы, которые соответствуют шаблонам `.gitignore`

3576* **По умолчанию**: `true`3579* **По умолчанию**: `true`

3577 3580 

3578```json settings.json theme={null}3581```json settings.json theme={null}


3587 3590 

3588Выберите, отвечает ли Claude после того, как вы запустите команду оболочки с префиксом [`!`](/docs/ru/interactive-mode#shell-mode-with-prefix) в поле ввода. По умолчанию Claude Code добавляет вывод команды в разговор и Claude отвечает на него. Установите этот ключ на `false`, чтобы добавить вывод в контекст без ответа, чтобы вы могли запустить несколько команд и спросить о них вместе.3591Выберите, отвечает ли Claude после того, как вы запустите команду оболочки с префиксом [`!`](/docs/ru/interactive-mode#shell-mode-with-prefix) в поле ввода. По умолчанию Claude Code добавляет вывод команды в разговор и Claude отвечает на него. Установите этот ключ на `false`, чтобы добавить вывод в контекст без ответа, чтобы вы могли запустить несколько команд и спросить о них вместе.

3589 3592 

3590* **Область действия**: [`Любой файл`](#scopes)3593* **Область действия**: [`Any file`](#scopes)

3591* **Тип**: Boolean3594* **Тип**: Boolean

3592 * `true`: Claude Code добавляет вывод команды в разговор и Claude отвечает на него3595 * `true`: Claude Code добавляет вывод команды в разговор и Claude отвечает на него

3593 * `false`: Claude Code добавляет вывод в контекст без ответа3596 * `false`: Claude Code добавляет вывод в контекст без ответа


3605 `showClearContextOnPlanAccept`3608 `showClearContextOnPlanAccept`

3606</h3>3609</h3>

3607 3610 

3608Когда Claude завершает план в [режиме плана](/docs/ru/permission-modes#review-and-approve-a-plan), он показывает меню одобрения. Планирование может использовать много контекста, поэтому этот ключ добавляет первый вариант в это меню, **Yes, clear context and …**, который одобряет план, очищает контекст разговора и начинает реализацию только из плана. Остальная часть метки называет режим разрешения, в котором продолжается сеанс, и показывает, сколько вашего контекста использовало планирование.3611Когда Claude завершает план в [режиме плана](/docs/ru/permission-modes#review-and-approve-a-plan), он показывает меню одобрения. Планирование может использовать много контекста, поэтому этот ключ добавляет первый вариант в это меню, **Yes, clear context and …**, который одобряет план, очищает контекст разговора и начинает реализацию только из плана. Остальная часть метки называет режим разрешений, в котором продолжается сеанс, и показывает, сколько вашего контекста использовало планирование.

3609 3612 

3610* **Область действия**: [`Любой файл`](#scopes)3613* **Область действия**: [`Any file`](#scopes)

3611* **Тип**: Boolean3614* **Тип**: Boolean

3612 * `true`: меню одобрения плана получает первый вариант, **Yes, clear context and …**, который одобряет план и очищает контекст разговора3615 * `true`: меню одобрения плана получает первый вариант, **Yes, clear context and …**, который одобряет план и очищает контекст разговора

3613 * `false`: меню одобрения плана не показывает вариант очистки контекста3616 * `false`: меню одобрения плана не показывает вариант очистки контекста


3625 3628 

3626Показывайте или скрывайте сообщение о продолжительности хода после каждого ответа, такое как "Cooked for 1m 6s · done 6:05 PM". Часы после "done" показывают, когда ход завершился; [`timeFormat`](#timeformat) и [`timeZone`](#timezone) контролируют его формат и зону. Появляется в `/config` как **Show turn duration**.3629Показывайте или скрывайте сообщение о продолжительности хода после каждого ответа, такое как "Cooked for 1m 6s · done 6:05 PM". Часы после "done" показывают, когда ход завершился; [`timeFormat`](#timeformat) и [`timeZone`](#timezone) контролируют его формат и зону. Появляется в `/config` как **Show turn duration**.

3627 3630 

3628* **Область действия**: [`Любой файл`](#scopes). Значение в `~/.claude.json` из более старой версии применяется, когда ни один файл параметров его не устанавливает.3631* **Область действия**: [`Any file`](#scopes). Значение в `~/.claude.json` из более старой версии применяется, когда ни один файл параметров его не устанавливает.

3629* **Тип**: Boolean3632* **Тип**: Boolean

3630 * `true`: вы видите сообщение о продолжительности хода после каждого ответа3633 * `true`: вы видите сообщение о продолжительности хода после каждого ответа

3631 * `false`: Claude Code скрывает сообщение о продолжительности хода3634 * `false`: Claude Code скрывает сообщение о продолжительности хода


3641 `spellcheck`3644 `spellcheck`

3642</h3>3645</h3>

3643 3646 

3644Подчеркивайте неправильно написанные слова в приглашении ввода по мере ввода, используя установленную вами программу проверки орфографии. Claude Code проверяет только текст в поле ввода. [Проверка орфографии по мере ввода](/docs/ru/interactive-mode#check-spelling-as-you-type) охватывает установку aspell, hunspell или ispell и то, что проверяет программа проверки. Требуется Claude Code v2.1.235 или позже.3647Подчеркивайте неправильно написанные слова в приглашении ввода по мере ввода, используя установленную вами программу проверки орфографии. Claude Code проверяет только текст в поле ввода. [Проверка орфографии по мере ввода](/docs/ru/interactive-mode#check-spelling-as-you-type) охватывает установку aspell, hunspell или ispell и то, что проверяет программа проверки. Требуется Claude Code v2.1.235 или более поздняя версия.

3645 3648 

3646* **Область действия**: [`Пользователь или управляемый`](#scopes). Блок из самого высокого уровня, который его устанавливает, применяется целиком.3649* **Область действия**: [`User or managed`](#scopes). Блок из самого высокого уровня, который его устанавливает, применяется в целом.

3647* **Тип**: объект с `enabled` (Boolean), `checker` (`"aspell"`, `"hunspell"`, `"ispell"` или `"auto"`), `language` (строка, передаваемая программе проверки как имя ее словаря) и `color` (строка, имя цвета терминала, `#rrggbb`, `rgb(r,g,b)`, `ansi256(n)` или `ansi:<name>`)3650* **Тип**: объект с `enabled` (Boolean), `checker` (`"aspell"`, `"hunspell"`, `"ispell"` или `"auto"`), `language` (строка, передаваемая программе проверки как имя ее словаря) и `color` (строка, имя цвета терминала, `#rrggbb`, `rgb(r,g,b)`, `ansi256(n)` или `ansi:<name>`)

3648* **По умолчанию**: не установлено, поэтому проверка орфографии отключена; `checker` по умолчанию `"auto"`, первый из трех найденных на `PATH`; `language` по умолчанию собственный словарь программы проверки; `color` по умолчанию цвет ошибки темы3651* **По умолчанию**: не установлено, поэтому проверка орфографии отключена; `checker` по умолчанию `"auto"`, первый из трех найденных на `PATH`; `language` по умолчанию собственный словарь программы проверки; `color` по умолчанию цвет ошибки темы

3649 3652 


3659 3662 

3660Пока Claude работает, строка спиннера вращается через короткие советы о функциях Claude Code, такие как "Use Plan Mode to prepare for a complex request before making changes. Press Shift+Tab twice to enable." Установите этот ключ на `false`, чтобы скрыть их. Появляется в `/config` как **Show tips**.3663Пока Claude работает, строка спиннера вращается через короткие советы о функциях Claude Code, такие как "Use Plan Mode to prepare for a complex request before making changes. Press Shift+Tab twice to enable." Установите этот ключ на `false`, чтобы скрыть их. Появляется в `/config` как **Show tips**.

3661 3664 

3662* **Область действия**: [`Любой файл`](#scopes)3665* **Область действия**: [`Any file`](#scopes)

3663* **Тип**: Boolean3666* **Тип**: Boolean

3664 * `true`: вы видите советы в спиннере, пока Claude работает3667 * `true`: вы видите советы в спиннере, пока Claude работает

3665 * `false`: Claude Code скрывает советы спиннера3668 * `false`: Claude Code скрывает советы спиннера


3675 `spinnerTipsOverride`3678 `spinnerTipsOverride`

3676</h3>3679</h3>

3677 3680 

3678Добавьте свои собственные советы к [советам спиннера](#spinnertipsenabled), которые Claude Code показывает, пока Claude работает, или замените встроенные советы своими. Claude Code помещает ваши советы в ту же ротацию, что и встроенные: он выбирает совет, который дольше всего не показывался, пропускает советы, все еще находящиеся в своем периоде охлаждения, и разрывает связи по приоритету.3681Добавьте свои собственные советы к [советам спиннера](#spinnertipsenabled), которые Claude Code показывает, пока Claude работает, или замените встроенные советы своими. Claude Code помещает ваши советы в ту же ротацию, что и встроенные.

3679 3682 

3680Если вы установите [`spinnerTipsEnabled`](#spinnertipsenabled) на `false`, Claude Code скрывает все советы, включая ваши.3683Если вы установите [`spinnerTipsEnabled`](#spinnertipsenabled) на `false`, Claude Code скроет все советы, включая ваши.

3681 3684 

3682* **Область действия**: [`Любой файл`](#scopes). Claude Code соблюдает объекты советов, `tipsFile`, `label` и `excludeDefault` из пользовательских параметров, флага `--settings` и управляемых параметров; из параметров проекта и локальных параметров он читает только простые строковые советы.3685* **Область действия**: [`Any file`](#scopes). Claude Code соблюдает объекты советов, `tipsFile`, `label` и `excludeDefault` из пользовательских параметров, флага `--settings` и управляемых параметров; из параметров проекта и локальных параметров он читает только простые строковые советы.

3683* **Тип**: объект с полями `tips`, `tipsFile`, `label` и `excludeDefault`, каждое необязательное3686* **Тип**: объект с полями `tips`, `tipsFile`, `label` и `excludeDefault`, каждое необязательное

3684* **По умолчанию**: не установлено, поэтому Claude Code показывает только встроенные советы3687* **По умолчанию**: не установлено, поэтому Claude Code показывает только встроенные советы

3685 3688 

3686Объекты советов, `tipsFile`, `label` и правило в строке Область действия, что параметры проекта и локальные параметры вносят только простые строки, требуют Claude Code v2.1.247 или позже. На более ранних версиях `excludeDefault` файла проекта или локального файла также применяется.3689Объекты советов, `tipsFile`, `label` и правило в строке Scope, что параметры проекта и локальные параметры вносят только простые строки, требуют Claude Code v2.1.247 или более поздней версии.

3687 3690 

3688Каждая запись `tips` — это простая строка или объект с этими полями:3691Каждая запись `tips` — это простая строка или объект с этими полями:

3689 3692 

3690| Поле | Обязательно | Описание |3693| Поле | Обязательно | Описание |

3691| :- | :- | :- |3694| :- | :- | :- |

3692| `id` | Да | До 64 букв, цифр, `.`, `_` или `-`. Claude Code ключает историю показа совета на нем, поэтому период охлаждения совета сохраняется при переупорядочении списка. Из двух записей с одинаковым id Claude Code использует первую |3695| `id` | Да | До 64 букв, цифр, `.`, `_` или `-`. Claude Code ключает историю показа совета на нем, поэтому охлаждение совета выживает переупорядочение списка. Из двух записей с одинаковым id Claude Code использует первую |

3693| `text` | Да | Совет, одна строка до 500 символов. Claude Code удаляет ANSI-экранирования и управляющие символы и сворачивает пробелы |3696| `text` | Да | Совет, одна строка до 500 символов. Claude Code удаляет ANSI-экранирования и управляющие символы и сворачивает пробелы |

3694| `cooldownSessions` | Нет | Сеансы Claude Code ждет перед повторным показом совета, `0` до `1000`, по умолчанию `0` |3697| `cooldownSessions` | Нет | Сеансы Claude Code ждет перед повторным показом совета, `0` до `1000`, по умолчанию `0` |

3695| `priority` | Нет | Порядок среди советов, которые не показывались одинаково долго, выше первым, `-10` до `10`, по умолчанию `0` |3698| `priority` | Нет | Порядок среди советов, которые не показывались одинаково долго, выше первым, `-10` до `10`, по умолчанию `0` |

3696 3699 

3697Claude Code читает простую строку как совет с этими значениями по умолчанию и id на основе позиции, поэтому его история показа сбрасывается при переупорядочении списка. Дайте совету `id`, чтобы сохранить его историю при редактировании.3700Claude Code читает простую строку как совет с этими значениями по умолчанию и id на основе позиции, поэтому его история показа сбрасывается при переупорядочении списка. Дайте совету `id`, чтобы сохранить его историю при редактировании.

3698 3701 

3699Claude Code читает максимум 200 советов в `tips` и `tipsFile` и отбрасывает неправильную запись с предупреждением отладки вместо отклонения файла параметров.3702Claude Code читает максимум 200 советов в `tips` и `tipsFile` и удаляет неправильную запись с предупреждением отладки вместо отклонения файла параметров.

3700 3703 

3701Используйте оставшиеся поля для именования файла советов, установки префикса и скрытия встроенных советов:3704Используйте оставшиеся поля для именования файла советов, установки префикса и скрытия встроенных советов:

3702 3705 

3703* `tipsFile`: абсолютный или `~/` путь к локальному JSON-файлу, содержащему массив одинаковых записей, или объект с массивом `tips`, до 256 КБ. Claude Code читает файл один раз за процесс, поэтому он загружает ваши правки при следующем запуске. Вы не можете установить его через [управляемые параметры сервера](/docs/ru/server-managed-settings); развертывайте встроенные `tips` там или развертывайте путь в локальном `managed-settings.json`.3706* `tipsFile`: абсолютный или `~/` путь к локальному JSON-файлу, содержащему массив одинаковых записей, или объект с массивом `tips`, до 256 КБ. Claude Code читает файл один раз за процесс, поэтому он загружает ваши правки при следующем запуске. Вы не можете установить его через [управляемые параметры сервера](/docs/ru/server-managed-settings); развертывайте встроенные `tips` там или развертывайте путь в локальном `managed-settings.json`.

3704* `label`: префикс Claude Code показывает перед советами из пользовательских параметров, `--settings` и управляемых параметров, до 40 символов. По умолчанию `Tip`, тот же префикс, что и встроенные советы, и советы из параметров проекта и локальных параметров всегда его используют.3707* `label`: префикс Claude Code показывает перед советами из пользовательских параметров, `--settings` и управляемых параметров, до 40 символов. По умолчанию `Tip`, тот же префикс, что и встроенные советы, и советы из параметров проекта и локальных параметров всегда его используют.

3705* `excludeDefault`: установите это на `true`, чтобы скрыть встроенные советы и показать только ваши. Когда Claude Code не может загрузить какой-либо из ваших советов, например потому что `tipsFile` не существует или каждая запись неправильна, он сохраняет встроенную ротацию вместо пустого спиннера.3708* `excludeDefault`: установите его на `true`, чтобы скрыть встроенные советы и показать только ваши. Когда Claude Code не может загрузить какой-либо из ваших советов, например потому что `tipsFile` не существует или каждая запись неправильна, он сохраняет встроенную ротацию вместо пустого спиннера.

3706 3709 

3707Когда более одного файла параметров устанавливает ключ, Claude Code показывает советы из всех них и берет `tipsFile`, `label` и `excludeDefault` из того, который из управляемых параметров, флага `--settings` и пользовательских параметров является наивысшим приоритетом, который устанавливает каждый.3710Когда более одного файла параметров устанавливает ключ, Claude Code показывает советы из всех них и берет `tipsFile`, `label` и `excludeDefault` из того, который из управляемых параметров, флага `--settings` и пользовательских параметров имеет наивысший приоритет, который устанавливает каждый.

3708 3711 

3709Этот пример, в ваших пользовательских параметрах, добавляет простой строковый совет и объектный совет в ротацию под префиксом `Acme tip`:3712Этот пример в ваших пользовательских параметрах добавляет простой строковый совет и объектный совет в ротацию под префиксом `Acme tip`:

3710 3713 

3711```json settings.json theme={null}3714```json settings.json theme={null}

3712{3715{


3729 3732 

3730* `label`: Claude Code показывает оба совета как `Acme tip: ...` вместо `Tip: ...`.3733* `label`: Claude Code показывает оба совета как `Acme tip: ...` вместо `Tip: ...`.

3731* Простая строка: Claude Code дает ей значения по умолчанию, поэтому она может появиться снова в очень следующем сеансе.3734* Простая строка: Claude Code дает ей значения по умолчанию, поэтому она может появиться снова в очень следующем сеансе.

3732* `id`: Claude Code ключает историю показа второго совета на `gateway-errors`, поэтому его период охлаждения все еще применяется после добавления или переупорядочения советов.3735* `id`: Claude Code ключает историю показа второго совета на `gateway-errors`, поэтому его охлаждение все еще применяется после добавления или переупорядочения советов.

3733* `cooldownSessions`: после того как Claude Code показывает совет `gateway-errors`, он не показывает этот совет снова до пяти сеансов спустя.3736* `cooldownSessions`: после того как Claude Code показывает совет `gateway-errors`, он не показывает этот совет снова до пяти сеансов спустя.

3734* `priority`: когда совет `gateway-errors` и другой совет не показывались одинаково долго, например когда ни один еще не был показан, Claude Code показывает `gateway-errors` первым. Простая строка имеет приоритет по умолчанию, `0`.3737* `priority`: когда совет `gateway-errors` и другой совет не показывались одинаково долго, например когда ни один еще не был показан, Claude Code показывает `gateway-errors` первым. Простая строка имеет приоритет по умолчанию, `0`.

3735 3738 


3741 3744 

3742Пока ход выполняется, спиннер показывает вращающийся глагол, такой как "Accomplishing", "Architecting" или "Baking". Используйте этот ключ, чтобы добавить свои собственные глаголы в эту ротацию или заменить встроенный список своим.3745Пока ход выполняется, спиннер показывает вращающийся глагол, такой как "Accomplishing", "Architecting" или "Baking". Используйте этот ключ, чтобы добавить свои собственные глаголы в эту ротацию или заменить встроенный список своим.

3743 3746 

3744* **Область действия**: [`Любой файл`](#scopes)3747* **Область действия**: [`Any file`](#scopes)

3745* **Тип**: объект с массивом `verbs` строк и `mode`, одна из:3748* **Тип**: объект с массивом `verbs` строк и `mode`, одно из:

3746 * `"append"`: Claude Code добавляет ваши глаголы к встроенному набору3749 * `"append"`: Claude Code добавляет ваши глаголы к встроенному набору

3747 * `"replace"`: Claude Code показывает только ваши глаголы3750 * `"replace"`: Claude Code показывает только ваши глаголы

3748* **По умолчанию**: не установлено, поэтому Claude Code использует встроенные глаголы3751* **По умолчанию**: не установлено, поэтому Claude Code использует встроенные глаголы


3764 `statusLine`3767 `statusLine`

3765</h3>3768</h3>

3766 3769 

3767Запустите вашу собственную команду для отрисовки [строки состояния](/docs/ru/statusline) под приглашением с контекстом, таким как модель, стоимость или ветка git. Необязательные поля регулируют интервал, добавляют периодические переустановки и скрывают встроенный индикатор режима vim, когда ваш скрипт отрисовывает `vim.mode` сам.3770Запустите вашу собственную команду для отображения [строки состояния](/docs/ru/statusline) ниже приглашения с контекстом, таким как модель, стоимость или ветка git. Необязательные поля регулируют интервал, добавляют периодические повторные запуски и скрывают встроенный индикатор режима vim, когда ваш скрипт отображает `vim.mode` сам.

3768 3771 

3769* **Область действия**: [`Любой файл`](#scopes). Когда [`allowManagedHooksOnly`](#allowmanagedhooksonly) включен или [`disableAllHooks`](#disableallhooks) установлен вне управляемых параметров, запускается только значение управляемых параметров.3772* **Область действия**: [`Any file`](#scopes). Когда [`allowManagedHooksOnly`](#allowmanagedhooksonly) включен или [`disableAllHooks`](#disableallhooks) установлен вне управляемых параметров, запускается только значение управляемых параметров.

3770* **Тип**: объект с `type`, установленным на `"command"` и строкой `command`, плюс необязательный `padding` как количество символов, `refreshInterval` как количество секунд, минимум `1`, и `hideVimModeIndicator` как Boolean3773* **Тип**: объект с `type`, установленным на `"command"` и строкой `command`, плюс необязательный `padding` как количество символов, `refreshInterval` как количество секунд, минимум `1`, и `hideVimModeIndicator` как Boolean

3771* **По умолчанию**: не установлено, поэтому нет строки состояния3774* **По умолчанию**: не установлено, поэтому нет строки состояния

3772 3775 


3788 `subagentStatusLine`3791 `subagentStatusLine`

3789</h3>3792</h3>

3790 3793 

3791Когда Claude запускает [подагентов](/docs/ru/sub-agents), Claude Code перечисляет их в отображении задач под приглашением, одна строка на подагента, показывающая `name · description · token count`. Этот ключ позволяет вам запустить вашу собственную команду для переписания этих строк, например для показа использования контекста каждого подагента в процентах. При каждом обновлении Claude Code отправляет видимые строки как один JSON-объект на stdin с массивом `tasks`, несущим `id`, `name`, `status`, `model`, `tokenCount` каждого подагента и многое другое, и заменяет строку для каждого `id`, который вы пишете обратно как строку `{"id", "content"}`. Строки, которые вы не пишете обратно, сохраняют отрисовку по умолчанию.3794Когда Claude запускает [подагентов](/docs/ru/sub-agents), Claude Code перечисляет их в отображении задач ниже приглашения, одна строка на подагента, показывающая `name · description · token count`. Этот ключ позволяет вам запустить вашу собственную команду для переписания этих строк, например для показа использования контекста каждого подагента в процентах. При каждом обновлении Claude Code отправляет видимые строки как один JSON-объект на stdin с массивом `tasks`, содержащим `id`, `name`, `status`, `model`, `tokenCount` каждого подагента и многое другое, и заменяет строку для каждого `id`, который вы пишете обратно как строку `{"id", "content"}`. Строки, которые вы не пишете обратно, сохраняют отображение по умолчанию.

3792 3795 

3793* **Область действия**: [`Любой файл`](#scopes). Когда [`allowManagedHooksOnly`](#allowmanagedhooksonly) включен или [`disableAllHooks`](#disableallhooks) установлен вне управляемых параметров, запускается только значение управляемых параметров.3796* **Область действия**: [`Any file`](#scopes). Когда [`allowManagedHooksOnly`](#allowmanagedhooksonly) включен или [`disableAllHooks`](#disableallhooks) установлен вне управляемых параметров, запускается только значение управляемых параметров.

3794* **Тип**: объект с `type`, установленным на `"command"` и строкой `command`3797* **Тип**: объект с `type`, установленным на `"command"` и строкой `command`

3795* **По умолчанию**: не установлено, поэтому Claude Code отрисовывает строки по умолчанию3798* **По умолчанию**: не установлено, поэтому Claude Code отображает строки по умолчанию

3796 3799 

3797```json settings.json theme={null}3800```json settings.json theme={null}

3798{3801{


3811 3814 

3812Claude Code раскрашивает код по языку в дифах, блоках кода и предпросмотрах файлов, которые он показывает в терминале, со своим встроенным подсветчиком; никакой плагин или языковой сервер не задействован. Установите этот ключ на `true`, чтобы показать их как простой текст вместо этого, например если цвета конфликтуют с вашей темой терминала или замедляют программу чтения с экрана.3815Claude Code раскрашивает код по языку в дифах, блоках кода и предпросмотрах файлов, которые он показывает в терминале, со своим встроенным подсветчиком; никакой плагин или языковой сервер не задействован. Установите этот ключ на `true`, чтобы показать их как простой текст вместо этого, например если цвета конфликтуют с вашей темой терминала или замедляют программу чтения с экрана.

3813 3816 

3814* **Область действия**: [`Любой файл`](#scopes)3817* **Область действия**: [`Any file`](#scopes)

3815* **Тип**: Boolean3818* **Тип**: Boolean

3816 * `true`: Claude Code отключает подсветку синтаксиса в дифах, блоках кода и предпросмотрах файлов3819 * `true`: Claude Code отключает подсветку синтаксиса в дифах, блоках кода и предпросмотрах файлов

3817 * `false`: Claude Code подсвечивает синтаксис3820 * `false`: Claude Code подсвечивает синтаксис


3827 `terminalProgressBarEnabled`3830 `terminalProgressBarEnabled`

3828</h3>3831</h3>

3829 3832 

3830Некоторые терминалы могут показать индикатор прогресса на вкладке или в панели задач для программы, работающей в них. Пока Claude работает, Claude Code сообщает состояние выполнения терминалу, поэтому вы можете видеть с другой вкладки или окна, занят ли сеанс. Индикатор остается видимым после завершения хода, пока [фоновые подагенты](/docs/ru/sub-agents#run-subagents-in-foreground-or-background) или [динамические рабочие процессы](/docs/ru/workflows) все еще работают, и очищается после того, как сеанс неактивен.3833Некоторые терминалы могут показывать индикатор прогресса на вкладке или в панели задач для программы, работающей в них. Пока Claude работает, Claude Code сообщает состояние выполнения терминалу, поэтому вы можете видеть с другой вкладки или окна, занят ли сеанс. Индикатор остается видимым после завершения хода, пока [фоновые подагенты](/docs/ru/sub-agents#run-subagents-in-foreground-or-background) или [динамические рабочие процессы](/docs/ru/workflows) все еще работают, и очищается после того, как сеанс неактивен.

3831 3834 

3832Claude Code сообщает это только в терминалах, которые поддерживают индикатор: ConEmu, Ghostty 1.2.0 или позже и iTerm2 3.6.6 или позже. Установите этот ключ на `false`, чтобы остановить Claude Code от сообщения об этом. Появляется в `/config` как **Terminal progress bar**.3835Claude Code сообщает об этом только в терминалах, которые поддерживают индикатор: ConEmu, Ghostty 1.2.0 или более поздняя версия и iTerm2 3.6.6 или более поздняя версия. Установите этот ключ на `false`, чтобы остановить Claude Code от сообщения об этом. Появляется в `/config` как **Terminal progress bar**.

3833 3836 

3834* **Область действия**: [`Любой файл`](#scopes). Значение в `~/.claude.json` из более старой версии применяется, когда ни один файл параметров его не устанавливает.3837* **Область действия**: [`Any file`](#scopes). Значение в `~/.claude.json` из более старой версии применяется, когда ни один файл параметров его не устанавливает.

3835* **Тип**: Boolean3838* **Тип**: Boolean

3836 * `true`: вы видите полосу прогресса терминала в терминалах, которые ее поддерживают3839 * `true`: вы видите полосу прогресса терминала в терминалах, которые ее поддерживают

3837 * `false`: Claude Code скрывает полосу прогресса терминала3840 * `false`: Claude Code скрывает полосу прогресса терминала


3849 3852 

3850Claude Code устанавливает название вкладки вашего терминала. По умолчанию он использует название, которое он генерирует из разговора, и как только вы дадите сеансу [имя](/docs/ru/sessions#name-your-sessions) с `/rename` или `--name`, вкладка показывает это имя вместо этого. Установите этот ключ на `false`, чтобы сохранить сгенерированное название на вкладке даже после того, как вы назовете сеанс. Само имя все еще применяется, поэтому `/resume <name>` и средство выбора сеанса его находят.3853Claude Code устанавливает название вкладки вашего терминала. По умолчанию он использует название, которое он генерирует из разговора, и как только вы дадите сеансу [имя](/docs/ru/sessions#name-your-sessions) с `/rename` или `--name`, вкладка показывает это имя вместо этого. Установите этот ключ на `false`, чтобы сохранить сгенерированное название на вкладке даже после того, как вы назовете сеанс. Само имя все еще применяется, поэтому `/resume <name>` и средство выбора сеанса его находят.

3851 3854 

3852* **Область действия**: [`Любой файл`](#scopes)3855* **Область действия**: [`Any file`](#scopes)

3853* **Тип**: Boolean3856* **Тип**: Boolean

3854 * `true`: название вкладки терминала показывает имя сеанса, которое вы установили3857 * `true`: название вкладки терминала показывает имя сеанса, которое вы установили

3855 * `false`: вкладка сохраняет название Claude Code генерирует из вашего разговора3858 * `false`: вкладка сохраняет название Claude Code генерирует из вашего разговора


3869 3872 

3870Выберите цветовую тему для интерфейса. Появляется в `/config` как **Theme**.3873Выберите цветовую тему для интерфейса. Появляется в `/config` как **Theme**.

3871 3874 

3872* **Область действия**: [`Любой файл`](#scopes). Значение в `~/.claude.json` из более старой версии применяется, когда ни один файл параметров его не устанавливает.3875* **Область действия**: [`Any file`](#scopes). Значение в `~/.claude.json` из более старой версии применяется, когда ни один файл параметров его не устанавливает.

3873* **Тип**: строка, одна из:3876* **Тип**: строка, одно из:

3874 * `"auto"`: совпадает с светлым или темным фоном вашего терминала3877 * `"auto"`: соответствует светлому или темному фону вашего терминала

3875 * `"dark"`: темная тема3878 * `"dark"`: темная тема

3876 * `"light"`: светлая тема3879 * `"light"`: светлая тема

3877 * `"dark-daltonized"`: темная тема с удобными для дальтоников цветами3880 * `"dark-daltonized"`: темная тема с удобными для дальтоников цветами

3878 * `"light-daltonized"`: светлая тема с удобными для дальтоников цветами3881 * `"light-daltonized"`: светлая тема с удобными для дальтоников цветами

3879 * `"dark-ansi"`: темная тема, используя только палитру цветов ANSI вашего терминала3882 * `"dark-ansi"`: темная тема, использующая только палитру ANSI вашего терминала

3880 * `"light-ansi"`: светлая тема, используя только палитру цветов ANSI вашего терминала3883 * `"light-ansi"`: светлая тема, использующая только палитру ANSI вашего терминала

3881 * `"custom:<slug>"` или `"custom:<plugin-name>:<slug>"`: пользовательская тема из `~/.claude/themes/` или плагина3884 * `"custom:<slug>"` или `"custom:<plugin-name>:<slug>"`: пользовательская тема из `~/.claude/themes/` или плагина

3882* **По умолчанию**: `"dark"`3885* **По умолчанию**: `"dark"`

3883 3886 


3893 `timeFormat`3896 `timeFormat`

3894</h3>3897</h3>

3895 3898 

3896Выберите, как Claude Code записывает времена, которые он показывает в интерфейсе, такие как `done 6:05 PM` в конце каждого сообщения о продолжительности хода и временные метки в [средстве просмотра стенограммы](/docs/ru/interactive-mode#transcript-viewer). Чтобы выбрать предустановку, запустите `/config` и установите **Time format**. Требуется Claude Code v2.1.257 или позже.3899Выберите, как Claude Code записывает времена, которые он показывает в интерфейсе, такие как `done 6:05 PM` в конце каждого сообщения о продолжительности хода и временные метки в [средстве просмотра стенограммы](/docs/ru/interactive-mode#transcript-viewer). Чтобы выбрать предустановку, запустите `/config` и установите **Time format**. Требуется Claude Code v2.1.257 или более поздняя версия.

3897 3900 

3898* **Область действия**: [`Любой файл`](#scopes)3901* **Область действия**: [`Any file`](#scopes)

3899* **Тип**: строка, одна из:3902* **Тип**: строка, одно из:

3900 * `"auto"`: то же самое, что не установлено; каждое время сохраняет свой встроенный формат, который следует вашей локали в сообщении о продолжительности хода3903 * `"auto"`: то же самое, что не установлено; каждое время сохраняет свой встроенный формат, который следует вашей локали в сообщении о продолжительности хода

3901 * `"12-hour"`: 12-часовые часы3904 * `"12-hour"`: 12-часовые часы

3902 * `"24-hour"`: 24-часовые часы3905 * `"24-hour"`: 24-часовые часы


3932 `timeZone`3935 `timeZone`

3933</h3>3936</h3>

3934 3937 

3935Показывайте времена в интерфейсе в часовом поясе, отличном от вашего системного. Установите это на [имя часового пояса IANA](https://www.iana.org/time-zones), такое как `"UTC"` или `"Europe/Dublin"`. Времена, которые [`timeFormat`](#timeformat) контролирует, затем показываются в этом поясе. Если `timeFormat` — это `"24-hour-utc"`, времена остаются в UTC и Claude Code игнорирует этот ключ. `/config` не имеет строки для этого ключа, поэтому установите его в файл параметров. Требуется Claude Code v2.1.257 или позже.3938Показывайте времена в интерфейсе в часовом поясе, отличном от вашего системного. Установите его на [имя часового пояса IANA](https://www.iana.org/time-zones), такое как `"UTC"` или `"Europe/Dublin"`. Времена, которые [`timeFormat`](#timeformat) контролирует, затем показываются в этом поясе. Если `timeFormat` — это `"24-hour-utc"`, времена остаются в UTC и Claude Code игнорирует этот ключ. `/config` не имеет строки для этого ключа, поэтому установите его в файл параметров. Требуется Claude Code v2.1.257 или более поздняя версия.

3936 3939 

3937* **Область действия**: [`Любой файл`](#scopes)3940* **Область действия**: [`Any file`](#scopes)

3938* **Тип**: строка, имя часового пояса IANA. Когда Claude Code не распознает имя, он использует ваш системный часовой пояс3941* **Тип**: строка, имя часового пояса IANA. Когда Claude Code не распознает имя, он использует ваш системный часовой пояс

3939* **По умолчанию**: не установлено, поэтому времена показываются в вашем системном часовом поясе3942* **По умолчанию**: не установлено, поэтому времена показываются в вашем системном часовом поясе

3940 3943 


3950 3953 

3951Выберите рендерер пользовательского интерфейса терминала. Используйте `"fullscreen"` для безмерцающего [рендерера alt-screen](/docs/ru/fullscreen) с виртуализированной прокруткой или `"default"` для классического рендерера основного экрана. Запуск `/tui fullscreen` или `/tui default` записывает этот ключ для вас.3954Выберите рендерер пользовательского интерфейса терминала. Используйте `"fullscreen"` для безмерцающего [рендерера alt-screen](/docs/ru/fullscreen) с виртуализированной прокруткой или `"default"` для классического рендерера основного экрана. Запуск `/tui fullscreen` или `/tui default` записывает этот ключ для вас.

3952 3955 

3953* **Область действия**: [`Любой файл`](#scopes)3956* **Область действия**: [`Any file`](#scopes)

3954* **Тип**: строка, одна из:3957* **Тип**: строка, одно из:

3955 * `"default"`: классический рендерер основного экрана3958 * `"default"`: классический рендерер основного экрана

3956 * `"fullscreen"`: безмерцающий рендерер alt-screen с виртуализированной прокруткой3959 * `"fullscreen"`: безмерцающий рендерер alt-screen с виртуализированной прокруткой

3957* **По умолчанию**: не установлено, поэтому Claude Code [выбирает рендерер для вас](/docs/ru/fullscreen#fullscreen-by-default)3960* **По умолчанию**: не установлено, поэтому Claude Code [выбирает рендерер для вас](/docs/ru/fullscreen#fullscreen-by-default)

3958* **Переопределения для каждого сеанса**: [`CLAUDE_CODE_NO_FLICKER`](/docs/ru/env-vars) и [`CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN`](/docs/ru/env-vars) имеют приоритет над этим ключом для одного сеанса: `CLAUDE_CODE_NO_FLICKER=1` включает полноэкранный режим, и `CLAUDE_CODE_NO_FLICKER=0` или `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1` отключает его; когда оба установлены, Claude Code отключает его3961* **Переопределения для отдельного сеанса**: [`CLAUDE_CODE_NO_FLICKER`](/docs/ru/env-vars) и [`CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN`](/docs/ru/env-vars) имеют приоритет над этим ключом для одного сеанса: `CLAUDE_CODE_NO_FLICKER=1` включает полноэкранный режим, и `CLAUDE_CODE_NO_FLICKER=0` или `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1` отключает его; когда оба установлены, Claude Code отключает его

3959 3962 

3960```json settings.json theme={null}3963```json settings.json theme={null}

3961{3964{


3963}3966}

3964```3967```

3965 3968 

3966Под tmux `-CC` или через SSH на Windows Claude Code сохраняет классический рендерер, если вы не установите `CLAUDE_CODE_NO_FLICKER=1`. Фоновые сеансы, открытые из [представления агента](/docs/ru/agent-view), всегда используют полноэкранный рендерер независимо от этого параметра.3969Под tmux `-CC` или через SSH в Windows Claude Code сохраняет классический рендерер, если вы не установите `CLAUDE_CODE_NO_FLICKER=1`. Фоновые сеансы, открытые из [представления агента](/docs/ru/agent-view), всегда используют рендерер полноэкранного режима независимо от этого параметра.

3967 3970 

3968<h3 id="verbose">3971<h3 id="verbose">

3969 `verbose`3972 `verbose`


3971 3974 

3972По умолчанию стенограмма сворачивает каждый вызов инструмента в краткое резюме, такое как команда, которую запустил Claude, и количество строк его вывода, и вы нажимаете `Ctrl+O`, чтобы переключить всю стенограмму в развернутое представление, когда вы хотите детали. Установите этот ключ на `true`, чтобы показать полный ввод и вывод каждого вызова инструмента встроенным по мере его выполнения, что полезно, когда вы отлаживаете hook, MCP-сервер или длинную команду оболочки. Появляется в `/config` как **Verbose output**.3975По умолчанию стенограмма сворачивает каждый вызов инструмента в краткое резюме, такое как команда, которую запустил Claude, и количество строк его вывода, и вы нажимаете `Ctrl+O`, чтобы переключить всю стенограмму в развернутое представление, когда вы хотите детали. Установите этот ключ на `true`, чтобы показать полный ввод и вывод каждого вызова инструмента встроенным по мере его выполнения, что полезно, когда вы отлаживаете hook, MCP-сервер или длинную команду оболочки. Появляется в `/config` как **Verbose output**.

3973 3976 

3974* **Область действия**: [`Любой файл`](#scopes). Значение в `~/.claude.json` из более старой версии применяется, когда ни один файл параметров его не устанавливает.3977* **Область действия**: [`Any file`](#scopes). Значение в `~/.claude.json` из более старой версии применяется, когда ни один файл параметров его не устанавливает.

3975* **Тип**: Boolean3978* **Тип**: Boolean

3976 * `true`: вы видите полный вывод инструмента3979 * `true`: вы видите полный вывод инструмента

3977 * `false`: вы видите усеченные резюме вывода инструмента3980 * `false`: вы видите усеченные резюме вывода инструмента

3978* **По умолчанию**: `false`3981* **По умолчанию**: `false`

3979* **Переопределения для каждого сеанса**: [`--verbose`](/docs/ru/cli-reference#cli-flags) имеет приоритет над этим ключом для одного сеанса3982* **Переопределения для отдельного сеанса**: [`--verbose`](/docs/ru/cli-reference#cli-flags) имеет приоритет над этим ключом для одного сеанса

3980 3983 

3981```json settings.json theme={null}3984```json settings.json theme={null}

3982{3985{


3990 `viewMode`3993 `viewMode`

3991</h3>3994</h3>

3992 3995 

3993Установите представление стенограммы, в котором Claude Code начинает: `"default"`, `"verbose"` или `"focus"`. Когда установлено, оно переопределяет как липкий выбор `/focus`, так и параметр [`verbose`](#verbose).3996Установите представление стенограммы, в котором Claude Code начинается: `"default"`, `"verbose"` или `"focus"`. Когда установлено, оно переопределяет как липкий выбор `/focus`, так и параметр [`verbose`](#verbose).

3994 3997 

3995* **Область действия**: [`Любой файл`](#scopes)3998* **Область действия**: [`Any file`](#scopes)

3996* **Тип**: строка, одна из:3999* **Тип**: строка, одно из:

3997 * `"default"`: нормальная стенограмма с усеченным выводом инструмента4000 * `"default"`: нормальная стенограмма с усеченным выводом инструмента

3998 * `"verbose"`: стенограмма с полным выводом инструмента4001 * `"verbose"`: стенограмма с полным выводом инструмента

3999 * `"focus"`: только ваше последнее приглашение, однострочное резюме вызовов инструментов с редактированием diffstats и финальный ответ. Представление Focus требует [полноэкранного рендерера](#tui)4002 * `"focus"`: только ваше последнее приглашение, однострочное резюме вызовов инструментов с редактированием diffstats и финальный ответ. Представление Focus требует [рендерера полноэкранного режима](#tui)

4000* **По умолчанию**: не установлено, поэтому параметр `verbose` и ваш последний выбор `/focus` применяются4003* **По умолчанию**: не установлено, поэтому параметр `verbose` и ваш последний выбор `/focus` применяются

4001* **Переопределения для каждого сеанса**: [`--verbose`](/docs/ru/cli-reference#cli-flags) имеет приоритет над этим ключом для одного сеанса4004* **Переопределения для отдельного сеанса**: [`--verbose`](/docs/ru/cli-reference#cli-flags) имеет приоритет над этим ключом для одного сеанса

4002 4005 

4003```json settings.json theme={null}4006```json settings.json theme={null}

4004{4007{


4010 `vimInsertModeRemaps`4013 `vimInsertModeRemaps`

4011</h3>4014</h3>

4012 4015 

4013Сопоставьте двухклавишные последовательности режима INSERT с Escape в [режиме редактора vim](/docs/ru/interactive-mode#vim-editor-mode). Каждый ключ — это ровно два печатаемых символа, введенные последовательно, и `"<Esc>"` — единственная поддерживаемая цель; Claude Code игнорирует другие записи. Требуется Claude Code v2.1.208 или позже.4016Сопоставьте двухклавишные последовательности режима INSERT с Escape в [режиме редактора vim](/docs/ru/interactive-mode#vim-editor-mode). Каждый ключ — это ровно два печатаемых символа, введенные последовательно, и `"<Esc>"` — единственная поддерживаемая цель; Claude Code игнорирует другие записи. Требуется Claude Code v2.1.208 или более поздняя версия.

4014 4017 

4015* **Область действия**: [`Пользователь или управляемый`](#scopes). Репозиторий не может переназначить ваши нажатия клавиш.4018* **Область действия**: [`User or managed`](#scopes). Репозиторий не может переназначить ваши нажатия клавиш.

4016* **Тип**: объект, сопоставляющий двухсимвольную последовательность с `"<Esc>"`4019* **Тип**: объект, сопоставляющий двухсимвольную последовательность с `"<Esc>"`

4017* **По умолчанию**: не установлено4020* **По умолчанию**: не установлено

4018 4021 


4024}4027}

4025```4028```

4026 4029 

4027Не имеет эффекта, если `editorMode` не `"vim"`. См. [Переназначение последовательностей клавиш режима INSERT](/docs/ru/interactive-mode#remap-insert-mode-key-sequences). Требуется Claude Code v2.1.208 или позже.4030Не имеет эффекта, если `editorMode` не `"vim"`. См. [Переназначение последовательностей клавиш режима INSERT](/docs/ru/interactive-mode#remap-insert-mode-key-sequences). Требуется Claude Code v2.1.208 или более поздняя версия.

4028 4031 

4029<h3 id="voice">4032<h3 id="voice">

4030 `voice`4033 `voice`


4032 4035 

4033Включите [голосовую диктовку](/docs/ru/voice-dictation) и выберите, как ведет себя клавиша диктовки. Claude Code записывает этот объект для вас, когда вы запускаете `/voice`.4036Включите [голосовую диктовку](/docs/ru/voice-dictation) и выберите, как ведет себя клавиша диктовки. Claude Code записывает этот объект для вас, когда вы запускаете `/voice`.

4034 4037 

4035* **Область действия**: [`Любой файл`](#scopes)4038* **Область действия**: [`Any file`](#scopes)

4036* **Тип**: объект с `enabled` как Boolean, `autoSubmit` как Boolean, который применяется только в режиме удержания, и `mode`, одна из:4039* **Тип**: объект с `enabled` как Boolean, `autoSubmit` как Boolean, который применяется только в режиме удержания, и `mode`, одно из:

4037 * `"hold"`: вы удерживаете клавишу диктовки во время разговора и отпускаете ее, чтобы остановить4040 * `"hold"`: вы удерживаете клавишу диктовки во время разговора и отпускаете ее, чтобы остановить

4038 * `"tap"`: вы нажимаете клавишу один раз, чтобы начать запись, и снова, чтобы отправить4041 * `"tap"`: вы нажимаете клавишу один раз, чтобы начать запись, и снова, чтобы отправить

4039* **По умолчанию**: не установлено, поэтому диктовка отключена; когда `enabled` — это `true` и `mode` не установлен, Claude Code использует `"hold"`4042* **По умолчанию**: не установлено, поэтому диктовка отключена; когда `enabled` — это `true` и `mode` не установлен, Claude Code использует `"hold"`


4049}4052}

4050```4053```

4051 4054 

4052`autoSubmit` отправляет приглашение, когда вы отпускаете клавишу в режиме удержания. Голосовая диктовка требует учетной записи claude.ai.4055`autoSubmit` отправляет приглашение, когда вы отпускаете клавишу в режиме удержания. Голосовая диктовка требует учетную запись claude.ai.

4053 4056 

4054<h3 id="voiceenabled">4057<h3 id="voiceenabled">

4055 `voiceEnabled`4058 `voiceEnabled`


4061 4064 

4062Включите голосовую диктовку с одной формой Boolean, которая предшествует объекту `voice`. Когда оба установлены, применяется `voice.enabled`.4065Включите голосовую диктовку с одной формой Boolean, которая предшествует объекту `voice`. Когда оба установлены, применяется `voice.enabled`.

4063 4066 

4064* **Область действия**: [`Любой файл`](#scopes)4067* **Область действия**: [`Any file`](#scopes)

4065* **Тип**: Boolean4068* **Тип**: Boolean

4066 * `true`: голосовая диктовка включена, когда вы вошли с учетной записью claude.ai и политика вашей организации позволяет голос, если только `voice.enabled` не установлен4069 * `true`: голосовая диктовка включена, когда вы вошли с учетной записью claude.ai и политика вашей организации позволяет голос, если только `voice.enabled` не установлен

4067 * `false`: голосовая диктовка отключена, если только `voice.enabled` не установлен4070 * `false`: голосовая диктовка отключена, если только `voice.enabled` не установлен


4077 `wheelScrollAccelerationEnabled`4080 `wheelScrollAccelerationEnabled`

4078</h3>4081</h3>

4079 4082 

4080Ускорьте скорость прокрутки колеса мыши во время быстрой прокрутки в [полноэкранном режиме](/docs/ru/fullscreen#mouse-wheel-scrolling). Установите это на `false` для постоянной скорости прокрутки на каждый щелчок колеса.4083Ускорьте скорость прокрутки колеса мыши во время быстрой прокрутки при [полноэкранном отображении](/docs/ru/fullscreen#mouse-wheel-scrolling). Установите это значение на `false` для постоянной скорости прокрутки на каждую выемку колеса.

4081 4084 

4082* **Область действия**: [`Любой файл`](#scopes)4085* **Область действия**: [`Any file`](#scopes)

4083* **Тип**: Boolean4086* **Тип**: Boolean

4084 * `true`: Claude Code ускоряет скорость прокрутки колеса мыши во время быстрой прокрутки4087 * `true`: Claude Code ускоряет скорость прокрутки колеса мыши во время быстрой прокрутки

4085 * `false`: Claude Code прокручивает с постоянной скоростью на каждый щелчок колеса4088 * `false`: Claude Code прокручивается с постоянной скоростью на каждую выемку колеса

4086* **По умолчанию**: `true`4089* **По умолчанию**: `true`

4087 4090 

4088```json settings.json theme={null}4091```json settings.json theme={null}


4305Когда вы устанавливаете это значение в `true`, Claude Code изменяет, какие hooks и похожие на hooks команды загружаются:4308Когда вы устанавливаете это значение в `true`, Claude Code изменяет, какие hooks и похожие на hooks команды загружаются:

4306 4309 

4307* **Запускаются управляемые и SDK hooks**: hooks из управляемых параметров и hooks, которые [Agent SDK](/docs/ru/agent-sdk/overview) регистрирует в процессе4310* **Запускаются управляемые и SDK hooks**: hooks из управляемых параметров и hooks, которые [Agent SDK](/docs/ru/agent-sdk/overview) регистрирует в процессе

4308* **Запускаются hooks принудительно включённых плагинов**: hooks из плагинов, которые ваши управляемые параметры принудительно включают через [`enabledPlugins`](#enabledplugins). Claude Code сопоставляет полный ID `plugin@marketplace`, поэтому плагин с тем же именем из другого marketplace остаётся заблокированным. Это позволяет вам распространять проверенные hooks через организационный marketplace, блокируя всё остальное4311* **Запускаются hooks принудительно включённых плагинов**: hooks из плагинов, которые ваши управляемые параметры принудительно включают через [`enabledPlugins`](#enabledplugins). Claude Code сопоставляет полный ID `plugin@marketplace`, поэтому плагин с тем же именем из другого marketplace остаётся заблокированным. Это позволяет вам распространять проверенные hooks через организационный marketplace, блокируя всё остальное. [Mod](/docs/ru/plugins/mods/overview) в таком плагине загружается только когда он [считается вашей организацией](/docs/ru/plugins/mods/admin#install-your-organizations-mods)

4309* **Всё остальное блокируется**: пользовательские, проектные и локальные hooks, hooks из других плагинов и hooks, объявленные в frontmatter агента4312* **Всё остальное блокируется**: пользовательские, проектные и локальные hooks, hooks и mods из других установленных плагинов, и hooks, объявленные в frontmatter агента. [Mods, встроенные в Claude Code](/docs/ru/plugins/mods/overview#mods-built-into-claude-code), продолжают работать. Чтобы блокировать только mods пользователей, установите вместо этого [`allowManagedModsOnly`](/docs/ru/plugins/mods/admin#set-options-on-the-built-in-guard).

4310* **Плагины с источником команды отключены**: Claude Code также отключает плагины с [источником `command`](/docs/ru/plugins/marketplace-reference#command-plugin-source), включая плагины, принудительно включённые в управляемых `enabledPlugins`, если вы не установите [`disableCommandPluginSources`](#disablecommandpluginsources) явно в `false`4313* **Плагины с источником команды отключены**: Claude Code также отключает плагины с [источником `command`](/docs/ru/plugins/marketplace-reference#command-plugin-source), включая плагины, принудительно включённые в управляемых `enabledPlugins`, если вы не установите [`disableCommandPluginSources`](#disablecommandpluginsources) явно в `false`

4311* **Команды marketplace `headersHelper` блокируются**: Claude Code также блокирует команды marketplace [`headersHelper`](/docs/ru/plugins/host-marketplace#authenticate-archive-downloads), если [`disableCommandPluginSources`](#disablecommandpluginsources) явно не установлен в `false`, за исключением marketplace, который сами управляемые параметры объявляют. Требуется Claude Code v2.1.238 или позже4314* **Команды marketplace `headersHelper` блокируются**: Claude Code также блокирует команды marketplace [`headersHelper`](/docs/ru/plugins/host-marketplace#authenticate-archive-downloads), если [`disableCommandPluginSources`](#disablecommandpluginsources) явно не установлен в `false`, за исключением marketplace, который сами управляемые параметры объявляют. Требуется Claude Code v2.1.238 или позже

4312* **Строка состояния и предложение файла сужаются до управляемых параметров**: Claude Code читает [`statusLine`](/docs/ru/statusline), [`fileSuggestion`](#filesuggestion) и [`subagentStatusLine`](/docs/ru/statusline#subagent-status-lines) только из управляемых параметров, следуя [шлюзам строки состояния и предложения файла](#status-line-and-file-suggestion-gates)4315* **Строка состояния и предложение файла сужаются до управляемых параметров**: Claude Code читает [`statusLine`](/docs/ru/statusline), [`fileSuggestion`](#filesuggestion) и [`subagentStatusLine`](/docs/ru/statusline#subagent-status-lines) только из управляемых параметров, следуя [шлюзам строки состояния и предложения файла](#status-line-and-file-suggestion-gates)


5046* **`git`**: любой git URL, с `url`5049* **`git`**: любой git URL, с `url`

5047* **`url`**: прямой URL к файлу `marketplace.json`, с `url` и необязательными `headers` и `headersHelper` для аутентифицированного доступа. `headersHelper` называет команду, которая печатает заголовки, чьи значения слишком недолговечны для перечисления в `headers`, и требует Claude Code v2.1.238 или позже5050* **`url`**: прямой URL к файлу `marketplace.json`, с `url` и необязательными `headers` и `headersHelper` для аутентифицированного доступа. `headersHelper` называет команду, которая печатает заголовки, чьи значения слишком недолговечны для перечисления в `headers`, и требует Claude Code v2.1.238 или позже

5048* **`file`**: локальный путь к файлу `marketplace.json`, с `path`5051* **`file`**: локальный путь к файлу `marketplace.json`, с `path`

5049* **`directory`**: локальный путь файловой системы, с `path`, только для разработки5052* **`directory`**: локальный путь файловой системы, с `path`. Используйте его для разработки или для маркетплейса, который ваша организация [развёртывает на каждой машине](/docs/ru/plugins/mods/admin#install-your-organizations-mods).

5050* **`settings`**: встроенный маркетплейс, объявленный непосредственно в файле параметров без размещённого репозитория, с `name` и `plugins`5053* **`settings`**: встроенный маркетплейс, объявленный непосредственно в файле параметров без размещённого репозитория, с `name` и `plugins`

5051 5054 

5052Тип источника `git` работает с любым сервисом размещения git, включая самостоятельно размещённые GitLab и Bitbucket. Claude Code клонирует репозиторий с той же аутентификацией, которую использовал бы `git clone` на этой машине: настроенные помощники учётных данных или ключи SSH. Токен поставщика, такой как `GITHUB_TOKEN`, вступает в силу через помощника учётных данных, который его читает. См. [Приватные репозитории](/docs/ru/plugins/host-marketplace#grant-access-to-a-private-marketplace) для деталей настройки.5055Тип источника `git` работает с любым сервисом размещения git, включая самостоятельно размещённые GitLab и Bitbucket. Claude Code клонирует репозиторий с той же аутентификацией, которую использовал бы `git clone` на этой машине: настроенные помощники учётных данных или ключи SSH. Токен поставщика, такой как `GITHUB_TOKEN`, вступает в силу через помощника учётных данных, который его читает. См. [Приватные репозитории](/docs/ru/plugins/host-marketplace#grant-access-to-a-private-marketplace) для деталей настройки.


5133 5136 

5134Claude Code игнорирует записи проекта и локальные, потому что он подставляет эти значения в конфигурации hook, MCP и LSP плагина, и клонированный репозиторий не должен быть в состоянии их предоставить. До v2.1.207, параметры проекта и локальные также читались.5137Claude Code игнорирует записи проекта и локальные, потому что он подставляет эти значения в конфигурации hook, MCP и LSP плагина, и клонированный репозиторий не должен быть в состоянии их предоставить. До v2.1.207, параметры проекта и локальные также читались.

5135 5138 

5139<h3 id="prependplugins">

5140 `prependPlugins`

5141</h3>

5142 

5143Перечислите управляемые плагины, чьи [mods](/docs/ru/plugins/mods/overview) запускаются перед каждым mod, который устанавливает пользователь, в указанном порядке. Когда вы установите этот ключ в управляемых параметрах, назовите `sec-default@builtin` в списке, чтобы сохранить встроенную защиту. В управляемых параметрах Claude Code пропускает id, чей плагин не считается вашей организацией. См. [Установите mods вашей организации и установите порядок](/docs/ru/plugins/mods/admin#install-your-organizations-mods) для этих условий и для того, как два ключа упорядочения работают вместе.

5144 

5145* **Scope**: [`User or managed`](#scopes). Claude Code читает ключ из управляемых параметров. Он читает ключ из пользовательских параметров только на машине без управляемых параметров, для пользователя, который не вошёл с планом Team или Enterprise. Он игнорирует ключ в параметрах проекта и локальных и в файле `--settings`.

5146* **Type**: массив строк `plugin-name@marketplace-name`

5147* **Default**: не установлено

5148 

5149```json managed-settings.json theme={null}

5150{

5151 "extraKnownMarketplaces": {

5152 "acme-tools": {

5153 "source": { "source": "directory", "path": "/opt/acme/claude-plugins" }

5154 }

5155 },

5156 "enabledPlugins": { "acme-guard@acme-tools": true },

5157 "prependPlugins": ["acme-guard@acme-tools", "sec-default@builtin"]

5158}

5159```

5160 

5161<h3 id="appendplugins">

5162 `appendPlugins`

5163</h3>

5164 

5165Перечислите управляемые плагины, чьи [mods](/docs/ru/plugins/mods/overview) запускаются после каждого mod, который устанавливает пользователь, в указанном порядке. Id, перечисленный в обоих `prependPlugins` и `appendPlugins`, добавляется в начало. В управляемых параметрах Claude Code пропускает id, чей плагин не [считается вашей организацией](/docs/ru/plugins/mods/admin#install-your-organizations-mods).

5166 

5167* **Scope**: [`User or managed`](#scopes). Claude Code читает ключ из управляемых параметров. Он читает ключ из пользовательских параметров только на машине без управляемых параметров, для пользователя, который не вошёл с планом Team или Enterprise. Он игнорирует ключ в параметрах проекта и локальных и в файле `--settings`.

5168* **Type**: массив строк `plugin-name@marketplace-name`

5169* **Default**: не установлено

5170 

5171```json managed-settings.json theme={null}

5172{

5173 "extraKnownMarketplaces": {

5174 "acme-tools": {

5175 "source": { "source": "directory", "path": "/opt/acme/claude-plugins" }

5176 }

5177 },

5178 "enabledPlugins": { "acme-audit@acme-tools": true },

5179 "appendPlugins": ["acme-audit@acme-tools"]

5180}

5181```

5182 

5136<h2 id="mcp">5183<h2 id="mcp">

5137 MCP5184 MCP

5138</h2>5185</h2>


5653 5700 

5654* **Scope**: [`Any file`](#scopes)5701* **Scope**: [`Any file`](#scopes)

5655* **Type**: Boolean5702* **Type**: Boolean

5656 * `true`: Claude Code отключает инструмент Artifact для каждого сеанса, к которому применяется файл, и ни один другой файл не включает его обратно. До версии 2.1.242 файл с более высоким приоритетом мог переопределить `true` файла с более низким приоритетом, вместо того чтобы ключ действовал как блокировка5703 * `true`: Claude Code отключает инструмент Artifact для каждого сеанса, к которому применяется файл, и ни один другой файл не включает его обратно

5657 * `false`: игнорируется; чтобы оставить инструмент включённым, удалите ключ5704 * `false`: игнорируется; чтобы оставить инструмент включённым, удалите ключ

5658* **Default**: не установлено, поэтому инструмент следует [доступности](/docs/ru/artifacts#availability) вашей учётной записи5705* **Default**: не установлено, поэтому инструмент следует [доступности](/docs/ru/artifacts#availability) вашей учётной записи

5659* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_ARTIFACT`](/docs/ru/env-vars) установленный на `1` отключает инструмент для одного сеанса5706* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_ARTIFACT`](/docs/ru/env-vars) установленный на `1` отключает инструмент для одного сеанса


5740}5787}

5741```5788```

5742 5789 

5743Пока источник, отличный от ваших собственных пользовательских настроек, держит инструмент отключённым, Claude Code скрывает строку **Artifacts** в `/config`, потому что включение её там не изменит ничего. [Disable artifacts](/docs/ru/artifacts#disable-artifacts) перечисляет все способы отключения инструмента. До версии 2.1.242 Claude Code игнорировал этот ключ в проектных и локальных настройках, и файл выше в [стеке приоритета](/docs/ru/settings#settings-precedence) мог включить инструмент обратно над отключением файла ниже.5790Пока источник, отличный от ваших собственных пользовательских настроек, держит инструмент отключённым, Claude Code скрывает строку **Artifacts** в `/config`, потому что включение её там не изменит ничего. [Disable artifacts](/docs/ru/artifacts#disable-artifacts) перечисляет все способы отключения инструмента.

5744 5791 

5745<h3 id="inputneedednotifenabled">5792<h3 id="inputneedednotifenabled">

5746 `inputNeededNotifEnabled`5793 `inputNeededNotifEnabled`


5879 5926 

5880Предоставляйте учетные данные через вспомогательные скрипты и, для организаций, принудительно установите метод входа или организацию. См. [Аутентификация](/docs/ru/authentication).5927Предоставляйте учетные данные через вспомогательные скрипты и, для организаций, принудительно установите метод входа или организацию. См. [Аутентификация](/docs/ru/authentication).

5881 5928 

5929<h3 id="allowedproviders">

5930 `allowedProviders`

5931</h3>

5932 

5933Перечислите сервисы, через которые машина может обращаться к Claude, такие как Anthropic API, Amazon Bedrock или LLM gateway. Сеанс на поставщике, который не указан в списке, отклоняется при запуске, при входе и когда он в следующий раз обращается к API, поэтому переключение на неуказанного поставщика во время сеанса также отклоняется. [Сообщение об отказе](/docs/ru/errors#managed-settings-dont-allow-this-api-provider) указывает, что выбрало поставщика и какие шаги предпринять для продолжения. Требуется Claude Code v2.1.285 или позже.

5934 

5935* **Scope**: [`Managed`](#scopes). Список, который устанавливают собственные источники администратора машины, политики MDM и файлы управляемых параметров, продолжает применяться, когда управляемые сервером параметры также предоставляют один: сеанс может затем использовать только поставщиков из обоих списков, поэтому управляемый сервером список может сузить то, что разрешает машина, но никогда не расширить это. Какой источник машины `allowedProviders` считается, следует [как Claude Code объединяет управляемые источники](/docs/ru/managed-settings#how-claude-code-combines-managed-sources). Список, доставленный только через управляемые сервером параметры, достигает только сеансов, которые [получают управляемые сервером параметры](/docs/ru/server-managed-settings#platform-availability).

5936* **Type**: array of strings, each one of:

5937 * `"anthropic"`: Anthropic API на собственном хосте Anthropic, через вход claude.ai или Console или API ключ. Объедините это с [`forceLoginMethod`](#forceloginmethod) или [`forceLoginOrgUUID`](#forceloginorguuid) чтобы также ограничить вход

5938 * `"bedrock"`: [Amazon Bedrock](/docs/ru/amazon-bedrock)

5939 * `"vertex"`: [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai), ранее Vertex AI

5940 * `"foundry"`: [Microsoft Foundry](/docs/ru/microsoft-foundry)

5941 * `"anthropicAws"`: [Claude Platform on AWS](/docs/ru/claude-platform-on-aws)

5942 * `"mantle"`: конечная точка Amazon Bedrock [Mantle](/docs/ru/amazon-bedrock#use-the-mantle-endpoint). Сеанс, который [запускает Mantle вместе с Invoke API](/docs/ru/amazon-bedrock#run-mantle-alongside-the-invoke-api), использует обоих поставщиков, поэтому перечислите `"bedrock"` и `"mantle"` вместе для него

5943 * `"customEndpoint"`: Anthropic API или API облачного поставщика, отправленные на другой хост, такой как [LLM gateway](/docs/ru/llm-gateway), названный `ANTHROPIC_BASE_URL`, переменная `ANTHROPIC_*_BASE_URL` поставщика или значение `ANTHROPIC_FOUNDRY_RESOURCE`, которое не является простым именем ресурса. Claude Code допускает это только для точного значения, которое управляемый блок [`env`](#env) закрепляет

5944 * `"gateway"`: вход [Cloud gateway](/docs/ru/claude-apps-gateway)

5945* **Default**: unset, so any provider can be used

5946 

5947```json managed-settings.json theme={null}

5948{

5949 "allowedProviders": ["anthropic", "bedrock"]

5950}

5951```

5952 

5953Запись каждого облачного поставщика означает собственный сервис этого поставщика, включая его региональные, FIPS и приватные конечные точки.

5954 

5955Запись, которую Claude Code не распознает как имя поставщика, удаляется и сообщается, а остальная часть списка остается в силе. С пустым списком или списком, каждая запись которого не распознана, Claude Code отклоняет каждого поставщика и не запускается на машине.

5956 

5957<h4 id="endpoints-that-need-a-pin-in-managed-env">

5958 Конечные точки, которым нужен pin в управляемом `env`

5959</h4>

5960 

5961Pin — это значение переменной конечной точки, установленное в управляемом блоке [`env`](#env). Когда сеанс отправляет трафик поставщика куда-то, кроме собственного сервиса этого поставщика, Claude Code допускает это только если значение сеанса совпадает с pin. Эти конечные точки нуждаются в одном:

5962 

5963* **`"customEndpoint"` сеансы**: переменная, которая называет хост, такая как `ANTHROPIC_BASE_URL`

5964* **Amazon Bedrock**: переменные AWS SDK `AWS_ENDPOINT_URL`, `AWS_ENDPOINT_URL_BEDROCK` и `AWS_ENDPOINT_URL_BEDROCK_RUNTIME` когда они указывают вне собственного сервиса Bedrock. Сеанс остается под `"bedrock"` вместо `"customEndpoint"`

5965* **URL входа шлюза**: сеанс остается под `"gateway"`, и [`forceLoginGatewayUrl`](#forcelogingatewayurl) также считается pin

5966 

5967Какие блоки `env` считаются pin, зависит от того, где установлен список:

5968 

5969* **Источник администратора на машине устанавливает список**: только блоки `env` собственных источников администратора машины считаются

5970* **Только управляемые сервером параметры устанавливают список**: значение `env` в этих управляемых сервером параметрах также считается

5971 

5972Список не судит переменные учетных данных и арендатора облачного поставщика или сетевой путь, такие как `HTTPS_PROXY` и параметры сертификата. Установите их для флота в управляемом блоке `env`.

5973 

5882<h3 id="apikeyhelper">5974<h3 id="apikeyhelper">

5883 `apiKeyHelper`5975 `apiKeyHelper`

5884</h3>5976</h3>


6401| :- | :- | :- |6493| :- | :- | :- |

6402| Списки | Объединяет записи из каждого источника | [`permissions.allow`](#permissions-allow), [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) и другие ключи списков |6494| Списки | Объединяет записи из каждого источника | [`permissions.allow`](#permissions-allow), [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) и другие ключи списков |

6403| Блокировки | Применяет самое строгое значение, которое устанавливает любой источник. Когда ни один источник не устанавливает строгое значение, применяет более мягкое значение только из источника с наивысшим приоритетом | [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly), [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) и другие логические или перечисляемые блокировки |6495| Блокировки | Применяет самое строгое значение, которое устанавливает любой источник. Когда ни один источник не устанавливает строгое значение, применяет более мягкое значение только из источника с наивысшим приоритетом | [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly), [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) и другие логические или перечисляемые блокировки |

6404| Списки ограничений | Берет список целиком из источника с наивысшим приоритетом, который его устанавливает, без добавления записей из более низких источников. Когда источник с наивысшим приоритетом его не устанавливает, берет его целиком из следующего источника вниз | [`availableModels`](#availablemodels), [`allowedMcpServers`](#allowedmcpservers), [`strictKnownMarketplaces`](#strictknownmarketplaces), [`allowedChannelPlugins`](#allowedchannelplugins) и цепь [`fallbackModel`](#fallbackmodel) |6496| Списки ограничений | Берет список целиком из источника с наивысшим приоритетом, который его устанавливает, без добавления записей из более низких источников. Когда источник с наивысшим приоритетом его не устанавливает, берет его целиком из следующего источника вниз | [`availableModels`](#availablemodels), [`allowedMcpServers`](#allowedmcpservers), [`allowedProviders`](#allowedproviders), [`strictKnownMarketplaces`](#strictknownmarketplaces), [`allowedChannelPlugins`](#allowedchannelplugins) и цепь [`fallbackModel`](#fallbackmodel) |

6405| Значения, взятые целиком | Берет значение целиком из источника с наивысшим приоритетом, который его устанавливает, без объединения записей или полей из более низких источников. Когда источник с наивысшим приоритетом его не устанавливает, берет его целиком из следующего источника вниз | [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs), [`sandbox.ripgrep`](#sandbox-ripgrep) |6497| Значения, взятые целиком | Берет значение целиком из источника с наивысшим приоритетом, который его устанавливает, без объединения записей или полей из более низких источников. Когда источник с наивысшим приоритетом его не устанавливает, берет его целиком из следующего источника вниз | [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs), [`sandbox.ripgrep`](#sandbox-ripgrep) |

6406| Предоставленные MCP серверы | Объединяет имена серверов из каждого источника. Когда два источника устанавливают одно имя, применяет всю запись источника с более высоким приоритетом | [`managedMcpServers`](#managedmcpservers) |6498| Предоставленные MCP серверы | Объединяет имена серверов из каждого источника. Когда два источника устанавливают одно имя, применяет всю запись источника с более высоким приоритетом | [`managedMcpServers`](#managedmcpservers) |

6407| Читается только из источника с наивысшим приоритетом | Читает ключ только из источника с наивысшим приоритетом, который содержит ключ политики, поэтому значение более низкого источника игнорируется даже когда источник с наивысшим приоритетом его не устанавливает | [`apiKeyHelper`](#apikeyhelper), [`awsAuthRefresh`](#awsauthrefresh), [`awsCredentialExport`](#awscredentialexport), [`gcpAuthRefresh`](#gcpauthrefresh), [`otelHeadersHelper`](#otelheadershelper), `proxyAuthHelper`, [`forceLoginOrgUUID`](#forceloginorguuid), значения `"claudeai"` и `"console"` [`forceLoginMethod`](#forceloginmethod), [`parentSettingsBehavior`](#parentsettingsbehavior), [`modelPicker`](#modelpicker), [`policyHelper`](#policyhelper), [`permissions.defaultMode`](#permissions-defaultmode) |6499| Читается только из источника с наивысшим приоритетом | Читает ключ только из источника с наивысшим приоритетом, который содержит ключ политики, поэтому значение более низкого источника игнорируется даже когда источник с наивысшим приоритетом его не устанавливает | [`apiKeyHelper`](#apikeyhelper), [`awsAuthRefresh`](#awsauthrefresh), [`awsCredentialExport`](#awscredentialexport), [`gcpAuthRefresh`](#gcpauthrefresh), [`otelHeadersHelper`](#otelheadershelper), `proxyAuthHelper`, [`forceLoginOrgUUID`](#forceloginorguuid), значения `"claudeai"` и `"console"` [`forceLoginMethod`](#forceloginmethod), [`parentSettingsBehavior`](#parentsettingsbehavior), [`modelPicker`](#modelpicker), [`policyHelper`](#policyhelper), [`permissions.defaultMode`](#permissions-defaultmode) |


6415* **[`policyHelper`](#policyhelper)**: Claude Code соблюдает это только когда источник с наивысшим приоритетом, который содержит ключ политики, является политикой MDM или файлом управляемых параметров, поэтому при управляемых параметрах сервера это не применяется.6507* **[`policyHelper`](#policyhelper)**: Claude Code соблюдает это только когда источник с наивысшим приоритетом, который содержит ключ политики, является политикой MDM или файлом управляемых параметров, поэтому при управляемых параметрах сервера это не применяется.

6416* **[`modelOverrides`](#modeloverrides)**: связан с `availableModels`. Claude Code берет `modelOverrides` из источника с наивысшим приоритетом, который его устанавливает, если только более высокий источник не устанавливает `availableModels` без `modelOverrides`. В этом случае он игнорирует `modelOverrides` из каждого источника.6508* **[`modelOverrides`](#modeloverrides)**: связан с `availableModels`. Claude Code берет `modelOverrides` из источника с наивысшим приоритетом, который его устанавливает, если только более высокий источник не устанавливает `availableModels` без `modelOverrides`. В этом случае он игнорирует `modelOverrides` из каждого источника.

6417* **[`forceLoginGatewayUrl`](#forcelogingatewayurl), [`gatewayInternalNetworks`](#gatewayinternalnetworks) и значение `"gateway"` [`forceLoginMethod`](#forceloginmethod)**: Claude Code никогда не читает ни один из них из управляемых параметров сервера, поэтому значение там ни не применяется, ни не скрывает значение, установленное в политике MDM или файле управляемых параметров. Среди источников администратора на машине только источник с наивысшим рангом, который содержит ключ политики, поставляет их, независимо от того, присутствуют ли также управляемые параметры сервера.6509* **[`forceLoginGatewayUrl`](#forcelogingatewayurl), [`gatewayInternalNetworks`](#gatewayinternalnetworks) и значение `"gateway"` [`forceLoginMethod`](#forceloginmethod)**: Claude Code никогда не читает ни один из них из управляемых параметров сервера, поэтому значение там ни не применяется, ни не скрывает значение, установленное в политике MDM или файле управляемых параметров. Среди источников администратора на машине только источник с наивысшим рангом, который содержит ключ политики, поставляет их, независимо от того, присутствуют ли также управляемые параметры сервера.

6510* **[`allowedProviders`](#allowedproviders)**: после правила таблицы, список машины все еще ограничивает результат, как указано в примечании Scope записи.

6418 6511 

6419Чтобы подтвердить, какие источники объединены на машине, запустите `/status` и [прочитайте строку `Setting sources`](/docs/ru/managed-settings#read-the-source-in-/status).6512Чтобы подтвердить, какие источники объединены на машине, запустите `/status` и [прочитайте строку `Setting sources`](/docs/ru/managed-settings#read-the-source-in-/status).

6420 6513 

skills.md +1 −1

Details

740 740 

741* **Рабочий каталог**: Claude Code запускает каждую команду в текущем рабочем каталоге оболочки сеанса. Этот каталог перемещается, когда Claude запускает `cd`. Используйте [`${CLAUDE_SKILL_DIR}` или `${CLAUDE_PROJECT_DIR}`](#available-string-substitutions) в путях, которые должны разрешаться одинаково каждый раз.741* **Рабочий каталог**: Claude Code запускает каждую команду в текущем рабочем каталоге оболочки сеанса. Этот каталог перемещается, когда Claude запускает `cd`. Используйте [`${CLAUDE_SKILL_DIR}` или `${CLAUDE_PROJECT_DIR}`](#available-string-substitutions) в путях, которые должны разрешаться одинаково каждый раз.

742* **stderr**: с оболочкой `bash` по умолчанию Claude Code объединяет stderr в stdout. Все, что команда записывает в stderr, появляется во внедренном тексте.742* **stderr**: с оболочкой `bash` по умолчанию Claude Code объединяет stderr в stdout. Все, что команда записывает в stderr, появляется во внедренном тексте.

743* **Тайм-аут**: каждая команда запускается под тайм-аутом по умолчанию инструмента Bash в 2 минуты [timeout](/docs/ru/tools-reference#timeout-and-output-limits). Когда инструмент Bash [перемещает команду с истекшим тайм-аутом в фоновый режим](/docs/ru/tools-reference#background-commands), навык все еще отображается. Внедренный текст сообщает о перемещении и называет фоновую задачу и файл, собирающий вывод команды. Когда команда — это та, которую инструмент Bash никогда не переводит в фоновый режим автоматически, Claude Code убивает ее при тайм-ауте. Этот отказ [прерывает вызов](#when-an-injected-command-fails).743* **Тайм-аут**: каждая команда запускается под тайм-аутом по умолчанию инструмента Bash в 2 минуты [timeout](/docs/ru/tools-reference#timeout-and-output-limits). Когда инструмент Bash [перемещает команду с истекшим тайм-аутом в фоновый режим](/docs/ru/tools-reference#foreground-commands-that-move-to-the-background), навык все еще отображается. Внедренный текст сообщает о перемещении и называет фоновую задачу и файл, собирающий вывод команды. Когда команда — это та, которую инструмент Bash никогда не переводит в фоновый режим автоматически, Claude Code убивает ее при тайм-ауте. Этот отказ [прерывает вызов](#when-an-injected-command-fails).

744* **Размер вывода**: вывод, превышающий встроенный потолок инструмента Bash, поступает как путь к файлу плюс краткий предпросмотр, а не усеченный текст. [Output limits](/docs/ru/tools-reference#output-limits) охватывает потолок и способы регулировки каждой границы.744* **Размер вывода**: вывод, превышающий встроенный потолок инструмента Bash, поступает как путь к файлу плюс краткий предпросмотр, а не усеченный текст. [Output limits](/docs/ru/tools-reference#output-limits) охватывает потолок и способы регулировки каждой границы.

745 745 

746Инструмент PowerShell применяет то же поведение тайм-аута, фонового режима и потолка вывода к командам, которые он запускает. Подробности см. в разделе [инструмент PowerShell](/docs/ru/tools-reference#powershell-tool).746Инструмент PowerShell применяет то же поведение тайм-аута, фонового режима и потолка вывода к командам, которые он запускает. Подробности см. в разделе [инструмент PowerShell](/docs/ru/tools-reference#powershell-tool).

statusline.md +7 −7

Details

20Вот пример [многострочной строки состояния](#display-multiple-lines), которая отображает информацию git в первой строке и цветовую полосу контекста во второй.20Вот пример [многострочной строки состояния](#display-multiple-lines), которая отображает информацию git в первой строке и цветовую полосу контекста во второй.

21 21 

22<Frame>22<Frame>

23 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-multiline.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=60f11387658acc9ff75158ae85f2ac87" alt="Многострочная строка состояния, показывающая имя модели, каталог, ветку git в первой строке и полосу прогресса использования контекста с затратами и продолжительностью во второй строке" width="776" height="212" data-path="images/statusline-multiline.png" />23 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-multiline.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=a9d0a2fe8e446d80b1abc46da3f93270" alt="Многострочная строка состояния, показывающая имя модели, каталог, ветку git в первой строке и полосу прогресса использования контекста с затратами и продолжительностью во второй строке" width="1224" height="262" data-path="images/statusline-multiline.png" />

24</Frame>24</Frame>

25 25 

26На этой странице описано [настройка базовой строки состояния](#set-up-a-status-line), объясняется [как данные передаются](#how-status-lines-work) из Claude Code в ваш скрипт, перечисляются [все поля, которые вы можете отображать](#available-data), и предоставляются [готовые примеры](#examples) для распространённых паттернов, таких как статус git, отслеживание затрат и полосы прогресса.26На этой странице описано [настройка базовой строки состояния](#set-up-a-status-line), объясняется [как данные передаются](#how-status-lines-work) из Claude Code в ваш скрипт, перечисляются [все поля, которые вы можете отображать](#available-data), и предоставляются [готовые примеры](#examples) для распространённых паттернов, таких как статус git, отслеживание затрат и полосы прогресса.


93Эти примеры используют скрипты Bash, которые работают на macOS и Linux. На Windows см. [Конфигурация Windows](#windows-configuration) для примеров PowerShell и Git Bash.93Эти примеры используют скрипты Bash, которые работают на macOS и Linux. На Windows см. [Конфигурация Windows](#windows-configuration) для примеров PowerShell и Git Bash.

94 94 

95<Frame>95<Frame>

96 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-quickstart.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=696445e59ca0059213250651ad23db6b" alt="Строка состояния, показывающая имя модели, каталог и процент контекста" width="726" height="164" data-path="images/statusline-quickstart.png" />96 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-quickstart.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=88a7eab9c1038dd098ee8e284d96b7e6" alt="Строка состояния, показывающая имя модели, каталог и процент контекста" width="1224" height="224" data-path="images/statusline-quickstart.png" />

97</Frame>97</Frame>

98 98 

99<Steps>99<Steps>


444Отобразите текущую модель и использование контекстного окна с визуальной полосой прогресса. Каждый скрипт читает JSON из stdin, извлекает поле `used_percentage` и строит 10-символьную полосу, где заполненные блоки (▓) представляют использование:444Отобразите текущую модель и использование контекстного окна с визуальной полосой прогресса. Каждый скрипт читает JSON из stdin, извлекает поле `used_percentage` и строит 10-символьную полосу, где заполненные блоки (▓) представляют использование:

445 445 

446<Frame>446<Frame>

447 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-context-window-usage.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=15b58ab3602f036939145dde3165c6f7" alt="Строка состояния, показывающая имя модели и полосу прогресса с процентом" width="448" height="152" data-path="images/statusline-context-window-usage.png" />447 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-context-window-usage.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=f3918a549912dc47e90f2b69e68bc847" alt="Строка состояния, показывающая имя модели и полосу прогресса с процентом" width="1224" height="224" data-path="images/statusline-context-window-usage.png" />

448</Frame>448</Frame>

449 449 

450<CodeGroup>450<CodeGroup>


513Показывает ветку git с цветовыми индикаторами для подготовленных и изменённых файлов. Этот скрипт использует [коды экранирования ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) для цветов терминала: `\033[32m` — зелёный, `\033[33m` — жёлтый и `\033[0m` — сброс на значение по умолчанию.513Показывает ветку git с цветовыми индикаторами для подготовленных и изменённых файлов. Этот скрипт использует [коды экранирования ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) для цветов терминала: `\033[32m` — зелёный, `\033[33m` — жёлтый и `\033[0m` — сброс на значение по умолчанию.

514 514 

515<Frame>515<Frame>

516 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-git-context.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=e656f34f90d1d9a1d0e220988914345f" alt="Строка состояния, показывающая модель, каталог, ветку git и цветные индикаторы для подготовленных и изменённых файлов" width="742" height="178" data-path="images/statusline-git-context.png" />516 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-git-context.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=f13c190724d9ec7188c17cd2f98b7bf4" alt="Строка состояния, показывающая модель, каталог, ветку git и цветные индикаторы для подготовленных и изменённых файлов" width="1224" height="224" data-path="images/statusline-git-context.png" />

517</Frame>517</Frame>

518 518 

519Каждый скрипт проверяет, является ли текущий каталог репозиторием git, подсчитывает подготовленные и изменённые файлы и отображает цветные индикаторы:519Каждый скрипт проверяет, является ли текущий каталог репозиторием git, подсчитывает подготовленные и изменённые файлы и отображает цветные индикаторы:


611Каждый скрипт форматирует стоимость как валюту и преобразует миллисекунды в минуты и секунды:611Каждый скрипт форматирует стоимость как валюту и преобразует миллисекунды в минуты и секунды:

612 612 

613<Frame>613<Frame>

614 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-cost-tracking.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=e3444a51fe6f3440c134bd5f1f08ad29" alt="Строка состояния, показывающая имя модели, стоимость сеанса и продолжительность" width="588" height="180" data-path="images/statusline-cost-tracking.png" />614 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-cost-tracking.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=925f7024c3b38be0f0eca63564bfb52f" alt="Строка состояния, показывающая имя модели, стоимость сеанса и продолжительность" width="1224" height="224" data-path="images/statusline-cost-tracking.png" />

615</Frame>615</Frame>

616 616 

617<CodeGroup>617<CodeGroup>


672Ваш скрипт может выводить несколько строк для создания более богатого отображения.672Ваш скрипт может выводить несколько строк для создания более богатого отображения.

673 673 

674<Frame>674<Frame>

675 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-multiline.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=60f11387658acc9ff75158ae85f2ac87" alt="Многострочная строка состояния, показывающая имя модели, каталог, ветку git в первой строке и полосу прогресса использования контекста с затратами и продолжительностью во второй строке" width="776" height="212" data-path="images/statusline-multiline.png" />675 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-multiline.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=a9d0a2fe8e446d80b1abc46da3f93270" alt="Многострочная строка состояния, показывающая имя модели, каталог, ветку git в первой строке и полосу прогресса использования контекста с затратами и продолжительностью во второй строке" width="1224" height="262" data-path="images/statusline-multiline.png" />

676</Frame>676</Frame>

677 677 

678Этот пример объединяет несколько методов: цвета на основе порогов (зелёный ниже 70%, жёлтый 70-89%, красный 90%+), полосу прогресса и информацию о ветке git. Каждый оператор `print` или `echo` создаёт отдельную строку:678Этот пример объединяет несколько методов: цвета на основе порогов (зелёный ниже 70%, жёлтый 70-89%, красный 90%+), полосу прогресса и информацию о ветке git. Каждый оператор `print` или `echo` создаёт отдельную строку:


781Этот пример создаёт кликабельную ссылку на ваш репозиторий GitHub. Удерживайте Cmd (macOS) или Ctrl (Windows/Linux) и нажмите, чтобы открыть ссылку в браузере.781Этот пример создаёт кликабельную ссылку на ваш репозиторий GitHub. Удерживайте Cmd (macOS) или Ctrl (Windows/Linux) и нажмите, чтобы открыть ссылку в браузере.

782 782 

783<Frame>783<Frame>

784 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-links.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=4bcc6e7deb7cf52f41ab85a219b52661" alt="Строка состояния, показывающая кликабельную ссылку на репозиторий GitHub" width="726" height="198" data-path="images/statusline-links.png" />784 <img src="https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/statusline-links.png?fit=max&auto=format&n=HDAmBwgbrZVk0pOt&q=85&s=4778a144a28cb498c99d5fa018bb374a" alt="Строка состояния, показывающая кликабельную ссылку на репозиторий GitHub" width="1224" height="224" data-path="images/statusline-links.png" />

785</Frame>785</Frame>

786 786 

787Каждый скрипт получает URL удалённого репозитория, преобразует формат SSH в HTTPS и оборачивает имя репозитория в коды экранирования OSC 8. Версия Bash использует `printf '%b'`, которая более надёжно интерпретирует экранирующие последовательности, чем `echo -e` в разных оболочках:787Каждый скрипт получает URL удалённого репозитория, преобразует формат SSH в HTTPS и оборачивает имя репозитория в коды экранирования OSC 8. Версия Bash использует `printf '%b'`, которая более надёжно интерпретирует экранирующие последовательности, чем `echo -e` в разных оболочках:

Details

253 253 

254Команды безопасности могут настроить управляемые разрешения для того, что Claude Code может и не может делать, которые не могут быть переопределены локальной конфигурацией. [Узнайте больше](/docs/ru/security).254Команды безопасности могут настроить управляемые разрешения для того, что Claude Code может и не может делать, которые не могут быть переопределены локальной конфигурацией. [Узнайте больше](/docs/ru/security).

255 255 

256Чтобы ограничить, какие из этих вариантов развертывания может использовать управляемая машина, установите [`allowedProviders`](/docs/ru/settings-reference#allowedproviders) в управляемых параметрах. Например, `["bedrock"]` разрешает Amazon Bedrock и ничего больше; флот Bedrock, который также включает конечную точку Mantle, также указывает `"mantle"`. Запись указывает, какие переменные конечной точки также требуют управляемого закрепления `env`. Требуется Claude Code v2.1.285 или более поздняя версия.

257 

256<h3 id="leverage-mcp-for-integrations">258<h3 id="leverage-mcp-for-integrations">

257 Используйте MCP для интеграций259 Используйте MCP для интеграций

258</h3>260</h3>

tools-reference.md +45 −30

Details

154 Что сохраняется между командами154 Что сохраняется между командами

155</h3>155</h3>

156 156 

157* Когда Claude выполняет `cd` в основной сессии, новый рабочий каталог переносится на последующие команды Bash, пока он остаётся внутри каталога проекта или [дополнительного рабочего каталога](/docs/ru/permissions#working-directories), который вы добавили с помощью `--add-dir`, `/add-dir` или `additionalDirectories` в параметрах. Это включает команды, которые Claude выполняет в ответ на ваши последующие сообщения.157* Когда Claude выполняет `cd` в основной сессии, новый рабочий каталог переносится на более поздние команды Bash, пока он остаётся внутри каталога проекта или [дополнительного рабочего каталога](/docs/ru/permissions#working-directories), который вы добавили с помощью `--add-dir`, `/add-dir` или `additionalDirectories` в параметрах. Это включает команды, которые Claude выполняет в ответ на ваши более поздние сообщения.

158 * Сессии подагентов никогда не переносят изменения рабочего каталога.158 * Сессии подагентов никогда не переносят изменения рабочего каталога.

159 * Если `cd` приводит за пределы этих каталогов, Claude Code сбрасывает на каталог проекта и добавляет `Shell cwd was reset to <dir>` к результату инструмента.159 * Если `cd` приводит за пределы этих каталогов, Claude Code сбрасывает на каталог проекта и добавляет `Shell cwd was reset to <dir>` к результату инструмента.

160 * Чтобы отключить этот перенос, чтобы каждая команда Bash начиналась в каталоге проекта, установите `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.160 * Чтобы отключить этот перенос, чтобы каждая команда Bash начиналась в каталоге проекта, установите `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.

161* Переменные окружения не сохраняются. `export` в одной команде не будет доступен в следующей.161* Переменные окружения не сохраняются. `export` в одной команде не будет доступен в следующей.

162* Псевдонимы и функции оболочки, определённые в файле запуска оболочки, доступны. При запуске сессии Claude Code загружает `~/.zshrc`, `~/.bashrc` или `~/.profile` в зависимости от вашей оболочки, захватывает полученные псевдонимы, функции и параметры оболочки и применяет их к каждой команде Bash.162* Псевдонимы и функции оболочки, определённые в файле запуска оболочки, доступны. При запуске сессии Claude Code загружает `~/.zshrc`, `~/.bashrc` или `~/.profile` в зависимости от вашей оболочки, захватывает полученные псевдонимы, функции и параметры оболочки и применяет их к каждой команде Bash.

163 163 

164Активируйте виртуальное окружение или окружение conda перед запуском Claude Code. Чтобы переменные окружения сохранялись между командами Bash, установите [`CLAUDE_ENV_FILE`](/docs/ru/env-vars) на скрипт оболочки перед запуском Claude Code или используйте [hook SessionStart](/docs/ru/hooks#persist-environment-variables) для его динамического заполнения.164Активируйте вашу virtualenv или conda окружение перед запуском Claude Code. Чтобы переменные окружения сохранялись между командами Bash, установите [`CLAUDE_ENV_FILE`](/docs/ru/env-vars) на скрипт оболочки перед запуском Claude Code или используйте [hook SessionStart](/docs/ru/hooks#persist-environment-variables) для его динамического заполнения.

165 165 

166<h3 id="timeout-and-output-limits">166<h3 id="timeout-and-output-limits">

167 Ограничения по времени и выводу167 Ограничения по времени ожидания и выводу

168</h3>168</h3>

169 169 

170Каждая команда выполняется с ограничением по времени, которым управляет Claude: когда ему требуется больше времени, чем по умолчанию для команды, он передаёт параметр `timeout` с этим вызовом. Вы никогда не устанавливаете ограничение по времени для отдельной команды.170Каждая команда выполняется с ограничением по времени, и Claude управляет им: когда ему требуется больше времени, чем по умолчанию для команды, он передаёт параметр `timeout` с этим вызовом. Вы никогда не устанавливаете ограничение по времени для отдельной команды.

171 171 

172Две [переменные окружения](/docs/ru/env-vars) контролируют, что Claude получает для команды, которая выполняется на переднем плане:172Две [переменные окружения](/docs/ru/env-vars) контролируют, что Claude получает для команды, которая выполняется на переднем плане:

173 173 

174* `BASH_DEFAULT_TIMEOUT_MS` — значение по умолчанию, когда Claude не передаёт timeout; две минуты из коробки174* `BASH_DEFAULT_TIMEOUT_MS` — значение по умолчанию, когда Claude не передаёт ограничение по времени; две минуты из коробки

175* `BASH_MAX_TIMEOUT_MS` — по умолчанию устанавливает потолок, который ограничивает всё, что запрашивает Claude: эффективный потолок — это больший из двух, десять минут из коробки175* `BASH_MAX_TIMEOUT_MS` — по умолчанию устанавливает потолок, который ограничивает всё, что запрашивает Claude: эффективный потолок — это больший из двух, десять минут из коробки

176 176 

177Для команды, которую Claude запускает в фоне, `timeout` вместо этого устанавливает, как долго команда может работать там, с отдельным значением по умолчанию и максимумом, описанным в разделе [Фоновые команды](#background-commands). [Инструмент PowerShell](#powershell-tool) следует тем же правилам timeout и читает те же две переменные.177Для команды, которую Claude запускает в фоновом режиме, `timeout` вместо этого устанавливает, как долго команда может работать там, с отдельным значением по умолчанию и максимумом, описанным в разделе [Ограничение времени для фоновых команд](#time-limit-for-background-commands). Инструмент [PowerShell](#powershell-tool) следует тем же правилам ограничения по времени и читает те же две переменные.

178 178 

179<h4 id="output-limits">179<h4 id="output-limits">

180 Ограничения по выводу180 Ограничения по выводу

181</h4>181</h4>

182 182 

183Claude Code передаёт вывод команды в рабочий файл по мере выполнения команды; команда, вывод которой превышает 5 ГБ, прерывается. Когда команда завершается, Claude Code читает вывод обратно из этого файла, вплоть до окна обратного чтения, описанного ниже. Сколько вывода достигает Claude встроенно, зависит от того, рассматривает ли Claude Code результат как ошибку:183Claude Code передаёт вывод команды в рабочий файл по мере выполнения команды; команда, выход которой превышает 5 ГБ, прерывается. Когда команда завершается, Claude Code читает вывод обратно из этого файла, вплоть до окна обратного чтения, описанного ниже. Сколько вывода достигает Claude встроенно, зависит от того, рассматривает ли Claude Code результат как ошибку:

184 184 

185| Результат | Что получает Claude |185| Результат | Что получает Claude |

186| :- | :- |186| :- | :- |

187| Успешный | Встроенно до примерно 30 000 символов по умолчанию; сверх этого, путь файла, сохранённого в каталог сессии и усечённого сверх 64 МиБ, плюс предпросмотр до первых 2 000 символов, и Claude читает или ищет файл, когда ему нужен остаток |187| Действительный | Встроенно до примерно 30 000 символов по умолчанию; после этого путь файла, сохранённого в каталог сессии и усечённого после 64 МиБ, плюс предпросмотр до первых 2 000 символов, и Claude читает или ищет файл, когда ему нужен остаток |

188| Ошибка | Встроенно до примерно 10 000 символов; сверх этого, выдержка начала и конца этого размера, вырезанная из окна обратного чтения, без пути файла |188| Ошибка | Встроенно до примерно 10 000 символов; после этого выдержка начала и конца этого размера, вырезанная из окна обратного чтения, без пути файла |

189 189 

190Команда, которая выходит с кодом 1, считается успешным результатом для инструмента Bash только когда Claude Code распознаёт код выхода 1 как благоприятный результат для этой команды: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test` и `[`, плюс `git diff` и `git grep`. Каждая другая команда, которая выходит с кодом 1, считается ошибкой, даже когда код выхода 1 — это благоприятный информационный результат: нет совпадений для `pgrep` и `jq -e`, файлы, которые отличаются для `cmp`.190Команда, которая выходит с кодом 1, считается действительным результатом для инструмента Bash только когда Claude Code распознаёт код выхода 1 как благоприятный результат для этой команды: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test` и `[`, плюс `git diff` и `git grep`. Каждая другая команда, которая выходит с кодом 1, считается ошибкой, даже когда код выхода 1 — это благоприятный информационный результат: нет совпадений для `pgrep` и `jq -e`, файлы, которые отличаются для `cmp`.

191 191 

192[`BASH_MAX_OUTPUT_LENGTH`](/docs/ru/env-vars) устанавливает, сколько символов вывода Claude Code читает обратно из рабочего файла в результат команды: 30 000 по умолчанию, вплоть до жёсткого потолка в 150 000. Увеличьте его, когда ваши команды регулярно переполняют это окно, например подробная сборка или полный журнал набора тестов. Увеличение его расширяет окно обратного чтения, которое также является окном, из которого вырезается выдержка команды с ошибкой. Оно не повышает встроенные потолки: успешный результат сверх встроенного потолка поступает как путь файла плюс предпросмотр независимо от этой переменной.192[`BASH_MAX_OUTPUT_LENGTH`](/docs/ru/env-vars) устанавливает, сколько символов вывода Claude Code читает обратно из рабочего файла в результат команды: 30 000 по умолчанию, вплоть до жёсткого потолка в 150 000. Увеличьте его, когда ваши команды регулярно переполняют это окно, например подробная сборка или полный журнал набора тестов. Увеличение его расширяет окно обратного чтения, которое также является окном, из которого вырезается выдержка команды с ошибкой. Это не повышает встроенные потолки: действительный результат выше встроенного потолка поступает как путь файла плюс предпросмотр независимо от этой переменной.

193 193 

194Чтобы изменить, сколько успешного результата Claude получает встроенно, установите параметр [`bashOutputMaxChars`](/docs/ru/settings-reference#bashoutputmaxchars) вместо этого, вплоть до 128 000 символов. Он размеры встроенный потолок и окно обратного чтения вместе, и Claude Code затем игнорирует `BASH_MAX_OUTPUT_LENGTH`. Требует Claude Code v2.1.261 или позже.194Чтобы изменить, сколько действительного результата Claude получает встроенно, установите параметр [`bashOutputMaxChars`](/docs/ru/settings-reference#bashoutputmaxchars) вместо этого, вплоть до 128 000 символов. Он размеры встроенный потолок и окно обратного чтения вместе, и Claude Code затем игнорирует `BASH_MAX_OUTPUT_LENGTH`. Требует Claude Code v2.1.261 или позже.

195 195 

196<h3 id="background-commands">196<h3 id="background-commands">

197 Фоновые команды197 Фоновые команды

198</h3>198</h3>

199 199 

200Для долгоживущих процессов, таких как серверы разработки или сборки с отслеживанием, Claude может установить `run_in_background: true` для запуска команды как фоновой задачи и продолжения работы во время её выполнения. Перечислите и остановите фоновые задачи с помощью `/tasks`. После того как вы остановите одну там или из подключённого клиента, такого как приложение для рабочего стола, Claude продолжает работу вместо ожидания. Если подагент запустил команду, это подагент, который продолжает работу.200Для долгоживущих процессов, таких как серверы разработки или сборки наблюдения, Claude может установить `run_in_background: true` для запуска команды как фоновой задачи и продолжения работы во время её выполнения. Перечислите и остановите фоновые задачи с помощью `/tasks`. После того как вы остановите одну там или из подключённого клиента, такого как настольное приложение, Claude переходит дальше вместо ожидания. Если подагент запустил команду, это подагент, который переходит дальше.

201 201 

202Команда, которую [подагент переднего плана](/docs/ru/sub-agents#run-subagents-in-foreground-or-background) запустил, останавливается, когда запуск этого подагента заканчивается, независимо от того, завершился ли он, произошла ошибка или был прерван. Команда, которую основной разговор или фоновый подагент запустил, продолжает работать после окончательного ответа, пока она не выйдет, не будет остановлена или не достигнет своего временного ограничения. В неинтерактивном режиме с флагом `-p` [фоновые команды заканчиваются вскоре после окончательного результата запуска](/docs/ru/headless#background-tasks-at-exit).202<h4 id="when-a-background-command-stops">

203 Когда фоновая команда останавливается

204</h4>

205 

206Команда, которую запустил [подагент переднего плана](/docs/ru/sub-agents#run-subagents-in-foreground-or-background), останавливается, когда заканчивается запуск этого подагента, независимо от того, завершился ли он, не удался или был прерван. Команда, которую запустили основной разговор или фоновый подагент, продолжает работать после финального ответа, пока она не выйдет, не будет остановлена или не достигнет своего [ограничения по времени](#time-limit-for-background-commands). В неинтерактивном режиме с флагом `-p` [фоновые команды заканчиваются вскоре после финального результата запуска](/docs/ru/headless#background-tasks-at-exit).

207 

208<h4 id="time-limit-for-background-commands">

209 Ограничение времени для фоновых команд

210</h4>

203 211 

204Фоновые команды Bash и PowerShell имеют временное ограничение, отсчитываемое с момента входа команды в фон:212Фоновые команды Bash и PowerShell имеют ограничение по времени, отсчитываемое с момента входа команды в фоновый режим:

205 213 

206* Команда, которую Claude запускает в фоне, получает 30 минут или `timeout`, который Claude передаёт с `run_in_background`, вплоть до максимума в 2 часа214* Команда, которую Claude запускает в фоновом режиме, получает 30 минут или `timeout`, который Claude передаёт с `run_in_background`, вплоть до максимума в 2 часа

207* Команда, которая начинается на переднем плане и затем переходит в фон, например с помощью `Ctrl+B` или при её timeout, получает 30 минут с момента перехода215* Команда, которая начинается на переднем плане и затем переходит в фоновый режим, например с помощью `Ctrl+B` или при её ограничении по времени, получает 30 минут с момента перехода

216 

217Когда фоновая команда достигает своего ограничения по времени, Claude Code останавливает её и сообщает Claude, почему, и Claude может запустить команду снова с более длительным `timeout`, если работа всё ещё нужна. Уведомление об остановке гласит `Background command "<description>" was stopped after reaching its background time limit`.

218 

219<h4 id="raise-the-time-limit-for-background-commands">

220 Повысьте ограничение времени для фоновых команд

221</h4>

208 222 

209Две [переменные окружения](/docs/ru/env-vars) повышают эти ограничения для команд Bash и PowerShell одинаково. Обе принимают миллисекунды, и ни одна не может сократить ограничение: более низкое значение оставляет 30-минутное значение по умолчанию и 2-часовой максимум на месте.223Две [переменные окружения](/docs/ru/env-vars) повышают эти ограничения для команд Bash и PowerShell одинаково. Обе принимают миллисекунды, и ни одна не может сократить ограничение: более низкое значение оставляет 30-минутное значение по умолчанию и 2-часовой максимум на месте.

210 224 

211* Установите `BASH_DEFAULT_TIMEOUT_MS` выше `1800000`, чтобы заменить 30-минутное значение по умолчанию этим значением, как для команд, которые Claude запускает без `timeout`, так и для перемещённых команд225* Установите `BASH_DEFAULT_TIMEOUT_MS` выше `1800000`, чтобы заменить 30-минутное значение по умолчанию этим значением, как для команд, которые Claude запускает без `timeout`, так и для перемещённых команд

212* Установите `BASH_MAX_TIMEOUT_MS` выше `7200000`, чтобы повысить 2-часовой максимум до этого значения. Установка `BASH_DEFAULT_TIMEOUT_MS` выше `7200000` повышает максимум таким же образом226* Установите `BASH_MAX_TIMEOUT_MS` выше `7200000`, чтобы повысить 2-часовой максимум до этого значения. Установка `BASH_DEFAULT_TIMEOUT_MS` выше `7200000` повышает максимум таким же образом

213 227 

214Когда фоновая команда достигает своего временного ограничения, Claude Code останавливает её и сообщает Claude, почему, и Claude может запустить команду снова с более длительным `timeout`, если работа всё ещё нужна. Уведомление об остановке гласит `Background command "<description>" was stopped after reaching its background time limit`.228<h4 id="foreground-commands-that-move-to-the-background">

229 Команды переднего плана, которые переходят в фоновый режим

230</h4>

215 231 

216Когда команда переднего плана достигает своего timeout без завершения, Claude Code перемещает её в фон вместо остановки, если только команда не начинается с `sleep`. Временное ограничение перемещённой команды отсчитывается с момента перемещения, и перемещённая команда подагента переднего плана всё ещё останавливается, когда запуск этого подагента заканчивается.232Когда команда переднего плана достигает своего ограничения по времени без завершения, Claude Code переводит её в фоновый режим вместо остановки, если только команда не начинается с `sleep`. Перемещённая команда имеет [ограничение по времени](#time-limit-for-background-commands), отсчитываемое с момента перемещения, и перемещённая команда подагента переднего плана всё ещё останавливается, когда заканчивается запуск этого подагента.

217 233 

218Установка [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/ru/env-vars#variables) отключает автоматическое перемещение в фон вместе с остальной функциональностью фоновых задач.234Установка [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/ru/env-vars#variables) отключает автоматическое фоновое выполнение вместе с остальной функциональностью фоновых задач.

219 235 

220Результат команды, перемещённой в фон, указывает, что произошло:236Результат команды, перемещённой в фоновый режим, указывает, что произошло:

221 237 

222* Когда timeout запускает перемещение, результат сообщает об этом явно: `Command did not complete within its 120s timeout and was moved to the background`, с секундами, соответствующими применённому timeout, за которым следует ID задачи и путь файла, в который записывается вывод.238* Когда ограничение по времени запускает перемещение, результат сообщает об этом явно: `Command did not complete within its 120s timeout and was moved to the background`, с секундами, соответствующими применённому ограничению по времени, за которым следует ID задачи и путь файла, в который записывается вывод.

223* `cd`, `pushd`, `popd` или `chdir` внутри команды, которая перемещается в фон, никогда не переносится: результат гласит `Session cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.`, поэтому Claude не действует на изменение каталога, которое не произошло.239* `cd`, `pushd`, `popd` или `chdir` внутри команды, которая перемещается в фоновый режим, никогда не переносится: результат гласит `Session cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.`, поэтому Claude не действует на изменение каталога, которое не произошло.

224 240 

225<h3 id="memory-limit-on-linux-and-wsl">241<h3 id="memory-limit-on-linux-and-wsl">

226 Ограничение памяти на Linux и WSL242 Ограничение памяти на Linux и WSL

227</h3>243</h3>

228 244 

229На Linux и WSL установите [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/ru/env-vars#variables) на размер, такой как `4G`, чтобы ограничить память, которую могут использовать команды Bash, PowerShell и [Monitor](#monitor-tool), чтобы одна неконтролируемая сборка не заняла память, которая нужна остальной сессии. Требует Claude Code v2.1.233 или позже. До v2.1.246 команды Monitor работали вне ограничения.245На Linux и WSL установите [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/ru/env-vars#variables) на размер, такой как `4G`, чтобы ограничить память, которую могут использовать команды Bash, PowerShell и инструмента [Monitor](#monitor-tool), чтобы одна неконтролируемая сборка не могла занять память, которая нужна остальной сессии. Требует Claude Code v2.1.233 или позже. До v2.1.246 команды инструмента Monitor выполнялись вне ограничения.

230 246 

231* Напишите размер как количество байтов или с суффиксом `K`, `M`, `G` или `T`. Установите `0`, `off`, `false`, `no` или `none`, чтобы отключить ограничение. Claude Code игнорирует любое другое значение, которое не может прочитать как размер, например `4e9`.247* Напишите размер как количество байтов или с суффиксом `K`, `M`, `G` или `T`. Установите `0`, `off`, `false`, `no` или `none`, чтобы отключить ограничение. Claude Code игнорирует любое другое значение, которое он не может прочитать как размер, например `4e9`.

232* Claude Code считает все команды Bash, PowerShell и Monitor сессии по одному ограничению, а не каждую команду отдельно.248* Claude Code считает все команды Bash, PowerShell и Monitor сессии по одному ограничению, а не каждую команду отдельно.

233* Claude Code применяет ограничение с помощью cgroup памяти. Когда он не может установить cgroup, команды выполняются без ограничения, и журнал отладки из `claude --debug` говорит, почему.249* Claude Code применяет ограничение с помощью cgroup памяти. Когда он не может установить cgroup, команды выполняются без ограничения, и журнал отладки из `claude --debug` говорит, почему.

234* После того как первый процесс, который Claude Code запускает, включил ограничение или отключил его из-за значения off или неудачной установки cgroup, Claude Code удерживает этот результат, пока вы не перезапустите. Чтобы применить изменённое или удалённое значение или исправленную установку, запустите `claude` снова.250* После того как первый процесс, который Claude Code запускает, включил ограничение или отключил его из-за значения off или неудачной установки cgroup, Claude Code удерживает этот результат, пока вы не перезапустите. Чтобы применить изменённое или удалённое значение или исправленную установку, запустите `claude` снова.

235* Когда команды не могут оставаться под ограничением, ядро убивает команду, и ничто в её результате не называет ограничение.251* Когда команды не могут оставаться под ограничением, ядро убивает команду, и ничто в её результате не называет ограничение.

236 252 

237Claude Code также может считать другие виды процессов, которые он запускает, по тому же ограничению. Установите [`CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE`](/docs/ru/env-vars#variables) на список видов, разделённый запятыми, которые нужно исключить из ограничения; Claude Code применяет ограничение к каждому виду, который не в вашем списке. Установите его на `none`, чтобы ограничить каждый вид, или на `all-new`, чтобы ограничить только команды Bash, PowerShell и Monitor. Требует Claude Code v2.1.246 или позже. Виды, которые вы можете назвать:253Claude Code также может считать другие виды процессов, которые он запускает, по тому же ограничению. Установите [`CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE`](/docs/ru/env-vars#variables) на список видов, разделённый запятыми, которые нужно исключить из ограничения; Claude Code применяет ограничение к каждому виду, который не в вашем списке. Установите его на `none`, чтобы ограничить каждый вид, или на `all-new`, чтобы ограничить только команды Bash, PowerShell и Monitor инструмента. Требует Claude Code v2.1.246 или позже. Виды, которые вы можете назвать:

238 254 

239* `mcp`: локальные [серверы MCP](/docs/ru/mcp)255* `mcp`: локальные [серверы MCP](/docs/ru/mcp)

240* `lsp`: [языковые серверы](#lsp-tool-behavior)256* `lsp`: [языковые серверы](#lsp-tool-behavior)


245 261 

246Что бы вы ни указали, применяются эти правила:262Что бы вы ни указали, применяются эти правила:

247 263 

248* **Неизвестные имена**: Claude Code игнорирует имена, которые не распознаёт264* **Неизвестные имена**: Claude Code игнорирует имена, которые он не распознаёт

249* **Bash, PowerShell и Monitor**: Claude Code держит команды Bash, PowerShell и Monitor под ограничением, что бы вы ни указали265* **Переменная не установлена**: Claude Code берёт набор других ограниченных видов из конфигурации, которую Anthropic доставляет с сервера, и этот набор может меняться со временем, поэтому установите переменную, когда вам нужен набор, который не меняется

250* **Переменная не установлена**: Claude Code берёт набор других видов с ограничением из конфигурации, которую Anthropic доставляет с сервера, и этот набор может меняться со временем, поэтому установите переменную, когда вам нужен набор, который не меняется266* **Hooks с ограничением разрешений**: даже со всеми видами ограниченными, Claude Code исключает из ограничения hook, который может заблокировать или изменить результат действия, и любой сервер MCP, который такой hook вызывает, поэтому ядро, убивающее hook с ограничением разрешений, не может разрешить действие, которое он блокировал

251* **Hooks с ограничением разрешений**: даже со всеми видами с ограничением, Claude Code исключает из ограничения hook, который может заблокировать или изменить результат действия, и любой сервер MCP, который такой hook вызывает, поэтому ядро, убивающее hook с ограничением разрешений, не может разрешить действие, которое он блокировал

252 267 

253<h2 id="edit-tool-behavior">268<h2 id="edit-tool-behavior">

254 Поведение инструмента Edit269 Поведение инструмента Edit

ultrareview.md +1 −1

Details

66 66 

67В режиме PR удаленная изолированная среда клонирует запрос на слияние непосредственно с хоста, а не упаковывает ваше локальное рабочее дерево. Режим PR работает с репозиториями на `github.com` и на экземплярах [GitHub Enterprise Server](/docs/ru/github-enterprise-server), которые администратор подключил к Claude Code.67В режиме PR удаленная изолированная среда клонирует запрос на слияние непосредственно с хоста, а не упаковывает ваше локальное рабочее дерево. Режим PR работает с репозиториями на `github.com` и на экземплярах [GitHub Enterprise Server](/docs/ru/github-enterprise-server), которые администратор подключил к Claude Code.

68 68 

69Для репозиториев на `github.com` изолированная среда клонирует с учетной записью GitHub, подключенной к вашей учетной записи Claude, поэтому учетная запись должна иметь возможность читать репозиторий PR. Claude Code проверяет это перед созданием облачной сессии, если вы не установили [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/ru/env-vars#variables), и отказывает в запуске, когда [нет подключенной учетной записи](/docs/ru/errors#no-github-account-is-connected-to-your-claude-account) или [учетная запись не может видеть репозиторий](/docs/ru/errors#your-connected-github-account-cant-see-the-repository); отказ указывает на исправление. До версии 2.1.248 Claude Code не проверял это перед запуском.69Для репозиториев на `github.com` изолированная среда клонирует с учетной записью GitHub, подключенной к вашей учетной записи Claude, поэтому учетная запись должна иметь возможность читать репозиторий PR.

70 70 

71Запустите [`/web-setup`](/docs/ru/web-quickstart#connect-from-your-terminal), чтобы подключить вашу учетную запись GitHub CLI к вашей учетной записи Claude.71Запустите [`/web-setup`](/docs/ru/web-quickstart#connect-from-your-terminal), чтобы подключить вашу учетную запись GitHub CLI к вашей учетной записи Claude.

72 72 

vs-code.md +25 −5

Details

58 58 

59 * **Activity Bar**: нажмите значок Spark на левой боковой панели, чтобы открыть список сеансов. Нажмите на любой сеанс, чтобы открыть его в вашем [предпочитаемом месте](#extension-settings), или начните новый. Этот значок всегда виден на Activity Bar.59 * **Activity Bar**: нажмите значок Spark на левой боковой панели, чтобы открыть список сеансов. Нажмите на любой сеанс, чтобы открыть его в вашем [предпочитаемом месте](#extension-settings), или начните новый. Этот значок всегда виден на Activity Bar.

60 * **Command Palette**: `Cmd+Shift+P` (Mac) или `Ctrl+Shift+P` (Windows/Linux), введите "Claude Code" и выберите опцию, например "Open in New Tab"60 * **Command Palette**: `Cmd+Shift+P` (Mac) или `Ctrl+Shift+P` (Windows/Linux), введите "Claude Code" и выберите опцию, например "Open in New Tab"

61 * **Status Bar**: если вы установили [`preferredLocation`](#extension-settings) на `sidebar` или открыли Claude с помощью **Claude Code: Open in Side Bar**, нажмите **✻ Claude Code** в нижнем правом углу окна. Это работает даже при отсутствии открытого файла.61 * **Status Bar**: нажмите **✻ Claude Code** в нижнем правом углу окна. Это работает даже при отсутствии открытого файла.

62 62 

63 Вы можете перетащить панель Claude в любое место VS Code. Подробнее см. в разделе [Настройка вашего рабочего процесса](#customize-your-workflow).63 Вы можете перетащить панель Claude в любое место VS Code. Подробнее см. в разделе [Настройка вашего рабочего процесса](#customize-your-workflow).

64 </Step>64 </Step>


362 362 

363На вкладке Плагины:363На вкладке Плагины:

364 364 

365* **Установленные плагины** отображаются в верхней части с переключателями для их включения или отключения365* **Установленные плагины** отображаются в верхней части с переключателями для их включения или отключения.

366 * Если вы отключите плагин, который включен в файле `.claude/settings.json` вашего проекта, расширение сначала спросит: **Отключить для меня** отключает его только для вас, а **Отключить для всех** изменяет общий файл.

366* **Доступные плагины** из ваших настроенных маркетплейсов отображаются ниже367* **Доступные плагины** из ваших настроенных маркетплейсов отображаются ниже

367* Используйте поиск для фильтрации плагинов по названию или описанию368* Используйте поиск для фильтрации плагинов по названию или описанию

368* Нажмите **Установить** на любом доступном плагине369* Нажмите **Установить** на любом доступном плагине


373* **Установить для этого проекта**: общее использование с сотрудниками проекта (область проекта)374* **Установить для этого проекта**: общее использование с сотрудниками проекта (область проекта)

374* **Установить локально**: только для вас, только в этом репозитории (локальная область)375* **Установить локально**: только для вас, только в этом репозитории (локальная область)

375 376 

377После завершения установки форма запрашивает любые [параметры конфигурации](/docs/ru/plugins/components#user-configuration) плагина, которые еще не установлены. Чтобы позже просмотреть или изменить параметры, нажмите значок шестеренки в строке плагина.

378 

379Чувствительные текстовые поля скрыты, а сохраненный ранее секрет отображается как **(без изменений)**. Оставьте поле пустым, чтобы сохранить сохраненное значение.

380 

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

382 

383<h3 id="uninstall-plugins">

384 Удаление плагинов

385</h3>

386 

387Каждая установленная строка указывает [область](/docs/ru/plugins/install#choose-an-install-scope), в которой она установлена. Чтобы удалить эту установку, нажмите значок корзины в строке. Затемненный значок корзины отмечает строку, которую вы не можете удалить из этого рабочего пространства, например плагин, которым управляет ваша организация, или плагин, установленный для другого проекта.

388 

389Расширение спрашивает в двух случаях:

390 

391* **Плагин, который включен в файле `.claude/settings.json` вашего проекта**: выберите **Отключить для меня**, что сохраняет плагин установленным для ваших сотрудников, или **Удалить для всех**, что удаляет установку проекта с помощью [`--keep-data`](/docs/ru/plugins/cli-reference#what-an-uninstall-deletes-and-keeps), поэтому сохраненный каталог данных плагина остается. Если вы уже отключили плагин для себя, значок корзины удаляет вашу собственную установку без вопроса.

392* **В противном случае, последняя установка плагина с сохраненными данными**: выберите, сохранить или удалить данные; **Сохранить** — это значение по умолчанию

393 

376<h3 id="share-a-plugin-install-link">394<h3 id="share-a-plugin-install-link">

377 Поделиться ссылкой на установку плагина395 Поделиться ссылкой на установку плагина

378</h3>396</h3>


407 425 

408* Введите репозиторий GitHub, URL или локальный путь для добавления нового маркетплейса426* Введите репозиторий GitHub, URL или локальный путь для добавления нового маркетплейса

409* Нажмите значок обновления, чтобы обновить список плагинов маркетплейса427* Нажмите значок обновления, чтобы обновить список плагинов маркетплейса

410* Нажмите значок корзины, чтобы удалить маркетплейс428* Нажмите значок корзины, чтобы удалить маркетплейс. Его удаление [удаляет все плагины, которые вы установили из него](/docs/ru/plugins/install#manage-marketplaces), поэтому подтверждение сначала называет эти плагины

429 

430Изменения плагинов, которые вы вносите в диалоговом окне, применяются сразу же к сеансам Claude Code, открытым в этом окне VS Code.

411 431 

412Изменения плагинов, которые вы вносите в диалоговом окне, применяются сразу же к сеансам Claude Code, открытым в этом окне VS Code. Если сеанс, из которого вы открыли диалоговое окно, не может перезагрузить свои плагины, диалоговое окно предлагает повторить попытку или перезагрузить Claude в этом сеансе.432Если сеанс, из которого вы открыли диалоговое окно, не может перезагрузить свои плагины, диалоговое окно предлагает повторить попытку или перезагрузить Claude в этом сеансе.

413 433 

414<Note>434<Note>

415 Управление плагинами в VS Code использует те же команды CLI под капотом. Плагины и маркетплейсы, которые вы настраиваете в расширении, также доступны в CLI, и наоборот.435 Управление плагинами в VS Code использует те же команды CLI под капотом. Плагины и маркетплейсы, которые вы настраиваете в расширении, также доступны в CLI, и наоборот.


7904. **Отключите конфликтующие расширения**: Временно отключите другие расширения ИИ (Cline, Continue и т. д.)8104. **Отключите конфликтующие расширения**: Временно отключите другие расширения ИИ (Cline, Continue и т. д.)

7915. **Проверьте доверие рабочей области**: Расширение не работает в режиме ограниченного доступа8115. **Проверьте доверие рабочей области**: Расширение не работает в режиме ограниченного доступа

792 812 

793Кроме того, если вы установили [`preferredLocation`](#extension-settings) на `sidebar` или открыли Claude с помощью **Claude Code: Open in Side Bar**, нажмите "✻ Claude Code" на **строке состояния** (в нижнем правом углу). Это работает даже без открытого файла. Вы также можете использовать **палитру команд** (`Cmd+Shift+P` / `Ctrl+Shift+P`) и ввести "Claude Code".813Кроме того, нажмите **✻ Claude Code** на **строке состояния** (в нижнем правом углу окна). Это работает даже без открытого файла. Вы также можете использовать **палитру команд** (`Cmd+Shift+P` / `Ctrl+Shift+P`) и ввести "Claude Code".

794 814 

795<h3 id="cmd-esc-does-nothing-on-macos">815<h3 id="cmd-esc-does-nothing-on-macos">

796 Cmd+Esc ничего не делает на macOS816 Cmd+Esc ничего не делает на macOS

worktrees.md +1 −1

Details

145* Worktree принадлежит сеансу `--worktree`, который вы не отправили в фон, независимо от его возраста.145* Worktree принадлежит сеансу `--worktree`, который вы не отправили в фон, независимо от его возраста.

146* Вы создали worktree самостоятельно с `git worktree add`, даже если вы затем запустили сеанс `--worktree <name>` в нём и отправили этот сеанс в фон.146* Вы создали worktree самостоятельно с `git worktree add`, даже если вы затем запустили сеанс `--worktree <name>` в нём и отправили этот сеанс в фон.

147 147 

148Claude Code записывает маркер в метаданные git каждого worktree, который он создаёт с git, и очистка сохраняет любой worktree без него, включая worktree, который создал hook [`WorktreeCreate`](#non-git-version-control). До версии 2.1.246 очистка не проверяла маркер и могла удалить worktree, который вы создали самостоятельно, когда старая запись фонового сеанса указывала на него.148Claude Code записывает маркер в метаданные git каждого worktree, который он создаёт с git, и очистка сохраняет любой worktree без него, включая worktree, который создал hook [`WorktreeCreate`](#non-git-version-control).

149 149 

150Пока агент работает, Claude Code держит `git worktree lock` на его worktree, чтобы одновременная очистка не могла его удалить, и освобождает блокировку, когда агент завершает работу. Claude Code держит ту же блокировку на worktree, который он создал для фонового сеанса, пока сеанс работает, поэтому очистка оставляет worktree на месте и `git worktree remove` отказывает его удалить.150Пока агент работает, Claude Code держит `git worktree lock` на его worktree, чтобы одновременная очистка не могла его удалить, и освобождает блокировку, когда агент завершает работу. Claude Code держит ту же блокировку на worktree, который он создал для фонового сеанса, пока сеанс работает, поэтому очистка оставляет worktree на месте и `git worktree remove` отказывает его удалить.

151 151