SpyBara
Go Premium

Documentation 2026-10-25 23:58 UTC to 2026-10-26 22:57 UTC

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

admin-setup.md +1 −1

Details

93| [Песочница](https://code.claude.com/docs/ru/sandboxing.md) | Изоляция файловой системы и сети на уровне ОС с allowlist доменов | `sandbox.enabled`, `sandbox.network.allowedDomains` |93| [Песочница](https://code.claude.com/docs/ru/sandboxing.md) | Изоляция файловой системы и сети на уровне ОС с allowlist доменов | `sandbox.enabled`, `sandbox.network.allowedDomains` |

94| [Управляемая политика CLAUDE.md](https://code.claude.com/docs/ru/memory.md#deploy-organization-wide-claude-md) | Инструкции по поведению для Claude на уровне организации, а не правило, принудительно применяемое клиентом | Файл по пути управляемой политики |94| [Управляемая политика CLAUDE.md](https://code.claude.com/docs/ru/memory.md#deploy-organization-wide-claude-md) | Инструкции по поведению для Claude на уровне организации, а не правило, принудительно применяемое клиентом | Файл по пути управляемой политики |

95| [Управление сервером MCP](https://code.claude.com/docs/ru/managed-mcp.md) | Ограничить, какие серверы MCP пользователи могут добавлять или подключать, развернуть фиксированный набор или предоставить удалённые серверы каждому пользователю наряду с их собственными | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers` или развёрнутый файл `managed-mcp.json` |95| [Управление сервером MCP](https://code.claude.com/docs/ru/managed-mcp.md) | Ограничить, какие серверы MCP пользователи могут добавлять или подключать, развернуть фиксированный набор или предоставить удалённые серверы каждому пользователю наряду с их собственными | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers` или развёрнутый файл `managed-mcp.json` |

96| [Управление маркетплейсом плагинов](https://code.claude.com/docs/ru/plugins/org.md#restrict-what-users-can-install) | Ограничить, из каких источников маркетплейса пользователи могут добавлять и устанавливать плагины, отклонить флаги CLI, которые загружают плагины, агентов и серверы MCP для одного запуска, блокировать [источники плагинов `command`](https://code.claude.com/docs/ru/plugins/marketplace-reference#command-plugin-source) и создать allowlist маркетплейсов, плагины которых могут быть предложены | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |96| [Управление маркетплейсом плагинов](https://code.claude.com/docs/ru/plugins/org.md#restrict-what-users-can-install) | Ограничить, из каких источников маркетплейса пользователи могут добавлять и устанавливать плагины, и отклонять флаги CLI, которые загружают плагины, агентов и MCP-серверы для одного запуска. Блокировать [источники плагинов `command`](https://code.claude.com/docs/ru/plugins/marketplace-reference#command-plugin-source) и задать список разрешённых маркетплейсов, плагины которых могут предлагаться в терминале | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |

97| [Блокировка настройки](https://code.claude.com/docs/ru/settings-reference.md#strictpluginonlycustomization) | Заблокировать skills, агентов, hooks и серверы MCP из пользовательских и проектных источников, чтобы они могли поступать только из плагинов или управляемых параметров. Блокировка skills также останавливает [skills, которые ваши разработчики включают на claude.ai](https://code.claude.com/docs/ru/skills.md#where-synced-skills-load) от синхронизации | `strictPluginOnlyCustomization` |97| [Блокировка настройки](https://code.claude.com/docs/ru/settings-reference.md#strictpluginonlycustomization) | Заблокировать skills, агентов, hooks и серверы MCP из пользовательских и проектных источников, чтобы они могли поступать только из плагинов или управляемых параметров. Блокировка skills также останавливает [skills, которые ваши разработчики включают на claude.ai](https://code.claude.com/docs/ru/skills.md#where-synced-skills-load) от синхронизации | `strictPluginOnlyCustomization` |

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

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

Details

233| `"default"` | Вызовы инструментов, которые требуют одобрения и не охватываются правилами разрешения, запускают ваш обратный вызов `canUseTool`; отсутствие обратного вызова означает отклонение | Интерактивные приложения с пользовательским обратным вызовом одобрения |233| `"default"` | Вызовы инструментов, которые требуют одобрения и не охватываются правилами разрешения, запускают ваш обратный вызов `canUseTool`; отсутствие обратного вызова означает отклонение | Интерактивные приложения с пользовательским обратным вызовом одобрения |

234| `"acceptEdits"` | Автоматически одобряет редактирование файлов и общие команды файловой системы (`mkdir`, `touch`, `mv`, `cp` и т. д.); другие команды Bash следуют правилам по умолчанию | Вы доверяете редактированиям Claude и хотите более быстрой итерации, например во время прототипирования или при работе в изолированном каталоге |234| `"acceptEdits"` | Автоматически одобряет редактирование файлов и общие команды файловой системы (`mkdir`, `touch`, `mv`, `cp` и т. д.); другие команды Bash следуют правилам по умолчанию | Вы доверяете редактированиям Claude и хотите более быстрой итерации, например во время прототипирования или при работе в изолированном каталоге |

235| `"plan"` | Claude исследует и планирует без редактирования ваших исходных файлов; редактирование файлов никогда не одобряется автоматически и запрашивается через ваш обратный вызов `canUseTool` | Вы хотите, чтобы Claude предложил изменения без их выполнения, например во время проверки кода или когда вам нужно одобрить изменения перед их внесением |235| `"plan"` | Claude исследует и планирует без редактирования ваших исходных файлов; редактирование файлов никогда не одобряется автоматически и запрашивается через ваш обратный вызов `canUseTool` | Вы хотите, чтобы Claude предложил изменения без их выполнения, например во время проверки кода или когда вам нужно одобрить изменения перед их внесением |

236| `"dontAsk"` | Никогда не запрашивает разрешения. Инструменты, предварительно одобренные [правилами разрешений](https://code.claude.com/docs/ru/settings-reference.md#permission-settings), работают, и также работают вызовы, которые не требуют подтверждения в режиме `default`, такие как чтение файлов в ваших рабочих каталогах. Каждый вызов, который иначе вызвал бы запрос разрешения, отклоняется, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) все же может одобрить [некоторые из таких вызовов](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods). `AskUserQuestion`, инструменты коннекторов, [установленные вашей организацией на `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), инструменты MCP, отмеченные [`requiresUserInteraction`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool), и [чтение из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths) отклоняются, даже если вы их разрешили | Вы хотите фиксированный, явный набор инструментов для безголового агента и предпочитаете жесткое отклонение молчаливой опоре на отсутствие `canUseTool` |236| `"dontAsk"` | Никогда не запрашивает разрешения. Инструменты, предварительно одобренные [правилами разрешений](https://code.claude.com/docs/ru/settings-reference.md#permission-settings), работают, и также работают вызовы, которые не требуют подтверждения в режиме `default`, такие как чтение файлов в ваших рабочих каталогах. Каждый вызов, который иначе вызвал бы запрос разрешения, отклоняется, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) все же может одобрить [некоторые из таких вызовов](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods). Некоторые вызовы, например [чтение из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths), отклоняются, даже если вы их разрешили. Список см. в разделе [Режим Don't ask](https://code.claude.com/docs/ru/agent-sdk/permissions.md#don’t-ask-mode-dontask) | Безголовые агенты, для которых некому подтверждать вызовы |

237| `"auto"` | Использует классификатор модели для одобрения или отклонения подсказок разрешения. См. [Режим Auto](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode) для доступности и поведения | Автономные агенты, которые все еще хотят гарантии безопасности при использовании инструментов |237| `"auto"` | Использует классификатор модели для одобрения или отклонения подсказок разрешения. См. [Режим Auto](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode) для доступности и поведения | Автономные агенты, которые все еще хотят гарантии безопасности при использовании инструментов |

238| `"bypassPermissions"` | Запускает все разрешенные инструменты без запроса, кроме инструментов, совпадающих с явным правилом [`ask`](https://code.claude.com/docs/ru/settings-reference#permission-settings), инструментов соединителя [установленных вашей организацией на `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools) и инструментов, требующих взаимодействия с пользователем. [Гарантии безопасности обмена сообщениями между сессиями](https://code.claude.com/docs/ru/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) все еще применяются. См. [Как оцениваются разрешения](https://code.claude.com/docs/ru/agent-sdk/permissions.md#how-permissions-are-evaluated) для порядка приоритета. В TypeScript SDK также требует `allowDangerouslySkipPermissions: true` в `options`. Не может использоваться при запуске от root на Unix. Используйте только в изолированных окружениях, где действия агента не могут повлиять на системы, которые вам важны | CI, контейнеры или другие изолированные окружения |238| `"bypassPermissions"` | Выполняет вызовы инструментов без запроса подтверждения, включая вызовы инструментов, которые вы не указали в `allowedTools`. Некоторые вызовы все же передаются в ваш обратный вызов `canUseTool`; они перечислены в разделе [Режим bypass permissions](https://code.claude.com/docs/ru/agent-sdk/permissions.md#bypass-permissions-mode-bypasspermissions). В TypeScript SDK также требует `allowDangerouslySkipPermissions: true` в `options`. Не может использоваться при запуске от root на Unix. Используйте только в изолированных окружениях, где действия агента не могут повлиять на системы, которые вам важны | CI, контейнеры или другие изолированные окружения |

239 239 

240Для интерактивных приложений используйте `"default"` с обратным вызовом одобрения инструмента для отображения подсказок одобрения. Для автономных агентов на машине разработки используйте `"acceptEdits"`, чтобы автоматически одобрить редактирование файлов и общие команды файловой системы (`mkdir`, `touch`, `mv`, `cp` и т. д.), при этом все еще ограничивая другие команды `Bash` правилами разрешения. Зарезервируйте `"bypassPermissions"` для CI, контейнеров или других изолированных окружений. См. [Разрешения](https://code.claude.com/docs/ru/agent-sdk/permissions.md) для полных деталей.240Для интерактивных приложений используйте `"default"` с обратным вызовом одобрения инструмента для отображения подсказок одобрения. Для автономных агентов на машине разработки используйте `"acceptEdits"`, чтобы автоматически одобрить редактирование файлов и общие команды файловой системы (`mkdir`, `touch`, `mv`, `cp` и т. д.), при этом все еще ограничивая другие команды `Bash` правилами разрешения. Зарезервируйте `"bypassPermissions"` для CI, контейнеров или других изолированных окружений. См. [Разрешения](https://code.claude.com/docs/ru/agent-sdk/permissions.md) для полных деталей.

241 241 

Details

16| Сделать параметр необязательным | Объявите его необязательным в схеме и примените значение по умолчанию в обработчике. См. [Как сделать параметр необязательным](#make-a-parameter-optional). |16| Сделать параметр необязательным | Объявите его необязательным в схеме и примените значение по умолчанию в обработчике. См. [Как сделать параметр необязательным](#make-a-parameter-optional). |

17| Зарегистрировать инструмент с Claude | Оберните в `create_sdk_mcp_server` / `createSdkMcpServer` и передайте в `mcpServers` в `query()`. См. [Вызов пользовательского инструмента](#call-a-custom-tool). |17| Зарегистрировать инструмент с Claude | Оберните в `create_sdk_mcp_server` / `createSdkMcpServer` и передайте в `mcpServers` в `query()`. См. [Вызов пользовательского инструмента](#call-a-custom-tool). |

18| Предварительно одобрить инструмент | Добавьте в разрешённые инструменты. См. [Настройка разрешённых инструментов](#configure-allowed-tools). |18| Предварительно одобрить инструмент | Добавьте в разрешённые инструменты. См. [Настройка разрешённых инструментов](#configure-allowed-tools). |

19| Требовать подтверждения для вызовов инструмента или заблокировать инструмент | В TypeScript SDK добавьте `permission_policy` для инструмента в объект конфигурации, который возвращает `createSdkMcpServer()`. См. [Требование подтверждения для определённых инструментов](#require-approval-for-specific-tools). |

19| Удалить встроенный инструмент из контекста Claude | Передайте массив `tools`, содержащий только встроенные инструменты, которые вы хотите. См. [Настройка разрешённых инструментов](#configure-allowed-tools). |20| Удалить встроенный инструмент из контекста Claude | Передайте массив `tools`, содержащий только встроенные инструменты, которые вы хотите. См. [Настройка разрешённых инструментов](#configure-allowed-tools). |

20| Позволить Claude вызывать инструменты параллельно | Установите `readOnlyHint: true` на инструментах без побочных эффектов. См. [Добавление аннотаций инструментов](#add-tool-annotations). |21| Позволить Claude вызывать инструменты параллельно | Установите `readOnlyHint: true` на инструментах без побочных эффектов. См. [Добавление аннотаций инструментов](#add-tool-annotations). |

21| Контролировать сообщение об ошибке, которое читает Claude | Верните `isError: true` для составления сообщения вместо выброса необработанного исключения. См. [Обработка ошибок](#handle-errors). |22| Контролировать сообщение об ошибке, которое читает Claude | Верните `isError: true` для составления сообщения вместо выброса необработанного исключения. См. [Обработка ошибок](#handle-errors). |


327| Field | Default | Meaning |328| Field | Default | Meaning |

328| :- | :- | :- |329| :- | :- | :- |

329| `readOnlyHint` | `false` | Инструмент не изменяет свою среду. Контролирует, может ли инструмент вызываться параллельно с другими инструментами только для чтения. |330| `readOnlyHint` | `false` | Инструмент не изменяет свою среду. Контролирует, может ли инструмент вызываться параллельно с другими инструментами только для чтения. |

330| `destructiveHint` | `true` | Инструмент может выполнять деструктивные обновления. Только информационное. |331| `destructiveHint` | `true` | Инструмент может выполнять деструктивные обновления. Явно установите значение `true` для любого инструмента, который вы [помечаете как `always_ask`](#require-approval-for-specific-tools). |

331| `idempotentHint` | `false` | Повторные вызовы с одинаковыми аргументами не имеют дополнительного эффекта. Только информационное. |332| `idempotentHint` | `false` | Повторные вызовы с одинаковыми аргументами не имеют дополнительного эффекта. Только информационное. |

332| `openWorldHint` | `true` | Инструмент достигает систем вне вашего процесса. Только информационное. |333| `openWorldHint` | `true` | Инструмент достигает систем вне вашего процесса. Только информационное. |

333 334 


383 384 

384Чтобы полностью удалить встроенный инструмент, опустите его из `tools` или перечислите его простое имя в `disallowedTools` (Python: `disallowed_tools`); оба варианта держат инструмент вне контекста, поэтому Claude никогда не попытается его использовать. Правило `disallowedTools` с областью действия блокирует совпадающие вызовы, но оставляет инструмент видимым, поэтому Claude может потратить ход, пытаясь его использовать. Полный порядок оценки см. в разделе [Настройка разрешений](https://code.claude.com/docs/ru/agent-sdk/permissions.md).385Чтобы полностью удалить встроенный инструмент, опустите его из `tools` или перечислите его простое имя в `disallowedTools` (Python: `disallowed_tools`); оба варианта держат инструмент вне контекста, поэтому Claude никогда не попытается его использовать. Правило `disallowedTools` с областью действия блокирует совпадающие вызовы, но оставляет инструмент видимым, поэтому Claude может потратить ход, пытаясь его использовать. Полный порядок оценки см. в разделе [Настройка разрешений](https://code.claude.com/docs/ru/agent-sdk/permissions.md).

385 386 

387### Требование подтверждения для определённых инструментов

388 

389Установите для `permission_policy` инструмента значение `always_ask`, и `allowedTools` перестанет одобрять вызовы этого инструмента, поэтому они смогут доходить до вашего обратного вызова [`canUseTool`](https://code.claude.com/docs/ru/agent-sdk/user-input), даже если инструмент указан в списке. Если вместо этого установить `always_deny`, [вызов инструмента будет отклонён](https://code.claude.com/docs/ru/agent-sdk/permissions.md#how-permissions-are-evaluated), но [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) в загружаемом вами плагине [всё ещё может его одобрить](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods). Это поле доступно только в TypeScript и требует Agent SDK v0.3.301 или более поздней версии.

390 

391Поместите запись политики в массив `tools` объекта конфигурации, который возвращает `createSdkMcpServer()`, а не в опцию `tools`, которую вы передаёте в эту функцию. Этот пример разворачивает `weatherServer` из [примера инструмента weather](#weather-tool-example) и добавляет массив `tools`, назначающий `get_temperature` политику `always_ask`:

392 

393```typescript TypeScript theme={null}

394options: {

395 mcpServers: {

396 weather: {

397 ...weatherServer,

398 tools: [{ name: "get_temperature", permission_policy: "always_ask" as const }]

399 }

400 },

401 allowedTools: ["mcp__weather__get_temperature"],

402 permissionMode: "default",

403 canUseTool: async (toolName, input) => {

404 console.log(`Approval requested for ${toolName}`);

405 return { behavior: "allow", updatedInput: input };

406 }

407}

408```

409 

410Чтобы опробовать политику, замените `options` в скрипте из раздела [Вызов пользовательского инструмента](#call-a-custom-tool) на `options` из этого примера, а затем запустите скрипт из терминала. Скрипт выведет `Approval requested for mcp__weather__get_temperature`, а затем ответ Claude о температуре. Полный скрипт см. в [справочнике по TypeScript](https://code.claude.com/docs/ru/agent-sdk/typescript.md#mcpsdkserverconfigwithinstance).

411 

412Если вы используете [режим разрешений](https://code.claude.com/docs/ru/agent-sdk/permissions.md#permission-modes) `auto` или `plan`, установите `destructiveHint: true` в [аннотациях](#add-tool-annotations) инструмента, чтобы вызовы инструмента по-прежнему доходили до вашего обратного вызова. В противном случае [классификатор авторежима](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode) может одобрить некоторые вызовы `always_ask` при [условиях, перечисленных в справочнике по TypeScript](https://code.claude.com/docs/ru/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call), и одобренный им вызов не дойдёт до вашего обратного вызова. Устанавливайте эту подсказку явно, поскольку неустановленный `destructiveHint` для вызовов `always_ask` считается равным `false`, а не принимает значение `true` по умолчанию.

413 

386## Обработка ошибок414## Обработка ошибок

387 415 

388Ошибка обработчика не останавливает цикл агента. MCP-сервер SDK в процессе перехватывает необработанные исключения и возвращает их как результаты ошибок, поэтому то, как вы сообщаете об ошибке, определяет, что читает Claude, а не то, завершится ли запрос неудачей:416Ошибка обработчика не останавливает цикл агента. MCP-сервер SDK в процессе перехватывает необработанные исключения и возвращает их как результаты ошибок, поэтому то, как вы сообщаете об ошибке, определяет, что читает Claude, а не то, завершится ли запрос неудачей:

Details

10 10 

11## Как оцениваются разрешения11## Как оцениваются разрешения

12 12 

13> [!NOTE]

14>

15> Если вы загружаете плагин, содержащий [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md), см. [место решений мода среди правил и хуков](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods).

16 

13Когда Claude запрашивает инструмент, SDK проверяет разрешения в следующем порядке:17Когда Claude запрашивает инструмент, SDK проверяет разрешения в следующем порядке:

14 18 

15**1. Hooks**19**1. Hooks**


20 24 

21**2. Deny rules**25**2. Deny rules**

22 26 

23Проверьте правила `deny` (из `disallowed_tools` и [settings.json](https://code.claude.com/docs/ru/settings-reference.md#permission-settings)). Если правило deny совпадает, инструмент блокируется, даже в режиме `bypassPermissions`. Правила deny с простым названием, такие как `Bash`, удаляют инструмент из контекста Claude перед началом этой оценки, поэтому на этом шаге проверяются только правила с областью действия, такие как `Bash(rm *)`.27Если совпадает правило deny из `disallowed_tools` или [settings.json](https://code.claude.com/docs/ru/settings-reference.md#permission-settings), вызов отклоняется и [`canUseTool`](https://code.claude.com/docs/ru/agent-sdk/user-input) не вызывается, даже в режиме [`bypassPermissions`](#bypass-permissions-mode-bypasspermissions) и даже если хук вернул `allow`.

28 

29В TypeScript SDK, если вы установите `permission_policy` [пользовательского инструмента](https://code.claude.com/docs/ru/agent-sdk/custom-tools.md#require-approval-for-specific-tools) в значение [`always_deny`](https://code.claude.com/docs/ru/agent-sdk/typescript#mcpservertoolpolicy), вызов этого инструмента отклоняется на этом шаге.

24 30 

25**3. Ask rules**31**3. Ask rules**

26 32 

27Проверьте правила `ask` из [settings.json](https://code.claude.com/docs/ru/settings-reference.md#permission-settings). Если правило ask совпадает, вызов передается в ваш callback [`canUseTool`](https://code.claude.com/docs/ru/agent-sdk/user-input) для подтверждения, даже в режиме `bypassPermissions`.33Проверьте правила `ask` из [settings.json](https://code.claude.com/docs/ru/settings-reference.md#permission-settings). Если правило ask совпадает, вызов передается в ваш [callback `canUseTool`](https://code.claude.com/docs/ru/agent-sdk/user-input) для подтверждения, даже в режиме `bypassPermissions`.

28 34 

29Инструменты, требующие взаимодействия с пользователем, ведут себя так же: `AskUserQuestion` и MCP инструменты, сервер которых устанавливает [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool), всегда передаются в callback, даже когда совпадает правило allow. В режиме `dontAsk` оба случая отклоняются вместо этого, потому что этот режим никогда не запрашивает. Аннотация MCP требует Claude Code v2.1.199 или позже.35Инструменты, требующие взаимодействия с пользователем, ведут себя так же: `AskUserQuestion` и MCP инструменты, сервер которых устанавливает [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool), всегда передаются в callback, даже когда совпадает правило allow. В режиме `dontAsk` оба случая отклоняются вместо этого, потому что этот режим никогда не запрашивает. Аннотация MCP требует Claude Code v2.1.199 или позже.

30 36 

31Инструменты [claude.ai connector](https://code.claude.com/docs/ru/mcp.md#organization-controls-on-connector-tools), для которых ваша организация установила `ask`, также покидают поток на этом шаге. Каждый вызов передается в callback, даже в режиме `bypassPermissions` и даже когда совпадает правило allow. Callback получает причину `Your organization requires approval for this tool`. В режиме `dontAsk` вызов отклоняется вместо этого, потому что этот режим никогда не запрашивает.37Инструменты [claude.ai connector](https://code.claude.com/docs/ru/mcp.md#organization-controls-on-connector-tools), для которых ваша организация установила `ask`, также покидают поток на этом шаге. Каждый вызов передается в callback, даже в режиме `bypassPermissions` и даже когда совпадает правило allow. Callback получает причину `Your organization requires approval for this tool`. В режиме `dontAsk` вызов отклоняется вместо этого, потому что этот режим никогда не запрашивает.

32 38 

39В TypeScript SDK, если вы установите `permission_policy` пользовательского инструмента в значение [`always_ask`](https://code.claude.com/docs/ru/agent-sdk/custom-tools#require-approval-for-specific-tools), ни одно правило allow не одобряет его вызовы, даже запись `allowedTools`. В режиме `dontAsk` Claude Code отклоняет такие вызовы, а в режимах `auto`, `plan` или `bypassPermissions` он [может одобрить их](https://code.claude.com/docs/ru/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call) до запуска вашего callback.

40 

33**4. Permission mode**41**4. Permission mode**

34 42 

35Примените активный [режим разрешений](#permission-modes):43Примените активный [режим разрешений](#permission-modes):

36 44 

37* В режиме `bypassPermissions` Claude Code одобряет все, что достигает этого шага, кроме распознанных [удалений по критическим путям](https://code.claude.com/docs/ru/permission-modes.md#critical-paths), которые вместо этого передаются дальше.45* В режиме `bypassPermissions` Claude Code одобряет все, что достигает этого шага, кроме распознанных [удалений по критическим путям](https://code.claude.com/docs/ru/permission-modes.md#critical-paths) и команд Bash с пометкой [`Dangerous rm operation not ruled out`](https://code.claude.com/docs/ru/permission-modes#dangerous-rm-operation-not-ruled-out), которые вместо этого передаются дальше.

38* В режиме `acceptEdits` Claude Code одобряет операции с файлами, перечисленные в разделе [Accept edits mode](#accept-edits-mode-acceptedits).46* В режиме `acceptEdits` Claude Code одобряет операции с файлами, перечисленные в разделе [Accept edits mode](#accept-edits-mode-acceptedits).

39* В режиме `plan` Claude Code отправляет инструменты редактирования файлов и записи в shell в ваш callback `canUseTool` независимо от правил allow, поэтому операции записи не могут быть автоматически одобрены при планировании.47* В режиме `plan` Claude Code отправляет инструменты редактирования файлов в ваш callback `canUseTool` независимо от правил allow.

40* В других режимах запрос передается дальше.48* В других режимах запрос передается дальше.

41 49 

42**5. Allow rules**50**5. Allow rules**

43 51 

44Проверьте правила `allow` (из `allowed_tools` и settings.json). Если правило совпадает, инструмент одобряется. Вызов, который инструмент одобряет самостоятельно, также разрешается на этом шаге без необходимости в правиле: например, чтение файла в ваших рабочих каталогах или [команда Bash только для чтения](https://code.claude.com/docs/ru/permissions.md#read-only-commands).52Проверьте правила `allow` (из `allowed_tools` и settings.json). Если правило совпадает, инструмент одобряется. Вызов, который инструмент одобряет самостоятельно, также разрешается на этом шаге без необходимости в правиле: например, чтение файла в ваших рабочих каталогах или [команда Bash только для чтения](https://code.claude.com/docs/ru/permissions.md#read-only-commands).

45 53 

46Распознанные [удаления по критическим путям](https://code.claude.com/docs/ru/permission-modes.md#critical-paths) не одобряются правилом allow. Достигают ли они затем вашего callback, зависит от режима разрешений: например, в сессии Agent SDK в режиме `auto` Claude Code по умолчанию отклоняет их, не вызывая его. [Таблица режимов для критических путей](https://code.claude.com/docs/ru/permission-modes.md#critical-path-removals-in-each-permission-mode) перечисляет, что каждый режим с ними делает.54Распознанные [удаления по критическим путям](https://code.claude.com/docs/ru/permission-modes.md#critical-paths) не одобряются правилом allow, а команды с пометкой `Dangerous rm operation not ruled out` не одобряются правилом `Bash` или `Bash(*)`. Достигают ли они затем вашего callback, зависит от режима разрешений: например, в сессии Agent SDK в режиме `auto` Claude Code по умолчанию отклоняет их, не вызывая его. [Таблица режимов для критических путей](https://code.claude.com/docs/ru/permission-modes.md#critical-path-removals-in-each-permission-mode) перечисляет, что каждый режим с ними делает.

47 55 

48Правило allow не одобряет чтение из [сетевого пути](https://code.claude.com/docs/ru/permissions.md#network-paths).56Правило allow не одобряет чтение из [сетевого пути](https://code.claude.com/docs/ru/permissions.md#network-paths).

49 57 


57 65 

58Если вы передаете callback `canUseTool` в конфигурацию, где TypeScript SDK ожидает, что порядок оценки автоматически одобрит вызовы перед консультацией callback, SDK выдает предупреждение процесса Node.js один раз при построении запроса. Код предупреждения — `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Две конфигурации вызывают его:66Если вы передаете callback `canUseTool` в конфигурацию, где TypeScript SDK ожидает, что порядок оценки автоматически одобрит вызовы перед консультацией callback, SDK выдает предупреждение процесса Node.js один раз при построении запроса. Код предупреждения — `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Две конфигурации вызывают его:

59 67 

60* `permissionMode: 'bypassPermissions'`, который автоматически одобряет каждый вызов, достигающий шага режима разрешений, кроме [действий, которые ни один режим не одобряет автоматически](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves)68* `permissionMode: 'bypassPermissions'`: текст предупреждения начинается с `canUseTool will not be invoked: permissionMode 'bypassPermissions'`. Вызовы инструментов одобряются до обращения к `canUseTool`, поэтому ваш callback выполняется лишь для немногих вызовов, например перечисленных в разделе [Bypass permissions mode](#bypass-permissions-mode-bypasspermissions). Чтобы проверять и одобренные вызовы, перенесите проверки вашего callback в [хук `PreToolUse`](https://code.claude.com/docs/ru/agent-sdk/hooks)

61* Каждая запись `allowedTools` без спецификатора, такая как `"Read"`, которая автоматически одобряет весь этот инструмент перед консультацией callback, кроме [действий, которые ни один режим не одобряет автоматически](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves) и [чтения из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths)69* Запись `allowedTools`, содержащая только имя инструмента, например `"Read"`: предупреждение перечисляет каждую такую запись после `canUseTool will not be invoked for:`. Вызовы перечисленного инструмента одобряются до обращения к `canUseTool`, за исключением [вызовов, которые правило allow никогда не одобряет](#calls-an-allow-rule-never-approves). Чтобы ваш callback выполнялся для требующих подтверждения вызовов перечисленного инструмента, удалите запись этого инструмента из `allowedTools`

62 70 

63Записи со спецификатором, такие как `Bash(ls *)`, и режим `acceptEdits` не вызывают его, и правила allow из файлов настроек не видны для проверки.71Записи со спецификатором, такие как `Bash(ls *)`, и режим `acceptEdits` не вызывают его, и правила allow из файлов настроек не видны для проверки.

64 72 

65Слушайте с помощью `process.on('warning', ...)` и сопоставьте код для логирования или подавления его. Чтобы контролировать каждый вызов инструмента независимо от режима и правил, используйте вместо этого hook [`PreToolUse`](https://code.claude.com/docs/ru/agent-sdk/hooks).73Предупреждение не блокирует ни один вызов и не изменяет никаких параметров. Если ваш callback уже получает все вызовы, которые вы хотите проверять, оставьте конфигурацию как есть. Чтобы записать предупреждение в лог, подпишитесь с помощью `process.on('warning', ...)` и сопоставьте код `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`.

66 74 

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

68 76 


90>98>

91> **Автоматически одобренные инструменты никогда не достигают `canUseTool`.** Вызов инструмента, одобренный на любом более раннем этапе, по `acceptEdits` или `bypassPermissions`, или по правилу разрешения, пропускает ваш обратный вызов `canUseTool`, поэтому проверки разрешений, которые вы там поместили, молча обходятся для этого инструмента.99> **Автоматически одобренные инструменты никогда не достигают `canUseTool`.** Вызов инструмента, одобренный на любом более раннем этапе, по `acceptEdits` или `bypassPermissions`, или по правилу разрешения, пропускает ваш обратный вызов `canUseTool`, поэтому проверки разрешений, которые вы там поместили, молча обходятся для этого инструмента.

92>100>

93> Ни одно правило разрешения не одобряет автоматически `AskUserQuestion`, инструменты MCP, отмеченные [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool), инструменты коннекторов, [для которых ваша организация установила `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), или распознанные удаления `rm` и `rmdir` [по критическим путям](https://code.claude.com/docs/ru/permission-modes.md#critical-paths). В режиме `dontAsk` Claude Code отклоняет эти вызовы без вызова обратного вызова. В других режимах первые три достигают обратного вызова. В [таблице режимов для критических путей](https://code.claude.com/docs/ru/permission-modes.md#critical-path-removals-in-each-permission-mode) указано, что каждый режим делает с удалением по критическому пути. Проверка, которая распознает такие удаления, [может пропускать некоторые команды](https://code.claude.com/docs/ru/permission-modes.md#critical-paths).101> Если вызовы инструмента из `allowed_tools` всё равно доходят до вашего обратного вызова `canUseTool` или отклоняются в режиме `dontAsk`, проверьте, не являются ли они [чтением из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths) или одним из следующих вызовов. Ни одно правило разрешения не одобряет эти вызовы. В режиме `dontAsk`, который никогда не запрашивает подтверждение, Claude Code отклоняет их без вызова `canUseTool`, а в других режимах разрешений вы обрабатываете их так, как указано в каждом пункте:

102>

103> * `AskUserQuestion`, инструменты MCP, отмеченные [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool), и инструменты коннекторов, [для которых ваша организация установила `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools): отвечайте на них в обратном вызове. В разделе [Обработка уточняющих вопросов](https://code.claude.com/docs/ru/agent-sdk/user-input.md#handle-clarifying-questions) показано, как отвечать на `AskUserQuestion`, а вызов коннектора поступает с причиной `Your organization requires approval for this tool`

104>

105> * Пользовательские инструменты, которые ваше приложение помечает как [`always_ask`](https://code.claude.com/docs/ru/agent-sdk/custom-tools#require-approval-for-specific-tools): принимайте решение о вызове в обратном вызове. Чтобы эти вызовы перестали поступать, [измените политику во время сессии](https://code.claude.com/docs/ru/agent-sdk/typescript.md#mcpsdkserverconfigwithinstance). В режимах `auto`, `plan` и `bypassPermissions` вызов вместо этого может быть одобрен до обратного вызова в случаях, перечисленных в разделе [Режимы разрешений, которые могут одобрить вызов `always_ask`](https://code.claude.com/docs/ru/agent-sdk/typescript#permission-modes-that-can-approve-an-always_ask-call)

94>106>

95> Охват зависит от формы записи: простое имя, такое как `Read` или `mcp__github__get_issue`, автоматически одобряет каждый вызов этого инструмента, кроме указанных исключений и [чтения из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths), в то время как правило с областью действия, такое как `Bash(npm test *)`, автоматически одобряет только совпадающие вызовы, и другие вызовы `Bash`, требующие одобрения, по-прежнему переходят в обратный вызов. Для проверок, которые должны выполняться при каждом вызове инструмента, используйте [хук `PreToolUse`](https://code.claude.com/docs/ru/agent-sdk/hooks): хуки выполняются перед каждым другим шагом, и отказ хука применяется даже в режиме `bypassPermissions`.107> * Распознанные удаления `rm` и `rmdir` [по критическим путям](https://code.claude.com/docs/ru/permission-modes.md#critical-paths): в режимах `default`, `acceptEdits` и `bypassPermissions` разрешите или запретите удаление в обратном вызове, где [`decisionReason`](https://code.claude.com/docs/ru/agent-sdk/typescript#canusetool) начинается с `Dangerous rm`. Для режимов `auto` и `plan` см. [Удаления по критическим путям в каждом режиме разрешений](https://code.claude.com/docs/ru/permission-modes.md#critical-path-removals-in-each-permission-mode). Проверка, которая распознает такие удаления, [может пропускать некоторые команды](https://code.claude.com/docs/ru/permission-modes.md#critical-paths)

108>

109> * **Простое имя**: запись, такая как `Read` или `mcp__github__get_issue`, автоматически одобряет каждый вызов этого инструмента, кроме [действий, которые ни один режим не одобряет автоматически](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves), и [чтения из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths).

110>

111> * **Правило с областью действия**: запись, такая как `Bash(npm test *)`, автоматически одобряет только совпадающие вызовы, а другие вызовы `Bash`, требующие одобрения, по-прежнему переходят в обратный вызов.

112>

113> Для проверок, которые должны выполняться при каждом вызове инструмента, используйте [хук `PreToolUse`](https://code.claude.com/docs/ru/agent-sdk/hooks): хуки выполняются перед каждым другим шагом, и отказ хука применяется даже в режиме `bypassPermissions`.

96 114 

97Для заблокированного агента объедините `allowedTools` с `permissionMode: "dontAsk"`:115Для заблокированного агента объедините `allowedTools` с `permissionMode: "dontAsk"`:

98 116 


103};121};

104```122```

105 123 

106Перечисленные инструменты одобрены, кроме [действий, которые ни один режим не одобряет автоматически](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves), и [чтения из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths). Каждый другой вызов, который запросил бы подтверждение, вместо этого отклоняется, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) всё же может одобрить [некоторые из этих вызовов](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods).124Перечисленные вызовы `Read`, `Glob` и `Grep` одобряются, кроме [действий, которые ни один режим не одобряет автоматически](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves), и [чтения из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths). Каждый другой вызов, который запросил бы подтверждение, вместо этого отклоняется, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) всё же может одобрить [некоторые из этих вызовов](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods).

107 125 

108Вызовы, которые не требуют одобрения в режиме `default`, выполняются независимо от того, указаны ли они в списке. К ним относятся [команды Bash только для чтения](https://code.claude.com/docs/ru/permissions.md#read-only-commands), инструменты, такие как `Agent`, которые не спрашивают перед запуском, и чтение файлов в ваших рабочих каталогах. Чтобы полностью удалить инструмент из запроса, добавьте его простое имя в `disallowedTools`.126Вызовы, которые не требуют одобрения в режиме `default`, выполняются независимо от того, указаны ли они в списке. К ним относятся [команды Bash только для чтения](https://code.claude.com/docs/ru/permissions.md#read-only-commands), инструменты, такие как `Agent`, которые не спрашивают перед запуском, и чтение файлов в ваших рабочих каталогах. Чтобы полностью скрыть встроенный инструмент от Claude, а не отклонять его вызовы, добавьте его простое имя в `disallowedTools`.

109 127 

110> [!WARNING]128> [!WARNING]

111>129>


128| `default` | Стандартное поведение разрешений | Нет автоматических одобрений на основе режима; вызовы, требующие одобрения и не соответствующие никакому правилу разрешения, запускают ваш обратный вызов `canUseTool` |146| `default` | Стандартное поведение разрешений | Нет автоматических одобрений на основе режима; вызовы, требующие одобрения и не соответствующие никакому правилу разрешения, запускают ваш обратный вызов `canUseTool` |

129| `dontAsk` | Отклонить вместо запроса | Любой вызов, который иначе запросил бы подтверждение, отклоняется без вызова `canUseTool`, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) всё равно может одобрить [некоторые из этих вызовов](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods). Вызовы, одобренные `allowed_tools` или правилами разрешения в `settings.json`, выполняются, как и вызовы, не требующие одобрения в режиме `default`. Некоторые вызовы, например [чтение из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths), отклоняются, даже если им соответствует `allowed_tools` или правило разрешения. Список см. в разделе [Режим не спрашивать](#don’t-ask-mode-dontask) |147| `dontAsk` | Отклонить вместо запроса | Любой вызов, который иначе запросил бы подтверждение, отклоняется без вызова `canUseTool`, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) всё равно может одобрить [некоторые из этих вызовов](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods). Вызовы, одобренные `allowed_tools` или правилами разрешения в `settings.json`, выполняются, как и вызовы, не требующие одобрения в режиме `default`. Некоторые вызовы, например [чтение из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths), отклоняются, даже если им соответствует `allowed_tools` или правило разрешения. Список см. в разделе [Режим не спрашивать](#don’t-ask-mode-dontask) |

130| `acceptEdits` | Автоматически принимать редактирование файлов | Редактирование файлов и [операции с файловой системой](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv` и т. д.) автоматически одобряются |148| `acceptEdits` | Автоматически принимать редактирование файлов | Редактирование файлов и [операции с файловой системой](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv` и т. д.) автоматически одобряются |

131| `bypassPermissions` | Обойти проверки разрешений | Инструменты выполняются без запросов разрешений, за исключением [действий, которые ни один режим не одобряет автоматически](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves). Используйте с осторожностью |149| `bypassPermissions` | Обойти проверки разрешений | Инструменты выполняются без запросов разрешений, за исключением [действий, которые ни один режим не одобряет автоматически](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves) и, вне [облачной сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md), пользовательских инструментов, которые ваше приложение [помечает как `always_ask`](https://code.claude.com/docs/ru/agent-sdk/custom-tools#require-approval-for-specific-tools). Используйте с осторожностью |

132| `plan` | Режим планирования | Claude исследует и планирует без редактирования исходных файлов; редактирование файлов никогда не одобряется автоматически и запрашивается через ваш обратный вызов `canUseTool` |150| `plan` | Режим планирования | Claude исследует и планирует без редактирования исходных файлов; редактирование файлов никогда не одобряется автоматически и запрашивается через ваш обратный вызов `canUseTool` |

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

134 152 


256* Работает с путем вне этой области274* Работает с путем вне этой области

257* Записывает в защищенный путь275* Записывает в защищенный путь

258* Удаляет с помощью `rm` или `rmdir` путь, который Claude Code распознает как [критический путь](https://code.claude.com/docs/ru/permission-modes.md#critical-paths)276* Удаляет с помощью `rm` или `rmdir` путь, который Claude Code распознает как [критический путь](https://code.claude.com/docs/ru/permission-modes.md#critical-paths)

277* Запускает [`touch`](https://code.claude.com/docs/ru/permission-modes#auto-approve-file-edits-with-acceptedits-mode), например, с опцией, glob-шаблоном или префиксом `timeout 5` или `LANG=C`

259 278 

260**Используйте когда:** вы доверяете редактированиям Claude и хотите более быструю итерацию, например во время прототипирования или при работе в изолированном каталоге.279**Используйте когда:** вы доверяете редактированиям Claude и хотите более быструю итерацию, например во время прототипирования или при работе в изолированном каталоге.

261 280 

262#### Режим не спрашивать (`dontAsk`)281#### Режим не спрашивать (`dontAsk`)

263 282 

264Преобразует любой запрос разрешения в отклонение без вызова `canUseTool`, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) всё равно может одобрить [некоторые из этих вызовов](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods). Инструменты, предварительно одобренные `allowed_tools`, правилами разрешения в `settings.json` или хуком, выполняются нормально. Вызовы, не требующие одобрения в режиме `default`, также выполняются, например чтение файлов внутри рабочих каталогов и вызовы `Agent`.283Преобразует любой запрос разрешения в отклонение без вызова `canUseTool`, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) всё равно может одобрить [некоторые из этих вызовов](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods). Инструменты, предварительно одобренные `allowed_tools`, правилами разрешения в `settings.json` или хуком, выполняются в обычном режиме. Вызовы, не требующие подтверждения в режиме `default`, также выполняются в обычном режиме, например чтение файлов внутри ваших рабочих каталогов и вызовы `Agent`.

265 284 

266Инструменты коннектора, [установленные вашей организацией на `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), инструменты, требующие взаимодействия с пользователем, [чтение из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths) и распознанные [удаления критических путей](https://code.claude.com/docs/ru/permission-modes.md#critical-paths) отклоняются, даже когда правило разрешения совпадает. Разрешение хука `PreToolUse` также не снимает запрет ни на распознанное удаление критического пути, ни на чтение из сетевого пути. Проверка, которая распознает такие удаления, [может пропустить некоторые команды](https://code.claude.com/docs/ru/permission-modes.md#critical-paths).285Эти вызовы отклоняются, даже если им соответствует правило разрешения:

286 

287* Инструменты коннекторов, [для которых ваша организация установила `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools)

288* Инструменты, требующие взаимодействия с пользователем, такие как `AskUserQuestion` и инструменты MCP, сервер которых задаёт [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool)

289* Пользовательские инструменты, для которых ваше приложение устанавливает `permission_policy` в значение [`always_ask`](https://code.claude.com/docs/ru/agent-sdk/custom-tools#require-approval-for-specific-tools)

290* [Чтение из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths)

291* Распознанные [удаления критических путей](https://code.claude.com/docs/ru/permission-modes.md#critical-paths)

292 

293Если ваш хук `PreToolUse` возвращает `allow` для распознанного удаления критического пути, чтения из сетевого пути или вызова инструмента, помеченного `always_ask`, вызов всё равно отклоняется. Проверка, которая распознает такие удаления, [может пропустить некоторые команды](https://code.claude.com/docs/ru/permission-modes.md#critical-paths).

267 294 

268**Используйте когда:** вы хотите фиксированную, явную поверхность инструментов для headless агента и предпочитаете жесткое отклонение молчаливому полаганию на отсутствие `canUseTool`.295**Используйте когда:** вы хотите фиксированную, явную поверхность инструментов для headless агента и предпочитаете жесткое отклонение молчаливому полаганию на отсутствие `canUseTool`.

269 296 

270#### Режим обхода разрешений (`bypassPermissions`)297#### Режим обхода разрешений (`bypassPermissions`)

271 298 

272Автоматически одобряет использование инструментов без запроса, за исключением случаев, перечисленных в предупреждении ниже. Hooks по-прежнему выполняются и могут блокировать операции при необходимости. На Linux и macOS Claude Code отказывается запускаться в этом режиме от имени root или под `sudo` вне [признанной песочницы](https://code.claude.com/docs/ru/permission-modes.md#skip-all-checks-with-bypasspermissions-mode), и запрос завершается ошибкой перед первым ходом.299Автоматически одобряет использование инструментов без запроса, за исключением [действий, которые ни один режим не одобряет автоматически](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves). Хуки по-прежнему выполняются и могут блокировать операции при необходимости. На Linux и macOS Claude Code отказывается запускаться в этом режиме от имени root или под `sudo` вне [признанной песочницы](https://code.claude.com/docs/ru/permission-modes.md#skip-all-checks-with-bypasspermissions-mode), и запрос завершается ошибкой перед первым ходом.

273 300 

274> [!WARNING]301> [!WARNING]

275>302>


278> `allowed_tools` не ограничивает этот режим. Каждый инструмент одобрен, а не только те, которые вы указали. Эти элементы управления по-прежнему применяются:305> `allowed_tools` не ограничивает этот режим. Каждый инструмент одобрен, а не только те, которые вы указали. Эти элементы управления по-прежнему применяются:

279>306>

280> * Правила отклонения, явные правила `ask` и hooks оцениваются перед проверкой режима и могут по-прежнему блокировать инструмент.307> * Правила отклонения, явные правила `ask` и hooks оцениваются перед проверкой режима и могут по-прежнему блокировать инструмент.

281> * Инструменты коннектора, [установленные вашей организацией на `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), инструменты, требующие взаимодействия с пользователем, и распознанные [удаления критических путей](https://code.claude.com/docs/ru/permission-modes.md#critical-paths) по-прежнему переходят к вашему обратному вызову `canUseTool`. Проверка, которая распознает такие удаления, [может пропустить некоторые команды](https://code.claude.com/docs/ru/permission-modes.md#critical-paths).308> * Инструменты коннектора, [установленные вашей организацией на `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), инструменты, требующие взаимодействия с пользователем, и распознанные [удаления критических путей](https://code.claude.com/docs/ru/permission-modes.md#critical-paths) по-прежнему переходят к вашему обратному вызову `canUseTool`. Проверка, которая распознает такие удаления, [может пропустить некоторые команды](https://code.claude.com/docs/ru/permission-modes.md#critical-paths). Вне [облачной сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md) вызовы пользовательских инструментов, которые ваше приложение [помечает как `always_ask`](https://code.claude.com/docs/ru/agent-sdk/custom-tools#require-approval-for-specific-tools), также переходят к обратному вызову.

282> * [Защита обмена сообщениями между сеансами](https://code.claude.com/docs/ru/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) по-прежнему применяется.309> * [Защита обмена сообщениями между сеансами](https://code.claude.com/docs/ru/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) по-прежнему применяется.

283 310 

284#### Режим планирования (`plan`)311#### Режим планирования (`plan`)

285 312 

286Claude исследует кодовую базу и создает план без редактирования исходных файлов. Инструменты только для чтения выполняются так же, как в режиме разрешений `default`.313Claude исследует кодовую базу и создает план без редактирования исходных файлов. Редактирование файлов никогда не одобряется автоматически в режиме планирования, даже когда правило разрешения совпадает или хук `PreToolUse` возвращает `allow`. Вместо этого они запрашиваются через ваш обратный вызов `canUseTool`.

287 314 

288Редактирование файлов никогда не одобряется автоматически в режиме планирования, даже когда правило разрешения совпадает или хук `PreToolUse` возвращает `allow`. Вместо этого они запрашиваются через ваш обратный вызов `canUseTool`. В Claude Code v2.1.212 или более поздней версии команды оболочки, которые изменяют файлы, такие как `touch` и `rm`, достигают вашего обратного вызова `canUseTool` таким же образом.315Пока авторежим доступен для сессии, команды, которые Claude выполняет во время планирования, по умолчанию не достигают вашего обратного вызова, потому что модель-классификатор, которую использует [авторежим](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode), [проверяет их вместо этого](https://code.claude.com/docs/ru/permission-modes.md#analyze-before-you-edit-with-plan-mode). Когда эта проверка включена, классификатор также может одобрять вызовы только для чтения, которые иначе достигли бы вашего обратного вызова, например вызов `WebFetch` без правила разрешения.

289 316 

290В TypeScript SDK, если вы установите `allowDangerouslySkipPermissions: true` вместе с `permissionMode: 'plan'`, редактирование файлов и команды оболочки, которые изменяют файлы, по-прежнему достигают вашего обратного вызова `canUseTool`. Опция позволяет вам позже переключиться на `bypassPermissions` с помощью `setPermissionMode()`.317> [!NOTE]

318>

319> В TypeScript SDK, если вы установите `allowDangerouslySkipPermissions: true` вместе с `permissionMode: 'plan'`, редактирование файлов по-прежнему достигает вашего обратного вызова `canUseTool`. Чтобы позже переключить сессию, которая начинается в режиме планирования, на `bypassPermissions` с помощью `setPermissionMode()`, необходимо задать `allowDangerouslySkipPermissions` с самого начала.

291 320 

292Claude может использовать `AskUserQuestion` для уточнения требований перед финализацией плана. См. [Обработка одобрений и ввода пользователя](https://code.claude.com/docs/ru/agent-sdk/user-input.md#handle-clarifying-questions) для обработки этих запросов.321Claude может использовать `AskUserQuestion` для уточнения требований перед финализацией плана. См. [Обработка одобрений и ввода пользователя](https://code.claude.com/docs/ru/agent-sdk/user-input.md#handle-clarifying-questions) для обработки этих запросов.

293 322 

Details

70>70>

71> Путь должен указывать на корневую директорию plugin: родительскую директорию `skills/`, `agents/`, `hooks/`, `commands/` или `.claude-plugin/`.71> Путь должен указывать на корневую директорию plugin: родительскую директорию `skills/`, `agents/`, `hooks/`, `commands/` или `.claude-plugin/`.

72 72 

73### Добавление плагинов в работающую сессию

74 

75В TypeScript SDK вызовите [`reloadPlugins()`](https://code.claude.com/docs/ru/agent-sdk/typescript#load-more-plugin-folders-with-addplugins) для объекта `Query`, который вернул `query()`, и укажите директорию плагина в опции `addPlugins` этого вызова. Каждая запись `addPlugins` — это объект `{ type: "local", path }` с абсолютным `path`. Требуется TypeScript Agent SDK v0.3.301 или новее.

76 

77В этом примере `q` — это объект `Query`, который вернул `query()`. Пример добавляет одну директорию плагина в работающую сессию и после возврата из `reloadPlugins()` выводит путь каждого плагина в сессии:

78 

79```typescript theme={null}

80const result = await q.reloadPlugins({

81 addPlugins: [{ type: "local", path: "/home/user/plugins/another-plugin" }]

82});

83 

84console.log(result.plugins.map((plugin) => plugin.path));

85```

86 

87Если плагин загрузился, выведенный список содержит `/home/user/plugins/another-plugin`. Если этот путь отсутствует в списке или `reloadPlugins()` завершается с отклонением, причины описаны в разделе [Когда `reloadPlugins()` не загружает папки из `addPlugins`](https://code.claude.com/docs/ru/agent-sdk/typescript#when-reloadplugins-doesnt-load-the-addplugins-folders).

88 

73## Проверка установки plugin89## Проверка установки plugin

74 90 

75Когда plugins загружаются успешно, они появляются в системном сообщении инициализации. Вы можете проверить, что ваши plugins доступны:91Когда plugins загружаются успешно, они появляются в системном сообщении инициализации. Вы можете проверить, что ваши plugins доступны:

Details

200| :- | :- | :- | :- |200| :- | :- | :- | :- |

201| `title` | `string` | `undefined` | Удобочитаемое название инструмента |201| `title` | `string` | `undefined` | Удобочитаемое название инструмента |

202| `readOnlyHint` | `boolean` | `false` | Если `true`, инструмент не изменяет свою среду |202| `readOnlyHint` | `boolean` | `false` | Если `true`, инструмент не изменяет свою среду |

203| `destructiveHint` | `boolean` | `true` | Если `true`, инструмент может выполнять деструктивные обновления (имеет смысл только когда `readOnlyHint` равен `false`) |203| `destructiveHint` | `boolean` | `true` | Если `true`, инструмент может выполнять деструктивные обновления. Явно задайте `destructiveHint: true` для любого инструмента, который вы помечаете как [`always_ask`](#mcpservertoolpolicy), иначе классификатор авторежима может одобрять вызовы этого инструмента вместо вашего обратного вызова `canUseTool`. Оставить `destructiveHint` незаданным недостаточно, потому что при обработке вызовов `always_ask` Claude Code считает незаданный `destructiveHint` равным `false`, хотя по умолчанию в спецификации MCP используется `true` |

204| `idempotentHint` | `boolean` | `false` | Если `true`, повторные вызовы с одинаковыми аргументами не имеют дополнительного эффекта (имеет смысл только когда `readOnlyHint` равен `false`) |204| `idempotentHint` | `boolean` | `false` | Если `true`, повторные вызовы с одинаковыми аргументами не имеют дополнительного эффекта (имеет смысл только когда `readOnlyHint` равен `false`) |

205| `openWorldHint` | `boolean` | `true` | Если `true`, инструмент взаимодействует с внешними сущностями (например, веб-поиск). Если `false`, область инструмента закрыта (например, инструмент памяти) |205| `openWorldHint` | `boolean` | `true` | Если `true`, инструмент взаимодействует с внешними сущностями (например, веб-поиск). Если `false`, область инструмента закрыта (например, инструмент памяти) |

206 206 


630 ): Promise<SDKControlReadFileResponse | null>;630 ): Promise<SDKControlReadFileResponse | null>;

631 reloadPlugins(options?: {631 reloadPlugins(options?: {

632 holdOnCacheImpact?: boolean;632 holdOnCacheImpact?: boolean;

633 addPlugins?: SdkPluginConfig[];

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

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

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


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

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

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

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

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

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

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


1135 1136 

1136`cache_impact` присутствует только вместе с `held: true`. `mcp_servers_added` и `mcp_servers_removed` называют MCP-серверы плагинов, которые перезагрузка зарегистрировала бы или удалила, в виде имён с областью действия `plugin:<plugin>:<server>`. Эти имена задаются авторами плагинов, поэтому проверяйте их перед отображением. `lsp_tool_change` сообщает, добавило бы или удалило применение инструмент LSP, либо равно `null`, если не произошло бы ни того, ни другого. Формы с `may-` означают, что проверка не смогла полностью увидеть ожидающий набор плагинов.1137`cache_impact` присутствует только вместе с `held: true`. `mcp_servers_added` и `mcp_servers_removed` называют MCP-серверы плагинов, которые перезагрузка зарегистрировала бы или удалила, в виде имён с областью действия `plugin:<plugin>:<server>`. Эти имена задаются авторами плагинов, поэтому проверяйте их перед отображением. `lsp_tool_change` сообщает, добавило бы или удалило применение инструмент LSP, либо равно `null`, если не произошло бы ни того, ни другого. Формы с `may-` означают, что проверка не смогла полностью увидеть ожидающий набор плагинов.

1137 1138 

1139#### Загрузка дополнительных папок плагинов с помощью `addPlugins`

1140 

1141Чтобы загрузить папки плагинов, которых не было в параметре [`plugins`](#options) при запуске, передайте их в `reloadPlugins()` как `addPlugins` — список записей [`SdkPluginConfig`](#sdkpluginconfig) с абсолютным `path`. Claude Code загружает новые папки и перезагружает существующие плагины сессии за один проход. MCP-серверы каждого добавленного плагина тоже подключаются, если только вы не установили [`skipMcpDiscovery`](#sdkpluginconfig) в записи этой папки. Требуется Agent SDK v0.3.301 или новее и Claude Code v2.1.301 или новее.

1142 

1143Этот пример добавляет одну папку в работающий запрос `q` и выводит путь установки каждого плагина, загруженного сессией, когда вызов возвращается:

1144 

1145```typescript theme={null}

1146const result = await q.reloadPlugins({

1147 addPlugins: [{ type: "local", path: "/opt/my-app/plugins/reports" }]

1148});

1149 

1150console.log(result.plugins.map((plugin) => plugin.path));

1151```

1152 

1153Если папка загрузилась, выведенный список содержит `/opt/my-app/plugins/reports`, а команды и субагенты плагина появляются в `result.commands` и `result.agents`.

1154 

1155Добавленная папка остаётся частью сессии. Когда вы снова вызываете `reloadPlugins()`, Claude Code перезагружает её вместе с другими плагинами, и передавать её в `addPlugins` повторно не нужно.

1156 

1157##### Когда `reloadPlugins()` не загружает папки из `addPlugins`

1158 

1159Если `reloadPlugins()` отклоняется, ни одна из папок `addPlugins` не добавляется, поэтому при повторной попытке снова передайте их в `addPlugins`. Если отклонение вызвано одной из следующих причин, сессия сохраняет уже имевшиеся плагины:

1160 

1161* **Относительный `path` или некорректная запись**: сообщение об ошибке гласит `add_plugins must be a list of { type: "local", path } entries with absolute paths`. Claude Code отклоняет весь список из-за одной неверной записи, поэтому передавайте каждую запись как `{ type: "local", path }` с абсолютным `path`

1162* **Администратор включил [`disableSideloadFlags`](https://code.claude.com/docs/ru/settings-reference#disablesideloadflags) в ваших управляемых настройках**: сообщение гласит `reload_plugins add_plugins is disabled by managed settings (disableSideloadFlags)`. Чтобы загрузить папку, попросите этого администратора удалить настройку

1163* **[Песочницу](https://code.claude.com/docs/ru/sandboxing.md) не удалось пересобрать**: при включённой [изоляции в песочнице](#sandboxsettings) Claude Code пересобирает конфигурацию песочницы, чтобы shell-команды в песочнице не могли записывать в добавляемые вами папки. Сообщение гласит `the sandbox could not be rebuilt to keep shell commands out of this folder`. Убедитесь, что ваши [настройки песочницы](#sandboxsettings) по-прежнему образуют допустимую конфигурацию

1164 

1165Если вы передаёте `holdOnCacheImpact` и вызов разрешается с [`held: true`](#sdkcontrolreloadpluginsresponse), папки `addPlugins` не добавляются. Чтобы добавить их всё равно, снова вызовите `reloadPlugins()` с тем же списком `addPlugins` и без `holdOnCacheImpact`.

1166 

1167Если вызов разрешается без `held: true`, а папка всё равно отсутствует в `result.plugins`, начните с проверки следующих причин:

1168 

1169* **Папка не существует или её плагин не удалось загрузить**: `result.error_count` равно `1` или больше. Папка всё равно остаётся частью сессии. Исправив папку, снова вызовите `reloadPlugins()`, чтобы загрузить её, на этот раз не указывая её в `addPlugins`

1170* **Исполняемый файл Claude Code старше v2.1.301**: исполняемый файл старше v2.1.301 игнорирует `addPlugins` и перезагружает только плагины, которые уже были в сессии. Проверьте `claude_code_version` в [сообщении init](#sdksystemmessage) и запустите исполняемый файл версии v2.1.301 или новее

1171 

1138### `SDKControlReloadSkillsResponse`1172### `SDKControlReloadSkillsResponse`

1139 1173 

1140Тип возвращаемого значения [`reloadSkills()`](#query-object).1174Тип возвращаемого значения [`reloadSkills()`](#query-object).


1430 1464 

1431#### `McpSdkServerConfigWithInstance`1465#### `McpSdkServerConfigWithInstance`

1432 1466 

1467Конфигурация внутрипроцессного MCP-сервера — сервера, который создаёт [`createSdkMcpServer()`](#createsdkmcpserver) и который работает внутри процесса вашего приложения. Это объект, возвращаемый `createSdkMcpServer()`, плюс необязательный список `tools` из записей [`McpServerToolPolicy`](#mcpservertoolpolicy), который вы добавляете сами. Чтобы требовать подтверждения для вызовов одного из инструментов сервера или запретить их, добавьте запись с именем этого инструмента.

1468 

1433```typescript theme={null}1469```typescript theme={null}

1434type McpSdkServerConfigWithInstance = {1470type McpSdkServerConfigWithInstance = {

1435 type: "sdk";1471 type: "sdk";

1436 name: string;1472 name: string;

1437 timeout?: number;1473 timeout?: number;

1474 tools?: McpServerToolPolicy[];

1438 instance: McpServer;1475 instance: McpServer;

1439};1476};

1440```1477```

1441 1478 

1479Чтобы задать политику, разверните объект, возвращаемый `createSdkMcpServer()`, в новый объект в `mcpServers` и добавьте список `tools` в этот новый объект. Параметр `tools` самой функции `createSdkMcpServer()` — это другой список, который содержит определения инструментов и не принимает записи политик. Список политик требует Agent SDK v0.3.301 или новее, а то, что делает каждое значение `permission_policy`, описано в [`McpServerToolPolicy`](#mcpservertoolpolicy).

1480 

1481Этот пример заранее одобряет все инструменты сервера `records` с помощью подстановочного знака в `allowedTools`, а затем помечает `delete_record` как `always_ask`, чтобы вызовы этого инструмента всё равно направлялись в `canUseTool`. Благодаря аннотации `destructiveHint: true` вызов по-прежнему доходит до callback-функции, если сессия работает в режиме `auto`, где иначе его мог бы одобрить [классификатор](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode) авторежима.

1482 

1483```typescript theme={null}

1484import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";

1485import { z } from "zod";

1486 

1487const deleteRecord = tool(

1488 "delete_record",

1489 "Delete a customer record by ID",

1490 { id: z.string() },

1491 async ({ id }) => ({ content: [{ type: "text", text: `Deleted record ${id}` }] }),

1492 { annotations: { destructiveHint: true } }

1493);

1494 

1495const records = createSdkMcpServer({ name: "records", tools: [deleteRecord] });

1496 

1497for await (const message of query({

1498 prompt: "Delete customer record 42",

1499 options: {

1500 mcpServers: {

1501 // Spread the returned config and add the policy list beside it

1502 records: {

1503 ...records,

1504 tools: [{ name: "delete_record", permission_policy: "always_ask" as const }]

1505 }

1506 },

1507 allowedTools: ["mcp__records__*"],

1508 canUseTool: async (toolName, input) => {

1509 console.log(`Approval requested for ${toolName}`);

1510 return { behavior: "allow", updatedInput: input };

1511 }

1512 }

1513})) {

1514 if (message.type === "result" && message.subtype === "success") {

1515 console.log(message.result);

1516 }

1517}

1518```

1519 

1520Когда Claude вызывает инструмент, скрипт выводит `Approval requested for mcp__records__delete_record` до запуска инструмента `delete_record`, хотя в противном случае запись `allowedTools` одобрила бы этот вызов.

1521 

1522Чтобы изменить или снять политику инструмента во время работы сессии, передайте конфигурацию сервера с новым значением `tools` в [`setMcpServers()`](#mcpsetserversresult). Переданное значение `tools` вступает в силу со следующего вызова Claude к инструментам этого сервера:

1523 

1524* **Список с записями**: записи заменяют текущие политики

1525* **Пустой список**: все политики сервера очищаются

1526* **Нет ключа `tools`**: текущие политики сохраняются

1527 

1528Включите в этот вызов другие ваши внутрипроцессные серверы и любой сервер, добавленный предыдущим вызовом `setMcpServers()`, иначе вызов отключит их.

1529 

1530#### `McpServerToolPolicy`

1531 

1532Одна запись в списке `tools` конфигурации [`McpSdkServerConfigWithInstance`](#mcpsdkserverconfigwithinstance), которая называет один из инструментов сервера и задаёт политику разрешений для вызовов этого инструмента. Список требует Agent SDK v0.3.301 или новее и Claude Code v2.1.301 или новее. Более старый исполняемый файл Claude Code, например тот, на который вы указываете через `pathToClaudeCodeExecutable`, игнорирует список. В этом случае `always_ask` и `always_deny` не применяются, и каждый вызов проходит через [процесс оценки разрешений](https://code.claude.com/docs/ru/agent-sdk/permissions.md#how-permissions-are-evaluated).

1533 

1534```typescript theme={null}

1535type McpServerToolPolicy = {

1536 name: string;

1537 permission_policy?: "always_allow" | "always_ask" | "always_deny";

1538 org_max_permission?: "allow" | "ask" | "blocked";

1539};

1540```

1541 

1542| Поле | Тип | Описание |

1543| :- | :- | :- |

1544| `name` | `string` | Простое имя инструмента в том виде, в каком оно передано в [`tool()`](#tool), без префикса `mcp__<server>__` |

1545| `permission_policy` | `'always_allow' \| 'always_ask' \| 'always_deny'` | Политика подтверждения для вызовов инструмента: [`always_ask` или `always_deny`](#permission-policy-values). `always_allow` игнорируется на внутрипроцессном сервере: чтобы заранее одобрить инструмент, укажите его вместо этого в [`allowedTools`](#options) |

1546| `org_max_permission` | `'allow' \| 'ask' \| 'blocked'` | Потолок для отдельного инструмента, который задаёт администратор организации. Игнорируется на внутрипроцессном сервере, поэтому не задавайте его |

1547 

1548##### Значения `permission_policy`

1549 

1550Выберите `always_ask`, чтобы самостоятельно подтверждать каждый вызов, или `always_deny`, чтобы полностью заблокировать инструмент:

1551 

1552* **`always_ask`**: каждый вызов инструмента [требует подтверждения](https://code.claude.com/docs/ru/agent-sdk/permissions.md#how-permissions-are-evaluated), даже если его покрывает запись `allowedTools` или разрешающее правило. Вызов направляется в вашу callback-функцию `canUseTool` или инструмент [`permissionPromptToolName`](#options), если только он не будет решён раньше. [Мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) в загружаемом вами плагине [может одобрить его первым](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods). В остальных случаях в режиме `dontAsk` он отклоняется, а в [режимах `auto`, `plan` и `bypassPermissions`](#permission-modes-that-can-approve-an-always_ask-call) он может быть одобрен до того, как дойдёт до вашей callback-функции

1553* **`always_deny`**: вызов инструмента [отклоняется](https://code.claude.com/docs/ru/agent-sdk/permissions.md#how-permissions-are-evaluated) в любом режиме разрешений, включая `bypassPermissions`, но мод в загружаемом вами плагине [всё равно может его одобрить](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods)

1554 

1555Если вы не передаёте ни `canUseTool`, ни `permissionPromptToolName` или устанавливаете [`permissionPrompts`](#options) в `'none'`, вызов `always_ask`, который не был решён раньше, отклоняется, если его не разрешит [хук `PermissionRequest`](https://code.claude.com/docs/ru/hooks#permissionrequest).

1556 

1557##### Режимы разрешений, которые могут одобрить вызов `always_ask`

1558 

1559В режимах `auto`, `plan` и `bypassPermissions` вызов инструмента, помеченного [`always_ask`](#permission-policy-values), может быть одобрен до того, как дойдёт до вашей callback-функции `canUseTool`. Найдите режим своей сессии в этом списке, чтобы узнать, когда происходит это одобрение и что задать, чтобы вызов всё равно доходил до вашей callback-функции:

1560 

1561* **`auto`**: [классификатор](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode) авторежима проверяет вызов и может его разрешить. Чтобы каждый вызов доходил до вашей callback-функции в режиме `auto`, установите `destructiveHint: true` в [аннотациях](#toolannotations) инструмента

1562* **`plan`**: пока [авторежим доступен](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode) для сессии, вызовы инструмента `always_ask` с аннотацией `readOnlyHint: true` направляются в классификатор авторежима, который может их разрешить. Вызовы других инструментов `always_ask` доходят до вашей callback-функции. Чтобы вызовы инструмента только для чтения тоже доходили до вашей callback-функции, добавьте `destructiveHint: true` в аннотации этого инструмента наряду с `readOnlyHint: true`. Либо установите [`useAutoModeDuringPlan`](https://code.claude.com/docs/ru/settings-reference#useautomodeduringplan) в `false`, что отключает классификатор во время планирования

1563* **`bypassPermissions`**: когда переменная окружения [`CLAUDE_CODE_REMOTE`](https://code.claude.com/docs/ru/env-vars#variables) равна `true`, как в [облачной сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md), вызов одобряется без вашей callback-функции, независимо от аннотаций инструмента. В любом другом месте вызов доходит до вашей callback-функции. Чтобы он доходил до вашей callback-функции и в облачной сессии, запускайте сессию вместо этого в режиме `default` или `acceptEdits`

1564 

1565В режимах `auto` и `plan` явно устанавливайте `destructiveHint` в `true`. Для вызовов `always_ask` Claude Code считает незаданный `destructiveHint` равным `false`, хотя значение по умолчанию, указанное в [`ToolAnnotations`](#toolannotations), — `true`.

1566 

1442#### `McpClaudeAIProxyServerConfig`1567#### `McpClaudeAIProxyServerConfig`

1443 1568 

1444```typescript theme={null}1569```typescript theme={null}


1464| Поле | Тип | Описание |1589| Поле | Тип | Описание |

1465| :- | :- | :- |1590| :- | :- | :- |

1466| `type` | `'local'` | Должно быть `'local'` (в настоящее время поддерживаются только локальные плагины) |1591| `type` | `'local'` | Должно быть `'local'` (в настоящее время поддерживаются только локальные плагины) |

1467| `path` | `string` | Абсолютный или относительный путь к каталогу плагина |1592| `path` | `string` | Путь к каталогу плагина. Относительный путь разрешается относительно параметра [`cwd`](#options) при запуске сессии. Путь должен быть абсолютным, когда вы загружаете плагин во время сессии с помощью [`addPlugins`](#load-more-plugin-folders-with-addplugins) |

1468| `skipMcpDiscovery` | `boolean` | Если `true`, SDK загружает скиллы, хуки, агентов и команды из этого плагина, но не читает его `.mcp.json` или `mcpServers` из манифеста. Задайте этот параметр, если MCP-подключениями плагина управляет ваше приложение. |1593| `skipMcpDiscovery` | `boolean` | Если `true`, SDK загружает скиллы, хуки, агентов и команды из этого плагина, но не читает его `.mcp.json` или `mcpServers` из манифеста. Задайте этот параметр, если MCP-подключениями плагина управляет ваше приложение. |

1469 1594 

1470**Пример:**1595**Пример:**


5074};5199};

5075```5200```

5076 5201 

5077`source` указывает, откуда поступило определение сервера, с теми же значениями и правилом доверия, что и `source` в [`McpServerProvenance`](#mcpserverprovenance). Поле требует Agent SDK v0.3.274 или более поздней версии и отсутствует в более ранних версиях.5202Используйте `source`, чтобы решить, насколько доверять серверу, а `_meta` в каждой записи `tools` — чтобы найти UI-ресурс, который сервер прикрепил к этому инструменту:

5203 

5204* **`source`**: откуда поступило определение сервера, с теми же значениями, что и у `source` в [`McpServerProvenance`](#mcpserverprovenance). Основывайте решения о доверии на `source`, а не на `name`, потому что только ваш собственный встроенный в процесс сервер сообщает `sdk`, под каким бы именем ни был зарегистрирован любой другой сервер. Если значение `source` вам незнакомо, обращайтесь с этим сервером так же, как с любым сервером, у которого `source` не равен `sdk`. Требует Agent SDK v0.3.274 или более поздней версии

5205* **`_meta`**: объект `ui` и строка `ui/resourceUri` из `_meta`, который сервер объявил для инструмента. Claude Code скрывает все остальные ключи `_meta`. `ui/resourceUri` — это более старое написание `ui.resourceUri` на верхнем уровне. Когда сервер прикрепляет к инструменту [UI-ресурс MCP Apps](https://code.claude.com/docs/ru/mcp.md#reference-mcp-resources), `ui.resourceUri` или `ui/resourceUri` содержит URI `ui://` этого ресурса. Получите ресурс по этому URI с помощью [`readMcpResource()`](#query-object) и отобразите его в своём приложении. Требует Agent SDK v0.3.280 или более поздней версии

5206 

5207Claude Code отправляет `_meta`, только когда массив [`capabilities`](#sdksystemmessage) сообщения `system` с подтипом `init` содержит `mcp_tool_ui_meta_v1`. Включать `mcp_tool_ui_meta_v1` самостоятельно не нужно.

5208 

5209#### Когда `_meta.ui` инструмента содержит только `visibility`

5210 

5211Если ваш сервер объявляет `ui.resourceUri` для инструмента, но `_meta.ui`, который получает ваше приложение, содержит только `visibility`, значит объект `ui`, отправленный сервером, не прошёл одну из проверок Claude Code. Claude Code проверяет `ui` и `ui/resourceUri` по отдельности, поэтому один ключ может дойти до вашего приложения, даже если другой не прошёл проверку. Сравните `_meta` в ответе `tools/list` вашего сервера с проверками для каждого ключа:

5212 

5213* **`ui`**: доходит до вашего приложения без изменений, включая любые члены помимо `resourceUri` и `visibility`, если пройдены все три проверки:

5214 

5215 * `resourceUri` отсутствует или является строкой, которая начинается с `ui://`

5216 * `visibility` отсутствует или содержит только `"model"` и `"app"`

5217 * Весь объект при сериализации в JSON занимает не более 4096 символов

5218 

5219 Если какая-либо из проверок не пройдена, ваше приложение получает самое большее `ui`, единственным членом которого является массив `visibility` с теми записями `"model"` и `"app"`, которые перечислил сервер.

5220* **`ui/resourceUri`**: доходит до вашего приложения, если это строка, которая начинается с `ui://` и занимает не более 4096 символов. В противном случае Claude Code отбрасывает её

5078 5221 

5079`_meta` в записи `tools` содержит члены MCP Apps из `_meta` этого инструмента, чтобы ваше приложение могло найти ресурс `ui://` для отображения с помощью [`readMcpResource()`](#query-object). Claude Code пропускает объект `ui` и устаревшую плоскую строку `ui/resourceUri` и скрывает все остальные ключи. Внутри `ui` значение `resourceUri` является строкой `ui://`, а `visibility` — массивом из `"model"` и `"app"`, когда сервер их устанавливает, а любой другой член пропускается без изменений. Claude Code отбрасывает любой из этих ключей, если значение имеет неверный формат, и опускает `_meta` у инструмента, который не объявляет ни один из них. Поле присутствует, только когда [`capabilities`](#sdksystemmessage) инициализирующего сообщения включают `mcp_tool_ui_meta_v1`, и требует TypeScript Agent SDK v0.3.280 или более поздней версии.5222Когда у Claude Code не остаётся ни члена `ui`, ни строки `ui/resourceUri` для отправки, запись `tools` вообще не содержит `_meta`.

5080 5223 

5081### `McpServerStatusConfig`5224### `McpServerStatusConfig`

5082 5225 


5311Когда вы вызываете `setMcpServers()`, Claude Code применяет следующие правила:5454Когда вы вызываете `setMcpServers()`, Claude Code применяет следующие правила:

5312 5455 

5313* **Серверы, которые вызов не называет**: вне [облачной сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md) Claude Code отключает серверы, добавленные предыдущим вызовом `setMcpServers()`, и встроенные в процесс SDK-серверы, и перечисляет их в `removed`. Остальные серверы продолжают работать и не перечисляются в `removed`, в том числе stdio-, HTTP- и SSE-серверы из опции [`mcpServers`](#options), серверы из файлов настроек и серверы, предоставленные плагинами.5456* **Серверы, которые вызов не называет**: вне [облачной сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md) Claude Code отключает серверы, добавленные предыдущим вызовом `setMcpServers()`, и встроенные в процесс SDK-серверы, и перечисляет их в `removed`. Остальные серверы продолжают работать и не перечисляются в `removed`, в том числе stdio-, HTTP- и SSE-серверы из опции [`mcpServers`](#options), серверы из файлов настроек и серверы, предоставленные плагинами.

5314* **Серверы, которые вызов называет**: Claude Code заменяет stdio-, HTTP- или SSE-сервер, добавленный предыдущим вызовом `setMcpServers()`, только если его конфигурация отличается от переданной вами. Встроенный в процесс SDK-сервер, уже зарегистрированный под этим именем, остаётся без изменений, поэтому, чтобы заменить его, исключите его из одного вызова и добавьте в следующем.5457* **Stdio-, HTTP- и SSE-серверы, добавленные предыдущим вызовом `setMcpServers()`**: вне облачной сессии сервер, который вы снова называете с идентичной конфигурацией, сохраняет своё подключение и инструменты. Он не появляется ни в `added`, ни в `removed`. Если вы передаёте изменённую конфигурацию, Claude Code переподключает сервер с этой конфигурацией и перечисляет его в `added`, а не в `removed`.

5458* **Stdio-, HTTP- и SSE-серверы, которые вызов называет и которые не добавлял ни один предыдущий вызов**: вне облачной сессии Claude Code добавляет сервер и перечисляет его в `added` или в `errors`, если отказывается его принять.

5459* **Встроенные в процесс SDK-серверы, которые называет вызов**: сервер, уже зарегистрированный через `mcpServers` или предыдущим вызовом, сохраняет свой работающий экземпляр и таймаут. Если вы передаёте для него [список политик `tools`](#mcpsdkserverconfigwithinstance), даже пустой, вы заменяете его политики; в противном случае они сохраняются. Чтобы запустить новый экземпляр вне облачной сессии, исключите сервер из одного вызова и назовите его в следующем.

5315* **Встроенные серверы, которые CLI запустил при старте**: если вызов называет такой сервер, Claude Code отбрасывает эту запись и сообщает о ней в `errors`.5460* **Встроенные серверы, которые CLI запустил при старте**: если вызов называет такой сервер, Claude Code отбрасывает эту запись и сообщает о ней в `errors`.

5316* **Stdio-, HTTP- или SSE-серверы, имя которых совпадает с именем сервера из области действия установки MCP, например `.mcp.json`**: под этим именем сессия использует инструменты вашего сервера, а не [сервера из области действия установки](https://code.claude.com/docs/ru/mcp.md#mcp-installation-scopes). До Claude Code v2.1.305 Claude Code мог отключить ваш сервер и подключить сервер из области действия установки, когда ваше приложение [перезагружало плагины](#query-object).5461* **Stdio-, HTTP- или SSE-серверы, имя которых совпадает с именем сервера из области действия установки MCP, например `.mcp.json`**: под этим именем сессия использует инструменты вашего сервера, а не [сервера из области действия установки](https://code.claude.com/docs/ru/mcp.md#mcp-installation-scopes). До Claude Code v2.1.305 Claude Code мог отключить ваш сервер и подключить сервер из области действия установки, когда ваше приложение [перезагружало плагины](#query-object).

5317 5462 


5798 5943 

5799Опубликованные типизации SDK объявляют `SDKConversationResetMessage` в Claude Code v2.1.203 и более поздних версиях. До v2.1.203 `SDKMessage` ссылался на этот тип, не объявляя его, поэтому сужение по `type === "conversation_reset"` не проходило проверку типов, когда `skipLibCheck` был отключён.5944Опубликованные типизации SDK объявляют `SDKConversationResetMessage` в Claude Code v2.1.203 и более поздних версиях. До v2.1.203 `SDKMessage` ссылался на этот тип, не объявляя его, поэтому сужение по `type === "conversation_reset"` не проходило проверку типов, когда `skipLibCheck` был отключён.

5800 5945 

5946### `BUILTIN_TOOL_NAMES` и `LEGACY_TOOL_NAME_ALIASES`

5947 

5948Используйте эти две константы, чтобы проверять имена инструментов, которые вводят пользователи вашего приложения. Обе записывают каждое имя так, как вы пишете его в правилах разрешений, matcher хуков и опциях `tools` и `disallowedTools`. Импортируйте их из `@anthropic-ai/claude-agent-sdk` или из `@anthropic-ai/claude-agent-sdk/core`. Они требуют Agent SDK v0.3.301 или более поздней версии и находятся в стадии альфа.

5949 

5950Объявления типов SDK задают для `BUILTIN_TOOL_NAMES` тип readonly-кортежа, а для `LEGACY_TOOL_NAME_ALIASES` — тип записи (record), отображающей строки в строки:

5951 

5952```typescript theme={null}

5953const BUILTIN_TOOL_NAMES: readonly ["Agent", /* ...другие имена... */ "Write"];

5954const LEGACY_TOOL_NAME_ALIASES: Readonly<Record<string, string>>;

5955```

5956 

5957* **`BUILTIN_TOOL_NAMES`**: имена встроенных инструментов Claude Code в алфавитном порядке, например `Agent`, `Bash` и `Read`. Имена MCP-инструментов не включены. Поскольку тип является кортежем строковых литералов, `(typeof BUILTIN_TOOL_NAMES)[number]` даёт вам объединённый тип этих имён

5958* **`LEGACY_TOOL_NAME_ALIASES`**: прежние имена инструментов, которые по-прежнему принимают правила разрешений, matcher хуков и опции `tools` и `disallowedTools`. Каждый ключ — прежнее имя, а его значение — текущее: например, `Task` соответствует `Agent`, а `KillShell` и `KillBash` соответствуют `TaskStop`

5959 

5960Подтвердить имя можно любой из двух проверок: `BUILTIN_TOOL_NAMES` содержит его или `Object.hasOwn(LEGACY_TOOL_NAME_ALIASES, name)` возвращает `true`. Имя, не прошедшее обе проверки, всё равно может быть допустимым, потому что `BUILTIN_TOOL_NAMES` не включает MCP-инструменты и некоторые встроенные инструменты. Если вы составляете список запретов из `BUILTIN_TOOL_NAMES`, Claude всё равно сможет использовать инструменты, которые константа не включает. Чтобы запретить все инструменты, вместо этого установите [`disallowedTools: ["*"]`](https://code.claude.com/docs/ru/agent-sdk/permissions#allow-and-deny-rules).

5961 

5962Наличие имени в `BUILTIN_TOOL_NAMES` не означает, что у сессии есть этот инструмент: `TodoWrite` перечислен, хотя он [отключён по умолчанию](https://code.claude.com/docs/ru/tools-reference.md). Чтобы узнать, какие инструменты есть у сессии, прочитайте массив `tools` её [`SDKSystemMessage`](#sdksystemmessage). Этот массив включает MCP-инструменты и указывает инструмент Agent как `Task`, поэтому сопоставьте каждое имя через `LEGACY_TOOL_NAME_ALIASES`, прежде чем сравнивать его с `BUILTIN_TOOL_NAMES`.

5963 

5801### `AbortError`5964### `AbortError`

5802 5965 

5803Пользовательский класс ошибки для операций отмены.5966Пользовательский класс ошибки для операций отмены.

agent-teams.md +1 −1

Details

188 188 

189### Назначение и взятие задач189### Назначение и взятие задач

190 190 

191Общий список задач координирует работу по всей команде. Лидер создает задачи, а товарищи по команде работают над ними. Задачи имеют три состояния: ожидание, в процессе и завершено. Задачи также могут зависеть от других задач: ожидающая задача с неразрешенными зависимостями не может быть взята до завершения этих зависимостей.191Общий список задач координирует работу по всей команде. Лидер создает задачи, а товарищи по команде работают над ними. Задачи имеют три состояния: ожидание, в процессе и завершено. Задача также может зависеть от других задач и отображается в списке задач как заблокированная, пока они не будут завершены. Товарищи по команде не берут заблокированную задачу самостоятельно, но вы или лидер всё равно можете её назначить.

192 192 

193Агенты [без инструментов Task](https://code.claude.com/docs/ru/tools-reference.md#task-tool-availability) координируют через сообщения вместо общего списка задач.193Агенты [без инструментов Task](https://code.claude.com/docs/ru/tools-reference.md#task-tool-availability) координируют через сообщения вместо общего списка задач.

194 194 

agent-view.md +18 −9

Details

206* Завершённая сессия: её результат206* Завершённая сессия: её результат

207* Работающая сессия: её полное предложение о статусе207* Работающая сессия: её полное предложение о статусе

208 208 

209Далее перечисляются все pull request, связанные с сессией. Для сессии, ожидающей вас, строка под ними, например `waiting 3m`, показывает, как долго она ждёт, и это единственное время, показанное на панели. Возраст у правого края строки — другое число: он отсчитывается с момента запуска сессии.209Далее перечисляются все pull request, связанные с сессией. Для сессии, которая ожидает вас или работает в безопасном режиме, под ними появляется ещё одна строка:

210 

211* Строка вроде `waiting 3m`: как долго сессия ожидает вас. Возраст у правого края строки — другое число: он отсчитывается с момента запуска сессии

212* `safe mode · customizations are off`: эта сессия работает с [отключёнными пользовательскими настройками](https://code.claude.com/docs/ru/debug-your-config.md#test-against-a-clean-configuration), потому что вы запустили её из оболочки командой `claude --bg --safe-mode`. Её можно оставить как есть. Чтобы продолжить диалог с включёнными пользовательскими настройками, выполните [`claude stop <id>`](#manage-sessions-from-the-shell), а затем [`claude --resume`](https://code.claude.com/docs/ru/sessions#resume-a-session), обе команды — в оболочке

210 213 

211В большинстве случаев панели просмотра достаточно, и открывать полный транскрипт не нужно.214В большинстве случаев панели просмотра достаточно, и открывать полный транскрипт не нужно.

212 215 


468 471 

469#### Что переносится при отправке в фон472#### Что переносится при отправке в фон

470 473 

471При отправке в фон запускается новый процесс, который возобновляет работу из сохранённого диалога, и выполняющаяся фоновая работа переходит в него: запущенные фоновые shell-команды, субагенты в фоне, динамические рабочие процессы, запланированные задачи, созданные с помощью [`/loop`](https://code.claude.com/docs/ru/scheduled-tasks), и [автоматические ответы Claude на комментарии к артефактам](https://code.claude.com/docs/ru/artifacts.md#let-claude-reply-to-comments-on-its-own) — всё это переносится и продолжает выполняться там. Субагент переходит вместе со всем, что он запустил, поэтому он переносится, только если вся эта работа тоже может перейти.474При отправке сессии в фон каждый вид выполняющейся фоновой работы либо переносится в фоновую сессию, либо продолжается, только когда Claude перезапустит его там, либо останавливается:

472 

473Если в [динамическом рабочем процессе](https://code.claude.com/docs/ru/workflows.md) ещё выполняются субагенты, Claude Code перед отправкой в фон показывает диалоговое окно `Background this session?`, в котором указано, сколько субагентов будет перезапущено. Выберите `Stay`, чтобы сначала дать им завершиться. Если вы подтвердите, Claude Code воспроизведёт запуск в фоновой сессии: субагенты, которые ещё выполнялись, начнут работу с самого начала, поэтому уже израсходованные ими токены будут потрачены снова. О том, какие завершённые субагенты возвращают сохранённые результаты, а какие запускаются заново, см. в разделе [Возобновление после паузы](https://code.claude.com/docs/ru/workflows.md#resume-after-a-pause).

474 475 

475Claude Code останавливает фоновую работу, которую нельзя перенести, например запущенный [монитор](https://code.claude.com/docs/ru/tools-reference.md#monitor-tool), а вместе с ним — и субагента в фоне, которому принадлежит монитор. Если такая работа выполняется, Claude Code показывает диалоговое окно `Background this session?`, чтобы вы подтвердили её остановку.476* **Переносится**: запущенные фоновые shell-команды, субагенты в фоне, запланированные задачи, созданные с помощью [`/loop`](https://code.claude.com/docs/ru/scheduled-tasks), и [автоматические ответы Claude на комментарии к артефактам](https://code.claude.com/docs/ru/artifacts.md#let-claude-reply-to-comments-on-its-own) продолжают выполняться в фоновой сессии. Субагент переходит вместе со всем, что он запустил, поэтому он переносится, только если вся эта работа тоже может перейти.

477* **Продолжается, только когда Claude перезапустит его**: выполняющийся [динамический рабочий процесс](https://code.claude.com/docs/ru/workflows.md). Если рабочий процесс не продолжился к моменту, когда вы проверяете фоновую сессию, [попросите Claude перезапустить его](#dynamic-workflows-when-you-background).

478* **Останавливается**: работа, которую нельзя перенести в фоновую сессию, например запущенный [монитор](https://code.claude.com/docs/ru/tools-reference.md#monitor-tool). Если такая работа выполняется, Claude Code показывает диалоговое окно `Background this session?`, чтобы вы подтвердили её остановку. Субагент в фоне, которому принадлежит монитор, останавливается вместе с монитором.

476 479 

477Уже находясь в фоне, сессия может запускать новых субагентов, мониторы и фоновые команды, и они продолжают работать при последующих отключениях и повторных подключениях.480Уже находясь в фоне, сессия может запускать новых субагентов, мониторы и фоновые команды, и они продолжают работать при последующих отключениях и повторных подключениях.

478 481 


488 491 

489Каталоги, добавленные во время сессии с помощью [`/add-dir`](https://code.claude.com/docs/ru/permissions#additional-directories-grant-file-access-not-configuration), тоже переносятся. Перенос `--allow-dangerously-skip-permissions` сохраняет доступность `bypassPermissions` в фоновой сессии, но не даёт ничего нового: режим по-прежнему требует, чтобы ваше [согласие с предупреждением об обходе разрешений](https://code.claude.com/docs/ru/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) уже было зафиксировано.492Каталоги, добавленные во время сессии с помощью [`/add-dir`](https://code.claude.com/docs/ru/permissions#additional-directories-grant-file-access-not-configuration), тоже переносятся. Перенос `--allow-dangerously-skip-permissions` сохраняет доступность `bypassPermissions` в фоновой сессии, но не даёт ничего нового: режим по-прежнему требует, чтобы ваше [согласие с предупреждением об обходе разрешений](https://code.claude.com/docs/ru/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) уже было зафиксировано.

490 493 

494##### Динамические рабочие процессы при отправке в фон

495 

496Если [динамический рабочий процесс](https://code.claude.com/docs/ru/workflows.md) не продолжился после того, как вы отправили его сессию в фон, попросите Claude [перезапустить рабочий процесс](https://code.claude.com/docs/ru/workflows.md#resume-after-you-leave-the-session). Запуск продолжается, только когда Claude перезапускает его в фоновой сессии, и Claude Code может сначала попросить вас подтвердить этот перезапуск. В диалоге сессии отображается уведомление о том, что рабочий процесс `could not be resumed`.

497 

498Когда Claude перезапускает рабочий процесс, все его субагенты, которые ещё выполнялись в момент отправки сессии в фон, начинают работу заново и снова расходуют свои токены. Если вы нажмёте `←` или выполните `/background`, пока какие-либо из них ещё выполняются, в диалоговом окне `Background this session?` указывается, сколько их. Чтобы сначала дать им завершиться, выберите `Stay`.

499 

491### Отправка агента из оболочки500### Отправка агента из оболочки

492 501 

493Передайте `--bg` или его полную форму `--background`, чтобы запустить сессию, которая сразу уходит в фон:502Передайте `--bg` или его полную форму `--background`, чтобы запустить сессию, которая сразу уходит в фон:


844* **После автоматического обновления**: супервизор перезапускает себя на новую версию и переносит неактивные сессии в фоновом режиме. Сессии, которые работают, ожидают вас или подключены, не прерываются.853* **После автоматического обновления**: супервизор перезапускает себя на новую версию и переносит неактивные сессии в фоновом режиме. Сессии, которые работают, ожидают вас или подключены, не прерываются.

845* **Сам супервизор останавливается**, например потому, что его процесс был завершён извне Claude Code: в macOS и Linux ваши сессии останавливаются, если к ним примерно в течение минуты не подключится новый супервизор. Чтобы запустить его, выполните `claude agents` в своей оболочке. Если эта минута прошла, см. [Сохранение работы сессий после остановки супервизора](#keep-sessions-running-after-the-supervisor-stops).854* **Сам супервизор останавливается**, например потому, что его процесс был завершён извне Claude Code: в macOS и Linux ваши сессии останавливаются, если к ним примерно в течение минуты не подключится новый супервизор. Чтобы запустить его, выполните `claude agents` в своей оболочке. Если эта минута прошла, см. [Сохранение работы сессий после остановки супервизора](#keep-sessions-running-after-the-supervisor-stops).

846 855 

847Когда процесс сессии останавливается или перезапускается, фоновые команды оболочки, динамические рабочие процессы и фоновые субагенты, которые Claude запустил в ней, переносятся в её следующий процесс; работающие мониторы и команды оболочки, которые запустил субагент, останавливаются вместе с процессом. Удаление сессии останавливает всё, что она перенесла. Чтобы вместо этого останавливать всё это вместе с процессом, установите [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](https://code.claude.com/docs/ru/env-vars#variables) в значение `1`.856Когда процесс сессии останавливается или перезапускается, фоновые команды оболочки и фоновые субагенты, которые Claude запустил в ней, переносятся в её следующий процесс. Динамический рабочий процесс [продолжается, только если Claude перезапустит его](#dynamic-workflows-when-you-background). Работающие мониторы и команды оболочки, которые запустил субагент, останавливаются вместе с процессом. Если вы удалите сессию, всё, что она перенесла, остановится. Чтобы вместо этого останавливать всё это вместе с процессом, установите [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](https://code.claude.com/docs/ru/env-vars#variables) в значение `1`.

848 857 

849Супервизор и его сессии аутентифицируются с теми же сохранёнными учётными данными, что и ваши интерактивные сессии. О том, какие настройки и переменные оболочки доходят до сессии, включая `PATH`, см. [Settings and provider](#settings-and-provider). Об эндпоинтах шлюза см. [LLM gateway](#llm-gateway).858Супервизор и его сессии аутентифицируются с теми же сохранёнными учётными данными, что и ваши интерактивные сессии. О том, какие настройки и переменные оболочки доходят до сессии, включая `PATH`, см. [Settings and provider](#settings-and-provider). Об эндпоинтах шлюза см. [LLM gateway](#llm-gateway).

850 859 


897 906 

898### При переводе в фоновый режим показывается диалоговое окно `Background this session?`907### При переводе в фоновый режим показывается диалоговое окно `Background this session?`

899 908 

900Если при нажатии `←` для перевода текущей сессии в фоновый режим Claude Code показывает диалоговое окно `Background this session?`, значит, в сессии выполняется фоновая работа, которую перевод в фоновый режим остановил бы, перезапустил или оставил бы работать без присмотра, и Claude Code запрашивает подтверждение перед любым из этих действий:909Когда вы нажимаете `←`, чтобы перевести сессию в фоновый режим, диалоговое окно `Background this session?` означает, что в сессии выполняется фоновая работа, которая будет остановлена, прервана или продолжит работать без присмотра:

901 910 

902* **Работа, которую нельзя перенести**: в сессии есть работа, которую нельзя перенести в фоновую сессию, например работающий [монитор](https://code.claude.com/docs/ru/tools-reference.md#monitor-tool). Диалоговое окно называет фоновую работу, которую Claude Code остановит, и отдельно указывает количество задач, которые будут перенесены.911* **Работа, которую нельзя перенести**: в сессии есть работа, которую нельзя перенести в фоновую сессию, например работающий [монитор](https://code.claude.com/docs/ru/tools-reference.md#monitor-tool). Диалоговое окно называет фоновую работу, которую Claude Code остановит, и отдельно указывает количество задач, которые будут перенесены.

903* **Workflow с работающими субагентами**: у [динамического workflow](https://code.claude.com/docs/ru/workflows.md) всё ещё работают субагенты. Сам workflow переносится, но его работающие субагенты перезапускаются с начала, и диалоговое окно указывает, сколько их.912* **Workflow с работающими субагентами**: у [динамического workflow](https://code.claude.com/docs/ru/workflows.md) всё ещё работают субагенты. Если вы всё же переведёте сессию в фоновый режим, эти субагенты остановятся, и диалоговое окно указывает, сколько их. Они начнут заново с самого начала, когда Claude [перезапустит workflow в фоновой сессии](#dynamic-workflows-when-you-background).

904* **Автоматические ответы в артефакте**: Claude [самостоятельно отвечает на комментарии к артефакту](https://code.claude.com/docs/ru/artifacts.md#let-claude-reply-to-comments-on-its-own). Эти ответы продолжаются в фоновой сессии, и диалоговое окно сообщает об этом.913* **Автоматические ответы в артефакте**: Claude [самостоятельно отвечает на комментарии к артефакту](https://code.claude.com/docs/ru/artifacts.md#let-claude-reply-to-comments-on-its-own). Эти ответы продолжаются в фоновой сессии, и диалоговое окно сообщает об этом.

905 914 

906Запустите `/tasks`, чтобы увидеть всё, что выполняется, затем подтвердите перевод в фоновый режим или выберите `Stay`, чтобы сначала дать работе завершиться. См. раздел [Что переносится при переводе в фоновый режим](#what-carries-over-when-you-background), чтобы узнать, какие виды работы переносятся, а какие Claude Code останавливает.915Запустите `/tasks`, чтобы увидеть всё, что выполняется, затем подтвердите перевод в фоновый режим или выберите `Stay`, чтобы сначала дать работе завершиться. См. раздел [Что переносится при переводе в фоновый режим](#what-carries-over-when-you-background), чтобы узнать, какие виды работы переносятся, а какие Claude Code останавливает.


1118| v2.1.200 | Более старая версия Claude Code, перезаписывающая список сессий в `roster.json`, сохраняет поля, записанные более новой версией, в соответствии с уже существующей гарантией для `state.json`, поэтому сессии, запущенные более новой версией, продолжают принимать ввод после перезапуска супервизора. Когда вы открываете сессию, переставшую отвечать, супервизор перезапускает её процесс, и сессия продолжает прерванный ответ с того места, где он остановился. Agent view применяет флаг `--plugin-dir`, указанный после `agents`, как к автодополнению своих субагентов и скиллов в поле отправки, так и к отправленным сессиям. |1127| v2.1.200 | Более старая версия Claude Code, перезаписывающая список сессий в `roster.json`, сохраняет поля, записанные более новой версией, в соответствии с уже существующей гарантией для `state.json`, поэтому сессии, запущенные более новой версией, продолжают принимать ввод после перезапуска супервизора. Когда вы открываете сессию, переставшую отвечать, супервизор перезапускает её процесс, и сессия продолжает прерванный ответ с того места, где он остановился. Agent view применяет флаг `--plugin-dir`, указанный после `agents`, как к автодополнению своих субагентов и скиллов в поле отправки, так и к отправленным сессиям. |

1119| v2.1.199 | Фоновая сессия, процесс которой завершается до окончания запуска на хосте с нехваткой памяти, показывает `possibly low memory — free some up and retry` в статусе своей строки вместо одной лишь причины завершения. Перевод сессии в фон с помощью `←` или `/background` переносит её `/color` в новую строку. |1128| v2.1.199 | Фоновая сессия, процесс которой завершается до окончания запуска на хосте с нехваткой памяти, показывает `possibly low memory — free some up and retry` в статусе своей строки вместо одной лишь причины завершения. Перевод сессии в фон с помощью `←` или `/background` переносит её `/color` в новую строку. |

1120| v2.1.198 | Agent view отправляет уведомление через `preferredNotifChannel`, когда фоновой сессии требуется ввод, когда она завершается или завершается сбоем, и запускает хук `Notification` с типом `agent_needs_input` или `agent_completed`. `←` и `/exit` внутри `claude attach <id>` возвращают в agent view вместо выхода в оболочку; `Ctrl+Z` возвращает в оболочку. Фоновая сессия, изолировавшая свою работу в worktree, при завершении делает коммит, отправляет свою собственную изолированную ветку — никогда не `main` или `master` — и открывает черновой pull request, не спрашивая предварительно. `/login` работает в agent view и открывает диалоговое окно входа. Диалоговое окно выхода `Background work is running` предлагает `Move to background and exit`. Передача при выходе также охватывает фоновых субагентов, которые возобновляются из своего транскрипта при следующем пробуждении вместо того, чтобы отмечаться как завершившиеся сбоем. `claude --bg` в сочетании с `-p` или `--print` отклоняется с ошибкой. Хост фоновой сессии запрашивает разрешение macOS Local Network при первом обращении к локальной сети вместо сбоя с `connect: no route to host`. |1129| v2.1.198 | Agent view отправляет уведомление через `preferredNotifChannel`, когда фоновой сессии требуется ввод, когда она завершается или завершается сбоем, и запускает хук `Notification` с типом `agent_needs_input` или `agent_completed`. `←` и `/exit` внутри `claude attach <id>` возвращают в agent view вместо выхода в оболочку; `Ctrl+Z` возвращает в оболочку. Фоновая сессия, изолировавшая свою работу в worktree, при завершении делает коммит, отправляет свою собственную изолированную ветку — никогда не `main` или `master` — и открывает черновой pull request, не спрашивая предварительно. `/login` работает в agent view и открывает диалоговое окно входа. Диалоговое окно выхода `Background work is running` предлагает `Move to background and exit`. Передача при выходе также охватывает фоновых субагентов, которые возобновляются из своего транскрипта при следующем пробуждении вместо того, чтобы отмечаться как завершившиеся сбоем. `claude --bg` в сочетании с `-p` или `--print` отклоняется с ошибкой. Хост фоновой сессии запрашивает разрешение macOS Local Network при первом обращении к локальной сети вместо сбоя с `connect: no route to host`. |

1121| v2.1.196 | Одно нажатие `←` переводит сессию переднего плана в фон; более ранние версии требовали двух нажатий с подсказкой в нижней строке и подтверждением. `--dangerously-skip-permissions`, переданный в `claude agents`, показывает предупреждение об обходе разрешений вместо того, чтобы незаметно отбрасываться. Интерактивные сессии, которым вы не дали имя, получают имя по умолчанию, например `my-app-3f`, в списках сессий и в `claude agents --json`. Фоновые shell-команды и динамические рабочие процессы переживают остановку, перезапуск или обновление процесса сессии, в том числе в Windows; установите `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF=1`, чтобы отключить эту передачу. Транскрипт, ошибочно прочитанный как пустой при перезапуске, переименовывается с суффиксом `.orphaned-` вместо удаления. |1130| v2.1.196 | Одно нажатие `←` переводит сессию переднего плана в фон; более ранние версии требовали двух нажатий с подсказкой в нижней строке и подтверждением. `--dangerously-skip-permissions`, переданный в `claude agents`, показывает предупреждение об обходе разрешений вместо того, чтобы незаметно отбрасываться. Интерактивные сессии, которым вы не дали имя, получают имя по умолчанию, например `my-app-3f`, в списках сессий и в `claude agents --json`. Фоновые shell-команды переживают остановку, перезапуск или обновление процесса сессии, в том числе в Windows; установите `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF=1`, чтобы отключить эту передачу. Транскрипт, ошибочно прочитанный как пустой при перезапуске, переименовывается с суффиксом `.orphaned-` вместо удаления. |

1122| v2.1.195 | Выполняющаяся фоновая работа переносится при переводе сессии в фон и в Windows. Группа `Completed` заполняет оставшееся вертикальное пространство, а заголовок сжимается в невысоких терминалах. Более старая версия Claude Code больше не отбрасывает поля `state.json` более новых сессий и не скрывает эти сессии из `claude agents`. Присоединение к остановленной сессии переключает сразу вместо показа пустого экрана до пяти секунд. Супервизор, который не может принимать подключения, сам завершает работу и освобождает свою блокировку. |1131| v2.1.195 | Выполняющаяся фоновая работа переносится при переводе сессии в фон и в Windows. Группа `Completed` заполняет оставшееся вертикальное пространство, а заголовок сжимается в невысоких терминалах. Более старая версия Claude Code больше не отбрасывает поля `state.json` более новых сессий и не скрывает эти сессии из `claude agents`. Присоединение к остановленной сессии переключает сразу вместо показа пустого экрана до пяти секунд. Супервизор, который не может принимать подключения, сам завершает работу и освобождает свою блокировку. |

1123| v2.1.191 | `claude --bg` с именем `--agent`, не совпадающим ни с одним из ваших субагентов, приводит к сбою запуска: сессия сразу завершается с ошибкой `--agent '<name>' not found` вместо работы с агентом по умолчанию. |1132| v2.1.191 | `claude --bg` с именем `--agent`, не совпадающим ни с одним из ваших субагентов, приводит к сбою запуска: сессия сразу завершается с ошибкой `--agent '<name>' not found` вместо работы с агентом по умолчанию. |

1124| v2.1.174 | Фоновые сессии больше не наследуют переменные эндпоинта шлюза, такие как `ANTHROPIC_BASE_URL`, из оболочки, в которой был запущен супервизор; супервизор передаёт свежий снимок учётных данных предварительно прогретым рабочим процессам, что исправляет ложные ошибки `Could not resolve authentication method`. |1133| v2.1.174 | Фоновые сессии больше не наследуют переменные эндпоинта шлюза, такие как `ANTHROPIC_BASE_URL`, из оболочки, в которой был запущен супервизор; супервизор передаёт свежий снимок учётных данных предварительно прогретым рабочим процессам, что исправляет ложные ошибки `Could not resolve authentication method`. |

Details

685 685 

686CLI применяет одинаковые ограничения функций к шлюзам независимо от того, какой upstream обслуживает конкретный запрос, поэтому по умолчанию переключение не приводит к отправке поля тела, которое upstream отклонил бы. Если вы задаёте в политике [одночасовой TTL кэша](#one-hour-prompt-cache), он отправляется каждому upstream в списке, поэтому задавайте его, только если все они его принимают.686CLI применяет одинаковые ограничения функций к шлюзам независимо от того, какой upstream обслуживает конкретный запрос, поэтому по умолчанию переключение не приводит к отправке поля тела, которое upstream отклонил бы. Если вы задаёте в политике [одночасовой TTL кэша](#one-hour-prompt-cache), он отправляется каждому upstream в списке, поэтому задавайте его, только если все они его принимают.

687 687 

688## Дополнительные разделы688## Необязательные разделы

689 689 

690### `admin`690### `admin`

691 691 

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

693 693 

694```yaml theme={null}694```yaml theme={null}

695admin:695admin:

696 # Именованные статические API-ключи для эндпоинтов администратора, отправляемые как x-api-key.696 # Named static API keys for the admin endpoints, sent as x-api-key.

697 # Идентификатор появляется в журнале аудита как admin-key:<id>, поэтому каждый ключ697 # The id appears in the audit log as admin-key:<id> so each key is

698 # можно отследить. Массив для ротации: добавьте новый ключ, обновите клиентов,698 # attributable. Array for rotation: add the new key, roll clients,

699 # удалите старый.699 # remove the old.

700 write_keys:700 write_keys:

701 - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }701 - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }

702 - { id: ci, key: "${GATEWAY_ADMIN_WRITE_KEY_CI}" }702 - { id: ci, key: "${GATEWAY_ADMIN_WRITE_KEY_CI}" }

703 read_keys:703 read_keys:

704 - { id: reporting, key: "${GATEWAY_ADMIN_READ_KEY}" }704 - { id: reporting, key: "${GATEWAY_ADMIN_READ_KEY}" }

705 # Группы IdP с полным доступом администратора через обычный JWT шлюза (без API-ключа).705 # IdP groups granted full admin via the normal gateway JWT (no API key).

706 admin_groups: [platform-finops]706 admin_groups: [platform-finops]

707 blocked_message: request an increase at https://go.example.com/claude-limits707 blocked_message: request an increase at https://go.example.com/claude-limits

708```708```

709 709 

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

711| - | - | - |711| - | - | - |

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

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

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

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

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

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

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

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

720 720 

721### `enforcement`721### `enforcement`

722 722 

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

724 724 

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

726| - | - | - |726| - | - | - |

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

728 728 

729### `pricing`729### `pricing`

730 730 

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

732 732 

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

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

735 735 

736```yaml theme={null}736```yaml theme={null}

737pricing:737pricing:


745 cache_write: 4.125745 cache_write: 4.125

746```746```

747 747 

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

749| - | - | - |749| - | - | - |

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

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

752 752 

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

754 754 

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

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

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

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

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

760 760 

761Для ставок по регионам дайте каждому региону свой именованный upstream и одну строку на upstream.761Для тарифов по регионам задайте каждому региону собственный именованный upstream и по одной строке на каждый upstream.

762 762 

763#### Надбавка к ценам763#### Наценка на цены

764 764 

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

766 766 

767```yaml theme={null}767```yaml theme={null}

768pricing:768pricing:

769 multiplier: 1.2769 multiplier: 1.2

770```770```

771 771 

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

773 773 

774Множитель не изменяет то, что взимает поставщик upstream за запросы.774Множитель не меняет того, что upstream-провайдер взимает за запросы.

775 775 

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

777 777 

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

779 779 

780#### Отправка ставок подписанным клиентам780#### Отправка тарифов клиентам, вошедшим в систему

781 781 

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

783 783 

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

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

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

787 787 

788### `models`788### `models`

789 789 

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

791 791 

792```yaml theme={null}792```yaml theme={null}

793auto_include_builtin_models: true # false: expose only the list below793auto_include_builtin_models: true # false: expose only the list below


801 foundry: your-opus-deployment-name801 foundry: your-opus-deployment-name

802```802```

803 803 

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

805 805 

806### `managed`806### `managed`

807 807 

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

809 809 

810```yaml theme={null}810```yaml theme={null}

811managed:811managed:


824 enforceAvailableModels: true824 enforceAvailableModels: true

825```825```

826 826 

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

828 828 

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

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

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

832 832 

833`availableModels` также применяется на стороне сервера в `/v1/messages`, поэтому запрещённая модель возвращает `400` независимо от того, что отправляет клиент. Пустой список запрещает все модели. Проверка также охватывает модель, на которой сессия запускается до того, как разработчик выберет модель, поэтому [запускайте сессии на модели, которую разрешает политика](#start-sessions-on-a-model-the-policy-allows).833`availableModels` также применяется на стороне сервера на `/v1/messages`, поэтому запрещённая модель возвращает `400` независимо от того, что отправляет клиент. Пустой список запрещает все модели. Проверка также охватывает модель, с которой сессия начинается до того, как разработчик выберет модель, поэтому [запускайте сессии на модели, разрешённой политикой](#start-sessions-on-a-model-the-policy-allows).

834 834 

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

836 836 

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

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

839 839 

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

841| - | - |841| - | - |

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

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

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

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

846 846 

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

848 848 

849> [!NOTE]849> [!NOTE]

850>850>

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

852>852>

853> Запустите управление жизненным циклом пользователя и группы в источнике истины, который является собственной подготовкой SCIM вашего IdP или выделенной платформой управления идентификацией. Членство и отзыв, управляемые там, автоматически поступают в шлюз через токен. Если вы хотите подготовку SCIM самих учётных записей Claude, это возможность [Claude for Enterprise](https://code.claude.com/docs/ru/admin-setup.md).853> Управляйте жизненным циклом пользователей и групп в источнике истины — через встроенную подготовку SCIM вашего IdP или специализированную платформу управления учётными данными. Членство и отзыв доступа, управляемые там, автоматически попадают в шлюз через токен. Если вам нужна подготовка учётных записей Claude через SCIM, это возможность [Claude for Enterprise](https://code.claude.com/docs/ru/admin-setup.md).

854>854>

855> Применяются два часов распространения:855> Действуют два срока распространения изменений:

856>856>

857> * **Содержание политики**: редактирование политики и переразвёртывание достигает подключённых клиентов Claude Code при их следующем опросе управляемых настроек, в течение часа, кроме [изменений, которые применяются только при следующем запуске](https://code.claude.com/docs/ru/server-managed-settings.md#fetch-and-caching-behavior)857> * **Содержимое политики**: изменение политики и повторное развёртывание доходят до подключённых клиентов Claude Code при их следующем опросе управляемых настроек, в течение часа, за исключением [изменений, которые применяются только при следующем запуске](https://code.claude.com/docs/ru/server-managed-settings.md#fetch-and-caching-behavior)

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

859>859>

860> Claude Desktop следует [собственному расписанию](#when-a-policy-change-reaches-claude-desktop).860> Claude Desktop следует [собственному расписанию](#when-a-policy-change-reaches-claude-desktop).

861 861 

862#### Запуск сессий на модели, которую разрешает политика862#### Запуск сессий на модели, разрешённой политикой

863 863 

864Если `availableModels` не включает модель Claude Code по умолчанию, сессии получают ответы `400`, пока разработчик не выберет модель из списка, например с помощью `/model`. В сессиях шлюза моделью по умолчанию является модель Opus, в которую разрешается псевдоним `opus`, и сам по себе `availableModels` этого не меняет.864Если `availableModels` не включает модель Claude Code по умолчанию, сессии получают ответы `400`, пока разработчик не выберет модель из списка, например с помощью `/model`. В сессиях через шлюз моделью по умолчанию является модель Opus, на которую указывает псевдоним `opus`, и `availableModels` сам по себе её не меняет.

865 865 

866Чтобы исправить это, установите [`enforceAvailableModels: true`](https://code.claude.com/docs/ru/model-config#enforce-the-allowlist-for-the-default-model) в том же блоке `cli`, затем проверьте, какие записи содержит список:866Чтобы это исправить, установите [`enforceAvailableModels: true`](https://code.claude.com/docs/ru/model-config#enforce-the-allowlist-for-the-default-model) в том же блоке `cli`, а затем проверьте, какого рода записи содержит список:

867 867 

868* **Псевдоним, такой как `sonnet`, или встроенный ID, такой как `claude-sonnet-4-6`**: сессии начинаются на одной из этих моделей, и вариант Default в `/model` разрешается в неё868* **Псевдоним, например `sonnet`, или встроенный ID, например `claude-sonnet-4-6`**: сессии запускаются на одной из этих моделей, и вариант Default в `/model` указывает на неё

869* **В списке нет ни псевдонима, ни встроенного ID**: сессии могут по-прежнему начинаться на встроенной модели по умолчанию, поэтому также установите [`model`](https://code.claude.com/docs/ru/model-config#control-the-model-users-run-on) на один из перечисленных ID в блоке `cli` этой политики869* **В списке нет ни псевдонима, ни встроенного ID**: сессии могут продолжать запускаться на встроенной модели по умолчанию, поэтому также установите [`model`](https://code.claude.com/docs/ru/model-config#control-the-model-users-run-on) в один из перечисленных ID в блоке `cli` этой политики

870 870 

871Эта политика перечисляет один пользовательский ID, определённый в [`models`](#models), и запускает сессии на этом ID:871Эта политика перечисляет один пользовательский ID, определённый в [`models`](#models), и запускает сессии на этом ID:

872 872 


880 model: claude-opus-restricted880 model: claude-opus-restricted

881```881```

882 882 

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

884 884 

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

886 886 

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

888* Пустая запись в `groups` или в `admin_groups`888* Пустой элемент в `groups` или в `admin_groups`

889* Пустой `email_domain`889* Пустой `email_domain`

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

891 891 

892До v2.1.232 шлюз запускался с этими значениями. Каждое значение имело этот эффект:892До v2.1.232 шлюз запускался с этими значениями. Каждое из них имело следующий эффект:

893 893 

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

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

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

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

898 898 

899#### Выбор `cli` или `code`899#### Выбор между `cli` и `code`

900 900 

901> [!WARNING]901> [!WARNING]

902>902>

903> Когда политика использует ключ `code`, каждое из следующих условий не даёт шлюзу запуститься:903> Когда политика использует ключ `code`, каждое из следующих условий не даёт шлюзу запуститься:

904>904>

905> * **Версия шлюза**: `code` требует Claude Code v2.1.296 или новее на сервере шлюза. Более ранний шлюз отказывается запускаться, обнаружив этот ключ. Обновите каждую реплику, прежде чем добавлять ключ, и замените `code` обратно на `cli`, прежде чем откатываться на более раннюю версию.905> * **Версия шлюза**: `code` требует Claude Code v2.1.296 или новее на сервере шлюза. Более ранний шлюз отказывается запускаться, обнаружив этот ключ. Обновите все реплики, прежде чем добавлять ключ, и замените `code` обратно на `cli`, прежде чем откатываться на более раннюю версию.

906> * **Смешанные ключи**: файл, содержащий и `code`, и `cli` или его прежнее написание `settings`, останавливает шлюз при запуске. Поместите все блоки под один ключ за одно изменение.906> * **Смешанные ключи**: файл, в котором есть и `code`, и `cli` или его прежнее написание `settings`, останавливает шлюз при запуске. Поместите все блоки под один ключ за одну правку.

907 907 

908Настройки Claude Code в политике, например правило, запрещающее чтение файлов `.env`, помещаются в блок под ключом `cli` или `code`. `code` — рекомендуемый ключ, а `cli` — устаревший. Оба ключа принимают одинаковое содержимое. Ключ определяет, где применяются настройки:908Настройки Claude Code для политики, например правило, запрещающее чтение файлов `.env`, помещаются в блок под ключом `cli` или `code`. `code` — рекомендуемый ключ, а `cli` — устаревший. Оба ключа принимают одинаковое содержимое. Ключ определяет, где применяются настройки:

909 909 

910* **`cli`**: терминал, расширения VS Code и JetBrains, а также Agent SDK. При `cli` вкладка Code в Claude Desktop получает [производные настройки](#claude-desktop-overlay), поэтому ограниченное правило, например `Read(./.env)`, не останавливает пользователя там.910* **`cli`**: терминал, расширения VS Code и JetBrains, а также Agent SDK. При `cli` вкладка Code в Claude Desktop получает [производные настройки](#claude-desktop-overlay), поэтому ограниченное правило, например `Read(./.env)`, не останавливает там пользователя.

911* **`code`**: те же места, плюс может быть охвачена и вкладка Code в Claude Desktop.911* **`code`**: те же места, и при этом может быть охвачена вкладка Code в Claude Desktop.

912 912 

913Файл, использующий `cli`, работает как прежде, а шлюз, обнаруживший `cli` в политике с ключом [`desktop`](#claude-desktop-overlay), выдаёт предупреждение при запуске и всё равно запускается. Перейдите на `code`, чтобы настройки могли охватывать и вкладку Code.913Файл, использующий `cli`, работает как раньше, а шлюз, обнаруживший `cli` в политике с ключом [`desktop`](#claude-desktop-overlay), выдаёт предупреждение при запуске и всё равно запускается. Перейдите на `code`, чтобы настройки могли охватывать и вкладку Code.

914 914 

915Прежде чем переключаться, прочитайте раздел [Применение настроек `code` во вкладке Code](#apply-code-settings-in-the-code-tab). Чтобы настройки там применялись, политике нужен ключ `desktop`, а машины пользователей требуют настройки; кроме того, в Claude Desktop отключается веб-поиск.915Прежде чем переходить, прочитайте раздел [Применение настроек `code` во вкладке Code](#apply-code-settings-in-the-code-tab). Политике нужен ключ `desktop`, а машины пользователей требуют настройки, прежде чем настройки начнут там действовать, и в Claude Desktop отключается веб-поиск.

916 916 

917Эта политика помещает правило запрета под `code` с пустым ключом `desktop`:917Эта политика помещает правило запрета под `code` с пустым ключом `desktop`:

918 918 


925 desktop: {}925 desktop: {}

926```926```

927 927 

928При переключении удалите все строки `serve_to_desktop` в том же изменении, в котором переименовываете блоки. Там, где в инструкции упоминается блок `cli`, используйте свой блок `code`.928При переходе удалите все строки `serve_to_desktop` в той же правке, в которой переименовываете блоки. Там, где в инструкции упоминается блок `cli`, используйте ваш блок `code`.

929 

930`serve_to_desktop: true` — устаревший способ предложить настройки `cli` политики вкладке Code. Он не действует, когда Claude Desktop подключается через [`bootstrapUrl`](#claude-desktop-overlay). Пока ваши политики используют `cli`, предупреждение при запуске, упоминающее этот ключ, означает, что эти настройки не доходят до вкладки Code:

929 931 

930#### Что входит в `cli`932* **Чтобы охватить вкладку Code**: перейдите на `code`, как только машины пользователей будут соответствовать условиям из раздела [Применение настроек `code` во вкладке Code](#apply-code-settings-in-the-code-tab)

933* **Чтобы остаться на `cli`**: установите `serve_to_desktop: false` рядом с `cli` в политике, чтобы убрать предупреждение

931 934 

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

933 936 

934Шлюз проверяет каждый документ против схемы настроек CLI при загрузке, поэтому неизвестный ключ верхнего уровня вызывает сбой при загрузке с ошибкой, называющей каждый нарушающий ключ. Намеренно открытые части схемы всё ещё принимают произвольные значения, потому что более новые клиенты могут распознавать записи, которые схема шлюза не распознаёт. Эти открытые ключи включают `env`, `pluginConfigs` и ключи, вложенные под `permissions`.937Каждое значение `code` или `cli` — это полный документ `managed-settings.json` Claude Code, с той же схемой, которую вы развёртывали бы через MDM или `/etc/claude-code/managed-settings.json`, но записанный здесь в формате YAML. CLI применяет доставленный документ на управляемом уровне, выше пользовательских и проектных настроек, вместо управляемых настроек сервера. Поэтому он игнорирует настройки, [доступные только из источников политик уровня ОС](https://code.claude.com/docs/ru/server-managed-settings.md#current-limitations), такие как `policyHelper` и `wslInheritsWindowsSettings`.

935 938 

936Поскольку проверка использует схему, поставляемую с установленной версией шлюза, помещение ключа настроек верхнего уровня, введённого более новым выпуском Claude Code, в управляемую конфигурацию требует сначала обновления шлюза. Протестируйте новую политику на одном клиенте перед развёртыванием.939Шлюз проверяет каждый документ по схеме настроек CLI при запуске, поэтому нераспознанный ключ верхнего уровня приводит к ошибке запуска с перечислением всех некорректных ключей. Намеренно открытые части схемы по-прежнему принимают произвольные значения, поскольку более новые клиенты могут распознавать записи, которых нет в схеме шлюза. К таким открытым ключам относятся `env`, `pluginConfigs` и ключи, вложенные в `permissions`.

937 940 

938Полная справка по ключам находится в [Claude Code settings](https://code.claude.com/docs/ru/settings-reference.md#all-settings). Ключи, которые операторы чаще всего используют в первую очередь:941Поскольку проверка использует схему, поставляемую с установленной версией шлюза, чтобы поместить в управляемую конфигурацию ключ настроек верхнего уровня, появившийся в более новом выпуске Claude Code, сначала нужно обновить шлюз. Проверьте новую политику на одном клиенте, прежде чем развёртывать её.

942 

943Полный справочник ключей находится в разделе [Настройки Claude Code](https://code.claude.com/docs/ru/settings-reference.md#all-settings). Ключи, к которым операторы обращаются в первую очередь:

939 944 

940```yaml theme={null}945```yaml theme={null}

941managed:946managed:


970 - { type: command, command: /usr/local/bin/audit-edit.sh }975 - { type: command, command: /usr/local/bin/audit-edit.sh }

971```976```

972 977 

973| Ключ | Применяется | Эффект |978| Ключ | Кем применяется | Эффект |

974| - | - | - |979| - | - | - |

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

976| [`deniedModels`](https://code.claude.com/docs/ru/settings-reference#deniedmodels), [`availableModelsMatch`](https://code.claude.com/docs/ru/settings-reference#availablemodelsmatch) | Шлюз + CLI | [Блокирует определённые модели или версии](https://code.claude.com/docs/ru/model-config.md#block-specific-models-or-versions), которые иначе разрешил бы `availableModels`. Заблокированная модель отклоняется с `400` на `/v1/messages` и исключается из `/v1/models`. Собственная проверка шлюза требует Claude Code v2.1.299 или новее на сервере шлюза. Проверка CLI требует v2.1.283 или новее на клиентах, а более ранние клиенты игнорируют оба ключа. |981| [`deniedModels`](https://code.claude.com/docs/ru/settings-reference#deniedmodels), [`availableModelsMatch`](https://code.claude.com/docs/ru/settings-reference#availablemodelsmatch) | Шлюз + CLI | [Блокирует отдельные модели или версии](https://code.claude.com/docs/ru/model-config.md#block-specific-models-or-versions), которые иначе разрешил бы `availableModels`. Заблокированная модель отклоняется с `400` на `/v1/messages` и не включается в `/v1/models`. Собственная проверка шлюза требует Claude Code v2.1.299 или новее на сервере шлюза. Проверка CLI требует v2.1.283 или новее на клиентах, а более ранние клиенты игнорируют оба ключа. |

977| `permissions.allow` / `.deny` | CLI | Правила инструментов и команд. Смотрите [Permissions](https://code.claude.com/docs/ru/permissions.md). |982| `permissions.allow` / `.deny` | CLI | Правила для инструментов и команд. См. [Разрешения](https://code.claude.com/docs/ru/permissions.md) и [что не сопоставляется правилом Bash](https://code.claude.com/docs/ru/permissions.md#bash-rule-limits). |

978| `permissions.disableBypassPermissionsMode` | CLI | Установите на `disable`, чтобы заблокировать [`bypassPermissions`](https://code.claude.com/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode), режим, который пропускает запросы разрешений, и флаг `--dangerously-skip-permissions` |983| `permissions.disableBypassPermissionsMode` | CLI | Установите `disable`, чтобы заблокировать [`bypassPermissions`](https://code.claude.com/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) — режим, пропускающий запросы разрешений, — и флаг `--dangerously-skip-permissions` |

979| `allowManagedPermissionRulesOnly` | CLI | Когда `true`, управляемые настройки становятся единственным источником настроек правил разрешений. Запись [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/ru/settings-reference#allowmanagedpermissionrulesonly) перечисляет каждый источник, который Claude Code затем игнорирует. |984| `allowManagedPermissionRulesOnly` | CLI | Если `true`, управляемые настройки становятся единственным источником правил разрешений. В описании [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/ru/settings-reference#allowmanagedpermissionrulesonly) перечислены все источники, которые Claude Code в этом случае игнорирует. |

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

981| `hooks` | CLI | Организационные [хуки](https://code.claude.com/docs/ru/hooks.md) |986| `hooks` | CLI | [Хуки](https://code.claude.com/docs/ru/hooks.md) на уровне организации |

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

983 988 

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

985 990 

986* `hooks`991* `hooks`

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

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

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

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

991 996 

992[Память одобрения](https://code.claude.com/docs/ru/server-managed-settings.md#approval-memory) охватывает, как долго длится одобрение и когда диалог появляется снова.997В разделе [Запоминание подтверждений](https://code.claude.com/docs/ru/server-managed-settings.md#approval-memory) описано, как долго действует подтверждение и когда диалоговое окно появляется снова.

993 998 

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

995 1000 

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

997 1002 

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

999 1004 

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

1001 1006 

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

1003 1008 

1004В более ранних выпусках ключ `cli` назывался `settings`, и шлюз по-прежнему принимает это написание как псевдоним. Для новых развёртываний используйте [`code`](#choose-cli-or-code).1009В более ранних выпусках ключ `cli` назывался `settings`, и шлюз по-прежнему принимает это написание как псевдоним. Для новых развёртываний используйте [`code`](#choose-cli-or-code).

1005 1010 

1006#### Контекстное окно в терминальных сессиях1011#### Проверка политики перед развёртыванием

1012 

1013Чтобы проверить изменение политики, запустите шлюз с временной базой данных Postgres. Шлюз подключается к Postgres и применяет миграции схемы, прежде чем проверять содержимое блоков `cli`, `code` и `desktop`. Если база данных недоступна, запуск останавливается на `could not connect to Postgres` и ничего не сообщает об их содержимом.

1007 1014 

1008Терминальные сессии, в которые выполнен вход через `/login`, используют контекстное окно 1M для Opus 4.7 и более поздних версий, Sonnet 5 и более поздних версий, а также моделей Fable. ID модели не требует суффикса `[1m]`, и сессии сжимаются примерно при 967K токенов. До Claude Code v2.1.287 на машине разработчика Claude Code считал, что модели Opus и Fable имеют окно 200K, если ID модели не заканчивался на `[1m]`.1015#### Контекстное окно в сессиях терминала

1009 1016 

1010Чтобы терминальные сессии вместо этого сжимались на границе 200K, задайте [окно автосжатия](https://code.claude.com/docs/ru/model-config.md#set-the-auto-compact-window) в `env` политики:1017Сессии терминала, выполненные со входом через `/login`, используют контекстное окно 1M для Opus 4.7 и новее, Sonnet 5 и новее, а также моделей Fable. ID модели не требует суффикса `[1m]`, и сессии сжимаются примерно на 967K токенов. До Claude Code v2.1.287 на машине разработчика Claude Code считал, что у моделей Opus и Fable окно 200K, если ID модели не заканчивался на `[1m]`.

1018 

1019Чтобы сессии терминала вместо этого сжимались на границе 200K, задайте [окно автосжатия](https://code.claude.com/docs/ru/model-config.md#set-the-auto-compact-window) в `env` политики:

1011 1020 

1012```yaml theme={null}1021```yaml theme={null}

1013managed:1022managed:


1018 CLAUDE_CODE_AUTO_COMPACT_WINDOW: "200000"1027 CLAUDE_CODE_AUTO_COMPACT_WINDOW: "200000"

1019```1028```

1020 1029 

1021Claude Code применяет эту переменную без показа разработчику диалога одобрения. Переменная применяется ко всем моделям, включая ID моделей, заканчивающиеся на `[1m]`.1030Claude Code применяет эту переменную без показа разработчику диалогового окна подтверждения. Переменная применяется ко всем моделям, включая ID моделей, заканчивающиеся на `[1m]`.

1022 1031 

1023Чтобы вместо этого отключить контекст 1M, установите [`CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"`](https://code.claude.com/docs/ru/model-config#extended-context) в том же блоке `env`. Тогда Claude Code считает, что у каждой модели окно 200K. В интерактивных сессиях каждый разработчик одобряет эту переменную в [диалоге одобрения](#what-goes-in-cli), прежде чем она вступит в силу.1032Чтобы вместо этого отключить контекст 1M, установите [`CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"`](https://code.claude.com/docs/ru/model-config#extended-context) в том же блоке `env`. Тогда Claude Code считает, что у каждой модели окно 200K. В интерактивных сессиях каждый разработчик подтверждает эту переменную в [диалоговом окне подтверждения](#what-goes-in-cli), прежде чем она вступит в силу.

1024 1033 

1025#### One-hour prompt cache1034#### Часовой кэш промптов

1026 1035 

1027Чтобы запрашивать часовой [TTL кэша промптов](https://code.claude.com/docs/ru/prompt-caching.md#cache-lifetime) вместо пятиминутного по умолчанию, добавьте эти ключи в существующий [блок `code`, `cli` или `settings`](#choose-cli-or-code) политики и перезапустите шлюз. Для ключей нужен Claude Code v2.1.242 или новее на сервере шлюза и на клиентах.1036Чтобы запрашивать часовой [TTL кэша промптов](https://code.claude.com/docs/ru/prompt-caching.md#cache-lifetime) вместо пятиминутного по умолчанию, добавьте эти ключи в существующий [блок `code`, `cli` или `settings`](#choose-cli-or-code) политики и перезапустите шлюз. Ключам нужен Claude Code v2.1.242 или новее на сервере шлюза и на клиентах.

1028 1037 

1029`promptCacheTtl` охватывает основной диалог. `subagentPromptCacheTtl` необязателен и охватывает субагентов, рабочие процессы и фоновые запросы. В этом примере оба ключа добавляются в политику `match: {}` с ключом `cli`:1038`promptCacheTtl` охватывает основной диалог. `subagentPromptCacheTtl` необязателен и охватывает субагентов, workflows и фоновые запросы. В этом примере оба ключа добавляются в политику `match: {}` с ключом `cli`:

1030 1039 

1031```yaml theme={null}1040```yaml theme={null}

1032managed:1041managed:


1039 1048 

1040> [!WARNING]1049> [!WARNING]

1041>1050>

1042> Задавайте эти ключи, только если ваши upstream предлагают часовой TTL для каждой модели, которую обслуживает шлюз. Если upstream отклоняет TTL, запрос завершается ошибкой, и ни шлюз, ни Claude Code не делают повторную попытку с пятиминутным TTL. Для Amazon Bedrock проверьте [поддерживаемые модели, регионы и ограничения](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models).1051> Задавайте эти ключи, только если ваши upstream предлагают часовой TTL для каждой модели, которую обслуживает шлюз. Если upstream отклоняет TTL, запрос завершается ошибкой, и ни шлюз, ни Claude Code не повторяют попытку с пятиминутным TTL. Для Amazon Bedrock проверьте [поддерживаемые модели, регионы и ограничения](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models).

1043 1052 

1044Чтобы проверить `promptCacheTtl`, войдите в шлюз как пользователь, подпадающий под политику, и [проверьте, какой TTL использовали ваши записи в кэш](https://code.claude.com/docs/ru/prompt-caching.md#choose-the-ttl-yourself). Передайте `--model`, чтобы повторить проверку для каждой модели, которую обслуживает шлюз.1053Чтобы проверить `promptCacheTtl`, войдите в шлюз как пользователь, подпадающий под политику, и [проверьте, какой TTL использовали ваши записи в кэш](https://code.claude.com/docs/ru/prompt-caching.md#choose-the-ttl-yourself). Передайте `--model`, чтобы повторить проверку для каждой модели, которую обслуживает шлюз.

1045 1054 

1046Часовые записи в кэш [стоят дороже](https://code.claude.com/docs/ru/prompt-caching.md#cache-lifetime) пятиминутных. Чтобы [лимиты расходов](https://code.claude.com/docs/ru/claude-apps-gateway-spend-limits.md#how-requests-are-priced) учитывали этот повышенный тариф, нужна v2.1.286 или новее на сервере шлюза.1055Часовые записи в кэш [стоят дороже](https://code.claude.com/docs/ru/prompt-caching.md#cache-lifetime), чем пятиминутные. Чтобы [лимиты расходов](https://code.claude.com/docs/ru/claude-apps-gateway-spend-limits.md#how-requests-are-priced) учитывали этот повышенный тариф, нужна v2.1.286 или новее на сервере шлюза.

1047 1056 

1048#### MCP-серверы в политике1057#### MCP-серверы в политике

1049 1058 

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

1051 1060 

1052Шлюз проверяет каждую запись при загрузке с [теми же правилами, которые Claude Code применяет на клиенте](https://code.claude.com/docs/ru/managed-mcp.md#what-an-entry-can-contain), и если запись не проходит проверку, шлюз отказывается запускаться и называет запись.1061Шлюз проверяет каждую запись при запуске по [тем же правилам, которые Claude Code применяет на клиенте](https://code.claude.com/docs/ru/managed-mcp.md#what-an-entry-can-contain), и если запись не проходит проверку, шлюз отказывается запускаться и называет эту запись.

1053 1062 

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

1055 1064 

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

1057 1066 

1058#### Наложение Claude Desktop1067#### Наложение для Claude Desktop

1059 1068 

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

1061 1070 

1062> [!NOTE]1071> [!NOTE]

1063>1072>

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

1065 1074 

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

1067 1076 

1068##### Настройки, которые шлюз выводит для Claude Desktop1077##### Настройки, которые шлюз выводит для Claude Desktop

1069 1078 

1070Шлюз выводит значительную часть ответа bootstrap из блока `cli` или `code` соответствующей политики и из конфигурации шлюза верхнего уровня:1079Шлюз выводит бо́льшую часть ответа bootstrap из блока `cli` или `code` совпавшей политики и из конфигурации шлюза верхнего уровня:

1071 1080 

1072* Список моделей — из `availableModels`. В список не входят модели, которые политика блокирует с помощью [`deniedModels` или `availableModelsMatch: exact`](#what-goes-in-cli). Этот фильтр требует Claude Code v2.1.299 или новее на сервере шлюза. Вариант контекста 1M для каждой модели описан в разделе [Расширенный контекст в Claude Desktop](#extended-context-in-claude-desktop)1081* Список моделей — из `availableModels`. В список не входят модели, которые политика блокирует с помощью [`deniedModels` или `availableModelsMatch: exact`](#what-goes-in-cli). Этот фильтр требует Claude Code v2.1.299 или новее на сервере шлюза. Вариант контекста 1M для каждой модели описан в разделе [Расширенный контекст в Claude Desktop](#extended-context-in-claude-desktop)

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

1074* Список разрешённых доменов для исходящего трафика — из `sandbox.network.allowedDomains`. Если вы задаёте `coworkEgressAllowedHosts` в блоке `desktop` политики, шлюз использует это значение вместо производного списка. Если выдаваемый шлюзом список разрешённых включает `*` и шлюз при этом не выдаёт [`allowedWorkspaceFolders`](https://claude.com/docs/third-party/claude-desktop/code#applied-as-managed-policy) Claude Desktop, Claude Desktop не включает [песочницу Bash](https://code.claude.com/docs/ru/sandboxing.md) во вкладке Code1083* Список разрешённых адресов для исходящего трафика — из `sandbox.network.allowedDomains`. Если вы задаёте `coworkEgressAllowedHosts` в блоке `desktop` политики, шлюз использует это значение вместо выведенного списка. Если список разрешённых, который отдаёт шлюз, включает `*` и шлюз при этом не отдаёт [`allowedWorkspaceFolders`](https://claude.com/docs/third-party/claude-desktop/code#applied-as-managed-policy) для Claude Desktop, Claude Desktop не включает [песочницу Bash](https://code.claude.com/docs/ru/sandboxing.md) во вкладке Code

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

1076 1085 

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

1078 1087 

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

1080 1089 

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

1082 1091 

1083##### Применение настроек `code` во вкладке Code1092##### Применение настроек `code` во вкладке Code

1084 1093 

1085Настройки Claude Code, которые политика содержит под ключом [`code`](#choose-cli-or-code), применяются во вкладке Code в Claude Desktop, когда выполняются все эти условия:1094Настройки Claude Code, которые политика содержит под ключом [`code`](#choose-cli-or-code), применяются во вкладке Code в Claude Desktop, когда выполняются все следующие условия:

1086 1095 

1087* У политики также есть ключ `desktop`, причём пустой `desktop: {}` тоже считается1096* У политики также есть ключ `desktop`, причём пустой `desktop: {}` тоже считается

1088* Версия Claude Desktop — 2.9939.2 или новее1097* Claude Desktop версии 2.9939.2 или новее

1089* Управляемые настройки Claude Code на машине [указывают на этот шлюз](#client-side-managed-settings)1098* Управляемые настройки Claude Code на машине [указывают этот шлюз](#client-side-managed-settings)

1090* Эта машина обращается к шлюзу по HTTPS в частной сети1099* Эта машина обращается к шлюзу по HTTPS в частной сети

1091 1100 

1092Последние два условия относятся к той машине, на которой запускается Claude Code для сессии. Для локальной сессии это собственный компьютер пользователя. Для сессии вкладки Code по SSH — удалённый хост.1101Последние два условия относятся к той машине, на которой Claude Code выполняет сессию. Для локальной сессии это собственный компьютер пользователя. Для сессии вкладки Code через SSH — удалённый хост.

1093 1102 

1094Разверните [клиентские управляемые настройки](#client-side-managed-settings) на этих машинах, прежде чем переименовывать `cli` в `code`. Когда первые два условия выполнены, а любое из последних двух — нет, пользователь, которому соответствует политика, получает один из следующих результатов:1103Разверните [управляемые настройки на стороне клиента](#client-side-managed-settings) на этих машинах, прежде чем переименовывать `cli` в `code`. Когда первые два условия выполняются, а одно из последних двух — нет, пользователь, подпадающий под политику, получает один из следующих результатов:

1095 1104 

1096* **По HTTPS, когда Claude Desktop включает Claude Code v2.1.296 или новее**: вкладка Code не запускается, и ответ на промпт пользователя объясняет причину1105* **По HTTPS, если Claude Desktop поставляется с Claude Code v2.1.296 или новее**: вкладка Code не запускается, а ответ на промпт пользователя объясняет причину

1097* **По HTTPS, когда Claude Desktop включает более раннюю версию**: вкладка Code запускается без ваших настроек `code`, и в сессии ничто об этом не сообщает1106* **По HTTPS, если Claude Desktop поставляется с более ранней версией**: вкладка Code запускается без ваших настроек `code`, и ничто в сессии об этом не сообщает

1098* **По обычному HTTP**: вкладка Code запускается без ваших настроек `code`, какую бы версию ни включал Claude Desktop1107* **По обычному HTTP**: вкладка Code запускается без ваших настроек `code`, независимо от версии, с которой поставляется Claude Desktop

1099 1108 

1100Когда прокси перед шлюзом отвечает на `/managed/settings` собственным 404, вкладка Code также запускается без ваших настроек `code`, в том числе на машине, удовлетворяющей всем четырём условиям.1109Когда прокси перед шлюзом отвечает на `/managed/settings` собственным 404, вкладка Code также запускается без ваших настроек `code`, в том числе на машине, соответствующей всем четырём условиям.

1101 1110 

1102В политике с ключом `desktop` блок `code`, содержащий настройки, отключает инструмент WebSearch в Cowork, Chat и вкладке Code. О MCP-серверах см. раздел [Где применяется `managedMcpServers`](https://code.claude.com/docs/ru/managed-mcp#where-managedmcpservers-applies).1111В политике с ключом `desktop` блок `code`, содержащий настройки, отключает инструмент WebSearch в Cowork, Chat и вкладке Code. О MCP-серверах см. [Где применяется `managedMcpServers`](https://code.claude.com/docs/ru/managed-mcp#where-managedmcpservers-applies).

1103 1112 

1104##### Прямая установка настроек Claude Desktop1113##### Прямое задание настроек Claude Desktop

1105 1114 

1106Добавьте опциональный блок `desktop` рядом с `cli`, чтобы установить настройки Claude Desktop напрямую. Напишите настройки из [справочника управляемой конфигурации](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop как плоские имена ключей. Не указывайте ключи, которые Claude Desktop читает только из MDM или локальных файлов, такие как `bootstrapUrl`; шлюз отклоняет их при загрузке.1115Добавьте необязательный блок `desktop` рядом с `cli`, чтобы задавать настройки Claude Desktop напрямую. Указывайте настройки из [справочника управляемой конфигурации](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop в виде плоских имён ключей. Не указывайте ключи, которые Claude Desktop читает только из MDM или локальных файлов, например `bootstrapUrl`; шлюз отклоняет их при запуске.

1107 1116 

1108Этот пример задаёт три ключа Claude Desktop для группы `eng-contractors` наряду с её настройками `cli`:1117В этом примере для группы `eng-contractors` задаются три ключа Claude Desktop наряду с её настройками `cli`:

1109 1118 

1110```yaml theme={null}1119```yaml theme={null}

1111managed:1120managed:


1120 banner: { text: "Contractor build: internal use only" }1129 banner: { text: "Contractor build: internal use only" }

1121```1130```

1122 1131 

1123Каждый ключ опционален; Claude Desktop применяет свой собственный стандарт для любого ключа, который вы опустите.1132Каждый ключ необязателен; для любого опущенного ключа Claude Desktop применяет собственное значение по умолчанию.

1124 1133 

1125##### Что шлюз отклоняет при загрузке1134##### Что шлюз отклоняет при запуске

1126 1135 

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

1128 1137 

1129* Неизвестный ключ1138* Неизвестный ключ

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

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

1132* Устаревший псевдоним текущего ключа. В ошибке загрузки шлюз называет канонический ключ для написания.1141* Устаревший псевдоним текущего ключа. В ошибке запуска шлюз называет канонический ключ, который нужно указать.

1133 1142 

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

1135 1144 

1136До v2.1.232 шлюз принимал фиксированный список из 11 ключей функциональных ворот, таких как `chatTabEnabled` и `disableAutoUpdates`, и отклонял каждый другой ключ при загрузке. До v2.1.227 шлюз также отклонял `chatTabEnabled` и `chatAdvancedFileAnalysisEnabled` при загрузке.1145До v2.1.232 шлюз принимал фиксированный список из 11 ключей-флагов функций, например `chatTabEnabled` и `disableAutoUpdates`, и отклонял все остальные ключи при запуске. До v2.1.227 шлюз также отклонял при запуске `chatTabEnabled` и `chatAdvancedFileAnalysisEnabled`.

1137 1146 

1138##### Ключи, которым нужна более поздняя версия шлюза или Claude Desktop1147##### Ключи, требующие более новой версии шлюза или Claude Desktop

1139 1148 

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

1141 1150 

1142`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 перечисляет выпуск, который первым читает каждый ключ.1151`blockReadsOutsideWorkingDirectories`, `disableBypassPermissionsMode`, `configRecheckIntervalMinutes` и `sshClientPath` требуют Claude Code v2.1.281 или новее на сервере шлюза. То же относится к значению `required` для `microsoftAuthBroker` и полю `continuousAccessEvaluation` записи `managedMcpServers` для Microsoft 365. Выпуски Claude Desktop, вышедшие до появления значения `required`, читают его как `disabled`, поэтому задавайте `required` только после того, как Claude Desktop у каждого участника будет его поддерживать. В [справочнике управляемой конфигурации](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop указан выпуск, который первым читает каждый ключ.

1143 1152 

1144Если вы установите `orgPluginSettings` в блоке `desktop` политики, шлюз обслуживает его в форме массива, которую читают Claude Desktop 1.15200.0 и позже. Более старые рабочие столы игнорируют массив и не применяют политику инструмента плагина, поэтому обновите членов до 1.15200.0 или позже перед тем, как полагаться на это.1153Если вы задаёте `orgPluginSettings` в блоке `desktop` политики, шлюз отдаёт его в форме массива, которую читает Claude Desktop 1.15200.0 и новее. Более старые десктопы игнорируют массив и не применяют никакой политики инструментов плагинов, поэтому обновите участников до 1.15200.0 или новее, прежде чем на это полагаться.

1145 1154 

1146##### Как политика роли наследует базовый блок `desktop`1155##### Как ролевая политика наследует базовый блок `desktop`

1147 1156 

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

1149 1158 

1150* `disabledBuiltinTools`: шлюз использует объединение списка базового и списка политики1159* `disabledBuiltinTools`: шлюз использует объединение списка базы и списка политики

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

1152 1161 

1153Для каждого другого ключа, если вы установите его в политике роли, шлюз использует значение политики роли. Шлюз заменяет массив или вложенный объект, такой как `banner`, целиком, поэтому если вы установите `banner.text` в политике роли, шлюз удаляет `banner.backgroundColor` базового.1162Для любого другого ключа, если вы задали его в ролевой политике, шлюз использует значение ролевой политики. Массив или вложенный объект, например `banner`, шлюз заменяет целиком, поэтому если вы задали `banner.text` в ролевой политике, шлюз отбрасывает `banner.backgroundColor` из базы.

1154 1163 

1155##### Когда изменение политики достигает Claude Desktop1164##### Когда изменение политики доходит до Claude Desktop

1156 1165 

1157После того как вы повторно развернёте шлюз с изменённой политикой, Claude Desktop применяет большинство настроек только при следующем запуске:1166После повторного развёртывания шлюза с изменённой политикой Claude Desktop применяет большинство настроек только при следующем запуске:

1158 1167 

1159* **Закрыт**: Claude Desktop получает ответ bootstrap при запуске, поэтому изменение применяется со следующего запуска1168* **Закрыт**: Claude Desktop получает ответ bootstrap при запуске, поэтому изменение применяется со следующего запуска

1160* **Открыт**: Claude Desktop по умолчанию каждые 10 минут проверяет, изменился ли ответ, и применяет несколько настроек без перезапуска. Для остальных, таких как [`skillCreationEnabled`](https://claude.com/docs/third-party/claude-desktop/configuration#skillcreationenabled), пользователь видит карточку **Relaunch Claude Desktop** на боковой панели и сохраняет предыдущую конфигурацию, пока не перезапустит приложение. По умолчанию через 24 часа Claude Desktop показывает диалог перезапуска и перезапускается сам после 2 минут бездействия1169* **Открыт**: Claude Desktop по умолчанию каждые 10 минут проверяет, изменился ли ответ, и применяет некоторые настройки без перезапуска. Для остальных, например [`skillCreationEnabled`](https://claude.com/docs/third-party/claude-desktop/configuration#skillcreationenabled), пользователь видит карточку **Relaunch Claude Desktop** на боковой панели и сохраняет прежнюю конфигурацию, пока не перезапустит приложение. По умолчанию через 24 часа Claude Desktop показывает диалоговое окно перезапуска и перезапускается сам после 2 минут бездействия

1161 1170 

1162Чтобы сократить эти 24 часа, задайте [`relaunchEnforcementHours`](https://claude.com/docs/third-party/claude-desktop/configuration#relaunchenforcementhours) в блоке `desktop` политики. Вам нужен Claude Code v2.1.260 или позже на сервере шлюза и Claude Desktop 1.40609.0 или позже на машинах членов. При значении `0` диалог появляется, как только Claude Desktop обнаружит изменение.1171Чтобы сократить эти 24 часа, задайте [`relaunchEnforcementHours`](https://claude.com/docs/third-party/claude-desktop/configuration#relaunchenforcementhours) в блоке `desktop` политики. Нужен Claude Code v2.1.260 или новее на сервере шлюза и Claude Desktop 1.40609.0 или новее на машинах участников. При значении `0` диалоговое окно появляется сразу, как только Claude Desktop обнаруживает изменение.

1163 1172 

1164#### Расширенный контекст в Claude Desktop1173#### Расширенный контекст в Claude Desktop

1165 1174 

1166Если вы обслуживаете [Claude Desktop](#claude-desktop-overlay) через шлюз, его средство выбора модели предлагает вариант с контекстом 1M для каждой модели из списка, которая может работать с контекстным окном 1M. К ним относятся Claude Opus 4.6 и более поздние версии, Claude Sonnet 4.6 и более поздние версии, а также модели Fable. Этот вариант — вариант модели `[1m]`, описанный в разделе [Расширенный контекст](https://code.claude.com/docs/ru/model-config.md#extended-context). Вам нужен Claude Code v2.1.284 или позже на сервере шлюза.1175Если вы обслуживаете [Claude Desktop](#claude-desktop-overlay) через шлюз, его окно выбора модели предлагает вариант с контекстом 1M для каждой указанной модели, которая может работать с контекстным окном 1M. К ним относятся Claude Opus 4.6 и новее, Claude Sonnet 4.6 и новее, а также модели Fable. Этот вариант — это вариант модели `[1m]`, описанный в разделе [Расширенный контекст](https://code.claude.com/docs/ru/model-config.md#extended-context). Нужен Claude Code v2.1.284 или новее на сервере шлюза.

1167 1176 

1168Запись [`models`](#models) не получает варианта 1M, когда:1177Запись [`models`](#models) не получает варианта 1M, когда:

1169 1178 

1170* Upstream, который может обслуживать запись, сопоставляет её с моделью без поддержки 1M, включая upstream, к которому шлюз обращается только при failover1179* Upstream, способный обслуживать запись, сопоставляет её с моделью без поддержки 1M, включая upstream, к которому шлюз обращается только при отказе основного

1171* Ни её `id`, ни какое-либо из её значений `upstream_model` не называет модель Claude, например пользовательский псевдоним, направленный на ARN профиля вывода приложения1180* Ни её `id`, ни одно из значений `upstream_model` не называет модель Claude, например пользовательский псевдоним, направленный на ARN профиля инференса приложения

1172 1181 

1173Чтобы изменить то, что предлагает средство выбора, используйте один из следующих способов:1182Чтобы изменить то, что предлагает окно выбора, используйте один из следующих способов:

1174 1183 

1175* **Начинать пользователей с варианта 1M**: установите `modelPrefer1mContext: true` в блоке `desktop` политики. Пользователи, которые ещё не выбрали модель, начинают с варианта 1M, если он есть у первой модели в списке. Пользователи, которые уже выбрали модель, сохраняют свой выбор.1184* **Запуск пользователей на варианте 1M**: установите `modelPrefer1mContext: true` в блоке `desktop` политики. Пользователи, ещё не выбравшие модель, начинают с варианта 1M, если он есть у первой указанной модели. Пользователи, уже выбравшие модель, сохраняют свой выбор.

1176* **Предложить вариант вручную**: сделайте это, если на вашем сервере шлюза работает версия старше v2.1.284 или запись не называет модель Claude. Укажите модель в `models` дважды: один раз с обычным ID и один раз с добавленным `[1m]`, обе с одинаковой картой `upstream_model`. Claude Desktop показывает эту пару как одну модель с вариантом 1M. Шлюз обслуживает запись `[1m]` без проверки, поэтому добавляйте её только для модели, которую ваши upstream обслуживают с 1M.1185* **Ручное предложение варианта**: сделайте это, если сервер шлюза работает на версии старше v2.1.284 или запись не называет модель Claude. Укажите модель в `models` дважды: один раз с простым ID и один раз с добавленным `[1m]`, оба раза с одной и той же картой `upstream_model`. Claude Desktop показывает пару как одну модель с вариантом 1M. Шлюз отдаёт запись `[1m]` без проверки, поэтому добавляйте её только для модели, которую ваши upstream обслуживают с 1M.

1177 1186 

1178Этот пример предлагает вариант вручную для пользовательского псевдонима, направленного на профиль вывода приложения, и начинает новых пользователей с него:1187В этом примере вариант вручную предлагается для пользовательского псевдонима, направленного на профиль инференса приложения, и новые пользователи запускаются на нём:

1179 1188 

1180```yaml theme={null}1189```yaml theme={null}

1181models:1190models:


1195 1204 

1196##### Удаление варианта 1M1205##### Удаление варианта 1M

1197 1206 

1198Чтобы убрать вариант из средства выбора, установите `CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"` в блоке `env` под ключом `cli` политики. Если вы также указали запись, чей `id` заканчивается на `[1m]`, шлюз всё равно её обслуживает, поэтому удалите и эту запись.1207Чтобы убрать этот вариант из окна выбора, установите `CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"` в блоке `env` под ключом `cli` политики. Если вы также указали запись, `id` которой заканчивается на `[1m]`, шлюз по-прежнему её отдаёт, поэтому удалите и эту запись.

1199 1208 

1200Переменная также достигает терминальных сессий разработчиков, которым соответствует политика. О том, что она там изменяет, смотрите [Расширенный контекст](https://code.claude.com/docs/ru/model-config.md#extended-context).1209Переменная также доходит до сессий терминала разработчиков, подпадающих под политику. О том, что она там меняет, см. [Расширенный контекст](https://code.claude.com/docs/ru/model-config.md#extended-context).

1201 1210 

1202#### Приоритет с другими управляемыми источниками1211#### Приоритет относительно других управляемых источников

1203 1212 

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

1205 1214 

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

1207 1216 

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

1209 1218 

1210### `telemetry`1219### `telemetry`

1211 1220 

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

1213 1222 

1214В сессиях, вход в которые выполнен через `/login`, CLI помечает каждый экспорт идентификационными данными аутентифицированного пользователя, считанными из JWT, выданного шлюзом: атрибутами `user.id`, `user.email` и `user.groups`. Поэтому атрибуция затрат и использования по разработчикам работает без какой-либо настройки на стороне разработчика. События, которые Claude Code записывает до входа разработчика, [не несут этих данных](https://code.claude.com/docs/ru/monitoring-usage.md#standard-attributes). О том, какой атрибут отражает изменение групп разработчика, см. [Изменение групп во время открытой сессии](#group-changes-during-an-open-session).1223В сессиях с выполненным входом через `/login` CLI помечает каждый экспорт идентичностью аутентифицированного пользователя, считанной из JWT, выданного шлюзом: атрибутами `user.id`, `user.email` и `user.groups`. Поэтому учёт затрат и использования по разработчикам работает без какой-либо настройки на стороне разработчика. События, которые Claude Code записывает в лог до входа разработчика, [не содержат этой идентичности](https://code.claude.com/docs/ru/monitoring-usage.md#standard-attributes). О том, какой атрибут отражает изменение групп разработчика, см. [Изменение групп во время открытой сессии](#group-changes-during-an-open-session).

1215 1224 

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

1217 1226 

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

1219 1228 

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

1221 1230 

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

1223 1232 

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

1225 1234 

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

1227 1236 

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

1229 1238 

1230```yaml theme={null}1239```yaml theme={null}

1231telemetry:1240telemetry:


1244 1253 

1245> [!WARNING]1254> [!WARNING]

1246>1255>

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

1248>1257>

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

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

1251>1260>

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

1253 1262 

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

1255 1264 

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

1257* `http://127.0.0.1:<port>` или `http://[::1]:<port>` не запускается, если эта переменная не установлена1266* `http://127.0.0.1:<port>` или `http://[::1]:<port>` приводят к ошибке запуска, если эта переменная не установлена

1258 1267 

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

1260 1269 

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

1262 1271 

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

1264 1273 

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

1266 1275 

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

1268 1277 

1269* `CLAUDE_CODE_ENABLE_TELEMETRY=1`1278* `CLAUDE_CODE_ENABLE_TELEMETRY=1`

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

1271* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`1280* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`

1272* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`1281* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`

1273 1282 

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

1275 1284 

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

1277 1286 

1278Отправленный эндпоинт строится из публичного URL, поэтому метрики и логи не требуют конфигурации OTEL от разработчиков или политик.1287Передаваемый эндпоинт строится из публичного URL, поэтому метрики и логи не требуют настройки OTEL ни от разработчиков, ни в политиках.

1279 1288 

1280Разработчики, выполнившие вход через `/login`, не могут перенаправить экспорты с собственной конфигурацией OTEL:1289Разработчики, выполнившие вход через `/login`, не могут перенаправить экспорт с помощью собственной конфигурации OTEL:

1281 1290 

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

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

1284 1293 

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

1286 1295 

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

1288 1297 

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

1290 1299 

1291Оба кодирования OTLP protobuf и JSON передаются, и любой совместимый с OpenTelemetry бэкенд работает как назначение.1300Пересылаются обе кодировки OTLP — protobuf и JSON, и в качестве назначения подходит любой бэкенд, совместимый с OpenTelemetry.

1292 1301 

1293#### Отправка кумулятивных метрик1302#### Отправка кумулятивных метрик

1294 1303 

1295Если ваш коллектор принимает только кумулятивные метрики, задайте [`OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE`](https://code.claude.com/docs/ru/monitoring-usage#common-configuration-variables) равным `cumulative`. По умолчанию Claude Code отправляет дельта-метрики, а шлюз передаёт их без преобразования. Задайте переменную там, где её читает каждый тип сессий:1304Если ваш коллектор принимает только кумулятивные метрики, установите [`OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE`](https://code.claude.com/docs/ru/monitoring-usage#common-configuration-variables) в `cumulative`. По умолчанию Claude Code отправляет дельта-метрики, а шлюз пересылает их без преобразования. Задайте переменную там, где её читает каждый вид сессий:

1296 1305 

1297* **Терминальные сессии**: в блоке `env` под [ключом `cli` или `code`](#choose-cli-or-code) политики1306* **Сессии терминала**: в блоке `env` под [ключом `cli` или `code`](#choose-cli-or-code) политики

1298* **Сессии Cowork, которые [выполняются на машине пользователя](https://code.claude.com/docs/ru/managed-settings.md#where-and-when-a-policy-applies)**: в блоке `env` [клиентских управляемых настроек](#client-side-managed-settings) на этой машине1307* **Сессии Cowork, которые [выполняются на машине пользователя](https://code.claude.com/docs/ru/managed-settings.md#where-and-when-a-policy-applies)**: в блоке `env` [управляемых настроек на стороне клиента](#client-side-managed-settings) на этой машине

1299* **Сессии вкладки Code под политикой `code`**: в блоке `env` политики, когда выполнены [условия применения настроек `code`](#apply-code-settings-in-the-code-tab)1308* **Сессии вкладки Code под политикой `code`**: в блоке `env` политики, как только вы выполните [условия применения настроек `code`](#apply-code-settings-in-the-code-tab)

1300* **Сессии вкладки Code под политикой `cli`**: в блоке `env` клиентских управляемых настроек на машине, на которой выполняется сессия. При работе через SSH это удалённый хост.1309* **Сессии вкладки Code под политикой `cli`**: в блоке `env` управляемых настроек на стороне клиента на машине, которая выполняет сессию. При работе через SSH это удалённый хост.

1301 1310 

1302Если вы добавляете переменную в управляемые настройки машины, также задайте [`parentSettingsBehavior: "merge"`](https://code.claude.com/docs/ru/claude-apps-gateway#set-the-opt-in) в источнике с наивысшим приоритетом на этой машине. Без этого сессии Cowork и сессии вкладки Code под политикой `cli` работают без списка разрешённых доменов исходящего трафика и другой политики, которую Claude Desktop передаёт им как родительские настройки.1311Если вы добавляете переменную в управляемые настройки машины, также установите [`parentSettingsBehavior: "merge"`](https://code.claude.com/docs/ru/claude-apps-gateway#set-the-opt-in) в источнике с наивысшим приоритетом на этой машине. Без этого сессии Cowork и сессии вкладки Code под политикой `cli` работают без списка разрешённых адресов для исходящего трафика и других политик, которые Claude Desktop передаёт им как родительские настройки.

1303 1312 

1304#### Добавьте свои собственные метки1313#### Добавление собственных меток

1305 1314 

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

1307 1316 

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

1309 1318 

1310```yaml theme={null}1319```yaml theme={null}

1311telemetry:1320telemetry:


1316 deployment.environment.name: prod1325 deployment.environment.name: prod

1317```1326```

1318 1327 

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

1320 1329 

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

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

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

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

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

1326 1335 

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

1328 1337 

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

1330 1339 

1331Claude Code также копирует каждую метку на каждую точку данных метрики, поэтому вы можете фильтровать метрики по ней в бэкенде, который не индексирует атрибуты ресурса. Чтобы отключить эту копию, смотрите [Metrics cardinality control](https://code.claude.com/docs/ru/monitoring-usage.md#metrics-cardinality-control).1340Claude Code также копирует каждую метку в каждую точку данных метрики, чтобы вы могли фильтровать по ней метрики в бэкенде, который не индексирует атрибуты ресурса. Чтобы отключить это копирование, см. [Управление кардинальностью метрик](https://code.claude.com/docs/ru/monitoring-usage.md#metrics-cardinality-control).

1332 1341 

1333#### Изменение групп во время открытой сессии1342#### Изменение групп во время открытой сессии

1334 1343 

1335Сессии терминала помещают `user.groups` в ресурс OTLP и ещё раз в каждую точку данных метрики и каждое событие. Если группы разработчика меняются во время открытой сессии, точки данных и события для использования после следующего [тихого обновления](#session) несут новые группы. Ресурс сохраняет старые группы, пока разработчик не перезапустит Claude Code, поэтому группируйте по атрибуту точки данных или события.1344Сессии терминала помещают `user.groups` в ресурс OTLP и повторно в каждую точку данных метрики и каждое событие. Если группы разработчика меняются, пока сессия открыта, точки данных и события для использования после следующего [фонового обновления](#session) содержат новые группы. Ресурс сохраняет старые группы, пока разработчик не перезапустит Claude Code, поэтому группируйте по атрибуту в точке данных или событии.

1336 1345 

1337Если вы включите `resource_to_telemetry_conversion` в экспортёре Prometheus remote write коллектора OpenTelemetry, экспортёр заменяет `user.groups` каждой точки данных значением из ресурса, поэтому каждая точка данных показывает старые группы. Чтобы сохранить значение точки данных, удалите `user.groups` из ресурса перед этим экспортёром.1346Если вы включаете `resource_to_telemetry_conversion` в экспортёре Prometheus remote write в OpenTelemetry Collector, экспортёр заменяет `user.groups` каждой точки данных значением из ресурса, поэтому каждая точка данных показывает старые группы. Чтобы сохранить значение точки данных, удалите `user.groups` из ресурса до этого экспортёра.

1338 1347 

1339Этот процессор `resource` коллектора OpenTelemetry удаляет атрибут в пайплайнах, в которых он указан:1348Этот процессор `resource` OpenTelemetry Collector удаляет атрибут в конвейерах, где он указан:

1340 1349 

1341```yaml theme={null}1350```yaml theme={null}

1342processors:1351processors:


1346 action: delete1355 action: delete

1347```1356```

1348 1357 

1349После добавления `resource/drop-user-groups` в `processors` пайплайна метрик каждый ряд несёт метку `user_groups` из собственной точки данных.1358После добавления `resource/drop-user-groups` в `processors` конвейера метрик каждый ряд содержит метку `user_groups` из собственной точки данных.

1350 1359 

1351#### Экспорт прямо на ваш сборщик1360#### Экспорт напрямую в ваш коллектор

1352 1361 

1353Чтобы сессии, в которые выполнен вход через `/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 или позже на каждой машине разработчика. Более ранние клиенты экспортируют через реле.1362Чтобы сессии, в которые выполнен вход через `/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 или новее на машине каждого разработчика. Более ранние клиенты экспортируют через ретранслятор.

1354 1363 

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

1356 1365 

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

1358 1367 

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

1360 1369 

1361* Эндпоинт поступает от самого шлюза. Если вы установите ту же переменную в профиле MDM или локальном `managed-settings.json`, экспорты остаются на реле.1370* Эндпоинт поступает от самого шлюза. Если вы задаёте ту же переменную в профиле MDM или в локальном `managed-settings.json`, экспорт остаётся на ретрансляторе.

1362* URL использует `https://`, или `http://` на адрес обратной связи1371* URL использует `https://` или `http://` к loopback-адресу

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

1364* URL не является собственным хостом шлюза. Эндпоинт, адресованный шлюзу, сохраняет путь реле и его токен сессии.1373* URL не является собственным хостом шлюза. Эндпоинт, адресованный шлюзу, сохраняет путь через ретранслятор и его токен сессии.

1365* Ни вы, ни разработчик не настроили [`otelHeadersHelper`](https://code.claude.com/docs/ru/settings-reference#otelheadershelper) ни в каком источнике настроек. С настроенным помощником каждый сигнал остаётся на реле.1374* Ни вы, ни разработчик не настроили [`otelHeadersHelper`](https://code.claude.com/docs/ru/settings-reference#otelheadershelper) ни в одном источнике настроек. Если helper настроен, все сигналы остаются на ретрансляторе.

1366 1375 

1367Эндпоинт, который вы называете, изменяет только то, куда идут экспорты. Вы всё ещё выбираете, какие сигналы экспортируются вообще, с селекторами `OTEL_*_EXPORTER`.1376Указанный вами эндпоинт меняет только то, куда направляется экспорт. Какие сигналы вообще экспортируются, вы по-прежнему выбираете с помощью селекторов `OTEL_*_EXPORTER`.

1368 1377 

1369Эндпоинт сам по себе не включает экспорт, поэтому также установите переменные, которые это делают, если шлюз их уже не отправляет:1378Сам по себе эндпоинт не включает экспорт, поэтому также задайте переменные, которые это делают, если шлюз ещё не передаёт их:

1370 1379 

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

1372* Если нет, также установите `CLAUDE_CODE_ENABLE_TELEMETRY=1`, селекторы `OTEL_*_EXPORTER` и `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.1381* Если нет, также задайте `CLAUDE_CODE_ENABLE_TELEMETRY=1`, селекторы `OTEL_*_EXPORTER` и `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.

1373 1382 

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

1375 1384 

1376#### Когда назначение не удаётся1385#### Когда назначение недоступно

1377 1386 

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

1379 1388 

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

1381 1390 

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

1383 1392 

1384### Настройка HTTP1393### Настройка HTTP

1385 1394 

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

1387 1396 

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

1389| - | - | - | - |1398| - | - | - | - |

1390| `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 и аудита. |1399| `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 и аудита. |

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

1392| `limits` | `max_request_header_bytes` | не установлено | Снижает установленный в шлюзе лимит в 256 KiB на общий размер заголовков запроса. Запрос сверх лимита возвращает `431`, а значение выше 256 KiB ни на что не влияет. Если разработчики получают `431` после входа, смотрите [Слишком большие заголовки запроса после входа](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#request-headers-too-large-after-sign-in). |1401| `limits` | `max_request_header_bytes` | не задано | Снижает установленный в шлюзе лимит 256 KiB на общий размер заголовков запроса. Запрос сверх лимита возвращает `431`, а значение выше 256 KiB не действует. Если разработчики получают `431` после входа, см. [Слишком большие заголовки запроса после входа](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#request-headers-too-large-after-sign-in). |

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

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

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

1396| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Ограничение частоты запросов на IP для отправок `user_code` в `/device`. Это то, что не даёт кому-либо угадать код другого разработчика. [Large rollouts](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#large-rollouts) показывает, как далеко его поднять. |1405| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Ограничение частоты запросов по IP для отправки `user_code` на `/device`. Именно оно не даёт кому-либо подобрать код другого разработчика. В разделе [Крупные развёртывания](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#large-rollouts) показано, насколько его увеличить. |

1397 1406 

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

1399 1408 

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

1401 1410 

1402* **При загрузке**: предупреждение в операционном логе рекомендует разрешить только частные диапазоны `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`, как при локальной разработке, предупреждение не появляется.1411* **При запуске**: предупреждение в операционном логе рекомендует разрешить только частные диапазоны `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`, а также любые другие внутренние диапазоны, из которых подключаются ваши разработчики. Если вы привязываете шлюз к loopback-адресу и не задаёте ни `trusted_proxies`, ни `public_url`, как при локальной разработке, предупреждение не появляется.

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

1404 1413 

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

1406 1415 

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

1408 1417 

1409### `load_test_mode`1418### `load_test_mode`

1410 1419 

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

1412 1421 

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

1414 1423 

1415Пример ниже включает режим со значениями по умолчанию: ответ примерно из 750 токенов текста, передаваемый потоком в течение примерно 10 секунд:1424Пример ниже включает режим со значениями по умолчанию — ответом примерно из 750 токенов текста, передаваемым потоком около 10 секунд:

1416 1425 

1417```yaml theme={null}1426```yaml theme={null}

1418load_test_mode:1427load_test_mode:


1421 reply_seconds: 9.5 # how long a streamed reply takes1430 reply_seconds: 9.5 # how long a streamed reply takes

1422```1431```

1423 1432 

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

1425| - | - | - |1434| - | - | - |

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

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

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

1429 1438 

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

1431 1440 

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

1433 1442 

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

1435 1444 

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

1437 1446 

1438> [!WARNING]1447> [!WARNING]

1439>1448>

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

1441 1450 

1442## Полный пример1451## Полный пример

1443 1452 


1589 # Политика contractors наследует этот ключ.1598 # Политика contractors наследует этот ключ.

1590 enforceAvailableModels: true1599 enforceAvailableModels: true

1591 permissions:1600 permissions:

1592 allow: [Read, Grep, Bash, Edit]1601 allow: [Read, Grep, Edit]

1593 deny: ["WebFetch"]1602 deny: ["WebFetch"]

1594 env: { HTTP_PROXY: http://proxy.example.com:8080 }1603 env: { HTTP_PROXY: http://proxy.example.com:8080 }

1595 1604 

Details

393| `/login` разработчика показывает стандартный выбор аккаунта вместо экрана **Cloud gateway** | `forceLoginMethod` или `forceLoginGatewayUrl` не установлены в управляемых настройках на этой машине | Разверните [файл управляемых настроек](https://code.claude.com/docs/ru/claude-apps-gateway#set-the-gateway-url) на устройство; `/login` читает URL шлюза оттуда |393| `/login` разработчика показывает стандартный выбор аккаунта вместо экрана **Cloud gateway** | `forceLoginMethod` или `forceLoginGatewayUrl` не установлены в управляемых настройках на этой машине | Разверните [файл управляемых настроек](https://code.claude.com/docs/ru/claude-apps-gateway#set-the-gateway-url) на устройство; `/login` читает URL шлюза оттуда |

394| Запросы разработчика не удаются с `Not signed in to the Cloud gateway — run /login.` | Управляемые настройки машины устанавливают `forceLoginMethod: "gateway"` или `forceLoginGatewayUrl`, и сессия не имеет входа в шлюз. Оставшийся вход claude.ai не удовлетворяет требованию. | Попросите разработчика запустить `/login` и завершить вход в шлюз. См. также [Administrator policy requires a Cloud gateway sign-in](https://code.claude.com/docs/ru/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in). |394| Запросы разработчика не удаются с `Not signed in to the Cloud gateway — run /login.` | Управляемые настройки машины устанавливают `forceLoginMethod: "gateway"` или `forceLoginGatewayUrl`, и сессия не имеет входа в шлюз. Оставшийся вход claude.ai не удовлетворяет требованию. | Попросите разработчика запустить `/login` и завершить вход в шлюз. См. также [Administrator policy requires a Cloud gateway sign-in](https://code.claude.com/docs/ru/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in). |

395| Claude Desktop сообщает, что его конфигурация bootstrap не может быть получена | `/user/bootstrap` вернул 404: политика, соответствующая пользователю, не содержит ключ `desktop`, или политика не совпадает. Журнал аудита шлюза записывает каждое отклонение как `desktop_bootstrap.denied` с причиной. | Добавьте блок `desktop` к политике, которая соответствует пользователю, или к базовому слою `match: {}`; пустого `desktop: {}` достаточно. См. [Claude Desktop overlay](https://code.claude.com/docs/ru/claude-apps-gateway-config.md#claude-desktop-overlay). |395| Claude Desktop сообщает, что его конфигурация bootstrap не может быть получена | `/user/bootstrap` вернул 404: политика, соответствующая пользователю, не содержит ключ `desktop`, или политика не совпадает. Журнал аудита шлюза записывает каждое отклонение как `desktop_bootstrap.denied` с причиной. | Добавьте блок `desktop` к политике, которая соответствует пользователю, или к базовому слою `match: {}`; пустого `desktop: {}` достаточно. См. [Claude Desktop overlay](https://code.claude.com/docs/ru/claude-apps-gateway-config.md#claude-desktop-overlay). |

396| Журнал аудита показывает `auth.denied` с `reason: invalid_token` на `/v1/logs` или `/v1/metrics` | Вы задали [`otelHeadersHelper`](https://code.claude.com/docs/ru/settings-reference#otelheadershelper) в управляемых настройках машины. В сессии Claude Desktop на этой машине Claude Code отправляет заголовок `Authorization` из хелпера в ретранслятор телеметрии шлюза вместо токена сессии. Если Claude Desktop поставляется с Claude Code версии до v2.1.307, вы получите такое же отклонение, если зададите в этих настройках заголовок `Authorization` в `OTEL_EXPORTER_OTLP_HEADERS` или в её варианте для отдельного сигнала. | Удалите хелпер из этих настроек. Если Claude Desktop поставляется с Claude Code версии до v2.1.307, удалите переменную. |

396| Запуск показывает `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | Установленная сборка Claude Code предшествует поддержке шлюза | Попросите разработчика обновить Claude Code до выпуска, который включает поддержку Cloud gateway |397| Запуск показывает `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | Установленная сборка Claude Code предшествует поддержке шлюза | Попросите разработчика обновить Claude Code до выпуска, который включает поддержку Cloud gateway |

397| Запуск выходит с `Administrator policy requires a Cloud gateway sign-in on this machine` | Окружение разработчика устанавливает `ANTHROPIC_API_KEY` или `ANTHROPIC_AUTH_TOKEN`, их настройки настраивают [`apiKeyHelper`](https://code.claude.com/docs/ru/settings-reference#apikeyhelper), или API-ключ из более раннего входа Claude Console всё ещё сохранён | Попросите разработчика очистить каждый из применимых: отменить переменную, удалить запись `apiKeyHelper` или запустить `claude auth logout` для удаления сохранённого ключа. Сессия, которая выбирает облачного провайдера с `CLAUDE_CODE_USE_*`, затем начинается без входа; для каждой другой сессии попросите его запустить `claude` и войти с помощью `/login`. См. также [Administrator policy requires a Cloud gateway sign-in](https://code.claude.com/docs/ru/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in). |398| Запуск выходит с `Administrator policy requires a Cloud gateway sign-in on this machine` | Окружение разработчика устанавливает `ANTHROPIC_API_KEY` или `ANTHROPIC_AUTH_TOKEN`, их настройки настраивают [`apiKeyHelper`](https://code.claude.com/docs/ru/settings-reference#apikeyhelper), или API-ключ из более раннего входа Claude Console всё ещё сохранён | Попросите разработчика очистить каждый из применимых: отменить переменную, удалить запись `apiKeyHelper` или запустить `claude auth logout` для удаления сохранённого ключа. Сессия, которая выбирает облачного провайдера с `CLAUDE_CODE_USE_*`, затем начинается без входа; для каждой другой сессии попросите его запустить `claude` и войти с помощью `/login`. См. также [Administrator policy requires a Cloud gateway sign-in](https://code.claude.com/docs/ru/errors.md#administrator-policy-requires-a-cloud-gateway-sign-in). |

398| Запуск или `/login` сообщает `Claude Code may not be enabled for your organization` после 403 при загрузке управляемых настроек | Шлюз или что-то перед ним ответили на запрос `/managed/settings` с 403. Собственный маршрут настроек шлюза никогда не отвечает 403. Статус поступает из проверок IP [`access_control`](https://code.claude.com/docs/ru/claude-apps-gateway-config#http-tuning) или из прокси или WAF перед шлюзом. Журнал аудита записывает отклонение проверки IP как `access.denied` с причиной. Разработчик остаётся вошедшим. | Проверьте журнал аудита на `access.denied` в момент сбоя и исправьте списки `access_control` или фронтенд, затем попросите разработчика запустить `claude` снова |399| Запуск или `/login` сообщает `Claude Code may not be enabled for your organization` после 403 при загрузке управляемых настроек | Шлюз или что-то перед ним ответили на запрос `/managed/settings` с 403. Собственный маршрут настроек шлюза никогда не отвечает 403. Статус поступает из проверок IP [`access_control`](https://code.claude.com/docs/ru/claude-apps-gateway-config#http-tuning) или из прокси или WAF перед шлюзом. Журнал аудита записывает отклонение проверки IP как `access.denied` с причиной. Разработчик остаётся вошедшим. | Проверьте журнал аудита на `access.denied` в момент сбоя и исправьте списки `access_control` или фронтенд, затем попросите разработчика запустить `claude` снова |

Details

288 288 

289[Команды агентов](https://code.claude.com/docs/ru/agent-teams.md) отключены по умолчанию, но могут быть включены путём добавления `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` в ваши [переменные окружения](https://code.claude.com/docs/ru/cloud-environments.md#set-environment-variables).289[Команды агентов](https://code.claude.com/docs/ru/agent-teams.md) отключены по умолчанию, но могут быть включены путём добавления `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` в ваши [переменные окружения](https://code.claude.com/docs/ru/cloud-environments.md#set-environment-variables).

290 290 

291### Предложения плагинов в диалоге

292 

293Карточка в диалоге со списком из одного или нескольких [плагинов](https://code.claude.com/docs/ru/plugins/overview.md) и кнопкой **Add** означает, что Claude предлагает плагины для вашей задачи. Claude может делать такие предложения без вашего запроса. Отвечать не обязательно: Claude в любом случае продолжит выполнять задачу.

294 

295#### Добавление или удаление предложенного плагина

296 

297Выберите **Add** у плагина, чтобы включить его для вашей учётной записи claude.ai, где он останется включённым и после завершения сессии. Чтобы отменить это, откройте добавленный плагин из карточки, выберите **Manage**, чтобы перейти на страницу плагина на claude.ai, и удалите плагин на этой странице.

298 

299#### Отключение предложений плагинов

300 

301Чтобы Claude перестал предлагать плагины, запретите инструменты `SearchPlugins` и `SuggestPluginInstall` с помощью [правил разрешений](https://code.claude.com/docs/ru/permissions.md#manage-permissions). В сессии с одним репозиторием вне [проекта](https://code.claude.com/docs/ru/claude-projects.md) сделайте коммит этих правил в файл `.claude/settings.json` этого репозитория, указав оба имени инструментов в `permissions.deny`:

302 

303```json theme={null}

304{

305 "permissions": {

306 "deny": ["SearchPlugins", "SuggestPluginInstall"]

307 }

308}

309```

310 

311Claude Code игнорирует правила разрешений в файле `.claude/settings.json` репозитория, включая эти запрещающие правила, когда [управляемые настройки](https://code.claude.com/docs/ru/managed-settings.md), применяемые к сессии, задают [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/ru/settings-reference#allowmanagedpermissionrulesonly). В этом случае поместите правила в эти управляемые настройки. Для других конфигураций, например сессии с несколькими репозиториями или облачного треда в проекте, см., какие [настройки попадают в облачную сессию](https://code.claude.com/docs/ru/settings.md#settings-in-cloud-sessions).

312 

291### Отмена поставленного в очередь сообщения313### Отмена поставленного в очередь сообщения

292 314 

293Если вы отправляете сообщение, пока Claude работает, сообщение ставится в очередь до тех пор, пока Claude его не прочитает. Чтобы отменить поставленное в очередь сообщение, нажмите на ✕ на нём. Текст вернётся в поле сообщения, чтобы вы могли его отредактировать или отправить что-то другое.315Если вы отправляете сообщение, пока Claude работает, сообщение ставится в очередь до тех пор, пока Claude его не прочитает. Чтобы отменить поставленное в очередь сообщение, нажмите на ✕ на нём. Текст вернётся в поле сообщения, чтобы вы могли его отредактировать или отправить что-то другое.

Details

103 103 

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

105 105 

106Транскрипт также может содержать то, что Claude Code отправляет модели вместе с вашими сообщениями:

107 

108* Системный промпт

109* Определения инструментов

110* Параметры запросов

111* Загруженные им файлы инструкций, например CLAUDE.md

112 

106### Автоматически очищаемые данные113### Автоматически очищаемые данные

107 114 

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

109 116 

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

111| - | - |118| - | - |

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

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

114| `projects/<project>/<session>/subagents/` | Транскрипты диалогов [субагентов](https://code.claude.com/docs/ru/sub-agents.md), удаляются вместе с транскриптом родительской сессии, когда истекает его срок хранения |121| `projects/<project>/<session>/subagents/` | Транскрипты [субагентов](https://code.claude.com/docs/ru/sub-agents.md) в том же формате, что и транскрипт сессии; удаляются вместе с транскриптом родительской сессии, когда истекает его срок хранения |

115| `projects/<project>/<session>/tool-results/` | Большие выводы инструментов, вынесенные в отдельные файлы, и полноразмерные копии [изображений, которые возвращают инструменты MCP](https://code.claude.com/docs/ru/mcp.md#images-in-tool-results) |122| `projects/<project>/<session>/tool-results/` | Большие выводы инструментов, вынесенные в отдельные файлы, и полноразмерные копии [изображений, которые возвращают инструменты MCP](https://code.claude.com/docs/ru/mcp.md#images-in-tool-results) |

116| `projects/<project>/<session>/mcp-tasks/` | Данные, необходимые возобновлённой сессии, чтобы снова отслеживать выполняющиеся [задачи MCP](https://code.claude.com/docs/ru/mcp.md#mcp-tasks-that-run-on-the-server), и результаты завершённых задач, которые Claude ещё не прочитал |123| `projects/<project>/<session>/mcp-tasks/` | Данные, необходимые возобновлённой сессии, чтобы снова отслеживать выполняющиеся [задачи MCP](https://code.claude.com/docs/ru/mcp.md#mcp-tasks-that-run-on-the-server), и результаты завершённых задач, которые Claude ещё не прочитал |

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

Details

6 6 

7> Установите Claude Security plugin для сканирования вашей кодовой базы на уязвимости в сеансе Claude Code и преобразуйте результаты в патчи, которые вы проверяете и применяете.7> Установите Claude Security plugin для сканирования вашей кодовой базы на уязвимости в сеансе Claude Code и преобразуйте результаты в патчи, которые вы проверяете и применяете.

8 8 

9Claude Security plugin запускает многоагентное сканирование уязвимостей вашей кодовой базы внутри сеанса Claude Code. Команда агентов Claude отображает вашу архитектуру, создает модель угроз, ищет уязвимости и независимо проверяет каждый результат перед написанием отчета. Используйте plugin для сканирования всего репозитория или [только набора изменений](#scan-only-your-changes), таких как diff ветки, diff pull request или одного коммита, затем преобразуйте результаты, которые вы выбрали, в патчи, которые вы проверяете и применяете самостоятельно.9Плагин Claude Security запускает многоагентное сканирование уязвимостей вашей кодовой базы внутри сессии Claude Code. [По умолчанию](#choose-a-scan-effort) при сканировании всего репозитория агенты Claude составляют карту вашей архитектуры, создают модель угроз, ищут уязвимости и независимо проверяют каждый результат перед написанием отчета.

10 

11Используйте плагин для сканирования всего репозитория или [только набора изменений](#scan-only-your-changes), таких как diff ветки, diff pull request или один коммит, затем преобразуйте выбранные вами результаты в патчи, которые вы проверяете и применяете самостоятельно.

10 12 

11Плагин работает локально в вашей сессии, использует [любые модели, к которым у вас есть доступ в Claude Code](#models-and-providers), и каждое сканирование учитывается в вашем [использовании](https://code.claude.com/docs/ru/costs.md). Если вам нужна управляемая служба, которая отслеживает ваши репозитории, или вы хотите запускать сканирования на [Claude Mythos](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5), см. продукт [Claude Security](https://claude.com/product/claude-security), доступный в плане Enterprise.13Плагин работает локально в вашей сессии, использует [любые модели, к которым у вас есть доступ в Claude Code](#models-and-providers), и каждое сканирование учитывается в вашем [использовании](https://code.claude.com/docs/ru/costs.md). Если вам нужна управляемая служба, которая отслеживает ваши репозитории, или вы хотите запускать сканирования на [Claude Mythos](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5), см. продукт [Claude Security](https://claude.com/product/claude-security), доступный в плане Enterprise.

12 14 


51 53 

52После активации плагина вы готовы к [сканированию и исправлению вашей кодовой базы](#scan-and-fix-your-codebase).54После активации плагина вы готовы к [сканированию и исправлению вашей кодовой базы](#scan-and-fix-your-codebase).

53 55 

56### Обновите плагин

57 

58Чтобы обновить плагин самостоятельно, см. раздел [Немедленное обновление плагинов](https://code.claude.com/docs/ru/plugins/install.md#update-plugins-now). Claude Code также [обновляет плагин автоматически](https://code.claude.com/docs/ru/plugins/install.md#keep-plugins-updated), если автообновление не отключено.

59 

54### Удалите плагин60### Удалите плагин

55 61 

56Чтобы удалить плагин, удалите его из меню `/plugin` или запустите `claude plugin uninstall claude-security` в вашем терминале.62Чтобы удалить плагин, удалите его из меню `/plugin` или запустите `claude plugin uninstall claude-security` в вашем терминале.


95 101 

96На большом репозитории сканируйте одну область за раз вместо всего дерева. Выберите одну из сосредоточенных областей, которые предлагает плагин, например ваш уровень API или ваш код аутентификации, и запуск сам подстраивает свой объем под то, что вы выбираете. Раздел охвата отчета указывает, что было и не было проверено. Запустите другое сканирование в другой области в любое время.102На большом репозитории сканируйте одну область за раз вместо всего дерева. Выберите одну из сосредоточенных областей, которые предлагает плагин, например ваш уровень API или ваш код аутентификации, и запуск сам подстраивает свой объем под то, что вы выбираете. Раздел охвата отчета указывает, что было и не было проверено. Запустите другое сканирование в другой области в любое время.

97 103 

104### Выберите уровень усилий сканирования

105 

106Уровень усилий сканирования определяет, насколько глубоким будет сканирование. Ваши результаты проходят одну и ту же независимую проверку на уровнях `low`, `medium` и `high`.

107 

108* **`low`**: быстрый первичный осмотр. При сканировании кодовой базы пропускает карту архитектуры и модель угроз.

109* **`medium`**: значение по умолчанию.

110* **`high`**: то же, что делает `medium`, плюс дополнительный поиск уязвимостей в том же коде.

111 

112Укажите уровень усилий сканирования в своем промпте Claude Code, например `/claude-security scan my public API code at high` или `/claude-security scan my branch at high`.

113 

114Если сканирование большого репозитория находит меньше, чем вы ожидаете, выберите уровень усилий сканирования `high`, запустите сканирование повторно или сделайте и то, и другое. Каждый из этих вариантов может выявить результаты, которые не находит одно сканирование на уровне `medium`.

115 

98### Прочитайте результаты сканирования116### Прочитайте результаты сканирования

99 117 

100Каждое сканирование записывает свои результаты в каталог `CLAUDE-SECURITY-<timestamp>/` с временной меткой в вашем репозитории:118Каждое сканирование записывает свои результаты в каталог `CLAUDE-SECURITY-<timestamp>/` с временной меткой в вашем репозитории:


102* **`CLAUDE-SECURITY-RESULTS.md`**: отчет с ID каждого результата, например `F1`, плюс его влияние, сценарий эксплуатации, серьезность, уверенность и рекомендация120* **`CLAUDE-SECURITY-RESULTS.md`**: отчет с ID каждого результата, например `F1`, плюс его влияние, сценарий эксплуатации, серьезность, уверенность и рекомендация

103* **`CLAUDE-SECURITY-RESULTS.jsonl`**: те же результаты в машиночитаемой форме, один объект JSON на строку121* **`CLAUDE-SECURITY-RESULTS.jsonl`**: те же результаты в машиночитаемой форме, один объект JSON на строку

104* **`CLAUDE-SECURITY-RESULTS.sarif`**: те же результаты как журнал [SARIF 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) для сканирования кода GitHub и любого другого инструмента, который читает стандарт. Сканирование классифицирует результаты в соответствии с их категориями слабостей [CWE](https://cwe.mitre.org/)122* **`CLAUDE-SECURITY-RESULTS.sarif`**: те же результаты как журнал [SARIF 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) для сканирования кода GitHub и любого другого инструмента, который читает стандарт. Сканирование классифицирует результаты в соответствии с их категориями слабостей [CWE](https://cwe.mitre.org/)

105* **`CLAUDE-SECURITY-REVISION-<commit>.json`**: штамп редакции, записывающий, какой коммит был отсканирован, с каким усилием, были ли незафиксированные изменения частью отсканированного дерева и насколько тщательно был проверен запуск, поэтому отчет всегда привязан к коду, который он описывает. Сканирование вне контроля версий ставит `UNVERSIONED` вместо коммита123* **`CLAUDE-SECURITY-REVISION-<commit>.json`**: штамп редакции, записывающий, какой коммит был отсканирован, с каким [уровнем усилий сканирования](#choose-a-scan-effort), были ли незафиксированные изменения частью отсканированного дерева и насколько тщательно был проверен запуск, поэтому отчет всегда привязан к коду, который он описывает. Сканирование вне контроля версий ставит `UNVERSIONED` вместо коммита

106 124 

107Этот каталог — единственное изменение, которое сканирование вносит в ваш checkout, и он имеет свой собственный `.gitignore`, поэтому случайный `git add` никогда не затянет отчет в коммит. Чтобы сохранить отчет в истории для аудита, удалите этот один файл `.gitignore` и зафиксируйте каталог как любой другой.125Этот каталог — единственное изменение, которое сканирование вносит в ваш checkout, и он имеет свой собственный `.gitignore`, поэтому случайный `git add` никогда не затянет отчет в коммит. Чтобы сохранить отчет в истории для аудита, удалите этот один файл `.gitignore` и зафиксируйте каталог как любой другой.

108 126 

desktop.md +64 −0

Details

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

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

996 996 

997#### Проверка ключа хоста удалённой машины

998 

999Ключ хоста — это ключ, который удалённая машина предъявляет, чтобы подтвердить, какая это машина, а отпечаток — это краткая форма этого ключа. Когда вы доверяете ключу, ваш компьютер сохраняет его и подключается к тому, кто его предъявляет, больше не спрашивая. Проверьте ключ, прежде чем доверять ему, потому что что-то может перехватывать подключение.

1000 

1001Сначала определите, какой машине принадлежит ключ, в зависимости от того, где вы видите отпечаток:

1002 

1003* **Desktop спрашивает `Connect to <host> for the first time?`, или вы выбрали Review new key**: машине, которую называет Desktop, `<host>`

1004* **Desktop спрашивает `Connect through <jump host> for the first time?`**: промежуточному хосту, то есть машине, через которую проходит ваше подключение, а не машине, к которой вы хотите подключиться

1005* **`ssh` спрашивает или предупреждает в терминале**: машине, которую называет его сообщение; это может быть не та машина, которую вы ввели

1006 

1007Получите собственный отпечаток этой машины с самой машины, а не через подключение, которое вы проверяете:

1008 

1009* **Машиной управляет кто-то другой**: попросите у него отпечаток ключа хоста

1010* **Машиной управляете вы, и на ней Linux или macOS**: выполните на ней `ssh-keygen -lf /etc/ssh/ssh_host_<type>_key.pub` — с её консоли или через подключение, которому вы уже доверяете. Вместо `<type>` используйте тип ключа, который Desktop или `ssh` показывает рядом с отпечатком, в нижнем регистре: `ed25519` для `ED25519` или `ssh-ed25519`.

1011 

1012Затем сравните собственный отпечаток машины с тем, который вам показали:

1013 

1014* **Они совпадают**: доверьтесь ключу. Выберите **Trust and connect** или **Trust new key** в Desktop либо ответьте `yes` в терминале.

1015* **Они различаются, или вы не можете проверить**: не подключайтесь. Выберите **Cancel** в Desktop либо ответьте `no` в терминале. Если машиной управляет кто-то другой, сообщите ему, какой отпечаток вам показали.

1016 

1017Если вас направил сюда шаг по устранению неполадок, вернитесь к нему при любом результате.

1018 

997#### Настройка прокси или сертификата CA для SSH-сессий1019#### Настройка прокси или сертификата CA для SSH-сессий

998 1020 

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


2135 2157 

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

2137 2159 

2160### SSH host key verification failed

2161 

2162Каждое из этих сообщений означает, что Desktop отклонил [ключ хоста](#check-a-remote-machines-host-key):

2163 

2164* `SSH host key verification failed` или `Host denied (verification failed)` в разделе **View details** на карточке `Couldn't connect to <host>`

2165* `Connection failed: Host key changed or not trusted` рядом с полем ввода промпта или после **Test connection**

2166* `<host>'s host key is not trusted` или `<host>'s host key has changed` в отключённой сессии

2167 

2168Обычно Desktop отклоняет ключ, потому что он отличается от ключа, сохранённого на вашем компьютере, или потому что для этой машины ключ не сохранён. Машина, которую пересобрали или переустановили, обычно предъявляет новый ключ; так же ведёт себя и то, что перехватывает подключение. Проверьте ключ, прежде чем подключаться снова, начиная с того, что Desktop показывает вместе с сообщением:

2169 

2170* **Вы используете Windows, и Desktop сообщает `Connection failed: Host key changed or not trusted`**: сначала исключите [отсутствие клиента OpenSSH](#ssh-host-key-refused-on-windows-without-an-openssh-client)

2171* **Desktop предлагает задать `UserKnownHostsFile`**: в `~/.ssh/config` задайте для него значение `~/.ssh/known_hosts`, затем [проверьте ключ из терминала](#check-the-host-key-from-a-terminal)

2172* **Вы видите кнопку Review new key**: выберите её и [сравните](#check-a-remote-machines-host-key) отпечаток, который показывает Desktop, с собственным отпечатком машины. Если они совпадают, выберите **Trust new key**, чтобы заменить сохранённый ключ. В противном случае выберите **Cancel**.

2173* **Кнопки Review new key нет, Desktop показывает `Couldn't show the new key` или Desktop снова отклоняет ключ после Trust new key**: [проверьте ключ из терминала](#check-the-host-key-from-a-terminal)

2174 

2175#### Проверка ключа хоста из терминала

2176 

2177Выполните `ssh <SSH host>` на своём компьютере, подставив значение **SSH host** вашего [SSH-подключения](#ssh-sessions) в Desktop. Добавьте `-p <SSH port>`, если у подключения задано значение **SSH port**. В Windows используйте PowerShell, поскольку Desktop не подключается через `ssh` из Git Bash или WSL. Если PowerShell не находит `ssh`, [установите клиент OpenSSH от Microsoft](#ssh-host-key-refused-on-windows-without-an-openssh-client).

2178 

2179Обратите внимание, какую машину `ssh` называет в своём сообщении (это может быть jump-хост, а не `<SSH host>`), затем следуйте подходящему случаю:

2180 

2181* **`ssh` спрашивает, продолжать ли подключение**: [сравните](#check-a-remote-machines-host-key) отпечаток, который он показывает, с собственным отпечатком этой машины. Отвечайте `yes`, только если они совпадают.

2182* **`ssh` предупреждает, что ключ хоста изменился**: [сравните](#check-a-remote-machines-host-key) отпечаток из предупреждения с собственным отпечатком этой машины. Только если они совпадают, удалите строку, которую указывает `Offending <type> key in <file>:<line>`, и снова выполните `ssh`. Если `ssh` снова предупреждает о другой строке, так же сравните, удалите и снова выполните команду.

2183* **`ssh` отклоняет неизвестный ему ключ, ничего не спрашивая**: получите строку `known_hosts` этой машины у того, кто ею управляет, но не через проверяемое подключение. Добавьте строку в свой файл `known_hosts`, указав в качестве имени хоста имя из сообщения `ssh`, и снова выполните `ssh`.

2184* **`ssh` переходит к входу, не спрашивая о ключе хоста**: пока не вводите пароль. [Проверьте ключи, которым `ssh` уже доверяет](#check-the-keys-that-ssh-already-trusts).

2185 

2186Как только `ssh` примет проверенный или добавленный вами ключ, повторите попытку в Desktop. Если Desktop снова отклонит ключ, см. [Получение логов Desktop для проблемы с SSH](#get-desktops-logs-for-an-ssh-problem).

2187 

2188##### Проверка ключей, которым `ssh` уже доверяет

2189 

2190Снова выполните ту же команду `ssh`, добавив `-v -S none`. В её выводе строка `Server host key:` показывает отпечаток, а следующая строка `Host '<name>' is known` называет машину, которой он принадлежит. [Сравните](#check-a-remote-machines-host-key) каждый найденный отпечаток с собственным отпечатком этой машины.

2191 

2192* **Для jump-хоста нет строки `Server host key:`**: выполните также `ssh -v -S none <jump host>` и сравните этот отпечаток тем же способом.

2193* **Отпечаток не совпадает или вы не можете его проверить**: не подключайтесь снова. Удалите сохранённый ключ: под `Host '<name>' is known` строка `Found key in <file>:<line>` указывает файл, в котором он хранится. Выполните `ssh-keygen -R "<name>" -f <file>`. Если вы храните ключи хостов в нескольких файлах, удалите ключ из каждого. Если вы не можете изменить файл, сообщите тому, кто управляет вашим компьютером.

2194* **Все отпечатки совпадают**: повторите попытку в Desktop. Если Desktop снова отклонит ключ, см. [Получение логов Desktop для проблемы с SSH](#get-desktops-logs-for-an-ssh-problem).

2195 

2196### Ключ хоста SSH отклоняется в Windows без клиента OpenSSH

2197 

2198В Windows без клиента OpenSSH Desktop отклоняет даже правильный ключ хоста с сообщением `Connection failed: Host key changed or not trusted`. Клиент нужен ему для поиска сохранённых ключей. Чтобы узнать, есть ли он у вас, выполните `ssh` в PowerShell. Если PowerShell не распознаёт `ssh`, установите [клиент OpenSSH от Microsoft](https://learn.microsoft.com/windows-server/administration/openssh/openssh_install_firstuse) и перезапустите Desktop.

2199 

2200Затем подключитесь снова. Если Desktop спрашивает, подключаться ли в первый раз, [проверьте ключ хоста машины](#check-a-remote-machines-host-key), прежде чем доверять ему. Если Desktop по-прежнему отклоняет ключ, следуйте остальным случаям в разделе [SSH host key verification failed](#ssh-host-key-verification-failed).

2201 

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

2139 2203 

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

env-vars.md +2 −2

Details

236| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Задайте `1`, чтобы удалить параметр `run_in_background` из инструментов Bash, PowerShell и инструмента субагентов, а также отключить сочетание клавиш Ctrl+B и фоновые запуски [ответвлённых скиллов](https://code.claude.com/docs/ru/skills.md#run-skills-in-a-subagent). Тогда Claude Code также перестаёт автоматически переводить в фоновый режим субагентов, длительные вызовы инструментов MCP и shell-команды, превысившие таймаут. [Задачи MCP](https://code.claude.com/docs/ru/mcp.md#make-claude-wait-for-the-result-of-an-mcp-task) и [инструмент Monitor](https://code.claude.com/docs/ru/tools-reference.md#monitor-tool) по-прежнему выполняются в фоновом режиме |236| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Задайте `1`, чтобы удалить параметр `run_in_background` из инструментов Bash, PowerShell и инструмента субагентов, а также отключить сочетание клавиш Ctrl+B и фоновые запуски [ответвлённых скиллов](https://code.claude.com/docs/ru/skills.md#run-skills-in-a-subagent). Тогда Claude Code также перестаёт автоматически переводить в фоновый режим субагентов, длительные вызовы инструментов MCP и shell-команды, превысившие таймаут. [Задачи MCP](https://code.claude.com/docs/ru/mcp.md#make-claude-wait-for-the-result-of-an-mcp-task) и [инструмент Monitor](https://code.claude.com/docs/ru/tools-reference.md#monitor-tool) по-прежнему выполняются в фоновом режиме |

237| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | Установите `1`, чтобы Claude Code не считал потоковый ответ [Amazon Bedrock](https://code.claude.com/docs/ru/amazon-bedrock.md) с отсутствующим или пустым заголовком `Content-Type` бинарным потоком событий Amazon Bedrock. По умолчанию Claude Code предполагает, что шлюз удалил заголовок из в остальном неизменённого ответа, поэтому декодирует тело, и потоковая передача продолжает работать. Устанавливайте эту переменную только для шлюза, который также переотправляет поток как server-sent events; тогда Claude Code читает тело без заголовка как server-sent events. Требуется Claude Code v2.1.239 или новее |237| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | Установите `1`, чтобы Claude Code не считал потоковый ответ [Amazon Bedrock](https://code.claude.com/docs/ru/amazon-bedrock.md) с отсутствующим или пустым заголовком `Content-Type` бинарным потоком событий Amazon Bedrock. По умолчанию Claude Code предполагает, что шлюз удалил заголовок из в остальном неизменённого ответа, поэтому декодирует тело, и потоковая передача продолжает работать. Устанавливайте эту переменную только для шлюза, который также переотправляет поток как server-sent events; тогда Claude Code читает тело без заголовка как server-sent events. Требуется Claude Code v2.1.239 или новее |

238| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | Установите `1`, чтобы пропустить проверку того, что потоковый ответ [Amazon Bedrock](https://code.claude.com/docs/ru/amazon-bedrock.md) имеет content-type `application/vnd.amazon.eventstream`. Без этой переменной, если ответ имеет другой content-type, Claude Code завершает запрос ошибкой с указанием этого типа, что означает, что [шлюз или прокси преобразует ответ](https://code.claude.com/docs/ru/amazon-bedrock.md#streaming-errors-behind-a-gateway-or-proxy). Вместо установки этой переменной настройте шлюз так, чтобы он пересылал заголовок `Content-Type` и тело без изменений. Требуется Claude Code v2.1.208 или новее |238| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | Установите `1`, чтобы пропустить проверку того, что потоковый ответ [Amazon Bedrock](https://code.claude.com/docs/ru/amazon-bedrock.md) имеет content-type `application/vnd.amazon.eventstream`. Без этой переменной, если ответ имеет другой content-type, Claude Code завершает запрос ошибкой с указанием этого типа, что означает, что [шлюз или прокси преобразует ответ](https://code.claude.com/docs/ru/amazon-bedrock.md#streaming-errors-behind-a-gateway-or-proxy). Вместо установки этой переменной настройте шлюз так, чтобы он пересылал заголовок `Content-Type` и тело без изменений. Требуется Claude Code v2.1.208 или новее |

239| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Задайте `1`, чтобы останавливать выполняющуюся работу [фоновой сессии](https://code.claude.com/docs/ru/agent-view.md), когда [супервизор](https://code.claude.com/docs/ru/agent-view.md#the-supervisor-process) останавливает, перезапускает или обновляет процесс этой сессии, вместо передачи её следующему процессу сессии. Эта работа — выполняющиеся фоновые shell-команды и динамические рабочие процессы сессии, а начиная с v2.1.198 также фоновые субагенты. Влияет только на эту передачу: перевод сессии в фоновый режим с помощью `←` или [`/background`](https://code.claude.com/docs/ru/agent-view#from-inside-a-session) по-прежнему переносит выполняющуюся фоновую работу. Требуется Claude Code v2.1.196 или более поздней версии |239| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Задайте `1`, чтобы останавливать выполняющуюся работу [фоновой сессии](https://code.claude.com/docs/ru/agent-view.md), когда [супервизор](https://code.claude.com/docs/ru/agent-view.md#the-supervisor-process) останавливает, перезапускает или обновляет процесс этой сессии, вместо того чтобы передавать её следующему процессу сессии. Эта работа — выполняющиеся фоновые shell-команды сессии, а начиная с v2.1.198 — и фоновые субагенты. Влияет только на эту передачу: перевод сессии в фон с помощью `←` или [`/background`](https://code.claude.com/docs/ru/agent-view#from-inside-a-session) по-прежнему переносит выполняющуюся фоновую работу. Требуется Claude Code v2.1.196 или новее |

240| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | Установите `1`, чтобы Claude Code не завершал [фоновые shell-команды](https://code.claude.com/docs/ru/interactive-mode.md#background-bash-commands) при нехватке памяти. По умолчанию в macOS и Linux Claude Code завершает фоновые оболочки, когда операционная система сообщает о критической нехватке памяти, а сессия простаивает 30 минут без выполняющегося хода или субагента. В Windows нет сигнала о нехватке памяти, поэтому там эта переменная ни на что не влияет. Требуется Claude Code v2.1.193 или новее |240| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | Установите `1`, чтобы Claude Code не завершал [фоновые shell-команды](https://code.claude.com/docs/ru/interactive-mode.md#background-bash-commands) при нехватке памяти. По умолчанию в macOS и Linux Claude Code завершает фоновые оболочки, когда операционная система сообщает о критической нехватке памяти, а сессия простаивает 30 минут без выполняющегося хода или субагента. В Windows нет сигнала о нехватке памяти, поэтому там эта переменная ни на что не влияет. Требуется Claude Code v2.1.193 или новее |

241| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Установите `1`, чтобы отключить [скиллы](https://code.claude.com/docs/ru/skills.md) и рабочие процессы, входящие в состав Claude Code: встроенные скиллы и рабочие процессы полностью удаляются, а встроенные команды, такие как `/init`, по-прежнему можно ввести, но они скрыты от модели. `/doctor` по-прежнему можно ввести, как и встроенные команды; чтобы скрыть её, используйте `DISABLE_DOCTOR_COMMAND`. Скиллы из плагинов, `.claude/skills/` и `.claude/commands/` не затрагиваются. Эквивалентно настройке [`disableBundledSkills`](https://code.claude.com/docs/ru/settings-reference#disablebundledskills) |241| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Установите `1`, чтобы отключить [скиллы](https://code.claude.com/docs/ru/skills.md) и рабочие процессы, входящие в состав Claude Code: встроенные скиллы и рабочие процессы полностью удаляются, а встроенные команды, такие как `/init`, по-прежнему можно ввести, но они скрыты от модели. `/doctor` по-прежнему можно ввести, как и встроенные команды; чтобы скрыть её, используйте `DISABLE_DOCTOR_COMMAND`. Скиллы из плагинов, `.claude/skills/` и `.claude/commands/` не затрагиваются. Эквивалентно настройке [`disableBundledSkills`](https://code.claude.com/docs/ru/settings-reference#disablebundledskills) |

242| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Установите `1`, чтобы оставить доступными браузерные инструменты [Claude in Chrome](https://code.claude.com/docs/ru/chrome.md), но исключить раздел Chrome из системного промпта и [встроенный скилл](https://code.claude.com/docs/ru/skills.md#bundled-skills) `/claude-in-chrome`. Для хостов, которые встраивают Claude Code и предоставляют собственные инструкции для браузера. Требуется Claude Code v2.1.257 или новее |242| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Установите `1`, чтобы оставить доступными браузерные инструменты [Claude in Chrome](https://code.claude.com/docs/ru/chrome.md), но исключить раздел Chrome из системного промпта и [встроенный скилл](https://code.claude.com/docs/ru/skills.md#bundled-skills) `/claude-in-chrome`. Для хостов, которые встраивают Claude Code и предоставляют собственные инструкции для браузера. Требуется Claude Code v2.1.257 или новее |

243| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Установите `1`, чтобы не загружать в контекст никакие файлы памяти CLAUDE.md, включая пользовательские, проектные файлы и файлы автоматической памяти |243| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Установите `1`, чтобы не загружать в контекст никакие файлы памяти CLAUDE.md, включая пользовательские, проектные файлы и файлы автоматической памяти |

244| `CLAUDE_CODE_DISABLE_CRON` | Задайте `1`, чтобы отключить [запланированные задачи в рамках сессии](https://code.claude.com/docs/ru/scheduled-tasks.md). Скилл `/loop` и инструменты cron становятся недоступными, а все уже запланированные задачи перестают срабатывать, включая задачи, которые уже выполняются посреди сессии |244| `CLAUDE_CODE_DISABLE_CRON` | Задайте `1`, чтобы отключить [запланированные задачи в рамках сессии](https://code.claude.com/docs/ru/scheduled-tasks.md). Скилл `/loop` и инструменты cron становятся недоступными, а все уже запланированные задачи перестают срабатывать, включая задачи, которые уже выполняются посреди сессии |

245| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | Установите `1`, чтобы отключить ограничение времени для запросов подтверждения [удаления критических путей](https://code.claude.com/docs/ru/permission-modes.md#critical-paths). Тогда в режиме `auto` Claude Code отправляет такие удаления классификатору, а в режиме `bypassPermissions` запрос ждёт вашего ответа. Задайте её в окружении, из которого запускается Claude Code, поскольку Claude Code игнорирует копию, доставленную через блок `env` настроек. Требуется Claude Code v2.1.281 или новее |245| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | Установите `1`, чтобы отключить [ограничение времени и отказы](https://code.claude.com/docs/ru/permission-modes.md#time-limits-and-denials-in-auto-and-bypasspermissions-modes) режимов `auto` и `bypassPermissions` при удалении критических путей. Такие удаления тогда передаются классификатору в режиме `auto` и получают запрос разрешения без ограничения времени в режиме `bypassPermissions` везде, где Claude Code может его показать. Задайте её в окружении, из которого запускается Claude Code, поскольку Claude Code игнорирует копию, переданную через блок `env` в настройках. Требуется Claude Code v2.1.281 или новее |

246| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Установите `1`, чтобы удалять из запросов API предварительные заголовки запроса `anthropic-beta`, связанные с ними поля тела и бета-поля схемы инструментов, такие как `defer_loading` и `eager_input_streaming`. Используйте, когда прокси-шлюз отклоняет запросы с ошибкой `Unexpected value(s)` для заголовка `anthropic-beta` или с ошибкой `Extra inputs are not permitted`. В разделе [Отключение предварительных возможностей](https://code.claude.com/docs/ru/llm-gateway-protocol.md#disable-pre-release-capabilities) перечислено, что удаляет переменная, включая [MCP tool search](https://code.claude.com/docs/ru/mcp.md#scale-with-mcp-tool-search), и что Claude Code продолжает отправлять |246| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Установите `1`, чтобы удалять из запросов API предварительные заголовки запроса `anthropic-beta`, связанные с ними поля тела и бета-поля схемы инструментов, такие как `defer_loading` и `eager_input_streaming`. Используйте, когда прокси-шлюз отклоняет запросы с ошибкой `Unexpected value(s)` для заголовка `anthropic-beta` или с ошибкой `Extra inputs are not permitted`. В разделе [Отключение предварительных возможностей](https://code.claude.com/docs/ru/llm-gateway-protocol.md#disable-pre-release-capabilities) перечислено, что удаляет переменная, включая [MCP tool search](https://code.claude.com/docs/ru/mcp.md#scale-with-mcp-tool-search), и что Claude Code продолжает отправлять |

247| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Установите `1`, чтобы отключить встроенных [субагентов Explore и Plan](https://code.claude.com/docs/ru/sub-agents.md#built-in-subagents). Вместо них Claude исследует код с помощью своих инструментов поиска или субагента общего назначения, а [режим планирования](https://code.claude.com/docs/ru/permission-modes.md#analyze-before-you-edit-with-plan-mode) читает файлы напрямую, не запуская агентов Explore и Plan. Пользовательские субагенты с именами `Explore` или `Plan` не затрагиваются. Чтобы удалить все встроенные типы субагентов в Agent SDK или неинтерактивном режиме, используйте вместо этого `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS`. Требуется Claude Code v2.1.198 или новее |247| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Установите `1`, чтобы отключить встроенных [субагентов Explore и Plan](https://code.claude.com/docs/ru/sub-agents.md#built-in-subagents). Вместо них Claude исследует код с помощью своих инструментов поиска или субагента общего назначения, а [режим планирования](https://code.claude.com/docs/ru/permission-modes.md#analyze-before-you-edit-with-plan-mode) читает файлы напрямую, не запуская агентов Explore и Plan. Пользовательские субагенты с именами `Explore` или `Plan` не затрагиваются. Чтобы удалить все встроенные типы субагентов в Agent SDK или неинтерактивном режиме, используйте вместо этого `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS`. Требуется Claude Code v2.1.198 или новее |

248| `CLAUDE_CODE_DISABLE_FAST_MODE` | Установите `1`, чтобы отключить [быстрый режим](https://code.claude.com/docs/ru/fast-mode.md) |248| `CLAUDE_CODE_DISABLE_FAST_MODE` | Установите `1`, чтобы отключить [быстрый режим](https://code.claude.com/docs/ru/fast-mode.md) |

errors.md +35 −3

Details

244| `MCP server "<name>" was not saved to` / `was not removed from` | [Command-line errors](#mcp-server-was-not-saved-or-removed) |244| `MCP server "<name>" was not saved to` / `was not removed from` | [Command-line errors](#mcp-server-was-not-saved-or-removed) |

245| `MCP server "<name>" may not have been saved` / `may not have been removed` | [Command-line errors](#mcp-server-may-not-have-been-saved-or-removed) |245| `MCP server "<name>" may not have been saved` / `may not have been removed` | [Command-line errors](#mcp-server-may-not-have-been-saved-or-removed) |

246| `Server rejected the Authorization header minted by the configured headersHelper` | [Command-line errors](#server-rejected-the-authorization-header-minted-by-the-configured-headershelper) |246| `Server rejected the Authorization header minted by the configured headersHelper` | [Command-line errors](#server-rejected-the-authorization-header-minted-by-the-configured-headershelper) |

247| `This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability` | [Ошибки командной строки](#mcp-server-rejected-the-elicitation-capability) |

247| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [Command-line errors](#mcp-permission-prompt-tool-not-found) |248| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [Command-line errors](#mcp-permission-prompt-tool-not-found) |

248| `OAuth callback port <port> is already in use — another process may be holding it` | [Command-line errors](#oauth-callback-port-is-already-in-use) |249| `OAuth callback port <port> is already in use — another process may be holding it` | [Command-line errors](#oauth-callback-port-is-already-in-use) |

249| `No available ports for OAuth redirect` | [Command-line errors](#no-available-ports-for-oauth-redirect) |250| `No available ports for OAuth redirect` | [Command-line errors](#no-available-ports-for-oauth-redirect) |


3280* **`Error: Workspace not trusted. <folder> is your home directory`**: поскольку доверие для домашнего каталога никогда не сохраняется, предварительный запуск `claude` там не поможет. Вместо этого выполните `claude ultrareview` из каталога проекта, предварительно один раз запустив там `claude`, чтобы принять диалог доверия, или добавьте `--trust-workspace`.3281* **`Error: Workspace not trusted. <folder> is your home directory`**: поскольку доверие для домашнего каталога никогда не сохраняется, предварительный запуск `claude` там не поможет. Вместо этого выполните `claude ultrareview` из каталога проекта, предварительно один раз запустив там `claude`, чтобы принять диалог доверия, или добавьте `--trust-workspace`.

3281* **`No answer in time.` с последующим `Error: Workspace not trusted`**: на вопрос `Trust <folder>? [y/N]` не было ответа в течение 5 минут. Снова выполните `claude ultrareview` и ответьте на него.3282* **`No answer in time.` с последующим `Error: Workspace not trusted`**: на вопрос `Trust <folder>? [y/N]` не было ответа в течение 5 минут. Снова выполните `claude ultrareview` и ответьте на него.

3282* **`Ultrareview did not start: <folder> is not trusted`**: вы отказались на вопрос `Trust <folder>? [y/N]`, например ответив `n` или нажав Enter. Чтобы начать ревью, снова выполните `claude ultrareview` и ответьте `y`.3283* **`Ultrareview did not start: <folder> is not trusted`**: вы отказались на вопрос `Trust <folder>? [y/N]`, например ответив `n` или нажав Enter. Чтобы начать ревью, снова выполните `claude ultrareview` и ответьте `y`.

3283* **``Ultrareview did not start: `--trust-workspace` takes no value``**: после `--trust-workspace` следует что-то, кроме флага, например номер PR или `false`. Если вы не доверяете папке, не указывайте флаг. Чтобы доверять ей для этого запуска, поставьте номер PR или базовую ветку перед флагом: `claude ultrareview 1234 --trust-workspace`.3284* **``Ultrareview did not start: `--trust-workspace` takes no value``**: после `--trust-workspace` следует что-то помимо флага, например номер PR или `false`. Если вы не доверяете каталогу, не указывайте флаг. Чтобы доверить его для этого запуска, поставьте номер PR или базовую ветку перед флагом: `claude ultrareview 1234 --trust-workspace`.

3284 3285 

3285До v2.1.309 `claude ultrareview` не принимал `--trust-workspace`.3286До v2.1.309 `claude ultrareview` не принимал `--trust-workspace`.

3286 3287 


3473 3474 

3474До v2.1.248 Claude Code выполнял обнаружение OAuth для сервера, у которого helper предоставлял заголовок `Authorization`. Это обнаружение могло завершиться ошибкой `Incompatible auth server: does not support dynamic client registration` вместо сообщения об отклонённых учётных данных.3475До v2.1.248 Claude Code выполнял обнаружение OAuth для сервера, у которого helper предоставлял заголовок `Authorization`. Это обнаружение могло завершиться ошибкой `Incompatible auth server: does not support dynamic client registration` вместо сообщения об отклонённых учётных данных.

3475 3476 

3477### MCP-сервер отклонил возможность elicitation

3478 

3479MCP-сервер, построенный на Java MCP SDK версий от 0.11.0 до 0.17.0, отклонил подключение. Эти версии SDK не могут разобрать [режимы elicitation](https://code.claude.com/docs/ru/mcp.md#elicitation-modes-claude-code-declares) `form` и `url`, которые Claude Code объявляет при установлении соединения. `claude mcp list` показывает сервер как неисправный с этим сообщением вместо собственной ошибки сервера:

3480 

3481```text theme={null}

3482This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability. Set "bareElicitationCapability": true for it, or upgrade to Java MCP SDK 0.17.1+ (Spring AI 1.0.7+ or 1.1.6+).

3483```

3484 

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

3486 

3487* Обновите сервер до Java MCP SDK 0.17.1 или новее либо до одного из выпусков Spring AI, указанных в сообщении

3488* Либо добавьте `"bareElicitationCapability": true` в запись этого сервера в конфигурации MCP, затем перезапустите Claude Code. Поле принимается в записях stdio, `sse`, `http` и `ws` и требует Claude Code v2.1.281 или новее

3489 

3490Эта запись `.mcp.json` задаёт поле для одного HTTP-сервера:

3491 

3492```json theme={null}

3493{

3494 "mcpServers": {

3495 "inventory": {

3496 "type": "http",

3497 "url": "https://mcp.example.com/mcp",

3498 "bareElicitationCapability": true

3499 }

3500 }

3501}

3502```

3503 

3504После перезапуска `/mcp` показывает сервер как подключённый. Claude Code объявляет этому серверу только режим form, поэтому удалите поле, как только обновите сервер.

3505 

3506Сервер может также завершиться сбоем с собственным текстом ошибки, например содержащим `Unrecognized field "form"`. Применимы те же способы исправления.

3507 

3476### Инструмент запроса разрешений MCP не найден3508### Инструмент запроса разрешений MCP не найден

3477 3509 

3478Инструмента, переданного в [`--permission-prompt-tool`](https://code.claude.com/docs/ru/cli-reference#cli-flags), не было среди подключённых инструментов MCP, когда запуску впервые понадобилось решение о разрешении: либо его сервер так и не подключился, либо ни один подключённый сервер не предоставляет инструмент с таким именем. Claude Code всё равно отправляет ваш промпт: [неинтерактивный](https://code.claude.com/docs/ru/headless.md) запуск завершается с этой ошибкой и кодом выхода 1 при первом вызове инструмента, поэтому не даёт ответа, хотя запрос был выполнен. Перед первым промптом Claude Code ожидает подключения этого сервера до истечения таймаута подключения для каждого сервера в 30 секунд, задаваемого [`MCP_TIMEOUT`](https://code.claude.com/docs/ru/env-vars). До v2.1.206 при запуске не ожидалось завершения подключения сервера, поэтому медленно запускающийся, но исправный сервер тоже вызывал эту ошибку.3510Инструмента, переданного в [`--permission-prompt-tool`](https://code.claude.com/docs/ru/cli-reference#cli-flags), не было среди подключённых инструментов MCP, когда запуску впервые понадобилось решение о разрешении: либо его сервер так и не подключился, либо ни один подключённый сервер не предоставляет инструмент с таким именем. Claude Code всё равно отправляет ваш промпт: [неинтерактивный](https://code.claude.com/docs/ru/headless.md) запуск завершается с этой ошибкой и кодом выхода 1 при первом вызове инструмента, поэтому не даёт ответа, хотя запрос был выполнен. Перед первым промптом Claude Code ожидает подключения этого сервера до истечения таймаута подключения для каждого сервера в 30 секунд, задаваемого [`MCP_TIMEOUT`](https://code.claude.com/docs/ru/env-vars). До v2.1.206 при запуске не ожидалось завершения подключения сервера, поэтому медленно запускающийся, но исправный сервер тоже вызывал эту ошибку.


3541 3573 

3542Родственные сообщения появляются ещё до запуска команды:3574Родственные сообщения появляются ещё до запуска команды:

3543 3575 

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

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

3546* `No shell command in <name> was run`: одна из команд `!` в файле содержит необработанный управляющий символ, отличный от табуляции или перевода строки, поэтому ни одна из них не выполняется. См. [как найти и удалить этот символ](#no-shell-command-was-run)3578* `No shell command in <name> was run`: одна из команд `!` в файле содержит необработанный управляющий символ, отличный от табуляции или перевода строки, поэтому ни одна из них не выполняется. См. [как найти и удалить этот символ](#no-shell-command-was-run)

3547 3579 


3693 3725 

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

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

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

3697 3729 

3698**Что делать:**3730**Что делать:**

3699 3731 

hooks.md +1 −1

Details

1957 1957 

1958| Поле | Описание |1958| Поле | Описание |

1959| :- | :- |1959| :- | :- |

1960| `permissionDecision` | `"allow"` пропускает запрос разрешения, кроме [действий, которые не одобряются автоматически ни в одном режиме](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves), и [чтения из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths). Для `AskUserQuestion` и `ExitPlanMode` нужен [`updatedInput` в паре с `"allow"`](#allow-with-updatedinput). О режиме планирования см. [Подтверждения хуков в режиме планирования](https://code.claude.com/docs/ru/permissions.md#hook-approvals-in-plan-mode). `"deny"` предотвращает вызов инструмента. `"ask"` просит пользователя подтвердить действие. `"defer"` завершает ход, чтобы инструмент можно было возобновить позже, и требует [неинтерактивного режима](#defer-a-tool-call-for-later) с флагом `-p`. [Правила запрета и запроса подтверждения](https://code.claude.com/docs/ru/permissions.md#manage-permissions) по-прежнему оцениваются независимо от того, что возвращает хук |1960| `permissionDecision` | `"allow"` пропускает запрос разрешения, за исключением [действий, которые не одобряет автоматически ни один режим](https://code.claude.com/docs/ru/permission-modes.md#actions-no-mode-auto-approves), и [чтения из сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths). Оно также не пропускает подтверждение вызовов [инструментов, которые приложение Agent SDK помечает как `always_ask`](https://code.claude.com/docs/ru/agent-sdk/custom-tools#require-approval-for-specific-tools), если только [режим разрешений не одобряет вызов](https://code.claude.com/docs/ru/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call). Для `AskUserQuestion` и `ExitPlanMode` нужен [`updatedInput` в паре с `"allow"`](#allow-with-updatedinput). О режиме планирования см. [Одобрение хуками в режиме планирования](https://code.claude.com/docs/ru/permissions.md#hook-approvals-in-plan-mode). `"deny"` предотвращает вызов инструмента. `"ask"` просит пользователя подтвердить. `"defer"` завершает ход, чтобы инструмент можно было возобновить позже, и требует [неинтерактивного режима](#defer-a-tool-call-for-later) с флагом `-p`. [Правила запрета и запроса подтверждения](https://code.claude.com/docs/ru/permissions.md#manage-permissions) всё равно проверяются независимо от того, что возвращает хук |

1961| `permissionDecisionReason` | Для `"ask"` показывается пользователю в запросе разрешения. Когда Claude Code [запрещает вызов](https://code.claude.com/docs/ru/headless.md#turn-off-permission-prompts-in-unattended-runs) в запуске `-p`, где никто не может ответить на этот запрос, Claude вместо этого читает причину в результате инструмента. Для `"deny"` показывается Claude. Для `"allow"` и `"defer"` записывается только в [лог отладки](#debug-hooks) |1961| `permissionDecisionReason` | Для `"ask"` показывается пользователю в запросе разрешения. Когда Claude Code [запрещает вызов](https://code.claude.com/docs/ru/headless.md#turn-off-permission-prompts-in-unattended-runs) в запуске `-p`, где никто не может ответить на этот запрос, Claude вместо этого читает причину в результате инструмента. Для `"deny"` показывается Claude. Для `"allow"` и `"defer"` записывается только в [лог отладки](#debug-hooks) |

1962| `updatedInput` | Изменяет входные параметры инструмента перед выполнением. Заменяет весь объект входных данных, поэтому включайте неизменённые поля вместе с изменёнными. Claude Code оценивает правила разрешений и [пригодность команды Bash для автоматического перевода в фон](https://code.claude.com/docs/ru/tools-reference.md#foreground-commands-that-move-to-the-background) по входным данным, которые возвращает ваш хук, а не по тем, что отправил Claude. Сочетайте с `"allow"` для автоматического одобрения или с `"ask"`, чтобы показать пользователю изменённые входные данные. Для `"defer"` игнорируется |1962| `updatedInput` | Изменяет входные параметры инструмента перед выполнением. Заменяет весь объект входных данных, поэтому включайте неизменённые поля вместе с изменёнными. Claude Code оценивает правила разрешений и [пригодность команды Bash для автоматического перевода в фон](https://code.claude.com/docs/ru/tools-reference.md#foreground-commands-that-move-to-the-background) по входным данным, которые возвращает ваш хук, а не по тем, что отправил Claude. Сочетайте с `"allow"` для автоматического одобрения или с `"ask"`, чтобы показать пользователю изменённые входные данные. Для `"defer"` игнорируется |

1963| `additionalContext` | Строка, добавляемая в контекст Claude вместе с результатом инструмента. Игнорируется, когда `permissionDecision` равен `"defer"`. См. [Добавление контекста для Claude](#add-context-for-claude) |1963| `additionalContext` | Строка, добавляемая в контекст Claude вместе с результатом инструмента. Игнорируется, когда `permissionDecision` равен `"defer"`. См. [Добавление контекста для Claude](#add-context-for-claude) |

hooks-guide.md +2 −0

Details

629 629 

630* Чтения из [сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths)630* Чтения из [сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths)

631* MCP-инструментов, помеченных [`requiresUserInteraction`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool)631* MCP-инструментов, помеченных [`requiresUserInteraction`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool)

632* Вызовов [инструментов, которые приложение Agent SDK помечает `always_ask`](https://code.claude.com/docs/ru/agent-sdk/custom-tools#require-approval-for-specific-tools), если только [режим разрешений не подтверждает вызов](https://code.claude.com/docs/ru/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call)

632* Инструментов коннекторов, [для которых ваша организация установила `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, где эта настройка доходит до Claude Code633* Инструментов коннекторов, [для которых ваша организация установила `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, где эта настройка доходит до Claude Code

633 634 

634 О том, что делает `"allow"` в режиме планирования, см. [Подтверждения хуков в режиме планирования](https://code.claude.com/docs/ru/permissions.md#hook-approvals-in-plan-mode).635 О том, что делает `"allow"` в режиме планирования, см. [Подтверждения хуков в режиме планирования](https://code.claude.com/docs/ru/permissions.md#hook-approvals-in-plan-mode).


963* **Что по-прежнему имеет приоритет над `"allow"`**: хук, возвращающий `"allow"`, не обходит правила запрета из настроек и не может подавить запрос для:964* **Что по-прежнему имеет приоритет над `"allow"`**: хук, возвращающий `"allow"`, не обходит правила запрета из настроек и не может подавить запрос для:

964 * Чтения из [сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths)965 * Чтения из [сетевых путей](https://code.claude.com/docs/ru/permissions.md#network-paths)

965 * Инструментов MCP, отмеченных [`requiresUserInteraction`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool)966 * Инструментов MCP, отмеченных [`requiresUserInteraction`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool)

967 * Вызовов [инструментов, которые приложение Agent SDK помечает как `always_ask`](https://code.claude.com/docs/ru/agent-sdk/custom-tools#require-approval-for-specific-tools), если только [режим разрешений не одобряет этот вызов](https://code.claude.com/docs/ru/agent-sdk/typescript.md#permission-modes-that-can-approve-an-always_ask-call)

966 * Инструментов коннекторов, [которые ваша организация установила на `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, где эта настройка достигает Claude Code968 * Инструментов коннекторов, [которые ваша организация установила на `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, где эта настройка достигает Claude Code

967 969 

968В [режиме планирования](https://code.claude.com/docs/ru/permissions.md#hook-approvals-in-plan-mode), если ваш хук `PreToolUse` возвращает `"allow"` для редактирования файла, вы получаете тот же запрос, блокировку или подтверждение, которые редактирование получило бы без хука. Чтобы снять это ограничение на подтверждения хуками, [утвердите план](https://code.claude.com/docs/ru/permission-modes.md#review-and-approve-a-plan) или переключитесь на другой режим разрешений.970В [режиме планирования](https://code.claude.com/docs/ru/permissions.md#hook-approvals-in-plan-mode), если ваш хук `PreToolUse` возвращает `"allow"` для редактирования файла, вы получаете тот же запрос, блокировку или подтверждение, которые редактирование получило бы без хука. Чтобы снять это ограничение на подтверждения хуками, [утвердите план](https://code.claude.com/docs/ru/permission-modes.md#review-and-approve-a-plan) или переключитесь на другой режим разрешений.

Details

407| [`managedMcpServers`](https://code.claude.com/docs/ru/settings-reference#managedmcpservers) | Удаленные MCP серверы, предоставленные каждому пользователю вместе с их собственными. Он предоставляет серверы, а не блокирует что-либо. См. [Предоставьте серверы через управляемые параметры](https://code.claude.com/docs/ru/managed-mcp.md#provide-servers-through-managed-settings). Требует Claude Code v2.1.259 или позже |407| [`managedMcpServers`](https://code.claude.com/docs/ru/settings-reference#managedmcpservers) | Удаленные MCP серверы, предоставленные каждому пользователю вместе с их собственными. Он предоставляет серверы, а не блокирует что-либо. См. [Предоставьте серверы через управляемые параметры](https://code.claude.com/docs/ru/managed-mcp.md#provide-servers-through-managed-settings). Требует Claude Code v2.1.259 или позже |

408| [`managedSourcesBehavior`](https://code.claude.com/docs/ru/settings-reference#managedsourcesbehavior) | Применяет ли Claude Code только управляемый источник с наивысшим приоритетом или [составляет каждый из них](#compose-every-managed-source) |408| [`managedSourcesBehavior`](https://code.claude.com/docs/ru/settings-reference#managedsourcesbehavior) | Применяет ли Claude Code только управляемый источник с наивысшим приоритетом или [составляет каждый из них](#compose-every-managed-source) |

409| [`parentSettingsBehavior`](https://code.claude.com/docs/ru/settings-reference#parentsettingsbehavior) | Объединяются ли параметры родителя, предоставленные хостом, под управляемой политикой |409| [`parentSettingsBehavior`](https://code.claude.com/docs/ru/settings-reference#parentsettingsbehavior) | Объединяются ли параметры родителя, предоставленные хостом, под управляемой политикой |

410| [`pluginSuggestionMarketplaces`](https://code.claude.com/docs/ru/settings-reference#pluginsuggestionmarketplaces) | Маркетплейсы, плагины которых Claude Code может предложить пользователям |410| [`pluginSuggestionMarketplaces`](https://code.claude.com/docs/ru/settings-reference#pluginsuggestionmarketplaces) | Маркетплейсы, плагины которых Claude Code может предлагать пользователям в терминале |

411| [`pluginTrustMessage`](https://code.claude.com/docs/ru/settings-reference#plugintrustmessage) | Пользовательское сообщение, добавленное к предупреждению о доверии плагина, показываемому перед установкой |411| [`pluginTrustMessage`](https://code.claude.com/docs/ru/settings-reference#plugintrustmessage) | Пользовательское сообщение, добавленное к предупреждению о доверии плагина, показываемому перед установкой |

412| [`policyHelper`](https://code.claude.com/docs/ru/settings-reference#policyhelper) | Исполняемый файл, который вычисляет управляемые параметры при запуске; см. [Вычислите управляемые параметры с помощью помощника политики](https://code.claude.com/docs/ru/settings-reference.md#policyhelper) |412| [`policyHelper`](https://code.claude.com/docs/ru/settings-reference#policyhelper) | Исполняемый файл, который вычисляет управляемые параметры при запуске; см. [Вычислите управляемые параметры с помощью помощника политики](https://code.claude.com/docs/ru/settings-reference.md#policyhelper) |

413| [`sandbox.filesystem.allowManagedReadPathsOnly`](https://code.claude.com/docs/ru/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | Когда `true`, уважаются только пути `filesystem.allowRead` из управляемых параметров. `denyRead` все еще объединяется из всех источников |413| [`sandbox.filesystem.allowManagedReadPathsOnly`](https://code.claude.com/docs/ru/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | Когда `true`, уважаются только пути `filesystem.allowRead` из управляемых параметров. `denyRead` все еще объединяется из всех источников |

mcp.md +10 −1

Details

1624 1624 

1625Если вы создаете MCP сервер, который использует elicitation, см. [спецификацию MCP elicitation](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) для деталей протокола и примеров схемы.1625Если вы создаете MCP сервер, который использует elicitation, см. [спецификацию MCP elicitation](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) для деталей протокола и примеров схемы.

1626 1626 

1627На соединениях, которые используют [revision протокола 2026-07-28](#mcp-client-runtimes), Claude Code объявляет `elicitation: {form: {}, url: {}}` в своих возможностях клиента, поэтому сервер там может запросить любой режим через стандартный запрос elicitation протокола.1627### Режимы elicitation, которые объявляет Claude Code

1628 

1629Если вы создаете MCP-сервер, возможности клиента, которые Claude Code отправляет при подключении, сообщают вашему серверу, какие режимы elicitation он может запрашивать. Claude Code объявляет `elicitation: {form: {}, url: {}}` на следующих соединениях, поэтому сервер на любом из них может запрашивать оба режима:

1630 

1631* Соединения, которые используют [ревизию протокола 2026-07-28](#mcp-client-runtimes)

1632* Соединения на более ранних ревизиях протокола, 2025-11-25 и старше, с серверами stdio, `sse`, `http` и `ws` в конфигурации MCP Claude Code пользователя. Требуется Claude Code v2.1.287 или новее

1633 

1634На остальных своих соединениях на более ранних ревизиях, например с [коннекторами claude.ai](#use-mcp-servers-from-claude-ai), Claude Code объявляет пустое `elicitation: {}`, что разрешает запросы elicitation только в режиме формы.

1635 

1636Сервер, созданный на Java MCP SDK 0.17.0 или более ранней версии, может отклонить объявление, содержащее `form` и `url`. См. [MCP server rejected the elicitation capability](https://code.claude.com/docs/ru/errors.md#mcp-server-rejected-the-elicitation-capability).

1628 1637 

1629## Использование ресурсов MCP1638## Использование ресурсов MCP

1630 1639 

Details

36* Инструменты, соответствующие явному [правилу запроса](https://code.claude.com/docs/ru/permissions.md#manage-permissions)36* Инструменты, соответствующие явному [правилу запроса](https://code.claude.com/docs/ru/permissions.md#manage-permissions)

37* Инструменты соединителя, которые ваша организация [установила на `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), в сеансах, где эта настройка достигает Claude Code37* Инструменты соединителя, которые ваша организация [установила на `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), в сеансах, где эта настройка достигает Claude Code

38* Инструменты, требующие взаимодействия с пользователем: встроенный инструмент `AskUserQuestion` и MCP инструменты, отмеченные [`requiresUserInteraction`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool)38* Инструменты, требующие взаимодействия с пользователем: встроенный инструмент `AskUserQuestion` и MCP инструменты, отмеченные [`requiresUserInteraction`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool)

39* Распознанные удаления `rm` и `rmdir` по [критическим путям](#critical-paths), которые не одобряет ни одно правило разрешения или хук `PreToolUse` с `"allow"`39* Распознанные удаления `rm` и `rmdir` по [критическим путям](#critical-paths), которые не одобряет ни одно правило разрешения или хук `PreToolUse` с `"allow"`, а также команды Bash, помеченные [`Dangerous rm operation not ruled out`](#dangerous-rm-operation-not-ruled-out)

40* [Защита от кросс-сеансового обмена сообщениями](#skip-all-checks-with-bypasspermissions-mode)40* [Защита от кросс-сеансового обмена сообщениями](#skip-all-checks-with-bypasspermissions-mode)

41* Чтение вне рабочих директорий, пока [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/ru/settings-reference#permissions-blockreadsoutsideworkingdirectories) включено: распознанные команды Bash для чтения файлов и любой [неизолированный повтор](https://code.claude.com/docs/ru/sandboxing.md#the-unsandboxed-retry-escape-hatch), который требует одобрения для запуска вне песочницы, запрашивают даже в режиме auto и режиме `bypassPermissions`. Требует Claude Code v2.1.257 или более поздней версии.41* Чтение вне рабочих директорий, пока [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/ru/settings-reference#permissions-blockreadsoutsideworkingdirectories) включено: распознанные команды Bash для чтения файлов и любой [неизолированный повтор](https://code.claude.com/docs/ru/sandboxing.md#the-unsandboxed-retry-escape-hatch), который требует одобрения для запуска вне песочницы, запрашивают даже в режиме auto и режиме `bypassPermissions`. Требует Claude Code v2.1.257 или более поздней версии.

42 42 


265 265 

266Режим `acceptEdits` позволяет Claude создавать и редактировать файлы в вашем рабочем каталоге без запроса. Строка состояния показывает `⏵⏵ accept edits on`, пока этот режим активен.266Режим `acceptEdits` позволяет Claude создавать и редактировать файлы в вашем рабочем каталоге без запроса. Строка состояния показывает `⏵⏵ accept edits on`, пока этот режим активен.

267 267 

268В дополнение к редактированию файлов, режим `acceptEdits` автоматически одобряет распространённые команды Bash файловой системы: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp` и `sed`. Эти команды также автоматически одобряются при префиксе с безопасными переменными окружения, такими как `LANG=C` или `NO_COLOR=1`, или обёртками процессов, такими как `timeout`, `nice` или `nohup`. Как и редактирование файлов, автоматическое одобрение применяется только к путям внутри вашего рабочего каталога или `additionalDirectories`.268В дополнение к редактированию файлов, режим `acceptEdits` автоматически одобряет распространённые команды Bash файловой системы: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp` и `sed`. За исключением `touch`, эти команды также автоматически одобряются при префиксе с безопасными переменными окружения, такими как `LANG=C` или `NO_COLOR=1`, или обёртками процессов, такими как `timeout`, `nice` или `nohup`. Как и редактирование файлов, автоматическое одобрение применяется только к путям внутри вашего рабочего каталога или `additionalDirectories`.

269 269 

270По-прежнему требуют запроса:270По-прежнему требуют запроса:

271 271 

272* Пути вне этой области действия272* Пути вне этой области действия

273* Записи в [защищённые пути](#protected-paths)273* Записи в [защищённые пути](#protected-paths)

274* Распознанные удаления `rm` и `rmdir`, нацеленные на [критические пути](#critical-paths)274* Распознанные удаления `rm` и `rmdir`, нацеленные на [критические пути](#critical-paths)

275* `touch` с чем-либо помимо простых путей к файлам, например с опцией, glob-шаблоном или префиксом, таким как `timeout 5` или `LANG=C`

275* Все остальные команды Bash, кроме [встроенного набора только для чтения](https://code.claude.com/docs/ru/permissions.md#read-only-commands)276* Все остальные команды Bash, кроме [встроенного набора только для чтения](https://code.claude.com/docs/ru/permissions.md#read-only-commands)

276 277 

277Каждый путь также проходит через [проверку символических ссылок](https://code.claude.com/docs/ru/permissions.md#symlinks), поэтому запись, которая разрешается вне этой области действия, также не одобряется автоматически.278Каждый путь также проходит через [проверку символических ссылок](https://code.claude.com/docs/ru/permissions.md#symlinks), поэтому запись, которая разрешается вне этой области действия, также не одобряется автоматически.


369* **Прямое подключение к Anthropic API**: в интерактивных сессиях в терминале, а также в сессиях `-p`, Agent SDK, [расширения VS Code](https://code.claude.com/docs/ru/vs-code.md) и [десктопного приложения](https://code.claude.com/docs/ru/desktop.md), независимо от вашего плана или типа учётной записи, по мере развёртывания функции Anthropic. В интерактивных сессиях в терминале требуется Claude Code v2.1.271 или новее на планах Pro, Max и Team и v2.1.278 или новее на планах Enterprise и в учётных записях Claude API. В сессиях `-p`, Agent SDK, расширения VS Code и десктопного приложения требуется Claude Code v2.1.281 или новее. Начиная с v2.1.282 сессия, которая [не получает флаги функций](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching), например потому что вы отключили телеметрию, по умолчанию запрашивает сервер в сессии любого типа.370* **Прямое подключение к Anthropic API**: в интерактивных сессиях в терминале, а также в сессиях `-p`, Agent SDK, [расширения VS Code](https://code.claude.com/docs/ru/vs-code.md) и [десктопного приложения](https://code.claude.com/docs/ru/desktop.md), независимо от вашего плана или типа учётной записи, по мере развёртывания функции Anthropic. В интерактивных сессиях в терминале требуется Claude Code v2.1.271 или новее на планах Pro, Max и Team и v2.1.278 или новее на планах Enterprise и в учётных записях Claude API. В сессиях `-p`, Agent SDK, расширения VS Code и десктопного приложения требуется Claude Code v2.1.281 или новее. Начиная с v2.1.282 сессия, которая [не получает флаги функций](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching), например потому что вы отключили телеметрию, по умолчанию запрашивает сервер в сессии любого типа.

370* **Облачный провайдер либо LLM-шлюз или прокси**: в [Claude Platform on AWS](https://code.claude.com/docs/ru/claude-platform-on-aws.md), Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry, а также всякий раз, когда вы направляете `ANTHROPIC_BASE_URL` на [LLM-шлюз или прокси](https://code.claude.com/docs/ru/llm-gateway), независимо от вашего плана. Запрос к серверу по умолчанию требует Claude Code v2.1.278 или новее.371* **Облачный провайдер либо LLM-шлюз или прокси**: в [Claude Platform on AWS](https://code.claude.com/docs/ru/claude-platform-on-aws.md), Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry, а также всякий раз, когда вы направляете `ANTHROPIC_BASE_URL` на [LLM-шлюз или прокси](https://code.claude.com/docs/ru/llm-gateway), независимо от вашего плана. Запрос к серверу по умолчанию требует Claude Code v2.1.278 или новее.

371* **Сессия [Claude apps gateway](https://code.claude.com/docs/ru/claude-apps-gateway) с выполненным входом**: требуется Claude Code v2.1.280 или новее372* **Сессия [Claude apps gateway](https://code.claude.com/docs/ru/claude-apps-gateway) с выполненным входом**: требуется Claude Code v2.1.280 или новее

373* **[Облачная сессия](https://code.claude.com/docs/ru/claude-code-on-the-web.md) в среде, размещённой Anthropic**: независимо от вашего плана, когда вы запускаете её из веба, мобильного приложения или десктопного приложения с выбранным вариантом **Cloud**. Сессии, запущенные [облачной запланированной задачей](https://code.claude.com/docs/ru/routines.md), запрашивают сервер по мере развёртывания функции Anthropic.

372 374 

373Там, где сервер проверяет действия, решение по ним определяют его вердикты. Возможны ещё два исхода:375Там, где сервер проверяет действия, решение по ним определяют его вердикты. Возможны ещё два исхода:

374 376 


647 649 

648Режим `bypassPermissions` отключает запросы разрешений и проверки безопасности, чтобы вызовы инструментов выполнялись немедленно, включая записи в [защищённые пути](#protected-paths).650Режим `bypassPermissions` отключает запросы разрешений и проверки безопасности, чтобы вызовы инструментов выполнялись немедленно, включая записи в [защищённые пути](#protected-paths).

649 651 

650[Действия, которые ни один режим не одобряет автоматически](#actions-no-mode-auto-approves), по-прежнему требуют запроса в этом режиме. Чтение [публичного артефакта другой организации](https://code.claude.com/docs/ru/artifacts.md#read-an-artifact-shared-with-you) требует вашего подтверждения, а этот режим его не запрашивает, поэтому Claude не может прочитать такой артефакт. Запреты [Remove-Item в PowerShell](#remove-item-in-powershell) также применяются в этом режиме.652Даже в режиме `bypassPermissions` каждое из [действий, которые ни один режим не одобряет автоматически](#actions-no-mode-auto-approves), вызывает запрос или отклоняется, а не выполняется самостоятельно. Чтение [публичного артефакта другой организации](https://code.claude.com/docs/ru/artifacts.md#read-an-artifact-shared-with-you) требует вашего подтверждения, а этот режим его не запрашивает, поэтому Claude не может прочитать такой артефакт. Запреты [Remove-Item в PowerShell](#remove-item-in-powershell) также применяются в этом режиме.

651 653 

652Две [гарантии обмена сообщениями между сеансами](https://code.claude.com/docs/ru/cross-session-messaging.md) по-прежнему применяются в этом режиме, и в интерактивных сеансах режима plan, где доступны разрешения на обход:654Две [гарантии обмена сообщениями между сеансами](https://code.claude.com/docs/ru/cross-session-messaging.md) по-прежнему применяются в этом режиме, и в интерактивных сеансах режима plan, где доступны разрешения на обход:

653 655 


769* `.devcontainer.json`771* `.devcontainer.json`

770* `.ripgreprc`, `pyrightconfig.json`772* `.ripgreprc`, `pyrightconfig.json`

771* `.mcp.json`, `.claude.json`773* `.mcp.json`, `.claude.json`

774* Файл, который вы передали в [`--settings`](https://code.claude.com/docs/ru/cli-reference#cli-flags), `--mcp-config` или `--agents` при запуске сессии

772* Файл, на который указывает ваш пользовательский, проектный или локальный [файл настроек](https://code.claude.com/docs/ru/settings.md#settings-files-and-who-they-affect), когда сам файл настроек является символической ссылкой, например в репозиторий dotfiles. В режимах, которые маршрутизируют записи в защищённые пути классификатору, запись в этот файл вместо этого требует вашего подтверждения, даже если совпадает правило allow. Если собственный путь файла также является путём файла настроек, например `.claude/settings.json` в другой папке, запись направляется классификатору, как и другие записи в защищённые пути775* Файл, на который указывает ваш пользовательский, проектный или локальный [файл настроек](https://code.claude.com/docs/ru/settings.md#settings-files-and-who-they-affect), когда сам файл настроек является символической ссылкой, например в репозиторий dotfiles. В режимах, которые маршрутизируют записи в защищённые пути классификатору, запись в этот файл вместо этого требует вашего подтверждения, даже если совпадает правило allow. Если собственный путь файла также является путём файла настроек, например `.claude/settings.json` в другой папке, запись направляется классификатору, как и другие записи в защищённые пути

773 776 

774## Критические пути777## Критические пути


844 847 

845Для glob или косой черты под переменной запрос называет помеченную команду `rm` и говорит, как переписать её, чтобы проверка прошла.848Для glob или косой черты под переменной запрос называет помеченную команду `rm` и говорит, как переписать её, чтобы проверка прошла.

846 849 

850### Запрос `Dangerous rm operation not ruled out`

851 

852Полная причина выглядит так:

853 

854```text theme={null}

855Dangerous rm operation not ruled out — the shell may read this command differently than it was parsed

856```

857 

858Эта причина означает, что оболочка может прочитать команду иначе, чем Claude Code, поэтому удаление может оказаться в непроверенной части, даже если `rm` в команде нет. В режиме `auto` или `bypassPermissions` отклонение с этим предложением исходит от той же проверки:

859 

860```text theme={null}

861This command could not be checked for dangerous rm operations: the shell may read it differently than it was parsed.

862```

863 

864Вы получаете тот же запрос или отклонение, что и для удаления критического пути [в вашем режиме разрешений](#critical-path-removals-in-each-permission-mode), включая `bypassPermissions`. Одобрить команду с помощью правила allow `Bash` или `Bash(*)`, [режима автоматического разрешения](https://code.claude.com/docs/ru/sandboxing.md#auto-allow-mode) песочницы или хука `PreToolUse`, возвращающего `"allow"`, нельзя. Прочитайте команду, а затем одобрите запрос или, после отклонения, выполните её в своей оболочке.

865 

847### Запрос для смонтированных дисков866### Запрос для смонтированных дисков

848 867 

849Запрос для смонтированных дисков появляется в macOS, Linux и WSL, когда рекурсивная команда `rm` нацелена на один из перечисленных [путей смонтированных дисков](#paths-that-get-the-mounted-drive-prompt), например `/mnt/c` или `/Volumes/USB/build`. Его причина выглядит так: `Dangerous rm operation on mounted drive path: <path>`. Цель `/*` получает запрос и без рекурсивного флага, поскольку Claude Code читает `rm /Volumes/USB/build/*` как удаление `/Volumes/USB/build`.868Запрос для смонтированных дисков появляется в macOS, Linux и WSL, когда рекурсивная команда `rm` нацелена на один из перечисленных [путей смонтированных дисков](#paths-that-get-the-mounted-drive-prompt), например `/mnt/c` или `/Volumes/USB/build`. Его причина выглядит так: `Dangerous rm operation on mounted drive path: <path>`. Цель `/*` получает запрос и без рекурсивного флага, поскольку Claude Code читает `rm /Volumes/USB/build/*` как удаление `/Volumes/USB/build`.


900| `plan` | Спрашивает вас одобрить его. Когда [классификатор проверяет команды во время планирования](#analyze-before-you-edit-with-plan-mode) и нет доступных разрешений на обход, обрабатывает это как в режиме `auto` |919| `plan` | Спрашивает вас одобрить его. Когда [классификатор проверяет команды во время планирования](#analyze-before-you-edit-with-plan-mode) и нет доступных разрешений на обход, обрабатывает это как в режиме `auto` |

901| `auto` | Спрашивает вас одобрить это в терминале с [ограничением по времени](#time-limits-and-denials-in-auto-and-bypasspermissions-modes). В других местах отклоняет это |920| `auto` | Спрашивает вас одобрить это в терминале с [ограничением по времени](#time-limits-and-denials-in-auto-and-bypasspermissions-modes). В других местах отклоняет это |

902| `dontAsk` | Отклоняет его |921| `dontAsk` | Отклоняет его |

903| `bypassPermissions` | Спрашивает вас одобрить это с ограничением по времени в терминале |922| `bypassPermissions` | В терминале спрашивает вас одобрить это до истечения ограничения по времени. О других местах см. [что происходит в каждом месте](#time-limits-and-denials-in-auto-and-bypasspermissions-modes) |

904 923 

905Если явное [правило ask](https://code.claude.com/docs/ru/permissions.md#manage-permissions) совпадает с командой, Claude Code спрашивает вас вместо этого, даже в режиме `auto` и без ограничения по времени. В режимах, которые спрашивают, hook [`PermissionRequest`](https://code.claude.com/docs/ru/hooks#permissionrequest) может ответить на запрос.924Если явное [правило ask](https://code.claude.com/docs/ru/permissions.md#manage-permissions) совпадает с командой, Claude Code спрашивает вас вместо этого, даже в режиме `auto` и без ограничения по времени. В режимах, которые спрашивают, hook [`PermissionRequest`](https://code.claude.com/docs/ru/hooks#permissionrequest) может ответить на запрос.

906 925 


912* Нажмите любую клавишу, пока запрос открыт, чтобы остановить обратный отсчёт и оставить запрос в ожидании вашего ответа.931* Нажмите любую клавишу, пока запрос открыт, чтобы остановить обратный отсчёт и оставить запрос в ожидании вашего ответа.

913* После трёх таких запросов, которые остаются без ответа в сеансе, Claude Code перестаёт их показывать и немедленно отклоняет дальнейшие удаления критических путей. Отправка нового сообщения начинает отсчёт заново.932* После трёх таких запросов, которые остаются без ответа в сеансе, Claude Code перестаёт их показывать и немедленно отклоняет дальнейшие удаления критических путей. Отправка нового сообщения начинает отсчёт заново.

914 933 

915В режиме `auto`, везде, где Claude Code не может показать вам запрос в терминале, он немедленно отклоняет команду, например в [неинтерактивных запусках](https://code.claude.com/docs/ru/headless.md) с `-p`, в сеансах [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/permissions.md) и в панели чата расширения VS Code и приложении Desktop. Отклонение говорит Claude сообщить, что он хотел удалить, и оставить удаление вам.934Ограничение по времени действует в Claude Code v2.1.281 и позже, как и отклонение в режиме `auto` вне терминала.

935 

936Вне терминала вы не получаете этот запрос:

916 937 

917Обработка `auto` и `bypassPermissions` требует Claude Code v2.1.281 или позже. Чтобы отключить это, установите [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT=1`](https://code.claude.com/docs/ru/env-vars#variables) в окружении, которое запускает Claude Code. В режиме `auto` удаления критических путей затем переходят к классификатору, а в режиме `bypassPermissions` запрос не имеет ограничения по времени.938| Где | `auto` | `bypassPermissions` |

939| :- | :- | :- |

940| Панель чата [расширения VS Code](https://code.claude.com/docs/ru/vs-code.md) | Отклоняет его | Отклоняет его, если [хук `PermissionRequest`](https://code.claude.com/docs/ru/hooks#permissionrequest) его не разрешает |

941| [Приложение Desktop](https://code.claude.com/docs/ru/desktop.md) | Отклоняет его | Отклоняет его, если хук `PermissionRequest` его не разрешает |

942| [Запуск с `-p`](https://code.claude.com/docs/ru/headless) или [сессия Agent SDK](https://code.claude.com/docs/ru/agent-sdk/permissions.md) | Отклоняет его | Решает ваш [`--permission-prompt-tool`](https://code.claude.com/docs/ru/cli-reference#cli-flags) или [callback `canUseTool`](https://code.claude.com/docs/ru/agent-sdk/user-input#handle-tool-approval-requests). Если нет ни того, ни другого, или при [`--permission-prompts none`](https://code.claude.com/docs/ru/headless#turn-off-permission-prompts-in-unattended-runs), отклоняет его, если хук `PermissionRequest` его не разрешает |

943 

944Везде, где удаление отклонено, вы можете прочитать всю команду и выполнить её в своей оболочке.

945 

946Чтобы изменить поведение в каждом режиме, установите [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT`](https://code.claude.com/docs/ru/env-vars#variables) в `1`:

947 

948* **`bypassPermissions`**: запрос в терминале не имеет ограничения по времени, а панель чата VS Code спрашивает вас

949* **`auto`**: решает [классификатор](#eliminate-prompts-with-auto-mode) — в терминале, в панели чата VS Code, в запусках с `-p` и в сессиях Agent SDK

950 

951Устанавливайте её в окружении, которое запускает Claude Code, например в вашей оболочке или в параметре `env` SDK, а не в файле настроек Claude Code. Для панели чата добавьте её в [`claudeCode.environmentVariables`](https://code.claude.com/docs/ru/vs-code#extension-settings) в собственном пользовательском `settings.json` VS Code, а затем начните новый диалог:

952 

953```json theme={null}

954{

955 "claudeCode.environmentVariables": [

956 { "name": "CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT", "value": "1" }

957 ]

958}

959```

918 960 

919### Remove-Item в PowerShell961### Remove-Item в PowerShell

920 962 

Details

41 41 

42Если руководство или более старая инструкция предлагает вам выполнить `/plugin marketplace add anthropics/claude-code`, эта команда добавляет демонстрационный маркетплейс с названием `claude-code-plugins`. Это не официальный маркетплейс.42Если руководство или более старая инструкция предлагает вам выполнить `/plugin marketplace add anthropics/claude-code`, эта команда добавляет демонстрационный маркетплейс с названием `claude-code-plugins`. Это не официальный маркетплейс.

43 43 

44Большинство плагинов демонстрационного маркетплейса также есть в официальном маркетплейсе под теми же названиями. Например, `code-review`, `feature-dev`, `commit-commands` и `security-guidance` есть в обоих. Устанавливайте их из `claude-plugins-official`, чтобы у вас не было установлено две копии.44Большинство плагинов демонстрационного маркетплейса также есть в официальном маркетплейсе под теми же названиями. Например, `code-review`, `feature-dev` и `commit-commands` есть в обоих. Устанавливайте их из `claude-plugins-official`, чтобы у вас не было установлено две копии.

45 45 

46## Поиск плагинов в официальном маркетплейсе46## Поиск плагинов в официальном маркетплейсе

47 47 

Details

403 403 

404Для диапазонов версий, соглашение git-тега `<plugin>--v<version>`, против которого они разрешаются, и кросс-marketplace доверие, смотрите [Plugin dependencies](https://code.claude.com/docs/ru/plugins/dependencies.md).404Для диапазонов версий, соглашение git-тега `<plugin>--v<version>`, против которого они разрешаются, и кросс-marketplace доверие, смотрите [Plugin dependencies](https://code.claude.com/docs/ru/plugins/dependencies.md).

405 405 

406Чтобы Claude Code предложил плагин, когда проект соответствует ему, добавьте блок `relevance` к записи с сигналами, которые идентифицируют проект. Пользователи видят предложения из вашего marketplace только когда администратор перечисляет его в `pluginSuggestionMarketplaces`. Для сигналов и шага включения, смотрите [Plugin relevance](https://code.claude.com/docs/ru/plugins/relevance.md).406Чтобы Claude Code предлагал плагин, когда проект ему соответствует, добавьте в запись блок `relevance` с сигналами, которые идентифицируют проект. Пользователи видят эти предложения только в том случае, если администратор указал ваш маркетплейс в `pluginSuggestionMarketplaces`. О сигналах и шаге включения см. [Релевантность плагинов](https://code.claude.com/docs/ru/plugins/relevance.md).

407 407 

408## Work around what a marketplace can't do408## Work around what a marketplace can't do

409 409 

Details

95 95 

96Ни один из этих элементов управления не изолирует мод в песочнице. Мод, который вы разрешаете, работает как пользователь, с доступом пользователя к файлам, процессам и сети.96Ни один из этих элементов управления не изолирует мод в песочнице. Мод, который вы разрешаете, работает как пользователь, с доступом пользователя к файлам, процессам и сети.

97 97 

98### Узнать, какие хуки мода пользователя не запускаются

99 

100Там, где загружается [встроенный страж](#know-what-happens-by-default), хук, который мод пользователя регистрирует на одно из этих событий, никогда не запускается, и `/plugin` сообщает об этом пользователю в примечании. В строках [`session.append`](https://code.claude.com/docs/ru/plugins/mods/reference#session) `door` — это тип сохраняемой строки, которым отфильтрован хук.

101 

102| Хук на | Что представляет собой событие |

103| :- | :- |

104| [`classic.<Event>`](https://code.claude.com/docs/ru/plugins/mods/events#hook-the-settings-hook-events), например `classic.Stop` | [Событие хука настроек](https://code.claude.com/docs/ru/hooks.md#hook-events) |

105| [`prompt.compose`](https://code.claude.com/docs/ru/plugins/mods/reference#prompts-and-what-claude-reads) | Список разделов системного промпта |

106| `prompt.section` | Один раздел системного промпта |

107| `prompt.context` | Контекст, отправляемый с первым сообщением диалога |

108| `prompt.attachment` | Сообщение, которое Claude Code добавляет для Claude, например напоминание |

109| `skill.prompt` | Текст скилла при его раскрытии для Claude |

110| `attribution.text` | Текст атрибуции коммита или pull request |

111| [`session.compact`](https://code.claude.com/docs/ru/plugins/mods/reference#session) | Сжатие контекста диалога |

112| `settings.read` | Чтение настроек, например вызов `$.settings.read` мода |

113| `session.append{door=attachment}` | Сохраняемая строка для сообщения, которое Claude Code добавляет для Claude |

114| `session.append{door=hook-context}` | Сохраняемая строка для контекста от хука настроек |

115| `session.append{door=compaction}` | Сохраняемые строки для сводки и границы сжатия контекста |

116 

117Страж также пропускает хуки пользователя в некоторых других случаях, например для описаний инструментов вашей организации в [`tool.describe`](https://code.claude.com/docs/ru/plugins/mods/reference#tools) и для сохраняемой строки с текстом скилла. Для них `/plugin` не показывает примечания. Если хук на другое событие ничего не делает, см. [Выяснить, почему мод ничего не делает](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing).

118 

119Примечание отображается в сведениях о плагине и на вкладке **Errors** в `/plugin`. Для него требуется Claude Code v2.1.299 или новее. В нём каждый хук из таблицы указан так, как его зарегистрировал мод, как в этом примере:

120 

121```text theme={null}

122Its hooks on classic.Stop, prompt.section do not run here: where an organization manages Claude Code, these events pass over the plugins you install

123Only a plugin that counts as your organization's own runs hooks on these events. An administrator sets that up in managed settings

124```

125 

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

127 

128* **Запускать мод как мод вашей организации**: [установите мод так, чтобы он считался вашим](#install-your-organizations-mods). Тогда его хуки на эти события запускаются, а страж остаётся загруженным для всех остальных модов. Мод включается для всех, кто получает эти настройки, и должен находиться в каталоге, который вы размещаете на каждой машине. Если вы указываете его в `prependPlugins`, оставьте `sec-default@builtin` в списке.

129* **Удалить стража**: не включайте `sec-default@builtin` в `prependPlugins`. Достаточно пустого списка `"prependPlugins": []`. Вы теряете весь страж, а не только эти события. Тогда мод пользователя может делать то, [от чего его иначе удерживает страж](#know-what-happens-by-default), и [параметры стража](#set-options-on-the-built-in-guard) не применяются.

130 

131Если вы передаёте список без стража через [настройки, управляемые сервером](https://code.claude.com/docs/ru/server-managed-settings.md#fetch-and-caching-behavior), страж остаётся загруженным, пока сервер не подтвердит настройки для сессии. Чтобы проверить любое из изменений на машине с v2.1.299 или новее, откройте `/plugin` в сессии на ней и убедитесь, что примечание исчезло.

132 

133Хук `session.append` без фильтра `door` по-прежнему запускается и не получает примечания, но сохраняемые строки из таблицы до него не доходят.

134 

98## Решить, оставить ли моды включенными135## Решить, оставить ли моды включенными

99 136 

100Мод может делать больше, чем другие части плагина, потому что он работает внутри Claude Code. Он видит каждый запрос и вызов инструмента, может их изменять и может разрешить или отказать в вызове инструмента перед появлением запроса разрешения.137Мод может делать больше, чем другие части плагина, потому что он работает внутри Claude Code. Он видит каждый запрос и вызов инструмента, может их изменять и может разрешить или отказать в вызове инструмента перед появлением запроса разрешения.


142| `$.prompt.submit` | Отправляет запрос и может отправить его как собственные слова пользователя |179| `$.prompt.submit` | Отправляет запрос и может отправить его как собственные слова пользователя |

143| `$.session.send` | Отправляет сообщение, которое читает Claude другой сессии, субагента или [участника команды](https://code.claude.com/docs/ru/agent-teams.md) |180| `$.session.send` | Отправляет сообщение, которое читает Claude другой сессии, субагента или [участника команды](https://code.claude.com/docs/ru/agent-teams.md) |

144 181 

145В строке `hooks:`, [`tool.call`](https://code.claude.com/docs/ru/plugins/mods/reference#tools) и [`prompt.submit`](https://code.claude.com/docs/ru/plugins/mods/reference#prompts-and-what-claude-reads) означают, что мод видит каждый вызов инструмента и каждый запрос и может их изменять. [`session.append`](https://code.claude.com/docs/ru/plugins/mods/reference#session) означает, что мод может переписать каждую строку разговора перед ее сохранением. [`ui.render{component=AskUserQuestion}`](https://code.claude.com/docs/ru/plugins/mods/interface#change-what-claude-code-already-draws) означает, что мод может переделать диалог, который Claude использует для вопроса пользователю. `tool.check` означает, что мод может одобрить или отказать в вызове инструмента перед появлением запроса разрешения. [Узнать, что происходит по умолчанию](#know-what-happens-by-default) перечисляет, какие из ваших правил и hooks имеют приоритет над его ответом.182В строке `hooks:`, [`tool.call`](https://code.claude.com/docs/ru/plugins/mods/reference#tools) и [`prompt.submit`](https://code.claude.com/docs/ru/plugins/mods/reference#prompts-and-what-claude-reads) означают, что мод видит каждый вызов инструмента и каждый промпт и может их изменять. [`session.append`](https://code.claude.com/docs/ru/plugins/mods/reference#session) означает, что мод может переписать каждую строку диалога перед ее сохранением, за исключением [строк, которые пропускает защита](#hooks-the-guard-passes-over). [`ui.render{component=AskUserQuestion}`](https://code.claude.com/docs/ru/plugins/mods/interface#change-what-claude-code-already-draws) означает, что мод может переделать диалоговое окно, которое Claude использует для вопроса пользователю. `tool.check` означает, что мод может одобрить или отказать в вызове инструмента перед появлением запроса разрешения. [Узнать, что происходит по умолчанию](#know-what-happens-by-default) перечисляет, какие из ваших правил и хуков имеют приоритет над его ответом.

146 183 

147## Выбрать, сколько разрешить184## Выбрать, сколько разрешить

148 185 

Details

377 377 

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

379 379 

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

381 381 

382Этот хук использует `Stop`, которое срабатывает, когда Claude заканчивает отвечать, чтобы записать в лог, где сохранён транскрипт сессии:382Этот хук использует `Stop`, которое срабатывает, когда Claude заканчивает отвечать, чтобы записать в лог, где сохранён транскрипт сессии:

383 383 


425* **Он дал сбой перед вызовом `next`**: Claude Code пропускает его, и следующий обработчик запускается на его месте425* **Он дал сбой перед вызовом `next`**: Claude Code пропускает его, и следующий обработчик запускается на его месте

426* **Он дал сбой после разрешения `next`**: этот результат остаётся в силе, и ничего не запускается второй раз426* **Он дал сбой после разрешения `next`**: этот результат остаётся в силе, и ничего не запускается второй раз

427 427 

428Одна строка называет мод, событие и причину, такую как `my-mod: tool.call hook skipped: threw Error: boom`. Где вы это читаете, зависит от сессии, как перечислено в разделе [Узнать, почему мод ничего не делает](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing). О хуке `ui.render`, чей рисунок не проходит валидацию, сообщается иначе, как описано в разделе [Создать дерево из элементов](https://code.claude.com/docs/ru/plugins/mods/interface.md#build-a-tree-from-elements).428Одна строка называет мод, событие и причину, такую как `my-mod: tool.call hook skipped: threw Error: boom`. Где вы это читаете, зависит от сессии, как перечислено в разделе [Узнать, почему мод ничего не делает](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing). Хук `ui.render`, чьё [дерево не проходит валидацию](https://code.claude.com/docs/ru/plugins/mods/interface.md#build-a-tree-from-elements), считается хуком, который вернул результат неправильной формы.

429 429 

430Чтобы хук, который блокирует вызовы, при сбое закрывал доступ (fail closed), добавьте обработчик ошибок `.catch`, который отвечает на его месте. Здесь `guard` — это ваша хук-функция, а обработчик проверяет [`next.called`](https://code.claude.com/docs/ru/plugins/mods/reference#the-hook-function), чтобы узнать, вызвал ли `guard` уже `next`, когда дал сбой:430Чтобы хук, который блокирует вызовы, при сбое закрывал доступ (fail closed), добавьте обработчик ошибок `.catch`, который отвечает на его месте. Здесь `guard` — это ваша хук-функция, а обработчик проверяет [`next.called`](https://code.claude.com/docs/ru/plugins/mods/reference#the-hook-function), чтобы узнать, вызвал ли `guard` уже `next`, когда дал сбой:

431 431 

Details

421Note: Type a note and press Enter421Note: Type a note and press Enter

422```422```

423 423 

424Добавьте `rows`, чтобы поле могло вмещать несколько строк. Enter по-прежнему отправляет текст, а обратная косая черта перед Enter начинает новую строку, как и Shift+Enter там, где [терминал это поддерживает](https://code.claude.com/docs/ru/terminal-config.md#enter-multiline-prompts). В галерее показано [поле с `rows`](https://code.claude.com/docs/ru/plugins/mods/gallery#input).

425 

424В [галерее интерфейсов](https://code.claude.com/docs/ru/plugins/mods/gallery.md) есть примеры и снимки экрана большинства элементов. Эта таблица перечисляет каждый элемент:426В [галерее интерфейсов](https://code.claude.com/docs/ru/plugins/mods/gallery.md) есть примеры и снимки экрана большинства элементов. Эта таблица перечисляет каждый элемент:

425 427 

426| Элемент | Что он рисует | Где |428| Элемент | Что он рисует | Где |


436 438 

437Если ваш модуль — это файл `.tsx` или `.jsx`, вы можете написать дерево как JSX. Сначала деструктурируйте элементы из `$.ui.resolve(e)`.439Если ваш модуль — это файл `.tsx` или `.jsx`, вы можете написать дерево как JSX. Сначала деструктурируйте элементы из `$.ui.resolve(e)`.

438 440 

439Если дерево использует элемент, который приложение не имеет, свойство, которое элемент не принимает, или дочерний элемент, где его нет, Claude Code рисует свою собственную версию сайта.441Если ваш рисунок не отображается, проверьте его дерево на наличие пропа, который элемент не принимает, или дочернего элемента там, где его быть не должно. Хук, который возвращает такое дерево, [завершается сбоем](https://code.claude.com/docs/ru/plugins/mods/events.md#handle-a-hook-that-fails), а [строка `hook skipped`](https://code.claude.com/docs/ru/plugins/mods/troubleshoot#a-pane-or-band-is-empty) называет ваш мод и правило, которое нарушило дерево. Для `Text` в панели с пропом `bogusProp` эта строка выглядит так:

440 442 

441В сессии, запущенной с `--plugin-dir`, строка транскрипта говорит об этом, например `ui.render (Pane) refused: Text prop "bogusProp" is not allowed; the engine drew its own`. [Лог отладки](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#read-the-debug-log) записывает это как `ui.render (Pane): a hook returned a tree that does not validate` с той же причиной. Ничего больше не появляется в сессии, поэтому когда рисование не показывается, проверьте эту строку или лог.443```text theme={null}

444my-mod: ui.render hook skipped: returned the wrong shape (a tree Pane refuses: Text prop "bogusProp" is not allowed)

445```

442 446 

443### `Link` в приложении Desktop и VS Code447### `Link` в приложении Desktop и VS Code

444 448 


542| Клавиша | Что она делает |546| Клавиша | Что она делает |

543| :- | :- |547| :- | :- |

544| Tab | Переходит к следующему элементу управления |548| Tab | Переходит к следующему элементу управления |

545| Up и Down | Перемещаются между элементами управления, пока ваше рисование подходит. Когда панель или полоса имеет больше строк, чем может показать, они прокручивают ее. |549| Up и Down | Перемещаются между элементами управления, пока ваше рисование подходит. Когда панель или полоса имеет больше строк, чем может показать, они прокручивают ее. В `Input` они сначала [перемещают между строками поля](https://code.claude.com/docs/ru/plugins/mods/gallery.md#input). |

546| Enter | Нажимает сфокусированный `Button`, отправляет сфокусированный `Input` или выбирает в `Select` |550| Enter | Нажимает сфокусированный `Button`, отправляет сфокусированный `Input` или выбирает в `Select` |

547| Горячая клавиша кнопки | Нажимает эту кнопку. Пока `Input` имеет фокус, каждая печатаемая клавиша идет в поле. |551| Горячая клавиша кнопки | Нажимает эту кнопку. Пока `Input` имеет фокус, каждая печатаемая клавиша идет в поле. |

548| Page Up, Page Down, Home и End | Прокручивают вашу панель или полосу, когда в ней больше строк, чем она может показать |552| Page Up, Page Down, Home и End | Прокручивают вашу панель или полосу, когда в ней больше строк, чем она может показать |

Details

275| [`Link`](https://code.claude.com/docs/ru/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. См. [Ограничения](#limits). | ✓ | ✓ | ✓ |275| [`Link`](https://code.claude.com/docs/ru/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. См. [Ограничения](#limits). | ✓ | ✓ | ✓ |

276| [`Code`](https://code.claude.com/docs/ru/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |276| [`Code`](https://code.claude.com/docs/ru/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |

277| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |277| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |

278| [`Input`](https://code.claude.com/docs/ru/plugins/mods/interface#take-typed-input-and-draw-a-row-for-each-item) | `key`, `label`, `placeholder`, `value`, `submitLabel`, `onSubmit`, `onInput`, `autoFocus` | ✓ | ✓ | ✓ |278| [`Input`](https://code.claude.com/docs/ru/plugins/mods/interface#take-typed-input-and-draw-a-row-for-each-item) | `key`, `label`, `placeholder`, `value`, `submitLabel`, [`rows`](https://code.claude.com/docs/ru/plugins/mods/gallery#input), `onSubmit`, `onInput`, `autoFocus` | ✓ | ✓ | ✓ |

279| `Select` | `key`, `label`, `options`, `value`, `onSelect`, `autoFocus` | ✓ | ✓ | ✓ |279| `Select` | `key`, `label`, `options`, `value`, `onSelect`, `autoFocus` | ✓ | ✓ | ✓ |

280| `Svg` | `source` с SVG-разметкой до 131 072 символов, текст `alt`, `width`, `height` и `isInteractive` | | ✓ | ✓ |280| `Svg` | `source` с SVG-разметкой до 131 072 символов, текст `alt`, `width`, `height` и `isInteractive` | | ✓ | ✓ |

281| [`Client`](https://code.claude.com/docs/ru/plugins/mods/interface#build-a-tree-from-elements) | `module`, `key`, `props`, `width`, `height`, `flexGrow` | ✓ | ✓ | |281| [`Client`](https://code.claude.com/docs/ru/plugins/mods/interface#build-a-tree-from-elements) | `module`, `key`, `props`, `width`, `height`, `flexGrow` | ✓ | ✓ | |


333 333 

334Если задать для `gap`, `padding` или `margin` шаг, он применяется сразу и по горизонтали, и по вертикали. Например, в терминале и расширении VS Code `padding: 'md'` означает две ячейки с каждой стороны и одну строку сверху и снизу.334Если задать для `gap`, `padding` или `margin` шаг, он применяется сразу и по горизонтали, и по вертикали. Например, в терминале и расширении VS Code `padding: 'md'` означает две ячейки с каждой стороны и одну строку сверху и снизу.

335 335 

336Имена шагов требуют Claude Code v2.1.299 или более поздней версии. В более ранних выпусках Claude Code [рисует собственную версию сайта](https://code.claude.com/docs/ru/plugins/mods/interface.md#build-a-tree-from-elements) вместо дерева, в котором используется имя шага.336Имена шагов требуют Claude Code v2.1.299 или более поздней версии. В более ранних выпусках дерево, в котором используется имя шага, не рисуется.

337 337 

338### Типографские пропсы `Text`338### Типографские пропсы `Text`

339 339 


346| `mono` | `true`, чтобы запросить моноширинный шрифт приложения | Игнорируется: терминал всегда моноширинный | Игнорируется, поэтому текст сохраняет собственный шрифт расширения |346| `mono` | `true`, чтобы запросить моноширинный шрифт приложения | Игнорируется: терминал всегда моноширинный | Игнорируется, поэтому текст сохраняет собственный шрифт расширения |

347| `tabular` | `true`, чтобы запросить цифры одинаковой ширины, чтобы число, обновляемое на месте, или столбец чисел оставались выровненными | Игнорируется: цифры в терминале и так занимают одну ячейку | Игнорируется |347| `tabular` | `true`, чтобы запросить цифры одинаковой ширины, чтобы число, обновляемое на месте, или столбец чисел оставались выровненными | Игнорируется: цифры в терминале и так занимают одну ячейку | Игнорируется |

348 348 

349Эти четыре пропса требуют Claude Code v2.1.299 или более поздней версии. В более ранних выпусках Claude Code [рисует собственную версию сайта](https://code.claude.com/docs/ru/plugins/mods/interface.md#build-a-tree-from-elements) вместо дерева, в котором задан `size`, `weight`, `mono` или `tabular`.349Эти четыре пропса требуют Claude Code v2.1.299 или более поздней версии. В более ранних выпусках дерево, в котором задан `size`, `weight`, `mono` или `tabular`, не рисуется.

350 350 

351#### Замена `bold` на `weight`351#### Замена `bold` на `weight`

352 352 

353`bold` для `Text` объявлен устаревшим в пользу `weight`, но по-прежнему работает. Чтобы заменить его для `Text` без `weight`, измените `bold: true` на `weight: 'semibold'` — в Claude Code v2.1.299 или более поздней версии результат будет тем же.353`bold` для `Text` объявлен устаревшим в пользу `weight`, но по-прежнему работает. Чтобы заменить его для `Text` без `weight`, измените `bold: true` на `weight: 'semibold'` — в Claude Code v2.1.299 или более поздней версии результат будет тем же.

354 354 

355В выпусках до v2.1.299 дерево, в котором задан `weight`, не рисуется, и вместо него Claude Code [рисует собственную версию сайта](https://code.claude.com/docs/ru/plugins/mods/interface.md#build-a-tree-from-elements). Если задать для `Text` и `bold`, и `weight`, `bold` не действует.355В выпусках до v2.1.299 дерево, в котором задан `weight`, не рисуется. Если задать для `Text` и `bold`, и `weight`, `bold` не действует.

356 356 

357## Ограничения357## Ограничения

358 358 

359Хуки и вызовы API модов выполняются с ограничениями по времени и размеру. Claude Code пропускает хук, превысивший ограничение по времени.359Хуки и вызовы API модов выполняются с ограничениями по времени и размеру. Claude Code пропускает хук, превысивший ограничение по времени. Дерево, превышающее ограничение по вложенности, числу элементов, ячейкам `Raster` или байтам `Image`, [не отрисовывается](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#a-pane-or-band-is-empty).

360 360 

361| Ограничение | Значение |361| Ограничение | Значение |

362| :- | :- |362| :- | :- |


372| Перенаправления, по которым проходит один вызов `$.http.fetch` | 5 |372| Перенаправления, по которым проходит один вызов `$.http.fetch` | 5 |

373| Причина `drop` хука или причина `deny` для `config.set` | 4 096 символов. Конец более длинной причины обрезается, а drop или deny всё равно применяется. Обрезка требует Claude Code v2.1.292 или новее; в более ранних версиях хук вместо этого [завершается с ошибкой](https://code.claude.com/docs/ru/plugins/mods/events.md#handle-a-hook-that-fails). |373| Причина `drop` хука или причина `deny` для `config.set` | 4 096 символов. Конец более длинной причины обрезается, а drop или deny всё равно применяется. Обрезка требует Claude Code v2.1.292 или новее; в более ранних версиях хук вместо этого [завершается с ошибкой](https://code.claude.com/docs/ru/plugins/mods/events.md#handle-a-hook-that-fails). |

374| Текст в одном дереве | Отрисовываются первые 100 000 символов |374| Текст в одном дереве | Отрисовываются первые 100 000 символов |

375| `language` или `path` элемента `Code`, `value` варианта `Select` или `module` элемента `Client` | 10 000 символов. Если значение длиннее, Claude Code [отрисовывает собственную версию области](https://code.claude.com/docs/ru/plugins/mods/interface.md#build-a-tree-from-elements). |375| `language` или `path` элемента `Code`, `value` варианта `Select` или `module` элемента `Client` | 10 000 символов. Если значение длиннее, хук `ui.render`, вернувший его, [завершается с ошибкой](https://code.claude.com/docs/ru/plugins/mods/events.md#handle-a-hook-that-fails). |

376| `href` элемента `Link` | 2 048 символов. Более длинный `href` не даёт отрисовать всё дерево. |376| `href` элемента `Link` | 2 048 символов. Если он длиннее, хук `ui.render`, вернувший его, [завершается с ошибкой](https://code.claude.com/docs/ru/plugins/mods/events.md#handle-a-hook-that-fails). |

377| Глубина вложенности одного дерева | 32 уровня ниже корневого элемента |

378| Элементы и текстовые дочерние узлы в одном дереве | 20 000 |

379| Ячейки `Raster` в одном дереве: `columns` каждого `Raster`, умноженные на его `rows` | 262 144 |

380| Байты PNG или RGBA всех элементов `Image` в одном дереве | 2 МиБ |

377| `$.store` | 4 МиБ JSON в сумме |381| `$.store` | 4 МиБ JSON в сумме |

378| `$.session.messages()` | Последние 4 096 записей |382| `$.session.messages()` | Последние 4 096 записей |

379| Перерисовки `$.ui.invalidate('ui.render')` | Ограничены 10 в секунду или 30 в терминале для видимой панели, развёрнутой полосы и строки подсказки под промптом. Более частые вызовы объединяются. |383| Перерисовки `$.ui.invalidate('ui.render')` | Ограничены 10 в секунду или 30 в терминале для видимой панели, развёрнутой полосы и строки подсказки под промптом. Более частые вызовы объединяются. |

Details

312| Метод | Что он делает |312| Метод | Что он делает |

313| :- | :- |313| :- | :- |

314| `press({ key: 'more' })` | Нажимает `Button` с этим key |314| `press({ key: 'more' })` | Нажимает `Button` с этим key |

315| `input({ key: 'new-note', text: 'buy milk' })` | Вводит текст в `Input` с этим key и нажимает Enter. Добавьте `kind: 'change'` для ввода без отправки. |315| `input({ key: 'new-note', text: 'buy milk' })` | Вводит текст в `Input` с этим key и нажимает Enter. Добавьте `kind: 'change'` для ввода без отправки. Для поля с `rows` текст может содержать `\n`. |

316| `select({ key: 'size', value: 'large' })` | Выбирает опцию с этим значением в `Select` с этим key |316| `select({ key: 'size', value: 'large' })` | Выбирает опцию с этим значением в `Select` с этим key |

317| `find({ key: 'more' })` или `find({ type: 'Text', text: 'Count: 2' })` | Возвращает первый совпадающий элемент как `{ type, props, children }` или `undefined`. `text` может быть строкой или регулярным выражением. |317| `find({ key: 'more' })` или `find({ type: 'Text', text: 'Count: 2' })` | Возвращает первый совпадающий элемент как `{ type, props, children }` или `undefined`. `text` может быть строкой или регулярным выражением. |

318| `unmount()` | Удаляет рисунок |318| `unmount()` | Удаляет рисунок |

319 319 

320Каждый метод разрешается после того, как ваш обработчик завершился, поэтому вы можете проверить результат на следующей строке. Установите `props` на то, что Claude Code передал бы для этого сайта. Таблица [render sites](https://code.claude.com/docs/ru/plugins/mods/reference.md#render-sites) перечисляет props каждого сайта, и [типы для вашей сборки](https://code.claude.com/docs/ru/plugins/mods/create.md#get-the-types-for-your-build) имеют их типы.320Каждый метод разрешается после того, как ваш обработчик завершился, поэтому вы можете проверить результат на следующей строке. Установите `props` на то, что Claude Code передал бы для этого сайта. Таблица [render sites](https://code.claude.com/docs/ru/plugins/mods/reference.md#render-sites) перечисляет props каждого сайта, и [типы для вашей сборки](https://code.claude.com/docs/ru/plugins/mods/create.md#get-the-types-for-your-build) имеют их типы.

321 321 

322Тест рисунка проверяет дерево, которое возвращает ваш hook, и является ли оно действительным для этого приложения. Он не проверяет, как приложение его рисует, поэтому посмотрите новый макет в реальном сеансе также.322Чтобы обнаружить [дерево элементов](https://code.claude.com/docs/ru/plugins/mods/interface.md#build-a-tree-from-elements), которое недопустимо для приложения, указанного в `surface`, проверьте с помощью `find` наличие элемента, который добавляет ваш хук. Тест не проверяет, как приложение отрисовывает дерево, поэтому также посмотрите новый макет в реальной сессии.

323 323 

324### Тестируйте рисунок после `/clear`324### Тестируйте рисунок после `/clear`

325 325 

Details

226 226 

227Чтобы найти этот мод, [запишите лог отладки](#read-the-debug-log) и найдите в нем `answered ui.render without next()`. Строка вроде `other-mod (user) answered ui.render without next()` называет мод, который вернул свое дерево, не вызвав `next(e)`. Она не называет [точку отрисовки](https://code.claude.com/docs/ru/plugins/mods/reference.md#render-sites), поэтому в ней может оказаться и мод, который рисует только панель. Для мода, который вызывает `next(e)` и отбрасывает результат, строки нет, поэтому проверьте также хуки, выполняемые до вашего.227Чтобы найти этот мод, [запишите лог отладки](#read-the-debug-log) и найдите в нем `answered ui.render without next()`. Строка вроде `other-mod (user) answered ui.render without next()` называет мод, который вернул свое дерево, не вызвав `next(e)`. Она не называет [точку отрисовки](https://code.claude.com/docs/ru/plugins/mods/reference.md#render-sites), поэтому в ней может оказаться и мод, который рисует только панель. Для мода, который вызывает `next(e)` и отбрасывает результат, строки нет, поэтому проверьте также хуки, выполняемые до вашего.

228 228 

229После изменения вы ничего не увидите в полосе, если любой из модов вернет дерево, которое не проходит валидацию. Чтобы узнать причину, найдите строку `ui.render (AbovePrompt) refused:` в транскрипте сессии `--plugin-dir` или найдите в логе отладки `does not validate`. Когда в полосе несколько модов, ни одна из этих строк не называет мод, поэтому проверьте дерево каждого мода.229Полоса мода также отсутствует, когда дерево, которое вернул его собственный хук, не проходит валидацию, а полосы других модов при этом остаются. Чтобы узнать, какой это мод и почему, [запишите лог отладки](#read-the-debug-log) и найдите в нем [`ui.render hook skipped`](#a-pane-or-band-is-empty).

230 230 

231### Панель или полоса пуста или показывает обычное содержимое Claude Code231### Панель или полоса пуста или показывает обычное содержимое Claude Code

232 232 

233[Дерево](https://code.claude.com/docs/ru/plugins/mods/interface.md#build-a-tree-from-elements), которое вернул ваш хук, не прошло валидацию. С `--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` с той же причиной.233[Дерево](https://code.claude.com/docs/ru/plugins/mods/interface.md#build-a-tree-from-elements), которое вернул ваш хук, не прошло валидацию. Строка [`hook skipped`](#hook-skipped) [в транскрипте или логе отладки](#find-out-why-a-mod-does-nothing) называет ваш мод и причину, как в этой строке для `Box` в панели:

234 234 

235Прочитайте причину на этой строке. Частые причины - это проп, который элемент не принимает, и элемент, которого нет в приложении.235```text theme={null}

236first-mod: ui.render hook skipped: returned the wrong shape (a tree Pane refuses: Box prop "flexDirection" must be one of row, column, row-reverse, column-reverse)

237```

238 

239Исправьте то, что названо в причине. Если причина обрезана, [запишите лог отладки](#read-the-debug-log) и найдите в нем `a hook returned a tree that does not validate`, чтобы прочитать остальное.

240 

241Если же строка сообщает `refused:` сразу после имени точки, как в `ui.render (Pane) refused:`, см. [Строка `ui.render` сообщает `refused`](#ui-render-refused).

242 

243### Строка `ui.render` сообщает `refused`

244 

245`ui.render (<site>) refused:` или `ui.render (<site>): the chain settled on a tree that does not validate` в [логе отладки](#read-the-debug-log) означает, что [дерево](https://code.claude.com/docs/ru/plugins/mods/interface.md#build-a-tree-from-elements) в этой точке превышает [ограничение размера](https://code.claude.com/docs/ru/plugins/mods/reference.md#limits). Любая из этих строк называет [точку отрисовки](https://code.claude.com/docs/ru/plugins/mods/reference.md#render-sites), а затем причину, и причина называет ограничение.

246 

247Измените моды, которые рисуют в этой точке, чтобы их хуки [`ui.render`](https://code.claude.com/docs/ru/plugins/mods/reference#interface) возвращали деревья меньшего размера, или попросите их авторов сделать это. Если строка транскрипта начинается с `hooks`, у нескольких загруженных модов есть хук `ui.render` для этой точки, поэтому проверьте дерево каждого из этих модов. Для нескольких модов, чьи полосы над промптом вкладываются в дерево глубиной более 32 уровней, строка выглядит так:

248 

249```text theme={null}

250hooks: ui.render (AbovePrompt) refused: deeper than 32; nothing was drawn

251```

252 

253До v2.1.307 строка `refused:` для любой точки сообщала о любом дереве, которое не прошло валидацию, а для `Pane` и `AbovePrompt` она заканчивалась на `; the engine drew its own`. В этих выпусках исправьте то, что названо в причине.

236 254 

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

238 256 


383hooks module first-mod@inline loaded (worker, environment 2, tier user); events: session.start,tool.call,command.run,ui.render401hooks module first-mod@inline loaded (worker, environment 2, tier user); events: session.start,tool.call,command.run,ui.render

384```402```

385 403 

386Рисунок, который не прошёл валидацию, считается отклонённым результатом и тоже получает строку. Чтобы записать собственные строки в лог, вызовите [`$.ui.log`](https://code.claude.com/docs/ru/plugins/mods/api#show-something-without-starting-a-turn) со вторым аргументом, как в `$.ui.log('message', { to: 'debug' })`. Без второго аргумента `$.ui.log` добавляет тусклую строку в транскрипт.404Чтобы записать собственные строки в лог, вызовите [`$.ui.log`](https://code.claude.com/docs/ru/plugins/mods/api#show-something-without-starting-a-turn) со вторым аргументом, как в `$.ui.log('message', { to: 'debug' })`. Без второго аргумента `$.ui.log` добавляет тусклую строку в транскрипт.

387 405 

388Пока вы редактируете мод, загруженный с `--plugin-dir`, транскрипт показывает строку для каждой перезагрузки, в которой указано имя мода и перечислены его хуки. Если после сохранения модуль ломается, в строке выводится `reload failed, the previous version stays loaded:` с причиной, а последняя рабочая версия продолжает работать до следующей перезагрузки плагинов в Claude Code, например когда вы запускаете `/reload-plugins`.406Пока вы редактируете мод, загруженный с `--plugin-dir`, транскрипт показывает строку для каждой перезагрузки, в которой указано имя мода и перечислены его хуки. Если после сохранения модуль ломается, в строке выводится `reload failed, the previous version stays loaded:` с причиной, а последняя рабочая версия продолжает работать до следующей перезагрузки плагинов в Claude Code, например когда вы запускаете `/reload-plugins`.

389 407 

plugins/org.md +6 −2

Details

182| `blockedMarketplaces` | Blocklist источников marketplace, проверяется перед allowlist | Не блокирует marketplace, уже зарегистрированный из источника, который он не совпадает |182| `blockedMarketplaces` | Blocklist источников marketplace, проверяется перед allowlist | Не блокирует marketplace, уже зарегистрированный из источника, который он не совпадает |

183| `syncClaudeAiPlugins` | Установите `false`, чтобы остановить Claude Code загрузку и загрузку плагинов [синхронизированных из claude.ai](https://code.claude.com/docs/ru/plugins/loading.md#synced-plugins) для учетной записи каждого пользователя. Требует Claude Code v2.1.273 или позже | Не отключает один синхронизированный плагин. Для этого установите `"<name>@synced": false` в [`enabledPlugins`](https://code.claude.com/docs/ru/settings-reference#enabledplugins) |183| `syncClaudeAiPlugins` | Установите `false`, чтобы остановить Claude Code загрузку и загрузку плагинов [синхронизированных из claude.ai](https://code.claude.com/docs/ru/plugins/loading.md#synced-plugins) для учетной записи каждого пользователя. Требует Claude Code v2.1.273 или позже | Не отключает один синхронизированный плагин. Для этого установите `"<name>@synced": false` в [`enabledPlugins`](https://code.claude.com/docs/ru/settings-reference#enabledplugins) |

184| `enabledPlugins` | `true` принудительно включает, `false` блокирует во всех областях и скрывает плагин | Не устанавливает плагин, чей marketplace не зарегистрирован или не разрешен |184| `enabledPlugins` | `true` принудительно включает, `false` блокирует во всех областях и скрывает плагин | Не устанавливает плагин, чей marketplace не зарегистрирован или не разрешен |

185| `disableSideloadFlags` | Отклоняет `--plugin-dir`, `--plugin-url`, `--agents`, опцию Agent SDK `plugins` и non-SDK `--mcp-config` при запуске, и отклоняет папки, названные в переменной [`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/ru/env-vars#variables) так же | Не ограничивает `.mcp.json`, `claude mcp add` или предоставленные SDK серверы. Объедините его с [`allowedMcpServers`](https://code.claude.com/docs/ru/managed-mcp) |185| `disableSideloadFlags` | При запуске отклоняет `--plugin-dir`, `--plugin-url`, `--agents`, параметр Agent SDK `plugins` и папки, указанные в переменной [`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/ru/env-vars#variables), а также `--mcp-config`, если только каждый сервер в нём не является внутрипроцессной записью `type: "sdk"`. Отклоняет папки плагинов, которые приложение Agent SDK добавляет во время сессии с помощью [`addPlugins`](https://code.claude.com/docs/ru/agent-sdk/typescript#load-more-plugin-folders-with-addplugins) | Не ограничивает `.mcp.json`, `claude mcp add` и серверы, предоставляемые через SDK. Используйте вместе с [`allowedMcpServers`](https://code.claude.com/docs/ru/managed-mcp) |

186| `disableCommandPluginSources` | Блокирует плагины с источником `command` от установки, обновления или загрузки. Источник `command` — это тот, чей каталог плагина создается путем запуска команды на машине. Когда не установлено, принимает значение `allowManagedHooksOnly` | Не влияет на другие типы источников |186| `disableCommandPluginSources` | Блокирует плагины с источником `command` от установки, обновления или загрузки. Источник `command` — это тот, чей каталог плагина создается путем запуска команды на машине. Когда не установлено, принимает значение `allowManagedHooksOnly` | Не влияет на другие типы источников |

187| `allowManagedHooksOnly` | Ограничивает, какие hooks работают. См. [`allowManagedHooksOnly`](https://code.claude.com/docs/ru/settings-reference#allowmanagedhooksonly) | Не доверяет hooks из плагинов, которые пользователи включают сами |187| `allowManagedHooksOnly` | Ограничивает, какие hooks работают. См. [`allowManagedHooksOnly`](https://code.claude.com/docs/ru/settings-reference#allowmanagedhooksonly) | Не доверяет hooks из плагинов, которые пользователи включают сами |

188| `strictPluginOnlyCustomization` | Блокирует скиллы, агентов, хуки и MCP-серверы, которые не поступают из плагина, управляемых настроек или встроенных возможностей Claude Code. Также прекращает загрузку [плагинов из каталога скиллов](#keep-skills-directory-plugins-loading). Установите `true`, чтобы охватить все четыре типа, или массив из значений `skills`, `agents`, `hooks` и `mcp`, например `["skills", "hooks"]`, чтобы охватить некоторые из них | Не ограничивает, какие плагины устанавливают пользователи. Используйте вместе с `strictKnownMarketplaces` |188| `strictPluginOnlyCustomization` | Блокирует скиллы, агентов, хуки и MCP-серверы, которые не поступают из плагина, управляемых настроек или встроенных возможностей Claude Code. Также прекращает загрузку [плагинов из каталога скиллов](#keep-skills-directory-plugins-loading). Установите `true`, чтобы охватить все четыре типа, или массив из значений `skills`, `agents`, `hooks` и `mcp`, например `["skills", "hooks"]`, чтобы охватить некоторые из них | Не ограничивает, какие плагины устанавливают пользователи. Используйте вместе с `strictKnownMarketplaces` |

189| `pluginSuggestionMarketplaces` | Marketplaces, чьи плагины могут появляться как предложения установки. См. [Рекомендовать плагины](#recommend-plugins) | Не влияет на встроенные советы |189| `pluginSuggestionMarketplaces` | Маркетплейсы, плагины которых могут появляться в терминале как предложения для установки. См. [Рекомендация плагинов](#recommend-plugins) | Не влияет на встроенные подсказки |

190| `pluginTrustMessage` | Добавляет ваш текст к предупреждению доверия, которое `/plugin` показывает перед установкой плагина | Не изменяет собственный текст предупреждения |190| `pluginTrustMessage` | Добавляет ваш текст к предупреждению доверия, которое `/plugin` показывает перед установкой плагина | Не изменяет собственный текст предупреждения |

191| `allowedChannelPlugins` | Заменяет список плагинов по умолчанию, разрешенных для отправки сообщений канала. Требует `channelsEnabled: true` | См. [Ограничить, какие плагины канала могут работать](https://code.claude.com/docs/ru/channels.md#restrict-which-channel-plugins-can-run) |191| `allowedChannelPlugins` | Заменяет список плагинов по умолчанию, разрешенных для отправки сообщений канала. Требует `channelsEnabled: true` | См. [Ограничить, какие плагины канала могут работать](https://code.claude.com/docs/ru/channels.md#restrict-which-channel-plugins-can-run) |

192| [`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1`](https://code.claude.com/docs/ru/env-vars) | Останавливает интерактивные сессии терминала от автоматической регистрации официального marketplace | Не удаляет marketplace, уже зарегистрированный. Allowlist и blocklist управляют той же автоматической регистрацией без него. Машина, которая запустилась один раз с установленным, не возобновляет автоматическую регистрацию после того, как вы его отключите |192| [`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1`](https://code.claude.com/docs/ru/env-vars) | Останавливает интерактивные сессии терминала от автоматической регистрации официального marketplace | Не удаляет marketplace, уже зарегистрированный. Allowlist и blocklist управляют той же автоматической регистрацией без него. Машина, которая запустилась один раз с установленным, не возобновляет автоматическую регистрацию после того, как вы его отключите |


361 361 

362Предложения из marketplace появляются только, когда он зарегистрирован на машине пользователя, вы перечисляете его имя в `pluginSuggestionMarketplaces` в управляемых параметрах, и вы объявляете его источник в той же политике. Объявите источник либо как запись `extraKnownMarketplaces` marketplace, либо как запись allowlist. Официальный marketplace требует только имя. См. [Включить предложения в управляемых параметрах](https://code.claude.com/docs/ru/plugins/relevance.md#enable-suggestions-in-managed-settings).362Предложения из marketplace появляются только, когда он зарегистрирован на машине пользователя, вы перечисляете его имя в `pluginSuggestionMarketplaces` в управляемых параметрах, и вы объявляете его источник в той же политике. Объявите источник либо как запись `extraKnownMarketplaces` marketplace, либо как запись allowlist. Официальный marketplace требует только имя. См. [Включить предложения в управляемых параметрах](https://code.claude.com/docs/ru/plugins/relevance.md#enable-suggestions-in-managed-settings).

363 363 

364> [!NOTE]

365>

366> В диалоге облачной сессии Claude может предлагать плагины независимо от того, задали ли вы `pluginSuggestionMarketplaces`. Чтобы отключить эти предложения, см. [Отключение предложений плагинов](https://code.claude.com/docs/ru/claude-code-on-the-web.md#turn-off-plugin-suggestions).

367 

364## Audit and review368## Audit and review

365 369 

366События OpenTelemetry и Analytics API говорят вам, что ваш флот устанавливает и запускает.370События OpenTelemetry и Analytics API говорят вам, что ваш флот устанавливает и запускает.

Details

8 8 

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

10 10 

11Оператор marketplace пишет записи `relevance`. Затем администратор разрешает marketplace в управляемых параметрах. Пользователи не видят предложений из marketplace, пока он не будет разрешен.11Оператор маркетплейса пишет записи `relevance`. Затем администратор добавляет маркетплейс в список разрешённых в управляемых настройках. В терминале пользователи не видят предложений из маркетплейса, пока он не будет добавлен в список разрешённых.

12 12 

13> [!NOTE]13> [!NOTE]

14>14>

15> Эти случаи рассматриваются на других страницах:15> Эти случаи рассматриваются на других страницах:

16>16>

17> * **Вы хотите установить plugins**: см. [Установка и управление plugins](https://code.claude.com/docs/ru/plugins/install.md)17> * **Вы хотите установить плагины**: см. [Установка и управление плагинами](https://code.claude.com/docs/ru/plugins/install.md)

18> * **Вы хотите отключить предложения**: см. [Понимание того, как работает relevance plugin](#understand-how-plugin-relevance-works)18> * **Вы хотите отключить предложения**: см. [Понимание того, как работает relevance плагинов](#understand-how-plugin-relevance-works), а для предложений, которые Claude делает в диалоге облачной сессии, — [Отключение предложений плагинов](https://code.claude.com/docs/ru/claude-code-on-the-web.md#turn-off-plugin-suggestions)

19 19 

20Начните с разделов для вашей роли:20Начните с разделов для вашей роли:

21 21 


158 158 

159## Включение предложений в управляемых параметрах159## Включение предложений в управляемых параметрах

160 160 

161Пользователи не видят предложений из marketplace, пока администратор не разрешит его в [управляемых параметрах](https://code.claude.com/docs/ru/plugins/org.md), даже когда его `marketplace.json` объявляет `relevance`.161В терминале пользователи не видят предложений из маркетплейса, пока администратор не добавит его в список разрешённых в [управляемых настройках](https://code.claude.com/docs/ru/plugins/org.md), даже когда его `marketplace.json` объявляет `relevance`.

162 162 

163Чтобы разрешить marketplace, отредактируйте ваши управляемые параметры следующим образом:163Чтобы разрешить marketplace, отредактируйте ваши управляемые параметры следующим образом:

164 164 

sandboxing.md +1 −1

Details

891 891 

892### Папка с именем `objects` или `refs` исчезает после выполнения команды892### Папка с именем `objects` или `refs` исчезает после выполнения команды

893 893 

894Папка `objects` или `refs` верхнего уровня, появившаяся во время сессии, может быть [удалена после завершения изолированной команды](#when-the-sandbox-deletes-head-objects-or-refs). Неважно, кто её создал: команда, Claude или вы. Чтобы сохранить папку, оставьте в ней что-нибудь. Если файл или символическая ссылка `HEAD` находились на верхнем уровне во время сессии, переместите их в другое место, затем перезапустите все сессии Claude Code, открытые там.894Папка `objects` или `refs` верхнего уровня, появившаяся во время сессии, может быть [удалена после завершения изолированной команды](#when-the-sandbox-deletes-head-objects-or-refs). Неважно, кто её создал: команда, Claude или вы. Чтобы сохранить папку, оставьте в ней что-нибудь. Если файл или символическая ссылка `HEAD` находились на верхнем уровне во время сессии, переместите их в другое место, затем перезапустите все сессии Claude Code, открытые в вашем рабочем каталоге.

895 895 

896До версии 2.1.307 папка удалялась, даже если в ней что-то было, а `HEAD` отсутствовал. Если у вас более ранняя версия, [обновите Claude Code](https://code.claude.com/docs/ru/setup.md#update-claude-code).896До версии 2.1.307 папка удалялась, даже если в ней что-то было, а `HEAD` отсутствовал. Если у вас более ранняя версия, [обновите Claude Code](https://code.claude.com/docs/ru/setup.md#update-claude-code).

897 897 

security.md +1 −1

Details

57 57 

58### Дополнительные защиты58### Дополнительные защиты

59 59 

60* **Одобрение сетевых запросов**: В режиме Manual инструменты, которые делают сетевые запросы, требуют одобрения пользователя по умолчанию60* **Одобрение сетевых запросов**: В режиме Manual большинство инструментов, которые делают сетевые запросы, требуют одобрения пользователя по умолчанию

61* **Сводки веб-страниц**: Для большинства запросов WebFetch выполняет отдельный вызов модели по содержимому страницы, и Claude получает ответ этого вызова вместо исходной страницы. См. [Поведение инструмента WebFetch](https://code.claude.com/docs/ru/tools-reference.md#webfetch-tool-behavior)61* **Сводки веб-страниц**: Для большинства запросов WebFetch выполняет отдельный вызов модели по содержимому страницы, и Claude получает ответ этого вызова вместо исходной страницы. См. [Поведение инструмента WebFetch](https://code.claude.com/docs/ru/tools-reference.md#webfetch-tool-behavior)

62* **Проверка доверия**: В интерактивной сессии Claude Code показывает диалог доверия к рабочему пространству, когда вы запускаете его в папке, которой вы ещё не доверяли. Для серверов из файла `.mcp.json` проекта есть собственный запрос подтверждения, а в разделе [Область действия проекта](https://code.claude.com/docs/ru/mcp.md#project-scope) перечислены сессии, в которых он пропускается62* **Проверка доверия**: В интерактивной сессии Claude Code показывает диалог доверия к рабочему пространству, когда вы запускаете его в папке, которой вы ещё не доверяли. Для серверов из файла `.mcp.json` проекта есть собственный запрос подтверждения, а в разделе [Область действия проекта](https://code.claude.com/docs/ru/mcp.md#project-scope) перечислены сессии, в которых он пропускается

63 * Примечание: Сессия с `-p` не показывает ни один из этих запросов. В разделе [Что запускается до того, как вы доверите папке](https://code.claude.com/docs/ru/permissions.md#what-runs-before-you-trust-a-folder) перечислено, что файлы репозитория могут запустить в этом случае63 * Примечание: Сессия с `-p` не показывает ни один из этих запросов. В разделе [Что запускается до того, как вы доверите папке](https://code.claude.com/docs/ru/permissions.md#what-runs-before-you-trust-a-folder) перечислено, что файлы репозитория могут запустить в этом случае

Details

680* **Отслеживаемые изменения сбрасываются, неотслеживаемые файлы сохраняются**: при `--capacity 1` каждая сессия начинается с жесткого сброса, который стирает отслеживаемые изменения предыдущей сессии, но runner никогда не запускает `git clean`, поэтому неотслеживаемые файлы из более ранних сессий заблокированного владельца остаются в дереве.680* **Отслеживаемые изменения сбрасываются, неотслеживаемые файлы сохраняются**: при `--capacity 1` каждая сессия начинается с жесткого сброса, который стирает отслеживаемые изменения предыдущей сессии, но runner никогда не запускает `git clean`, поэтому неотслеживаемые файлы из более ранних сессий заблокированного владельца остаются в дереве.

681* **Каталоги для каждого сеанса также сохраняются**: рядом с checkout runner создает записи для каждого сеанса под `<base-dir>/_sessions/` для каждого сеанса, который он запускает. Локальный каталог конфигурации Claude сеанса содержит локальную копию транскрипта беседы. Рядом с ним находятся загруженные файлы сеанса, когда сеанс их имеет. Каталог сеанса находится там же: он содержит любые worktrees для каждого сеанса и `checkout` hook checkouts во время работы сеанса, и он сохраняет все остальное, что Claude написал в нем.681* **Каталоги для каждого сеанса также сохраняются**: рядом с checkout runner создает записи для каждого сеанса под `<base-dir>/_sessions/` для каждого сеанса, который он запускает. Локальный каталог конфигурации Claude сеанса содержит локальную копию транскрипта беседы. Рядом с ним находятся загруженные файлы сеанса, когда сеанс их имеет. Каталог сеанса находится там же: он содержит любые worktrees для каждого сеанса и `checkout` hook checkouts во время работы сеанса, и он сохраняет все остальное, что Claude написал в нем.

682 682 

683 По умолчанию runner оставляет их на месте, когда сеанс заканчивается, поэтому на диске, который пережил процесс runner, они накапливаются. Каждый сеанс запускается как собственный пользователь runner, поэтому любой более поздний сеанс, который обслуживает этот диск, может их прочитать. Если вы сохраняете постоянный `--base-dir`, размер тома для этого роста. То же самое применяется к любой установке, которая перезапускает runner на той же файловой системе, включая [Docker Compose рецепт](#docker-compose).683 По умолчанию runner оставляет их на месте, когда сеанс заканчивается, поэтому на диске, который пережил процесс runner, они накапливаются. Каждый сеанс запускается как собственный пользователь runner, поэтому любой более поздний сеанс, который использует этот диск, может их прочитать. Если вы сохраняете постоянный `--base-dir`, рассчитайте размер тома с учётом этого роста. То же самое применяется к любой установке, которая перезапускает runner на той же файловой системе, включая [Docker Compose рецепт](#docker-compose).

684* **С `--remove-session-state`, каталоги для каждого сеанса не сохраняются**: запустите runner с [`--remove-session-state`](https://code.claude.com/docs/ru/self-hosted-environments-reference#runner-cli-flags), чтобы он удалял каталоги для каждого сеанса по мере завершения сеанса. Удаление является наилучшей попыткой: каталоги остаются, когда runner убивается до того, как его очистка запустится. Канонический клон и файлы, которые сеанс написал в другом месте на хосте, такие как временный каталог, остаются независимо.684* **С `--remove-session-state`, каталоги для каждого сеанса не сохраняются**: запустите runner с [`--remove-session-state`](https://code.claude.com/docs/ru/self-hosted-environments-reference#runner-cli-flags), чтобы он удалял каталоги для каждого сеанса по мере завершения сеанса. Удаление является наилучшей попыткой: каталоги остаются, когда runner убивается до того, как его очистка запустится. Канонический клон и файлы, которые сеанс написал в другом месте на хосте, такие как временный каталог, остаются независимо.

685* **С git proxy сброс превращается в checkout**: с [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) runner очищает `.git/` клона перед каждой сессией. Он сохраняет хранилище объектов и состояние shallow, а индекс удаляет. Без индекса каждая сессия начинается с полного checkout рабочего дерева вместо почти мгновенного сброса. Runner по-прежнему выполняет fetch в существующий клон, а не клонирует репозиторий заново. Pre-warm подмодулей при использовании прокси не поддерживается.685* **С git proxy сброс превращается в checkout**: с [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) runner очищает `.git/` клона перед каждой сессией. Он сохраняет хранилище объектов и состояние shallow, а индекс удаляет. Без индекса каждая сессия начинается с полного checkout рабочего дерева вместо почти мгновенного сброса. Runner по-прежнему выполняет fetch в существующий клон, а не клонирует репозиторий заново. Pre-warm подмодулей при использовании прокси не поддерживается.

686* **С git proxy pre-warm в формате `reftable` теряет свои refs**: очищая `.git/` перед каждой сессией, runner сохраняет `.git/refs/` и удаляет каталог `.git/reftable/`. Клон, подготовленный в формате refs `reftable` в git, при этом теряет свои refs, поэтому выполняйте pre-warm клона в формате refs `files`.686* **С git proxy pre-warm в формате `reftable` теряет свои refs**: очищая `.git/` перед каждой сессией, runner сохраняет `.git/refs/` и удаляет каталог `.git/reftable/`. Клон, подготовленный в формате refs `reftable` в git, при этом теряет свои refs, поэтому выполняйте pre-warm клона в формате refs `files`.

Details

117 117 

118| Переменная окружения | По умолчанию | Описание |118| Переменная окружения | По умолчанию | Описание |

119| :- | :- | :- |119| :- | :- | :- |

120| `SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS` | `30000` | Как долго runner считает сеанс занятым после завершения фоновой задачи, пока не начнется следующий ход, который читает результат. Строки [`--drain-wait-sec` и `--release-idle-session-min`](#runner-cli-flags) описывают, где применяется удержание при осушении и отпуске при простое, и [Runner lifecycle](https://code.claude.com/docs/ru/self-hosted-environments#runner-lifecycle) описывает, где оно применяется при выходе на пенсию `--retire-at`. `0` или неиспользуемое значение возвращается к значению по умолчанию, поэтому удержание не может быть отключено. Требует Claude Code v2.1.228 или позже. |120| `SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS` | `30000` | Как долго runner считает сеанс занятым после завершения фоновой задачи, пока не начнется следующий ход, который читает результат. Строки [`--drain-wait-sec` и `--release-idle-session-min`](#runner-cli-flags) описывают, где применяется удержание при осушении и отпуске при простое, и [Runner lifecycle](https://code.claude.com/docs/ru/self-hosted-environments#runner-lifecycle) описывает, где оно применяется при выходе на пенсию `--retire-at`. `0` или непригодное значение возвращается к значению по умолчанию, поэтому удержание не может быть отключено. Требует Claude Code v2.1.228 или позже. |

121| `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` | `~/.claude` | Каталог, захваченный в снимок запуска runner и посеянный в `CLAUDE_CONFIG_DIR` каждого сеанса; изменения на диске применяются после перезагрузки runner. Установка переменной также перемещает, где runner читает `.claude.json` для [MCP seeding](https://code.claude.com/docs/ru/self-hosted-environments-configuration.md#mcp-servers), поэтому установка её, включая её собственное значение по умолчанию, перемещает этот поиск; укажите на пустой каталог для полного отключения посева. |121| `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` | `~/.claude` | Каталог, захваченный в снимок запуска runner и посеянный в `CLAUDE_CONFIG_DIR` каждого сеанса; изменения на диске применяются после перезагрузки runner. Установка переменной также перемещает, где runner читает `.claude.json` для [MCP seeding](https://code.claude.com/docs/ru/self-hosted-environments-configuration.md#mcp-servers), поэтому установка её, включая её собственное значение по умолчанию, перемещает этот поиск; укажите на пустой каталог для полного отключения посева. |

122| `SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS` | `900000` | Как долго runner ждет после того, как сеанс достигает своего лимита `--kill-session-after-min`, чтобы текущий ход завершился или отпуск завершился, перед завершением сеанса |122| `SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS` | `900000` | Как долго runner ждет после того, как сеанс достигает своего лимита `--kill-session-after-min`, чтобы текущий ход завершился или отпуск завершился, перед завершением сеанса |

123| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | Ограничение на то, как долго runner считает сеанс занятым для осушения `--drain-wait-sec` после завершения хода, пока процесс сеанса сообщает об окончании хода в Anthropic. `0` или неиспользуемое значение возвращается к значению по умолчанию, поэтому удержание не может быть отключено. Требует Claude Code v2.1.275 или позже. |123| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | Ограничение на то, как долго runner считает сеанс занятым для осушения `--drain-wait-sec` после завершения хода, пока процесс сеанса сообщает об окончании хода в Anthropic. `0` или непригодное значение возвращается к значению по умолчанию, поэтому удержание не может быть отключено. Требует Claude Code v2.1.275 или позже. |

124| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | Как долго runner ждет, пока ОС доставит `SIGKILL` дочернему процессу, застрявшему в неперерываемом I/O, перед выходом самого себя. Минимум `--post-session-hook-timeout-sec` плюс 15 секунд, и 30 больше, когда установлен `--push-outcome-on-release`, поэтому эффективный минимум составляет 75 секунд при значениях по умолчанию. |124| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | Как долго runner ждет, пока ОС доставит `SIGKILL` дочернему процессу, застрявшему в неперерываемом I/O, перед выходом самого себя. Минимум `--post-session-hook-timeout-sec` плюс 15 секунд, и 30 больше, когда установлен `--push-outcome-on-release`, поэтому эффективный минимум составляет 75 секунд при значениях по умолчанию. |

125| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | Глубина выборки Git для свежих клонов. Установите положительное целое число или `full` или `0` для полной выборки. Для клона, который уже находится в рабочем пространстве, см. [Повторное использование заранее подготовленного checkout](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout). |125| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | Глубина выборки Git для свежих клонов. Установите положительное целое число или `full` или `0` для полной выборки. Для клона, который уже находится в рабочем пространстве, см. [Повторное использование заранее подготовленного checkout](https://code.claude.com/docs/ru/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout). |

126| `CLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS` | `600000` | Как долго в миллисекундах, в рамках одной попытки, выборка git может ждать первых данных, пока собственные показатели прогресса сервера git продолжают расти, например когда сервер подготавливает pack для большого репозитория. `0` или `off` отключает ожидание: тогда такая выборка прерывается через две минуты без данных. Любое другое целое число ограничивается диапазоном от `120000` до `1800000`, то есть от 2 до 30 минут. Требует Claude Code v2.1.295 или позже. |126| `CLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS` | `600000` | Как долго в миллисекундах, в рамках одной попытки, выборка git может ждать первых данных, пока собственные показатели прогресса сервера git продолжают расти, например когда сервер подготавливает pack для большого репозитория. `0` или `off` отключает ожидание: тогда такая выборка прерывается через две минуты без данных. Любое другое целое число ограничивается диапазоном от `120000` до `1800000`, то есть от 2 до 30 минут. Требует Claude Code v2.1.295 или позже. |

127| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | unset | Когда `1`, пропустите проверку наличия `.git` после запуска hook `checkout`. Установите это, когда ваш hook материализует источник, не являющийся git. |127| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | unset | Когда `1`, пропустите проверку наличия `.git` после запуска hook `checkout`. Установите это, когда ваш hook материализует источник, не являющийся git. |

128| `FORCE_AUTOUPDATE_PLUGINS` | unset | Когда `1`, позвольте маркетплейсам плагинов автоматически обновляться, несмотря на то, что бинарный файл закреплен |128| `FORCE_AUTOUPDATE_PLUGINS` | unset | Когда `1`, позвольте маркетплейсам плагинов автоматически обновляться, несмотря на то, что бинарный файл закреплен |

129| `CLAUDE_CODE_DISABLE_ARTIFACT` | unset | Когда `1`, отключите инструмент Artifact в сеансах независимо от параметра администратора организации и отпустите требование выхода `*.frame.claudeusercontent.com` |129| `CLAUDE_CODE_DISABLE_ARTIFACT` | unset | Когда `1`, отключите инструмент Artifact в сеансах независимо от параметра администратора организации и удалите требование к исходящему трафику на `*.frame.claudeusercontent.com` |

130 130 

131## Телеметрия131## Телеметрия

132 132 

Details

170 170 

171**Последующие запуски с кэшированными параметрами:**171**Последующие запуски с кэшированными параметрами:**

172 172 

173* Кэшированные параметры применяются немедленно при запуске, за исключением кэшированных значений `modelPricing` и `managedMcpServers` и переменных окружения, которые Claude Code удерживает до подтверждения полезной нагрузки сервером173* Кэшированные настройки применяются сразу при запуске, за исключением кэшированных значений `modelPricing` и `managedMcpServers`; переменных окружения, которые Claude Code удерживает до подтверждения полезной нагрузки сервером; удаления, перемещения или отключения [встроенного стража](https://code.claude.com/docs/ru/plugins/mods/admin.md#know-what-happens-by-default) кэшированным списком плагинов; а также, на машине, где управляемый на эндпоинте источник перечисляет или включает собственные плагины, [статуса организации](https://code.claude.com/docs/ru/plugins/mods/admin.md#install-your-organizations-mods) для плагина, который включает только кэшированный список

174* Кэшированный [`modelPricing`](https://code.claude.com/docs/ru/settings-reference#modelpricing) не применяется до тех пор, пока выборка сеанса не подтвердит полезную нагрузку. До этого момента цифры затрат, которые разработчики видят в `/usage` и в строке состояния, находятся по цене списка174* Кэшированный [`modelPricing`](https://code.claude.com/docs/ru/settings-reference#modelpricing) не применяется до тех пор, пока выборка сеанса не подтвердит полезную нагрузку. До этого момента цифры затрат, которые разработчики видят в `/usage` и в строке состояния, находятся по цене списка

175* Кэшированный блок [`managedMcpServers`](https://code.claude.com/docs/ru/settings-reference#managedmcpservers) не применяется до тех пор, пока выборка сеанса не подтвердит полезную нагрузку. Claude Code ждет до 30 секунд для этой выборки перед подключением серверов MCP. Если выборка не удается или истекает время ожидания, сеанс начинается без серверов организации, `/status` это указывает, и они подключаются после подтверждения более поздней выборкой. Полное поведение см. в разделе [Когда предоставленные серверы подключаются](https://code.claude.com/docs/ru/managed-mcp.md#when-provided-servers-connect), включая первый запуск. Требуется Claude Code v2.1.259 или более поздняя версия175* Кэшированный блок [`managedMcpServers`](https://code.claude.com/docs/ru/settings-reference#managedmcpservers) не применяется до тех пор, пока выборка сеанса не подтвердит полезную нагрузку. Claude Code ждет до 30 секунд для этой выборки перед подключением серверов MCP. Если выборка не удается или истекает время ожидания, сеанс начинается без серверов организации, `/status` это указывает, и они подключаются после подтверждения более поздней выборкой. Полное поведение см. в разделе [Когда предоставленные серверы подключаются](https://code.claude.com/docs/ru/managed-mcp.md#when-provided-servers-connect), включая первый запуск. Требуется Claude Code v2.1.259 или более поздняя версия

176* Кэшированное значение [`prependPlugins`](https://code.claude.com/docs/ru/settings-reference#prependplugins), [`appendPlugins`](https://code.claude.com/docs/ru/settings-reference#appendplugins) или [`enabledPlugins`](https://code.claude.com/docs/ru/settings-reference#enabledplugins) не может удалить встроенный страж, изменить его позицию или отключить его, пока выборка сессии не подтвердит полезную нагрузку

177* На машине, где [управляемый на эндпоинте источник](https://code.claude.com/docs/ru/managed-settings.md#choose-a-delivery-mechanism) перечисляет или включает собственные плагины, плагин, который включает только кэшированный список, считается [плагином пользователя](https://code.claude.com/docs/ru/plugins/mods/admin.md#install-your-organizations-mods), а не вашей организации, пока выборка не подтвердит полезную нагрузку

176* Claude Code выполняет выборку свежих параметров в фоновом режиме178* Claude Code выполняет выборку свежих параметров в фоновом режиме

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

178* До успешной выборки удерживаемые значения при запуске остаются удерживаемыми180* До успешной выборки удерживаемые значения при запуске остаются удерживаемыми

sessions.md +1 −1

Details

249 249 

250По умолчанию Claude Code хранит стенограммы как JSONL в `~/.claude/projects/<project>/<session-id>.jsonl`, где `<project>` — это путь вашего рабочего каталога с заменой не буквенно-цифровых символов на `-`. Для рабочего каталога, преобразованное имя которого превышает 200 символов, Claude Code усекает имя до 200 символов и добавляет хеш полного пути, чтобы имя каталога оставалось в пределах ограничений файловой системы.250По умолчанию Claude Code хранит стенограммы как JSONL в `~/.claude/projects/<project>/<session-id>.jsonl`, где `<project>` — это путь вашего рабочего каталога с заменой не буквенно-цифровых символов на `-`. Для рабочего каталога, преобразованное имя которого превышает 200 символов, Claude Code усекает имя до 200 символов и добавляет хеш полного пути, чтобы имя каталога оставалось в пределах ограничений файловой системы.

251 251 

252Каждая строка — это объект JSON для сообщения, использования инструмента или записи метаданных. Формат записи является внутренним для Claude Code и изменяется между версиями, поэтому скрипты, которые анализируют эти файлы напрямую, могут сломаться при любом выпуске. Чтобы работать с данными сеанса, используйте `/export` или [интерфейсы скриптов](#access-conversations-from-scripts) вместо этого.252Каждая строка — это объект JSON: сообщение, использование инструмента или его результат, запись о запросе, который Claude Code отправил модели, или запись метаданных. Формат записи является внутренним для Claude Code и изменяется между версиями, поэтому скрипты, которые анализируют эти файлы напрямую, могут сломаться при любом выпуске. Чтобы работать с данными сессии, используйте `/export` или [интерфейсы скриптов](#access-conversations-from-scripts) вместо этого.

253 253 

254Местоположение, сохранение и поведение записи настраиваются:254Местоположение, сохранение и поведение записи настраиваются:

255 255 

Details

2037* **Type**: array of strings, each a service name; a single trailing `*` matches a prefix, and `"*"` alone matches every service2037* **Type**: array of strings, each a service name; a single trailing `*` matches a prefix, and `"*"` alone matches every service

2038* **Default**: не установлено2038* **Default**: не установлено

2039 2039 

2040Это разрешает все службы с префиксом `com.apple.coresimulator.`:2040Эта конфигурация разрешает все службы с префиксом `com.apple.CoreSimulator.`:

2041 2041 

2042```json settings.json theme={null}2042```json settings.json theme={null}

2043{2043{

2044 "sandbox": {2044 "sandbox": {

2045 "network": {2045 "network": {

2046 "allowMachLookup": ["com.apple.coresimulator.*"]2046 "allowMachLookup": ["com.apple.CoreSimulator.*"]

2047 }2047 }

2048 }2048 }

2049}2049}


4729* **Type**: array of strings, пути каталогов относительно корня репозитория4729* **Type**: array of strings, пути каталогов относительно корня репозитория

4730* **Default**: не установлено, поэтому каждый worktree извлекает всё дерево4730* **Default**: не установлено, поэтому каждый worktree извлекает всё дерево

4731 4731 

4732Этот пример извлекает только `packages/my-app` и `shared/utils`, плюс файлы на уровне корня, в каждом worktree:4732Включите `.claude` в список, чтобы каждый worktree также содержал `.claude/settings.json` и `.claude/rules/` репозитория. Этот пример извлекает только `.claude`, `packages/my-app` и `shared/utils`, плюс файлы на уровне корня, в каждом worktree:

4733 4733 

4734```json settings.json theme={null}4734```json settings.json theme={null}

4735{4735{

4736 "worktree": {4736 "worktree": {

4737 "sparsePaths": ["packages/my-app", "shared/utils"]4737 "sparsePaths": [".claude", "packages/my-app", "shared/utils"]

4738 }4738 }

4739}4739}

4740```4740```


5503 5503 

5504С пропущенной проверкой WebFetch пытается использовать любой URL без консультации со списком блокировки, поэтому объедините его с [правилами разрешений `WebFetch`](https://code.claude.com/docs/ru/permissions#webfetch), если вам нужно ограничить, какие домены может достичь Claude.5504С пропущенной проверкой WebFetch пытается использовать любой URL без консультации со списком блокировки, поэтому объедините его с [правилами разрешений `WebFetch`](https://code.claude.com/docs/ru/permissions#webfetch), если вам нужно ограничить, какие домены может достичь Claude.

5505 5505 

5506## Корпоративные и управляемые параметры5506## Корпоративные и управляемые настройки

5507 5507 

5508Ключи, которые организация использует для вычисления, обновления и объединения управляемых параметров. См. [Настройка управляемых параметров](https://code.claude.com/docs/ru/admin-setup.md).5508Ключи, которые организация использует для вычисления, обновления и объединения управляемых настроек. См. [Настройка управляемых настроек](https://code.claude.com/docs/ru/admin-setup.md).

5509 5509 

5510### `disableSideloadFlags`5510### `disableSideloadFlags`

5511 5511 

5512Отклонять флаги CLI `--plugin-dir`, `--plugin-url`, `--agents` и `--mcp-config` при запуске, которые пользователи могут передать для обхода [`strictKnownMarketplaces`](#strictknownmarketplaces) при одном запуске. Claude Code завершает работу с ошибкой, указывающей на отклоненные флаги. В [облачных сеансах](https://code.claude.com/docs/ru/claude-code-on-the-web.md) Claude Code вместо этого запускает сеанс и удаляет каждую доставленную сервером запись `--mcp-config`, кроме встроенных записей `type: "sdk"` и инструментов Slack сеанса [Claude Tag](https://code.claude.com/docs/ru/claude-tag.md). Требуется Claude Code v2.1.193 или позже.5512Отклонять при запуске флаги CLI `--plugin-dir`, `--plugin-url`, `--agents` и `--mcp-config`, с помощью которых пользователи иначе могли бы обойти [`strictKnownMarketplaces`](#strictknownmarketplaces) для одного запуска. Claude Code завершает работу с ошибкой, в которой перечислены отклонённые флаги. В [облачных сессиях](https://code.claude.com/docs/ru/claude-code-on-the-web.md) Claude Code вместо этого запускает сессию и отбрасывает все переданные сервером записи `--mcp-config`, кроме внутрипроцессных записей `type: "sdk"` и инструментов Slack в сессии [Claude Tag](https://code.claude.com/docs/ru/claude-tag.md). Требуется Claude Code v2.1.193 или новее.

5513 5513 

5514* **Область**: [`Managed`](#scopes)5514* **Область действия**: [`Managed`](#scopes)

5515* **Тип**: Boolean5515* **Тип**: Boolean

5516 * `true`: Claude Code отклоняет `--plugin-dir`, `--plugin-url`, `--agents` и `--mcp-config` при запуске и завершает работу с ошибкой, указывающей на них. В облачных сеансах вместо этого запускает сеанс и удаляет каждую доставленную сервером запись `--mcp-config`, кроме встроенных записей `type: "sdk"` и инструментов Slack сеанса Claude Tag5516 * `true`: Claude Code отклоняет `--plugin-dir`, `--plugin-url`, `--agents` и `--mcp-config` при запуске и завершает работу с ошибкой, в которой они перечислены. В облачных сессиях он вместо этого запускает сессию и отбрасывает все переданные сервером записи `--mcp-config`, кроме внутрипроцессных записей `type: "sdk"` и инструментов Slack в сессии Claude Tag

5517 * `false`: Claude Code принимает эти флаги5517 * `false`: Claude Code принимает эти флаги

5518* **По умолчанию**: `false`5518* **По умолчанию**: `false`

5519 5519 


5523}5523}

5524```5524```

5525 5525 

5526Claude Code по-прежнему принимает `--mcp-config`, чьи серверы являются встроенными записями `type: "sdk"`, поэтому Agent SDK и расширение VS Code продолжают работать. Пользователи по-прежнему могут добавлять серверы с помощью `claude mcp add` или файла `.mcp.json`; для управления отдельными серверами также установите [`allowedMcpServers`](https://code.claude.com/docs/ru/managed-mcp). Требуется Claude Code v2.1.193 или позже.5526Claude Code по-прежнему принимает `--mcp-config`, если все его серверы являются внутрипроцессными записями `type: "sdk"`, поэтому Agent SDK и расширение VS Code продолжают работать. Пользователи по-прежнему могут добавлять серверы с помощью `claude mcp add` или файла `.mcp.json`; для управления отдельными серверами также задайте [`allowedMcpServers`](https://code.claude.com/docs/ru/managed-mcp). Требуется Claude Code v2.1.193 или новее.

5527 

5528`disableSideloadFlags` также отклоняет папки плагинов из следующих источников:

5527 5529 

5528Та же проверка охватывает папки плагинов, названные в переменной окружения [`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/ru/env-vars#variables), что требует Claude Code v2.1.280 или позже. Когда переменная называет папку, Claude Code завершает работу с той же ошибкой, и ошибка говорит отменить установку переменной.5530* **Переменная окружения [`CLAUDE_CODE_PLUGIN_DIRS`](https://code.claude.com/docs/ru/env-vars#variables)**: если переменная указывает папку плагина, Claude Code завершает работу при запуске с ошибкой, в которой названа переменная и сказано, что её нужно удалить. Требуется Claude Code v2.1.280 или новее

5531* **Параметр Agent SDK [`addPlugins`](https://code.claude.com/docs/ru/agent-sdk/typescript#load-more-plugin-folders-with-addplugins)**: когда приложение передаёт папки плагинов в `reloadPlugins()` через `addPlugins`, этот вызов завершается ошибкой. Сессия продолжает работать с уже загруженными плагинами. Требуется Claude Code v2.1.301 или новее

5529 5532 

5530В облачных сеансах Claude Code также игнорирует обновления MCP, доставленные сервером в середине сеанса, путь позади конфигурации облачного сеанса и SDK `setMcpServers()` вызовов, которые достигают этих сеансов. Встроенные записи `type: "sdk"` и инструменты Slack сеанса Claude Tag остаются исключенными там же. До v2.1.268 как это удаление, так и удаление при запуске также удаляли инструменты Slack сеанса Claude Tag. До v2.1.239 доставленный сервером `--mcp-config` блокировал запуск облачного сеанса.5533В облачных сессиях Claude Code также игнорирует переданные сервером обновления MCP в ходе сессии — механизм, стоящий за конфигурацией облачных сессий и вызовами SDK `setMcpServers()`, которые доходят до этих сессий. Внутрипроцессные записи `type: "sdk"` и инструменты Slack в сессии Claude Tag здесь также остаются исключением. До v2.1.268 как это отбрасывание, так и отбрасывание при запуске также удаляли инструменты Slack в сессии Claude Tag. До v2.1.239 переданный сервером `--mcp-config` блокировал запуск облачной сессии.

5531 5534 

5532Приложение для рабочего стола управляет некоторыми плагинами самостоятельно, включая плагины, синхронизированные из claude.ai, и плагины, которые ваша организация развертывает через приложение. Если вы развертываете этот ключ на устройстве через MDM, политику уровня ОС или файл управляемых параметров, приложение для рабочего стола не передает эти плагины следующим сеансам на этом устройстве:5535Настольное приложение само управляет некоторыми плагинами, включая плагины, синхронизированные с claude.ai, и плагины, которые ваша организация развёртывает через приложение. Если вы развёртываете этот ключ на устройство через MDM, политику на уровне ОС или файл управляемых настроек, настольное приложение не передаёт эти плагины следующим сессиям на этом устройстве:

5533 5536 

5534* **[Сеансы Code на машине пользователя](https://code.claude.com/docs/ru/desktop.md#environment-configuration)**: они также запускаются без включенных навыков для учетной записи claude.ai пользователя. Плагины, которые Claude Code устанавливает из маркетплейсов в ваших управляемых параметрах, по-прежнему загружаются. В [Claude Desktop на 3P](https://claude.com/docs/third-party/claude-desktop/overview) серверы MCP из плагинов, которые вы развертываете в каталоге `org-plugins` устройства, остаются доступными, потому что приложение для рабочего стола подключается к ним самостоятельно. До Claude Desktop v1.37937.0 эти сеансы не запускались.5537* **[Сессии Code на компьютере пользователя](https://code.claude.com/docs/ru/desktop.md#environment-configuration)**: они также запускаются без скиллов, включённых для учётной записи пользователя на claude.ai. Плагины, которые Claude Code устанавливает из маркетплейсов, указанных в ваших управляемых настройках, по-прежнему загружаются. В [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview) MCP-серверы из плагинов, которые вы развёртываете в каталог `org-plugins` устройства, также остаются доступными, потому что настольное приложение подключается к ним само. До Claude Desktop v1.37937.0 эти сессии вместо этого завершались сбоем при запуске.

5535* **[Сеансы Cowork на машине пользователя](https://code.claude.com/docs/ru/managed-settings.md#where-and-when-a-policy-applies)**: навыки внутри этих плагинов и навыки, включенные для учетной записи claude.ai пользователя, остаются доступными. В [Claude Desktop на 3P](https://claude.com/docs/third-party/claude-desktop/overview) серверы MCP из плагинов, которые вы развертываете в каталоге `org-plugins` устройства, остаются доступными, потому что приложение для рабочего стола подключается к ним самостоятельно. До Claude Desktop v1.44121.0 эти сеансы не запускались.5538* **[Сессии Cowork на компьютере пользователя](https://code.claude.com/docs/ru/managed-settings.md#where-and-when-a-policy-applies)**: скиллы внутри этих плагинов и скиллы, включённые для учётной записи пользователя на claude.ai, остаются доступными. В [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview) MCP-серверы из плагинов, которые вы развёртываете в каталог `org-plugins` устройства, также остаются доступными, потому что настольное приложение подключается к ним само. До Claude Desktop v1.44121.0 эти сессии вместо этого завершались сбоем при запуске.

5536 5539 

5537### `forceRemoteSettingsRefresh`5540### `forceRemoteSettingsRefresh`

5538 5541 

5539Блокировать запуск CLI до тех пор, пока Claude Code не получит свежую выборку [управляемых параметров сервера](https://code.claude.com/docs/ru/server-managed-settings.md). Если выборка не удается, Claude Code завершает работу вместо продолжения с кэшированными или отсутствующими параметрами. Установите это, когда ваша среда не может принять даже краткое окно, в котором сеанс работает без своей управляемой политики.5542Блокировать запуск CLI, пока Claude Code заново не получит [настройки, управляемые сервером](https://code.claude.com/docs/ru/server-managed-settings.md). Если получить их не удаётся, Claude Code завершает работу, а не продолжает с кэшированными настройками или без них. Задайте этот ключ, если ваша среда не допускает даже короткого промежутка времени, когда сессия работает без управляемой политики.

5540 5543 

5541Когда ключ не установлен, Claude Code не блокирует запуск при выборке, хотя когда разработчик входит при запуске, он ждет до пяти секунд для выборки. Сеанс облачного шлюза всегда ждет и завершает работу, если шлюз недоступен.5544Если ключ не задан, Claude Code не блокирует запуск ради получения настроек, хотя, когда разработчик входит в систему при запуске, он ждёт получения настроек до пяти секунд. Сессия через облачный шлюз всегда ждёт и завершает работу, если шлюз недоступен.

5542 5545 

5543* **Область**: [`Managed`](#scopes). Claude Code соблюдает `true` из любого управляемого администратором источника, даже если это не источник с наивысшим приоритетом.5546* **Область действия**: [`Managed`](#scopes). Claude Code учитывает значение `true` из любого управляемого источника, контролируемого администратором, даже если это не источник с наивысшим приоритетом.

5544* **Тип**: Boolean5547* **Тип**: Boolean

5545 * `true`: Claude Code блокирует запуск до тех пор, пока он не получит свежую выборку управляемых параметров сервера, и завершает работу, если выборка не удается5548 * `true`: Claude Code блокирует запуск, пока заново не получит настройки, управляемые сервером, и завершает работу, если получить их не удалось

5546 * `false`: Claude Code не блокирует запуск при выборке, хотя при запуске входа он ждет до пяти секунд для выборки5549 * `false`: Claude Code не блокирует запуск ради получения настроек, хотя при запуске со входом в систему ждёт их получения до пяти секунд

5547* **По умолчанию**: `false`5550* **По умолчанию**: `false`

5548 5551 

5549```json managed-settings.json theme={null}5552```json managed-settings.json theme={null}


5552}5555}

5553```5556```

5554 5557 

5555Установите это в профиль MDM или файл управляемых параметров, чтобы обеспечить отказоустойчивый запуск до прибытия первого полезного груза сервера. Claude Code применяет проверку только в сеансах, которые получают управляемые параметры сервера, поэтому сеанс, который [их не получает](https://code.claude.com/docs/ru/server-managed-settings.md#platform-availability), запускается без ожидания. Подкоманды `claude auth` исключены, поэтому пользователи могут повторно аутентифицироваться, когда истекшие учетные данные являются причиной сбоя выборки. См. [Обеспечение отказоустойчивого запуска](https://code.claude.com/docs/ru/server-managed-settings.md#enforce-fail-closed-startup).5558Задайте его в профиле MDM или в файле управляемых настроек, чтобы обеспечить безопасный отказ при запуске (fail-closed) ещё до поступления первых данных от сервера. Claude Code выполняет эту проверку только в сессиях, которые получают настройки, управляемые сервером, поэтому сессия, которая [их не получает](https://code.claude.com/docs/ru/server-managed-settings.md#platform-availability), запускается без ожидания. Подкоманды `claude auth` освобождены от проверки, чтобы пользователи могли повторно пройти аутентификацию, если получение настроек не удаётся из-за истёкших учётных данных. См. [Обеспечение безопасного отказа при запуске](https://code.claude.com/docs/ru/server-managed-settings.md#enforce-fail-closed-startup).

5556 5559 

5557### `managedSourcesBehavior`5560### `managedSourcesBehavior`

5558 5561 

5559Выберите, применяет ли Claude Code только источник с наивысшим приоритетом [управляемый источник](https://code.claude.com/docs/ru/managed-settings.md#how-claude-code-combines-managed-sources), который доставляет ваша организация, или объединяет каждый источник администратора, который она доставляет. По умолчанию Claude Code берет источник с наивысшим приоритетом, который содержит [ключ политики](https://code.claude.com/docs/ru/managed-settings.md#how-claude-code-combines-managed-sources), и игнорирует остальное. Ключ политики — это любой ключ параметров, кроме этого и `wslInheritsWindowsSettings`. Таким образом, как только управляемые параметры сервера или политика MDM доставляют ключ политики, файл `managed-settings.json` вносит только [ключи, которые Claude Code читает из каждого источника администратора](https://code.claude.com/docs/ru/managed-settings.md#keys-read-from-every-admin-source). С `"merge"` каждый источник администратора, который вы доставляете, вносит свои ключи в одну объединенную политику. Требуется Claude Code v2.1.242 или позже.5562Выберите, применяет ли Claude Code только [управляемый источник](https://code.claude.com/docs/ru/managed-settings.md#how-claude-code-combines-managed-sources) с наивысшим приоритетом из тех, что предоставляет ваша организация, или объединяет все предоставляемые ею источники администратора. По умолчанию Claude Code берёт источник с наивысшим приоритетом, содержащий [ключ политики](https://code.claude.com/docs/ru/managed-settings.md#how-claude-code-combines-managed-sources), и игнорирует остальные. Ключ политики — это любой ключ настроек, кроме этого и `wslInheritsWindowsSettings`. При поведении по умолчанию, как только настройки, управляемые сервером, или политика MDM передают ключ политики, файл `managed-settings.json` вносит только [ключи, которые Claude Code читает из каждого источника администратора](https://code.claude.com/docs/ru/managed-settings.md#keys-read-from-every-admin-source). При значении `"merge"` каждый предоставляемый вами источник администратора вносит свои ключи в единую объединённую политику. Требуется Claude Code v2.1.242 или новее.

5560 5563 

5561Установите `"merge"` только там, где каждый источник [ранжированный](https://code.claude.com/docs/ru/managed-settings.md#how-claude-code-combines-managed-sources) ниже вашего наивысшего находится под контролем администратора, потому что Claude Code затем добавляет записи из более низкого источника, такие как правила `permissions.allow`, в политику.5564Задавайте `"merge"` только там, где каждый источник, [стоящий по рангу](https://code.claude.com/docs/ru/managed-settings.md#how-claude-code-combines-managed-sources) ниже вашего самого приоритетного, находится под контролем администратора, потому что Claude Code тогда добавляет в политику записи из нижестоящего источника, например правила `permissions.allow`.

5562 5565 

5563* **Область**: [`Managed`](#scopes). Claude Code читает этот ключ из источника с наивысшим приоритетом, который содержит либо этот ключ, либо ключ политики, и игнорирует этот ключ в каждом источнике, ранжированном ниже, поэтому более низкий источник не может выбрать себя для объединения с источником выше. Ни реестр Windows HKCU, ни [родительские параметры от хоста встраивания](https://code.claude.com/docs/ru/managed-settings.md#let-an-embedding-host-add-policy) не участвуют в объединении.5566* **Область действия**: [`Managed`](#scopes). Claude Code читает этот ключ из источника с наивысшим приоритетом, содержащего либо этот ключ, либо ключ политики, и игнорирует этот ключ во всех источниках ниже по рангу, поэтому нижестоящий источник не может сам включить объединение с вышестоящим источником. Ни реестр Windows HKCU, ни [родительские настройки от встраивающего хоста](https://code.claude.com/docs/ru/managed-settings.md#let-an-embedding-host-add-policy) в объединении не участвуют.

5564* **Тип**: string, один из:5567* **Тип**: string, одно из значений:

5565 * `"first-wins"`: источник с наивысшим приоритетом, который содержит ключ политики, поставляет политику, и более низкие источники вносят только [ключи, которые Claude Code читает из каждого источника администратора](https://code.claude.com/docs/ru/managed-settings.md#keys-read-from-every-admin-source)5568 * `"first-wins"`: политику предоставляет источник с наивысшим приоритетом, содержащий ключ политики, а нижестоящие источники вносят только [ключи, которые Claude Code читает из каждого источника администратора](https://code.claude.com/docs/ru/managed-settings.md#keys-read-from-every-admin-source)

5566 * `"merge"`: каждый источник администратора, который вы доставляете, вносит свои ключи, объединенные по правилам ниже5569 * `"merge"`: каждый предоставляемый вами источник администратора вносит свои ключи, которые объединяются по приведённым ниже правилам

5567* **По умолчанию**: `"first-wins"`5570* **По умолчанию**: `"first-wins"`

5568 5571 

5569Доставьте ключ в источник с наивысшим приоритетом, который вы развертываете. Машина, которая никогда не получает управляемые параметры сервера, нуждается в ключе в своем профиле MDM, потому что Claude Code читает ключ из источника с наивысшим приоритетом, который его содержит или ключ политики. Файл `managed-settings.json` является источником администратора с наименьшим рангом, поэтому `"merge"`, установленный там, не имеет источника ниже для объединения. В управляемых параметрах сервера ключ выглядит так:5572Передавайте этот ключ в источнике с наивысшим приоритетом из тех, что вы развёртываете. Компьютеру, который никогда не получает настройки, управляемые сервером, этот ключ нужен также в профиле MDM, потому что Claude Code читает ключ из источника с наивысшим приоритетом, содержащего его или ключ политики. Файл `managed-settings.json` — источник администратора с самым низким рангом, поэтому у заданного в нём `"merge"` нет нижестоящего источника для объединения. В настройках, управляемых сервером, ключ выглядит так:

5570 5573 

5571```json theme={null}5574```json theme={null}

5572{5575{


5574}5577}

5575```5578```

5576 5579 

5577Под `"merge"` Claude Code объединяет каждый ключ по его типу. Эта таблица дает правило для каждого типа. Строки списка ограничений, значения-взятые-целиком и только-наивысший-источник называют каждый ключ, который они охватывают, и другие строки дают примеры:5580При `"merge"` Claude Code объединяет каждый ключ в зависимости от его вида. В этой таблице приведено правило для каждого вида. В строках «Списки разрешённых значений для ограничений», «Значения, берущиеся целиком» и «Чтение только из источника с наивысшим приоритетом» перечислены все охватываемые ими ключи, а в остальных строках приведены примеры:

5578 5581 

5579| Тип ключа | Как Claude Code его объединяет | Ключи |5582| Вид ключа | Как Claude Code его объединяет | Ключи |

5580| :- | :- | :- |5583| :- | :- | :- |

5581| Списки | Объединяет записи из каждого источника | [`permissions.allow`](#permissions-allow), [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) и другие ключи списков |5584| Списки | Объединяет записи из всех источников | [`permissions.allow`](#permissions-allow), [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) и другие ключи-списки |

5582| Блокировки | Применяет самое строгое значение, которое устанавливает любой источник. Когда ни один источник не устанавливает строгое значение, применяет более мягкое значение только из источника с наивысшим приоритетом | [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly), [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) и другие логические или перечисляемые блокировки |5585| Блокировки | Применяет самое строгое значение, заданное любым источником. Если ни один источник не задаёт строгое значение, применяет менее строгое значение только из самого приоритетного источника | [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly), [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) и другие логические или перечислимые блокировки |

5583| Списки ограничений | Берет список целиком из источника с наивысшим приоритетом, который его устанавливает, без добавления записей из более низких источников. Когда источник с наивысшим приоритетом его не устанавливает, берет его целиком из следующего источника вниз | [`availableModels`](#availablemodels), [`allowedMcpServers`](#allowedmcpservers), [`allowedProviders`](#allowedproviders), [`strictKnownMarketplaces`](#strictknownmarketplaces), [`allowedChannelPlugins`](#allowedchannelplugins) и цепь [`fallbackModel`](#fallbackmodel) |5586| Списки разрешённых значений для ограничений | Берёт список целиком из самого приоритетного источника, который его задаёт, не добавляя записи из нижестоящих источников. Если самый приоритетный источник его не задаёт, берёт его целиком из следующего источника ниже | [`availableModels`](#availablemodels), [`allowedMcpServers`](#allowedmcpservers), [`allowedProviders`](#allowedproviders), [`strictKnownMarketplaces`](#strictknownmarketplaces), [`allowedChannelPlugins`](#allowedchannelplugins) и цепочка [`fallbackModel`](#fallbackmodel) |

5584| Значения, взятые целиком | Берет значение целиком из источника с наивысшим приоритетом, который его устанавливает, без объединения записей или полей из более низких источников. Когда источник с наивысшим приоритетом его не устанавливает, берет его целиком из следующего источника вниз | [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs), [`sandbox.ripgrep`](#sandbox-ripgrep) |5587| Значения, берущиеся целиком | Берёт значение целиком из самого приоритетного источника, который его задаёт, не объединяя записи или поля из нижестоящих источников. Если самый приоритетный источник его не задаёт, берёт его целиком из следующего источника ниже | [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs), [`sandbox.ripgrep`](#sandbox-ripgrep) |

5585| Предоставленные MCP серверы | Объединяет имена серверов из каждого источника. Когда два источника устанавливают одно имя, применяет всю запись источника с более высоким приоритетом | [`managedMcpServers`](#managedmcpservers) |5588| Предоставляемые MCP-серверы | Объединяет имена серверов из всех источников. Если два источника задают одинаковое имя, применяет запись из вышестоящего источника целиком | [`managedMcpServers`](#managedmcpservers) |

5586| Читается только из источника с наивысшим приоритетом | Читает ключ только из источника с наивысшим приоритетом, который содержит ключ политики, поэтому значение более низкого источника игнорируется даже когда источник с наивысшим приоритетом его не устанавливает | [`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) |5589| Чтение только из источника с наивысшим приоритетом | Читает ключ только из источника с наивысшим приоритетом, содержащего ключ политики, поэтому значение нижестоящего источника игнорируется, даже если самый приоритетный источник не задаёт никакого значения | [`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) |

5587| `env` | [Объединяет переменные для каждого администратора источников](https://code.claude.com/docs/ru/managed-settings.md#keys-read-from-every-admin-source), под обоими `"first-wins"` и `"merge"` | [`env`](#env) |5590| `env` | [Объединяется по отдельным переменным во всех источниках администратора](https://code.claude.com/docs/ru/managed-settings.md#keys-read-from-every-admin-source) как при `"first-wins"`, так и при `"merge"` | [`env`](#env) |

5588| Каждый другой ключ | Берет значение из источника с наивысшим приоритетом, который его устанавливает | [`cleanupPeriodDays`](#cleanupperioddays), [`model`](#model) |5591| Все остальные ключи | Берёт значение из самого приоритетного источника, который его задаёт | [`cleanupPeriodDays`](#cleanupperioddays), [`model`](#model) |

5589 5592 

5590Взятие `sandbox.credentials.awsPairs` и `sandbox.ripgrep` целиком требует Claude Code v2.1.257 или позже.5593Получение `sandbox.credentials.awsPairs` и `sandbox.ripgrep` целиком требует Claude Code v2.1.257 или новее.

5591 5594 

5592Несколько ключей добавляют условие, которое таблица не показывает:5595Для некоторых ключей действует дополнительное условие, которое не отражено в таблице:

5593 5596 

5594* **[`policyHelper`](#policyhelper)**: Claude Code соблюдает это только когда источник с наивысшим приоритетом, который содержит ключ политики, является политикой MDM или файлом управляемых параметров, поэтому при управляемых параметрах сервера это не применяется.5597* **[`policyHelper`](#policyhelper)**: Claude Code учитывает его, только если самый приоритетный источник, содержащий ключ политики, — это политика MDM или файл управляемых настроек, поэтому при настройках, управляемых сервером, он не применяется.

5595* **[`modelOverrides`](#modeloverrides)**: связан с `availableModels`. Claude Code берет `modelOverrides` из источника с наивысшим приоритетом, который его устанавливает, если только более высокий источник не устанавливает `availableModels` без `modelOverrides`. В этом случае он игнорирует `modelOverrides` из каждого источника.5598* **[`modelOverrides`](#modeloverrides)**: работает в паре с `availableModels`. Claude Code берёт `modelOverrides` из самого приоритетного источника, который его задаёт, если только вышестоящий источник не задаёт `availableModels` без `modelOverrides`. В этом случае он игнорирует `modelOverrides` из всех источников.

5596* **[`forceLoginGatewayUrl`](#forcelogingatewayurl), [`gatewayInternalNetworks`](#gatewayinternalnetworks) и значение `"gateway"` [`forceLoginMethod`](#forceloginmethod)**: Claude Code никогда не читает ни один из них из управляемых параметров сервера, поэтому значение там ни не применяется, ни не скрывает значение, установленное в политике MDM или файле управляемых параметров. Среди источников администратора на машине только источник с наивысшим рангом, который содержит ключ политики, поставляет их, независимо от того, присутствуют ли также управляемые параметры сервера.5599* **[`forceLoginGatewayUrl`](#forcelogingatewayurl), [`gatewayInternalNetworks`](#gatewayinternalnetworks) и значение `"gateway"` ключа [`forceLoginMethod`](#forceloginmethod)**: Claude Code никогда не читает ни один из них из настроек, управляемых сервером, поэтому значение там не применяется и не скрывает значение, заданное в политике MDM или файле управляемых настроек. Из источников администратора на компьютере их предоставляет только самый высокий по рангу источник, содержащий ключ политики, независимо от того, присутствуют ли также настройки, управляемые сервером.

5597* **[`allowedProviders`](#allowedproviders)**: после правила таблицы, список машины все еще ограничивает результат, как указано в примечании Scope записи.5600* **[`allowedProviders`](#allowedproviders)**: после применения правила из таблицы результат по-прежнему ограничивается собственным списком компьютера, как указано в примечании об области действия в описании этого ключа.

5598 5601 

5599Чтобы подтвердить, какие источники объединены на машине, запустите `/status` и [прочитайте строку `Setting sources`](https://code.claude.com/docs/ru/managed-settings#read-the-source-in-/status).5602Чтобы проверить, какие источники были объединены на компьютере, выполните `/status` и [посмотрите строку `Setting sources`](https://code.claude.com/docs/ru/managed-settings#read-the-source-in-/status).

5600 5603 

5601### `parentSettingsBehavior`5604### `parentSettingsBehavior`

5602 5605 

5603Выберите, применяет ли Claude Code управляемые параметры, поставляемые процессом хоста встраивания, таким как Agent SDK или расширение IDE, когда также присутствует развернутый администратором управляемый уровень. С `"first-wins"` Claude Code отбрасывает параметры, поставляемые хостом; с `"merge"` он применяет их под уровнем администратора через фильтр только для ограничений. Установите `"merge"`, когда хосту нужно передать свои собственные ограничения сеансам, которые он запускает, например Claude Desktop, доставляющий список разрешенных исходящих соединений шлюза.5606Выберите, применяет ли Claude Code управляемые настройки, предоставленные процессом встраивающего хоста, например Agent SDK или расширением IDE, если также присутствует уровень управляемых настроек, развёрнутый администратором. При `"first-wins"` Claude Code отбрасывает настройки, предоставленные хостом; при `"merge"` он применяет их под уровнем администратора через фильтр, пропускающий только ограничения. Задайте `"merge"`, когда хосту нужно передавать собственные ограничения запускаемым им сессиям, например когда Claude Desktop передаёт список разрешённых исходящих адресов шлюза.

5604 5607 

5605* **Область**: [`Managed`](#scopes). Claude Code читает это из источника управляемого администратором с наивысшим приоритетом.5608* **Область действия**: [`Managed`](#scopes). Claude Code читает его из управляемого источника с наивысшим приоритетом, контролируемого администратором.

5606* **Тип**: string, один из:5609* **Тип**: string, одно из значений:

5607 * `"first-wins"`: Claude Code отбрасывает параметры, поставляемые хостом, когда присутствует развернутый администратором управляемый уровень5610 * `"first-wins"`: Claude Code отбрасывает настройки, предоставленные хостом, если присутствует уровень управляемых настроек, развёрнутый администратором

5608 * `"merge"`: Claude Code применяет параметры, поставляемые хостом, под уровнем администратора через фильтр только для ограничений5611 * `"merge"`: Claude Code применяет настройки, предоставленные хостом, под уровнем администратора через фильтр, пропускающий только ограничения

5609* **По умолчанию**: `"first-wins"`5612* **По умолчанию**: `"first-wins"`

5610 5613 

5611```json managed-settings.json theme={null}5614```json managed-settings.json theme={null}


5614}5617}

5615```5618```

5616 5619 

5617Этот ключ не имеет эффекта, когда не существует развернутого администратором управляемого уровня: параметры хоста затем применяются как единственный управляемый уровень, все еще отфильтрованные до значений только для ограничений. Для ограничений фильтра и того, как взаимодействуют управляемые источники, см. [Родительские параметры от хостов встраивания](https://code.claude.com/docs/ru/managed-settings.md#parent-settings-from-embedding-hosts) и [Ограничение родительских параметров](https://code.claude.com/docs/ru/claude-apps-gateway#restrict-parent-settings).5620Этот ключ не действует, если уровня управляемых настроек, развёрнутого администратором, нет: тогда настройки хоста применяются как единственный управляемый уровень, по-прежнему отфильтрованные до ограничивающих значений. Об ограничениях фильтра и о том, как взаимодействуют управляемые источники, см. [Родительские настройки от встраивающих хостов](https://code.claude.com/docs/ru/managed-settings.md#parent-settings-from-embedding-hosts) и [Ограничение родительских настроек](https://code.claude.com/docs/ru/claude-apps-gateway#restrict-parent-settings).

5618 5621 

5619### `policyHelper`5622### `policyHelper`

5620 5623 

5621Запустите исполняемый файл, который вы развертываете, который вычисляет управляемые параметры при запуске, чтобы вы могли получить политику из позиции устройства, идентификации или удаленного сервиса вместо статического файла. Claude Code запускает помощника перед тем, как принять первый запрос, и рассматривает параметры, которые он выдает, как управляемые параметры для сеанса.5624Запускать развёрнутый вами исполняемый файл, который вычисляет управляемые настройки при запуске, чтобы вы могли формировать политику на основе состояния устройства, идентичности или удалённого сервиса, а не статического файла. Claude Code запускает хелпер до того, как примет первый промпт, и использует выведенные им настройки как управляемые настройки сессии.

5622 5625 

5623* **Область**: [`Managed`](#scopes). Читается из plist macOS, реестра Windows HKLM или файла управляемых параметров. Claude Code читает ключ из источника управляемого администратором с наивысшим приоритетом, который содержит [ключ политики](https://code.claude.com/docs/ru/managed-settings.md#how-claude-code-combines-managed-sources), и запускает помощника только когда этот источник является одним из этих трех; он игнорирует ключ в управляемых параметрах сервера, реестре HKCU и родительских параметрах, поставляемых хостом.5626* **Область действия**: [`Managed`](#scopes). Читается из plist macOS, реестра Windows HKLM или файла управляемых настроек. Claude Code читает ключ из управляемого источника с наивысшим приоритетом, содержащего [ключ политики](https://code.claude.com/docs/ru/managed-settings.md#how-claude-code-combines-managed-sources), и запускает хелпер, только если этот источник — один из этих трёх; он игнорирует ключ в настройках, управляемых сервером, в реестре HKCU и в родительских настройках, предоставленных хостом.

5624* **Тип**: object с `path`, `timeoutMs` и `refreshIntervalMs`5627* **Тип**: объект с полями `path`, `timeoutMs` и `refreshIntervalMs`

5625* **По умолчанию**: не установлено, поэтому помощник не запускается5628* **По умолчанию**: не задано, поэтому хелпер не запускается

5626 5629 

5627Когда управляемые параметры сервера доставляют политику при запуске, они имеют приоритет над источником помощника и помощник не запускается.5630Если настройки, управляемые сервером, передают политику при запуске, они имеют приоритет над источником хелпера, и хелпер не запускается.

5628 5631 

5629Если более поздняя выборка параметров сообщает, что управляемые параметры сервера удалены, Claude Code запускает помощника в этот момент вместо ожидания следующего запуска. Его выход управляет остальной частью сеанса, и запуск, который не удается, завершает сеанс с тем же сообщением, что и [неудачный запуск при запуске](#helper-failures).5632Если при последующем получении настроек выясняется, что настройки, управляемые сервером, удалены, Claude Code запускает хелпер в этот момент, а не ждёт следующего запуска. Его вывод определяет поведение до конца сессии, а неудачный запуск завершает сессию с тем же сообщением, что и [неудачный запуск при старте](#helper-failures).

5630 5633 

5631Этот пример запускает помощника с тайм-аутом 5 секунд и повторно запускает его каждые пять минут:5634В этом примере хелпер запускается с таймаутом 5 секунд и перезапускается каждые пять минут:

5632 5635 

5633```json managed-settings.json theme={null}5636```json managed-settings.json theme={null}

5634{5637{


5640}5643}

5641```5644```

5642 5645 

5643#### Напишите выход помощника5646#### Формирование вывода хелпера

5644 5647 

5645Claude Code запускает помощника без аргументов, устанавливает `CLAUDE_CODE_VERSION` в его окружение и читает конверт JSON из stdout, ограниченный 1 МиБ.5648Claude Code запускает хелпер без аргументов, устанавливает `CLAUDE_CODE_VERSION` в его окружении и читает из stdout JSON-конверт размером не более 1 MiB.

5646 5649 

5647Поместите параметры под ключ `managedSettings`. Объект параметров без ключа `managedSettings` анализируется с `managedSettings` undefined и ничего не применяет, и Claude Code не сообщает об ошибке:5650Поместите настройки под ключ `managedSettings`. Голый объект настроек без ключа `managedSettings` разбирается с неопределённым `managedSettings` и ничего не применяет, причём Claude Code не сообщает об ошибке:

5648 5651 

5649```json theme={null}5652```json theme={null}

5650{5653{


5654}5657}

5655```5658```

5656 5659 

5657Когда помощник выдает `managedSettings`, этот объект становится единственным источником управляемых параметров для запуска: Claude Code игнорирует источники MDM, файла и HKCU, читает [ключи между источниками](https://code.claude.com/docs/ru/managed-settings.md#keys-read-from-every-admin-source) только из выхода помощника и никогда не объединяет [родительские параметры](https://code.claude.com/docs/ru/managed-settings.md#parent-settings-from-embedding-hosts).5660Когда хелпер выводит `managedSettings`, этот объект становится единственным источником управляемых настроек для данного запуска: Claude Code игнорирует источники MDM, файла и HKCU, читает [ключи, общие для всех источников](https://code.claude.com/docs/ru/managed-settings.md#keys-read-from-every-admin-source), только из вывода хелпера и никогда не объединяет [родительские настройки](https://code.claude.com/docs/ru/managed-settings.md#parent-settings-from-embedding-hosts).

5658 5661 

5659Проверка `forceRemoteSettingsRefresh` при запуске выполняется перед помощником и читает любой источник администратора. Помощник, который выходит с `0` с конвертом, который опускает `managedSettings`, не вносит управляемые параметры, и другие источники применяются как обычно.5662Проверка `forceRemoteSettingsRefresh` при запуске выполняется до хелпера и читает любой источник администратора. Хелпер, который завершается с кодом `0` и выводит конверт без `managedSettings`, не вносит управляемых настроек, и остальные источники применяются как обычно.

5660 5663 

5661#### Сбои помощника5664#### Сбои хелпера

5662 5665 

5663Запуск помощника не удается, когда:5666Запуск хелпера завершается неудачей, если:

5664 5667 

5665* `path` нарушает правила в [`policyHelper.path`](#policyhelper-path).5668* `path` нарушает правила, описанные в [`policyHelper.path`](#policyhelper-path).

5666* Нет обычного файла в `path`. Claude Code проверяет файл перед запуском помощника, в пределах того же бюджета `timeoutMs`, поэтому неотзывчивое сетевое крепление может привести к сбою запуска.5669* По пути `path` нет обычного файла. Claude Code проверяет наличие файла перед запуском хелпера в рамках того же лимита `timeoutMs`, поэтому неотвечающий сетевой диск может привести к неудачному запуску.

5667* Помощник выходит с ненулевым кодом, все еще работает, когда истекает `timeoutMs`, или вообще не запускается, например потому что он не исполняемый.5670* Хелпер завершается с ненулевым кодом, всё ещё работает по истечении `timeoutMs` или вообще не запускается, например потому что не является исполняемым.

5668* Помощник записывает более 1 МиБ в stdout или stderr.5671* Хелпер записывает в stdout или stderr более 1 MiB.

5669* stdout не является одним объектом JSON, или его `managedSettings` имеет [нарушение схемы, которое Claude Code не может исправить](https://code.claude.com/docs/ru/managed-settings.md#find-entries-claude-code-dropped).5672* stdout не является одним JSON-объектом, или его `managedSettings` содержит [нарушение схемы, которое Claude Code не может исправить](https://code.claude.com/docs/ru/managed-settings.md#find-entries-claude-code-dropped).

5670 5673 

5671Когда запуск при запуске не удается, Claude Code выводит причину и отказывается запускаться. После выхода с ненулевым кодом причина включает stderr помощника или его stdout, когда stderr пуст. После тайм-аута причина называет предел `timeoutMs` и не включает ни один из выходов помощника. Отказ охватывает интерактивные сеансы, `claude -p`, сеансы Agent SDK, [фоновые сеансы](https://code.claude.com/docs/ru/agent-view.md) и большинство подкоманд.5674Если запуск при старте завершается неудачей, Claude Code выводит причину и отказывается запускаться. После ненулевого кода завершения причина включает stderr хелпера или его stdout, если stderr пуст. После таймаута в причине указывается лимит `timeoutMs`, но не приводится никакой вывод хелпера. Отказ распространяется на интерактивные сессии, `claude -p`, сессии Agent SDK, [фоновые сессии](https://code.claude.com/docs/ru/agent-view.md) и большинство подкоманд.

5672 5675 

5673Отказ преднамерен, поэтому помощник, который нуждается в устойчивости к сбоям, должен обслуживать из своего собственного кэша и выходить с `0`.5676Этот отказ преднамеренный, поэтому хелпер, которому нужна устойчивость к сбоям, должен отдавать данные из собственного кэша и завершаться с кодом `0`.

5674 5677 

5675Когда фоновое обновление не удается, Claude Code сохраняет последнюю успешную политику в силе, и `/status` показывает неудачное обновление с его причиной до тех пор, пока обновление не успешно. Каждое обновление выполняется под тем же `timeoutMs` и правилами сбоев, что и запуск при запуске.5678Если фоновое обновление завершается неудачей, Claude Code сохраняет в силе последнюю успешно полученную политику, а `/status` показывает неудачное обновление с его причиной, пока обновление не пройдёт успешно. Каждое обновление выполняется с тем же `timeoutMs` и по тем же правилам сбоев, что и запуск при старте.

5676 5679 

5677С `--debug` Claude Code записывает stderr помощника из каждого запуска в [журнал отладки](https://code.claude.com/docs/ru/debug-your-config.md).5680С флагом `--debug` Claude Code записывает stderr хелпера от каждого запуска в [лог отладки](https://code.claude.com/docs/ru/debug-your-config.md).

5678 5681 

5679Claude Code сообщает о недействительном значении `policyHelper` как о [отброшенной записи](https://code.claude.com/docs/ru/managed-settings.md#find-entries-claude-code-dropped) и запускает сеанс на оставшихся управляемых параметрах без запуска помощника. Недействительные значения включают строку пути и `timeoutMs` ниже [его минимума](#policyhelper-timeoutms).5682Claude Code сообщает о недопустимом значении `policyHelper` как об [отброшенной записи](https://code.claude.com/docs/ru/managed-settings.md#find-entries-claude-code-dropped) и запускает сессию с остальными управляемыми настройками, не запуская хелпер. К недопустимым значениям относятся путь, указанный голой строкой, и `timeoutMs` ниже [своего минимума](#policyhelper-timeoutms).

5680 5683 

5681Чтобы отключить помощника, удалите ключ из источника, который его устанавливает.5684Чтобы отключить хелпер, удалите ключ из источника, который его задаёт.

5682 5685 

5683### `policyHelper.path`5686### `policyHelper.path`

5684 5687 

5685Назовите исполняемый файл помощника, который запускает Claude Code. Для того, что происходит, когда путь нарушает правила ниже, см. [Сбои помощника](#helper-failures).5688Укажите исполняемый файл хелпера, который запускает Claude Code. О том, что происходит, если путь нарушает приведённые ниже правила, см. [Сбои хелпера](#helper-failures).

5686 5689 

5687* **Область**: [`Managed`](#scopes). Читается из plist macOS, реестра Windows HKLM или файла управляемых параметров, где читается [`policyHelper`](#policyhelper).5690* **Область действия**: [`Managed`](#scopes). Читается из plist macOS, реестра Windows HKLM или файла управляемых настроек — там же, где читается [`policyHelper`](#policyhelper).

5688* **Тип**: string, абсолютный путь в нормализованной форме, без сегментов `.` или `..`; в Windows путь с буквой диска или UNC, заканчивающийся на `.exe`5691* **Тип**: string, абсолютный путь в нормализованной форме, без сегментов `.` или `..`; в Windows — путь с буквой диска или UNC-путь, оканчивающийся на `.exe`

5689* **По умолчанию**: нет; требуется, когда установлен `policyHelper`5692* **По умолчанию**: нет; обязателен, если задан `policyHelper`

5690 5693 

5691```json managed-settings.json theme={null}5694```json managed-settings.json theme={null}

5692{5695{


5698 5701 

5699### `policyHelper.timeoutMs`5702### `policyHelper.timeoutMs`

5700 5703 

5701Установите, как долго Claude Code ждет помощника перед тем, как рассматривать запуск как неудачный. Истекший по времени запуск не удается так же, как выход с ненулевым кодом, поэтому при запуске Claude Code отказывается запускаться.5704Задайте, сколько Claude Code ждёт хелпер, прежде чем считать запуск неудачным. Запуск, завершившийся по таймауту, считается неудачным так же, как ненулевой код завершения, поэтому при старте Claude Code отказывается запускаться.

5702 5705 

5703* **Область**: [`Managed`](#scopes). Читается из plist macOS, реестра Windows HKLM или файла управляемых параметров, где читается [`policyHelper`](#policyhelper).5706* **Область действия**: [`Managed`](#scopes). Читается из plist macOS, реестра Windows HKLM или файла управляемых настроек — там же, где читается [`policyHelper`](#policyhelper).

5704* **Тип**: integer, миллисекунды, минимум `1000`5707* **Тип**: integer, миллисекунды, минимум `1000`

5705* **По умолчанию**: `10000`5708* **По умолчанию**: `10000`

5706 5709 


5715 5718 

5716### `policyHelper.refreshIntervalMs`5719### `policyHelper.refreshIntervalMs`

5717 5720 

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

5719 5722 

5720* **Область**: [`Managed`](#scopes). Читается из plist macOS, реестра Windows HKLM или файла управляемых параметров, где читается [`policyHelper`](#policyhelper).5723* **Область действия**: [`Managed`](#scopes). Читается из plist macOS, реестра Windows HKLM или файла управляемых настроек — там же, где читается [`policyHelper`](#policyhelper).

5721* **Тип**: integer, миллисекунды: `0` для отключения обновления, иначе по крайней мере `60000`5724* **Тип**: integer, миллисекунды: `0`, чтобы отключить обновление, иначе не менее `60000`

5722* **По умолчанию**: не установлено, поэтому Claude Code запускает помощника один раз при запуске5725* **По умолчанию**: не задано, поэтому Claude Code запускает хелпер один раз при старте

5723 5726 

5724Этот пример повторно запускает помощника каждые пять минут:5727В этом примере хелпер перезапускается каждые пять минут:

5725 5728 

5726```json managed-settings.json theme={null}5729```json managed-settings.json theme={null}

5727{5730{


5734 5737 

5735### `wslInheritsWindowsSettings`5738### `wslInheritsWindowsSettings`

5736 5739 

5737Заставьте Claude Code на WSL читать управляемые параметры из цепи политики Windows, с HKLM и файлом управляемых параметров Windows, имеющими приоритет над `/etc/claude-code` и HKCU ниже. Пока цепь включена, Claude Code читает `/etc/claude-code` только когда [нет документа администратора Windows](https://code.claude.com/docs/ru/managed-settings.md#present-admin-documents) в значении реестра HKLM или папке `C:\Program Files\ClaudeCode\`. Установите это, чтобы расширить политику, которую вы уже развертываете в Windows, на сеансы WSL на той же машине, чтобы они следовали тем же правилам, что и сеансы хоста. Claude Code соблюдает это только когда установлено в ключе реестра HKLM или в файле управляемых параметров или drop-in под `C:\Program Files\ClaudeCode\`, оба из которых требуют администратора Windows для записи.5740Заставить Claude Code в WSL читать управляемые настройки из цепочки политик Windows, в которой HKLM и файл управляемых настроек Windows имеют приоритет над `/etc/claude-code`, а HKCU стоит ниже. Пока цепочка включена, Claude Code читает `/etc/claude-code` только тогда, когда [нет документа администратора Windows](https://code.claude.com/docs/ru/managed-settings.md#present-admin-documents) ни в значении реестра HKLM, ни в папке `C:\Program Files\ClaudeCode\`. Задайте этот ключ, чтобы распространить политику, которую вы уже развёртываете в Windows, на сессии WSL на том же компьютере, чтобы они следовали тем же правилам, что и сессии хоста. Claude Code учитывает его, только если он задан в ключе реестра HKLM или в файле управляемых настроек либо дополнительном файле (drop-in) в `C:\Program Files\ClaudeCode\` — для записи в оба места требуются права администратора Windows.

5738 5741 

5739* **Область**: [`Managed`](#scopes). В источнике Windows, управляемом администратором.5742* **Область действия**: [`Managed`](#scopes). В источнике Windows, контролируемом администратором.

5740* **Тип**: Boolean5743* **Тип**: Boolean

5741 * `true`: Claude Code на WSL читает управляемые параметры из цепи политики Windows, и читает `/etc/claude-code` только когда нет документа администратора Windows5744 * `true`: Claude Code в WSL читает управляемые настройки из цепочки политик Windows и читает `/etc/claude-code` только при отсутствии документа администратора Windows

5742 * `false`: WSL читает только `/etc/claude-code`5745 * `false`: WSL читает только `/etc/claude-code`

5743* **По умолчанию**: `false`, поэтому WSL читает только `/etc/claude-code`5746* **По умолчанию**: `false`, поэтому WSL читает только `/etc/claude-code`

5744 5747 


5748}5751}

5749```5752```

5750 5753 

5751Как только источник администратора включает цепь, политика HKCU присоединяется к ней на WSL только когда HKCU также устанавливает ключ на `true`. Эта копия не включает цепь сама по себе. Источник Windows, который содержит только этот ключ, установленный на `true` или `false`, не считается источником политики, поэтому источник с более низким приоритетом все еще поставляет политику. Этот ключ не имеет эффекта на нативный Windows.5754После того как источник администратора включает цепочку, политика HKCU присоединяется к ней в WSL, только если HKCU тоже задаёт этот ключ как `true`. Эта копия сама по себе цепочку не включает. Источник Windows, содержащий только этот ключ со значением `true` или `false`, не считается источником политики, поэтому политику по-прежнему предоставляет источник с более низким приоритетом. В нативной Windows этот ключ не действует.

5752 5755 

5753Claude Code читает `true` и `false` с кавычками или без них и читает `null` как удаление ключа. Источник Windows, управляемый администратором, который содержит любое другое значение, считается [присутствующим документом администратора](https://code.claude.com/docs/ru/managed-settings.md#present-admin-documents) с включенной цепью: ни `/etc/claude-code`, ни HKCU не применяются, и предупреждение при запуске называет ключ. Значение HKLM или файл папки Windows, который существует, но не может быть прочитан, также препятствует применению `/etc/claude-code` независимо от того, включена ли цепь. Требуется Claude Code v2.1.282 или позже.5756Claude Code распознаёт `true` и `false` как в кавычках, так и без них, а `null` воспринимает как удаление ключа. Источник Windows, контролируемый администратором, содержащий любое другое значение, считается [присутствующим документом администратора](https://code.claude.com/docs/ru/managed-settings.md#present-admin-documents) с включённой цепочкой: ни `/etc/claude-code`, ни HKCU не применяются, а при запуске выводится предупреждение с названием ключа. Значение HKLM или файл в папке Windows, которые существуют, но не могут быть прочитаны, также не позволяют применить `/etc/claude-code` независимо от того, включена ли цепочка. Требуется Claude Code v2.1.282 или новее.

5754 5757 

5755## Глобальные параметры конфигурации5758## Глобальные параметры конфигурации

5756 5759 

vs-code.md +36 −17

Details

203What's in @src/components/ (include a trailing slash for folders)203What's in @src/components/ (include a trailing slash for folders)

204```204```

205 205 

206Для больших PDF-файлов можно попросить Claude прочитать определённые страницы вместо всего файла. Запросите одну страницу, диапазон, например страницы 1–10, или открытый диапазон, например со страницы 3 и далее. Чтение определённых страниц требует наличия [poppler-utils](https://code.claude.com/docs/ru/tools-reference.md#read-tool-behavior) на машине, где работает Claude Code.206### Чтение определённых страниц PDF

207 

208Когда вы выделяете текст в редакторе, Claude автоматически видит выделенный код. В нижней части поля ввода промпта показывается, сколько строк выделено. Нажмите `Option+K` (Mac) / `Alt+K` (Windows/Linux), чтобы вставить @-упоминание с путём к файлу и номерами строк, например `@app.ts#5-10`. Нажмите **X** на индикаторе выделения, чтобы убрать его, и тогда Claude не получит выделение. Индикатор вернётся, когда вы выделите другой текст.

209 207 

210Расширение не передаёт выделенный текст из некоторых файлов:208Для больших PDF-файлов можно попросить Claude прочитать определённые страницы вместо всего файла. Запросите одну страницу, диапазон, например страницы 1–10, или открытый диапазон, например со страницы 3 и далее. Чтение определённых страниц требует наличия [poppler-utils](https://code.claude.com/docs/ru/tools-reference.md#read-tool-behavior) на машине, где работает Claude Code.

211 

212* Если файл находится внутри вашей рабочей области и соответствует настройкам `files.exclude` или `search.exclude`, Claude получает не более чем путь к файлу, но не выделенный вами текст.

213* То же самое относится к файлу, который игнорируется git, при условии что настройка VS Code `search.useIgnoreFiles` и [настройка `respectGitIgnore`](#extension-settings) расширения обе включены, что является значением по умолчанию.

214 209 

215Этот фильтр распространяется только на панель чата. Когда Claude Code работает во встроенном терминале, CLI отправляет выделенный текст независимо от файла. Чтобы скрыть содержимое файла от Claude в этом случае, добавьте [правило запрета `Read`](#the-built-in-ide-mcp-server).210### Включение вывода терминала в промпты

216 211 

217Claude также видит, какой файл открыт в редакторе, даже если ничего не выделено, и поле ввода промпта показывает его имя. Чтобы добавлять только выделенный текст, отключите [настройку Attach Open File](vscode://settings/claudeCode.attachOpenFile). Эта настройка требует Claude Code v2.1.271 или более поздней версии.212Ссылайтесь на вывод терминала в промптах с помощью `@terminal:name`, где `name` — заголовок терминала. Это позволяет Claude видеть вывод команд, сообщения об ошибках или логи без копирования и вставки.

218 213 

219Также можно прикреплять к сообщению изображения и файлы:214### Прикрепление изображений и файлов

220 215 

221* Чтобы прикрепить изображение, вставьте его из буфера обмена в поле ввода промпта.216* Чтобы прикрепить изображение, вставьте его из буфера обмена в поле ввода промпта.

222* Чтобы прикрепить файлы, перетащите их в поле ввода промпта, удерживая `Shift`.217* Чтобы прикрепить файлы, перетащите их в поле ввода промпта, удерживая `Shift`.

223* Чтобы удалить вложение из контекста, нажмите на X на нём.218* Чтобы удалить вложение из контекста, нажмите на X на нём.

224 219 

225### Включение вывода терминала в промпты

226 

227Ссылайтесь на вывод терминала в промптах с помощью `@terminal:name`, где `name` — заголовок терминала. Это позволяет Claude видеть вывод команд, сообщения об ошибках или логи без копирования и вставки.

228 

229### Вставка текста220### Вставка текста

230 221 

231Вставленный текст остаётся видимым в поле ввода промпта, а не сворачивается в заполнитель, как это происходит [в терминале](https://code.claude.com/docs/ru/terminal-config.md#paste-large-content). В сессиях, где Claude Code [помечает вставленный текст](https://code.claude.com/docs/ru/terminal-config.md#how-claude-treats-pasted-text), Claude по-прежнему видит большой фрагмент как вставленный вами текст, а не набранный.222Вставленный текст остаётся видимым в поле ввода промпта, а не сворачивается в заполнитель, как это происходит [в терминале](https://code.claude.com/docs/ru/terminal-config.md#paste-large-content). В сессиях, где Claude Code [помечает вставленный текст](https://code.claude.com/docs/ru/terminal-config.md#how-claude-treats-pasted-text), Claude по-прежнему видит большой фрагмент как вставленный вами текст, а не набранный.


235* Если при вставке появляется уведомление, например `Removed 3 invisible characters from the pasted text`, текст был вставлен без этих символов.226* Если при вставке появляется уведомление, например `Removed 3 invisible characters from the pasted text`, текст был вставлен без этих символов.

236* Если уведомление об удалённых символах появляется при отправке, ничего не было отправлено. Очищенный текст возвращается в поле ввода промпта. Отправьте снова, чтобы отправить текст в том виде, в котором он отображается.227* Если уведомление об удалённых символах появляется при отправке, ничего не было отправлено. Очищенный текст возвращается в поле ввода промпта. Отправьте снова, чтобы отправить текст в том виде, в котором он отображается.

237 228 

229### Автоматический контекст из выделения и открытого файла

230 

231Когда вы выделяете текст в редакторе, Claude автоматически видит выделенный код. В нижней части поля ввода промпта показывается, сколько строк выделено. Claude также видит, какой файл открыт в редакторе, даже если ничего не выделено, и поле ввода промпта показывает его имя.

232 

233Нажмите `Option+K` (Mac) / `Alt+K` (Windows/Linux), чтобы вставить @-упоминание с путём к файлу и номерами строк, например `@app.ts#5-10`.

234 

235#### Как не передавать выделение и открытый файл в сообщениях

236 

237Чтобы выделенный текст или открытый файл не попадали в ваши сообщения, отключите соответствующую настройку в настройках VS Code:

238 

239* **Выделенный текст**: отключите [настройку Attach Selection](vscode://settings/claudeCode.attachSelection). Требуется Claude Code v2.1.300 или более поздней версии. Чтобы убрать одно выделение, нажмите **X** рядом со счётчиком строк. Счётчик вернётся, когда вы выделите другой текст.

240* **Открытый файл**: отключите [настройку Attach Open File](vscode://settings/claudeCode.attachOpenFile). Требуется Claude Code v2.1.271 или более поздней версии. Файл не передаётся, если только ваше сообщение не включает выделенный в нём текст.

241 

242Чтобы добавить текст как @-упоминание при отключённой настройке Attach Selection, выделите его и нажмите `Option+K` на Mac или `Alt+K` в Windows и Linux.

243 

244Обе настройки также применяются, когда вы запускаете `claude` во встроенном терминале VS Code.

245 

246#### Выделенный текст из исключённых или игнорируемых файлов

247 

248На панели чата расширение не передаёт выделенный текст из некоторых файлов:

249 

250* Если файл находится внутри вашей рабочей области и соответствует настройкам `files.exclude` или `search.exclude`, Claude получает не более чем путь к файлу, но не выделенный вами текст.

251* То же самое относится к файлу, который игнорируется git, при условии что настройка VS Code `search.useIgnoreFiles` и [настройка `respectGitIgnore`](#extension-settings) расширения обе включены, что является значением по умолчанию.

252 

253Этот фильтр распространяется только на панель чата. Когда Claude Code работает во встроенном терминале, Claude может получать текст, который вы выделяете в этих файлах. Чтобы скрыть содержимое файла от Claude в этом случае, добавьте [правило запрета `Read`](https://code.claude.com/docs/ru/permissions#read-and-edit).

254 

238### Математика LaTeX в ответах255### Математика LaTeX в ответах

239 256 

240Панель чата отображает математические выражения LaTeX в ответах Claude в виде свёрстанных формул. Отрисовка математики требует Claude Code v2.1.301 или более поздней версии. В [режиме терминала](#switch-to-terminal-mode) математика не верстается. Панель верстает как выносные, так и строчные формулы:257Панель чата отображает математические выражения LaTeX в ответах Claude в виде свёрстанных формул. Отрисовка математики требует Claude Code v2.1.301 или более поздней версии. В [режиме терминала](#switch-to-terminal-mode) математика не верстается. Панель верстает как выносные, так и строчные формулы:


694| `preferredLocation` | `panel` | Где открывается Claude: `sidebar` (справа) или `panel` (новая вкладка) |711| `preferredLocation` | `panel` | Где открывается Claude: `sidebar` (справа) или `panel` (новая вкладка) |

695| `lockEditorGroups` | `true` | [Блокировать группы редактора, которые Claude создаёт для своих вкладок](#choose-where-claude-lives), чтобы файлы, открываемые, когда в фокусе вкладка Claude, попадали в другую группу. Если отключено, расширение никогда не блокирует группу редактора. Требуется Claude Code v2.1.274 или более поздней версии |712| `lockEditorGroups` | `true` | [Блокировать группы редактора, которые Claude создаёт для своих вкладок](#choose-where-claude-lives), чтобы файлы, открываемые, когда в фокусе вкладка Claude, попадали в другую группу. Если отключено, расширение никогда не блокирует группу редактора. Требуется Claude Code v2.1.274 или более поздней версии |

696| `autosave` | `true` | Автоматически сохранять файлы перед тем, как Claude читает или записывает их |713| `autosave` | `true` | Автоматически сохранять файлы перед тем, как Claude читает или записывает их |

697| `attachOpenFile` | `true` | Добавлять файл, открытый в редакторе, к вашим сообщениям и показывать его в поле ввода промпта. Если отключено, добавляется только выделенный текст. Требуется Claude Code v2.1.271 или более поздней версии |714| `attachOpenFile` | `true` | Добавлять файл, открытый в редакторе, к вашим сообщениям и показывать его в поле ввода промпта. Если отключено, файл добавляется только вместе с выделенным вами текстом. Требуется Claude Code v2.1.271 или более поздней версии |

715| `attachSelection` | `true` | Добавлять текст, выделенный в редакторе, к вашим сообщениям и показывать его в поле ввода промпта. Если отключено, вы по-прежнему можете [добавить выделение как @-упоминание](#automatic-context-from-your-selection-and-open-file). Требуется Claude Code v2.1.300 или более поздней версии |

698| `useCtrlEnterToSend` | `false` | Использовать Ctrl/Cmd+Enter вместо Enter для отправки промптов |716| `useCtrlEnterToSend` | `false` | Использовать Ctrl/Cmd+Enter вместо Enter для отправки промптов |

699| `scrollToBottomOnSend` | `true` | Прокручивать диалог вниз при отправке сообщения. Если отключено, диалог остаётся там, где вы его оставили. Требуется Claude Code v2.1.275 или более поздней версии |717| `scrollToBottomOnSend` | `true` | Прокручивать диалог вниз при отправке сообщения. Если отключено, диалог остаётся там, где вы его оставили. Требуется Claude Code v2.1.275 или более поздней версии |

700| `showMessageTimestamps` | `true` | Показывать, когда было отправлено каждое сообщение. Строка с датой отмечает место, где меняется день. Требуется Claude Code v2.1.284 или более поздней версии. До v2.1.290 значение по умолчанию было `false` |718| `showMessageTimestamps` | `true` | Показывать, когда было отправлено каждое сообщение. Строка с датой отмечает место, где меняется день. Требуется Claude Code v2.1.284 или более поздней версии. До v2.1.290 значение по умолчанию было `false` |


705| `continueAfterReload` | `true` | После перезагрузки окна Claude [продолжает прерванный шаг](#continue-conversations-after-a-reload) в восстановленной сессии. Требуется Claude Code v2.1.274 или более поздней версии |723| `continueAfterReload` | `true` | После перезагрузки окна Claude [продолжает прерванный шаг](#continue-conversations-after-a-reload) в восстановленной сессии. Требуется Claude Code v2.1.274 или более поздней версии |

706| `hideOnboarding` | `false` | Скрыть контрольный список знакомства (значок выпускной шапочки) |724| `hideOnboarding` | `false` | Скрыть контрольный список знакомства (значок выпускной шапочки) |

707| `focusView` | `false` | Скрывать вызовы инструментов, результаты инструментов и размышления за раскрываемыми строками, оставляя ваши промпты и ответы Claude. Последний список задач Claude остаётся видимым; для этого требуется Claude Code v2.1.225 или более поздней версии. Режим Focus view также можно переключать из меню команд. Требуется Claude Code v2.1.221 или более поздней версии |725| `focusView` | `false` | Скрывать вызовы инструментов, результаты инструментов и размышления за раскрываемыми строками, оставляя ваши промпты и ответы Claude. Последний список задач Claude остаётся видимым; для этого требуется Claude Code v2.1.225 или более поздней версии. Режим Focus view также можно переключать из меню команд. Требуется Claude Code v2.1.221 или более поздней версии |

708| `respectGitIgnore` | `true` | Исключать шаблоны .gitignore из поиска файлов и из [контекста выделения](#reference-files-and-folders) |726| `respectGitIgnore` | `true` | Исключать шаблоны .gitignore из поиска файлов и из [контекста выделения](#selected-text-from-excluded-or-ignored-files) |

709| `usePythonEnvironment` | `true` | Активировать окружение Python рабочей области при запуске Claude. Требуется расширение Python. |727| `usePythonEnvironment` | `true` | Активировать окружение Python рабочей области при запуске Claude. Требуется расширение Python. |

710| `environmentVariables` | `[]` | Задать переменные окружения для процесса Claude. Для общей конфигурации используйте вместо этого настройки Claude Code. Запись [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ru/env-vars) применяется только в том случае, если её значение — абсолютный путь; расширение не раскрывает `~` и игнорирует относительное значение. |728| `environmentVariables` | `[]` | Задать переменные окружения для процесса Claude. Для общей конфигурации используйте вместо этого настройки Claude Code. Запись [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ru/env-vars) применяется только в том случае, если её значение — абсолютный путь; расширение не раскрывает `~` и игнорирует относительное значение. |

711| `disableLoginPrompt` | `false` | Пропускать запросы аутентификации (для конфигураций со сторонними провайдерами) |729| `disableLoginPrompt` | `false` | Пропускать запросы аутентификации (для конфигураций со сторонними провайдерами) |


835 853 

836**Контекст выделения и открытого файла.** Пока CLI подключён, он включает ваше текущее выделение в редакторе и путь к активному файлу в качестве контекста в каждый отправляемый вами промпт. Когда это происходит, в транскрипте отображается строка `⧉ Selected N lines from <file>`. Следующие случаи изменяют этот контекст:854**Контекст выделения и открытого файла.** Пока CLI подключён, он включает ваше текущее выделение в редакторе и путь к активному файлу в качестве контекста в каждый отправляемый вами промпт. Когда это происходит, в транскрипте отображается строка `⧉ Selected N lines from <file>`. Следующие случаи изменяют этот контекст:

837 855 

856* **[Настройка Attach Selection](#keep-your-selection-and-open-file-out-of-your-messages) отключена**: CLI не включает ваше выделение в качестве контекста.

857* **Настройка Attach Open File отключена**: CLI включает путь к активному файлу только тогда, когда также включает выделение.

838* **Сообщения в очереди**: если вы [ставите сообщение в очередь, пока Claude работает](https://code.claude.com/docs/ru/interactive-mode.md#queue-messages-while-claude-works), оно сохраняет выделение, которое было у вас в момент нажатия `Enter`, независимо от того, что вы выделите после этого.858* **Сообщения в очереди**: если вы [ставите сообщение в очередь, пока Claude работает](https://code.claude.com/docs/ru/interactive-mode.md#queue-messages-while-claude-works), оно сохраняет выделение, которое было у вас в момент нажатия `Enter`, независимо от того, что вы выделите после этого.

839* **Конфиденциальные файлы**: чтобы исключить конфиденциальный файл, например `.env`, добавьте [запрещающее правило `Read`](https://code.claude.com/docs/ru/permissions#read-and-edit) для его пути. Соответствующее запрещающее правило не позволяет ни выделенному тексту, ни уведомлению об открытом файле для этого файла попасть к Claude.859* **Конфиденциальные файлы**: чтобы исключить конфиденциальный файл, например `.env`, добавьте [запрещающее правило `Read`](https://code.claude.com/docs/ru/permissions#read-and-edit) для его пути. Соответствующее запрещающее правило не позволяет ни выделенному тексту, ни уведомлению об открытом файле для этого файла попасть к Claude.

840* **Настройка Attach Open File отключена**: если вы отключите [настройку Attach Open File](#extension-settings), CLI получает путь к активному файлу только тогда, когда в нём выделен текст.

841 860 

842**Транспорт и аутентификация.** Сервер привязывается к `127.0.0.1` на случайном порту в диапазоне 10000–65535, и этот порт нельзя настроить. Транспорт и токен аутентификации работают следующим образом:861**Транспорт и аутентификация.** Сервер привязывается к `127.0.0.1` на случайном порту в диапазоне 10000–65535, и этот порт нельзя настроить. Транспорт и токен аутентификации работают следующим образом:

843 862 

workflows.md +5 −4

Details

333 333 

334Среда выполнения workflow выполняет скрипт в изолированной среде, отдельно от вашего разговора. Промежуточные результаты остаются в переменных скрипта вместо того, чтобы попадать в контекст Claude.334Среда выполнения workflow выполняет скрипт в изолированной среде, отдельно от вашего разговора. Промежуточные результаты остаются в переменных скрипта вместо того, чтобы попадать в контекст Claude.

335 335 

336Каждый запуск записывает свой скрипт в файл в каталоге вашей сессии в `~/.claude/projects/`. Claude получает путь при запуске, поэтому вы можете попросить его. Вы можете открыть этот файл, чтобы прочитать оркестровку, которую написал Claude, сравнить его с скриптом предыдущего запуска или отредактировать его и попросить Claude перезапустить с отредактированной версией.336Если Claude не запускает выполнение по пути к файлу скрипта, Claude Code записывает скрипт запуска в файл в каталоге вашей сессии в `~/.claude/projects/`. Claude получает путь к скрипту при начале запуска, поэтому вы можете попросить его. Вы можете открыть этот файл, чтобы прочитать оркестровку, которую написал Claude, сравнить его со скриптом предыдущего запуска или отредактировать его и попросить Claude перезапустить с отредактированной версией.

337 337 

338Claude может запустить workflow только из файла скрипта, который сессия уже имеет право читать. Чтобы запустить скрипт, находящийся вне вашего рабочего каталога, сначала добавьте его каталог с помощью [`/add-dir`](https://code.claude.com/docs/ru/permissions#working-directories) или [правила allow для Read](https://code.claude.com/docs/ru/permissions.md#read-and-edit).338Claude может запустить workflow только из файла скрипта, который сессия уже имеет право читать. Чтобы запустить скрипт, находящийся вне вашего рабочего каталога, сначала добавьте его каталог с помощью [`/add-dir`](https://code.claude.com/docs/ru/permissions#working-directories) или [правила allow для Read](https://code.claude.com/docs/ru/permissions.md#read-and-edit).

339 339 


387 387 

388#### Возобновить после выхода из сессии388#### Возобновить после выхода из сессии

389 389 

390Вы можете возобновить запуск в той же сессии Claude Code. То, что происходит с работающим workflow, когда вы покидаете сессию, зависит от того, как вы выходите:390Если вы переводите сессию в фоновый режим или выходите из Claude Code, пока выполняется запуск workflow, запуск не продолжается сам по себе. Запуск продолжается, только когда Claude перезапускает его с помощью вызова `Workflow`, который [воспроизводит запуск из его сохранённых результатов](#which-agents-run-again).

391 391 

392* Если вы [переводите сессию в фоновый режим](https://code.claude.com/docs/ru/agent-view.md#what-carries-over-when-you-background), Claude Code воспроизводит запуск таким же образом в фоновой сессии и продолжает его.392* **Вы перевели сессию в фоновый режим или выбрали [`Move to background and exit`](https://code.claude.com/docs/ru/agent-view#from-inside-a-session)**: если запуск не продолжился, когда вы проверяете [фоновую сессию](https://code.claude.com/docs/ru/agent-view.md#what-carries-over-when-you-background), попросите Claude там перезапустить workflow. В зависимости от вашего [режима разрешений](#approve-the-plan-before-it-runs) Claude Code сначала попросит вас подтвердить перезапуск. Если сессия отображается в разделе `Needs input` в представлении агентов, [подключитесь к ней](https://code.claude.com/docs/ru/agent-view.md#attach-to-a-session), чтобы ответить на запрос подтверждения.

393* Если вы выходите из Claude Code, пока workflow работает, и [представление агента включено](https://code.claude.com/docs/ru/agent-view.md#from-inside-a-session), диалог выхода предлагает `Move to background and exit`, который переносит запуск таким же образом. Если вы вместо этого выберете `Exit and stop tasks`, или опция не предлагается, запуск останавливается с сессией. Claude Code сохраняет сохранённые результаты запуска в каталоге этой сессии в `~/.claude/projects/`, поэтому сессия, которую вы возобновляете с помощью `claude --resume`, может воспроизвести их, когда вы попросите Claude перезапустить workflow. В сессии, которую вы запускаете заново, Claude не имеет более ранних запусков для перезапуска и запускает workflow заново как новый запуск.393* **Перезапуск в фоновой сессии завершился ошибкой `nothing to resume`**: попросите Claude запустить workflow заново как новый запуск. Если Claude начал запуск по пути к файлу скрипта вне `~/.claude/projects/`, например к файлу в вашем рабочем каталоге, Claude не может перезапустить его в фоновой сессии.

394* **Вы выбрали `Exit and stop tasks`, или вам не был предложен вариант `Move to background and exit`**: запуск остановился вместе с сессией, и Claude Code хранит сохранённые результаты запуска в каталоге этой сессии в `~/.claude/projects/`. Возобновите сессию с помощью `claude --resume` в оболочке, затем попросите Claude перезапустить workflow. В новой сессии у Claude нет более раннего запуска для перезапуска, и он запускает workflow заново.

394 395 

395В [облачной сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md) Claude Code также сохраняет результаты запуска с историей беседы сессии, которая сохраняется, когда виртуальная машина сессии освобождается. Когда вы [повторно открываете такую сессию](https://code.claude.com/docs/ru/claude-code-on-the-web.md#environment-expired) и просите Claude перезапустить workflow, завершённые агенты по-прежнему возвращают свои сохранённые результаты.396В [облачной сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md) Claude Code также сохраняет результаты запуска с историей беседы сессии, которая сохраняется, когда виртуальная машина сессии освобождается. Когда вы [повторно открываете такую сессию](https://code.claude.com/docs/ru/claude-code-on-the-web.md#environment-expired) и просите Claude перезапустить workflow, завершённые агенты по-прежнему возвращают свои сохранённые результаты.

396 397