SpyBara
Go Premium

Documentation 2026-10-09 23:02 UTC to 2026-10-10 22:01 UTC

69 files changed +1,410 −597. View all changes and history on the product overview
2026
Sat 10 23:01 Fri 9 23:02 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

187 187 

188Claude определяет, какие инструменты вызывать на основе задачи, но вы контролируете, разрешено ли выполнение этих вызовов. Вы можете автоматически одобрить определенные инструменты, полностью заблокировать другие или требовать одобрения для всего. Три опции работают вместе, чтобы определить, что работает:188Claude определяет, какие инструменты вызывать на основе задачи, но вы контролируете, разрешено ли выполнение этих вызовов. Вы можете автоматически одобрить определенные инструменты, полностью заблокировать другие или требовать одобрения для всего. Три опции работают вместе, чтобы определить, что работает:

189 189 

190* **`allowed_tools` / `allowedTools`** автоматически одобряет перечисленные инструменты. Агент только для чтения с `["Read", "Glob", "Grep"]` в списке разрешенных инструментов запускает эти инструменты без подсказок. Инструменты, не указанные в списке, все еще доступны, и вызовы к ним, которые требуют одобрения, переходят к режиму разрешения и `canUseTool`.190* **`allowed_tools` / `allowedTools`** автоматически подтверждает перечисленные инструменты. Агент только для чтения с `["Read", "Glob", "Grep"]` в списке разрешенных инструментов запускает эти инструменты без запросов, за исключением чтения из [сетевых путей](/docs/ru/permissions#network-paths). Инструменты, не указанные в списке, все еще доступны, и вызовы к ним, которые требуют подтверждения, переходят к режиму разрешений и `canUseTool`.

191* **`disallowed_tools` / `disallowedTools`** блокирует перечисленные инструменты, независимо от других настроек. См. [Разрешения](/docs/ru/agent-sdk/permissions) для порядка, в котором правила проверяются перед запуском инструмента.191* **`disallowed_tools` / `disallowedTools`** блокирует перечисленные инструменты, независимо от других настроек. См. [Разрешения](/docs/ru/agent-sdk/permissions) для порядка, в котором правила проверяются перед запуском инструмента.

192* **`permission_mode` / `permissionMode`** контролирует, сколько человеческого надзора вы хотите. SDK оценивает активный режим вместе с вашими правилами разрешения и запрета в фиксированном порядке, описанном в [Как оцениваются разрешения](/docs/ru/agent-sdk/permissions#how-permissions-are-evaluated). См. [Режим разрешения](#permission-mode) для доступных режимов.192* **`permission_mode` / `permissionMode`** контролирует, сколько человеческого надзора вы хотите. SDK оценивает активный режим вместе с вашими правилами разрешения и запрета в фиксированном порядке, описанном в [Как оцениваются разрешения](/docs/ru/agent-sdk/permissions#how-permissions-are-evaluated). См. [Режим разрешения](#permission-mode) для доступных режимов.

193 193 


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

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

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

266| `"dontAsk"` | Никогда не подсказывает. Инструменты, предварительно одобренные [правилами разрешения](/docs/ru/settings-reference#permission-settings), работают, и также работают вызовы, которые не требуют одобрения в режиме `default`, такие как чтение файлов в ваших рабочих каталогах; каждый вызов, который иначе подсказал бы, отклоняется. `AskUserQuestion`, инструменты соединителя [установленные вашей организацией на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) и инструменты MCP, отмеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), отклоняются даже если вы их разрешили | Вы хотите фиксированную, явную поверхность инструментов для безголового агента и предпочитаете жесткое отклонение молчаливой опоре на отсутствие `canUseTool` |266| `"dontAsk"` | Никогда не запрашивает разрешения. Инструменты, предварительно одобренные [правилами разрешений](/docs/ru/settings-reference#permission-settings), работают, и также работают вызовы, которые не требуют подтверждения в режиме `default`, такие как чтение файлов в ваших рабочих каталогах; каждый вызов, который иначе вызвал бы запрос разрешения, отклоняется. `AskUserQuestion`, инструменты коннекторов, [установленные вашей организацией на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), инструменты MCP, отмеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), и [чтение из сетевых путей](/docs/ru/permissions#network-paths) отклоняются, даже если вы их разрешили | Вы хотите фиксированную, явную поверхность инструментов для безголового агента и предпочитаете жесткое отклонение молчаливой опоре на отсутствие `canUseTool` |

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

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

269 269 

Details

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

425</h3>425</h3>

426 426 

427По умолчанию агент может запросить разрешение перед использованием определенных инструментов. Этот пример автоматически одобряет инструменты файловой системы только для чтения (Read, Glob, Grep), возвращая `permissionDecision: 'allow'`, позволяя им запускаться без подтверждения пользователя, в то время как оставляя все остальные инструменты подлежащими обычным проверкам разрешений:427По умолчанию агент может запросить разрешение перед использованием определенных инструментов. Этот пример автоматически одобряет инструменты файловой системы только для чтения (Read, Glob, Grep), возвращая `permissionDecision: 'allow'`, позволяя им запускаться без подтверждения пользователя, за исключением чтения из [сетевых путей](/docs/ru/permissions#network-paths), и оставляя все остальные инструменты подлежащими обычным проверкам разрешений:

428 428 

429<CodeGroup>429<CodeGroup>

430 ```python Python theme={null}430 ```python Python theme={null}

Details

43 <Step title="Allow rules">43 <Step title="Allow rules">

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

45 45 

46 Удаления `rm` и `rmdir`, нацеленные на [критический путь](/docs/ru/permission-modes#critical-paths), никогда не одобряются правилом allow. Достигают ли они вашего callback, зависит от режима разрешений: например, в сеансе Agent SDK в режиме `auto` Claude Code отклоняет их по умолчанию без вызова. Таблица режима [Critical paths](/docs/ru/permission-modes#critical-paths) перечисляет, что каждый режим с ними делает.46 Удаления `rm` и `rmdir`, нацеленные на [критический путь](/docs/ru/permission-modes#critical-paths), никогда не одобряются правилом allow. Достигают ли они вашего callback, зависит от режима разрешений: например, в сессии Agent SDK в режиме `auto` Claude Code отклоняет их по умолчанию без вызова. Таблица режима [Critical paths](/docs/ru/permission-modes#critical-paths) перечисляет, что каждый режим с ними делает.

47 

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

47 </Step>49 </Step>

48 50 

49 <Step title="canUseTool callback">51 <Step title="canUseTool callback">


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

61 63 

62* `permissionMode: 'bypassPermissions'`, который автоматически одобряет каждый вызов, достигающий шага режима разрешений, кроме [действий, которые ни один режим не одобряет автоматически](/docs/ru/permission-modes#actions-no-mode-auto-approves)64* `permissionMode: 'bypassPermissions'`, который автоматически одобряет каждый вызов, достигающий шага режима разрешений, кроме [действий, которые ни один режим не одобряет автоматически](/docs/ru/permission-modes#actions-no-mode-auto-approves)

63* Каждая запись `allowedTools` без спецификатора, такая как `"Read"`, которая автоматически одобряет весь этот инструмент перед консультацией callback, кроме [действий, которые ни один режим не одобряет автоматически](/docs/ru/permission-modes#actions-no-mode-auto-approves)65* Каждая запись `allowedTools` без спецификатора, такая как `"Read"`, которая автоматически одобряет весь этот инструмент перед консультацией callback, кроме [действий, которые ни один режим не одобряет автоматически](/docs/ru/permission-modes#actions-no-mode-auto-approves) и [чтения из сетевых путей](/docs/ru/permissions#network-paths)

64 66 

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

66 68 


79 81 

80| Опция | Эффект |82| Опция | Эффект |

81| :- | :- |83| :- | :- |

82| `allowed_tools=["Read", "Grep"]` | `Read` и `Grep` автоматически одобрены. Другие инструменты, не указанные здесь, по-прежнему существуют, и вызовы к ним, требующие одобрения, переходят в режим разрешений и `canUseTool`. |84| `allowed_tools=["Read", "Grep"]` | `Read` и `Grep` автоматически одобрены, за исключением [чтения из сетевых путей](/docs/ru/permissions#network-paths). Другие инструменты, не указанные здесь, по-прежнему существуют, и вызовы к ним, требующие одобрения, переходят в режим разрешений и `canUseTool`. |

83| `disallowed_tools=["Bash"]` | Определение инструмента `Bash` удаляется из запроса. Claude не видит инструмент и не может попытаться его использовать. |85| `disallowed_tools=["Bash"]` | Определение инструмента `Bash` удаляется из запроса. Claude не видит инструмент и не может попытаться его использовать. |

84| `disallowed_tools=["Bash(rm *)"]` | `Bash` остается доступным. Вызовы, соответствующие `rm *` [как написано](/docs/ru/permissions#bash-rule-limits), отклоняются в каждом режиме разрешений, включая `bypassPermissions`. Другие вызовы `Bash`, включая `/bin/rm`, переходят в режим разрешений. |86| `disallowed_tools=["Bash(rm *)"]` | `Bash` остается доступным. Вызовы, соответствующие `rm *` [как написано](/docs/ru/permissions#bash-rule-limits), отклоняются в каждом режиме разрешений, включая `bypassPermissions`. Другие вызовы `Bash`, включая `/bin/rm`, переходят в режим разрешений. |

85| `disallowed_tools=["*"]` | Каждое определение инструмента удаляется из запроса. Глобы имен инструментов поддерживаются в правилах запрета: `"*"` соответствует каждому инструменту и `"mcp__*"` соответствует каждому инструменту MCP на всех серверах. |87| `disallowed_tools=["*"]` | Каждое определение инструмента удаляется из запроса. Глобы имен инструментов поддерживаются в правилах запрета: `"*"` соответствует каждому инструменту и `"mcp__*"` соответствует каждому инструменту MCP на всех серверах. |


95 97 

96 Правило разрешения никогда не одобряет автоматически `AskUserQuestion`, инструменты MCP, отмеченные [`_meta["anthropic/requiresUserInteraction"]`](/docs/ru/mcp#require-approval-for-a-specific-tool), инструменты соединителя [которые ваша организация установила на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), или удаления `rm` и `rmdir`, нацеленные на [критический путь](/docs/ru/permission-modes#critical-paths). В режиме `dontAsk` Claude Code отклоняет эти вызовы без вызова обратного вызова. В других режимах первые три достигают обратного вызова. В зависимости от [режима разрешений](/docs/ru/permission-modes#critical-paths), удаление критического пути либо достигает обратного вызова, либо Claude Code отклоняет его без вызова, как это происходит по умолчанию для сеанса Agent SDK в режиме `auto`.98 Правило разрешения никогда не одобряет автоматически `AskUserQuestion`, инструменты MCP, отмеченные [`_meta["anthropic/requiresUserInteraction"]`](/docs/ru/mcp#require-approval-for-a-specific-tool), инструменты соединителя [которые ваша организация установила на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), или удаления `rm` и `rmdir`, нацеленные на [критический путь](/docs/ru/permission-modes#critical-paths). В режиме `dontAsk` Claude Code отклоняет эти вызовы без вызова обратного вызова. В других режимах первые три достигают обратного вызова. В зависимости от [режима разрешений](/docs/ru/permission-modes#critical-paths), удаление критического пути либо достигает обратного вызова, либо Claude Code отклоняет его без вызова, как это происходит по умолчанию для сеанса Agent SDK в режиме `auto`.

97 99 

98 Охват зависит от формы записи: простое имя, такое как `Read` или `mcp__github__get_issue`, автоматически одобряет каждый вызов этого инструмента, кроме исключений выше, в то время как правило с областью действия, такое как `Bash(npm test *)`, автоматически одобряет только совпадающие вызовы, и другие вызовы `Bash`, требующие одобрения, по-прежнему переходят в обратный вызов. Для проверок, которые должны выполняться при каждом вызове инструмента, используйте [хук `PreToolUse`](/docs/ru/agent-sdk/hooks): хуки выполняются перед каждым другим шагом, и отказ хука применяется даже в режиме `bypassPermissions`.100 Охват зависит от формы записи: простое имя, такое как `Read` или `mcp__github__get_issue`, автоматически одобряет каждый вызов этого инструмента, кроме указанных исключений и [чтения из сетевых путей](/docs/ru/permissions#network-paths), в то время как правило с областью действия, такое как `Bash(npm test *)`, автоматически одобряет только совпадающие вызовы, и другие вызовы `Bash`, требующие одобрения, по-прежнему переходят в обратный вызов. Для проверок, которые должны выполняться при каждом вызове инструмента, используйте [хук `PreToolUse`](/docs/ru/agent-sdk/hooks): хуки выполняются перед каждым другим шагом, и отказ хука применяется даже в режиме `bypassPermissions`.

99</Warning>101</Warning>

100 102 

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


107};109};

108```110```

109 111 

110Перечисленные инструменты одобрены, кроме [действий, которые ни один режим не одобряет автоматически](/docs/ru/permission-modes#actions-no-mode-auto-approves), и каждый другой вызов, который будет запрашивать, вместо этого отклоняется. Вызовы, которые не требуют одобрения в режиме `default`, выполняются независимо от того, указаны ли они в списке, такие как [команды Bash только для чтения](/docs/ru/permissions#read-only-commands), инструменты, такие как `Agent`, которые не спрашивают перед запуском, и чтение файлов в ваших рабочих каталогах. Чтобы полностью исключить инструмент из досягаемости Claude, добавьте его простое имя в `disallowedTools`.112Перечисленные инструменты одобрены, кроме [действий, которые ни один режим не одобряет автоматически](/docs/ru/permission-modes#actions-no-mode-auto-approves), и [чтения из сетевых путей](/docs/ru/permissions#network-paths), а каждый другой вызов, который запросил бы подтверждение, вместо этого отклоняется. Вызовы, которые не требуют одобрения в режиме `default`, выполняются независимо от того, указаны ли они в списке, такие как [команды Bash только для чтения](/docs/ru/permissions#read-only-commands), инструменты, такие как `Agent`, которые не спрашивают перед запуском, и чтение файлов в ваших рабочих каталогах. Чтобы полностью удалить инструмент из запроса, добавьте его простое имя в `disallowedTools`.

111 113 

112<Warning>114<Warning>

113 **`allowed_tools` не ограничивает `bypassPermissions`.** `allowed_tools` предварительно одобряет инструменты, которые вы указали. Другие неуказанные инструменты не совпадают ни с одним правилом разрешения и переходят в режим разрешений, где `bypassPermissions` их одобряет. Установка `allowed_tools=["Read"]` наряду с `permission_mode="bypassPermissions"` по-прежнему одобряет каждый инструмент, включая `Bash`, `Write` и `Edit`. Если вам нужен `bypassPermissions`, но вы хотите заблокировать определенные инструменты, используйте `disallowed_tools`.115 **`allowed_tools` не ограничивает `bypassPermissions`.** `allowed_tools` предварительно одобряет инструменты, которые вы указали. Другие неуказанные инструменты не совпадают ни с одним правилом разрешения и переходят в режим разрешений, где `bypassPermissions` их одобряет. Установка `allowed_tools=["Read"]` наряду с `permission_mode="bypassPermissions"` по-прежнему одобряет каждый инструмент, включая `Bash`, `Write` и `Edit`. Если вам нужен `bypassPermissions`, но вы хотите заблокировать определенные инструменты, используйте `disallowed_tools`.


139| Режим | Описание | Поведение инструмента |141| Режим | Описание | Поведение инструмента |

140| :- | :- | :- |142| :- | :- | :- |

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

142| `dontAsk` | Отклонить вместо запроса | Любой вызов, который иначе запросил бы подтверждение, отклоняется. Вызовы, одобренные `allowed_tools` или правилами, выполняются, как и вызовы, не требующие одобрения в режиме `default`, такие как чтение файлов внутри рабочих каталогов и вызовы `Agent`. Инструменты соединителя [установленные вашей организацией на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) и инструменты, требующие взаимодействия с пользователем, отклоняются даже если вы их предварительно одобрили, как и удаления `rm` и `rmdir`, нацеленные на [критический путь](/docs/ru/permission-modes#critical-paths). `canUseTool` никогда не вызывается |144| `dontAsk` | Отклонить вместо запроса | Любой вызов, который иначе запросил бы подтверждение, отклоняется. Вызовы, одобренные `allowed_tools` или правилами, выполняются, как и вызовы, не требующие одобрения в режиме `default`; инструменты коннектора, [установленные вашей организацией на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), и инструменты, требующие взаимодействия с пользователем, отклоняются, даже если вы их предварительно одобрили, как и [чтение из сетевых путей](/docs/ru/permissions#network-paths) и удаления `rm` и `rmdir`, нацеленные на [критический путь](/docs/ru/permission-modes#critical-paths). `canUseTool` никогда не вызывается |

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

144| `bypassPermissions` | Обойти проверки разрешений | Инструменты выполняются без запросов разрешений, за исключением [действий, которые ни один режим не одобряет автоматически](/docs/ru/permission-modes#actions-no-mode-auto-approves). Используйте с осторожностью |146| `bypassPermissions` | Обойти проверки разрешений | Инструменты выполняются без запросов разрешений, за исключением [действий, которые ни один режим не одобряет автоматически](/docs/ru/permission-modes#actions-no-mode-auto-approves). Используйте с осторожностью |

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


286 Режим не спрашивать (`dontAsk`)288 Режим не спрашивать (`dontAsk`)

287</h4>289</h4>

288 290 

289Преобразует любой запрос разрешения в отклонение без вызова `canUseTool`. Инструменты, предварительно одобренные `allowed_tools`, правилами разрешения в `settings.json` или hook, выполняются нормально, как и вызовы, не требующие одобрения в режиме `default`, такие как чтение файлов внутри рабочих каталогов и вызовы `Agent`. Инструменты соединителя [установленные вашей организацией на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), инструменты, требующие взаимодействия с пользователем, и удаления `rm` и `rmdir`, нацеленные на [критический путь](/docs/ru/permission-modes#critical-paths), отклоняются даже когда правило разрешения совпадает. Разрешение hook `PreToolUse` также не очищает удаление критического пути.291Преобразует любой запрос разрешения в отклонение без вызова `canUseTool`. Инструменты, предварительно одобренные `allowed_tools`, правилами разрешения в `settings.json` или хуком, выполняются нормально, как и вызовы, не требующие одобрения в режиме `default`, такие как чтение файлов внутри рабочих каталогов и вызовы `Agent`. Инструменты коннектора, [установленные вашей организацией на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), инструменты, требующие взаимодействия с пользователем, [чтение из сетевых путей](/docs/ru/permissions#network-paths) и удаления `rm` и `rmdir`, нацеленные на [критический путь](/docs/ru/permission-modes#critical-paths), отклоняются, даже когда правило разрешения совпадает. Разрешение хука `PreToolUse` также не снимает запрет ни на удаление критического пути, ни на чтение из сетевого пути.

290 292 

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

292 294 

Details

518 print(session.summary)518 print(session.summary)

519```519```

520 520 

521<h3 id="fork_session">

522 `fork_session()`

523</h3>

524 

525Копирует транскрипт сессии в новую сессию, чтобы вы могли направить диалог в другую сторону, а исходная сессия осталась без изменений. Чтобы создать ответвление от более ранней точки диалога, передайте `up_to_message_id`. Синхронно.

526 

527```python theme={null}

528def fork_session(

529 session_id: str,

530 directory: str | None = None,

531 up_to_message_id: str | None = None,

532 title: str | None = None,

533) -> ForkSessionResult

534```

535 

536<h4 id="parameters-9">

537 Параметры

538</h4>

539 

540| Параметр | Тип | По умолчанию | Описание |

541| :- | :- | :- | :- |

542| `session_id` | `str` | обязательно | UUID сессии для форка |

543| `directory` | `str \| None` | `None` | Путь каталога проекта. Если опущено, ищет во всех каталогах проектов |

544| `up_to_message_id` | `str \| None` | `None` | Копировать транскрипт до сообщения с этим UUID включительно, например `uuid` из [`get_session_messages()`](#get_session_messages). Если опущено, копирует весь транскрипт |

545| `title` | `str \| None` | `None` | Название форка. Если опущено, SDK формирует его из исходной сессии с добавлением `(fork)` |

546 

547Возвращает `ForkSessionResult`, в котором `session_id` — это UUID новой сессии. Передайте его как [`resume`](#claudeagentoptions), чтобы продолжить форк. Форк не включает [чекпоинты файлов](/docs/ru/agent-sdk/file-checkpointing) исходной сессии, поэтому вы не сможете откатить его к чекпоинту, созданному до форка.

548 

549`fork_session()` вызывает:

550 

551* `ValueError`: `session_id` или `up_to_message_id` не является допустимым UUID

552* `ValueError`: в сессии нет сообщений, или `up_to_message_id` не соответствует ни одному сообщению в транскрипте

553* `FileNotFoundError`: сессия не найдена

554 

555<h4 id="example-8">

556 Пример

557</h4>

558 

559Создайте форк самой последней сессии с новым названием, затем возобновите форк. Исходная сессия сохраняет собственную историю.

560 

561```python theme={null}

562from claude_agent_sdk import fork_session, list_sessions

563 

564sessions = list_sessions(directory="/path/to/project", limit=1)

565if sessions:

566 forked = fork_session(sessions[0].session_id, title="Try the OAuth approach")

567 print(forked.session_id) # pass as ClaudeAgentOptions(resume=...) to continue the fork

568```

569 

521<h2 id="classes">570<h2 id="classes">

522 Классы571 Классы

523</h2>572</h2>


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

920| :- | :- | :- | :- |969| :- | :- | :- | :- |

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

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

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

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

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


1849* `terminal_reason`: почему цикл запроса закончился, например `"completed"`, `"max_turns"`, `"api_error"`, `"aborted_streaming"` или `"aborted_tools"`. Значение `"aborted_streaming"` или `"aborted_tools"` означает, что ход был прерван до завершения. Частые причины - [`interrupt()`](#claudesdkclient) и callback разрешения, возвращающий [`PermissionResultDeny`](#permissionresultdeny) с `interrupt=True`. `None` на версиях CLI, которые предшествуют полю, на результатах локальных команд, таких как `/voice` или `/usage`, которые обходят цикл запроса, или на синтезированных результатах ошибок, выданных при критическом отказе сеанса. Зеркалирует [`SDKResultMessage.terminal_reason`](/docs/ru/agent-sdk/typescript#sdkresultmessage) TypeScript SDK, который перечисляет полный набор значений.1898* `terminal_reason`: почему цикл запроса закончился, например `"completed"`, `"max_turns"`, `"api_error"`, `"aborted_streaming"` или `"aborted_tools"`. Значение `"aborted_streaming"` или `"aborted_tools"` означает, что ход был прерван до завершения. Частые причины - [`interrupt()`](#claudesdkclient) и callback разрешения, возвращающий [`PermissionResultDeny`](#permissionresultdeny) с `interrupt=True`. `None` на версиях CLI, которые предшествуют полю, на результатах локальных команд, таких как `/voice` или `/usage`, которые обходят цикл запроса, или на синтезированных результатах ошибок, выданных при критическом отказе сеанса. Зеркалирует [`SDKResultMessage.terminal_reason`](/docs/ru/agent-sdk/typescript#sdkresultmessage) TypeScript SDK, который перечисляет полный набор значений.

1850* `origin`: происхождение пользовательского сообщения, которое запустило этот ход. В [режиме потоковой передачи входных данных](/docs/ru/agent-sdk/streaming-vs-single-mode) проверьте это, чтобы отличить результат вашего собственного запроса, где `origin` равен `None` или `{"kind": "human"}`, от результата внедренного хода, такого как уведомление фоновой задачи. Требуется Python Agent SDK 0.2.137 или позже.1899* `origin`: происхождение пользовательского сообщения, которое запустило этот ход. В [режиме потоковой передачи входных данных](/docs/ru/agent-sdk/streaming-vs-single-mode) проверьте это, чтобы отличить результат вашего собственного запроса, где `origin` равен `None` или `{"kind": "human"}`, от результата внедренного хода, такого как уведомление фоновой задачи. Требуется Python Agent SDK 0.2.137 или позже.

1851 1900 

1901Когда несколько фоновых задач завершаются почти одновременно, Claude Code может ответить на их уведомления за один ход, а не за отдельный ход на каждое. Вы всё равно получаете по одному `ResultMessage` на каждое уведомление, по порядку, и у каждого из них `origin` имеет `kind`, равный `"task-notification"`. У всех, кроме последнего, `num_turns` равен `0`, а `result` пуст, а последний содержит ход, который отвечает на все из них.

1902 

1852Словарь `usage` охватывает только основной цикл агента и исключает подагентов и другие вложенные или вспомогательные вызовы модели. В [режиме потоковой передачи входных данных](/docs/ru/agent-sdk/streaming-vs-single-mode) значения указаны за ход. Предпочитайте `model_usage` для учета токенов и стоимости. Словарь `usage` содержит следующие ключи, если они присутствуют:1903Словарь `usage` охватывает только основной цикл агента и исключает подагентов и другие вложенные или вспомогательные вызовы модели. В [режиме потоковой передачи входных данных](/docs/ru/agent-sdk/streaming-vs-single-mode) значения указаны за ход. Предпочитайте `model_usage` для учета токенов и стоимости. Словарь `usage` содержит следующие ключи, если они присутствуют:

1853 1904 

1854| Ключ | Тип | Описание |1905| Ключ | Тип | Описание |

Details

358* [`renameSession()`](/docs/ru/agent-sdk/typescript#renamesession)358* [`renameSession()`](/docs/ru/agent-sdk/typescript#renamesession)

359* [`tagSession()`](/docs/ru/agent-sdk/typescript#tagsession)359* [`tagSession()`](/docs/ru/agent-sdk/typescript#tagsession)

360* [`deleteSession()`](/docs/ru/agent-sdk/typescript)360* [`deleteSession()`](/docs/ru/agent-sdk/typescript)

361* [`forkSession()`](/docs/ru/agent-sdk/typescript)361* [`forkSession()`](/docs/ru/agent-sdk/typescript#forksession)

362* [`listSubagents()`](/docs/ru/agent-sdk/typescript)362* [`listSubagents()`](/docs/ru/agent-sdk/typescript)

363* [`getSubagentMessages()`](/docs/ru/agent-sdk/typescript)363* [`getSubagentMessages()`](/docs/ru/agent-sdk/typescript)

364 364 

Details

293 293 

294 Вы можете возобновить из любого рабочего каталога:294 Вы можете возобновить из любого рабочего каталога:

295 295 

296 * **Поиск между каталогами**: Claude Code ищет за пределами текущего каталога проекта, чтобы найти ID; смотрите [Resume a session](/docs/ru/sessions#resume-a-session) для точного порядка поиска и того, как обрабатываются дублирующиеся копии.296 * **Поиск между каталогами**: Claude Code ищет ID за пределами текущего каталога проекта; смотрите [Resume a session](/docs/ru/sessions#where-the-session-picker-looks), чтобы узнать точный порядок поиска и то, как обрабатываются дублирующиеся копии.

297 * **Только на одной машине**: файл сеанса по-прежнему должен существовать на текущей машине.297 * **Только на одной машине**: файл сеанса по-прежнему должен существовать на текущей машине.

298 298 

299 До v2.1.223 поиск был ограничен текущим каталогом проекта и его git worktrees; версии SDK, которые включают более старый CLI, по-прежнему ведут себя таким образом.299 До v2.1.223 поиск был ограничен текущим каталогом проекта и его git worktrees; версии SDK, которые включают более старый CLI, по-прежнему ведут себя таким образом.


423 423 

424* **Переместите файл сеанса.** Сохраните `~/.claude/projects/<encoded-cwd>/<session-id>.jsonl` из первого запуска и восстановите его внутри любой директории под `~/.claude/projects/` на новом хосте перед вызовом `resume`.424* **Переместите файл сеанса.** Сохраните `~/.claude/projects/<encoded-cwd>/<session-id>.jsonl` из первого запуска и восстановите его внутри любой директории под `~/.claude/projects/` на новом хосте перед вызовом `resume`.

425 425 

426 Claude Code ищет за пределами текущей директории проекта, чтобы найти ID; см. [Возобновите сеанс](/docs/ru/sessions#resume-a-session) для точного порядка поиска и того, как обрабатываются дублирующиеся копии. До версии v2.1.223 поиск был ограничен текущей директорией проекта и её git worktrees; версии SDK, которые поставляются со старым CLI, по-прежнему ведут себя таким образом.426 Claude Code ищет за пределами текущего каталога проекта, чтобы найти ID; см. [Возобновите сессию](/docs/ru/sessions#where-the-session-picker-looks) для точного порядка поиска и того, как обрабатываются дублирующиеся копии. До версии v2.1.223 поиск был ограничен текущим каталогом проекта и его git worktree; версии SDK, которые поставляются со старым CLI, по-прежнему ведут себя таким образом.

427 427 

428* **Не полагайтесь на возобновление сеанса.** Захватите результаты, которые вам нужны (вывод анализа, решения, различия файлов) как состояние приложения и передайте их в запрос свежего сеанса. Это часто более надёжно, чем отправка файлов стенограмм.428* **Не полагайтесь на возобновление сеанса.** Захватите результаты, которые вам нужны (вывод анализа, решения, различия файлов) как состояние приложения и передайте их в запрос свежего сеанса. Это часто более надёжно, чем отправка файлов стенограмм.

429 429 

Details

124 124 

125Без включенных частичных сообщений вы получаете все типы сообщений, кроме `StreamEvent`. Распространенные типы включают `SystemMessage` (инициализация сеанса), `AssistantMessage` (полные блоки содержимого), `ResultMessage` (финальный результат) и компактное граничное сообщение, указывающее на то, когда история разговора была сжата (`SDKCompactBoundaryMessage` в TypeScript; `SystemMessage` с подтипом `"compact_boundary"` в Python).125Без включенных частичных сообщений вы получаете все типы сообщений, кроме `StreamEvent`. Распространенные типы включают `SystemMessage` (инициализация сеанса), `AssistantMessage` (полные блоки содержимого), `ResultMessage` (финальный результат) и компактное граничное сообщение, указывающее на то, когда история разговора была сжата (`SDKCompactBoundaryMessage` в TypeScript; `SystemMessage` с подтипом `"compact_boundary"` в Python).

126 126 

127<h3 id="handle-a-stream-that’s-cut-off">

128 Обработка оборванного потока

129</h3>

130 

131Если поток обрывается посреди сообщения, например когда вы прерываете ход или разрывается соединение, вы всё равно получаете `message_stop` этого сообщения до завершения хода. Оборванный текстовый блок или блок размышлений также получает свой `content_block_stop`. Оборванный вызов инструмента его не получает, поэтому если `message_stop` поступает, пока блок вызова инструмента ещё открыт, считайте входные данные этого вызова неполными.

132 

133До Claude Code v2.1.290 оборванный поток мог завершить ход без `message_stop`, поэтому ответ, который вы отображаете на основе событий потока, мог оставаться показанным как выполняющийся. TypeScript Agent SDK включает Claude Code v2.1.290 или новее начиная с v0.3.290, а Python Agent SDK — начиная с v0.2.164. Если ответ остается показанным как выполняющийся после завершения хода, обновите SDK.

134 

127<h2 id="stream-tool-calls">135<h2 id="stream-tool-calls">

128 Потоковая передача вызовов инструментов136 Потоковая передача вызовов инструментов

129</h2>137</h2>

Details

464| `tag` | `string \| null` | обязательно | Строка тега или `null` для очистки |464| `tag` | `string \| null` | обязательно | Строка тега или `null` для очистки |

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

466 466 

467<h3 id="forksession">

468 `forkSession()`

469</h3>

470 

471Копирует транскрипт сессии в новую сессию, чтобы вы могли направить диалог в другую сторону, а исходная сессия осталась без изменений. Чтобы создать ответвление от более ранней точки диалога, передайте `upToMessageId`.

472 

473```typescript theme={null}

474function forkSession(

475 sessionId: string,

476 options?: ForkSessionOptions

477): Promise<ForkSessionResult>;

478```

479 

480<h4 id="parameters-10">

481 Параметры

482</h4>

483 

484| Параметр | Тип | По умолчанию | Описание |

485| :- | :- | :- | :- |

486| `sessionId` | `string` | обязательно | UUID сессии, от которой создаётся ответвление |

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

488| `options.upToMessageId` | `string` | `undefined` | Скопировать транскрипт до сообщения с этим `uuid` включительно: значение из [`getSessionMessages()`](#getsessionmessages) или `uuid`, который вы задали для потокового [`SDKUserMessage`](#sdkusermessage). Если опущено, копируется весь транскрипт |

489| `options.title` | `string` | `undefined` | Название ответвления. Если опущено, SDK формирует его из исходной сессии с добавлением `(fork)` |

490 

491Возвращает `{ sessionId }` — UUID новой сессии. Передайте его как [`resume`](#options), чтобы продолжить ответвление. Ответвление не включает [файловые чекпоинты](/docs/ru/agent-sdk/file-checkpointing) исходной сессии, поэтому его нельзя откатить к чекпоинту, созданному до ответвления.

492 

493`forkSession()` выбрасывает исключение, когда:

494 

495* `sessionId` не является UUID

496* сессия не найдена или не содержит сообщений

497* `upToMessageId` не соответствует ни одному сообщению в транскрипте

498 

467<h3 id="resolvesettings">499<h3 id="resolvesettings">

468 `resolveSettings()`500 `resolveSettings()`

469</h3>501</h3>


486): Promise<ResolvedSettings>;518): Promise<ResolvedSettings>;

487```519```

488 520 

489<h4 id="parameters-10">521<h4 id="parameters-11">

490 Параметры522 Параметры

491</h4>523</h4>

492 524 


547| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Программное определение субагентов |579| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Программное определение субагентов |

548| `agentProgressSummaries` | `boolean` | `false` | При значении `true` генерирует однострочные сводки о ходе работы субагентов и передаёт их в событиях [`task_progress`](#sdktaskprogressmessage) через поле `summary`. Применяется к субагентам переднего плана и фоновым субагентам |580| `agentProgressSummaries` | `boolean` | `false` | При значении `true` генерирует однострочные сводки о ходе работы субагентов и передаёт их в событиях [`task_progress`](#sdktaskprogressmessage) через поле `summary`. Применяется к субагентам переднего плана и фоновым субагентам |

549| `allowDangerouslySkipPermissions` | `boolean` | `false` | Разрешает обход разрешений. Требуется при использовании `permissionMode: 'bypassPermissions'` — при запуске или позже через `setPermissionMode()`. О взаимодействии с `permissionMode: 'plan'` см. [режим планирования](/docs/ru/agent-sdk/permissions#plan-mode-plan) |581| `allowDangerouslySkipPermissions` | `boolean` | `false` | Разрешает обход разрешений. Требуется при использовании `permissionMode: 'bypassPermissions'` — при запуске или позже через `setPermissionMode()`. О взаимодействии с `permissionMode: 'plan'` см. [режим планирования](/docs/ru/agent-sdk/permissions#plan-mode-plan) |

550| `allowedTools` | `string[]` | `[]` | Инструменты, автоматически одобряемые без запроса. Это не ограничивает Claude только этими инструментами. Если указать здесь один из [инструментов отслеживания задач](/docs/ru/agent-sdk/todo-tracking#model-availability), Claude Code также включает их для сессии. Прочие неперечисленные инструменты обрабатываются через `permissionMode` и `canUseTool`. Для блокировки инструментов используйте `disallowedTools`. См. [Разрешения](/docs/ru/agent-sdk/permissions#allow-and-deny-rules) |582| `allowedTools` | `string[]` | `[]` | Инструменты, которые автоматически одобряются без запроса, за исключением чтения из [сетевых путей](/docs/ru/permissions#network-paths). Это не ограничивает Claude только этими инструментами. Если указать здесь один из [инструментов отслеживания задач](/docs/ru/agent-sdk/todo-tracking#model-availability), Claude Code также включит их для сессии. Остальные неперечисленные инструменты обрабатываются через `permissionMode` и `canUseTool`. Для блокировки инструментов используйте `disallowedTools`. См. [Разрешения](/docs/ru/agent-sdk/permissions#allow-and-deny-rules) |

551| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Включить бета-функции |583| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Включить бета-функции |

552| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Пользовательская функция разрешений, вызываемая только тогда, когда [процесс проверки разрешений](/docs/ru/agent-sdk/permissions#how-permissions-are-evaluated) доходит до запроса. Не вызывается для вызовов, автоматически одобренных через `allowedTools`, правила разрешения или `permissionMode`. Правило разрешения не одобряет заранее [действия, которые не одобряет автоматически ни один режим](/docs/ru/permission-modes#actions-no-mode-auto-approves). Подробнее см. [`CanUseTool`](#canusetool) |584| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Пользовательская функция разрешений, вызываемая только тогда, когда [процесс проверки разрешений](/docs/ru/agent-sdk/permissions#how-permissions-are-evaluated) доходит до запроса. Не вызывается для вызовов, автоматически одобренных через `allowedTools`, правила разрешения или `permissionMode`. Правило разрешения не одобряет заранее [действия, которые не одобряет автоматически ни один режим](/docs/ru/permission-modes#actions-no-mode-auto-approves). Подробнее см. [`CanUseTool`](#canusetool) |

553| `continue` | `boolean` | `false` | Продолжить последний диалог |585| `continue` | `boolean` | `false` | Продолжить последний диалог |


1588 1620 

1589Сопоставляйте сообщения субагента с событиями его задачи по `agent_id`, а не по паре `parent_tool_use_id` сообщения и `tool_use_id` события задачи. Когда вызов инструмента возобновляет субагента, события задачи несут `tool_use_id` этого вызова, а сообщения сохраняют `parent_tool_use_id` вызова инструмента, который впервые запустил субагента, поэтому эти значения перестают совпадать.1621Сопоставляйте сообщения субагента с событиями его задачи по `agent_id`, а не по паре `parent_tool_use_id` сообщения и `tool_use_id` события задачи. Когда вызов инструмента возобновляет субагента, события задачи несут `tool_use_id` этого вызова, а сообщения сохраняют `parent_tool_use_id` вызова инструмента, который впервые запустил субагента, поэтому эти значения перестают совпадать.

1590 1622 

1591Claude Code устанавливает `user_message_uuid` и `user_message_uuids` в первом сообщении ассистента в ходе при условиях, описанных в [`user_message_uuid`](#user_message_uuid). Когда Claude Code повторно запускает ход, прерванный перезапуском, сообщения ассистента повторного запуска, которые содержат эти поля, также содержат [`resume_reason`](#resume_reason).1623Claude Code задаёт `user_message_uuid` и `user_message_uuids` в первом сообщении ассистента в ходе при условиях, описанных в [`user_message_uuid`](#user_message_uuid). Когда ход продолжает другой ход, прерванный перезапуском, сообщения ассистента, несущие эти поля, несут также [`resume_reason`](#resume_reason).

1592 1624 

1593`timestamp` — это время в формате ISO 8601, когда содержимое сообщения закончило генерироваться в процессе, который его создал. Значение берётся с часов этой машины, поэтому используйте его только для отображения и не упорядочивайте сообщения по нему. Один ход API может создать несколько сообщений ассистента с одинаковым `message.id`, каждое со своим `timestamp`. Когда это поле отсутствует, используйте время получения сообщения.1625`timestamp` — это время в формате ISO 8601, когда содержимое сообщения закончило генерироваться в процессе, который его создал. Значение берётся с часов этой машины, поэтому используйте его только для отображения и не упорядочивайте сообщения по нему. Один ход API может создать несколько сообщений ассистента с одинаковым `message.id`, каждое со своим `timestamp`. Когда это поле отсутствует, используйте время получения сообщения.

1594 1626 


1631 1663 

1632Задайте `inline_pastes`, чтобы сообщить Claude Code, какие части `message.content` пользователь вставил, а не набрал, — по одной строке на каждую вставку. Текст промпта остаётся там, где его поместил пользователь. Claude Code может обернуть каждую перечисленную вставку в теги `<pasted_content>` на её месте, чтобы Claude мог отличить вставленный материал от собственных слов пользователя. Оборачиваются только вставки в последнем текстовом блоке промпта. Требуется TypeScript Agent SDK v0.3.280 или новее.1664Задайте `inline_pastes`, чтобы сообщить Claude Code, какие части `message.content` пользователь вставил, а не набрал, — по одной строке на каждую вставку. Текст промпта остаётся там, где его поместил пользователь. Claude Code может обернуть каждую перечисленную вставку в теги `<pasted_content>` на её месте, чтобы Claude мог отличить вставленный материал от собственных слов пользователя. Оборачиваются только вставки в последнем текстовом блоке промпта. Требуется TypeScript Agent SDK v0.3.280 или новее.

1633 1665 

1666У каждого поля вставки есть ограничение размера:

1667 

1668* `pasted_content`: если записей вместе с блоками содержимого внутри них больше 1000, Claude Code игнорирует всё поле.

1669* `inline_pastes`: Claude Code использует первые 100 непустых записей и игнорирует остальные.

1670 

1634Задайте `shouldQuery`, `client_composed` или `priority`, чтобы изменить то, как Claude Code обрабатывает отправленное вами сообщение:1671Задайте `shouldQuery`, `client_composed` или `priority`, чтобы изменить то, как Claude Code обрабатывает отправленное вами сообщение:

1635 1672 

1636* `shouldQuery`: установите его в `false`, чтобы добавить сообщение в транскрипт без запуска хода ассистента. Сообщение удерживается и объединяется со следующим пользовательским сообщением, которое запускает ход. Используйте это для внедрения контекста, например вывода команды, которую вы запустили вне основного канала, не тратя на это вызов модели.1673* `shouldQuery`: установите его в `false`, чтобы добавить сообщение в транскрипт без запуска хода ассистента. Сообщение удерживается и объединяется со следующим пользовательским сообщением, которое запускает ход. Используйте это для внедрения контекста, например вывода команды, которую вы запустили вне основного канала, не тратя на это вызов модели.


1661* Вызов WebFetch или WebSearch, который Claude Code перенёс в фон, чтобы доставить сообщение `'now'`: в пользовательском сообщении, содержащем `tool_result` этого вызова, `tool_use_result` имеет значение `{ detachedToolCall: true }`. Вызов всё ещё выполняется, и Claude получит его результат после завершения. Второго `tool_result` для этого `tool_use_id` не последует, поэтому, если ваше приложение отображает строку для каждого вызова инструмента, пометьте эту строку как перенесённую в фон при получении этого сообщения. Требуется Claude Code v2.1.287 или новее.1698* Вызов WebFetch или WebSearch, который Claude Code перенёс в фон, чтобы доставить сообщение `'now'`: в пользовательском сообщении, содержащем `tool_result` этого вызова, `tool_use_result` имеет значение `{ detachedToolCall: true }`. Вызов всё ещё выполняется, и Claude получит его результат после завершения. Второго `tool_result` для этого `tool_use_id` не последует, поэтому, если ваше приложение отображает строку для каждого вызова инструмента, пометьте эту строку как перенесённую в фон при получении этого сообщения. Требуется Claude Code v2.1.287 или новее.

1662* Инструмент MCP, результат которого содержит блоки `resource_link`: `tool_use_result` — объект с массивом `resourceLinks` из записей [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude получает каждую ссылку в виде строки текста в блоке `tool_result`, поэтому считывайте `resourceLinks`, чтобы отобразить файлы, возвращённые сервером, вместо разбора этого текста. Claude Code опускает `resourceLinks`, когда в результате нет ссылок, а также в результатах от субагентов, хранит не более 50 ссылок на результат и прекращает добавлять ссылки, когда массив достигает 64 КиБ сериализованного JSON. Для `resourceLinks` требуется Agent SDK v0.3.257 или новее.1699* Инструмент MCP, результат которого содержит блоки `resource_link`: `tool_use_result` — объект с массивом `resourceLinks` из записей [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude получает каждую ссылку в виде строки текста в блоке `tool_result`, поэтому считывайте `resourceLinks`, чтобы отобразить файлы, возвращённые сервером, вместо разбора этого текста. Claude Code опускает `resourceLinks`, когда в результате нет ссылок, а также в результатах от субагентов, хранит не более 50 ссылок на результат и прекращает добавлять ссылки, когда массив достигает 64 КиБ сериализованного JSON. Для `resourceLinks` требуется Agent SDK v0.3.257 или новее.

1663* Инструмент MCP, возвращающий [`structuredContent`](#calltoolresult): `tool_use_result` — объект, член `structuredContent` которого содержит то, что отправил сервер, а член `content` — значение [`McpOutput`](#mcpoutput). Результаты от субагентов не содержат `structuredContent`.1700* Инструмент MCP, возвращающий [`structuredContent`](#calltoolresult): `tool_use_result` — объект, член `structuredContent` которого содержит то, что отправил сервер, а член `content` — значение [`McpOutput`](#mcpoutput). Результаты от субагентов не содержат `structuredContent`.

1664* Инструмент MCP, `structuredContent` которого при сериализации в JSON превышает 1 048 576 символов: Claude Code не включает `structuredContent` в `tool_use_result` и вместо него устанавливает `structuredContentOmitted: true`, чтобы ваше приложение могло отличить отброшенный объект от инструмента, который ничего не отправил. Остальные члены, такие как `content` и `resourceLinks`, сохраняются, и то, что получает Claude, не меняется. Инструменты из [внутрипроцессных серверов SDK](/docs/ru/agent-sdk/custom-tools) и инструменты, запись `tools/list` которых объявляет [ресурс MCP Apps `_meta.ui`](#mcpserverstatus), освобождены от этого ограничения и доставляют объект целиком. Это ограничение применяет Claude Code v2.1.287 или новее.1701* Инструмент MCP, чей `structuredContent` сериализуется в JSON длиной более 1 048 576 символов: Claude Code не включает `structuredContent` в `tool_use_result` и устанавливает вместо него `structuredContentOmitted: true`, чтобы ваше приложение могло отличить отброшенный объект от инструмента, который его не отправлял. Остальные члены, такие как `content` и `resourceLinks`, остаются, и то, что получает Claude, не меняется. Это ограничение применяет Claude Code v2.1.287 или новее. Два вида инструментов отличаются:

1702 * Инструменты из [внутрипроцессных серверов SDK](/docs/ru/agent-sdk/custom-tools) освобождены от ограничения и доставляют объект целиком.

1703 * Инструмент, чья запись в `tools/list` объявляет [ресурс MCP Apps `ui://`](#mcpserverstatus), имеет ограничение в 8 388 608 символов в Claude Code v2.1.295 или новее, а версии до v2.1.295 освобождают его от ограничения.

1665 1704 

1666<h3 id="sdkusermessagereplay">1705<h3 id="sdkusermessagereplay">

1667 `SDKUserMessageReplay`1706 `SDKUserMessageReplay`


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

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

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

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

1779* `local_command`: имя команды, которую выполнил ход, в результате успеха хода, завершённого командой без входа в цикл агента, например `/compact`. Имя приводится к строчным буквам и подчёркиваниям, поэтому `/reload-plugins` сообщает `reload_plugins`. Команда, которую предоставляет MCP-сервер, и встроенная `/mcp` сообщают `mcp`. Команда, которую вы определили сами, сообщает `custom`. Аргументы никогда не включаются. Отсутствует в каждом ходе, который вошёл в цикл агента, и при отправках, не запустивших команду. Требует Agent SDK v0.3.268 или позже.1818* `local_command`: имя команды, которую выполнил ход, в результате успеха хода, завершённого командой без входа в цикл агента, например `/compact`. Имя приводится к строчным буквам и подчёркиваниям, поэтому `/reload-plugins` сообщает `reload_plugins`. Команда, которую предоставляет MCP-сервер, и встроенная `/mcp` сообщают `mcp`. Команда, которую вы определили сами, сообщает `custom`. Аргументы никогда не включаются. Отсутствует в каждом ходе, который вошёл в цикл агента, и при отправках, не запустивших команду. Требует Agent SDK v0.3.268 или позже.

1780* `request_sent_wall_ms`: миллисекунды эпохи, в которые Claude Code отправил запрос API, для сопоставления с серверными временными метками. Присутствует только вместе с [`user_message_uuid`](#user_message_uuid), в результате успеха с `is_error` равным false, чей ход отправил запрос API.1819* `request_sent_wall_ms`: миллисекунды эпохи, в которые Claude Code отправил запрос API, для сопоставления с серверными временными метками. Присутствует только вместе с [`user_message_uuid`](#user_message_uuid), в результате успеха с `is_error` равным false, чей ход отправил запрос API.

1781* `first_content_frame_ms`: время в миллисекундах до первого события потока `content_block_start` или `content_block_delta`, считая блоки размышлений содержимым. Присутствует только в ветви успеха, когда `is_error` имеет значение false. Требует Agent SDK v0.3.260 или позже.1820* `first_content_frame_ms`: время в миллисекундах до первого события потока `content_block_start` или `content_block_delta`, считая блоки размышлений содержимым. Присутствует только в ветви успеха, когда `is_error` имеет значение false. Требует Agent SDK v0.3.260 или позже.


1825 1864 

1826* **Обычное отправленное вами сообщение**, то есть без `isSynthetic: true`: ход отвечает на это сообщение на протяжении всего своего выполнения. Когда вы отправляете несколько сообщений почти одновременно, Claude Code может объединить их в один ход, и тогда поле содержит только `uuid` последнего сообщения. Чтобы сопоставить ответ с любым из объединённых сообщений, используйте [`user_message_uuids`](#user_message_uuids).1865* **Обычное отправленное вами сообщение**, то есть без `isSynthetic: true`: ход отвечает на это сообщение на протяжении всего своего выполнения. Когда вы отправляете несколько сообщений почти одновременно, Claude Code может объединить их в один ход, и тогда поле содержит только `uuid` последнего сообщения. Чтобы сопоставить ответ с любым из объединённых сообщений, используйте [`user_message_uuids`](#user_message_uuids).

1827* **Сообщение, отправленное вами с `isSynthetic: true`**: ход сначала отвечает на это сообщение. Если Claude Code подхватит ваше обычное сообщение между вызовами инструментов, с этого момента ход отвечает на подхваченное сообщение. Возврат `uuid` синтетического сообщения требует Agent SDK v0.3.265 или позже; более ранние версии ничего не возвращают в синтетических ходах.1866* **Сообщение, отправленное вами с `isSynthetic: true`**: ход сначала отвечает на это сообщение. Если Claude Code подхватит ваше обычное сообщение между вызовами инструментов, с этого момента ход отвечает на подхваченное сообщение. Возврат `uuid` синтетического сообщения требует Agent SDK v0.3.265 или позже; более ранние версии ничего не возвращают в синтетических ходах.

1828* **Промпт, который Claude Code генерирует для повторного запуска прерванного хода при [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/ru/env-vars)**: когда последний промпт прерванного хода — это обычное отправленное вами сообщение, открыло ли оно ход или Claude Code подхватил его во время хода, повторный запуск сначала отвечает на это сообщение. [`resume_reason`](#resume_reason) позволяет отличить кадры повторного запуска от кадров прерванной попытки. Когда последний промпт не является вашим обычным сообщением, повторный запуск сначала не отвечает ни на одно ваше сообщение. Если Claude Code подхватит ваше обычное сообщение между вызовами инструментов, с этого момента ход отвечает на подхваченное сообщение. Возврат промпта прерванного хода требует Agent SDK v0.3.268 или позже.1867* **Промпт, который Claude Code генерирует для продолжения прерванного хода при [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/ru/env-vars)**: когда последний промпт прерванного хода — это обычное отправленное вами сообщение, открыло ли оно ход или Claude Code подхватил его во время хода, продолжающий ход сначала отвечает на это сообщение. [`resume_reason`](#resume_reason) позволяет отличить фреймы продолжающего хода от фреймов прерванной попытки. Когда последний промпт не является вашим обычным сообщением, продолжающий ход сначала не отвечает ни на одно ваше сообщение. Если Claude Code подхватывает ваше обычное сообщение между вызовами инструментов, с этого момента ход отвечает на подхваченное сообщение. Возврат промпта прерванного хода требует Agent SDK v0.3.268 или новее.

1829* **Любой другой промпт, который Claude Code сгенерировал сам**: ход сначала не отвечает ни на одно ваше сообщение, и его кадры не содержат возвращаемого значения. Если Claude Code подхватит ваше обычное сообщение между вызовами инструментов, с этого момента ход отвечает на это сообщение. Возврат при подхвате требует Agent SDK v0.3.265 или позже; более ранние версии ничего не возвращают в этих ходах.1868* **Любой другой промпт, который Claude Code сгенерировал сам**: ход сначала не отвечает ни на одно ваше сообщение, и его кадры не содержат возвращаемого значения. Если Claude Code подхватит ваше обычное сообщение между вызовами инструментов, с этого момента ход отвечает на это сообщение. Возврат при подхвате требует Agent SDK v0.3.265 или позже; более ранние версии ничего не возвращают в этих ходах.

1830 1869 

1831Claude Code возвращает `uuid` сообщения, на которое дан ответ, в трёх видах кадров:1870Claude Code возвращает `uuid` сообщения, на которое дан ответ, в трёх видах кадров:


1857 `resume_reason`1896 `resume_reason`

1858</h4>1897</h4>

1859 1898 

1860Почему Claude Code повторно запустил этот ход после перезапуска. Claude Code устанавливает это поле в ходе, который он повторно запустил при [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/ru/env-vars), чтобы вы могли отличить ответ и результат повторного запуска от ответа и результата прерванной попытки. Требует Agent SDK v0.3.268 или позже.1899Причина, по которой этот ход продолжает ход, прерванный перезапуском. Claude Code задаёт это поле в ходе, продолжающем прерванный ход при [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/ru/env-vars), чтобы вы могли отличить ответ и результат продолжающего хода от ответа и результата прерванной попытки. Требуется Agent SDK v0.3.268 или новее.

1861 1900 

1862Claude Code устанавливает это поле в двух видах кадров:1901Claude Code устанавливает это поле в двух видах кадров:

1863 1902 

1864* **Результат повторного запуска**: как в ветви успеха, так и в ветви ошибки, независимо от того, содержит ли результат `user_message_uuid`.1903* **Результат продолжающего хода**: в ветвях success и error одинаково, независимо от того, несёт ли результат `user_message_uuid`.

1865* **Кадры ответа повторного запуска**: те, которые содержат [`user_message_uuid`](#user_message_uuid).1904* **Фреймы ответа продолжающего хода**: те, что несут [`user_message_uuid`](#user_message_uuid).

1866 1905 

1867Значение — короткий токен в нижнем регистре, называющий причину повторного выполнения хода, например `interrupted_turn`.1906Значение — короткий токен в нижнем регистре, например `interrupted_turn`.

1868 1907 

1869<h4 id="queued_turn_count">1908<h4 id="queued_turn_count">

1870 `queued_turn_count`1909 `queued_turn_count`


2029};2068};

2030```2069```

2031 2070 

2032Claude Code устанавливает `user_message_uuid` и `user_message_uuids` в первом событии потока хода, отличном от ping, и снова, когда меняется сообщение, на которое отвечает ход, при условиях, описанных в [`user_message_uuid`](#user_message_uuid). Когда Claude Code повторно запускает ход, прерванный перезапуском, события потока повторного запуска, которые содержат эти поля, также содержат [`resume_reason`](#resume_reason).2071Claude Code задаёт `user_message_uuid` и `user_message_uuids` в первом событии потока хода, отличном от ping, и снова — когда меняется сообщение, на которое отвечает ход, при условиях, описанных в [`user_message_uuid`](#user_message_uuid). Когда ход продолжает ход, прерванный перезапуском, события потока, несущие эти поля, несут также [`resume_reason`](#resume_reason).

2033 2072 

2034<h3 id="sdkcompactboundarymessage">2073<h3 id="sdkcompactboundarymessage">

2035 `SDKCompactBoundaryMessage`2074 `SDKCompactBoundaryMessage`


3558| - | - | - |3597| - | - | - |

3559| `script` | `string` | Встроенный скрипт workflow. Должен начинаться с `export const meta = { name, description }` как литерала, за которым следует тело скрипта с использованием `agent()`, `parallel()`, `pipeline()` и `phase()`. Опциональный массив `phases` в `meta` группирует агентов по именованным этапам в представлении прогресса |3598| `script` | `string` | Встроенный скрипт workflow. Должен начинаться с `export const meta = { name, description }` как литерала, за которым следует тело скрипта с использованием `agent()`, `parallel()`, `pipeline()` и `phase()`. Опциональный массив `phases` в `meta` группирует агентов по именованным этапам в представлении прогресса |

3560| `name` | `string` | Имя встроенного workflow или workflow, сохранённого в `.claude/workflows/`. Разрешается в скрипт |3599| `name` | `string` | Имя встроенного workflow или workflow, сохранённого в `.claude/workflows/`. Разрешается в скрипт |

3561| `scriptPath` | `string` | Путь к файлу скрипта workflow на диске. Имеет приоритет над `script` и `name`. Claude Code сохраняет скрипт каждого вызова и возвращает путь в результате, поэтому вы можете отредактировать этот файл и повторно вызвать с тем же `scriptPath` для итерации |3600| `scriptPath` | `string` | Путь к файлу скрипта workflow на диске, например `scriptPath`, который вернул предыдущий запуск. Имеет приоритет над `script` и `name`. Claude Code отклоняет `scriptPath` с ошибкой, если инструменты сессии не включают `Read` |

3562| `args` | `unknown` | Входное значение, доступное скрипту как глобальная переменная `args`, для параметризованных именованных workflow, таких как исследовательский вопрос или список путей к файлам. Передавайте массивы и объекты как фактические значения JSON, а не как JSON-кодированную строку |3601| `args` | `unknown` | Входное значение, доступное скрипту как глобальная переменная `args`, для параметризованных именованных workflow, таких как исследовательский вопрос или список путей к файлам. Передавайте массивы и объекты как фактические значения JSON, а не как JSON-кодированную строку |

3563| `resumeFromRunId` | `string` | Run ID предыдущего вызова `Workflow` для возобновления. Завершённые вызовы `agent()` с неизменёнными входными данными обычно возвращают кэшированные результаты; остальные выполняются заново. В разделе [Возобновление после паузы](/docs/ru/workflows#resume-after-a-pause) описано, какие завершённые вызовы выполняются повторно. Только в той же сессии |3602| `resumeFromRunId` | `string` | Run ID предыдущего вызова `Workflow` для возобновления. Завершённые вызовы `agent()` с неизменёнными входными данными обычно возвращают кэшированные результаты; остальные выполняются заново. В разделе [Возобновление после паузы](/docs/ru/workflows#resume-after-a-pause) описано, какие завершённые вызовы выполняются повторно. Только в той же сессии |

3564| `title` | `string` | Игнорируется; заголовок задаёт блок `meta` скрипта |3603| `title` | `string` | Игнорируется; заголовок задаёт блок `meta` скрипта |

agent-view.md +18 −14

Details

152| Форма | Что это означает |152| Форма | Что это означает |

153| :- | :- |153| :- | :- |

154| `✻` или анимированный `✽` | Процесс сессии работает или сессии нужен ваш ввод |154| `✻` или анимированный `✽` | Процесс сессии работает или сессии нужен ваш ввод |

155| `∙` | Процесс завершился. Вы всё ещё можете просмотреть строку, а когда вы ответите или подключитесь, Claude перезапустится с того места, где остановился |155| `∙` | Процесс завершился. Вы всё ещё можете просмотреть строку, а когда вы ответите или подключитесь, Claude перезапустит его из сохранённого диалога |

156| `✢` | Сессия [`/loop`](/docs/ru/scheduled-tasks), ожидающая между итерациями. Строка показывает количество запусков и обратный отсчёт |156| `✢` | Сессия [`/loop`](/docs/ru/scheduled-tasks), ожидающая между итерациями. Строка показывает количество запусков и обратный отсчёт |

157 157 

158Метка `#N` или `!N`, которая может появиться у правого края строки, — это ссылка на [pull request или merge request](#pull-request-status) сессии, а не часть значка состояния.158Метка `#N` или `!N`, которая может появиться у правого края строки, — это ссылка на [pull request или merge request](#pull-request-status) сессии, а не часть значка состояния.


256 256 

257Подключённые сессии всегда отображаются в [полноэкранном режиме](/docs/ru/fullscreen), независимо от вашей настройки `tui`, поскольку у фоновой сессии нет истории прокрутки терминала, в которую можно дописывать вывод. Прокручивайте с помощью `PgUp`, `PgDn` или колеса мыши и нажмите `Ctrl+O` для режима транскрипта. Встроенная прокрутка терминала и режим копирования tmux показывают только текущую видимую область, как при запуске любого полноэкранного приложения.257Подключённые сессии всегда отображаются в [полноэкранном режиме](/docs/ru/fullscreen), независимо от вашей настройки `tui`, поскольку у фоновой сессии нет истории прокрутки терминала, в которую можно дописывать вывод. Прокручивайте с помощью `PgUp`, `PgDn` или колеса мыши и нажмите `Ctrl+O` для режима транскрипта. Встроенная прокрутка терминала и режим копирования tmux показывают только текущую видимую область, как при запуске любого полноэкранного приложения.

258 258 

259Подключённая сессия не [сообщает свой статус терминалу](/docs/ru/terminal-config#see-session-status-in-your-terminal).

260 

259Нажмите `←` в пустом промпте или выполните `/exit`, чтобы отключиться и вернуться в agent view, независимо от того, открыли ли вы сессию из agent view или с помощью `claude attach <id>` из оболочки.261Нажмите `←` в пустом промпте или выполните `/exit`, чтобы отключиться и вернуться в agent view, независимо от того, открыли ли вы сессию из agent view или с помощью `claude attach <id>` из оболочки.

260 262 

261`←` также отключает от сессии, пока открыта [панель `/btw`](/docs/ru/interactive-mode#side-questions-with-%2Fbtw). Требуется Claude Code v2.1.257 или новее. Побочный вопрос, ответ на который ещё формируется, продолжает выполняться, пока вас нет. При следующем подключении панель снова откроется с ним или с его ответом.263`←` также отключает от сессии, пока открыта [панель `/btw`](/docs/ru/interactive-mode#side-questions-with-%2Fbtw). Требуется Claude Code v2.1.257 или новее. Побочный вопрос, ответ на который ещё формируется, продолжает выполняться, пока вас нет. При следующем подключении панель снова откроется с ним или с его ответом.


264 266 

265`Ctrl+Z` также отключает от сессии, но возвращает туда, откуда вы начали: в agent view, если вы подключились оттуда, или в оболочку, если вы выполнили `claude attach`. Используйте `Ctrl+Z`, когда фокус находится в диалоговом окне, которое не реагирует на `←`.267`Ctrl+Z` также отключает от сессии, но возвращает туда, откуда вы начали: в agent view, если вы подключились оттуда, или в оболочку, если вы выполнили `claude attach`. Используйте `Ctrl+Z`, когда фокус находится в диалоговом окне, которое не реагирует на `←`.

266 268 

267`Ctrl+C` при подключении сохраняет стандартное поведение прерывания: отменяет выполняющийся ответ или shell-команду `!`, а не отключает. Двойное нажатие `Ctrl+C` в пустом промпте отключает, как и в любой сессии.269`Ctrl+C` при подключении сохраняет стандартное поведение прерывания: отменяет выполняющийся ответ или shell-команду `!`, а не отключает. Двойное нажатие `Ctrl+C` в пустом промпте отключает от сессии.

268 270 

269Отключение никогда не останавливает фоновую сессию: `←`, `Ctrl+Z`, `/exit`, двойное `Ctrl+C` или двойное `Ctrl+D` оставляют её работающей. Чтобы завершить сессию изнутри, выполните `/stop`.271Отключение никогда не останавливает фоновую сессию: `←`, `Ctrl+Z`, `/exit`, а также двойное `Ctrl+C` или двойное `Ctrl+D` оставляют её работающей. Если вы отключитесь, пока `/loop` ожидает следующей итерации, цикл продолжит работать, и эта итерация начнётся по расписанию без вас. Чтобы остановить цикл перед отключением, см. [Stop a loop](/docs/ru/scheduled-tasks#stop-a-loop). Чтобы завершить сессию изнутри, выполните `/stop`.

270 272 

271<h4 id="switch-sessions-without-leaving-the-terminal">273<h4 id="switch-sessions-without-leaving-the-terminal">

272 Переключение сессий без выхода из терминала274 Переключение сессий без выхода из терминала


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

294 296 

295* **Ещё работают субагенты переднего плана**: Claude Code продолжает ждать, чтобы работа [субагентов переднего плана](/docs/ru/sub-agents#run-subagents-in-foreground-or-background), которых запустил Claude, перешла в фон, и показывает `Still backgrounding after the current tool`. Нажмите `←` ещё раз, чтобы отправить в фон без ожидания; при этом эти субагенты перезапустятся с начала.297* **Ещё работают субагенты переднего плана**: Claude Code продолжает ждать, чтобы работа [субагентов переднего плана](/docs/ru/sub-agents#run-subagents-in-foreground-or-background), которых запустил Claude, перешла в фон, и показывает `Still backgrounding after the current tool`. Нажмите `←` ещё раз, чтобы отправить в фон без ожидания; при этом эти субагенты перезапустятся с начала.

296* **Запрос разрешения или вопрос ожидает вашего ответа**: пока ожидает запрос разрешения или вопрос, заданный Claude, Claude Code продолжает ждать и показывает `Still backgrounding after the current tool — a question is waiting for your answer.`298* **Запрос разрешения или вопрос ожидает вашего ответа**: пока ожидает запрос разрешения или вопрос, заданный Claude, Claude Code продолжает ждать и показывает `Still backgrounding after the current tool — a question is waiting for your answer.` Если ваш ответ позволяет ходу продолжиться, например **Yes** в запросе разрешения, Claude Code отправляет сессию в фон, когда текущий инструмент завершит работу.

297* **Вы вводите текст в поле ввода промпта**: Claude Code отменяет переключение, потому что неотправленный текст остаётся в поле ввода вашего терминала и не перейдёт в фоновую сессию. Он показывает `Backgrounding cancelled — you have unsent text in the input. Send it or clear it, then press ← again.`299* **Вы вводите текст в поле ввода промпта**: Claude Code отменяет переключение, потому что неотправленный текст остаётся в поле ввода вашего терминала и не перейдёт в фоновую сессию. Он показывает `Backgrounding cancelled — you have unsent text in the input. Send it or clear it, then press ← again.`

300* **Вы останавливаете ход**: Claude Code отменяет переключение и показывает `Backgrounding cancelled — the turn was stopped.` Например, ход останавливается, когда вы [прерываете Claude с помощью `Esc`](/docs/ru/interactive-mode#general-controls) или выбираете **No** [без комментария](/docs/ru/permissions#add-a-comment-when-you-answer-a-permission-prompt) в запросе разрешения из основного диалога либо нажимаете `Esc` на вопросе, который Claude задаёт там. Нажмите `←` ещё раз, чтобы отправить сессию в фон.

298* **Сообщение из очереди нельзя перенести**: сообщения, которые вы [поставили в очередь, пока Claude работал](/docs/ru/interactive-mode#queue-messages-while-claude-works), переходят в фоновую сессию вместе с диалогом. Если какое-либо из них перенести нельзя, сессия остаётся на переднем плане, и Claude Code показывает уведомление, например `Cannot open agents — 1 queued message can't move to the background. Press ← again once Claude has read it.`301* **Сообщение из очереди нельзя перенести**: сообщения, которые вы [поставили в очередь, пока Claude работал](/docs/ru/interactive-mode#queue-messages-while-claude-works), переходят в фоновую сессию вместе с диалогом. Если какое-либо из них перенести нельзя, сессия остаётся на переднем плане, и Claude Code показывает уведомление, например `Cannot open agents — 1 queued message can't move to the background. Press ← again once Claude has read it.`

299 302 

300Нажатие `←` создаёт строку сессии, даже если в диалоге ещё нет сообщений, поэтому `→` по-прежнему возвращает к нему.303Нажатие `←` создаёт строку сессии, даже если в диалоге ещё нет сообщений, поэтому `→` по-прежнему возвращает к нему.


513* `--fallback-model`516* `--fallback-model`

514* `--allow-dangerously-skip-permissions`517* `--allow-dangerously-skip-permissions`

515 518 

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

517 520 

518<span id="from-your-shell" />521<span id="from-your-shell" />

519 522 


767 770 

768Действующие значения по умолчанию отображаются в нижней строке под полем ввода.771Действующие значения по умолчанию отображаются в нижней строке под полем ввода.

769 772 

770Claude Code отклоняет `claude --bg --permission-mode bypassPermissions`, пока вы не примете предупреждение об обходе разрешений, один раз интерактивно выполнив `claude --dangerously-skip-permissions`, поскольку этот режим позволяет сессии, за которой вы не наблюдаете, действовать без подтверждения. Передача `--dangerously-skip-permissions` или `--permission-mode bypassPermissions` в `claude agents` показывает то же предупреждение, если вы не принимали его ранее, и после согласия `bypassPermissions` применяется к сессиям, которые вы запускаете из этого представления. Передача `--allow-dangerously-skip-permissions` тоже показывает это предупреждение, и после согласия `bypassPermissions` становится доступным в цикле `Shift+Tab` этих сессий, но они в нём не запускаются.773Фоновой сессии, запущенной в режиме `bypassPermissions`, требуется уже зафиксированное [согласие с предупреждением об обходе разрешений](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode), поскольку этот режим позволяет сессии, за которой вы не наблюдаете, действовать без подтверждения. Передача `--dangerously-skip-permissions` или `--permission-mode bypassPermissions` в `claude agents` показывает то же предупреждение, если вы не принимали его ранее, и после согласия `bypassPermissions` применяется к сессиям, которые вы запускаете из этого представления. Передача `--allow-dangerously-skip-permissions` тоже показывает это предупреждение, и после согласия `bypassPermissions` становится доступным в цикле `Shift+Tab` этих сессий, но они в нём не запускаются.

771 774 

772<h4 id="what-persists-across-restarts">775<h4 id="what-persists-across-restarts">

773 Что сохраняется при перезапусках776 Что сохраняется при перезапусках

774</h4>777</h4>

775 778 

776Выбранные для фоновой сессии режим разрешений, модель и уровень effort, а также [переносимые ею флаги конфигурации](#what-carries-over-when-you-background) сохраняются, когда супервизор позже [останавливает и перезапускает](#the-supervisor-process) её процесс. Сессия, запущенная с помощью `claude --bg --dangerously-skip-permissions` или `claude --bg --permission-mode bypassPermissions`, остаётся в `bypassPermissions` после такого перезапуска. Модель или уровень effort, изменённые во время сессии с помощью `/model` или `/effort`, тоже сохраняются.779Выбранные для фоновой сессии режим разрешений, модель и уровень effort, а также [переносимые ею флаги конфигурации](#what-carries-over-when-you-background) сохраняются, когда супервизор позже [останавливает и перезапускает](#the-supervisor-process) её процесс. Модель или уровень effort, изменённые во время сессии с помощью `/model` или `/effort`, тоже сохраняются.

777 780 

778Если сессия взяла уровень effort из ваших настроек, а не из `--effort` или `/effort`, Claude Code заново читает настройки при каждом запуске процесса для этой сессии. После того как вы отредактируете сохранённый уровень effort в `settings.json`, изменение применяется к сессиям, которые вы отправляете в фон с помощью `←` или `/bg`, и к их последующим перезапускам. Сохранённый уровень effort — это ключ [`effortLevel`](/docs/ru/settings-reference#effortlevel) или запись [`modelSettings`](/docs/ru/settings-reference#modelsettings).781Если сессия взяла уровень effort из ваших настроек, а не из `--effort` или `/effort`, Claude Code заново читает настройки при каждом запуске процесса для этой сессии. После того как вы отредактируете сохранённый уровень effort в `settings.json`, изменение применяется к сессиям, которые вы отправляете в фон с помощью `←` или `/bg`, и к их последующим перезапускам. Сохранённый уровень effort — это ключ [`effortLevel`](/docs/ru/settings-reference#effortlevel) или запись [`modelSettings`](/docs/ru/settings-reference#modelsettings).

779 782 


822| `claude attach <id\|name>` | Подключиться к сессии в этом терминале |825| `claude attach <id\|name>` | Подключиться к сессии в этом терминале |

823| `claude logs <id\|name>` | Вывести последний вывод сессии |826| `claude logs <id\|name>` | Вывести последний вывод сессии |

824| `claude stop <id>` | Остановить сессию. Также принимает `claude kill` |827| `claude stop <id>` | Остановить сессию. Также принимает `claude kill` |

825| `claude respawn <id>` | Перезапустить сессию, работающую или остановленную, например, чтобы подхватить обновленный бинарный файл Claude Code. Перезапущенная сессия возобновляет сохраненный диалог; когда его нет на диске, она снова запускает исходный промпт как новый диалог |828| `claude respawn <id>` | Перезапустить сессию, работающую или остановленную, например, чтобы подхватить обновленный бинарный файл Claude Code. Сессия, у которой есть сохраненный диалог, возобновляет его |

826| `claude respawn --all` | Перезапустить каждую работающую сессию, например, чтобы перевести все сессии на обновленный бинарный файл Claude Code одновременно |829| `claude respawn --all` | Перезапустить каждую работающую сессию, например, чтобы перевести все сессии на обновленный бинарный файл Claude Code одновременно |

827| `claude rm <id>` | Удалить сессию из списка вместе с worktree, созданным Claude для неё, когда его безопасно удалить; см. [Что удаляет удаление сессии](#what-deleting-a-session-removes). Транскрипт диалога остается на вашем локальном компьютере и остается доступным через `claude --resume` |830| `claude rm <id>` | Удалить сессию из списка вместе с worktree, созданным Claude для неё, когда его безопасно удалить; см. [Что удаляет удаление сессии](#what-deleting-a-session-removes). Транскрипт диалога остается на вашем локальном компьютере и остается доступным через `claude --resume` |

828| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Удалить сессию, удаление которой было отклонено из-за неотправленных коммитов, отбросив worktree вместе с его веткой и коммитами. Передайте точное значение, которое вывело отклонение; см. [Что удаляет удаление сессии](#what-deleting-a-session-removes). Требуется v2.1.260 или позже |831| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Удалить сессию, удаление которой было отклонено из-за неотправленных коммитов, отбросив worktree вместе с его веткой и коммитами. Передайте точное значение, которое вывело отклонение; см. [Что удаляет удаление сессии](#what-deleting-a-session-removes). Требуется v2.1.260 или позже |

829| `claude rm <id> --force-remove-worktree <worktree-id>` | Удалить сессию, удаление которой было отклонено, потому что git или хук `WorktreeRemove` не смогли удалить её worktree, удалив каталог worktree в любом случае и оставив его ветку в репозитории. Передайте точное значение, которое вывело отклонение; см. [Что удаляет удаление сессии](#what-deleting-a-session-removes). Требуется v2.1.268 или позже |832| `claude rm <id> --force-remove-worktree <worktree-id>` | Удалить сессию, удаление которой было отклонено, потому что git или хук `WorktreeRemove` не смогли удалить её worktree, удалив каталог worktree в любом случае и оставив его ветку в репозитории. Передайте точное значение, которое вывело отклонение; см. [Что удаляет удаление сессии](#what-deleting-a-session-removes). Требуется v2.1.268 или позже |

830| `claude daemon status` | Вывести состояние [supervisor](#the-supervisor-process), версию, каталог сокета и количество рабочих процессов |833| `claude daemon status` | Вывести состояние [supervisor](#the-supervisor-process), версию, каталог сокета и количество рабочих процессов |

831| `claude daemon logs` | Следить за файлом лога supervisor, [`~/.claude/daemon.log`](#where-state-is-stored), выводя новые строки по мере их появления, пока вы не нажмете `Ctrl+C` |834| `claude daemon logs` | Следить за файлом лога supervisor, [`~/.claude/daemon.log`](#where-state-is-stored), выводя новые строки по мере их появления, пока вы не нажмете `Ctrl+C` |

832| `claude daemon stop --any` | Остановить процесс supervisor и фоновые сессии, которые он размещает. Передайте `--keep-workers`, чтобы оставить фоновые сессии работающими, чтобы следующий supervisor переподключился к ним. Следующий `claude agents` или `claude --bg` запускает новый supervisor |835| `claude daemon stop --any` | Остановить процесс supervisor и фоновые сессии, которые он размещает. Передайте `--keep-workers`, чтобы оставить фоновые сессии работающими, чтобы [следующий supervisor](#the-supervisor-process) переподключился к ним. Следующий `claude agents` или `claude --bg` запускает новый supervisor |

833 836 

834`claude attach` и `claude logs` могут принимать часть имени сессии вместо ID, например `claude logs "auth refactor"`. Для передачи имени требуется Claude Code v2.1.290 или позже.837`claude attach` и `claude logs` могут принимать часть имени сессии вместо ID, например `claude logs "auth refactor"`. `claude attach` открывает сессию по имени, только пока её процесс работает, поэтому, чтобы перезапустить остановленную сессию, передайте вместо имени ID. Для передачи имени требуется Claude Code v2.1.290 или позже.

835 838 

836<h3 id="list-sessions-as-json">839<h3 id="list-sessions-as-json">

837 Вывод сессий в виде JSON840 Вывод сессий в виде JSON


889* **Завершена или ожидает вашего следующего сообщения, и не подключена примерно час**: супервизор останавливает процесс для освобождения ресурсов. Сессия, которая завершила свой ход, задав вам вопрос, считается ожидающей вашего следующего сообщения. Диалог остаётся на диске, и в следующий раз, когда вы подключитесь или ответите, сессия возобновляется с того места, где она остановилась. Закрепите сессию с помощью `Ctrl+T`, чтобы её процесс продолжал работать.892* **Завершена или ожидает вашего следующего сообщения, и не подключена примерно час**: супервизор останавливает процесс для освобождения ресурсов. Сессия, которая завершила свой ход, задав вам вопрос, считается ожидающей вашего следующего сообщения. Диалог остаётся на диске, и в следующий раз, когда вы подключитесь или ответите, сессия возобновляется с того места, где она остановилась. Закрепите сессию с помощью `Ctrl+T`, чтобы её процесс продолжал работать.

890* **Неожиданно завершилась, пока супервизор работает**: супервизор перезапускает процесс. Завершение сессии, которую вы отправили в фон самостоятельно с помощью `←` или `/background`, например с помощью `kill`, отмечает её как остановленную вместо перезапуска. Для сессий, которые завершились при выключении, см. [Sessions show as failed or stopped after shutdown](#sessions-show-as-failed-after-shutdown).893* **Неожиданно завершилась, пока супервизор работает**: супервизор перезапускает процесс. Завершение сессии, которую вы отправили в фон самостоятельно с помощью `←` или `/background`, например с помощью `kill`, отмечает её как остановленную вместо перезапуска. Для сессий, которые завершились при выключении, см. [Sessions show as failed or stopped after shutdown](#sessions-show-as-failed-after-shutdown).

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

895* **Сам супервизор останавливается**, например потому, что его процесс был завершён извне Claude Code: в macOS и Linux процесс каждой сессии ждёт около минуты, пока к нему не переподключится новый супервизор, и останавливается, если этого не происходит. Запустите `claude agents` в своей оболочке в течение этой минуты, чтобы запустить новый супервизор и сохранить работу ваших сессий. Если минута истечёт раньше, сессии остановятся, но их сохранённые диалоги останутся на диске: подключитесь к сессии или ответьте в ней, и она перезапустится из сохранённого диалога, как описано в разделе [Sessions show as failed or stopped after shutdown](#sessions-show-as-failed-after-shutdown).

892 896 

893Когда процесс сессии останавливается или перезапускается, фоновые команды оболочки, динамические рабочие процессы и фоновые субагенты, которые Claude запустил в ней, переносятся в её следующий процесс; работающие мониторы и команды оболочки, которые запустил субагент, останавливаются вместе с процессом. Удаление сессии останавливает всё, что она перенесла. Чтобы вместо этого останавливать всё это вместе с процессом, установите [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](/docs/ru/env-vars#variables) в значение `1`.897Когда процесс сессии останавливается или перезапускается, фоновые команды оболочки, динамические рабочие процессы и фоновые субагенты, которые Claude запустил в ней, переносятся в её следующий процесс; работающие мониторы и команды оболочки, которые запустил субагент, останавливаются вместе с процессом. Удаление сессии останавливает всё, что она перенесла. Чтобы вместо этого останавливать всё это вместе с процессом, установите [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](/docs/ru/env-vars#variables) в значение `1`.

894 898 


911 915 

912Чтобы проверить это состояние без прямого чтения файлов, запустите `claude daemon status`. Команда сообщает, доступен ли супервизор, его идентификатор процесса и версию, каталог сокета и сколько фоновых сессий активны.916Чтобы проверить это состояние без прямого чтения файлов, запустите `claude daemon status`. Команда сообщает, доступен ли супервизор, его идентификатор процесса и версию, каталог сокета и сколько фоновых сессий активны.

913 917 

914Команда также предупреждает, когда работающий супервизор находится на другой версии, чем `claude`, который вы вызвали, что происходит после обновления, на которое супервизор ещё не перезапустился. Предупреждение показывает обе версии и предлагает вам запустить `claude daemon stop --any`, чтобы перейти на новую версию. Когда Claude Code установлен как служба ОС, предлагаемая команда — это `claude daemon stop` без флага.918Команда также предупреждает, когда работающий супервизор находится на другой версии, чем `claude`, который вы вызвали, что происходит после обновления, на которое супервизор ещё не перезапустился. Предупреждение показывает обе версии и предлагает вам запустить `claude daemon stop --any`, чтобы перейти на новую версию.

915 919 

916Сессии переживают такое несовпадение версий без потерь: более старая версия Claude Code, которая обновляет `state.json` сессии, сохраняет поля, которые она не распознаёт, и оставляет сессию в списке. Список сессий в `roster.json` следует тому же правилу, поэтому сессии, запущенные более новой версией, остаются доступными и продолжают принимать ввод после перезапуска супервизора.920Сессии переживают такое несовпадение версий без потерь: более старая версия Claude Code, которая обновляет `state.json` сессии, сохраняет поля, которые она не распознаёт, и оставляет сессию в списке. Список сессий в `roster.json` следует тому же правилу, поэтому сессии, запущенные более новой версией, остаются доступными и продолжают принимать ввод после перезапуска супервизора.

917 921 


963 967 

964Выключение или перезагрузка вашей машины останавливает работающие фоновые сессии. Сессия, которая ожидала вашего ввода, остаётся в `Needs input`, когда вы вернётесь. Для любой другой работающей сессии то, что показывает представление агентов, зависит от того, как давно она в последний раз продвигалась:968Выключение или перезагрузка вашей машины останавливает работающие фоновые сессии. Сессия, которая ожидала вашего ввода, остаётся в `Needs input`, когда вы вернётесь. Для любой другой работающей сессии то, что показывает представление агентов, зависит от того, как давно она в последний раз продвигалась:

965 969 

966* В пределах 48 часов сессия отображается как завершившаяся с ошибкой. Подключитесь к ней или ответьте ей, и она перезапустится с того места, где остановилась.970* В пределах 48 часов сессия отображается как завершившаяся с ошибкой. Подключитесь к ней или ответьте ей, и она перезапустится из сохранённого диалога. Чтобы продолжить прерванную работу, отправьте ей ответ с просьбой продолжить.

967* Более 48 часов, например если машина была выключена несколько дней, сессия отображается как остановленная с пометкой `ended while the background service was off`. Нажмите `Enter` на строке, и в нижней строке появится `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to delete it.` Нажмите `Enter` на той же строке ещё раз, чтобы возобновить её сохранённый диалог. Ответ или `claude attach <id>` возобновляет её без этого сообщения в нижней строке.971* Более 48 часов, например если машина была выключена несколько дней, сессия отображается как остановленная с пометкой `ended while the background service was off`. Нажмите `Enter` на строке, и в нижней строке появится `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to delete it.` Нажмите `Enter` на той же строке ещё раз, чтобы возобновить её сохранённый диалог. Ответ или `claude attach <id>` возобновляет её без этого сообщения в нижней строке.

968 972 

969Если [очистка транскриптов](/docs/ru/settings-reference#cleanupperioddays) удалила сохранённый диалог остановленной сессии, Claude Code отказывается открывать строку: сообщение говорит, что возобновлять нечего. `claude rm <id>` удаляет строку, кроме [исключений](#what-deleting-a-session-removes), описанных выше, а `claude respawn <id>` снова запускает её исходный промпт. См. [This session's saved conversation is no longer on disk](/docs/ru/errors#this-sessions-saved-conversation-is-no-longer-on-disk).973Если [очистка транскриптов](/docs/ru/settings-reference#cleanupperioddays) удалила сохранённый диалог остановленной сессии, Claude Code отказывается открывать строку: сообщение говорит, что возобновлять нечего. `claude rm <id>` удаляет строку, кроме [исключений](#what-deleting-a-session-removes), описанных выше, а `claude respawn <id>` снова запускает её исходный промпт. См. [This session's saved conversation is no longer on disk](/docs/ru/errors#this-sessions-saved-conversation-is-no-longer-on-disk).


1022claude daemon stop --any --keep-workers1026claude daemon stop --any --keep-workers

1023```1027```

1024 1028 

1025Новый супервизор переподключается к работающим сессиям. Без `--keep-workers` команда также завершает фоновые сессии. Флаг `--any` подтверждает, что вы хотите остановить супервизор, запущенный по требованию, а не как установленный сервис, что является вариантом по умолчанию.1029Затем выполните `claude agents` в оболочке, чтобы запустить новый супервизор. Если вы сделаете это в течение [примерно минуты](#the-supervisor-process) после остановки, он переподключится к всё ещё работающим сессиям, и их работа продолжится без перерыва. Если вы задержитесь дольше, то в macOS и Linux к этому моменту сессии уже остановятся сами, а подключение к одной из них или ответ ей перезапустит её из сохранённого диалога. Без `--keep-workers` команда также завершает фоновые сессии. Флаг `--any` позволяет команде остановить супервизор, который Claude Code запустил по требованию.

1026 1030 

1027Супервизор, который запускается, но не может принимать подключения, завершается и самостоятельно снимает свою блокировку, поэтому следующий `claude agents` запускает новый без этой ручной остановки. Описанные выше шаги применимы, когда зависает уже работающий супервизор.1031Супервизор, который запускается, но не может принимать подключения, завершается и самостоятельно снимает свою блокировку, поэтому следующий `claude agents` запускает новый без этой ручной остановки. Описанные выше шаги применимы, когда зависает уже работающий супервизор.

1028 1032 


1040claude daemon stop --any --keep-workers1044claude daemon stop --any --keep-workers

1041```1045```

1042 1046 

1043Следующий запуск `claude agents` или `claude --bg` запускает новый супервизор, который читает ваши сохранённые учётные данные. Если вы проходите аутентификацию с помощью переменной окружения, например `ANTHROPIC_API_KEY`, а не через `/login`, выполните эту следующую команду из оболочки, в которой задана эта переменная.1047В течение [примерно минуты](#the-supervisor-process) выполните `claude agents` или `claude --bg` в оболочке, чтобы запустить новый супервизор, который читает ваши сохранённые учётные данные. Если вы проходите аутентификацию с помощью переменной окружения, например `ANTHROPIC_API_KEY`, а не через `/login`, выполните эту следующую команду из оболочки, в которой задана эта переменная.

1044 1048 

1045Полный список причин и способов исправления см. в [справочнике по ошибкам](/docs/ru/errors#could-not-resolve-authentication-method).1049Полный список причин и способов исправления см. в [справочнике по ошибкам](/docs/ru/errors#could-not-resolve-authentication-method).

1046 1050 

analytics.md +1 −1

Details

67* **"GitHub app required"**: установите приложение GitHub для просмотра метрик вклада67* **"GitHub app required"**: установите приложение GitHub для просмотра метрик вклада

68* **"Data processing in progress"**: проверьте через несколько дней и подтвердите, что приложение GitHub установлено, если данные не появляются68* **"Data processing in progress"**: проверьте через несколько дней и подтвердите, что приложение GitHub установлено, если данные не появляются

69 69 

70Метрики вклада поддерживают GitHub Cloud и GitHub Enterprise Server.70Метрики вклада охватывают репозитории, размещённые на github.com. Для репозиториев на [GitHub Enterprise Server](/docs/ru/github-enterprise-server) панель аналитики показывает только метрики использования.

71 71 

72<h3 id="review-summary-metrics">72<h3 id="review-summary-metrics">

73 Просмотр сводных метрик73 Просмотр сводных метрик

Details

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

90 90 

91<Steps>91<Steps>

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

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

94 </Step>94 </Step>

95 95 

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

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

98 98 

99 * Массовое приглашение пользователей из Console: Settings -> Members -> Invite99 * Массово пригласите пользователей со страницы Members в Console по адресу [platform.claude.com/settings/members](https://platform.claude.com/settings/members): нажмите **Invite**

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

101 </Step>101 </Step>

102 102 

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

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

105 105 

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

107 * **Developer** роль: пользователи могут создавать любой вид ключа API107 * Роль **Developer**: пользователи могут создавать API-ключи любого вида

108 </Step>108 </Step>

109 109 

110 <Step title="Пользователи завершают настройку">110 <Step title="Пользователи завершают настройку">

111 Каждый приглашенный пользователь должен:111 Каждый приглашённый пользователь должен:

112 112 

113 * Принять приглашение Console113 * Принять приглашение Console

114 * [Проверить системные требования](/docs/ru/setup#system-requirements)114 * [Проверить системные требования](/docs/ru/setup#system-requirements)

115 * [Установить Claude Code](/docs/ru/setup#install-claude-code)115 * [Установить Claude Code](/docs/ru/setup#install-claude-code)

116 * Войти с учетными данными учетной записи Console116 * Войти с учётными данными учётной записи Console

117 </Step>117 </Step>

118</Steps>118</Steps>

119 119 

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Плата за запросы классификатора в авторежиме

6 

7> Разберитесь с уведомлением Claude Code о том, что эта сессия не подходит для бесплатных запросов классификатора в авторежиме: что это означает, почему оно появляется и что делать.

8 

9В [режиме auto](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) классификатор проверяет действия, такие как команды оболочки и сетевые запросы, перед их выполнением. Если [включены проверки на стороне сервера](/docs/ru/permission-modes#server-side-classifier-review), сервер выполняет эти проверки как часть собственных запросов модели сеанса, без взимания платы. Это уведомление означает, что проверки сервера не достигают вашего сеанса, поэтому Claude Code выполняет свои собственные запросы классификатора, и на вашем счёте эти запросы учитываются в использовании токенов:

10 

11```text theme={null}

12We're changing auto mode to no longer charge for classifier requests in Claude Code. However, this session isn't eligible.

13```

14 

15В приглашении Claude Code удерживает первое действие, которое он проверил бы таким образом, пока вы не ответите. Ничего не сломано: режим auto продолжает работать, и его запросы классификатора выставляются счетом, как и раньше. Наиболее частая причина — это шлюз LLM или прокси между Claude Code и API, и когда Claude Code может идентифицировать его, уведомление называет его. Нажмите **Enter** для продолжения или см. [Сделать сеанс подходящим](#make-the-session-eligible), чтобы предотвратить его появление в новых сеансах.

16 

17<h2 id="respond-to-the-notice">

18 Ответить на уведомление

19</h2>

20 

21Уведомление удерживает действие до тех пор, пока вы на него не ответите:

22 

23* **Enter** продолжает: удерживаемое действие и остальная часть сеанса используют собственные запросы классификатора Claude Code, которые выставляются счетом как использование токенов, как и раньше, и уведомление больше не появляется в этом сеансе. Когда уведомление назвало шлюз, его подтверждение предотвращает его повторное появление на этом компьютере в течение 24 часов. Когда оно этого не сделало, уведомление возвращается в следующий раз, когда сеанс переходит в режим отката.

24* **Esc** или **Ctrl+C** отменяет: удерживаемое действие не выполняется и текущий ход останавливается, при этом сеанс остается в автоматическом режиме. Ничего не запоминается, поэтому уведомление появляется снова перед следующим проверяемым действием.

25 

26Чтобы вместо этого прекратить использование автоматического режима, переключите режимы разрешений с помощью `Shift+Tab` после того, как вы ответите.

27 

28В случаях, когда уведомление не может ждать ответа, Claude Code выводит тот же текст и сеанс продолжается в автоматическом режиме, если подтверждение шлюза на этом компьютере в течение последних 24 часов не отклонило его. В [неинтерактивном режиме](/docs/ru/headless) с `-p` он выводит текст в stderr, а в выводе `stream-json` он выдает сообщение предупреждения `system`, которое приложения Agent SDK могут читать из потока сообщений.

29 

30<h2 id="make-the-session-eligible">

31 Сделайте сеанс подходящим

32</h2>

33 

34Если причина в шлюзе, попросите администратора вашей компании или поставщика шлюза пропускать запросы и ответы без изменений. Это означает пересылку заголовков запросов и полей тела в том виде, в котором они есть, включая те, которые шлюз не распознает, такие как поле запроса `safeguards`, и возврат ответов и событий потоковой передачи без удаления ключей, таких как поле `safeguard_results` или переписывание идентификаторов использования инструментов, как описано в [руководстве совместимости шлюза](/docs/ru/llm-gateway-protocol#feature-pass-through). Шлюз, пропускающий трафик таким образом, продолжает работать с этой функцией и с будущими. Новые сеансы затем снова используют проверки сервера.

35 

36Если вы уже знаете, что ваш шлюз не может предоставить проверки сервера, скажите Claude Code не запрашивать их там, установив `CLAUDE_CODE_AUTO_MODE_SERVER` на `0` перед началом сеанса в вашей оболочке или в [ключе параметров `env`](/docs/ru/settings-reference#env):

37 

38```bash theme={null}

39export CLAUDE_CODE_AUTO_MODE_SERVER=0

40```

41 

42Запросы классификатора затем всегда являются собственными Claude Code, выставляются счета таким же образом, и уведомление не появляется. При прямом подключении к API Anthropic переменная требует Claude Code v2.1.281 или более поздней версии. Установка `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` при неустановленном `CLAUDE_CODE_AUTO_MODE_SERVER` также отключает проверки сервера, за исключением случаев, описанных в разделе [Отключение предварительных возможностей](/docs/ru/llm-gateway-protocol#disable-pre-release-capabilities).

43 

44`CLAUDE_CODE_AUTO_MODE_SERVER` — это временный параметр и может быть удален в более поздней версии.

45 

46<h2 id="why-the-notice-appears">

47 Почему появляется уведомление

48</h2>

49 

50[Проверка классификатора на стороне сервера](/docs/ru/permission-modes#server-side-classifier-review) указывает, какие сеансы запрашивают у сервера проверки классификатора. Планы Pro, Max и Team никогда не показывают уведомление. Когда оно появляется, обычные причины следующие:

51 

52* **На пути находится шлюз LLM или прокси**: тот, который удаляет или переписывает заголовки запроса, отбрасывает поля запроса, которые он не распознает, или редактирует ответы. Затем сервер никогда не получает запрос на проверки, или Claude Code никогда не получает результаты. Когда ваша конфигурация или ответы идентифицируют шлюз, уведомление его называет.

53* **Проверки на стороне сервера еще не достигли вашей платформы, региона или учетных данных**: то, выполняет ли платформа или регион их, зависит от развертывания этой платформы. Если вы видите уведомление без шлюза или прокси на пути и оно продолжает появляться, это вероятная причина. Чтобы подтвердить, обратитесь в службу поддержки или администратора вашей компании, или сообщите об этом с помощью `/feedback`.

54 

55Чтобы проверить сеанс, находящийся в режиме auto, выполните `/status` в приглашении Claude Code: его строка **Auto mode server** читает `Enabled`, пока проверки сервера определяют действия сеанса, и `Disabled` после того, как сеанс вернулся в режим fallback.

56 

57Когда шлюз сокращает ответы или переписывает результаты в форму, которую Claude Code не может прочитать, вы получаете отказы без вердикта вместо этого уведомления; см. [Проверка классификатора на стороне сервера](/docs/ru/permission-modes#server-side-classifier-review).

58 

59<h2 id="related-resources">

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

61</h2>

62 

63* [Режим Auto](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode): что такое режим Auto и что он блокирует по умолчанию

64* [Проверка классификатора на стороне сервера](/docs/ru/permission-modes#server-side-classifier-review): какие сеансы запрашивают у сервера проверку действий и какая версия Claude Code требуется для каждого из них

65* [Руководство совместимости шлюза](/docs/ru/llm-gateway-protocol#feature-pass-through): что ломается, когда шлюз удаляет заголовки или поля тела

66* [Сервер не вернул вердикт безопасности](/docs/ru/errors#the-server-returned-no-safety-verdict): отказ, который вы видите, когда сервер не дает вердикт для действия

67* [Управляйте затратами эффективно](/docs/ru/costs): отслеживайте использование токенов и снижайте затраты на Claude Code

Details

383 383 

384Два других места на экране, которые сообщают об отклонениях, опускают команду или URL: уведомление рядом с полем ввода, такое как `bash denied by auto mode · [Data Exfiltration] · /permissions`, указывает инструмент и причину, а вкладка **Recently denied** перечисляет команду shell по описанию, которое для неё написал Claude. Чтобы программно захватить точный ввод этих отклонений, добавьте [`PermissionDenied` hook](/docs/ru/hooks#permissiondenied), который получает его как `tool_input`.384Два других места на экране, которые сообщают об отклонениях, опускают команду или URL: уведомление рядом с полем ввода, такое как `bash denied by auto mode · [Data Exfiltration] · /permissions`, указывает инструмент и причину, а вкладка **Recently denied** перечисляет команду shell по описанию, которое для неё написал Claude. Чтобы программно захватить точный ввод этих отклонений, добавьте [`PermissionDenied` hook](/docs/ru/hooks#permissiondenied), который получает его как `tool_input`.

385 385 

386Текст под вызовом говорит вам, есть ли что-то для исправления. Текст, который сообщает о проблеме с самим классификатором, такой как модель, которая `is temporarily unavailable` или ошибка классификатора, означает, что Claude Code заблокировал вызов без окончательного вердикта от классификатора; см. [Auto mode cannot determine the safety of an action](/docs/ru/errors#auto-mode-cannot-determine-the-safety-of-an-action) для получения информации о том, что делать. В противном случае строка, читающая `Denied by auto mode classifier` с причиной, такой как `[Production Deploy]` или `Blocked by classifier`, означает, что классификатор посчитал вызов небезопасным, поэтому выберите исправление из того, что вызов пытался достичь или сделать:386Текст под вызовом говорит вам, есть ли что-то для исправления. Тусклая строка `Not run · auto mode's check had no usable answer` или текст, который сообщает о проблеме с самим классификатором, такой как `Auto mode could not evaluate this action`, означает, что Claude Code заблокировал вызов без вердикта от классификатора. Для строки `Not run` нажмите `Ctrl+O`, чтобы прочитать полное сообщение, затем см. [Auto mode cannot determine the safety of an action](/docs/ru/errors#auto-mode-cannot-determine-the-safety-of-an-action) или [The server returned no safety verdict](/docs/ru/errors#the-server-returned-no-safety-verdict), чтобы узнать, что делать.

387 

388В противном случае строка `Denied by auto mode classifier` с причиной, такой как `[Production Deploy]` или `Blocked by classifier`, означает, что классификатор посчитал вызов небезопасным, поэтому выберите исправление исходя из того, к чему вызов пытался обратиться или что пытался сделать:

387 389 

388* Пункт назначения, который Claude нужен на протяжении всей задачи, такой как реестр пакетов, внутренний домен или хост репозитория: добавьте его в `autoMode.environment`.390* Пункт назначения, который Claude нужен на протяжении всей задачи, такой как реестр пакетов, внутренний домен или хост репозитория: добавьте его в `autoMode.environment`.

389* Команда, которую вы хотите запустить без проверки с этого момента: добавьте правило `allow`.391* Команда, которую вы хотите запустить без проверки с этого момента: добавьте правило `allow`.

Details

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

115</h3>115</h3>

116 116 

117Когда сообщение, которое вы [ставите в очередь, пока Claude работает](/docs/ru/interactive-mode#queue-messages-while-claude-works), достигает Claude в течение текущего хода, оно присоединяется к этому ходу вместо того, чтобы начать новый. Сообщение появляется в диалоге, но Claude Code не создаёт для него чекпоинт. Сообщение в очереди, которое Claude Code отправляет в рамках нового хода, получает чекпоинт как обычно, включая случаи, когда несколько сообщений в очереди [совместно используют этот ход](/docs/ru/interactive-mode#when-claude-code-sends-what-you-queued).117В меню rewind сообщение, которое вы [ввели, пока Claude ещё работал](/docs/ru/interactive-mode#queue-messages-while-claude-works), может быть помечено как **No code restore**. Claude прочитал это сообщение до завершения своего хода. [Чекпоинты создаются для промптов, которые начинают ход](#how-checkpoints-work), поэтому у этого сообщения нет собственного чекпоинта. Правки, которые Claude внёс после его прочтения, относятся к промпту, с которого начался ход.

118 118 

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

120 120 

121<h3 id="symlinked-and-hard-linked-paths-not-restored">121<h3 id="symlinked-and-hard-linked-paths-not-restored">

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

chrome.md +3 −4

Details

129 Запросы разрешений в сессиях VS Code129 Запросы разрешений в сессиях VS Code

130</h3>130</h3>

131 131 

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

133 133 

134* **Вы ввели `@browser`**: расширение одобряет каждое действие в браузере, о котором Claude Code иначе спросил бы вас.134В сессии, которая подключилась к вашему браузеру при запуске, потому что включена настройка [Включено по умолчанию](#enable-chrome-by-default), Claude Code спрашивает вас перед действиями в браузере на сайте, который вы не разрешили, в режимах разрешений Manual, Edit automatically, Auto и Bypass permissions. В режимах Auto и Bypass permissions это действует, пока вы не введёте `@browser` в этой сессии.

135* **Подключение выполнила настройка [Включено по умолчанию](#enable-chrome-by-default) при запуске**: Claude Code спрашивает вас перед действиями в браузере на сайте, который вы не разрешили, в режимах разрешений Manual, Edit automatically, Auto и Bypass permissions, пока вы не введёте `@browser` в этой сессии.

136 135 

137<h3 id="browser-tools-in-plan-mode">136<h3 id="browser-tools-in-plan-mode">

138 Инструменты браузера в режиме планирования137 Инструменты браузера в режиме планирования

139</h3>138</h3>

140 139 

141В [режиме планирования](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode) запрос разрешения появляется перед тем, как Claude записывает GIF, открывает новую вкладку или запускает ярлык, за исключением сессии VS Code, в которой вы ввели [`@browser`](#permission-prompts-in-vs-code-sessions). Если в интерактивной сессии CLI [доступен режим обхода разрешений](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) и [получение feature-флагов](/docs/ru/env-vars#features-that-need-feature-flag-fetching) отключено, эти вызовы выполняются без запроса.140В [режиме планирования](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode) запрос разрешения появляется перед тем, как Claude записывает GIF, открывает новую вкладку или запускает ярлык. Если в интерактивной сессии CLI [доступен режим обхода разрешений](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) и [получение feature-флагов](/docs/ru/env-vars#features-that-need-feature-flag-fetching) отключено, эти вызовы выполняются без запроса.

142 141 

143Вызов `tabs_context_mcp` также запрашивает разрешение, когда он устанавливает `createIfEmpty`, как и вызов `browser_batch`, включающий любое из этих действий.142Вызов `tabs_context_mcp` также запрашивает разрешение, когда он устанавливает `createIfEmpty`, как и вызов `browser_batch`, включающий любое из этих действий.

144 143 

Details

263 Подключение разработчиков263 Подключение разработчиков

264</h2>264</h2>

265 265 

266Разработчики подключаются со своих собственных ноутбуков с помощью одного входа в браузере, используя свою корпоративную рабочую учётную запись. Им не нужна учётная запись claude.ai, API-ключ или подписка, потому что запросы к модели идут через шлюз с использованием вышестоящих учётных данных организации. Подключение управляется [управляемыми настройками на стороне клиента](/docs/ru/claude-apps-gateway-config#client-side-managed-settings), которые вы распространяете через MDM, поэтому ручная настройка на стороне разработчика не требуется; этот раздел описывает то, что настраивает администратор.266Разработчики подключаются со своих собственных ноутбуков с помощью одного входа в браузере, используя свою корпоративную рабочую учётную запись. Им не нужна учётная запись claude.ai, API-ключ или подписка, потому что запросы к модели идут через шлюз с использованием вышестоящих учётных данных организации. Подключение управляется [управляемыми настройками на стороне клиента](/docs/ru/claude-apps-gateway-config#client-side-managed-settings), которые вы распространяете через MDM, и этот раздел описывает то, что настраивает администратор.

267 267 

268При первом подключении CLI снимает отпечаток листового TLS-сертификата шлюза и закрепляет его для каждого имени хоста. Он снова проверяет этот закреплённый отпечаток при входе, при фоновом обновлении сессии и при получении управляемых настроек, тогда как запросы инференса используют стандартную проверку TLS без закрепления. Запросы, маршрутизируемые через HTTPS-прокси, пропускают проверку закреплённого отпечатка, поэтому добавьте хост шлюза в `NO_PROXY`, чтобы они шли напрямую.268При первом подключении CLI снимает отпечаток листового TLS-сертификата шлюза и закрепляет его для каждого имени хоста. Он снова проверяет этот закреплённый отпечаток при входе, при фоновом обновлении сессии и при получении управляемых настроек, тогда как запросы инференса используют стандартную проверку TLS без закрепления. Запросы, маршрутизируемые через HTTPS-прокси, пропускают проверку закреплённого отпечатка, поэтому добавьте хост шлюза в `NO_PROXY`, чтобы они шли напрямую.

269 269 


287 Задание URL шлюза287 Задание URL шлюза

288</h3>288</h3>

289 289 

290Три ключа помещаются в [файл управляемых настроек](/docs/ru/managed-settings#delivery-mechanisms) для соответствующей ОС, который вы развёртываете через MDM или непосредственно на диск. `forceLoginMethod` и `forceLoginGatewayUrl` открывают `/login` сразу на экране **Cloud gateway** с заполненным URL, а `parentSettingsBehavior: "merge"` позволяет Claude Desktop передавать список разрешённых исходящих соединений шлюза в запускаемые им сессии Claude Code, как описано в разделе [Доставка политики в сессии Claude Desktop](#deliver-policy-to-claude-desktop-sessions):290Три ключа помещаются в [файл управляемых настроек](/docs/ru/managed-settings#delivery-mechanisms) для соответствующей ОС, который вы развёртываете через MDM или непосредственно на диск. Для машины без управляемых настроек см. вместо этого раздел [Задание URL шлюза в пользовательских настройках](#set-the-gateway-url-in-user-settings). `forceLoginMethod` и `forceLoginGatewayUrl` открывают `/login` сразу на экране **Cloud gateway** с заполненным URL, а `parentSettingsBehavior: "merge"` позволяет Claude Desktop передавать список разрешённых исходящих соединений шлюза в запускаемые им сессии Claude Code, как описано в разделе [Доставка политики в сессии Claude Desktop](#deliver-policy-to-claude-desktop-sessions):

291 291 

292```json theme={null}292```json theme={null}

293{293{


299 299 

300Разработчик нажимает Enter для подключения. [Запрос отпечатка TLS при первом подключении](#connect-developers) по-прежнему появляется. Как только файл оказывается на машине, разработчик, не завершивший вход в шлюз, видит одно из сообщений, описанных в разделе [Administrator policy requires a Cloud gateway sign-in](/docs/ru/errors#administrator-policy-requires-a-cloud-gateway-sign-in). Разработчикам, которые выбирают облачного провайдера через переменную окружения, например `CLAUDE_CODE_USE_BEDROCK`, вход в шлюз не нужен.300Разработчик нажимает Enter для подключения. [Запрос отпечатка TLS при первом подключении](#connect-developers) по-прежнему появляется. Как только файл оказывается на машине, разработчик, не завершивший вход в шлюз, видит одно из сообщений, описанных в разделе [Administrator policy requires a Cloud gateway sign-in](/docs/ru/errors#administrator-policy-requires-a-cloud-gateway-sign-in). Разработчикам, которые выбирают облачного провайдера через переменную окружения, например `CLAUDE_CODE_USE_BEDROCK`, вход в шлюз не нужен.

301 301 

302Разработчик не может настроить это вручную. В средстве выбора способа входа нет варианта шлюза, а `forceLoginGatewayUrl` игнорируется в собственных файлах настроек разработчика. Один `forceLoginMethod` без URL оставляет разработчика с сообщением "Contact your IT administrator". Ключи входа должны находиться в файле, который вы распространяете на машины, а не в блоке `managed.policies[].cli` шлюза, который доходит только до уже подключённых клиентов.302В средстве выбора способа входа нет варианта шлюза, а в управляемых настройках один `forceLoginMethod` без URL оставляет разработчика с сообщением "Contact your IT administrator". Ключи входа должны находиться в файле, который вы распространяете на машины, а не в блоке `managed.policies[].cli` шлюза, который доходит только до уже подключённых клиентов.

303 

304<h4 id="set-the-gateway-url-in-user-settings">

305 Задание URL шлюза в пользовательских настройках

306</h4>

307 

308На машинах без управляемых настроек попросите каждого разработчика добавить `forceLoginMethod` и `forceLoginGatewayUrl` в собственный файл пользовательских настроек `~/.claude/settings.json`. Для этого требуется Claude Code v2.1.295 или новее на машине разработчика. В этом примере указан шлюз по адресу `claude-gateway.internal.example.com`:

309 

310```json theme={null}

311{

312 "forceLoginMethod": "gateway",

313 "forceLoginGatewayUrl": "https://claude-gateway.internal.example.com"

314}

315```

316 

317Когда разработчик выполняет `/login` в промпте Claude Code, экран **Cloud gateway** открывается с этим адресом, и разработчик нажимает Enter для подключения. [Запрос отпечатка TLS при первом подключении](#connect-developers) по-прежнему появляется. Для ключей, заданных таким образом, действуют следующие ограничения:

318 

319* **Только пользовательские настройки**: Claude Code читает эти два ключа из `~/.claude/settings.json`, а не из `.claude/settings.json` или `.claude/settings.local.json` проекта.

320* **Управляемые настройки их отключают**: как только настройки администратора попадают на машину через файл управляемых настроек, plist в macOS или политику HKLM в Windows либо через [вспомогательную программу политики](/docs/ru/settings-reference#policyhelper), Claude Code игнорирует шлюз, указанный в пользовательских настройках.

303 321 

304<h3 id="allow-a-gateway-on-public-address-space-you-own">322<h3 id="allow-a-gateway-on-public-address-space-you-own">

305 Разрешение шлюза в принадлежащем вам публичном адресном пространстве323 Разрешение шлюза в принадлежащем вам публичном адресном пространстве

Details

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

982</Warning>982</Warning>

983 983 

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

985 985 

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

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

988 988 

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

990 990 

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

992 992 


1713 1713 

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

1715 1715 

1716Claude Code соблюдает [`forceLoginGatewayUrl`](/docs/ru/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/ru/settings-reference#gatewayinternalnetworks) и значение `"gateway"` [`forceLoginMethod`](/docs/ru/settings-reference#forceloginmethod) только из управляемого источника на машине: `managed-settings.json`, plist macOS или реестр HKLM Windows, или помощник политики. Установка их в собственном `~/.claude/settings.json` разработчика или в полезной нагрузке gateway не настраивает вход в gateway.1716Claude Code учитывает [`forceLoginGatewayUrl`](/docs/ru/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/ru/settings-reference#gatewayinternalnetworks) и значение `"gateway"` ключа [`forceLoginMethod`](/docs/ru/settings-reference#forceloginmethod) из управляемого источника на машине: `managed-settings.json`, plist macOS или реестра HKLM Windows либо помощника политики. Установка их в данных, передаваемых шлюзом, не настраивает вход через шлюз. Для собственного `~/.claude/settings.json` разработчика см. [Установка URL шлюза в пользовательских настройках](/docs/ru/claude-apps-gateway#set-the-gateway-url-in-user-settings).

1717 1717 

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

1719 1719 

Details

135 Отправьте URL шлюза на машины разработчиков135 Отправьте URL шлюза на машины разработчиков

136</h3>136</h3>

137 137 

138Как только шлюз начнет обслуживать, отправьте `forceLoginMethod`, `forceLoginGatewayUrl` и `parentSettingsBehavior: "merge"` на каждую машину разработчика через управляемые параметры, через MDM или путем прямого написания файла `managed-settings.json` для каждой ОС. Без этого `/login` показывает стандартный выбор аккаунта без опции шлюза.138Как только шлюз начнёт обслуживать, отправьте `forceLoginMethod`, `forceLoginGatewayUrl` и `parentSettingsBehavior: "merge"` на каждую машину разработчика через управляемые настройки, через MDM или путём прямой записи файла `managed-settings.json` для каждой ОС.

139 139 

140Как только вы развернете ключи, Claude Code перестанет использовать оставшийся API ключ или вход claude.ai на машине, поэтому спланируйте отправку вместе с вашими инструкциями по входу. [Политика администратора требует вход через Cloud шлюз](/docs/ru/errors#administrator-policy-requires-a-cloud-gateway-sign-in) описывает сообщения, которые видят разработчики.140Как только вы развернете ключи, Claude Code перестанет использовать оставшийся API ключ или вход claude.ai на машине, поэтому спланируйте отправку вместе с вашими инструкциями по входу. [Политика администратора требует вход через Cloud шлюз](/docs/ru/errors#administrator-policy-requires-a-cloud-gateway-sign-in) описывает сообщения, которые видят разработчики.

141 141 

Details

277 277 

278Потоки работают в [auto mode](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), когда модель потока это поддерживает, поэтому большинство вызовов инструментов работают без вашего запроса. Когда потоку нужно ваше одобрение, подсказка находится внутри этого потока и поток ждет, пока вы ответите там. Сказание Claude в разговоре проекта идти дальше не достигает его.278Потоки работают в [auto mode](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), когда модель потока это поддерживает, поэтому большинство вызовов инструментов работают без вашего запроса. Когда потоку нужно ваше одобрение, подсказка находится внутри этого потока и поток ждет, пока вы ответите там. Сказание Claude в разговоре проекта идти дальше не достигает его.

279 279 

280Каждое одобрение охватывает эту подсказку или остаток этого потока, если вы выберете более широкий вариант. Чтобы позволить каждому потоку запускать определенные команды без запроса или блокировать некоторые, добавьте [правила разрешений](/docs/ru/permissions) в `.claude/settings.json` репозитория. Потоки применяют их только в проекте с одним репозиторием; см. [Что потоки берут из ваших репозиториев](#what-threads-pick-up-from-your-repositories). В проекте с несколькими репозиториями правила разрешений ни одного репозитория не достигают облачный поток, поэтому вы полагаетесь на auto mode и на одобрения, которые вы даете внутри каждого потока.280Каждое подтверждение охватывает этот запрос или остаток этого потока, если вы выберете более широкий вариант.

281 

282Чтобы позволить каждому потоку запускать определенные команды без запроса или блокировать некоторые, добавьте [правила разрешений](/docs/ru/permissions) в `.claude/settings.json` репозитория. Проверьте, применяют ли их облачные потоки в вашем проекте:

283 

284* **Один репозиторий**: облачные потоки применяют правила. См. [Что потоки берут из ваших репозиториев](#what-threads-pick-up-from-your-repositories).

285* **Несколько репозиториев, среда, размещенная Anthropic**: правила разрешений ни одного репозитория не доходят до облачного потока, поэтому вы полагаетесь на авторежим и на подтверждения, которые вы даете внутри каждого потока.

286* **Несколько репозиториев, самостоятельно размещенная среда**: см. [настройки какого репозитория применяются](/docs/ru/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories).

281 287 

282<h3 id="run-a-thread-on-your-own-computer">288<h3 id="run-a-thread-on-your-own-computer">

283 Запустите поток на своем компьютере289 Запустите поток на своем компьютере


381 Что потоки берут из ваших репозиториев387 Что потоки берут из ваших репозиториев

382</h3>388</h3>

383 389 

384Каждый облачный поток клонирует каждый репозиторий проекта и загружает `CLAUDE.md` и скиллы из всех них. Правила разрешений, хуки и `env` берутся только из `.claude/settings.json` в директории, в которой запускается поток: внутри репозитория, если он в проекте один, и над клонами, если их несколько, — в этом случае файлы репозиториев для них не читаются.390Каждый облачный поток клонирует каждый репозиторий проекта и загружает `CLAUDE.md` и скиллы из всех них. Правила разрешений, хуки и `env` берутся только из `.claude/settings.json` в директории, в которой запускается поток.

385 391 

386| В каждом репозитории | Один репозиторий | Несколько репозиториев |392| В каждом репозитории | Один репозиторий | Несколько репозиториев |

387| :- | :- | :- |393| :- | :- | :- |

388| `CLAUDE.md` | Загружается при запуске потока | Загружается из каждого репозитория при запуске потока |394| `CLAUDE.md` | Загружается при запуске потока | Загружается из каждого репозитория при запуске потока |

389| Скиллы, агенты и команды в `.claude/` | Загружаются | Загружаются из каждого репозитория |395| Скиллы, агенты и команды в `.claude/` | Загружаются | Загружаются из каждого репозитория |

390| Плагины, включённые в `.claude/settings.json` | Не загружаются. Вместо этого добавьте плагин в **Project settings > Plugins** | Не загружаются. Вместо этого добавьте плагин в **Project settings > Plugins** |396| Плагины, включённые в `.claude/settings.json` | Не загружаются. Вместо этого добавьте плагин в **Project settings > Plugins** | Не загружаются. Вместо этого добавьте плагин в **Project settings > Plugins** |

391| Правила разрешений, хуки и `env`, определённые в `.claude/settings.json` | Применяются к потоку, кроме ключей `env`, которые [не учитывает ни одна облачная сессия](/docs/ru/cloud-environments#what-carries-over-from-your-setup) | Не применяются |397| Правила разрешений, хуки и `env`, определённые в `.claude/settings.json` | Применяются к потоку, кроме ключей `env`, которые [не учитывает ни одна облачная сессия](/docs/ru/cloud-environments#what-carries-over-from-your-setup) | Не применяются в среде, размещённой Anthropic. Для самостоятельно размещённой среды см. [настройки какого репозитория применяются](/docs/ru/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories) |

392 398 

393В проекте с несколькими репозиториями каждый клон подключается к потоку как [дополнительная директория](/docs/ru/memory#load-from-additional-directories) с включённой загрузкой `CLAUDE.md`, поэтому `CLAUDE.md` и скиллы каждого репозитория загружаются при запуске, хотя поток запускается над ними. В таком проекте помещайте постоянные правила в инструкции проекта, а переменные окружения передавайте потокам через [облачную среду](#choose-an-environment-for-threads).399В проекте с несколькими репозиториями помещайте постоянные правила в инструкции проекта, а переменные окружения передавайте потокам через [облачную среду](#choose-an-environment-for-threads).

394 400 

395<h3 id="choose-an-environment-for-threads">401<h3 id="choose-an-environment-for-threads">

396 Выбор среды для потоков402 Выбор среды для потоков


406 412 

407У облачных потоков нет скиллов, MCP-серверов, плагинов и инструментов, установленных только на вашей машине. Поток, который Claude запускает на вашей машине через [Remote Control](/docs/ru/remote-control), использует то, что установлено там. Чтобы сделать каждый из них доступным для облачных потоков:413У облачных потоков нет скиллов, MCP-серверов, плагинов и инструментов, установленных только на вашей машине. Поток, который Claude запускает на вашей машине через [Remote Control](/docs/ru/remote-control), использует то, что установлено там. Чтобы сделать каждый из них доступным для облачных потоков:

408 414 

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

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

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

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

Details

28| `claude auth logout` | Выйти из своей учётной записи Anthropic | `claude auth logout` |28| `claude auth logout` | Выйти из своей учётной записи Anthropic | `claude auth logout` |

29| `claude auth status` | Показать статус аутентификации в формате JSON. Используйте `--text` для удобочитаемого вывода. Завершается с кодом 0, если вы вошли, и 1, если нет. JSON включает поле `configDirectory` с указанием [каталога конфигурации](/docs/ru/claude-directory), который использует CLI. Это поле требует Claude Code v2.1.268 или новее. Поле `authMethod` в JSON принимает одно из значений: `none`, `claude.ai`, `oauth_token`, `api_key`, `api_key_helper` или `third_party` | `claude auth status` |29| `claude auth status` | Показать статус аутентификации в формате JSON. Используйте `--text` для удобочитаемого вывода. Завершается с кодом 0, если вы вошли, и 1, если нет. JSON включает поле `configDirectory` с указанием [каталога конфигурации](/docs/ru/claude-directory), который использует CLI. Это поле требует Claude Code v2.1.268 или новее. Поле `authMethod` в JSON принимает одно из значений: `none`, `claude.ai`, `oauth_token`, `api_key`, `api_key_helper` или `third_party` | `claude auth status` |

30| `claude agents` | Открыть [представление агентов](/docs/ru/agent-view) для мониторинга и отправки параллельных фоновых сессий. Используйте `--cwd <path>` для отображения только сессий, запущенных в этом каталоге, или `--json` для вывода активных сессий в виде массива JSON для скриптов (`--json --all` также включает завершённые фоновые сессии). Передайте `--permission-mode`, `--model`, `--effort` или `--agent` для установки [значений по умолчанию для отправленных сессий](/docs/ru/agent-view#permission-mode-model-and-effort). Принимает `--settings`, `--add-dir`, `--plugin-dir` и `--mcp-config`, как и команда верхнего уровня `claude`. Открытие представления агентов требует интерактивного терминала | `claude agents --json` |30| `claude agents` | Открыть [представление агентов](/docs/ru/agent-view) для мониторинга и отправки параллельных фоновых сессий. Используйте `--cwd <path>` для отображения только сессий, запущенных в этом каталоге, или `--json` для вывода активных сессий в виде массива JSON для скриптов (`--json --all` также включает завершённые фоновые сессии). Передайте `--permission-mode`, `--model`, `--effort` или `--agent` для установки [значений по умолчанию для отправленных сессий](/docs/ru/agent-view#permission-mode-model-and-effort). Принимает `--settings`, `--add-dir`, `--plugin-dir` и `--mcp-config`, как и команда верхнего уровня `claude`. Открытие представления агентов требует интерактивного терминала | `claude agents --json` |

31| `claude attach <id\|name>` | Подключиться к [фоновой сессии](/docs/ru/agent-view#manage-sessions-from-the-shell) в этом терминале. Передача части имени сессии вместо ID требует Claude Code v2.1.290 или новее | `claude attach 7c5dcf5d` |31| `claude attach <id\|name>` | Подключиться к [фоновой сессии](/docs/ru/agent-view#manage-sessions-from-the-shell) в этом терминале. Передача части имени работающей сессии вместо ID требует Claude Code v2.1.290 или новее | `claude attach 7c5dcf5d` |

32| `claude auto-mode defaults` | Вывести встроенные правила классификатора [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) в формате JSON. Используйте `claude auto-mode config`, чтобы увидеть вашу действующую конфигурацию с применёнными настройками. `--label <prefix>` выводит только правила, метка которых начинается с этого префикса, без учёта регистра. Требует Claude Code v2.1.208 или новее | `claude auto-mode defaults --label 'Git Destructive'` |32| `claude auto-mode defaults` | Вывести встроенные правила классификатора [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) в формате JSON. Используйте `claude auto-mode config`, чтобы увидеть вашу действующую конфигурацию с применёнными настройками. `--label <prefix>` выводит только правила, метка которых начинается с этого префикса, без учёта регистра. Требует Claude Code v2.1.208 или новее | `claude auto-mode defaults --label 'Git Destructive'` |

33| `claude auto-mode reset` | Восстановить конфигурацию [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) по умолчанию, удалив раздел `autoMode` из файла пользовательских настроек. Запрашивает подтверждение перед записью; передайте `-y`/`--yes`, чтобы пропустить запрос. Правила из [управляемых настроек](/docs/ru/server-managed-settings) или флага `--settings` по-прежнему применяются. Требует Claude Code v2.1.212 или новее. См. [Проверить значения по умолчанию и вашу действующую конфигурацию](/docs/ru/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |33| `claude auto-mode reset` | Восстановить конфигурацию [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) по умолчанию, удалив раздел `autoMode` из файла пользовательских настроек. Запрашивает подтверждение перед записью; передайте `-y`/`--yes`, чтобы пропустить запрос. Правила из [управляемых настроек](/docs/ru/server-managed-settings) или флага `--settings` по-прежнему применяются. Требует Claude Code v2.1.212 или новее. См. [Проверить значения по умолчанию и вашу действующую конфигурацию](/docs/ru/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |

34| `claude daemon logs` | Отслеживать файл лога [супервизора](/docs/ru/agent-view#the-supervisor-process) фоновых сессий, `~/.claude/daemon.log`, выводя новые строки по мере их появления, пока вы не нажмёте `Ctrl+C` | `claude daemon logs` |34| `claude daemon logs` | Отслеживать файл лога [супервизора](/docs/ru/agent-view#the-supervisor-process) фоновых сессий, `~/.claude/daemon.log`, выводя новые строки по мере их появления, пока вы не нажмёте `Ctrl+C` | `claude daemon logs` |


68| `--agent` | Указать агента для текущего сеанса (переопределяет параметр `agent`) | `claude --agent my-custom-agent` |68| `--agent` | Указать агента для текущего сеанса (переопределяет параметр `agent`) | `claude --agent my-custom-agent` |

69| `--agents` | Определить пользовательские subagents динамически через JSON. Принимает [поля, указанные для subagents, определённых через CLI](/docs/ru/sub-agents#choose-the-subagent-scope). С `--print` значение может быть вместо этого путём к файлу JSON, содержащему объект; форма файла требует Claude Code v2.1.281 или позже. Claude Code проверяет значение при запуске и выходит при недействительном; см. [`Invalid --agents configuration`](/docs/ru/errors#invalid-agents-configuration) для сообщения и для флагов и переменной окружения, которые пропускают проверку. Проверка требует Claude Code v2.1.242 или позже | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |69| `--agents` | Определить пользовательские subagents динамически через JSON. Принимает [поля, указанные для subagents, определённых через CLI](/docs/ru/sub-agents#choose-the-subagent-scope). С `--print` значение может быть вместо этого путём к файлу JSON, содержащему объект; форма файла требует Claude Code v2.1.281 или позже. Claude Code проверяет значение при запуске и выходит при недействительном; см. [`Invalid --agents configuration`](/docs/ru/errors#invalid-agents-configuration) для сообщения и для флагов и переменной окружения, которые пропускают проверку. Проверка требует Claude Code v2.1.242 или позже | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |

70| `--allow-dangerously-skip-permissions` | Добавить `bypassPermissions` в цикл режима `Shift+Tab` без немедленной активации. Позволяет начать в другом режиме, таком как `plan`, и переключиться на `bypassPermissions` позже. См. [режимы разрешения](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |70| `--allow-dangerously-skip-permissions` | Добавить `bypassPermissions` в цикл режима `Shift+Tab` без немедленной активации. Позволяет начать в другом режиме, таком как `plan`, и переключиться на `bypassPermissions` позже. См. [режимы разрешения](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |

71| `--allowedTools`, `--allowed-tools` | Инструменты, которые выполняются без запроса разрешения. См. [синтаксис правила разрешения](/docs/ru/settings-reference#permission-rule-syntax) для сопоставления шаблонов. Чтобы ограничить доступные инструменты, используйте `--tools` вместо этого. Если вы назовёте один из [инструментов отслеживания задач](/docs/ru/tools-reference#task-tool-availability) здесь, Claude Code также включает сеанс | `"Bash(git log *)" "Bash(git diff *)" "Read"` |71| `--allowedTools`, `--allowed-tools` | Инструменты, которые выполняются без запроса разрешения, за исключением чтения из [сетевых путей](/docs/ru/permissions#network-paths). Сопоставление шаблонов см. в разделе [синтаксис правил разрешений](/docs/ru/settings-reference#permission-rule-syntax). Чтобы ограничить набор доступных инструментов, используйте вместо этого `--tools`. Если указать здесь один из [инструментов отслеживания задач](/docs/ru/tools-reference#task-tool-availability), Claude Code также включает их для сессии | `"Bash(git log *)" "Bash(git diff *)" "Read"` |

72| `--append-subagent-system-prompt` | Добавить пользовательский текст в конец системного приглашения каждого [subagent](/docs/ru/sub-agents), включая вложенные subagents, кроме [forked subagent](/docs/ru/sub-agents#fork-the-current-conversation), который повторно использует приглашение собственной беседы. Применяется только в неинтерактивном режиме с `-p`. Требует Claude Code v2.1.205 или позже | `claude -p --append-subagent-system-prompt "Cite file paths in every answer" "query"` |72| `--append-subagent-system-prompt` | Добавить пользовательский текст в конец системного приглашения каждого [subagent](/docs/ru/sub-agents), включая вложенные subagents, кроме [forked subagent](/docs/ru/sub-agents#fork-the-current-conversation), который повторно использует приглашение собственной беседы. Применяется только в неинтерактивном режиме с `-p`. Требует Claude Code v2.1.205 или позже | `claude -p --append-subagent-system-prompt "Cite file paths in every answer" "query"` |

73| `--append-subagent-system-prompt-file` | Загрузить текст из файла и добавить его к системным приглашениям [subagent](/docs/ru/sub-agents). Альтернатива `--append-subagent-system-prompt` для текста, слишком длинного для передачи в командной строке. Два флага не могут быть скомбинированы. Применяется только в неинтерактивном режиме с `-p`. Требует Claude Code v2.1.261 или позже | `claude -p --append-subagent-system-prompt-file ./subagent-rules.txt "query"` |73| `--append-subagent-system-prompt-file` | Загрузить текст из файла и добавить его к системным приглашениям [subagent](/docs/ru/sub-agents). Альтернатива `--append-subagent-system-prompt` для текста, слишком длинного для передачи в командной строке. Два флага не могут быть скомбинированы. Применяется только в неинтерактивном режиме с `-p`. Требует Claude Code v2.1.261 или позже | `claude -p --append-subagent-system-prompt-file ./subagent-rules.txt "query"` |

74| `--append-system-prompt` | Добавить пользовательский текст в конец системного приглашения по умолчанию | `claude --append-system-prompt "Always use TypeScript"` |74| `--append-system-prompt` | Добавить пользовательский текст в конец системного приглашения по умолчанию | `claude --append-system-prompt "Always use TypeScript"` |


81| `--channels` | (Исследовательский предпросмотр) MCP серверы, чьи уведомления [channel](/docs/ru/channels) Claude должен слушать в этом сеансе. Разделённый пробелом список записей `plugin:<name>@<marketplace>`. Требует аутентификацию Anthropic через claude.ai или API-ключ Console | `claude --channels plugin:my-notifier@my-marketplace` |81| `--channels` | (Исследовательский предпросмотр) MCP серверы, чьи уведомления [channel](/docs/ru/channels) Claude должен слушать в этом сеансе. Разделённый пробелом список записей `plugin:<name>@<marketplace>`. Требует аутентификацию Anthropic через claude.ai или API-ключ Console | `claude --channels plugin:my-notifier@my-marketplace` |

82| `--chrome` | Включить [интеграцию браузера Chrome](/docs/ru/chrome) для веб-автоматизации и тестирования | `claude --chrome` |82| `--chrome` | Включить [интеграцию браузера Chrome](/docs/ru/chrome) для веб-автоматизации и тестирования | `claude --chrome` |

83| `--cloud` | С описанием задачи создать новый [веб-сеанс](/docs/ru/claude-code-on-the-web). С ID сеанса (`session_...` или `cse_...`) или URL claude.ai/code поставить в очередь сообщение в этот существующий сеанс вместо этого, с `-p`. См. [отправить последующее сообщение](/docs/ru/claude-code-on-the-web#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` |83| `--cloud` | С описанием задачи создать новый [веб-сеанс](/docs/ru/claude-code-on-the-web). С ID сеанса (`session_...` или `cse_...`) или URL claude.ai/code поставить в очередь сообщение в этот существующий сеанс вместо этого, с `-p`. См. [отправить последующее сообщение](/docs/ru/claude-code-on-the-web#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` |

84| `--continue`, `-c` | Загрузить самую последнюю беседу в текущем каталоге, включая [фоновый сеанс, который завершился](/docs/ru/sessions#resume-a-session); открытие завершённых фоновых сеансов требует Claude Code v2.1.257 или позже. Пропускает сеансы, созданные с `claude -p` или Agent SDK, и сеансы, чьё первое приглашение было `/loop`. `claude -p --continue` включает сеансы `-p`, SDK и `/loop`. Включает сеансы, которые добавили этот каталог с `/add-dir` | `claude --continue` |84| `--continue`, `-c` | Загрузить самый последний диалог в текущем каталоге, включая [завершившуюся фоновую сессию](/docs/ru/sessions#where-the-session-picker-looks); для открытия завершившихся фоновых сессий требуется Claude Code v2.1.257 или новее. Пропускает сессии, созданные с помощью `claude -p` или Agent SDK, а также сессии, первым промптом которых был `/loop`. `claude -p --continue` включает сессии `-p`, SDK и `/loop`. Включает сессии, которые добавили этот каталог с помощью `/add-dir` | `claude --continue` |

85| `--dangerously-load-development-channels` | Включить [каналы](/docs/ru/channels-reference#test-during-the-research-preview), которых нет в утверждённом списке разрешённых, для локальной разработки. Принимает записи `plugin:<name>@<marketplace>` и `server:<name>`. Запрашивает подтверждение, поэтому действует в интерактивных сессиях. С `-p` Claude Code игнорирует этот флаг | `claude --dangerously-load-development-channels server:webhook` |85| `--dangerously-load-development-channels` | Включить [каналы](/docs/ru/channels-reference#test-during-the-research-preview), которых нет в утверждённом списке разрешённых, для локальной разработки. Принимает записи `plugin:<name>@<marketplace>` и `server:<name>`. Запрашивает подтверждение, поэтому действует в интерактивных сессиях. С `-p` Claude Code игнорирует этот флаг | `claude --dangerously-load-development-channels server:webhook` |

86| `--dangerously-skip-permissions` | Пропустить запросы разрешения. Эквивалентно `--permission-mode bypassPermissions`. См. [режимы разрешения](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) для информации о том, что это пропускает и что не пропускает. Для сеансов, запущенных с `--bg`, режим [сохраняется при перезапуске сеанса супервизором](/docs/ru/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |86| `--dangerously-skip-permissions` | Пропустить запросы разрешения. Эквивалентно `--permission-mode bypassPermissions`. См. [режимы разрешения](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) для информации о том, что это пропускает и что не пропускает. Для сеансов, запущенных с `--bg`, режим [сохраняется при перезапуске сеанса супервизором](/docs/ru/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |

87| `--debug` | Включить режим отладки с дополнительной фильтрацией категорий, такой как `--debug='mcp,startup'` или `--debug='!1p'`. Фильтр привязывается только в форме `=`; разделённый пробелом фильтр включает режим отладки без фильтрации | `claude --debug='mcp,startup'` |87| `--debug` | Включить режим отладки с дополнительной фильтрацией категорий, такой как `--debug='mcp,startup'` или `--debug='!1p'`. Фильтр привязывается только в форме `=`; разделённый пробелом фильтр включает режим отладки без фильтрации | `claude --debug='mcp,startup'` |


108| `--maintenance` | Запустить [Setup hooks](/docs/ru/hooks#setup) с matcher `maintenance` перед сеансом (только режим печати) | `claude -p --maintenance "query"` |108| `--maintenance` | Запустить [Setup hooks](/docs/ru/hooks#setup) с matcher `maintenance` перед сеансом (только режим печати) | `claude -p --maintenance "query"` |

109| `--max-budget-usd` | Остановить запуск, как только оценочные расходы на вызовы API достигнут этой суммы (только режим печати). Claude Code сверяет лимит со своей [клиентской оценкой стоимости](/docs/ru/agent-sdk/cost-tracking#estimates-not-billing), которая может отличаться от вашего счёта. Расходы [субагентов](/docs/ru/sub-agents) учитываются в лимите. Расходы могут превысить лимит, поэтому [оставляйте запас](/docs/ru/agent-sdk/agent-loop#budget-headroom). Когда вы возвращаетесь к диалогу с `--continue` или `--resume`, итоги, [восстановленные из предыдущих запусков](/docs/ru/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls), в нём не учитываются. Когда расходы достигают лимита, запуск ещё одного субагента завершается ошибкой `Budget limit reached`, а Claude Code останавливает всё ещё работающих фоновых субагентов; для этого поведения ограничения требуется Claude Code v2.1.217 или новее | `claude -p --max-budget-usd 5.00 "query"` |109| `--max-budget-usd` | Остановить запуск, как только оценочные расходы на вызовы API достигнут этой суммы (только режим печати). Claude Code сверяет лимит со своей [клиентской оценкой стоимости](/docs/ru/agent-sdk/cost-tracking#estimates-not-billing), которая может отличаться от вашего счёта. Расходы [субагентов](/docs/ru/sub-agents) учитываются в лимите. Расходы могут превысить лимит, поэтому [оставляйте запас](/docs/ru/agent-sdk/agent-loop#budget-headroom). Когда вы возвращаетесь к диалогу с `--continue` или `--resume`, итоги, [восстановленные из предыдущих запусков](/docs/ru/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls), в нём не учитываются. Когда расходы достигают лимита, запуск ещё одного субагента завершается ошибкой `Budget limit reached`, а Claude Code останавливает всё ещё работающих фоновых субагентов; для этого поведения ограничения требуется Claude Code v2.1.217 или новее | `claude -p --max-budget-usd 5.00 "query"` |

110| `--max-turns` | Ограничить количество агентских ходов (только режим печати). Выходит с ошибкой при достижении лимита. По умолчанию нет лимита. С `--input-format stream-json` сообщение, всё ещё находящееся в очереди, когда лимит заканчивает ход, остаётся в очереди и начинает новый ход с собственным лимитом | `claude -p --max-turns 3 "query"` |110| `--max-turns` | Ограничить количество агентских ходов (только режим печати). Выходит с ошибкой при достижении лимита. По умолчанию нет лимита. С `--input-format stream-json` сообщение, всё ещё находящееся в очереди, когда лимит заканчивает ход, остаётся в очереди и начинает новый ход с собственным лимитом | `claude -p --max-turns 3 "query"` |

111| `--mcp-config` | Загрузить MCP серверы из JSON файлов или строк (разделённые пробелом). Когда вы передаёте этот флаг с `-p`, Claude Code ждёт, пока всё ещё ожидающие серверы подключатся перед запуском первого хода, до стартового таймаута [`MCP_TIMEOUT`](/docs/ru/env-vars), 30 секунд по умолчанию; сервер с [кэшированным списком инструментов](/docs/ru/mcp#managing-your-servers) пропускает ожидание и подключается при первом использовании. Ожидание требует Claude Code v2.1.221 или позже | `claude --mcp-config ./mcp.json` |111| `--mcp-config` | Загрузить MCP-серверы из JSON-файлов или строк (через пробел). Когда вы передаёте этот флаг с `-p`, Claude Code перед первым ходом ждёт подключения ещё не подключившихся серверов — не дольше стартового таймаута [`MCP_TIMEOUT`](/docs/ru/env-vars), по умолчанию 30 секунд; сервер с [кэшированным списком инструментов](/docs/ru/mcp#managing-your-servers) не ожидается и подключается при первом использовании. В [самостоятельно размещённом окружении](/docs/ru/self-hosted-environments-configuration#connection-timing) вместо этого действует более короткое ожидание. Для ожидания требуется Claude Code v2.1.221 или новее | `claude --mcp-config ./mcp.json` |

112| `--model` | Устанавливает модель для текущего сеанса с [псевдонимом модели](/docs/ru/model-config#model-aliases), таким как `sonnet`, `opus`, `haiku` или `fable`, или полным именем модели. Переопределяет параметр [`model`](/docs/ru/settings-reference#model) и [`ANTHROPIC_MODEL`](/docs/ru/model-config#environment-variables) | `claude --model claude-sonnet-5` |112| `--model` | Устанавливает модель для текущего сеанса с [псевдонимом модели](/docs/ru/model-config#model-aliases), таким как `sonnet`, `opus`, `haiku` или `fable`, или полным именем модели. Переопределяет параметр [`model`](/docs/ru/settings-reference#model) и [`ANTHROPIC_MODEL`](/docs/ru/model-config#environment-variables) | `claude --model claude-sonnet-5` |

113| `--name`, `-n` | Установить отображаемое имя для сеанса, показываемое в `/resume` и в заголовке терминала. Вы можете возобновить именованный сеанс с помощью `claude --resume <name>`. В интерактивном сеансе, если другой живой сеанс на этой машине уже использует имя, Claude Code применяет [вариант его](/docs/ru/sessions#name-your-sessions) вместо этого. <br /><br />[`/rename`](/docs/ru/commands) изменяет имя во время сеанса и также показывает его на панели приглашения | `claude -n "my-feature-work"` |113| `--name`, `-n` | Задать отображаемое имя сессии, которое показывается в `/resume` и в заголовке терминала. Именованную сессию можно возобновить с помощью `claude --resume <name>`. <br /><br />[`/rename`](/docs/ru/commands) изменяет имя во время сессии и также показывает его на панели промпта | `claude -n "my-feature-work"` |

114| `--no-chrome` | Отключить [интеграцию браузера Chrome](/docs/ru/chrome) для этого сеанса | `claude --no-chrome` |114| `--no-chrome` | Отключить [интеграцию браузера Chrome](/docs/ru/chrome) для этого сеанса | `claude --no-chrome` |

115| `--no-session-persistence` | Отключить сохранение сеанса, чтобы сеансы не сохранялись на диск и не могли быть возобновлены. Только режим печати. Переменная окружения [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/ru/env-vars) делает то же самое в любом режиме | `claude -p --no-session-persistence "query"` |115| `--no-session-persistence` | Отключить сохранение сеанса, чтобы сеансы не сохранялись на диск и не могли быть возобновлены. Только режим печати. Переменная окружения [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/ru/env-vars) делает то же самое в любом режиме | `claude -p --no-session-persistence "query"` |

116| `--output-format` | Указать формат вывода для режима печати (опции: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |116| `--output-format` | Указать формат вывода для режима печати (опции: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |

Details

314| Плагины и маркетплейсы, объявленные в `.claude/settings.json` вашего репозитория | Нет | Облачная сессия не устанавливает плагины, которые репозиторий включает в [`enabledPlugins`](/docs/ru/settings-reference#enabledplugins), включая плагины из маркетплейсов, которые он перечисляет в [`extraKnownMarketplaces`](/docs/ru/settings-reference#extraknownmarketplaces) |314| Плагины и маркетплейсы, объявленные в `.claude/settings.json` вашего репозитория | Нет | Облачная сессия не устанавливает плагины, которые репозиторий включает в [`enabledPlugins`](/docs/ru/settings-reference#enabledplugins), включая плагины из маркетплейсов, которые он перечисляет в [`extraKnownMarketplaces`](/docs/ru/settings-reference#extraknownmarketplaces) |

315| [Настройки, управляемые сервером](/docs/ru/server-managed-settings), вашей организации | Да, кроме сессий [Claude Tag](https://claude.com/docs/claude-tag/overview) | Загружаются с серверов Anthropic при запуске сессии. О том, как `availableModels` применяется в облачных сессиях, смотрите в разделе [Охват интерфейсов](/docs/ru/model-config#surface-coverage). Настройки, развёрнутые на вашем устройстве через MDM или файлы управляемых настроек, не применяются, потому что сессия работает на виртуальной машине, управляемой Anthropic; в [самостоятельно размещённой среде](/docs/ru/self-hosted-environments) сессии также читают файл управляемых настроек в образе runner, согласно разделу [как Claude Code объединяет управляемые источники](/docs/ru/managed-settings#how-claude-code-combines-managed-sources) |315| [Настройки, управляемые сервером](/docs/ru/server-managed-settings), вашей организации | Да, кроме сессий [Claude Tag](https://claude.com/docs/claude-tag/overview) | Загружаются с серверов Anthropic при запуске сессии. О том, как `availableModels` применяется в облачных сессиях, смотрите в разделе [Охват интерфейсов](/docs/ru/model-config#surface-coverage). Настройки, развёрнутые на вашем устройстве через MDM или файлы управляемых настроек, не применяются, потому что сессия работает на виртуальной машине, управляемой Anthropic; в [самостоятельно размещённой среде](/docs/ru/self-hosted-environments) сессии также читают файл управляемых настроек в образе runner, согласно разделу [как Claude Code объединяет управляемые источники](/docs/ru/managed-settings#how-claude-code-combines-managed-sources) |

316| Ваш пользовательский `~/.claude/CLAUDE.md` | Нет | Находится на вашей машине, а не в репозитории. Смотрите [Добавление личных предпочтений без коммита в репозиторий](#add-personal-preferences-without-committing-to-the-repo) |316| Ваш пользовательский `~/.claude/CLAUDE.md` | Нет | Находится на вашей машине, а не в репозитории. Смотрите [Добавление личных предпочтений без коммита в репозиторий](#add-personal-preferences-without-committing-to-the-repo) |

317| Ваши пользовательские `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` | Нет | Находятся на вашей машине, а не в репозитории. Вместо этого закоммитьте их в каталог `.claude/` репозитория. Облачные сессии автоматически загружают скиллы, которые вы включили на claude.ai |317| Ваши пользовательские `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` | Нет | Находятся на вашей машине, а не в репозитории. Вместо этого закоммитьте их в каталог `.claude/` репозитория. Облачные сессии автоматически загружают [скиллы, которые вы включили на claude.ai](/docs/ru/skills#skills-in-cowork-and-cloud-sessions) |

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

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

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

code-review.md +4 −4

Details

271| Раздел | Что он показывает |271| Раздел | Что он показывает |

272| :- | :- |272| :- | :- |

273| PRs reviewed | Ежедневное количество проверенных pull-запросов за выбранный период времени |273| PRs reviewed | Ежедневное количество проверенных pull-запросов за выбранный период времени |

274| Cost weekly | Еженедельные расходы на Code Review |274| Code Review cost | Расходы на Code Review с начала текущего месяца |

275| Feedback | Количество комментариев проверки, которые были автоматически разрешены, потому что разработчик решил проблему |275| Feedback | Количество комментариев проверки, которые были автоматически разрешены, потому что разработчик решил проблему |

276| Repository breakdown | Количество проверенных PR и разрешённых комментариев для каждого репо |276| Repository breakdown | Количество проверенных PR, разрешённых комментариев и запусков ревью для каждого репозитория, с оценочной стоимостью и представлением по каждому PR |

277 277 

278Цифры стоимости панели — это оценки для мониторинга активности. Для точной по счёту траты обратитесь к вашему счёту Anthropic.278Карточка Code Review cost показывает сумму, только когда выбран текущий месяц. Данные о стоимости в аналитике могут отличаться от вашего счёта. Стоимость в Repository breakdown оценивается по прейскурантной цене, без учёта скидок или кредитов, и охватывает только ревью, которые Claude опубликовал в pull request. Для точных по счёту расходов обратитесь к вашему счёту Anthropic.

279 279 

280<h2 id="pricing">280<h2 id="pricing">

281 Ценообразование281 Ценообразование


293 293 

294Затраты отображаются в вашем счете Anthropic независимо от того, использует ли ваша организация Amazon Bedrock или Google Cloud's Agent Platform для других функций Claude Code. Чтобы установить ежемесячный лимит расходов для Code Review, перейдите на [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) и настройте лимит для сервиса Claude Code Review.294Затраты отображаются в вашем счете Anthropic независимо от того, использует ли ваша организация Amazon Bedrock или Google Cloud's Agent Platform для других функций Claude Code. Чтобы установить ежемесячный лимит расходов для Code Review, перейдите на [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) и настройте лимит для сервиса Claude Code Review.

295 295 

296Отслеживайте расходы через еженедельную диаграмму затрат в [аналитике](#view-usage) или столбец средней стоимости за репозиторий в параметрах администратора.296Для отслеживания расходов используйте [панель аналитики](#view-usage).

297 297 

298<h2 id="troubleshooting">298<h2 id="troubleshooting">

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

commands.md +2 −2

Details

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

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

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

80| `/copy [N]` | Скопировать последний ответ ассистента в буфер обмена. Передайте число `N` для копирования N-го последнего ответа: `/copy 2` копирует второй с конца. Когда присутствуют блоки кода, показывает интерактивное средство выбора для выбора отдельных блоков или полного ответа. Нажмите `w` в средстве выбора для записи выделения в файл вместо буфера обмена, что полезно через SSH |80| `/copy [N]` | Скопировать последний ответ ассистента в буфер обмена. Передайте число `N` для копирования N-го последнего ответа: `/copy 2` копирует второй с конца. Когда присутствуют блоки кода или цитаты, показывает интерактивное средство выбора для выбора отдельных блоков или полного ответа. Нажмите `w` в средстве выбора для записи выделения в файл вместо буфера обмена, что полезно через SSH |

81| `/cost` | Псевдоним для `/usage` |81| `/cost` | Псевдоним для `/usage` |

82| `/dataviz [request]` | **[Skill](/docs/ru/skills#bundled-skills).** Рекомендации по дизайну для диаграмм, графиков и панелей управления. Claude выбирает форму диаграммы для данных, назначает цвет по роли, проверяет палитру на безопасность для дальтоников и контраст с помощью встроенного скрипта и применяет правила отметок, взаимодействия и доступности. Использует нейтральную к бренду палитру-заполнитель, которую вы заменяете своей собственной |82| `/dataviz [request]` | **[Skill](/docs/ru/skills#bundled-skills).** Рекомендации по дизайну для диаграмм, графиков и панелей управления. Claude выбирает форму диаграммы для данных, назначает цвет по роли, проверяет палитру на безопасность для дальтоников и контраст с помощью встроенного скрипта и применяет правила отметок, взаимодействия и доступности. Использует нейтральную к бренду палитру-заполнитель, которую вы заменяете своей собственной |

83| `/debug [description]` | **[Skill](/docs/ru/skills#bundled-skills).** Включить логирование отладки для текущей сессии и устранить проблемы путём чтения журнала отладки сессии. Логирование отладки отключено по умолчанию, если вы не запустили с `claude --debug`, поэтому запуск `/debug` в середине сессии начинает захватывать логи с этого момента. Опционально опишите проблему для фокусировки анализа |83| `/debug [description]` | **[Skill](/docs/ru/skills#bundled-skills).** Включить логирование отладки для текущей сессии и устранить проблемы путём чтения журнала отладки сессии. Логирование отладки отключено по умолчанию, если вы не запустили с `claude --debug`, поэтому запуск `/debug` в середине сессии начинает захватывать логи с этого момента. Опционально опишите проблему для фокусировки анализа |


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

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

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

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

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

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

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

Details

8 8 

9Некоторые организации требуют, чтобы каждый процесс на рабочей станции запускался через обязательный launcher. Launcher применяет sandbox, сетевые элементы управления или внедрение учетных данных, от которых зависит позиция безопасности компании, и бинарный файл, который запускается без него, является нарушением политики.9Некоторые организации требуют, чтобы каждый процесс на рабочей станции запускался через обязательный launcher. Launcher применяет sandbox, сетевые элементы управления или внедрение учетных данных, от которых зависит позиция безопасности компании, и бинарный файл, который запускается без него, является нарушением политики.

10 10 

11`CLAUDE_CODE_PROCESS_WRAPPER` запускает каждый процесс, который Claude Code запускает из собственного бинарного файла, через ваш launcher: фоновый сервис, каждый сеанс, который он размещает в [agent view](/docs/ru/agent-view), и перезапуски Claude Code после обновления. Установите его на абсолютный путь вашего launcher, и Claude Code запустит launcher с командой Claude Code в качестве его аргументов.11`CLAUDE_CODE_PROCESS_WRAPPER` запускает каждый процесс, который Claude Code запускает из собственного бинарного файла, через ваш launcher: [фоновый сервис](/docs/ru/agent-view#the-supervisor-process), каждую сессию, которую он размещает в [agent view](/docs/ru/agent-view), и перезапуски Claude Code после обновления. Установите его на абсолютный путь вашего launcher, и Claude Code запустит launcher с командой Claude Code в качестве его аргументов.

12 12 

13Launcher, который оборачивает команду `claude` в вашем `PATH`, не может достичь эти процессы, потому что они запускаются из прямого пути бинарного файла без поиска `claude`.13Launcher, который оборачивает команду `claude` в вашем `PATH`, не может достичь эти процессы, потому что они запускаются из прямого пути бинарного файла без поиска `claude`.

14 14 


39 39 

40Следующие процессы не запускаются через launcher:40Следующие процессы не запускаются через launcher:

41 41 

42* [Установленный фоновый сервис](/docs/ru/agent-view#the-supervisor-process), чей unit был написан до того, как был настроен launcher: `launchd` или `systemd` запускает этот процесс из его файла unit. `/status` и `claude daemon status` предупреждают, когда запущенный сервис и настроенный launcher не совпадают, и сеансы, которые запускает сервис, все еще запускаются через launcher после перезагрузки сервиса с переменной в его параметрах.

43* Сеанс, который вы запускаете сами в терминале, который работает так, как вы его вызвали. Чтобы охватить эти сеансы, поместите скрипт с именем `claude` в каталог, который находится раньше в `PATH`, который запускает ваш launcher с реальным бинарным файлом; не заменяйте управляемый symlink. Фоновые процессы не консультируют `PATH`, поэтому два launcher никогда не складываются там.42* Сеанс, который вы запускаете сами в терминале, который работает так, как вы его вызвали. Чтобы охватить эти сеансы, поместите скрипт с именем `claude` в каталог, который находится раньше в `PATH`, который запускает ваш launcher с реальным бинарным файлом; не заменяйте управляемый symlink. Фоновые процессы не консультируют `PATH`, поэтому два launcher никогда не складываются там.

44* Первый процесс `claude-cli://` deep link, который обработчик протокола операционной системы запускает напрямую. Все, что этот сеанс запускает в фоне после этого, работает через launcher. Чтобы полностью закрыть этот путь, [предотвратите регистрацию обработчика](/docs/ru/deep-links#registration-and-supported-platforms) с помощью параметра `disableDeepLinkRegistration`.43* Первый процесс `claude-cli://` deep link, который обработчик протокола операционной системы запускает напрямую. Все, что этот сеанс запускает в фоне после этого, работает через launcher. Чтобы полностью закрыть этот путь, [предотвратите регистрацию обработчика](/docs/ru/deep-links#registration-and-supported-platforms) с помощью параметра `disableDeepLinkRegistration`.

45* Перезапуск, который выполняет `--worktree` в сочетании с `--tmux`: терминальный мультиплексер запускает эту панель, а не бинарный файл Claude Code.44* Перезапуск, который выполняет `--worktree` в сочетании с `--tmux`: терминальный мультиплексер запускает эту панель, а не бинарный файл Claude Code.


100 99 

101 Поскольку `processWrapper` является именованным параметром, организация, которая доставляет его через [remote managed settings](/docs/ru/managed-settings#delivery-mechanisms), видит его в списке на [диалоге одобрения безопасности](/docs/ru/server-managed-settings#security-approval-dialogs) рядом с другими параметрами, которые запускают исполняемые файлы, предоставленные администратором.100 Поскольку `processWrapper` является именованным параметром, организация, которая доставляет его через [remote managed settings](/docs/ru/managed-settings#delivery-mechanisms), видит его в списке на [диалоге одобрения безопасности](/docs/ru/server-managed-settings#security-approval-dialogs) рядом с другими параметрами, которые запускают исполняемые файлы, предоставленные администратором.

102 101 

103 Параметры проекта и локальные параметры не могут установить launcher. Файл, зафиксированный в репозитории, не должен иметь возможность поместить бинарный файл перед каждым процессом Claude Code на машине, поэтому Claude Code игнорирует `CLAUDE_CODE_PROCESS_WRAPPER` в `.claude/settings.json` или `.claude/settings.local.json` с предупреждением в [debug log](/docs/ru/troubleshooting), и никогда не читает ключ `processWrapper` из этих файлов.102 Настройки проекта и локальные настройки не могут задать launcher. Файл, зафиксированный в репозитории, не должен иметь возможности поместить бинарный файл перед каждым процессом Claude Code на машине, поэтому Claude Code игнорирует `CLAUDE_CODE_PROCESS_WRAPPER` в `.claude/settings.json` или `.claude/settings.local.json` с предупреждением в [отладочном логе](/docs/ru/troubleshooting) и никогда не читает ключ `processWrapper` из этих файлов.

104 </Step>103 </Step>

105 104 

106 <Step title="Перезагрузите фоновый сервис и ваши сеансы">105 <Step title="Перезапустите фоновый сервис и ваши сессии">

107 Работающий фоновый сервис и любые открытые сеансы `claude` читают переменную один раз при запуске, поэтому они продолжают запускать процессы без обертки до перезагрузки. Запустите `claude daemon stop --any`, чтобы остановить сервис по требованию; следующая команда, которая его нужна, например `claude agents`, запускает обернутый. [Установленный сервис](/docs/ru/agent-view#the-supervisor-process) принимает `claude daemon stop` без `--any`. Затем перезагрузите открытые сеансы `claude`.106 Работающий фоновый сервис и любые открытые сессии `claude` читают переменную один раз при запуске, поэтому они продолжают запускать процессы без обёртки до перезапуска. Выполните `claude daemon stop --any`, чтобы остановить сервис, работающий по требованию. Следующая команда, которой он нужен, например `claude agents`, запустит обёрнутый сервис. Затем перезапустите открытые сессии `claude`.

108 107 

109 На машинах, которые вы не можете перезагрузить вручную, первый сеанс, запущенный после push параметров, автоматически выводит из эксплуатации оставшийся сервис по требованию без обертки. Машина, где не запускается новый сеанс, сохраняет свой сервис без обертки до тех пор, пока один не запустится, и установленный сервис всегда нуждается в перезагрузке на этом шаге.108 На машинах, которые вы не можете перезапустить самостоятельно, первая сессия, запущенная после распространения настроек, автоматически выводит из эксплуатации оставшийся сервис по требованию без обёртки. Машина, на которой не запускается новая сессия, сохраняет свой фоновый сервис без обёртки до тех пор, пока такая сессия не запустится.

110 </Step>109 </Step>

111 110 

112 <Step title="Проверьте">111 <Step title="Проверьте">

113 Запустите `/status` в сеансе: запись Self-exec показывает разрешенную команду запуска и предупреждает, когда работающий фоновый сервис не совпадает с ней. `claude daemon status` выводит ту же информацию из shell, включая после того, как вы отмените установку переменной, когда `/status` больше не показывает запись.112 Выполните `/status` в сессии: запись Self-exec показывает разрешённую команду запуска и предупреждает, когда работающий фоновый сервис ей не соответствует. `claude daemon status` выводит ту же информацию из оболочки, в том числе после того, как вы удалите переменную, когда `/status` больше не показывает эту запись.

114 </Step>113 </Step>

115</Steps>114</Steps>

116 115 

Details

142 142 

143Сессия откликается на имя, заданное командой [`/rename`](/docs/ru/commands) или флагом [`--name`](/docs/ru/cli-reference#cli-flags). Если вы его не задали, Claude Code даёт сессии имя сам. Для интерактивной сессии это имя, отображаемое в [списках запущенных сессий](/docs/ru/sessions#name-your-sessions).143Сессия откликается на имя, заданное командой [`/rename`](/docs/ru/commands) или флагом [`--name`](/docs/ru/cli-reference#cli-flags). Если вы его не задали, Claude Code даёт сессии имя сам. Для интерактивной сессии это имя, отображаемое в [списках запущенных сессий](/docs/ru/sessions#name-your-sessions).

144 144 

145Если вы переименовываете сессию, запускаете или возобновляете интерактивную сессию с именем, которое уже использует другая активная сессия на этом компьютере, Claude Code оставляет имя за сессией, которая уже его имеет, и [переименовывает вашу в вариант этого имени](/docs/ru/sessions#name-your-sessions). Сессии всё же могут иметь одинаковое имя, например если одна из них работает на более ранней версии Claude Code или общее имя было сгенерировано Claude Code. Если эта сессия не подключена к Remote Control, Claude Code показывает рабочий каталог каждой локальной сессии в выводе `/list-agents`, чтобы вы могли различать одноимённые сессии, работающие в разных каталогах. Claude адресует сообщение одним из двух способов в зависимости от того, сколько активных сессий откликается на имя:145Если эта сессия не подключена к Remote Control, Claude Code показывает рабочий каталог каждой локальной сессии в выводе `/list-agents`, чтобы вы могли различать одноимённые сессии, работающие в разных каталогах. Claude адресует сообщение одним из двух способов в зависимости от того, сколько активных сессий откликается на имя:

146 146 

147* **На имя откликается одна сессия**: Claude Code доставляет сообщение только по имени.147* **На имя откликается одна сессия**: Claude Code доставляет сообщение только по имени.

148* **Несколько сессий имеют одно имя или Claude Code не смог проверить все места, где работают ваши сессии**: Claude добавляет короткий идентификатор к каждой строке своего списка и использует этот идентификатор в адресе.148* **Несколько сессий имеют одно имя или Claude Code не смог проверить все места, где работают ваши сессии**: Claude добавляет короткий идентификатор к каждой строке своего списка и использует этот идентификатор в адресе.

desktop.md +30 −4

Details

400 400 

401Чтобы просматривать две сессии одновременно, удерживайте **Cmd** на macOS или **Ctrl** на Windows и нажмите на сессию в боковой панели. Сессия откроется во второй панели рядом с той, которая у вас уже открыта. Пока разделение активно, нажатие на другую сессию в боковой панели заменяет ту панель, которая находится в фокусе. Нажмите **Cmd+\\** на macOS или **Ctrl+\\** на Windows, чтобы закрыть панель в фокусе и вернуться к одной сессии.401Чтобы просматривать две сессии одновременно, удерживайте **Cmd** на macOS или **Ctrl** на Windows и нажмите на сессию в боковой панели. Сессия откроется во второй панели рядом с той, которая у вас уже открыта. Пока разделение активно, нажатие на другую сессию в боковой панели заменяет ту панель, которая находится в фокусе. Нажмите **Cmd+\\** на macOS или **Ctrl+\\** на Windows, чтобы закрыть панель в фокусе и вернуться к одной сессии.

402 402 

403Worktrees по умолчанию хранятся в `<project-root>/.claude/worktrees/`. Вы можете изменить это на пользовательский каталог в Settings → Claude Code в разделе "Worktree location". Вы также можете задать префикс ветки, который добавляется в начало имени каждой ветки worktree, что полезно для упорядочивания веток, созданных Claude. Чтобы удалить worktree после завершения работы, наведите курсор на сессию в боковой панели и нажмите значок архива. Чтобы сессии автоматически архивировались при слиянии или закрытии их pull request, включите **Auto-archive after PR merge or close** в Settings → Claude Code. Автоархивирование применяется только к локальным сессиям, которые завершили работу.403Worktrees по умолчанию хранятся в `<project-root>/.claude/worktrees/`. Вы можете изменить это на пользовательский каталог:

404 404 

405Чтобы включить файлы из gitignore, такие как `.env`, в новые worktrees, создайте [файл `.worktreeinclude`](/docs/ru/worktrees#copy-gitignored-files-into-worktrees) в корне вашего проекта.405* **Локальные сессии**: задайте **Worktree location** в **Settings > Claude Code**

406* **Сессии SSH**: задайте **Worktree folder** в [SSH-подключении](#choose-where-ssh-session-worktrees-go)

407 

408Вы также можете задать **Branch prefix** в **Settings > Claude Code**. Desktop добавляет его в начало имени каждой ветки worktree, что полезно для упорядочивания веток, созданных Claude.

409 

410Чтобы удалить worktree после завершения работы, наведите курсор на сессию в боковой панели и нажмите значок архива. Чтобы сессии автоматически архивировались при слиянии или закрытии их pull request, включите **Auto-archive after PR merge or close** в **Settings > Claude Code**. Автоархивирование применяется только к локальным сессиям, которые завершили работу.

411 

412Чтобы включить файлы из gitignore, такие как `.env`, в новые worktrees, создайте [файл `.worktreeinclude`](/docs/ru/worktrees#copy-gitignored-files-into-worktrees) в корне вашего проекта. Сведения о том, откуда сессия в worktree читает настройки проекта, хуки и скиллы, см. в разделе [Что worktrees разделяют с основной рабочей копией](/docs/ru/worktrees#what-worktrees-share-with-the-main-checkout).

406 413 

407<Note>414<Note>

408 Изоляция сессий требует [Git](https://git-scm.com/downloads). На большинстве Mac Git установлен по умолчанию. Выполните `git --version` в Terminal для проверки; если выводится номер версии, Git установлен. Если вы столкнулись с ошибками Git, попросите Claude на [вкладке Cowork](https://claude.com/product/cowork) помочь устранить неполадки вашей установки.415 Изоляция сессий требует [Git](https://git-scm.com/downloads). На большинстве Mac Git установлен по умолчанию. Выполните `git --version` в Terminal для проверки; если выводится номер версии, Git установлен. Если вы столкнулись с ошибками Git, попросите Claude на [вкладке Cowork](https://claude.com/product/cowork) помочь устранить неполадки вашей установки.


811* **SSH host**: `user@hostname` или хост, определённый в `~/.ssh/config`818* **SSH host**: `user@hostname` или хост, определённый в `~/.ssh/config`

812* **SSH port**: по умолчанию 22, если оставлено пустым, или используется порт из вашей конфигурации SSH819* **SSH port**: по умолчанию 22, если оставлено пустым, или используется порт из вашей конфигурации SSH

813* **SSH key (optional)**: путь к вашему приватному ключу, такой как `~/.ssh/id_ed25519`. Оставьте пустым, чтобы использовать вашу конфигурацию SSH или SSH-агент.820* **SSH key (optional)**: путь к вашему приватному ключу, такой как `~/.ssh/id_ed25519`. Оставьте пустым, чтобы использовать вашу конфигурацию SSH или SSH-агент.

821* **Worktree folder**: папка на удалённой машине, такая как `~/worktrees`, в которой новые сессии создают свои worktree. Оставьте пустым, чтобы использовать [значение по умолчанию удалённой машины](#choose-where-ssh-session-worktrees-go).

814 822 

815После добавления соединение появляется в разделе **SSH** раскрывающегося списка окружения. Выберите его для запуска сессии на этой машине. Claude работает на удалённой машине с доступом к её файлам и инструментам.823После добавления соединение появляется в разделе **SSH** раскрывающегося списка окружения. Выберите его для запуска сессии на этой машине. Claude работает на удалённой машине с доступом к её файлам и инструментам.

816 824 

817Удалённая машина должна работать на Linux или macOS. Desktop автоматически устанавливает Claude Code на удалённой машине при первом подключении. После подключения SSH-сеансы поддерживают режимы разрешений, коннекторы, plugins и MCP servers.825Удалённая машина должна работать на Linux или macOS. Desktop автоматически устанавливает Claude Code на удалённой машине при первом подключении. После подключения SSH-сеансы поддерживают режимы разрешений, коннекторы, plugins и MCP servers.

818 826 

827<h4 id="choose-where-ssh-session-worktrees-go">

828 Выбор расположения worktree для SSH-сессий

829</h4>

830 

831Если ваша организация не ограничивает папки, которые могут использовать сессии, новые SSH-сессии создают свои [worktree](#work-in-parallel-with-sessions) в первом из следующих заданных расположений:

832 

8331. **Worktree folder** в SSH-соединении

8342. [`worktree.location`](/docs/ru/settings-reference#worktree-location) в `~/.claude/settings.json` на удалённой машине

8353. `<project-root>/.claude/worktrees/` — значение по умолчанию

836 

837Каждый проект получает собственную подпапку в заданной вами папке, поэтому при `~/worktrees` путь к worktree будет `~/worktrees/<project>-<id>/<worktree-name>`. Если заданная вами папка находится внутри проекта, Desktop игнорирует её для этого проекта и использует значение по умолчанию.

838 

839Чтобы задать **Worktree folder** для соединения, добавленного вами ранее, или для соединения, управляемого вашей организацией, наведите на него курсор в раскрывающемся списке окружения и нажмите значок шестерёнки.

840 

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

842 

819<h4 id="open-an-ssh-session-from-a-link">843<h4 id="open-an-ssh-session-from-a-link">

820 Открытие SSH-сессии по ссылке844 Открытие SSH-сессии по ссылке

821</h4>845</h4>


869 Предварительная конфигурация SSH-соединений для вашей команды893 Предварительная конфигурация SSH-соединений для вашей команды

870</h4>894</h4>

871 895 

872Администраторы могут распространять SSH-соединения членам команды, задавая `sshConfigs` в [управляемых настройках](/docs/ru/managed-settings). Соединения, определённые таким образом, появляются в раскрывающемся списке окружения каждого пользователя автоматически и отображаются как управляемые, поэтому пользователи могут выбирать их, но не могут редактировать или удалять их в приложении.896Администраторы могут распространять SSH-соединения членам команды, задавая `sshConfigs` в [управляемых настройках](/docs/ru/managed-settings). Соединения, определённые таким образом, появляются в раскрывающемся списке окружения каждого пользователя автоматически и отображаются как управляемые. Пользователи могут выбирать их и [задавать для них собственную **Worktree folder**](#choose-where-ssh-session-worktrees-go), но не могут редактировать что-либо ещё или удалять их в приложении.

873 897 

874Следующий пример предварительно конфигурирует одно соединение:898Следующий пример предварительно конфигурирует одно соединение:

875 899 


935 Форма OpenTelemetry для Cowork в разделе **Monitoring** в [настройках данных и конфиденциальности](https://claude.ai/admin-settings/data-privacy-controls) консоли администратора применяется только к сессиям Cowork. В сессии Cowork на этой машине приложение desktop передаёт этот сборщик в Claude Code в виде переменных окружения `OTEL_*`, поэтому форма вступает в силу, хотя Claude Code в этой сессии [никогда не получает настройки консоли администратора](#managed-settings).959 Форма OpenTelemetry для Cowork в разделе **Monitoring** в [настройках данных и конфиденциальности](https://claude.ai/admin-settings/data-privacy-controls) консоли администратора применяется только к сессиям Cowork. В сессии Cowork на этой машине приложение desktop передаёт этот сборщик в Claude Code в виде переменных окружения `OTEL_*`, поэтому форма вступает в силу, хотя Claude Code в этой сессии [никогда не получает настройки консоли администратора](#managed-settings).

936 960 

937 Чтобы экспортировать телеметрию из сессий вкладки Code, задайте `CLAUDE_CODE_ENABLE_TELEMETRY` и переменные `OTEL_*` в блоке `env` управляемых настроек Claude Code, как показано в разделе [конфигурация администратора для мониторинга](/docs/ru/monitoring-usage#administrator-configuration). Локальные, облачные и SSH-сессии читают [управляемые настройки из разных источников](#managed-settings). Хосты, к которым может обращаться облачная сессия, описаны в разделе [доступ к сети](/docs/ru/cloud-environments#network-access). Значение `service.name`, которое сообщают сессии вкладки Code, описано в разделе [информация о сервисе](/docs/ru/monitoring-usage#service-information).961 Чтобы экспортировать телеметрию из сессий вкладки Code, задайте `CLAUDE_CODE_ENABLE_TELEMETRY` и переменные `OTEL_*` в блоке `env` управляемых настроек Claude Code, как показано в разделе [конфигурация администратора для мониторинга](/docs/ru/monitoring-usage#administrator-configuration). Локальные, облачные и SSH-сессии читают [управляемые настройки из разных источников](#managed-settings). Хосты, к которым может обращаться облачная сессия, описаны в разделе [доступ к сети](/docs/ru/cloud-environments#network-access). Значение `service.name`, которое сообщают сессии вкладки Code, описано в разделе [информация о сервисе](/docs/ru/monitoring-usage#service-information).

962 

963 Чтобы узнать, на какой удалённой машине выполнялась SSH-сессия, см. [Привязка телеметрии к SSH-сессиям Desktop](/docs/ru/monitoring-usage#attribute-telemetry-to-desktop-ssh-sessions).

938</Note>964</Note>

939 965 

940<h3 id="managed-settings">966<h3 id="managed-settings">


951| `browserExternalPageTools` | установите значение `"disabled"`, чтобы запретить Claude использовать инструменты для чтения внешних страниц и действий на них в [панели браузера](#browse-external-sites). Пользователи по-прежнему могут сами переходить на внешние сайты, а предпросмотр локального сервера разработки не затрагивается. |977| `browserExternalPageTools` | установите значение `"disabled"`, чтобы запретить Claude использовать инструменты для чтения внешних страниц и действий на них в [панели браузера](#browse-external-sites). Пользователи по-прежнему могут сами переходить на внешние сайты, а предпросмотр локального сервера разработки не затрагивается. |

952| `disableMobileSimulatorTools` | установите значение `true`, чтобы заблокировать инструменты Claude для управления устройствами и их захвата в [панели iOS Simulator](/docs/ru/desktop-ios-simulator#turn-off-simulator-access). Панель остаётся доступной для собственных касаний пользователя; убирается только доступ Claude. Значение должно быть логическим значением JSON `true`; строка `"true"` игнорируется. |978| `disableMobileSimulatorTools` | установите значение `true`, чтобы заблокировать инструменты Claude для управления устройствами и их захвата в [панели iOS Simulator](/docs/ru/desktop-ios-simulator#turn-off-simulator-access). Панель остаётся доступной для собственных касаний пользователя; убирается только доступ Claude. Значение должно быть логическим значением JSON `true`; строка `"true"` игнорируется. |

953| `disableBrowserExternalNavigation` | установите значение `true`, чтобы полностью отключить просмотр внешних сайтов в [панели браузера](#browse-external-sites). Ни пользователи, ни Claude не могут переходить на внешние сайты, а предпросмотр сервера разработки на localhost не затрагивается. Значение должно быть логическим значением JSON `true`; строка `"true"` игнорируется. |979| `disableBrowserExternalNavigation` | установите значение `true`, чтобы полностью отключить просмотр внешних сайтов в [панели браузера](#browse-external-sites). Ни пользователи, ни Claude не могут переходить на внешние сайты, а предпросмотр сервера разработки на localhost не затрагивается. Значение должно быть логическим значением JSON `true`; строка `"true"` игнорируется. |

954| `sshConfigs` | предварительно настройте [SSH-подключения](#pre-configure-ssh-connections-for-your-team), которые отображаются в раскрывающемся списке окружений. Пользователи не могут редактировать или удалять управляемые подключения. |980| `sshConfigs` | предварительно настройте [SSH-подключения](#pre-configure-ssh-connections-for-your-team), которые отображаются в раскрывающемся списке окружений. Пользователи не могут удалять управляемые подключения или изменять в них что-либо, кроме собственного поля **Worktree folder**. |

955| `sshHostAllowlist` | ограничьте [SSH-сессии](#restrict-which-ssh-hosts-users-can-connect-to) хостами, разрешённое имя которых совпадает с одним из этих шаблонов. Читается только из управляемых настроек. |981| `sshHostAllowlist` | ограничьте [SSH-сессии](#restrict-which-ssh-hosts-users-can-connect-to) хостами, разрешённое имя которых совпадает с одним из этих шаблонов. Читается только из управляемых настроек. |

956| `disableDesktopLocalSessions` | установите значение `true`, чтобы отключить [сессии Code, работающие на устройстве](#local-sessions-on-managed-devices), оставив доступными SSH-сессии на других хостах и облачные сессии. Значение должно быть логическим значением JSON `true`. Читается только из управляемых настроек. Требуется Claude Desktop v1.37937.0 или новее. |982| `disableDesktopLocalSessions` | установите значение `true`, чтобы отключить [сессии Code, работающие на устройстве](#local-sessions-on-managed-devices), оставив доступными SSH-сессии на других хостах и облачные сессии. Значение должно быть логическим значением JSON `true`. Читается только из управляемых настроек. Требуется Claude Desktop v1.37937.0 или новее. |

957| `disableSshSavedPasswords` | установите значение `true`, чтобы Desktop перестал предлагать запоминать пароли SSH, а также использовать или показывать ранее сохранённые пароли. Включение этого параметра не удаляет их. Читается только из управляемых настроек. Требуется Claude Desktop v1.49585.0 или новее. |983| `disableSshSavedPasswords` | установите значение `true`, чтобы Desktop перестал предлагать запоминать пароли SSH, а также использовать или показывать ранее сохранённые пароли. Включение этого параметра не удаляет их. Читается только из управляемых настроек. Требуется Claude Desktop v1.49585.0 или новее. |

env-vars.md +5 −5

Details

210| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Установите `1`, чтобы не добавлять префикс `mcp__<server>__` к именам инструментов MCP-серверов, созданных через SDK. Инструменты используют свои исходные имена. Только для использования SDK |210| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Установите `1`, чтобы не добавлять префикс `mcp__<server>__` к именам инструментов MCP-серверов, созданных через SDK. Инструменты используют свои исходные имена. Только для использования SDK |

211| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Таймаут зависания субагентов в миллисекундах. Также распространяется на [агентов рабочих процессов](/docs/ru/workflows#when-an-agent-stalls-and-restarts) в Claude Code v2.1.286 или новее. По умолчанию `600000` (10 минут); если вы увеличите `CLAUDE_STREAM_IDLE_TIMEOUT_MS` при включённом сторожевом механизме потока, значение по умолчанию увеличится вместе с ней, как описано в разделе [Обработка медленных или зависших ответов API](/docs/ru/agent-sdk/typescript#handle-slow-or-stalled-api-responses) |211| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Таймаут зависания субагентов в миллисекундах. Также распространяется на [агентов рабочих процессов](/docs/ru/workflows#when-an-agent-stalls-and-restarts) в Claude Code v2.1.286 или новее. По умолчанию `600000` (10 минут); если вы увеличите `CLAUDE_STREAM_IDLE_TIMEOUT_MS` при включённом сторожевом механизме потока, значение по умолчанию увеличится вместе с ней, как описано в разделе [Обработка медленных или зависших ответов API](/docs/ru/agent-sdk/typescript#handle-slow-or-stalled-api-responses) |

212| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Задаёт процент (1-100) окна автосжатия, при котором срабатывает автосжатие. Используйте меньшие значения, например `50`, чтобы сжимать раньше; переменная не может повысить порог, поэтому значения выше процента по умолчанию игнорируются. Действует только в сессиях, которые [сжимаются до достижения лимита контекста модели](/docs/ru/model-config#context-window-and-auto-compaction). Применяется как к основным диалогам, так и к субагентам |212| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Задаёт процент (1-100) окна автосжатия, при котором срабатывает автосжатие. Используйте меньшие значения, например `50`, чтобы сжимать раньше; переменная не может повысить порог, поэтому значения выше процента по умолчанию игнорируются. Действует только в сессиях, которые [сжимаются до достижения лимита контекста модели](/docs/ru/model-config#context-window-and-auto-compaction). Применяется как к основным диалогам, так и к субагентам |

213| `CLAUDE_AUTO_BACKGROUND_TASKS` | Установите `1`, чтобы принудительно включить автоматический перевод в фон длительных задач агентов. Если включено, субагенты переводятся в фон примерно через две минуты работы. Также включает [автоматический перевод в фон длительных вызовов инструментов MCP](/docs/ru/mcp#automatic-backgrounding-of-long-tool-calls) в неинтерактивном режиме в Claude Code v2.1.212 или новее |213| `CLAUDE_AUTO_BACKGROUND_TASKS` | Задайте `1`, чтобы принудительно включить автоматический перевод длительных задач агентов в фон. Когда эта функция включена, [субагент](/docs/ru/sub-agents#run-subagents-in-foreground-or-background) переходит в фон примерно через две минуты работы. Если Claude поставил в очередь после субагента вызов инструмента, например редактирование файла, субагент завершается на переднем плане до начала этого вызова. В Claude Code v2.1.212 или новее также включает [автоматический перевод в фон длительных вызовов инструментов MCP](/docs/ru/mcp#automatic-backgrounding-of-long-tool-calls) в неинтерактивном режиме |

214| `CLAUDE_AX_PREPARK_MS` | В [режиме экранного диктора](/docs/ru/accessibility) — сколько миллисекунд Claude Code ждёт, прежде чем вывести новую или изменённую строку. По умолчанию `0`, то есть Claude Code не ждёт. До v2.1.287 значение по умолчанию было `50`. Claude Code ограничивает ожидание значением `5000`. Требуется Claude Code v2.1.233 или новее |214| `CLAUDE_AX_PREPARK_MS` | В [режиме экранного диктора](/docs/ru/accessibility) — сколько миллисекунд Claude Code ждёт, прежде чем вывести новую или изменённую строку. По умолчанию `0`, то есть Claude Code не ждёт. До v2.1.287 значение по умолчанию было `50`. Claude Code ограничивает ожидание значением `5000`. Требуется Claude Code v2.1.233 или новее |

215| `CLAUDE_AX_SCREEN_READER` | Установите `1`, чтобы выводить удобный для экранного диктора текст: простой текст без декоративных рамок и анимаций. Установите `0`, чтобы принудительно отключить режим экранного диктора, даже если [`axScreenReader`](/docs/ru/settings-reference#axscreenreader) равен `true`. Флаг [`--ax-screen-reader`](/docs/ru/cli-reference#cli-flags) имеет приоритет. Требуется Claude Code v2.1.181 или новее |215| `CLAUDE_AX_SCREEN_READER` | Установите `1`, чтобы выводить удобный для экранного диктора текст: простой текст без декоративных рамок и анимаций. Установите `0`, чтобы принудительно отключить режим экранного диктора, даже если [`axScreenReader`](/docs/ru/settings-reference#axscreenreader) равен `true`. Флаг [`--ax-screen-reader`](/docs/ru/cli-reference#cli-flags) имеет приоритет. Требуется Claude Code v2.1.181 или новее |

216| `CLAUDE_AX_STARTUP_QUIET_MS` | В [режиме экранного диктора](/docs/ru/accessibility) — сколько миллисекунд Claude Code задерживает первую отрисовку интерфейса после строки подтверждения запуска, чтобы экранный диктор успел полностью зачитать эту строку, прежде чем новый вывод её прервёт. По умолчанию `3000`. Установите `0`, чтобы отрисовывать сразу. Claude Code ограничивает задержку значением `600000` (10 минут). Первое нажатие клавиши досрочно завершает задержку. Требуется Claude Code v2.1.217 или новее |216| `CLAUDE_AX_STARTUP_QUIET_MS` | В [режиме экранного диктора](/docs/ru/accessibility) — сколько миллисекунд Claude Code задерживает первую отрисовку интерфейса после строки подтверждения запуска, чтобы экранный диктор успел полностью зачитать эту строку, прежде чем новый вывод её прервёт. По умолчанию `3000`. Установите `0`, чтобы отрисовывать сразу. Claude Code ограничивает задержку значением `600000` (10 минут). Первое нажатие клавиши досрочно завершает задержку. Требуется Claude Code v2.1.217 или новее |


285| `CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK` | Установите `1`, чтобы отключить [автоматическое переключение модели, когда классификатор безопасности помечает запрос](/docs/ru/model-config#automatic-model-fallback), — поведение, которым управляет настройка [`switchModelsOnFlag`](/docs/ru/settings-reference#switchmodelsonflag) |285| `CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK` | Установите `1`, чтобы отключить [автоматическое переключение модели, когда классификатор безопасности помечает запрос](/docs/ru/model-config#automatic-model-fallback), — поведение, которым управляет настройка [`switchModelsOnFlag`](/docs/ru/settings-reference#switchmodelsonflag) |

286| `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` | Установите `1`, чтобы Claude Code не отправлял поле структурированного вывода `output_config.format` и связанное с ним значение `anthropic-beta`, для [LLM-шлюза](/docs/ru/llm-gateway-protocol#feature-pass-through), вышестоящий сервер которого их отклоняет. При этом остаются включёнными другие предварительные возможности, которые отключает [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/ru/llm-gateway-protocol#disable-pre-release-capabilities). Требуется Claude Code v2.1.288 или новее |286| `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` | Установите `1`, чтобы Claude Code не отправлял поле структурированного вывода `output_config.format` и связанное с ним значение `anthropic-beta`, для [LLM-шлюза](/docs/ru/llm-gateway-protocol#feature-pass-through), вышестоящий сервер которого их отклоняет. При этом остаются включёнными другие предварительные возможности, которые отключает [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/ru/llm-gateway-protocol#disable-pre-release-capabilities). Требуется Claude Code v2.1.288 или новее |

287| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Установите `1`, чтобы отключить проверку [критических путей](/docs/ru/permission-modes#critical-paths) для рекурсивного `rm`, цель которого целиком является результатом подстановки команды, например `rm -rf "$(pwd)"`. Остальные проверки критических путей продолжают работать. Задайте её в окружении, из которого запускается Claude Code, поскольку Claude Code игнорирует копию, доставленную через блок `env` настроек. Требуется Claude Code v2.1.281 или новее |287| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Установите `1`, чтобы отключить проверку [критических путей](/docs/ru/permission-modes#critical-paths) для рекурсивного `rm`, цель которого целиком является результатом подстановки команды, например `rm -rf "$(pwd)"`. Остальные проверки критических путей продолжают работать. Задайте её в окружении, из которого запускается Claude Code, поскольку Claude Code игнорирует копию, доставленную через блок `env` настроек. Требуется Claude Code v2.1.281 или новее |

288| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Установите `1`, чтобы отключить автоматическое обновление заголовка терминала на основе контекста диалога. Также пропускается фоновый запрос к небольшой быстрой модели, который [генерирует название сессии](/docs/ru/sessions#name-your-sessions) |288| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Задайте `1`, чтобы отключить автоматическое обновление заголовка терминала на основе контекста диалога. Также пропускается фоновый запрос к малой/быстрой модели, который [генерирует название сессии](/docs/ru/sessions#name-your-sessions), и отключаются [отчёты о состоянии в терминал](/docs/ru/terminal-config#see-session-status-in-your-terminal) |

289| `CLAUDE_CODE_DISABLE_THINKING` | Установите `1`, чтобы полностью исключить параметр `thinking` из запросов API. Это опция совместимости для прокси и шлюзов, которые отклоняют этот параметр. В моделях, которые размышляют по умолчанию, отсутствие параметра означает, что модель всё равно может размышлять. Чтобы явно отключить [расширенное мышление](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) в Anthropic API, используйте вместо этого `MAX_THINKING_TOKENS=0`. Ни одна из переменных не отключает мышление в Opus 5.5, Sonnet 5.5, Haiku 5.5 или моделях Fable, в которых мышление нельзя отключить. У [сторонних провайдеров](/docs/ru/third-party-integrations) `MAX_THINKING_TOKENS=0` также исключает параметр, поэтому там обе переменные ведут себя одинаково |289| `CLAUDE_CODE_DISABLE_THINKING` | Установите `1`, чтобы полностью исключить параметр `thinking` из запросов API. Это опция совместимости для прокси и шлюзов, которые отклоняют этот параметр. В моделях, которые размышляют по умолчанию, отсутствие параметра означает, что модель всё равно может размышлять. Чтобы явно отключить [расширенное мышление](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) в Anthropic API, используйте вместо этого `MAX_THINKING_TOKENS=0`. Ни одна из переменных не отключает мышление в Opus 5.5, Sonnet 5.5, Haiku 5.5 или моделях Fable, в которых мышление нельзя отключить. У [сторонних провайдеров](/docs/ru/third-party-integrations) `MAX_THINKING_TOKENS=0` также исключает параметр, поэтому там обе переменные ведут себя одинаково |

290| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Установите `1`, чтобы пропускать упреждающее [автосжатие](/docs/ru/costs#reduce-token-usage), когда Claude Code не распознаёт ID модели, например псевдоним [LLM-шлюза](/docs/ru/llm-gateway). Без этой переменной Claude Code выполняет сжатие контекста по контекстному окну, которое он предполагает для этого ID. Вместо этого предполагаемое окно можно скорректировать с помощью `CLAUDE_CODE_MAX_CONTEXT_TOKENS`; о том, когда применяется каждая переменная, см. [Корректировка окна для ID модели шлюза или пользовательской модели](/docs/ru/model-config#correct-the-window-for-a-gateway-or-custom-model-id). Требуется Claude Code v2.1.223 или новее |290| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Установите `1`, чтобы пропускать упреждающее [автосжатие](/docs/ru/costs#reduce-token-usage), когда Claude Code не распознаёт ID модели, например псевдоним [LLM-шлюза](/docs/ru/llm-gateway). Без этой переменной Claude Code выполняет сжатие контекста по контекстному окну, которое он предполагает для этого ID. Вместо этого предполагаемое окно можно скорректировать с помощью `CLAUDE_CODE_MAX_CONTEXT_TOKENS`; о том, когда применяется каждая переменная, см. [Корректировка окна для ID модели шлюза или пользовательской модели](/docs/ru/model-config#correct-the-window-for-a-gateway-or-custom-model-id). Требуется Claude Code v2.1.223 или новее |

291| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Установите `1`, чтобы отключить виртуальную прокрутку в [полноэкранной отрисовке](/docs/ru/fullscreen) и отрисовывать каждое сообщение транскрипта. Используйте, если при прокрутке в полноэкранном режиме на месте сообщений отображаются пустые области |291| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Установите `1`, чтобы отключить виртуальную прокрутку в [полноэкранной отрисовке](/docs/ru/fullscreen) и отрисовывать каждое сообщение транскрипта. Используйте, если при прокрутке в полноэкранном режиме на месте сообщений отображаются пустые области |


309| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Время ожидания в миллисекундах после перехода цикла запросов в состояние простоя перед автоматическим завершением. Полезно для автоматизированных рабочих процессов и скриптов, использующих режим SDK |309| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Время ожидания в миллисекундах после перехода цикла запросов в состояние простоя перед автоматическим завершением. Полезно для автоматизированных рабочих процессов и скриптов, использующих режим SDK |

310| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Установите `1`, чтобы включить [команды агентов](/docs/ru/agent-teams). Команды агентов являются экспериментальными и по умолчанию отключены |310| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Установите `1`, чтобы включить [команды агентов](/docs/ru/agent-teams). Команды агентов являются экспериментальными и по умолчанию отключены |

311| `CLAUDE_CODE_EXTRA_BODY` | JSON-объект, объединяемый с верхним уровнем тела каждого запроса к API. Полезно для передачи специфичных для провайдера параметров, которые Claude Code не предоставляет напрямую. Значение, экспортированное в вашей оболочке, также применяется к [фоновым сессиям](/docs/ru/agent-view), которые вы запускаете с помощью `claude agents` или `--bg`. До v2.1.206 фоновые сессии игнорировали значение, экспортированное в оболочке, и использовали ту копию, которую унаследовал фоновый процесс-супервизор |311| `CLAUDE_CODE_EXTRA_BODY` | JSON-объект, объединяемый с верхним уровнем тела каждого запроса к API. Полезно для передачи специфичных для провайдера параметров, которые Claude Code не предоставляет напрямую. Значение, экспортированное в вашей оболочке, также применяется к [фоновым сессиям](/docs/ru/agent-view), которые вы запускаете с помощью `claude agents` или `--bg`. До v2.1.206 фоновые сессии игнорировали значение, экспортированное в оболочке, и использовали ту копию, которую унаследовал фоновый процесс-супервизор |

312| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Переопределяет лимит токенов по умолчанию для чтения файлов. Полезно, когда нужно прочитать файлы большего размера целиком |312| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Переопределяет лимит токенов по умолчанию для [чтения файлов](/docs/ru/tools-reference#large-files), который составляет 25 000 токенов. Полезно, когда нужно прочитать большие файлы целиком. Чтение, которое Claude выполняет с параметром `allow_large`, может превысить этот лимит, если в контекстном окне есть место |

313| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | Установите `1`, чтобы принудительно включить сохранение транскриптов, истории промптов и регистрацию в `claude agents`, даже если этот `claude` был запущен изнутри другой сессии Claude Code. Используйте, когда унаследованное значение `CLAUDE_CODE_CHILD_SESSION`, например из сессии `screen` или фонового загрузчика, впервые запущенного инструментом Bash в Claude Code, приводит к тому, что настоящая сессия верхнего уровня ошибочно классифицируется как вложенная. Начиная с v2.1.178 Claude Code автоматически распознаёт случай с tmux и игнорирует унаследованный маркер, поэтому для tmux эта переменная больше не нужна. Также учитывается в v2.1.169 и более ранних версиях; не действует в v2.1.170 и v2.1.171, где было удалено обнаружение вложенных сессий, которое она переопределяет |313| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | Установите `1`, чтобы принудительно включить сохранение транскриптов, истории промптов и регистрацию в `claude agents`, даже если этот `claude` был запущен изнутри другой сессии Claude Code. Используйте, когда унаследованное значение `CLAUDE_CODE_CHILD_SESSION`, например из сессии `screen` или фонового загрузчика, впервые запущенного инструментом Bash в Claude Code, приводит к тому, что настоящая сессия верхнего уровня ошибочно классифицируется как вложенная. Начиная с v2.1.178 Claude Code автоматически распознаёт случай с tmux и игнорирует унаследованный маркер, поэтому для tmux эта переменная больше не нужна. Также учитывается в v2.1.169 и более ранних версиях; не действует в v2.1.170 и v2.1.171, где было удалено обнаружение вложенных сессий, которое она переопределяет |

314| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | Установите `1`, чтобы принудительно отображать `~~text~~` в ответах Claude зачёркнутым, когда ваш терминал это поддерживает, но не определяется автоматически, например при работе по SSH без пересылки `TERM_PROGRAM`. Без этого неопределённые терминалы показывают буквальные маркеры `~~` вместо зачёркнутого текста. Требуется Claude Code v2.1.186 или новее |314| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | Установите `1`, чтобы принудительно отображать `~~text~~` в ответах Claude зачёркнутым, когда ваш терминал это поддерживает, но не определяется автоматически, например при работе по SSH без пересылки `TERM_PROGRAM`. Без этого неопределённые терминалы показывают буквальные маркеры `~~` вместо зачёркнутого текста. Требуется Claude Code v2.1.186 или новее |

315| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Установите `1`, чтобы принудительно включить [синхронизированный вывод](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) DEC private mode 2026, когда ваш терминал его поддерживает, но не определяется автоматически. Полезно для эмуляторов, таких как Emacs `eat`, которые реализуют BSU/ESU, но не отвечают на проверку возможностей. Не действует под tmux. В отличие от `CLAUDE_CODE_NO_FLICKER`, которая переключает на [полноэкранный рендеринг](/docs/ru/fullscreen), эта переменная не меняет рендерер |315| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Установите `1`, чтобы принудительно включить [синхронизированный вывод](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) DEC private mode 2026, когда ваш терминал его поддерживает, но не определяется автоматически. Полезно для эмуляторов, таких как Emacs `eat`, которые реализуют BSU/ESU, но не отвечают на проверку возможностей. Не действует под tmux. В отличие от `CLAUDE_CODE_NO_FLICKER`, которая переключает на [полноэкранный рендеринг](/docs/ru/fullscreen), эта переменная не меняет рендерер |


340| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | Ограничение на количество вызовов [WebSearch](/docs/ru/tools-reference#session-search-limit) (по умолчанию: 200). Когда Claude достигает ограничения, последующие вызовы WebSearch возвращают уведомление, предлагающее продолжить с уже собранной информацией. Принимает положительное целое число без верхней границы. Всё остальное игнорируется, и применяется значение по умолчанию, поэтому ограничение можно повысить, но не отключить. Требуется Claude Code v2.1.212 или новее |340| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | Ограничение на количество вызовов [WebSearch](/docs/ru/tools-reference#session-search-limit) (по умолчанию: 200). Когда Claude достигает ограничения, последующие вызовы WebSearch возвращают уведомление, предлагающее продолжить с уже собранной информацией. Принимает положительное целое число без верхней границы. Всё остальное игнорируется, и применяется значение по умолчанию, поэтому ограничение можно повысить, но не отключить. Требуется Claude Code v2.1.212 или новее |

341| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Установите `1`, чтобы запускать stdio MCP-серверы только с безопасным базовым окружением и настроенным для сервера `env`, вместо наследования окружения вашей оболочки |341| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Установите `1`, чтобы запускать stdio MCP-серверы только с безопасным базовым окружением и настроенным для сервера `env`, вместо наследования окружения вашей оболочки |

342| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | Время в миллисекундах, по истечении которого всё ещё выполняющийся вызов инструмента MCP [переводится в фоновую задачу](/docs/ru/mcp#automatic-backgrounding-of-long-tool-calls) (по умолчанию: 120000, или 2 минуты). Установите `0`, чтобы отключить автоматический перевод в фон. Требуется Claude Code v2.1.212 или новее |342| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | Время в миллисекундах, по истечении которого всё ещё выполняющийся вызов инструмента MCP [переводится в фоновую задачу](/docs/ru/mcp#automatic-backgrounding-of-long-tool-calls) (по умолчанию: 120000, или 2 минуты). Установите `0`, чтобы отключить автоматический перевод в фон. Требуется Claude Code v2.1.212 или новее |

343| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | Сколько миллисекунд первый ход [неинтерактивной](/docs/ru/headless) сессии ждёт MCP-серверы, которые ещё подключаются, вместо [ожидания первого хода](/docs/ru/agent-sdk/mcp#connection-timing) по умолчанию. Если переменная задана, ожидание распространяется на все ожидающие серверы. Установите `0`, чтобы пропустить ожидание. Сервер [`--permission-prompt-tool`](/docs/ru/cli-reference#cli-flags) сохраняет собственное ожидание `MCP_TIMEOUT` независимо от значения. Требуется Claude Code v2.1.274 или новее |343| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | Сколько миллисекунд первый ход [неинтерактивной](/docs/ru/headless) сессии ожидает MCP-серверы, которые ещё подключаются, вместо [ожидания на первом ходе](/docs/ru/agent-sdk/mcp#connection-timing) по умолчанию. Если переменная задана, ожидание охватывает все ожидающие серверы; в [самостоятельно размещённом окружении](/docs/ru/self-hosted-environments-configuration#connection-timing) она меняет только продолжительность ожидания. Установите `0`, чтобы пропустить ожидание. Сервер [`--permission-prompt-tool`](/docs/ru/cli-reference#cli-flags) сохраняет собственное ожидание `MCP_TIMEOUT` независимо от значения. Требуется Claude Code v2.1.274 или новее |

344| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | Таймаут простоя в миллисекундах для вызовов инструментов MCP. Когда MCP-сервер stdio, HTTP, SSE, WebSocket или [коннектор claude.ai](/docs/ru/mcp#use-mcp-servers-from-claude-ai) в течение этого времени не отправляет ни ответа, ни уведомления о прогрессе, вызов инструмента прерывается с ошибкой вместо ожидания общего `MCP_TOOL_TIMEOUT`. Переопределяет значения по умолчанию для каждого транспорта: 300000 (5 минут) для сетевых серверов и 1800000 (30 минут) для серверов stdio. Установите `0`, чтобы отключить проверку простоя. Значения меньше 1000 повышаются до одной секунды, а значение ограничивается действующим `MCP_TOOL_TIMEOUT`. Заданный для сервера `timeout` в `.mcp.json` не менее 1000 повышает окно простоя этого сервера как минимум до значения `timeout`. Не применяется к серверам IDE и внутрипроцессным серверам SDK. Требуется Claude Code v2.1.187 или новее. До v2.1.203 на серверы stdio таймаут простоя не распространялся |344| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | Таймаут простоя в миллисекундах для вызовов инструментов MCP. Когда MCP-сервер stdio, HTTP, SSE, WebSocket или [коннектор claude.ai](/docs/ru/mcp#use-mcp-servers-from-claude-ai) в течение этого времени не отправляет ни ответа, ни уведомления о прогрессе, вызов инструмента прерывается с ошибкой вместо ожидания общего `MCP_TOOL_TIMEOUT`. Переопределяет значения по умолчанию для каждого транспорта: 300000 (5 минут) для сетевых серверов и 1800000 (30 минут) для серверов stdio. Установите `0`, чтобы отключить проверку простоя. Значения меньше 1000 повышаются до одной секунды, а значение ограничивается действующим `MCP_TOOL_TIMEOUT`. Заданный для сервера `timeout` в `.mcp.json` не менее 1000 повышает окно простоя этого сервера как минимум до значения `timeout`. Не применяется к серверам IDE и внутрипроцессным серверам SDK. Требуется Claude Code v2.1.187 или новее. До v2.1.203 на серверы stdio таймаут простоя не распространялся |

345| `CLAUDE_CODE_MESSAGING_SOCKET` | Задаётся Claude Code, а не вами: в сессиях, которые привязывают [сокет входящих сообщений](/docs/ru/cross-session-messaging#the-sessions-inbox-socket), Claude Code экспортирует путь этого сокета в хуки и команды Bash при привязке сокета. В сессии, которая запускается с включённым обменом сообщениями, Claude Code привязывает сокет до запуска любого хука. Другие сессии на компьютере доставляют сообщения по этому пути. Каждая сессия экспортирует собственный сокет, а не унаследованный от родительской, и поступающие на него сообщения проходят через [средства контроля входящих сообщений](/docs/ru/cross-session-messaging#control-inbound-messages) сессии. Блоки `env` в настройках не могут её задать. Требуется Claude Code v2.1.224 или новее |345| `CLAUDE_CODE_MESSAGING_SOCKET` | Задаётся Claude Code, а не вами: в сессиях, которые привязывают [сокет входящих сообщений](/docs/ru/cross-session-messaging#the-sessions-inbox-socket), Claude Code экспортирует путь этого сокета в хуки и команды Bash при привязке сокета. В сессии, которая запускается с включённым обменом сообщениями, Claude Code привязывает сокет до запуска любого хука. Другие сессии на компьютере доставляют сообщения по этому пути. Каждая сессия экспортирует собственный сокет, а не унаследованный от родительской, и поступающие на него сообщения проходят через [средства контроля входящих сообщений](/docs/ru/cross-session-messaging#control-inbound-messages) сессии. Блоки `env` в настройках не могут её задать. Требуется Claude Code v2.1.224 или новее |

346| `CLAUDE_CODE_MESSAGING_TOKEN` | Задаётся Claude Code, а не вами: в сессиях, которые привязывают [сокет входящих сообщений](/docs/ru/cross-session-messaging#the-sessions-inbox-socket), Claude Code экспортирует этот токен сессии в хуки и команды Bash вместе с `CLAUDE_CODE_MESSAGING_SOCKET`. Скрипт, отправляющий данные в сокет, может передать `{"type":"auth","token":"<token>"}` первой строкой, чтобы подтвердить, что он принадлежит сессии. В нативной Windows Claude Code требует эту строку и закрывает любое соединение, которое не начинается с действительной строки. [Правила для собственных дочерних процессов](/docs/ru/cross-session-messaging#the-sessions-inbox-socket) определяют, когда Claude Code проверяет токен. Каждая сессия экспортирует собственный токен, никогда не унаследованный от родительской сессии. Блоки `env` в настройках не могут его задать. Требуется Claude Code v2.1.228 или новее |346| `CLAUDE_CODE_MESSAGING_TOKEN` | Задаётся Claude Code, а не вами: в сессиях, которые привязывают [сокет входящих сообщений](/docs/ru/cross-session-messaging#the-sessions-inbox-socket), Claude Code экспортирует этот токен сессии в хуки и команды Bash вместе с `CLAUDE_CODE_MESSAGING_SOCKET`. Скрипт, отправляющий данные в сокет, может передать `{"type":"auth","token":"<token>"}` первой строкой, чтобы подтвердить, что он принадлежит сессии. В нативной Windows Claude Code требует эту строку и закрывает любое соединение, которое не начинается с действительной строки. [Правила для собственных дочерних процессов](/docs/ru/cross-session-messaging#the-sessions-inbox-socket) определяют, когда Claude Code проверяет токен. Каждая сессия экспортирует собственный токен, никогда не унаследованный от родительской сессии. Блоки `env` в настройках не могут его задать. Требуется Claude Code v2.1.228 или новее |


443| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Установите значение `1`, чтобы принудительно включить сторожевой таймер простоя потоковой передачи на уровне байтов, или `0`, чтобы принудительно отключить его. `0` также отключает [крайний срок первого байта](/docs/ru/network-config#streaming-idle-watchdogs) на соединениях, где этот крайний срок действует. Если переменная не задана, сторожевой таймер по умолчанию включён для прямых соединений с Anthropic API и [Claude Platform on AWS](/docs/ru/claude-platform-on-aws), а также для потоковых ответов на соединениях через [шлюз](/docs/ru/gateways), достигаемый через `ANTHROPIC_BASE_URL` или `ANTHROPIC_AWS_BASE_URL`; до v2.1.222 он не работал на этих соединениях через шлюз, поэтому сторожевой таймер уровня событий мог сообщать о зависании даже при поступлении keep-alive пингов. О таймаутах и взаимодействии таймеров см. [Сторожевые таймеры простоя потоковой передачи](/docs/ru/network-config#streaming-idle-watchdogs) |443| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Установите значение `1`, чтобы принудительно включить сторожевой таймер простоя потоковой передачи на уровне байтов, или `0`, чтобы принудительно отключить его. `0` также отключает [крайний срок первого байта](/docs/ru/network-config#streaming-idle-watchdogs) на соединениях, где этот крайний срок действует. Если переменная не задана, сторожевой таймер по умолчанию включён для прямых соединений с Anthropic API и [Claude Platform on AWS](/docs/ru/claude-platform-on-aws), а также для потоковых ответов на соединениях через [шлюз](/docs/ru/gateways), достигаемый через `ANTHROPIC_BASE_URL` или `ANTHROPIC_AWS_BASE_URL`; до v2.1.222 он не работал на этих соединениях через шлюз, поэтому сторожевой таймер уровня событий мог сообщать о зависании даже при поступлении keep-alive пингов. О таймаутах и взаимодействии таймеров см. [Сторожевые таймеры простоя потоковой передачи](/docs/ru/network-config#streaming-idle-watchdogs) |

444| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Установите значение `1`, чтобы включить сторожевой таймер простоя потоковой передачи на уровне байтов для ответов Amazon Bedrock `vnd.amazon.eventstream`; это также включает [крайний срок первого байта](/docs/ru/network-config#streaming-idle-watchdogs) для потоковых запросов Bedrock. По умолчанию отключено. Таймаут настраивается с помощью `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |444| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Установите значение `1`, чтобы включить сторожевой таймер простоя потоковой передачи на уровне байтов для ответов Amazon Bedrock `vnd.amazon.eventstream`; это также включает [крайний срок первого байта](/docs/ru/network-config#streaming-idle-watchdogs) для потоковых запросов Bedrock. По умолчанию отключено. Таймаут настраивается с помощью `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

445| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Установите значение `0`, чтобы принудительно отключить сторожевой таймер простоя потоковой передачи на уровне событий, или `1`, чтобы принудительно включить его. Если переменная не задана, сторожевой таймер по умолчанию включён для всех провайдеров. До v2.1.196 значение по умолчанию управлялось сервером для прямого Anthropic API и было отключено для других провайдеров. Таймаут настраивается с помощью `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; о других таймерах зависания, работающих параллельно с этим, см. [Сторожевые таймеры простоя потоковой передачи](/docs/ru/network-config#streaming-idle-watchdogs) |445| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Установите значение `0`, чтобы принудительно отключить сторожевой таймер простоя потоковой передачи на уровне событий, или `1`, чтобы принудительно включить его. Если переменная не задана, сторожевой таймер по умолчанию включён для всех провайдеров. До v2.1.196 значение по умолчанию управлялось сервером для прямого Anthropic API и было отключено для других провайдеров. Таймаут настраивается с помощью `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; о других таймерах зависания, работающих параллельно с этим, см. [Сторожевые таймеры простоя потоковой передачи](/docs/ru/network-config#streaming-idle-watchdogs) |

446| `CLAUDE_ENV_FILE` | Путь к shell-скрипту, содержимое которого Claude Code выполняет перед каждой командой Bash в том же процессе оболочки, чтобы экспорты из файла были видны команде. Используйте для сохранения активации virtualenv или conda между командами. Также заполняется динамически хуками [SessionStart](/docs/ru/hooks#persist-environment-variables), [Setup](/docs/ru/hooks#setup), [CwdChanged](/docs/ru/hooks#cwdchanged) и [FileChanged](/docs/ru/hooks#filechanged) |446| `CLAUDE_ENV_FILE` | Путь к shell-скрипту, содержимое которого Claude Code выполняет перед каждой командой Bash в том же процессе оболочки, чтобы экспортированные в файле переменные были видны команде. Используйте для сохранения активации virtualenv или conda между командами. Команды PowerShell в v2.1.296 и новее тоже получают его переменные при условиях, описанных в разделе [Сохранённые переменные в командах PowerShell](/docs/ru/hooks#persisted-variables-in-powershell-commands). Также динамически заполняется хуками [SessionStart](/docs/ru/hooks#persist-environment-variables), [Setup](/docs/ru/hooks#setup), [CwdChanged](/docs/ru/hooks#cwdchanged) и [FileChanged](/docs/ru/hooks#filechanged) |

447| `CLAUDE_JOB_DIR` | Устанавливается Claude Code в каждой [фоновой сессии](/docs/ru/agent-view) в каталог `~/.claude/jobs/<id>` этой сессии. Её наследуют shell-команды, которые выполняет сессия. Записывайте временные файлы в [`$CLAUDE_JOB_DIR/tmp`](/docs/ru/agent-view#where-state-is-stored). Вызовы `Write` и `Edit` от Claude в этом каталоге не запрашивают разрешения, а каталог удаляется при удалении сессии |447| `CLAUDE_JOB_DIR` | Устанавливается Claude Code в каждой [фоновой сессии](/docs/ru/agent-view) в каталог `~/.claude/jobs/<id>` этой сессии. Её наследуют shell-команды, которые выполняет сессия. Записывайте временные файлы в [`$CLAUDE_JOB_DIR/tmp`](/docs/ru/agent-view#where-state-is-stored). Вызовы `Write` и `Edit` от Claude в этом каталоге не запрашивают разрешения, а каталог удаляется при удалении сессии |

448| `CLAUDE_PID` | Claude Code устанавливает эту переменную в идентификатор собственного процесса в порождаемых им подпроцессах: командах инструментов Bash и PowerShell и командах хуков. В Linux интеграция с оболочкой инструмента Bash использует её, чтобы отклонять шаблон `pkill`, который совпал бы с самим процессом Claude Code; см. [справочник по ошибкам](/docs/ru/errors#pkill-pattern-matches-the-claude-code-process). Считывайте её в собственных скриптах, чтобы намеренно идентифицировать родительский процесс Claude Code или отправлять ему сигналы. Требуется Claude Code v2.1.214 или новее |448| `CLAUDE_PID` | Claude Code устанавливает эту переменную в идентификатор собственного процесса в порождаемых им подпроцессах: командах инструментов Bash и PowerShell и командах хуков. В Linux интеграция с оболочкой инструмента Bash использует её, чтобы отклонять шаблон `pkill`, который совпал бы с самим процессом Claude Code; см. [справочник по ошибкам](/docs/ru/errors#pkill-pattern-matches-the-claude-code-process). Считывайте её в собственных скриптах, чтобы намеренно идентифицировать родительский процесс Claude Code или отправлять ему сигналы. Требуется Claude Code v2.1.214 или новее |

449| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Префикс для автоматически генерируемых имён сессий [Remote Control](/docs/ru/remote-control), когда явное имя не указано. По умолчанию — имя хоста вашего компьютера, что даёт имена вида `myhost-graceful-unicorn`. Флаг CLI `--remote-control-session-name-prefix` задаёт то же значение для одного запуска |449| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Префикс для автоматически генерируемых имён сессий [Remote Control](/docs/ru/remote-control), когда явное имя не указано. По умолчанию — имя хоста вашего компьютера, что даёт имена вида `myhost-graceful-unicorn`. Флаг CLI `--remote-control-session-name-prefix` задаёт то же значение для одного запуска |

errors.md +73 −10

Details

37| `Connection lost while your computer was asleep` | [Automatic retries](#automatic-retries) |37| `Connection lost while your computer was asleep` | [Automatic retries](#automatic-retries) |

38| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |38| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |

39| `Auto mode could not evaluate this action and is blocking it for safety` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |39| `Auto mode could not evaluate this action and is blocking it for safety` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |

40| `Not run · auto mode's check had no usable answer` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |

40| `Auto mode classifier transcript exceeded context window` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |41| `Auto mode classifier transcript exceeded context window` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |

41| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |42| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |

42| `The server-side auto mode classifier gave no verdict` | [Server errors](#the-server-returned-no-safety-verdict) |43| `The server-side auto mode classifier gave no verdict` | [Server errors](#the-server-returned-no-safety-verdict) |


247| `Windows reported an error (EBADF) when Claude Code read this session's transcript file` | [Command-line errors](#windows-reported-an-error-ebadf) |248| `Windows reported an error (EBADF) when Claude Code read this session's transcript file` | [Command-line errors](#windows-reported-an-error-ebadf) |

248| `Cannot switch renderers in this session` | [Command-line errors](#cannot-switch-renderers-in-this-session) |249| `Cannot switch renderers in this session` | [Command-line errors](#cannot-switch-renderers-in-this-session) |

249| `Cannot switch renderers while work is running in the background` | [Command-line errors](#cannot-switch-renderers-in-this-session) |250| `Cannot switch renderers while work is running in the background` | [Command-line errors](#cannot-switch-renderers-in-this-session) |

251| `Claude Code couldn't restart` | [Command-line errors](#claude-code-couldnt-restart) |

250| `Couldn't open Claude Desktop` | [Command-line errors](#couldnt-open-claude-desktop) |252| `Couldn't open Claude Desktop` | [Command-line errors](#couldnt-open-claude-desktop) |

251| `Failed to open Claude Desktop. Please try opening it manually.` | [Command-line errors](#couldnt-open-claude-desktop) |253| `Failed to open Claude Desktop. Please try opening it manually.` | [Command-line errors](#couldnt-open-claude-desktop) |

252| `Couldn't read your Zed keymap` / `Couldn't back up your Zed keymap` / `Couldn't update your Zed keymap` | [Command-line errors](#terminal-setup-left-your-zed-keymap-unchanged) |254| `Couldn't read your Zed keymap` / `Couldn't back up your Zed keymap` / `Couldn't update your Zed keymap` | [Command-line errors](#terminal-setup-left-your-zed-keymap-unchanged) |


262| `Marketplace "<name>" is already added from a different source` | [Plugin errors](#marketplace-is-already-added-from-a-different-source) |264| `Marketplace "<name>" is already added from a different source` | [Plugin errors](#marketplace-is-already-added-from-a-different-source) |

263| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [Plugin errors](#marketplace-name-is-another-spelling-of-a-reserved-name) |265| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [Plugin errors](#marketplace-name-is-another-spelling-of-a-reserved-name) |

264| `Cannot add marketplace "<name>": Claude Code cannot install plugins from a marketplace with this name` | [Plugin troubleshooting](/docs/ru/plugins/troubleshooting#cannot-install-plugins-from-a-marketplace-with-this-name) |266| `Cannot add marketplace "<name>": Claude Code cannot install plugins from a marketplace with this name` | [Plugin troubleshooting](/docs/ru/plugins/troubleshooting#cannot-install-plugins-from-a-marketplace-with-this-name) |

267| `Cannot add marketplace "<name>": Claude Code reserves this name and cannot register a marketplace under it` | [Plugin troubleshooting](/docs/ru/plugins/troubleshooting#claude-code-reserves-this-name) |

265| `Marketplace "<name>" is added but ignored` | [Plugin troubleshooting](/docs/ru/plugins/troubleshooting#marketplace-is-added-but-ignored) |268| `Marketplace "<name>" is added but ignored` | [Plugin troubleshooting](/docs/ru/plugins/troubleshooting#marketplace-is-added-but-ignored) |

266| `Marketplace "<name>" is registered but was refused (see the debug log)` | [Plugin troubleshooting](/docs/ru/plugins/troubleshooting#marketplace-is-added-but-ignored) |269| `Marketplace "<name>" is registered but was refused (see the debug log)` | [Plugin troubleshooting](/docs/ru/plugins/troubleshooting#marketplace-is-added-but-ignored) |

267| `references ${user_config.*} in a shell-form command` | [Plugin errors](#plugin-command-references-user-config) |270| `references ${user_config.*} in a shell-form command` | [Plugin errors](#plugin-command-references-user-config) |


308| `Your disk quota is full on the filesystem with Claude Code's temp directory <dir> (EDQUOT)` | [Tool errors](#disk-quota-or-temp-filesystem-is-full) |311| `Your disk quota is full on the filesystem with Claude Code's temp directory <dir> (EDQUOT)` | [Tool errors](#disk-quota-or-temp-filesystem-is-full) |

309| `The filesystem with Claude Code's temp directory <dir>, or your disk quota on it, is full (ENOSPC)` | [Tool errors](#disk-quota-or-temp-filesystem-is-full) |312| `The filesystem with Claude Code's temp directory <dir>, or your disk quota on it, is full (ENOSPC)` | [Tool errors](#disk-quota-or-temp-filesystem-is-full) |

310| `Command output was lost: the temp filesystem at <dir> is full` / `is out of inodes` | [Tool errors](#disk-quota-or-temp-filesystem-is-full) |313| `Command output was lost: the temp filesystem at <dir> is full` / `is out of inodes` | [Tool errors](#disk-quota-or-temp-filesystem-is-full) |

314| `File is not valid UTF-8. It may use a legacy encoding such as Windows-1252, Shift-JIS or GBK, or be binary` | [Tool errors](#file-is-not-valid-utf-8) |

311| `the source file is not valid UTF-8 text` / `the source file is not valid UTF-16 text` | [Tool errors](#the-source-file-is-not-valid-utf-8-text) |315| `the source file is not valid UTF-8 text` / `the source file is not valid UTF-16 text` | [Tool errors](#the-source-file-is-not-valid-utf-8-text) |

312| `the source file has the replacement character U+FFFD` | [Tool errors](#the-source-file-is-not-valid-utf-8-text) |316| `the source file has the replacement character U+FFFD` | [Tool errors](#the-source-file-is-not-valid-utf-8-text) |

313| `Not published: that file is on a network share` | [Tool errors](#not-published-that-file-is-on-a-network-share) |317| `Not published: that file is on a network share` | [Tool errors](#not-published-that-file-is-on-a-network-share) |


334| `Session isn't responding` / `Press enter again to restart this session — it isn't responding` | [Background session errors](#session-isnt-responding) |338| `Session isn't responding` / `Press enter again to restart this session — it isn't responding` | [Background session errors](#session-isnt-responding) |

335| `Session <id> was stopped while the respawn was in flight` | [Background session errors](#session-was-stopped-while-the-respawn-was-in-flight) |339| `Session <id> was stopped while the respawn was in flight` | [Background session errors](#session-was-stopped-while-the-respawn-was-in-flight) |

336| `This session was running agent '<name>', which is no longer available` | [Background session errors](#session-agent-no-longer-available) |340| `This session was running agent '<name>', which is no longer available` | [Background session errors](#session-agent-no-longer-available) |

341| `This session restarted <time> after its next /loop wakeup was due, so that wakeup will not fire` | [Background session errors](#restarted-after-its-next-loop-wakeup-was-due) |

337| `CLAUDE_CODE_PROCESS_WRAPPER: launcher ...` | [Background session errors](#claude_code_process_wrapper-launcher-errors) |342| `CLAUDE_CODE_PROCESS_WRAPPER: launcher ...` | [Background session errors](#claude_code_process_wrapper-launcher-errors) |

338| `EUNKNOWN: unknown error, uv_spawn` | [Background session errors](#eunknown-when-starting-a-background-session) |343| `EUNKNOWN: unknown error, uv_spawn` | [Background session errors](#eunknown-when-starting-a-background-session) |

339| `EACCES: permission denied, posix_spawn` | [Background session errors](#eacces-when-starting-a-background-session) |344| `EACCES: permission denied, posix_spawn` | [Background session errors](#eacces-when-starting-a-background-session) |


439| :- | :- | :- |444| :- | :- | :- |

440| [`CLAUDE_CODE_MAX_RETRIES`](/docs/ru/env-vars) | 10 | Количество повторных попыток. Ограничено 15 начиная с v2.1.186; начиная с v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` повышает значение по умолчанию и удаляет ограничение. Снизьте его, чтобы быстрее выявлять сбои в скриптах. |445| [`CLAUDE_CODE_MAX_RETRIES`](/docs/ru/env-vars) | 10 | Количество повторных попыток. Ограничено 15 начиная с v2.1.186; начиная с v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` повышает значение по умолчанию и удаляет ограничение. Снизьте его, чтобы быстрее выявлять сбои в скриптах. |

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

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

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

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

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


596<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.602<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.

597```603```

598 604 

605В интерактивной сессии вместо этого сообщения под вызовом инструмента появляется приглушенная строка `Not run · auto mode's check had no usable answer`. Нажмите `Ctrl+O`, чтобы прочитать сообщение в [средстве просмотра транскрипта](/docs/ru/interactive-mode#transcript-viewer). Отказы, описанные в разделе [The server returned no safety verdict](#the-server-returned-no-safety-verdict), показывают ту же строку. До v2.1.296 сообщение появлялось под вызовом как красная ошибка.

606 

599Когда Claude Code может определить категорию сбоя, он указывает ее в скобках после `temporarily unavailable`, например `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`. Категории: `(rate-limited)`, `(overloaded)`, `(server error)`, `(timed out)` и `(connection failed)`. Если `(timed out)` или `(connection failed)` повторяется, проверьте соединение; см. [Unable to connect to API](#unable-to-connect-to-api). До v2.1.229 сообщение никогда не указывало категорию и выглядело как `Wait briefly and then try this action again`.607Когда Claude Code может определить категорию сбоя, он указывает ее в скобках после `temporarily unavailable`, например `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`. Категории: `(rate-limited)`, `(overloaded)`, `(server error)`, `(timed out)` и `(connection failed)`. Если `(timed out)` или `(connection failed)` повторяется, проверьте соединение; см. [Unable to connect to API](#unable-to-connect-to-api). До v2.1.229 сообщение никогда не указывало категорию и выглядело как `Wait briefly and then try this action again`.

600 608 

601Когда ни одна категория не подходит, сообщение появляется без категории в скобках; эту форму дают и несколько сбоев одновременно. На [Amazon Bedrock](/docs/ru/amazon-bedrock), включая [эндпоинт Mantle](/docs/ru/amazon-bedrock#use-the-mantle-endpoint), оно также появляется, когда ваша учетная запись AWS не может вызвать модель, указанную в сообщении, и этот сбой повторяется при каждой повторной попытке, пока вашей учетной записи не будет предоставлен доступ к модели.609Когда ни одна категория не подходит, сообщение появляется без категории в скобках; эту форму дают и несколько сбоев одновременно. На [Amazon Bedrock](/docs/ru/amazon-bedrock), включая [эндпоинт Mantle](/docs/ru/amazon-bedrock#use-the-mantle-endpoint), оно также появляется, когда ваша учетная запись AWS не может вызвать модель, указанную в сообщении, и этот сбой повторяется при каждой повторной попытке, пока вашей учетной записи не будет предоставлен доступ к модели.


1900 1908 

1901Claude Code пропускает эту проверку, когда [файл управляемых настроек, политика MDM или policy helper](/docs/ru/managed-settings) задаёт для [`forceLoginMethod`](/docs/ru/settings-reference#forceloginmethod) значение `"gateway"` или задаёт [`forceLoginGatewayUrl`](/docs/ru/settings-reference#forcelogingatewayurl) без `forceLoginMethod`. При любой из этих конфигураций Claude Code открывает шаг входа на экране **Cloud gateway** вместо способа входа Anthropic. Claude Code также пропускает проверку, когда источник управляемых настроек на машине существует, но не может быть прочитан, поскольку этот источник может содержать конфигурацию шлюза. До версии v2.1.247 Claude Code выполнял проверку и при такой конфигурации и завершал работу с этой ошибкой, когда эндпоинты Anthropic были недоступны.1909Claude Code пропускает эту проверку, когда [файл управляемых настроек, политика MDM или policy helper](/docs/ru/managed-settings) задаёт для [`forceLoginMethod`](/docs/ru/settings-reference#forceloginmethod) значение `"gateway"` или задаёт [`forceLoginGatewayUrl`](/docs/ru/settings-reference#forcelogingatewayurl) без `forceLoginMethod`. При любой из этих конфигураций Claude Code открывает шаг входа на экране **Cloud gateway** вместо способа входа Anthropic. Claude Code также пропускает проверку, когда источник управляемых настроек на машине существует, но не может быть прочитан, поскольку этот источник может содержать конфигурацию шлюза. До версии v2.1.247 Claude Code выполнял проверку и при такой конфигурации и завершал работу с этой ошибкой, когда эндпоинты Anthropic были недоступны.

1902 1910 

1911Claude Code также пропускает проверку на машине без управляемых настроек, когда ваш собственный `~/.claude/settings.json` [указывает шлюз](/docs/ru/claude-apps-gateway#set-the-gateway-url-in-user-settings) с помощью `forceLoginMethod` и `forceLoginGatewayUrl`. До версии v2.1.295 Claude Code в этом случае выполнял проверку.

1912 

1903**Что делать:**1913**Что делать:**

1904 1914 

1905* Если сообщение называет переменную прокси, проверьте, что её значение указывает на нужный прокси, и попросите сетевую команду разрешить HTTPS-соединения через него к хосту из сообщения. См. [Настройка сети](/docs/ru/network-config).1915* Если сообщение называет переменную прокси, проверьте, что её значение указывает на нужный прокси, и попросите сетевую команду разрешить HTTPS-соединения через него к хосту из сообщения. См. [Настройка сети](/docs/ru/network-config).


3412 3422 

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

3414 3424 

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

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

3417 3427 

3418**Что делать:**3428**Что делать:**


3562 3572 

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

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

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

3566 3576 

3567**Что делать:**3577**Что делать:**

3568 3578 


3756No conversation found with session ID: <session-id>3766No conversation found with session ID: <session-id>

3757```3767```

3758 3768 

3759После показа сообщения Claude Code завершается с кодом 1. Claude Code [ищет ID сначала в текущем проекте, а затем во всех остальных проектах на этой машине](/docs/ru/sessions#resume-a-session). До версии v2.1.223 поиск ограничивался текущим каталогом проекта и его git worktree, поэтому возобновляйте сессию из каталога, в котором она работала последней.3769После показа сообщения Claude Code завершается с кодом 1. Claude Code [ищет ID сначала в текущем проекте, а затем во всех остальных проектах на этой машине](/docs/ru/sessions#where-the-session-picker-looks). До версии v2.1.223 поиск ограничивался текущим каталогом проекта и его git worktree, поэтому возобновляйте сессию из каталога, в котором она работала последней.

3760 3770 

3761Распространённые причины:3771Распространённые причины:

3762 3772 


3816 3826 

3817* В сессии, запущенной без этих ограничений, выполните `/tui fullscreen` или `/tui default`, чтобы переключиться обратно. Claude Code сохранит там [настройку `tui`](/docs/ru/settings-reference#tui)3827* В сессии, запущенной без этих ограничений, выполните `/tui fullscreen` или `/tui default`, чтобы переключиться обратно. Claude Code сохранит там [настройку `tui`](/docs/ru/settings-reference#tui)

3818 3828 

3829<h3 id="claude-code-couldnt-restart">

3830 Claude Code couldn't restart

3831</h3>

3832 

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

3834 

3835```text theme={null}

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

3837```

3838 

3839Если при перезапуске не было диалога для повторного открытия, например потому что `/tui` был вашим первым вводом в новой сессии, сообщение выглядит так: `Claude Code couldn't restart. Start Claude Code again.`

3840 

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

3842 

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

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

3845 

3819<h3 id="couldnt-open-claude-desktop">3846<h3 id="couldnt-open-claude-desktop">

3820 Не удалось открыть Claude Desktop3847 Не удалось открыть Claude Desktop

3821</h3>3848</h3>


4593* Или перезапустите Claude Code, установив [`CLAUDE_CODE_TMPDIR`](/docs/ru/env-vars) в каталог на файловой системе со свободным местом4620* Или перезапустите Claude Code, установив [`CLAUDE_CODE_TMPDIR`](/docs/ru/env-vars) в каталог на файловой системе со свободным местом

4594* Затем попросите Claude снова выполнить команду. Выведенные ею данные были потеряны, а не усечены4621* Затем попросите Claude снова выполнить команду. Выведенные ею данные были потеряны, а не усечены

4595 4622 

4623<h3 id="file-is-not-valid-utf-8">

4624 File is not valid UTF-8

4625</h3>

4626 

4627Claude использовал инструмент Edit или NotebookEdit для файла, байты которого не декодируются как UTF-8, и Claude Code отклонил изменение. Ничего не было записано, поэтому файл остался прежним. Эти инструменты сохраняют весь файл обратно в UTF-8, из-за чего каждый байт, который им не удалось декодировать, превратился бы в символ замены `U+FFFD`. Сообщение появляется в результате инструмента:

4628 

4629```text wrap theme={null}

4630File is not valid UTF-8. It may use a legacy encoding such as Windows-1252, Shift-JIS or GBK, or be binary. This tool saves the whole file as UTF-8, which would replace every byte it cannot decode with U+FFFD. Nothing was written. Make the change with a shell command that reads and writes the file in its own encoding, or ask the user whether to convert the file to UTF-8 first.

4631```

4632 

4633Файл, который должен быть в UTF-8, тоже получает это сообщение, если содержит хотя бы одну недопустимую последовательность байтов, потому что проверка охватывает байты файла целиком.

4634 

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

4636 

4637* Чтобы сохранить файл в текущей кодировке, позвольте Claude внести изменение с помощью shell-команды, которая читает и записывает файл в этой кодировке, как предписывает ему сообщение

4638* Чтобы продолжать редактировать файл инструментом Edit, преобразуйте его в UTF-8 или исправьте недопустимые байты в файле, который должен быть в UTF-8, а затем попросите Claude внести правку снова

4639 

4640До версии 2.1.296 Edit и NotebookEdit применяли такую правку и сохраняли каждый байт, который им не удалось декодировать, как `U+FFFD`. В этих версиях обновите Claude Code.

4641 

4596<h3 id="the-source-file-is-not-valid-utf-8-text">4642<h3 id="the-source-file-is-not-valid-utf-8-text">

4597 The source file is not valid UTF-8 text4643 The source file is not valid UTF-8 text

4598</h3>4644</h3>


4752 Команда заблокирована проверками изоляции в worktree4798 Команда заблокирована проверками изоляции в worktree

4753</h3>4799</h3>

4754 4800 

4755Claude запустил команду Bash или Monitor в [сессии, изолированной в worktree](/docs/ru/worktrees#how-claude-code-enforces-isolation), и Claude Code отклонил её по одной из двух причин:4801Claude запустил команду Bash, [PowerShell](/docs/ru/tools-reference#powershell-tool) или [Monitor](/docs/ru/tools-reference#monitor-tool) в [сессии, изолированной в worktree](/docs/ru/worktrees#how-claude-code-enforces-isolation), и Claude Code отклонил её по одной из следующих причин:

4756 4802 

4757* Команда направляет git на основную рабочую копию.4803* Команда выполнялась бы в основной рабочей копии или в другом worktree. В сообщении сказано, что её рабочий каталог `resolved to the shared checkout` или `is in a different worktree`.

4758* Claude Code не может проверить по тексту команды, что любой запускаемый ею git остаётся внутри worktree. Команда, в которой git вообще не упоминается, тоже может быть отклонена по этой причине, потому что раскрытие косвенной ссылки на переменную, например `${!name}`, или выполнение подстановки функции Bash, например `${ command; }`, порождает во время выполнения значение, которое само может быть командой.4804* Команда Bash или Monitor направляет git на основную рабочую копию.

4805* Claude Code не может проверить по тексту команды Bash или Monitor, что любой запускаемый ею git остаётся внутри worktree. Команда, в которой git вообще не упоминается, тоже может быть отклонена по этой причине, потому что раскрытие косвенной ссылки на переменную, например `${!name}`, или выполнение подстановки функции Bash, например `${ command; }`, порождает во время выполнения значение, которое само может быть командой.

4759 4806 

4760Средняя часть сообщения называет то, что не удалось проверить:4807Сообщение содержит `is isolated in the worktree <path>, but this command`, за которым следует причина, например для команды, текст которой Claude Code не смог проверить:

4761 4808 

4762```text wrap theme={null}4809```text wrap theme={null}

4763This session is isolated in the worktree /path/to/worktree, but this command evaluates ${!x@P} arithmetically inside a construct too complex to verify, which can run a command hidden in a variable's value. Refusing to run it — a worktree-isolated session's git operations must target its own worktree. Split it into plain, separate commands and run them from /path/to/worktree.4810This session is isolated in the worktree /path/to/worktree, but this command evaluates ${!x@P} arithmetically inside a construct too complex to verify, which can run a command hidden in a variable's value. Refusing to run it — a worktree-isolated session's git operations must target its own worktree. Split it into plain, separate commands and run them from /path/to/worktree.


4765 4812 

4766**Что делать:**4813**Что делать:**

4767 4814 

4768* Обычно ничего: Claude читает сообщение и переписывает команду так, как просит последнее предложение4815* **Git направлен на основную рабочую копию, или текст команды невозможно проверить**: ничего делать не нужно. Claude читает сообщение и переписывает команду так, как просит последнее предложение. Если запрошенная вами команда продолжает отклоняться из-за раскрытия в её тексте, запишите отмеченное значение буквально и запустите git отдельной простой командой изнутри worktree

4769* Если запрошенная вами команда продолжает отклоняться, запишите отмеченное значение буквально: замените косвенную ссылку или подстановку её значением и запустите git отдельной простой командой изнутри worktree

4770* Чтобы намеренно выполнить действие в основной рабочей копии, запустите команду самостоятельно в терминале вне сессии4816* Чтобы намеренно выполнить действие в основной рабочей копии, запустите команду самостоятельно в терминале вне сессии

4771 4817 

4772<h3 id="this-session-has-no-saved-transcript">4818<h3 id="this-session-has-no-saved-transcript">


4946* Или возобновите сессию с `--agent <name>`, указав существующего агента, чтобы запустить сессию с этим агентом4992* Или возобновите сессию с `--agent <name>`, указав существующего агента, чтобы запустить сессию с этим агентом

4947* Если агент относится к уровню проекта и вы не доверяете исходному каталогу сессии, один раз запустите там Claude Code, примите диалоговое окно доверия, затем снова возобновите сессию4993* Если агент относится к уровню проекта и вы не доверяете исходному каталогу сессии, один раз запустите там Claude Code, примите диалоговое окно доверия, затем снова возобновите сессию

4948 4994 

4995<h3 id="restarted-after-its-next-loop-wakeup-was-due">

4996 Эта сессия перезапустилась после наступления времени следующего пробуждения /loop

4997</h3>

4998 

4999[`/loop` с самостоятельно выбираемым интервалом](/docs/ru/scheduled-tasks#let-claude-choose-the-interval) в [фоновой сессии](/docs/ru/agent-view) остановился. Процесс сессии завершился, пока цикл ожидал следующего пробуждения, и время этого пробуждения наступило до запуска [следующего процесса](/docs/ru/agent-view#the-supervisor-process) сессии. Пропущенное пробуждение не срабатывает с опозданием. Уведомление сообщает, насколько было просрочено пробуждение на момент перезапуска сессии:

5000 

5001```text theme={null}

5002This session restarted 12m after its next /loop wakeup was due, so that wakeup will not fire. The loop stays stopped until Claude schedules it again: reply to continue it.

5003```

5004 

5005До версии 2.1.295 в такой ситуации цикл останавливался без уведомления.

5006 

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

5008 

5009* Чтобы продолжить цикл, [ответьте в сессии](/docs/ru/agent-view#peek-and-reply) и скажите об этом, например `keep the loop running`. Claude прочитает уведомление вместе с вашим ответом и сможет запланировать следующее пробуждение

5010* Если цикл вам больше не нужен, ничего не делайте. Он уже остановлен

5011 

4949<h3 id="claude_code_process_wrapper-launcher-errors">5012<h3 id="claude_code_process_wrapper-launcher-errors">

4950 Ошибки средства запуска CLAUDE\_CODE\_PROCESS\_WRAPPER5013 Ошибки средства запуска CLAUDE\_CODE\_PROCESS\_WRAPPER

4951</h3>5014</h3>


5343Пути, которые Claude Code отказывает таким образом, включают:5406Пути, которые Claude Code отказывает таким образом, включают:

5344 5407 

5345* UNC shares такие как `\\server\share`5408* UNC shares такие как `\\server\share`

5346* Automount paths такие как `/net/<host>`, если вы не запустили Claude Code из каталога под automount этого хоста5409* Пути automount, например `/net/<host>`, если только вы не запустили Claude Code из каталога внутри automount этого хоста. Чтение внутри этого automount всё равно проходит [проверку сетевых путей](/docs/ru/permissions#network-paths).

5347* Локальные пути, которые достигают сетевого расположения через символическую ссылку или junction5410* Локальные пути, которые достигают сетевого расположения через символическую ссылку или junction

5348 5411 

5349Сопоставленные буквы дисков и пути `\\wsl$` не считаются сетевыми путями.5412Сопоставленные буквы дисков и пути `\\wsl$` не считаются сетевыми путями.

Details

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

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

29| Маркетплейсы плагинов | ✅ Поддерживается | Требования к учётным данным различаются в зависимости от поверхности. См. [Маркетплейсы плагинов на GHES](#plugin-marketplaces-on-ghes) |29| Маркетплейсы плагинов | ✅ Поддерживается | Требования к учётным данным различаются в зависимости от поверхности. См. [Маркетплейсы плагинов на GHES](#plugin-marketplaces-on-ghes) |

30| Метрики вклада | ✅ Поддерживается | Доставляются через webhooks на [панель аналитики](/docs/ru/analytics) |30| Метрики вклада | ❌ Не поддерживается | Требуются репозитории, размещённые на github.com. [Панель аналитики](/docs/ru/analytics) по-прежнему показывает метрики использования для работы в репозиториях GHES |

31| GitHub Actions | ✅ Поддерживается | Требует ручной настройки workflow; `/install-github-app` доступен только для github.com |31| GitHub Actions | ✅ Поддерживается | Требует ручной настройки workflow; `/install-github-app` доступен только для github.com |

32| GitHub MCP server | ❌ Не поддерживается | GitHub MCP server не работает с экземплярами GHES |32| GitHub MCP server | ❌ Не поддерживается | GitHub MCP server не работает с экземплярами GHES |

33 33 


56 На странице GitHub App на вашем экземпляре GHES установите приложение на репозитории или организации, к которым вы хотите предоставить Claude доступ. Вы можете начать с подмножества и добавить больше позже.56 На странице GitHub App на вашем экземпляре GHES установите приложение на репозитории или организации, к которым вы хотите предоставить Claude доступ. Вы можете начать с подмножества и добавить больше позже.

57 </Step>57 </Step>

58 58 

59 <Step title="Включите функции">59 <Step title="Включите Code Review">

60 Перейдите на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) и включите [Code Review](/docs/ru/code-review#set-up-code-review) и [метрики вклада](/docs/ru/analytics#enable-contribution-metrics) для ваших репозиториев GHES, используя ту же конфигурацию, что и для github.com.60 Перейдите на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) и включите [Code Review](/docs/ru/code-review#set-up-code-review) для ваших репозиториев GHES, используя ту же конфигурацию, что и для github.com.

61 </Step>61 </Step>

62</Steps>62</Steps>

63 63 


65 Разрешения GitHub App65 Разрешения GitHub App

66</h3>66</h3>

67 67 

68Манифест настраивает GitHub App с разрешениями и событиями webhook ниже, которые вместе охватывают облачные сессии, Code Review, Claude Security, маркетплейсы плагинов и метрики вклада:68Манифест настраивает GitHub App с разрешениями и событиями webhook ниже, которые вместе охватывают облачные сессии, Code Review, Claude Security и маркетплейсы плагинов:

69 69 

70| Разрешение | Доступ | Используется для |70| Разрешение | Доступ | Используется для |

71| :- | :- | :- |71| :- | :- | :- |


270* [Claude Code в веб-интерфейсе](/docs/ru/claude-code-on-the-web): запуск сессий Claude Code на облачной инфраструктуре270* [Claude Code в веб-интерфейсе](/docs/ru/claude-code-on-the-web): запуск сессий Claude Code на облачной инфраструктуре

271* [Проверка кода](/docs/ru/code-review): автоматизированные проверки PR271* [Проверка кода](/docs/ru/code-review): автоматизированные проверки PR

272* [Plugin marketplaces](/docs/ru/plugins/host-marketplace): создание и распределение каталогов плагинов272* [Plugin marketplaces](/docs/ru/plugins/host-marketplace): создание и распределение каталогов плагинов

273* [Аналитика](/docs/ru/analytics): отслеживание использования и метрик вклада273* [Аналитика](/docs/ru/analytics): отслеживание использования Claude Code в вашей организации

274* [Управляемые параметры](/docs/ru/settings): конфигурация политики на уровне организации274* [Управляемые параметры](/docs/ru/settings): конфигурация политики на уровне организации

275* [Конфигурация сети](/docs/ru/network-config): требования к брандмауэру и списку разрешений IP275* [Конфигурация сети](/docs/ru/network-config): требования к брандмауэру и списку разрешений IP

headless.md +79 −77

Details

89* **Наблюдения [Monitor](/docs/ru/tools-reference#monitor-tool)**: запуск ждёт, пока не истечёт время наблюдения или пока 10-минутный лимит не завершит ожидание, в зависимости от того, что произойдёт раньше. Пока запуск ждёт, Claude продолжает отвечать на то, что сообщает наблюдение. По умолчанию наблюдение истекает через пять минут после того, как Claude его запустит.89* **Наблюдения [Monitor](/docs/ru/tools-reference#monitor-tool)**: запуск ждёт, пока не истечёт время наблюдения или пока 10-минутный лимит не завершит ожидание, в зависимости от того, что произойдёт раньше. Пока запуск ждёт, Claude продолжает отвечать на то, что сообщает наблюдение. По умолчанию наблюдение истекает через пять минут после того, как Claude его запустит.

90* **Ожидающие пробуждения**: в запуске, промпт которого вы передали как текст, а не с помощью `--input-format stream-json`, если Claude запланировал [пробуждение `/loop` в собственном темпе](/docs/ru/scheduled-tasks#let-claude-choose-the-interval), запуск ждёт срабатывания каждого пробуждения и выполняет его итерацию, пока [цикл не завершится](/docs/ru/scheduled-tasks#stop-a-loop), даже после 10-минутного лимита.90* **Ожидающие пробуждения**: в запуске, промпт которого вы передали как текст, а не с помощью `--input-format stream-json`, если Claude запланировал [пробуждение `/loop` в собственном темпе](/docs/ru/scheduled-tasks#let-claude-choose-the-interval), запуск ждёт срабатывания каждого пробуждения и выполняет его итерацию, пока [цикл не завершится](/docs/ru/scheduled-tasks#stop-a-loop), даже после 10-минутного лимита.

91 91 

92Когда stderr является терминалом и запуск ожидает уже пять секунд, Claude Code выводит в stderr строку, которая начинается с `Waiting for background work to finish` и указывает, какую работу он ожидает. При [выводе `json` или `stream-json`](#get-structured-output) эта строка выводится только тогда, когда stdout не является терминалом, поэтому JSON, который читает ваш скрипт, никогда её не содержит.

93 

92Если запуск достигает своего лимита [`--max-budget-usd`](/docs/ru/cli-reference#cli-flags), Claude Code останавливает оставшуюся фоновую работу вместо того, чтобы ждать.94Если запуск достигает своего лимита [`--max-budget-usd`](/docs/ru/cli-reference#cli-flags), Claude Code останавливает оставшуюся фоновую работу вместо того, чтобы ждать.

93 95 

94Когда фоновая работа запускает ещё один ход, запуск выводит результат каждого хода при выводе по умолчанию `text` и результат последнего хода при выводе `json`. До v2.1.295 запуск и при выводе `text` выводил только результат последнего хода.96Когда фоновая работа запускает ещё один ход, запуск выводит результат каждого хода при выводе по умолчанию `text` и результат последнего хода при выводе `json`. До v2.1.295 запуск и при выводе `text` выводил только результат последнего хода.


116 Примеры118 Примеры

117</h2>119</h2>

118 120 

119Эти примеры демонстрируют распространённые паттерны CLI. Если команда указывает файл, например `auth.py` или `build-error.txt`, замените его файлом из вашего проекта. В CI или других скриптовых окружениях добавьте [`--bare`](#start-faster-with-bare-mode), чтобы Claude Code запустился без загрузки hooks, plugins, автоматической памяти или `CLAUDE.md` хоста.121Эти примеры демонстрируют распространённые паттерны CLI. Если команда указывает файл, например `auth.py` или `build-error.txt`, замените его файлом из вашего проекта. В CI или других скриптовых окружениях добавьте [`--bare`](#start-faster-with-bare-mode), чтобы Claude Code запустился без загрузки хуков, плагинов, автоматической памяти или `CLAUDE.md` хоста.

120 122 

121<h3 id="pipe-data-through-claude">123<h3 id="pipe-data-through-claude">

122 Передача данных через Claude124 Передача данных через Claude

123</h3>125</h3>

124 126 

125Неинтерактивный режим читает stdin, поэтому вы можете передавать данные и перенаправлять ответ, как любой другой инструмент командной строки.127Неинтерактивный режим читает stdin, поэтому вы можете передавать данные и перенаправлять ответ, как в любом другом инструменте командной строки.

126 128 

127Этот пример передаёт журнал сборки в Claude и записывает объяснение в файл:129Этот пример передаёт лог сборки в Claude и записывает объяснение в файл:

128 130 

129```bash theme={null}131```bash theme={null}

130cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt132cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt

131```133```

132 134 

133С `--output-format json` полезная нагрузка ответа включает `total_cost_usd` и разбивку затрат по моделям, поэтому скриптовые вызывающие стороны могут отслеживать расходы без обращения к [панели использования](/docs/ru/costs). Когда вы продолжаете более ранний разговор с `--continue` или `--resume`, запуск сообщает общую сумму разговора, [включая расходы более ранних запусков](/docs/ru/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Обе цифры являются [оценками на стороне клиента](/docs/ru/agent-sdk/cost-tracking) и могут отличаться от вашего фактического счёта.135С `--output-format json` данные ответа включают `total_cost_usd` и разбивку затрат по моделям, поэтому вызывающие скрипты могут отслеживать расходы без обращения к [панели использования](/docs/ru/costs). Когда вы продолжаете более ранний диалог с `--continue` или `--resume`, запуск сообщает общую сумму диалога, [включая расходы более ранних запусков](/docs/ru/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Обе цифры являются [оценками на стороне клиента](/docs/ru/agent-sdk/cost-tracking) и могут отличаться от вашего фактического счёта.

134 136 

135<Note>137<Note>

136 Передача данных через stdin ограничена 10 МБ. Если вы превысите лимит, Claude Code выйдет с понятной ошибкой и ненулевым статусом. Для работы с большими входными данными запишите содержимое в файл и ссылайтесь на путь файла в вашем приглашении вместо передачи данных через pipe.138 Данные, передаваемые через stdin, ограничены 10 МБ. Если вы превысите лимит, Claude Code завершится с понятной ошибкой и ненулевым статусом. Для работы с большими входными данными запишите содержимое в файл и укажите путь к файлу в вашем промпте вместо передачи данных через pipe.

137</Note>139</Note>

138 140 

139Если Claude Code не может прочитать stdin, например потому что процесс, который его запустил, отключил его конец, Claude Code выведет предупреждение в stderr и продолжит работу с приглашением из командной строки. До версии 2.1.211 нечитаемый stdin на Windows приводил к сбою сеанса или молчаливому выходу без вывода.141Если Claude Code не может прочитать stdin, например потому что процесс, который его запустил, отключил свой конец, Claude Code выводит предупреждение в stderr и продолжает работу с промптом из командной строки. До версии 2.1.211 нечитаемый stdin на Windows приводил к сбою сессии или к молчаливому завершению без вывода.

140 142 

141<h3 id="add-claude-to-a-build-script">143<h3 id="add-claude-to-a-build-script">

142 Добавление Claude в скрипт сборки144 Добавление Claude в скрипт сборки

143</h3>145</h3>

144 146 

145Вы можете обернуть неинтерактивный вызов в скрипт, чтобы использовать Claude как проектный linter или рецензент.147Вы можете обернуть неинтерактивный вызов в скрипт, чтобы использовать Claude как линтер или рецензента для конкретного проекта.

146 148 

147Этот скрипт `package.json` передаёт diff относительно `main` в Claude и просит его сообщить об опечатках. Передача diff означает, что Claude не нуждается в разрешении Bash для его чтения, а экранированные двойные кавычки делают скрипт портативным на Windows:149Этот скрипт `package.json` передаёт diff относительно `main` в Claude и просит его сообщить об опечатках. Передача diff означает, что Claude не нужно разрешение Bash для его чтения, а экранированные двойные кавычки делают скрипт переносимым на Windows:

148 150 

149```json theme={null}151```json theme={null}

150{152{


163Используйте `--output-format` для управления тем, как возвращаются ответы:165Используйте `--output-format` для управления тем, как возвращаются ответы:

164 166 

165* `text` (по умолчанию): простой текстовый вывод167* `text` (по умолчанию): простой текстовый вывод

166* `json`: структурированный JSON с результатом, ID сеанса и метаданными168* `json`: структурированный JSON с результатом, ID сессии и метаданными

167* `stream-json`: JSON с разделением по строкам для потоковой передачи в реальном времени169* `stream-json`: JSON с разделением по строкам для потоковой передачи в реальном времени

168 170 

169Этот пример возвращает сводку проекта в виде JSON с метаданными сеанса, с текстовым результатом в поле `result`:171Этот пример возвращает сводку проекта в виде JSON с метаданными сессии, с текстовым результатом в поле `result`:

170 172 

171```bash theme={null}173```bash theme={null}

172claude -p "Summarize this project" --output-format json174claude -p "Summarize this project" --output-format json

173```175```

174 176 

175Чтобы получить вывод, соответствующий определённой схеме, используйте `--output-format json` с `--json-schema` и определением [JSON Schema](https://json-schema.org/). Ответ включает метаданные о запросе (ID сеанса, использование и т. д.) со структурированным выводом в поле `structured_output`.177Чтобы получить вывод, соответствующий определённой схеме, используйте `--output-format json` с `--json-schema` и определением [JSON Schema](https://json-schema.org/). Ответ включает метаданные о запросе (ID сессии, использование и т. д.) со структурированным выводом в поле `structured_output`.

176 178 

177Этот пример извлекает имена функций и возвращает их как массив строк:179Этот пример извлекает имена функций и возвращает их как массив строк:

178 180 


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

183```185```

184 186 

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

186 188 

187<Tip>189<Tip>

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

189 191 

190 ```bash theme={null}192 ```bash theme={null}

191 # Extract the text result193 # Extract the text result


209claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages211claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages

210```212```

211 213 

212Последняя строка потока — это сообщение `result` с финальным текстом ответа, стоимостью и метаданными сеанса.214Последняя строка потока — это сообщение `result` с итоговым текстом ответа, стоимостью и метаданными сессии.

213 215 

214Если ваш потребитель читает поток медленно, Claude Code ждёт, пока очередь вывода опустеет перед выходом, масштабируя ожидание в зависимости от того, сколько ещё в очереди, с максимумом 30 секунд. До версии 2.1.214 ожидание выхода было ограничено примерно двумя секундами, что могло обрезать конец большого ответа.216Если ваш потребитель читает поток медленно, Claude Code перед завершением ждёт, пока очередь вывода опустеет, масштабируя ожидание в зависимости от того, сколько ещё осталось в очереди, максимум 30 секунд. До версии 2.1.214 ожидание при завершении было ограничено примерно двумя секундами, что могло обрезать конец большого ответа.

215 217 

216Следующий пример использует [jq](https://jqlang.org/) для фильтрации текстовых дельт и отображения только потокового текста. Флаг `-r` выводит необработанные строки (без кавычек), а `-j` объединяет их без переводов строк, поэтому токены выводятся непрерывно:218Следующий пример использует [jq](https://jqlang.org/) для фильтрации текстовых дельт и отображения только потокового текста. Флаг `-r` выводит необработанные строки (без кавычек), а `-j` объединяет их без переводов строк, поэтому токены выводятся непрерывно:

217 219 


223Для программной потоковой передачи с обратными вызовами и объектами сообщений см. [Потоковая передача ответов в реальном времени](/docs/ru/agent-sdk/streaming-output) в документации Agent SDK.225Для программной потоковой передачи с обратными вызовами и объектами сообщений см. [Потоковая передача ответов в реальном времени](/docs/ru/agent-sdk/streaming-output) в документации Agent SDK.

224 226 

225<h4 id="follow-subagent-messages">227<h4 id="follow-subagent-messages">

226 Отслеживание сообщений подагентов228 Отслеживание сообщений субагентов

227</h4>229</h4>

228 230 

229Сообщения от [субагентов](/docs/ru/sub-agents) и от скиллов, которые [работают в субагенте](/docs/ru/skills#run-skills-in-a-subagent), появляются в потоке как сообщения `assistant` и `user`. Их поле `parent_tool_use_id` указывает, к какому запуску относится каждое из них. Сообщения из основного диалога содержат `null` в этом поле.231Сообщения от [субагентов](/docs/ru/sub-agents) и от скиллов, которые [работают в субагенте](/docs/ru/skills#run-skills-in-a-subagent), появляются в потоке как сообщения `assistant` и `user`. Их поле `parent_tool_use_id` указывает, к какому запуску относится каждое из них. Сообщения из основного диалога содержат `null` в этом поле.


235 237 

236Когда вы включаете любой из этих параметров, Claude Code пересылает сообщения от [субагентов на каждом уровне вложенности](/docs/ru/sub-agents#let-subagents-spawn-their-own-subagents), независимо от того, был ли каждый из них порождён инструментом Agent или запущен как разветвлённый скилл. В `parent_tool_use_id` сообщения вложенного субагента содержат ID вызова инструмента Agent или Skill, который его запустил, поэтому вы можете перестроить полное дерево вложенности, следуя этим ID.238Когда вы включаете любой из этих параметров, Claude Code пересылает сообщения от [субагентов на каждом уровне вложенности](/docs/ru/sub-agents#let-subagents-spawn-their-own-subagents), независимо от того, был ли каждый из них порождён инструментом Agent или запущен как разветвлённый скилл. В `parent_tool_use_id` сообщения вложенного субагента содержат ID вызова инструмента Agent или Skill, который его запустил, поэтому вы можете перестроить полное дерево вложенности, следуя этим ID.

237 239 

238Запуск, который Claude начинает вызовом инструмента, содержит ID этого вызова инструмента. У разветвлённого скилла, который вы запускаете, передавая `/<skill-name>` в качестве промпта, нет вызова инструмента, поэтому его сообщения содержат значение `forked-command-` и поступают после его завершения. Найдите способ запуска в первом столбце:240Запуск, который Claude начинает вызовом инструмента, содержит ID этого вызова инструмента. У разветвлённого скилла, который вы запускаете, передавая `/<skill-name>` в качестве промпта, нет вызова инструмента, поэтому его сообщения вместо этого содержат значение `forked-command-` и поступают после его завершения. Найдите способ запуска в первом столбце:

239 241 

240| Как начинается запуск | `parent_tool_use_id` | Когда поступают его сообщения |242| Как начинается запуск | `parent_tool_use_id` | Когда поступают его сообщения |

241| :- | :- | :- |243| :- | :- | :- |


247 249 

248Если каких-то из этих сообщений нет в вашем потоке, сверьте версию Claude Code с этими минимальными требованиями:250Если каких-то из этих сообщений нет в вашем потоке, сверьте версию Claude Code с этими минимальными требованиями:

249 251 

250* **`--forward-subagent-text` и `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`**: версия 2.1.211 или позже252* **`--forward-subagent-text` и `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`**: версия 2.1.211 или новее

251* **Пересылка на каждом уровне вложенности**: версия 2.1.219 или позже253* **Пересылка на каждом уровне вложенности**: версия 2.1.219 или новее

252* **Разветвлённый скилл, который Claude запускает инструментом Skill из основного диалога**: версия 2.1.86 или позже для его блоков `tool_use` и `tool_result` и версия 2.1.265 или позже для его первого сообщения `user`, а также текстовых блоков и блоков размышлений254* **Разветвлённый скилл, который Claude запускает инструментом Skill из основного диалога**: версия 2.1.86 или новее для его блоков `tool_use` и `tool_result` и версия 2.1.265 или новее для его первого сообщения `user`, а также текстовых блоков и блоков размышлений

253* **Сообщения субагентов, которых порождает разветвлённый скилл, и разветвлённых скиллов, запущенных внутри субагента или другого разветвлённого скилла**: версия 2.1.275 или позже255* **Сообщения субагентов, которых порождает разветвлённый скилл, и разветвлённых скиллов, запущенных внутри субагента или другого разветвлённого скилла**: версия 2.1.275 или новее

254* **Сообщения разветвлённого скилла, который вы запускаете, передавая `/<skill-name>` в качестве промпта**: версия 2.1.287 или позже256* **Сообщения разветвлённого скилла, который вы запускаете, передавая `/<skill-name>` в качестве промпта**: версия 2.1.287 или новее

255 257 

256<h4 id="handle-api-retries">258<h4 id="handle-api-retries">

257 Обработка повторных попыток API259 Обработка повторных попыток API

258</h4>260</h4>

259 261 

260Когда запрос API не удаётся с повторяемой ошибкой, Claude Code выдаёт событие `system/api_retry` перед повторной попыткой. На версии 2.1.246 или позже, когда `401` или `403` отклоняет учётные данные [`apiKeyHelper`](/docs/ru/settings-reference#apikeyhelper), Claude Code делает первые две повторные попытки молча без события, затем выдаёт событие как обычно с третьей последовательной повторной попытки и далее. Молчаливые повторные попытки всё ещё учитываются в `attempt`. Вы можете использовать событие для отображения прогресса повторных попыток в вашем собственном интерфейсе.262Когда запрос к API завершается ошибкой, допускающей повторную попытку, Claude Code выдаёт событие `system/api_retry` перед повторной попыткой. В версии 2.1.246 или новее, когда `401` или `403` отклоняет учётные данные [`apiKeyHelper`](/docs/ru/settings-reference#apikeyhelper), Claude Code делает первые две повторные попытки молча, без события, а начиная с третьей последовательной повторной попытки выдаёт событие как обычно. Молчаливые повторные попытки всё равно учитываются в `attempt`. Вы можете использовать событие для отображения хода повторных попыток в вашем собственном интерфейсе.

261 263 

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

263| - | - | - |265| - | - | - |


266| `attempt` | целое число | номер текущей попытки, начиная с 1 |268| `attempt` | целое число | номер текущей попытки, начиная с 1 |

267| `max_retries` | целое число | общее число повторных попыток, разрешённых для причины этого сбоя |269| `max_retries` | целое число | общее число повторных попыток, разрешённых для причины этого сбоя |

268| `retry_delay_ms` | целое число | миллисекунды до следующей попытки |270| `retry_delay_ms` | целое число | миллисекунды до следующей попытки |

269| `error_status` | целое число или null | код состояния HTTP неудачной попытки, или `null`, когда попытка не получила HTTP ответ от API |271| `error_status` | целое число или null | код состояния HTTP неудачной попытки или `null`, когда попытка не получила HTTP-ответ от API |

270| `no_response` | объект, опционально | присутствует только когда неудачная попытка [не получила заголовки ответа вовремя](/docs/ru/errors#no-response-from-api). `waited_ms` — это время ожидания этой попытки, а `retry_wait_ms` — время ожидания повторной попытки. Требует Claude Code версии 2.1.261 или позже |272| `no_response` | объект, опционально | присутствует, только когда неудачная попытка [не получила заголовки ответа вовремя](/docs/ru/errors#no-response-from-api). `waited_ms` — это время ожидания этой попытки, а `retry_wait_ms` — время ожидания повторной попытки. Требует Claude Code версии 2.1.261 или новее |

271| `error` | строка | категория ошибки: `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `rate_limit`, `overloaded`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error` или `unknown` |273| `error` | строка | категория ошибки: `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `rate_limit`, `overloaded`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error` или `unknown` |

272| `uuid` | строка | уникальный идентификатор события |274| `uuid` | строка | уникальный идентификатор события |

273| `session_id` | строка | сеанс, к которому принадлежит событие |275| `session_id` | строка | сессия, к которой относится событие |

274 276 

275<h4 id="read-session-metadata">277<h4 id="read-session-metadata">

276 Чтение метаданных сеанса278 Чтение метаданных сессии

277</h4>279</h4>

278 280 

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

280 282 

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

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

283 285 

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

285 287 

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

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

288</h4>290</h4>

289 291 

290Используйте поля plugin в событии `system/init` для перехвата plugin, который не загрузился:292Используйте поля плагинов в событии `system/init`, чтобы обнаружить плагин, который не загрузился:

291 293 

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

293| - | - | - |295| - | - | - |

294| `plugins` | массив | plugins, которые успешно загрузились, каждый с `name` и `path` |296| `plugins` | массив | плагины, которые успешно загрузились, каждый с `name` и `path` |

295| `plugin_errors` | массив | ошибки загрузки plugin, каждая с `plugin`, `type` и `message`. Включает неудовлетворённые версии зависимостей и ошибки загрузки `--plugin-dir`, такие как отсутствующий путь или недопустимый архив. Затронутые plugins отсутствуют в `plugins`. Ключ опускается, когда нет ошибок |297| `plugin_errors` | массив | ошибки загрузки плагинов, каждая с `plugin`, `type` и `message`. Включает неудовлетворённые версии зависимостей и ошибки загрузки `--plugin-dir`, такие как отсутствующий путь или недопустимый архив. Плагин, который не загрузился, отсутствует в `plugins`. Ключ опускается, когда ошибок нет |

296 298 

297Когда каталог `--plugin-dir` или архив сам не загружается, его запись `plugin_errors` включает разрешённый абсолютный путь как `path`. Используйте его, чтобы определить, какой из нескольких значений `--plugin-dir` не загрузился. Поле `path` требует Claude Code версии 2.1.283 или позже.299Когда не удаётся загрузить сам каталог или архив `--plugin-dir`, его запись `plugin_errors` включает разрешённый абсолютный путь в виде `path`. Используйте его, чтобы определить, какое из нескольких значений `--plugin-dir` не загрузилось. Поле `path` требует Claude Code версии 2.1.283 или новее.

298 300 

299Используйте поля MCP сервера так же. Когда вы передаёте [`--mcp-config`](/docs/ru/cli-reference#cli-flags) с `-p`, Claude Code ждёт всё ещё ожидающих серверов перед запуском первого хода, до [`MCP_TIMEOUT`](/docs/ru/env-vars) времени ожидания запуска, 30 секунд по умолчанию. Удалённый сервер с [кэшированным списком инструментов](/docs/ru/agent-sdk/mcp#connection-timing) пропускает ожидание, показывает `pending` в `system/init` и подключается при первом вызове инструмента. Ожидание требует Claude Code версии 2.1.221 или позже.301Используйте поля MCP-серверов так же. Когда вы передаёте [`--mcp-config`](/docs/ru/cli-reference#cli-flags) с `-p`, Claude Code перед первым ходом ждёт серверы, которые ещё подключаются, в пределах таймаута запуска [`MCP_TIMEOUT`](/docs/ru/env-vars), по умолчанию 30 секунд. Удалённый сервер с [кэшированным списком инструментов](/docs/ru/agent-sdk/mcp#connection-timing) пропускает ожидание, показывает `pending` в `system/init` и подключается при первом вызове инструмента. В [самостоятельно размещённом окружении](/docs/ru/self-hosted-environments-configuration#connection-timing) вместо этого применяется более короткое ожидание. Ожидание требует Claude Code версии 2.1.221 или новее.

300 302 

301Claude Code проверяет каждую запись `--mcp-config` при запуске и пропускает записи, которые не прошли проверку, например запись `url` без `type`. Запуск продолжается и выходит чисто, поэтому проверьте эти поля для перехвата сервера, который никогда не загружался:303Claude Code проверяет каждую запись `--mcp-config` при запуске и пропускает записи, которые не прошли проверку, например запись `url` без `type`. Запуск продолжается и завершается без ошибок, поэтому проверяйте эти поля, чтобы обнаружить сервер, который так и не загрузился:

302 304 

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

304| - | - | - |306| - | - | - |

305| `mcp_servers` | массив | MCP серверы в сеансе, каждый с `name` и `status` |307| `mcp_servers` | массив | MCP-серверы в сессии, каждый с `name` и `status` |

306| `mcp_server_errors` | массив | записи `--mcp-config`, пропущенные проверкой конфигурации, каждая с `name`, `type` и `message`. `type` — это категория пропуска, такая как `unknown_type`, `url_missing_type`, `invalid_config` или `reserved_name`; рассматривайте значения, которые вы не распознаёте, как общий пропуск. Затронутые серверы отсутствуют в `mcp_servers`. Ключ опускается, когда нет ошибок, поэтому ворота CI могут не пройти на непустом массиве. Требует Claude Code версии 2.1.219 или позже |308| `mcp_server_errors` | массив | записи `--mcp-config`, пропущенные при проверке конфигурации, каждая с `name`, `type` и `message`. `type` — это категория пропуска, такая как `unknown_type`, `url_missing_type`, `invalid_config` или `reserved_name`; рассматривайте значения, которые вы не распознаёте, как общий пропуск. Затронутые серверы отсутствуют в `mcp_servers`. Ключ опускается, когда ошибок нет, поэтому проверка в CI может завершаться сбоем при непустом массиве. Требует Claude Code версии 2.1.219 или новее |

307 309 

308Когда вы запускаете команду вручную в терминале, Claude Code также выводит предупреждение при запуске в stderr, такое как `Warning: 1 MCP server skipped due to invalid config:`, за которым следует причина для каждой пропущенной записи. Когда вы перенаправляете stderr или когда программа, такая как CI runner или хост SDK, захватывает его, Claude Code не выводит предупреждение и сообщает пропущенные записи только в поле `mcp_server_errors`. Предупреждение требует Claude Code версии 2.1.219 или позже.310Когда вы запускаете команду вручную в терминале, Claude Code также выводит в stderr предупреждение при запуске, например `Warning: 1 MCP server skipped due to invalid config:`, за которым следует причина для каждой пропущенной записи. Когда вы перенаправляете stderr или когда его перехватывает программа, такая как CI runner или хост SDK, Claude Code не выводит предупреждение и сообщает о пропущенных записях только в поле `mcp_server_errors`. Предупреждение требует Claude Code версии 2.1.219 или новее.

309 311 

310<h4 id="track-plugin-installs">312<h4 id="track-plugin-installs">

311 Отслеживание установок plugins313 Отслеживание установки плагинов

312</h4>314</h4>

313 315 

314Когда установлена [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/ru/env-vars), Claude Code выдаёт события `system/plugin_install` во время установки marketplace plugins перед первым ходом. Используйте их для отображения прогресса установки в вашем собственном UI.316Когда задана [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/ru/env-vars), Claude Code выдаёт события `system/plugin_install` во время установки плагинов из маркетплейсов перед первым ходом. Используйте их для отображения хода установки в вашем собственном UI.

315 317 

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

317| - | - | - |319| - | - | - |

318| `type` | `"system"` | тип сообщения |320| `type` | `"system"` | тип сообщения |

319| `subtype` | `"plugin_install"` | идентифицирует это как событие установки plugin |321| `subtype` | `"plugin_install"` | идентифицирует это как событие установки плагина |

320| `status` | `"started"`, `"installed"`, `"failed"` или `"completed"` | `started` и `completed` заключают общую установку; `installed` и `failed` сообщают об отдельных marketplaces |322| `status` | `"started"`, `"installed"`, `"failed"` или `"completed"` | `started` и `completed` обрамляют всю установку; `installed` и `failed` сообщают об отдельных маркетплейсах |

321| `name` | строка, опционально | имя marketplace, присутствует на `installed` и `failed` |323| `name` | строка, опционально | имя маркетплейса, присутствует в `installed` и `failed` |

322| `error` | строка, опционально | сообщение об ошибке, присутствует на `failed` |324| `error` | строка, опционально | сообщение об ошибке, присутствует в `failed` |

323| `uuid` | строка | уникальный идентификатор события |325| `uuid` | строка | уникальный идентификатор события |

324| `session_id` | строка | сеанс, к которому принадлежит событие |326| `session_id` | строка | сессия, к которой относится событие |

325 327 

326<h3 id="auto-approve-tools">328<h3 id="auto-approve-tools">

327 Автоматическое одобрение инструментов329 Автоматическое подтверждение инструментов

328</h3>330</h3>

329 331 

330Используйте `--allowedTools` для разрешения Claude использовать определённые инструменты без запроса. Перечисление `Read` и `Edit` позволяет Claude читать и редактировать файлы без запроса разрешения. Перечисление `Bash` делает то же самое для команд shell, за исключением запуска, который начинается в [режиме auto](/docs/ru/permission-modes#how-auto-mode-evaluates-actions), где Claude Code отбрасывает запись `Bash` как широкое правило разрешения и режим auto оценивает каждую команду вместо этого. Этот пример запускает набор тестов и исправляет ошибки с этими тремя инструментами в списке:332Используйте `--allowedTools`, чтобы разрешить Claude использовать определённые инструменты без запроса. Перечисление `Read` и `Edit` позволяет Claude читать и редактировать файлы без запроса разрешения, кроме чтения по [сетевым путям](/docs/ru/permissions#network-paths). Перечисление `Bash` делает то же самое для shell-команд, за исключением запуска, который начинается в [авторежиме](/docs/ru/permission-modes#how-auto-mode-evaluates-actions): там Claude Code отбрасывает голую запись `Bash` как слишком широкое разрешающее правило, и вместо этого авторежим оценивает каждую команду. Этот пример запускает набор тестов и исправляет сбои, указав эти три инструмента:

331 333 

332```bash theme={null}334```bash theme={null}

333claude -p "Run the test suite and fix any failures" \335claude -p "Run the test suite and fix any failures" \

334 --allowedTools "Bash,Read,Edit"336 --allowedTools "Bash,Read,Edit"

335```337```

336 338 

337Чтобы установить базовый уровень для всего сеанса вместо перечисления отдельных инструментов, передайте [режим разрешений](/docs/ru/permission-modes). Запуск, где ничто не устанавливает режим разрешений, принимает [встроенный начальный режим разрешений](/docs/ru/permission-modes#which-mode-a-session-starts-in), который может быть `auto`, поэтому передайте нужный вам режим:339Чтобы задать базовый уровень для всей сессии вместо перечисления отдельных инструментов, передайте [режим разрешений](/docs/ru/permission-modes). Запуск, в котором режим разрешений ничем не задан, использует [встроенный начальный режим разрешений](/docs/ru/permission-modes#which-mode-a-session-starts-in), которым может быть `auto`, поэтому передайте нужный вам режим:

338 340 

339* **`auto`**: передайте `--permission-mode auto`, чтобы классификатор проверил большинство действий вместо вас341* **`auto`**: передайте `--permission-mode auto`, чтобы большинство действий проверял классификатор вместо вас

340* **`dontAsk`**: Claude Code отклоняет каждый вызов, который иначе вызвал бы запрос, что полезно для заблокированных CI запусков. Действия, которые не требуют одобрения в режиме Manual, всё ещё выполняются, такие как чтение файлов в ваших рабочих каталогах и [набор команд только для чтения](/docs/ru/permissions#read-only-commands), а также действия, которые охватывают ваши записи `--allowedTools` или правила `permissions.allow`. `AskUserQuestion`, инструменты соединителя [которые ваша организация установила на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) и MCP инструменты, отмеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), отклоняются даже когда правило разрешения совпадает342* **`dontAsk`**: Claude Code отклоняет каждый вызов, который иначе вызвал бы запрос, что полезно для строго ограниченных запусков в CI. Действия, не требующие подтверждения в режиме Manual, по-прежнему выполняются, например чтение файлов в ваших рабочих каталогах и [набор команд только для чтения](/docs/ru/permissions#read-only-commands), как и действия, охваченные вашими записями `--allowedTools` или правилами `permissions.allow`. `AskUserQuestion`, инструменты коннекторов, [для которых ваша организация установила `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), MCP-инструменты, помеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), и [чтение по сетевым путям](/docs/ru/permissions#network-paths) отклоняются, даже когда совпадает разрешающее правило

341* **`acceptEdits`**: Claude записывает файлы без запроса, и Claude Code автоматически одобряет распространённые команды файловой системы, такие как `mkdir`, `touch`, `mv` и `cp`. [Действия, которые ни один режим не одобряет автоматически](/docs/ru/permission-modes#actions-no-mode-auto-approves), всё ещё применяются. Помимо набора команд только для чтения, другие команды shell и сетевые запросы всё ещё требуют записи `--allowedTools` или правила `permissions.allow`. См. [что `acceptEdits` автоматически одобряет](/docs/ru/permission-modes#auto-approve-file-edits-with-acceptedits-mode) для полного списка343* **`acceptEdits`**: Claude записывает файлы без запроса, и Claude Code автоматически подтверждает распространённые команды файловой системы, такие как `mkdir`, `touch`, `mv` и `cp`. [Действия, которые ни один режим не подтверждает автоматически](/docs/ru/permission-modes#actions-no-mode-auto-approves), по-прежнему действуют. Помимо набора команд только для чтения, другие shell-команды и сетевые запросы по-прежнему требуют записи `--allowedTools` или правила `permissions.allow`. См. [что `acceptEdits` подтверждает автоматически](/docs/ru/permission-modes#auto-approve-file-edits-with-acceptedits-mode) для полного списка

342 344 

343Этот пример применяет исправления lint с `acceptEdits` в качестве базовой линии:345Этот пример применяет исправления линтера с `acceptEdits` в качестве базового уровня:

344 346 

345```bash theme={null}347```bash theme={null}

346claude -p "Apply the lint fixes" --permission-mode acceptEdits348claude -p "Apply the lint fixes" --permission-mode acceptEdits


350 Отключение запросов разрешений в автоматических запусках352 Отключение запросов разрешений в автоматических запусках

351</h3>353</h3>

352 354 

353Передайте `--permission-prompts none`, когда никто не доступен для ответа на запросы разрешений, например в запланированном задании. Флаг имеет наибольшее значение, когда ваш запуск имеет хост разрешений: приложение Agent SDK с обратным вызовом [`canUseTool`](/docs/ru/agent-sdk/user-input) или MCP инструмент, который вы передаёте с [`--permission-prompt-tool`](/docs/ru/cli-reference#cli-flags). Без флага ваш запуск ждёт, пока этот хост ответит на каждый запрос разрешения.355Передайте `--permission-prompts none`, когда отвечать на запросы разрешений некому, например в запланированном задании. Флаг важнее всего, когда у вашего запуска есть хост разрешений: приложение Agent SDK с [обратным вызовом `canUseTool`](/docs/ru/agent-sdk/user-input) или MCP-инструмент, который вы передаёте с [`--permission-prompt-tool`](/docs/ru/cli-reference#cli-flags). Без флага ваш запуск ждёт, пока этот хост ответит на каждый запрос разрешения.

354 356 

355С флагом ваш запуск не консультирует хост и не ждёт его. Всё, что вызвало бы запрос, отклоняется, если hook `PermissionRequest` не разрешает это, Claude сообщается, что никто не может одобрить запрос и не должен повторять попытку, и запуск продолжается. В запуске `-p` без хоста эти запросы отклоняются в любом случае, и флаг также сообщает Claude не повторять их. Правила разрешений, hooks [`PermissionRequest`](/docs/ru/hooks#permissionrequest) и режим разрешений, который вы установили, всё ещё решают каждый вызов в первую очередь; Claude Code отклоняет только запросы, которые ничто другое не разрешает.357С флагом ваш запуск не обращается к хосту и не ждёт его. Всё, что вызвало бы запрос, отклоняется, если это не разрешает хук `PermissionRequest`; Claude сообщается, что подтвердить запрос некому и что повторять попытку не нужно, и запуск продолжается. В запуске `-p` без хоста эти запросы отклоняются в любом случае, а флаг дополнительно сообщает Claude не повторять их. Правила разрешений, [хуки `PermissionRequest`](/docs/ru/hooks#permissionrequest) и заданный вами режим разрешений по-прежнему решают судьбу каждого вызова в первую очередь; Claude Code отклоняет только те запросы, которые ничто другое не разрешает.

356 358 

357Этот пример запускает автоматическое задание в [режиме auto](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode). Классификатор проверяет каждое действие как обычно, и Claude Code отклоняет всё, что иначе вернулось бы к запросу:359Этот пример выполняет автоматическое задание в [авторежиме](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode). Классификатор проверяет каждое действие как обычно, а Claude Code отклоняет всё, что иначе привело бы к запросу:

358 360 

359```bash theme={null}361```bash theme={null}

360claude -p "Update the dependency pins and run the tests" --permission-mode auto --permission-prompts none362claude -p "Update the dependency pins and run the tests" --permission-mode auto --permission-prompts none

361```363```

362 364 

363С `--permission-prompts none`, Claude Code удаляет инструменты, которые требуют ответа от человека, такие как [`AskUserQuestion`](/docs/ru/tools-reference#askuserquestion-tool-behavior), поэтому Claude не может их вызвать. Любой [запрос MCP elicitation](/docs/ru/mcp#respond-to-mcp-elicitation-requests), на который не ответит hook [`Elicitation`](/docs/ru/hooks#elicitation), отменяется.365С `--permission-prompts none` Claude Code удаляет инструменты, которым нужен ответ от человека, такие как [`AskUserQuestion`](/docs/ru/tools-reference#askuserquestion-tool-behavior), поэтому Claude не может их вызвать. Любой [запрос MCP elicitation](/docs/ru/mcp#respond-to-mcp-elicitation-requests), на который не отвечает ни один [хук `Elicitation`](/docs/ru/hooks#elicitation), отменяется.

364 366 

365С `--output-format stream-json`, отклонения появляются как системные сообщения `permission_denied`, и финальное сообщение результата перечисляет их в `permission_denials`.367С `--output-format stream-json` отклонения появляются как системные сообщения `permission_denied`, а итоговое сообщение результата перечисляет их в `permission_denials`.

366 368 

367<Note>369<Note>

368 Флаг `--permission-prompts` требует Claude Code версии 2.1.259 или позже. Более ранние версии отклоняют его с ошибкой неизвестного параметра.370 Флаг `--permission-prompts` требует Claude Code версии 2.1.259 или новее. Более ранние версии отклоняют его с ошибкой неизвестного параметра.

369</Note>371</Note>

370 372 

371<h3 id="create-a-commit">373<h3 id="create-a-commit">

372 Создание коммита374 Создание коммита

373</h3>375</h3>

374 376 

375Этот пример проверяет поставленные в очередь изменения и создаёт коммит с подходящим сообщением:377Этот пример просматривает проиндексированные изменения и создаёт коммит с подходящим сообщением:

376 378 

377```bash theme={null}379```bash theme={null}

378claude -p "Look at my staged changes and create an appropriate commit" \380claude -p "Look at my staged changes and create an appropriate commit" \

379 --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"381 --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"

380```382```

381 383 

382Флаг `--allowedTools` использует [синтаксис правила разрешений](/docs/ru/settings-reference#permission-rule-syntax). Завершающий ` *` включает сопоставление префиксов, поэтому `Bash(git diff *)` разрешает любую команду, начинающуюся с `git diff`. Пробел перед `*` важен: без него `Bash(git diff*)` также совпадал бы с `git diff-index`.384Флаг `--allowedTools` использует [синтаксис правил разрешений](/docs/ru/settings-reference#permission-rule-syntax). Завершающий ` *` включает сопоставление по префиксу, поэтому `Bash(git diff *)` разрешает любую команду, начинающуюся с `git diff`. Пробел перед `*` важен: без него `Bash(git diff*)` также совпадал бы с `git diff-index`.

383 385 

384<Note>386<Note>

385 Поддержка команд отличается в режиме `-p`:387 Поддержка команд в режиме `-p` отличается:

386 388 

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

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

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

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

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

392</Note>394</Note>

393 395 

394<h3 id="customize-the-system-prompt">396<h3 id="customize-the-system-prompt">

395 Настройка системного приглашения397 Настройка системного промпта

396</h3>398</h3>

397 399 

398Используйте `--append-system-prompt` для добавления инструкций при сохранении поведения Claude Code по умолчанию. Этот пример передаёт diff PR в Claude и инструктирует его проверить на уязвимости безопасности. Сохраните его как shell скрипт, например `review.sh`:400Используйте `--append-system-prompt`, чтобы добавить инструкции, сохранив поведение Claude Code по умолчанию. Этот пример передаёт diff PR в Claude и поручает ему проверить код на уязвимости безопасности. Сохраните его как shell-скрипт, например `review.sh`:

399 401 

400```bash theme={null}402```bash theme={null}

401gh pr diff "$1" | claude -p \403gh pr diff "$1" | claude -p \


403 --output-format json405 --output-format json

404```406```

405 407 

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

407 409 

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

409 411 

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

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

412</h3>414</h3>

413 415 

414Используйте `--continue` для продолжения самого последнего разговора или `--resume` с ID сеанса для продолжения определённого разговора. На Claude Code версии 2.1.257 или позже, когда вы передаёте `--continue`, Claude Code открывает [фоновый сеанс](/docs/ru/sessions#resume-a-session), который завершился, но не тот, который всё ещё работает. Этот пример запускает рецензию, затем отправляет последующие приглашения:416Используйте `--continue` для продолжения самого последнего диалога или `--resume` с ID сессии для продолжения определённого диалога. В Claude Code версии 2.1.257 или новее при передаче `--continue` Claude Code открывает [фоновую сессию](/docs/ru/sessions#where-the-session-picker-looks), которая завершилась, но не ту, которая ещё выполняется. Этот пример запускает рецензию, а затем отправляет последующие промпты:

415 417 

416```bash theme={null}418```bash theme={null}

417# First request419# First request


422claude -p "Generate a summary of all issues found" --continue424claude -p "Generate a summary of all issues found" --continue

423```425```

424 426 

425Если вы запускаете несколько разговоров, захватите ID сеанса для возобновления определённого:427Если вы ведёте несколько диалогов, сохраните ID сессии, чтобы возобновить определённый:

426 428 

427```bash theme={null}429```bash theme={null}

428session_id=$(claude -p "Start a review" --output-format json | jq -r '.session_id')430session_id=$(claude -p "Start a review" --output-format json | jq -r '.session_id')

429claude -p "Continue that review" --resume "$session_id"431claude -p "Continue that review" --resume "$session_id"

430```432```

431 433 

432Вы можете запустить две команды из разных каталогов: Claude Code [находит сеанс по его ID](/docs/ru/sessions#resume-a-session) в любом проекте на этой машине. До версии 2.1.223 Claude Code искал ID только в текущем каталоге проекта и его git worktrees, поэтому вам пришлось бы запустить обе команды из одного каталога.434Вы можете запускать эти две команды из разных каталогов: Claude Code [находит сессию по её ID](/docs/ru/sessions#where-the-session-picker-looks) в любом проекте на этой машине.

433 435 

434Вместо ID сеанса вы можете передать `--resume` абсолютный путь к [файлу транскрипта](/docs/ru/sessions#where-transcripts-are-stored) `.jsonl` сеанса, и Claude Code продолжит разговор, сохранённый в этом файле.436Вместо ID сессии вы можете передать `--resume` абсолютный путь к [файлу транскрипта](/docs/ru/sessions#where-transcripts-are-stored) `.jsonl` сессии, и Claude Code продолжит диалог, сохранённый в этом файле.

435 437 

436<h2 id="next-steps">438<h2 id="next-steps">

437 Следующие шаги439 Следующие шаги

hooks.md +41 −14

Details

302| :- | :- | :- |302| :- | :- | :- |

303| `"*"`, `""` или опущено | Совпадение со всеми | срабатывает при каждом возникновении события |303| `"*"`, `""` или опущено | Совпадение со всеми | срабатывает при каждом возникновении события |

304| Только буквы, цифры, `_`, `-`, пробелы, `,` и `\|` | Точная строка или список точных строк, разделённых `\|` или `,` с опциональным окружающим пробелом | `Bash` совпадает только с инструментом Bash; `Edit\|Write` и `Edit, Write` каждый совпадает с любым инструментом точно; `code-reviewer` совпадает только с этим типом агента |304| Только буквы, цифры, `_`, `-`, пробелы, `,` и `\|` | Точная строка или список точных строк, разделённых `\|` или `,` с опциональным окружающим пробелом | `Bash` совпадает только с инструментом Bash; `Edit\|Write` и `Edit, Write` каждый совпадает с любым инструментом точно; `code-reviewer` совпадает только с этим типом агента |

305| Содержит любой другой символ | Регулярное выражение JavaScript, без привязки | `^Notebook` совпадает с любым инструментом, начинающимся с Notebook; `mcp__memory__.*` совпадает с каждым инструментом с сервера `memory` |305| Содержит любой другой символ | Регулярное выражение JavaScript без привязки | `^Notebook` совпадает с любым инструментом, имя которого начинается с `Notebook`; `mcp__memory__.*` совпадает с каждым инструментом сервера `memory` |

306 306 

307Фильтр на пути регулярного выражения проверяется с помощью `RegExp.prototype.test` JavaScript, который успешно совпадает в любом месте значения. `Edit.*` совпадает как с `Edit`, так и с `NotebookEdit`; оберните шаблон в `^` и `$`, как в `^Edit$`, когда вам нужно совпадение всей строки.307Фильтр на пути регулярного выражения проверяется с помощью `RegExp.prototype.test` JavaScript, который успешно совпадает в любом месте значения. `Edit.*` совпадает как с `Edit`, так и с `NotebookEdit`; оберните шаблон в `^` и `$`, как в `^Edit$`, когда вам нужно совпадение всей строки.

308 308 


425 425 

426Все совпадающие hooks запускаются параллельно. Если вы определите один и тот же обработчик в более чем одном файле настроек, он запускается один раз. Копия плагина или skill одного и того же обработчика остаётся отдельной.426Все совпадающие hooks запускаются параллельно. Если вы определите один и тот же обработчик в более чем одном файле настроек, он запускается один раз. Копия плагина или skill одного и того же обработчика остаётся отдельной.

427 427 

428Обработчики запускаются в текущем каталоге с окружением Claude Code. Если текущий каталог больше не существует, например worktree или временный каталог, который другая оболочка удалила в середине сеанса, Claude Code запускает command hooks из первого из них, который всё ещё существует: каталог, в котором сеанс начался, корень проекта, ваш домашний каталог или системный временный каталог. Claude Code записывает предупреждение, называющее резервный каталог, в [debug log](#debug-hooks).428Обработчики запускаются в текущем каталоге с окружением Claude Code. Если текущий каталог больше не существует, например это worktree или временный каталог, который другая оболочка удалила посреди сессии, Claude Code запускает командные хуки из первого существующего из следующих каталогов: каталог, в котором началась сессия, корень проекта, ваш домашний каталог или системный временный каталог. Claude Code записывает в [отладочный лог](#debug-hooks) предупреждение с именем резервного каталога. О сессии в worktree, запущенной из десктопного приложения, см. [Что worktree разделяют с основным checkout](/docs/ru/worktrees#what-worktrees-share-with-the-main-checkout).

429 429 

430Переменная окружения `$CLAUDE_CODE_REMOTE` устанавливается на `"true"` в удалённых веб-окружениях и не устанавливается в локальном CLI. Claude Code v2.1.199 и позже устанавливает [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/docs/ru/env-vars) на ID сеанса [Remote Control](/docs/ru/remote-control) пока локальный сеанс имеет активное соединение Remote Control.430Переменная окружения `$CLAUDE_CODE_REMOTE` устанавливается на `"true"` в удалённых веб-окружениях и не устанавливается в локальном CLI. Claude Code v2.1.199 и позже устанавливает [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/docs/ru/env-vars) на ID сеанса [Remote Control](/docs/ru/remote-control) пока локальный сеанс имеет активное соединение Remote Control.

431 431 


644 **Worktrees отличаются.** Если Claude входит в [worktree](/docs/ru/worktrees) во время сеанса, Claude Code держит `${CLAUDE_PROJECT_DIR}` там, где он был, и передаёт путь worktree вашим hooks другим способом:644 **Worktrees отличаются.** Если Claude входит в [worktree](/docs/ru/worktrees) во время сеанса, Claude Code держит `${CLAUDE_PROJECT_DIR}` там, где он был, и передаёт путь worktree вашим hooks другим способом:

645 645 

646 * **`${CLAUDE_PROJECT_DIR}` остаётся на месте**: он всё ещё указывает на корень проекта, где сеанс начался, поэтому команда, такая как `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh`, всё ещё запускает скрипт в основной checkout.646 * **`${CLAUDE_PROJECT_DIR}` остаётся на месте**: он всё ещё указывает на корень проекта, где сеанс начался, поэтому команда, такая как `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh`, всё ещё запускает скрипт в основной checkout.

647 * **`cwd` следует за Claude**: поле `cwd` в [входных JSON](#common-input-fields) hook — это корень worktree после того, как Claude входит в worktree, и новый каталог после того, как Claude запускает `cd`. Прочитайте его, когда hook нужно знать, в каком каталоге Claude работает.647 * **`cwd` следует за Claude**: поле `cwd` во [входных данных JSON](#common-input-fields) хука — это корень worktree после того, как Claude входит в worktree, и новый каталог после того, как Claude выполняет `cd`. Читайте его, когда хуку нужно знать, в каком каталоге работает Claude.

648 

649 О том, куда указывает `${CLAUDE_PROJECT_DIR}` в сессии worktree, запущенной из десктопного приложения, см. [Что worktree разделяют с основным checkout](/docs/ru/worktrees#what-worktrees-share-with-the-main-checkout).

648</Note>650</Note>

649 651 

650Предпочитайте [exec form](#exec-form-and-shell-form) для любого hook, который ссылается на path placeholder. В shell form оберните каждый заполнитель в двойные кавычки.652Предпочитайте [exec form](#exec-form-and-shell-form) для любого hook, который ссылается на path placeholder. В shell form оберните каждый заполнитель в двойные кавычки.


782| `effort` | Объект с полем `level`, содержащим [уровень effort](/docs/ru/model-config#adjust-effort-level), действующий при выполнении хука: `"low"`, `"medium"`, `"high"`, `"xhigh"` или `"max"`. Если вы задали уровень, который активная модель не поддерживает, `level` сообщает уровень, с которым фактически работал Claude Code; в разделе [Настройка уровня effort](/docs/ru/model-config#adjust-effort-level) описано, как выбирается этот уровень. Объект совпадает с полем `effort` [строки состояния](/docs/ru/statusline#available-data). Присутствует для событий, срабатывающих в контексте использования инструментов, таких как `PreToolUse`, `PostToolUse`, `Stop` и `SubagentStop`, если текущая модель поддерживает параметр effort. Уровень также доступен командам хуков и инструменту Bash в виде переменной окружения `$CLAUDE_EFFORT`. |784| `effort` | Объект с полем `level`, содержащим [уровень effort](/docs/ru/model-config#adjust-effort-level), действующий при выполнении хука: `"low"`, `"medium"`, `"high"`, `"xhigh"` или `"max"`. Если вы задали уровень, который активная модель не поддерживает, `level` сообщает уровень, с которым фактически работал Claude Code; в разделе [Настройка уровня effort](/docs/ru/model-config#adjust-effort-level) описано, как выбирается этот уровень. Объект совпадает с полем `effort` [строки состояния](/docs/ru/statusline#available-data). Присутствует для событий, срабатывающих в контексте использования инструментов, таких как `PreToolUse`, `PostToolUse`, `Stop` и `SubagentStop`, если текущая модель поддерживает параметр effort. Уровень также доступен командам хуков и инструменту Bash в виде переменной окружения `$CLAUDE_EFFORT`. |

783| `hook_event_name` | Имя сработавшего события |785| `hook_event_name` | Имя сработавшего события |

784 786 

785При запуске с `--agent` или внутри субагента включаются два дополнительных поля:787`agent_id` и `agent_type` сообщают вашему скрипту, в каком агенте сработал хук, например в субагенте, [участнике команды, работающем в том же процессе](/docs/ru/agent-teams#choose-a-display-mode), или агенте, выбранном с помощью `--agent`:

786 788 

787| Поле | Описание |789| Поле | Описание |

788| :- | :- |790| :- | :- |

789| `agent_id` | Уникальный идентификатор субагента. Присутствует только тогда, когда хук срабатывает внутри вызова субагента. Используйте его, чтобы отличать вызовы хуков субагента от вызовов основного потока. |791| `agent_id` | Уникальный идентификатор субагента или участника команды в том же процессе, в котором срабатывает хук. |

790| `agent_type` | Имя агента (например, `"Explore"` или `"security-reviewer"`). Присутствует, если сессия использует `--agent` или хук срабатывает внутри субагента. Для субагентов тип субагента имеет приоритет над значением `--agent` сессии. Смотрите [SubagentStart](#subagentstart), чтобы узнать, какие значения сообщают пользовательские субагенты и субагенты плагинов и как написать matcher для имени с областью действия плагина. |792| `agent_type` | Имя агента (например, `"Explore"` или `"security-reviewer"`). Присутствует, если сессия использует `--agent` или хук срабатывает внутри субагента. Для субагентов тип субагента имеет приоритет над значением `--agent` сессии. Смотрите [SubagentStart](#subagentstart), чтобы узнать, какие значения сообщают пользовательские субагенты и субагенты плагинов и как написать matcher для имени с областью действия плагина. |

791 793 

792Только хуки [`SessionStart`](#sessionstart) могут получать поле `model`, и Claude Code не всегда его включает. Хуки [`PreModelSwitch`](#premodelswitch) и [`PostModelSwitch`](#postmodelswitch) вместо этого получают `from_model` и `to_model`, поэтому используйте хук PostModelSwitch, чтобы отслеживать модель при её смене в ходе сессии.794Только хуки [`SessionStart`](#sessionstart) могут получать поле `model`, и Claude Code не всегда его включает. Хуки [`PreModelSwitch`](#premodelswitch) и [`PostModelSwitch`](#postmodelswitch) вместо этого получают `from_model` и `to_model`, поэтому используйте хук PostModelSwitch, чтобы отслеживать модель при её смене в ходе сессии.


855 857 

856Для большинства событий Claude Code записывает stdout в отладочный лог и не показывает его в транскрипте. Исключения — `UserPromptSubmit`, `UserPromptExpansion`, `SessionStart` и `PostModelSwitch`, для которых Claude Code добавляет обычный текст из stdout как контекст, который Claude может видеть и учитывать.858Для большинства событий Claude Code записывает stdout в отладочный лог и не показывает его в транскрипте. Исключения — `UserPromptSubmit`, `UserPromptExpansion`, `SessionStart` и `PostModelSwitch`, для которых Claude Code добавляет обычный текст из stdout как контекст, который Claude может видеть и учитывать.

857 859 

858Читает ли Claude Code ваш stdout как [вывод JSON](#json-output) или как обычный текст, зависит от того, с чего он начинается и чем заканчивается, без учёта окружающих пробельных символов:860Для хука, который не является [асинхронным](#how-async-hooks-execute), Claude Code разбирает ваш stdout как [вывод JSON](#json-output), если весь вывод представляет собой один объект JSON, вокруг которого нет ничего, кроме пробельных символов, а в остальных случаях обрабатывает его как обычный текст или как ошибку разбора:

859 861 

860* **Начинается с `{` и заканчивается `}`**: Claude Code разбирает его как JSON. Если вывод состоит из двух или более строк, каждая из которых по отдельности разбирается как JSON, и ни одна строка не является объектом [вывода JSON](#json-output), задающим какое-либо поле, Claude Code обрабатывает весь вывод как обычный текст. Если одна из этих строк задаёт поле, весь вывод считается ошибкой разбора.862* **Один объект JSON на одной или нескольких строках**: разбирается как вывод JSON.

861* **Начинается с `{`, но не заканчивается `}`**: Claude Code обрабатывает его как обычный текст.863* **Вывод, который не начинается с `{` или начинается с `{`, но не заканчивается `}`**: обычный текст. По этому правилу массив JSON и строка JSON в кавычках считаются обычным текстом.

862* **Начинается с чего-либо другого**: Claude Code обрабатывает его как обычный текст, включая массив JSON или строку JSON в кавычках.864* **Две или более строк, каждая из которых по отдельности разбирается как JSON, причём первая начинается с `{`, а последняя заканчивается `}`**: обычный текст, если ни одна строка не является объектом вывода JSON, задающим какое-либо поле, и ошибка разбора, если такая строка есть.

865* **Всё остальное, что начинается с `{` и заканчивается `}`, но не является корректным JSON**: ошибка разбора.

863 866 

864Если Claude Code пытается разобрать ваш stdout как JSON и не может или разобранный объект не проходит [проверку схемы](#json-output), запуск считается [неблокирующей ошибкой](#exit-code-output). Уведомление `<hook name> hook error` содержит сообщение о разборе или проверке. Для событий, которые добавляют обычный текст из stdout как контекст, Claude Code не добавляет stdout, который ему не удалось разобрать.867Если Claude Code пытается разобрать ваш stdout как JSON и не может или разобранный объект не проходит [проверку схемы](#json-output), запуск считается [неблокирующей ошибкой](#exit-code-output). Уведомление `<hook name> hook error` содержит сообщение о разборе или проверке. Для событий, которые добавляют обычный текст из stdout как контекст, Claude Code не добавляет stdout, который ему не удалось разобрать.

865 868 


1050 Выберите один подход для каждого хука: либо используйте только коды выхода для сигнализации, либо завершайтесь с кодом 0 и выводите JSON для структурированного управления. Если вы их смешиваете, выход с кодом 2 сохраняет свой [блокирующий эффект](#exit-code-2-behavior-per-event), а Claude Code по-прежнему читает поля JSON, с единственным исключением для elicitation, отмеченным в разделе [Код выхода 2](#exit-code-2).1053 Выберите один подход для каждого хука: либо используйте только коды выхода для сигнализации, либо завершайтесь с кодом 0 и выводите JSON для структурированного управления. Если вы их смешиваете, выход с кодом 2 сохраняет свой [блокирующий эффект](#exit-code-2-behavior-per-event), а Claude Code по-прежнему читает поля JSON, с единственным исключением для elicitation, отмеченным в разделе [Код выхода 2](#exit-code-2).

1051</Note>1054</Note>

1052 1055 

1053Stdout вашего хука должен содержать только объект JSON. Если профиль вашей оболочки выводит текст при запуске, это может помешать разбору JSON. Смотрите [JSON хука не действует](/docs/ru/hooks-guide#hook-json-has-no-effect) в руководстве по устранению неполадок.1056Выводите в stdout только объект JSON. Для хука, который не является [асинхронным](#how-async-hooks-execute), любой другой текст там, например строка, которую профиль вашей оболочки выводит при запуске, мешает Claude Code прочитать объект как JSON; в разделе [JSON хука не действует](/docs/ru/hooks-guide#hook-json-has-no-effect) показано, как найти и убрать этот текст.

1054 1057 

1055Строки `additionalContext`, `systemMessage` и `initialUserMessage` хука, а также его обычный stdout ограничены 10 000 символов:1058Строки `additionalContext`, `systemMessage` и `initialUserMessage` хука, а также его обычный stdout ограничены 10 000 символов:

1056 1059 


1142 1145 

1143Когда несколько хуков возвращают `additionalContext` для одного события, Claude получает все значения.1146Когда несколько хуков возвращают `additionalContext` для одного события, Claude получает все значения.

1144 1147 

1148Если ваша строка содержит тег `<system-reminder>` или `</system-reminder>`, Claude получает строку, в которой `<` этого тега заменён на `&lt;`.

1149 

1145Если значение превышает 10 000 символов, Claude Code записывает текст в файл в каталоге сессии и вместо этого передаёт Claude путь к файлу с превью, содержащим до 2 000 первых символов. Claude может прочитать файл, но Claude Code не просит его об этом.1150Если значение превышает 10 000 символов, Claude Code записывает текст в файл в каталоге сессии и вместо этого передаёт Claude путь к файлу с превью, содержащим до 2 000 первых символов. Claude может прочитать файл, но Claude Code не просит его об этом.

1146 1151 

1147Используйте `additionalContext` для информации, которую Claude следует знать о текущем состоянии вашего окружения или об только что выполненной операции:1152Используйте `additionalContext` для информации, которую Claude следует знать о текущем состоянии вашего окружения или об только что выполненной операции:


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

1365</h4>1370</h4>

1366 1371 

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

1368 1373 

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

1370 1375 


1399exit 01404exit 0

1400```1405```

1401 1406 

1407Каждая команда Bash выполняет содержимое файла как shell-код перед самой командой, поэтому строка в нём может использовать всё, что вычисляет Bash, например ссылку на `$PATH` в `export PATH="$PATH:./node_modules/.bin"`.

1408 

1409<a id="persisted-variables-in-powershell-commands" />

1410 

1411<h5 id="persisted-variables-in-powershell-commands">

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

1413</h5>

1414 

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

1416 

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

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

1419 

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

1421 

1402<Note>1422<Note>

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

1404</Note>1424</Note>

1405 1425 

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


2030 2050 

2031| Поле | Описание |2051| Поле | Описание |

2032| :- | :- |2052| :- | :- |

2033| `permissionDecision` | `"allow"` пропускает запрос разрешения, за исключением [действий, которые не одобряются автоматически ни в одном режиме](/docs/ru/permission-modes#actions-no-mode-auto-approves), а также `AskUserQuestion` и `ExitPlanMode`, которым нужно [`updatedInput` в паре с ним](#allow-with-updatedinput). `"deny"` предотвращает вызов инструмента. `"ask"` просит пользователя подтвердить. `"defer"` корректно завершает работу, чтобы инструмент можно было возобновить позже. [Правила запрета и подтверждения](/docs/ru/permissions#manage-permissions) всё равно применяются независимо от того, что вернул хук |2053| `permissionDecision` | `"allow"` пропускает запрос разрешения, за исключением [действий, которые не подтверждаются автоматически ни в одном режиме](/docs/ru/permission-modes#actions-no-mode-auto-approves), [чтения с сетевых путей](/docs/ru/permissions#network-paths), а также `AskUserQuestion` и `ExitPlanMode`, которым нужен [`updatedInput` в паре с ним](#allow-with-updatedinput). `"deny"` предотвращает вызов инструмента. `"ask"` просит пользователя подтвердить. `"defer"` корректно завершает работу, чтобы инструмент можно было возобновить позже. [Правила запрета и подтверждения](/docs/ru/permissions#manage-permissions) по-прежнему проверяются независимо от того, что возвращает хук |

2034| `permissionDecisionReason` | Для `"ask"` показывается пользователю в запросе разрешения. Когда Claude Code [отклоняет вызов](/docs/ru/headless#turn-off-permission-prompts-in-unattended-runs) в запуске `-p`, где никто не может ответить на этот запрос, Claude вместо этого читает причину в результате инструмента. Для `"deny"` показывается Claude. Для `"allow"` и `"defer"` записывается только в [лог отладки](#debug-hooks) |2054| `permissionDecisionReason` | Для `"ask"` показывается пользователю в запросе разрешения. Когда Claude Code [отклоняет вызов](/docs/ru/headless#turn-off-permission-prompts-in-unattended-runs) в запуске `-p`, где никто не может ответить на этот запрос, Claude вместо этого читает причину в результате инструмента. Для `"deny"` показывается Claude. Для `"allow"` и `"defer"` записывается только в [лог отладки](#debug-hooks) |

2035| `updatedInput` | Изменяет входные параметры инструмента перед выполнением. Заменяет весь объект входных данных, поэтому включайте неизменённые поля вместе с изменёнными. Claude Code проверяет правила разрешений и [пригодность к автоматическому переводу в фон](/docs/ru/tools-reference#foreground-commands-that-move-to-the-background) команды Bash по входным данным, которые возвращает ваш хук, а не по тем, что отправил Claude. Сочетайте с `"allow"` для автоматического одобрения или с `"ask"`, чтобы показать пользователю изменённые входные данные. Для `"defer"` игнорируется |2055| `updatedInput` | Изменяет входные параметры инструмента перед выполнением. Заменяет весь объект входных данных, поэтому включайте неизменённые поля вместе с изменёнными. Claude Code проверяет правила разрешений и [пригодность к автоматическому переводу в фон](/docs/ru/tools-reference#foreground-commands-that-move-to-the-background) команды Bash по входным данным, которые возвращает ваш хук, а не по тем, что отправил Claude. Сочетайте с `"allow"` для автоматического одобрения или с `"ask"`, чтобы показать пользователю изменённые входные данные. Для `"defer"` игнорируется |

2036| `additionalContext` | Строка, добавляемая в контекст Claude вместе с результатом инструмента. Игнорируется, когда `permissionDecision` равен `"defer"`. См. [Добавление контекста для Claude](#add-context-for-claude) |2056| `additionalContext` | Строка, добавляемая в контекст Claude вместе с результатом инструмента. Игнорируется, когда `permissionDecision` равен `"defer"`. См. [Добавление контекста для Claude](#add-context-for-claude) |


2136Если отложенный инструмент больше недоступен при возобновлении, процесс завершается с `stop_reason: "tool_deferred_unavailable"` и `is_error: true` до срабатывания хука. Это происходит, когда MCP-сервер, предоставлявший инструмент, не подключён в возобновлённой сессии. Данные `deferred_tool_use` всё равно включаются, чтобы вы могли определить, какой инструмент пропал.2156Если отложенный инструмент больше недоступен при возобновлении, процесс завершается с `stop_reason: "tool_deferred_unavailable"` и `is_error: true` до срабатывания хука. Это происходит, когда MCP-сервер, предоставлявший инструмент, не подключён в возобновлённой сессии. Данные `deferred_tool_use` всё равно включаются, чтобы вы могли определить, какой инструмент пропал.

2137 2157 

2138<Note>2158<Note>

2139 Чтобы возобновить отложенную сессию в режиме планирования, передайте [`--permission-prompt-tool`](/docs/ru/cli-reference#cli-flags) вместе с `--resume`, чтобы Claude Code мог представить план на утверждение. Если вы передаёте некоторые другие флаги запуска, возобновлённый запуск не возвращается в режим планирования; см. [Возобновление в режиме планирования с `-p`](/docs/ru/sessions#resume-in-plan-mode-with-p). Требуется Claude Code v2.1.246 или новее.2159 Чтобы возобновить отложенную сессию в режиме планирования, передайте [`--permission-prompt-tool`](/docs/ru/cli-reference#cli-flags) вместе с `--resume`, чтобы Claude Code мог представить план на утверждение. Другие условия см. в разделе [Возобновление в режиме планирования с `-p`](/docs/ru/sessions#resume-in-plan-mode-with-p). Требуется Claude Code v2.1.246 или новее.

2140 2160 

2141 При возобновлении с `-p` Claude Code не восстанавливает никакой другой сохранённый режим разрешений. Он запускается в том режиме разрешений, в котором запустился бы новый запуск `claude -p`, поэтому снова передайте `--permission-mode` или `--dangerously-skip-permissions`, если отложенная сессия их использовала. При возобновлении с `claude --resume <session-id>` без `-p` Claude Code восстанавливает сохранённый режим разрешений, за исключениями, перечисленными в разделе [режим разрешений при возобновлении](/docs/ru/sessions#permission-mode-on-resume).2161 При возобновлении с `-p` Claude Code не восстанавливает никакой другой сохранённый режим разрешений. Он запускается в том режиме разрешений, в котором запустился бы новый запуск `claude -p`, поэтому снова передайте `--permission-mode` или `--dangerously-skip-permissions`, если отложенная сессия их использовала. При возобновлении с `claude --resume <session-id>` без `-p` Claude Code восстанавливает сохранённый режим разрешений, за исключениями, перечисленными в разделе [режим разрешений при возобновлении](/docs/ru/sessions#permission-mode-on-resume).

2142</Note>2162</Note>


4304 4324 

4305После выхода фонового процесса Claude Code доставляет поля `additionalContext` и `systemMessage` из JSON ответа hook к Claude на следующем ходу разговора. В отличие от `systemMessage` синхронного hook, ни одно из этих полей не показывается вам.4325После выхода фонового процесса Claude Code доставляет поля `additionalContext` и `systemMessage` из JSON ответа hook к Claude на следующем ходу разговора. В отличие от `systemMessage` синхронного hook, ни одно из этих полей не показывается вам.

4306 4326 

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

4328 

4329* **Единственным содержимым stdout**: когда ответ — единственный текст в stdout, он может занимать несколько строк, например отформатированный вывод `jq`. Для ответа на нескольких строках требуется Claude Code v2.1.295 или новее.

4330* **На отдельной строке**: асинхронный хук может выводить в stdout другой текст, если ответ целиком умещается на отдельной строке, например при использовании `jq -c`.

4331 

4307Claude Code проверяет, что JSON ответ соответствует той же [схеме выходных данных](#json-output), что и синхронные hooks, и отбрасывает любое поле, значение которого имеет неправильный тип, например `systemMessage`, который не является строкой, вместо его доставки. Запустите с `--debug` для просмотра предупреждения, называющего каждое отброшенное поле. До версии v2.1.202 неправильно сформированный JSON выход из асинхронного hook мог привести к сбою сеанса, и сбой повторялся каждый раз при возобновлении сеанса.4332Claude Code проверяет, что JSON ответ соответствует той же [схеме выходных данных](#json-output), что и синхронные hooks, и отбрасывает любое поле, значение которого имеет неправильный тип, например `systemMessage`, который не является строкой, вместо его доставки. Запустите с `--debug` для просмотра предупреждения, называющего каждое отброшенное поле. До версии v2.1.202 неправильно сформированный JSON выход из асинхронного hook мог привести к сбою сеанса, и сбой повторялся каждый раз при возобновлении сеанса.

4308 4333 

4309Уведомления о завершении асинхронного hook подавляются по умолчанию. Чтобы их увидеть, включите подробный режим с помощью `Ctrl+O` или запустите Claude Code с `--verbose`.4334Уведомления о завершении асинхронного hook подавляются по умолчанию. Чтобы их увидеть, включите подробный режим с помощью `Ctrl+O` или запустите Claude Code с `--verbose`.


44572026-07-19T02:03:24.382Z [DEBUG] "Hook PostToolUse:Write (PostToolUse) success:\nhook-ran"44822026-07-19T02:03:24.382Z [DEBUG] "Hook PostToolUse:Write (PostToolUse) success:\nhook-ran"

4458```4483```

4459 4484 

4485Чтобы найти медленный хук, ищите в логе строки `Hooks:`, которые заканчиваются длительностью. В Claude Code v2.1.296 или новее каждый командный хук на событии инструмента, `UserPromptSubmit`, `SessionStart`, `Stop` и ряде других событий оставляет такую строку по завершении, независимо от того, что он вывел. Строка содержит имя события, соединённое двоеточием с именем инструмента или другим значением, по которому сработал хук, затем команду хука в квадратных скобках, плагин, из которого он получен (если есть), то, чем завершился запуск, и его длительность, например `Hooks: PostToolUse:Write [.claude/hooks/log-write.sh] finished with status 0 (31ms)`. Запуск также может завершиться как `timed out after <N>ms`, `cancelled`, `moved to the background` или `failed to start`. На некоторых событиях, таких как `Notification`, `SessionEnd` и `PreCompact`, командный хук вместо этого оставляет строку `completed with status` без длительности.

4486 

4460Для более детальной информации о совпадении hooks установите `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` для просмотра дополнительных строк логирования, таких как количество совпадений фильтра hook и совпадение запроса.4487Для более детальной информации о совпадении hooks установите `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` для просмотра дополнительных строк логирования, таких как количество совпадений фильтра hook и совпадение запроса.

4461 4488 

4462Для устранения неполадок распространённых проблем, таких как hooks, которые не срабатывают, Stop hooks, которые продолжают блокировать, или ошибки конфигурации, см. [Limitations and troubleshooting](/docs/ru/hooks-guide#limitations-and-troubleshooting) в руководстве. Для более широкого диагностического пошагового руководства, охватывающего `/context`, `/doctor` и приоритет параметров, см. [Debug your config](/docs/ru/debug-your-config).4489Для устранения неполадок распространённых проблем, таких как hooks, которые не срабатывают, Stop hooks, которые продолжают блокировать, или ошибки конфигурации, см. [Limitations and troubleshooting](/docs/ru/hooks-guide#limitations-and-troubleshooting) в руководстве. Для более широкого диагностического пошагового руководства, охватывающего `/context`, `/doctor` и приоритет параметров, см. [Debug your config](/docs/ru/debug-your-config).

hooks-guide.md +15 −7

Details

664 664 

665На `PreToolUse` Claude Code обрабатывает каждое значение `permissionDecision` следующим образом:665На `PreToolUse` Claude Code обрабатывает каждое значение `permissionDecision` следующим образом:

666 666 

667* `"allow"`: пропустить интерактивный запрос разрешения. Правила отказа и запроса, включая управляемые списки отказов предприятия, по-прежнему применяются, как и запросы для инструментов MCP, отмеченных [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), и для инструментов соединителя [которые ваша организация установила на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) в сеансах, где эта настройка достигает Claude Code667* `"allow"`: пропустить интерактивный запрос разрешения. Правила запрета и запроса, включая управляемые списки запретов предприятия, по-прежнему применяются, как и запросы на чтение из [сетевых путей](/docs/ru/permissions#network-paths), для инструментов MCP, помеченных [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), и для инструментов коннекторов, [для которых ваша организация установила `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, где эта настройка доходит до Claude Code

668* `"deny"`: отменить вызов инструмента и отправить причину Claude668* `"deny"`: отменить вызов инструмента и отправить причину Claude

669* `"ask"`: показать запрос разрешения пользователю как обычно669* `"ask"`: показать запрос разрешения пользователю как обычно

670 670 


1015 1015 

1016Hooks `PreToolUse` срабатывают перед любой проверкой режима разрешений в каждом [режиме разрешений](/docs/ru/permission-modes), включая `dontAsk`. Hook, возвращающий `permissionDecision: "deny"`, блокирует инструмент даже в режиме `bypassPermissions` или с `--dangerously-skip-permissions`. Это позволяет вам применять политику, которую пользователи не могут обойти, изменив свой режим разрешений.1016Hooks `PreToolUse` срабатывают перед любой проверкой режима разрешений в каждом [режиме разрешений](/docs/ru/permission-modes), включая `dontAsk`. Hook, возвращающий `permissionDecision: "deny"`, блокирует инструмент даже в режиме `bypassPermissions` или с `--dangerously-skip-permissions`. Это позволяет вам применять политику, которую пользователи не могут обойти, изменив свой режим разрешений.

1017 1017 

1018Обратное неверно: hook, возвращающий `"allow"`, не обходит правила отказа из параметров, и он не может подавить запрос для инструментов MCP, отмеченных [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), или для инструментов соединителя [которые ваша организация установила на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) в сеансах, где эта настройка достигает Claude Code. Hooks в файлах параметров и в `hooks/hooks.json` плагина могут ужесточить ограничения, но не ослабить их сверх того, что разрешают правила разрешений.1018Обратное неверно: хук, возвращающий `"allow"`, не обходит правила запрета из настроек и не может подавить запрос для чтения из [сетевых путей](/docs/ru/permissions#network-paths), для инструментов MCP, отмеченных [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), или для инструментов коннекторов, [которые ваша организация установила на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, где эта настройка достигает Claude Code. Хуки в файлах настроек и в `hooks/hooks.json` плагина могут ужесточить ограничения, но не ослабить их сверх того, что разрешают правила разрешений.

1019 1019 

1020Установленный вами [mod](/docs/ru/plugins/mods/overview), который обрабатывает `tool.check`, может одобрить вызов, заблокированный вашим хуком `PreToolUse`, если только этот хук не находится в управляемых настройках. В разделе [Расширение разрешений с помощью хуков](/docs/ru/permissions#extend-permissions-with-hooks) перечислено, какие правила имеют приоритет над mod.1020Установленный вами [mod](/docs/ru/plugins/mods/overview), который обрабатывает `tool.check`, может одобрить вызов, заблокированный вашим хуком `PreToolUse`, если только этот хук не находится в управляемых настройках. В разделе [Расширение разрешений с помощью хуков](/docs/ru/permissions#extend-permissions-with-hooks) перечислено, какие правила имеют приоритет над mod.

1021 1021 


1083 1083 

1084Ваш hook выводит действительный JSON, но решение не вступает в силу и в стенограмме не появляется никакой ошибки. Проверьте, какая причина применима:1084Ваш hook выводит действительный JSON, но решение не вступает в силу и в стенограмме не появляется никакой ошибки. Проверьте, какая причина применима:

1085 1085 

1086* **Дополнительный вывод перед JSON**: что-то ещё записывает в stdout первым, обычно безусловный `echo` в вашем профиле оболочки, поэтому вывод больше не начинается с `{` и Claude Code не анализирует его как JSON. Причина и исправление следуют после этого списка.1086* **Дополнительный вывод перед JSON**: что-то ещё записывает в stdout раньше, обычно безусловный `echo` в вашем профиле оболочки, поэтому вывод больше не начинается с `{`. См. [Вывод профиля оболочки перед JSON](#shell-profile-output-before-the-json).

1087* **Поле на неправильном уровне**: сравните размещение каждого поля с форматом [JSON output](/docs/ru/hooks#json-output). Например, `permissionDecision` должен находиться внутри `hookSpecificOutput`, а не на верхнем уровне.1087* **Поле на неправильном уровне**: сравните размещение каждого поля с форматом [JSON output](/docs/ru/hooks#json-output). Например, `permissionDecision` должен находиться внутри `hookSpecificOutput`, а не на верхнем уровне. См. [Поля на неправильном уровне](#fields-at-the-wrong-level).

1088 1088 

1089Когда Claude Code запускает hook-команду в форме shell (без `args`), он порождает `sh -c` на macOS и Linux, Git Bash на Windows, или PowerShell, когда Git Bash не установлен по умолчанию. Эта оболочка неинтерактивна, но Git Bash и некоторые конфигурации, такие как `BASH_ENV`, указывающий на `~/.bashrc`, всё ещё источают ваш профиль. Если этот профиль содержит безусловные операторы `echo`, вывод добавляется к JSON вашего hook:1089<h4 id="shell-profile-output-before-the-json">

1090 Вывод профиля оболочки перед JSON

1091</h4>

1092 

1093Хуки запускаются в неинтерактивных оболочках, но Git Bash и некоторые конфигурации, например `BASH_ENV`, указывающий на `~/.bashrc`, всё равно загружают ваш профиль, и всё, что профиль выводит, попадает в stdout раньше JSON вашего хука:

1090 1094 

1091```text theme={null}1095```text theme={null}

1092Shell ready on arm641096Shell ready on arm64

1093{"decision": "block", "reason": "Not allowed"}1097{"decision": "block", "reason": "Not allowed"}

1094```1098```

1095 1099 

1096Объединённый вывод больше не начинается с `{`, поэтому Claude Code рассматривает весь stdout как простой текст и игнорирует JSON. При выходе 0 ничего не сообщается в стенограмме; попытка анализа записывается только в [журнал отладки](/docs/ru/hooks#debug-hooks). Чтобы исправить это, оберните операторы echo в вашем профиле оболочки, чтобы они запускались только в интерактивных оболочках:1100Если хук не является [асинхронным](/docs/ru/hooks#how-async-hooks-execute), Claude Code воспринимает вывод, который не начинается с `{`, как простой текст, поэтому ваш JSON игнорируется. Поскольку хук завершился с кодом 0, в транскрипте тоже не отображается никакой ошибки. Чтобы проверить эту причину, запустите Claude Code с `claude --debug`, вызовите срабатывание хука и найдите в [логе отладки](/docs/ru/hooks#debug-hooks) строку `Hook output does not start with {`. Чтобы исправить это, оберните операторы `echo` в вашем профиле так, чтобы они выполнялись только в интерактивных оболочках:

1097 1101 

1098```bash theme={null}1102```bash theme={null}

1099# В ~/.zshrc или ~/.bashrc1103# В ~/.zshrc или ~/.bashrc


1104 1108 

1105Переменная `$-` содержит флаги оболочки, и `i` означает интерактивный. Hooks запускаются в неинтерактивных оболочках, поэтому echo пропускается.1109Переменная `$-` содержит флаги оболочки, и `i` означает интерактивный. Hooks запускаются в неинтерактивных оболочках, поэтому echo пропускается.

1106 1110 

1111<h4 id="fields-at-the-wrong-level">

1112 Поля на неправильном уровне

1113</h4>

1114 

1107Когда ваш hook возвращает `permissionDecision` или `additionalContext` на верхнем уровне вместо внутри `hookSpecificOutput`, JSON всё ещё анализируется, и Claude Code игнорирует неправильно размещённые поля без сообщения об ошибке. Чтобы увидеть, какие поля он игнорировал, запустите Claude Code с `claude --debug` и найдите в [журнале отладки](/docs/ru/hooks#debug-hooks) `Hook JSON output had unrecognized keys`.1115Когда ваш hook возвращает `permissionDecision` или `additionalContext` на верхнем уровне вместо внутри `hookSpecificOutput`, JSON всё ещё анализируется, и Claude Code игнорирует неправильно размещённые поля без сообщения об ошибке. Чтобы увидеть, какие поля он игнорировал, запустите Claude Code с `claude --debug` и найдите в [журнале отладки](/docs/ru/hooks#debug-hooks) `Hook JSON output had unrecognized keys`.

1108 1116 

1109<h3 id="check-what-a-hook-did">1117<h3 id="check-what-a-hook-did">


1119 1127 

1120Чтобы узнать результат для конкретного кода выхода и stdout, включая исключения для отдельных событий, см. раздел [Exit code output](/docs/ru/hooks#exit-code-output) справочника.1128Чтобы узнать результат для конкретного кода выхода и stdout, включая исключения для отдельных событий, см. раздел [Exit code output](/docs/ru/hooks#exit-code-output) справочника.

1121 1129 

1122Для получения полных сведений о выполнении, включая коды выхода хуков, stdout и stderr, прочитайте лог отладки. Запустите Claude Code с `claude --debug-file /tmp/claude.log`, чтобы записывать лог по известному пути, затем выполните `tail -f /tmp/claude.log` в другом терминале. Если вы запустили Claude Code без этого флага, выполните `/debug` во время сессии, чтобы включить логирование и узнать путь к логу.1130Для получения полных сведений о выполнении, включая коды выхода хуков, stdout и stderr, прочитайте [лог отладки](/docs/ru/hooks#debug-hooks). Запустите Claude Code с `claude --debug-file /tmp/claude.log`, чтобы записывать лог по известному пути, затем выполните `tail -f /tmp/claude.log` в другом терминале. Если вы запустили Claude Code без этого флага, выполните `/debug` во время сессии, чтобы включить логирование и узнать путь к логу.

1123 1131 

1124<h2 id="learn-more">1132<h2 id="learn-more">

1125 Узнайте больше1133 Узнайте больше

Details

22 22 

23| Сочетание клавиш | Описание | Контекст |23| Сочетание клавиш | Описание | Контекст |

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

25| `Ctrl+C` | Прерывание или очистка ввода | Прерывает выполняемую операцию. Если ничего не выполняется, первое нажатие очищает ввод подсказки, а второе нажатие завершает Claude Code |25| `Ctrl+C` | Прерывание или очистка ввода | Прерывает выполняемую операцию. Если ничего не выполняется, первое нажатие очищает ввод промпта, а второе нажатие завершает Claude Code. Нажмите `Up`, пока промпт ещё пуст, чтобы вернуть очищенный черновик; для этого требуется Claude Code v2.1.288 или более поздней версии |

26| `Ctrl+X Ctrl+K` | Остановить все работающие [фоновые субагенты](/docs/ru/sub-agents#run-subagents-in-foreground-or-background) в этой сессии и отключить [автоматические ответы на комментарии к артефактам](/docs/ru/artifacts#let-claude-reply-to-comments-on-its-own) до конца сессии. Нажмите дважды в течение 3 секунд для подтверждения. Сочетание можно нажать, даже когда открыт запрос разрешения фонового субагента | Управление субагентами |26| `Ctrl+X Ctrl+K` | Остановить все работающие [фоновые субагенты](/docs/ru/sub-agents#run-subagents-in-foreground-or-background) в этой сессии и отключить [автоматические ответы на комментарии к артефактам](/docs/ru/artifacts#let-claude-reply-to-comments-on-its-own) до конца сессии. Нажмите дважды в течение 3 секунд для подтверждения. Сочетание можно нажать, даже когда открыт запрос разрешения фонового субагента | Управление субагентами |

27| `Ctrl+D` | Выход из сеанса Claude Code | Первое нажатие показывает подсказку подтверждения, а второе нажатие в течение 800 мс завершает работу. Когда подсказка содержит текст, `Ctrl+D` удаляет символ после курсора |27| `Ctrl+D` | Выход из сеанса Claude Code | Первое нажатие показывает подсказку подтверждения, а второе нажатие в течение 800 мс завершает работу. Когда подсказка содержит текст, `Ctrl+D` удаляет символ после курсора |

28| `Ctrl+G` или `Ctrl+X Ctrl+E` | Открыть в текстовом редакторе по умолчанию | Отредактируйте свою подсказку или пользовательский ответ в текстовом редакторе по умолчанию. `Ctrl+X Ctrl+E` — это встроенное в readline сочетание. Включите **Show last response in external editor** в `/config`, чтобы добавить предыдущий ответ Claude в виде контекста с комментариями `#` выше вашей подсказки; Claude Code удаляет блок комментариев при сохранении |28| `Ctrl+G` или `Ctrl+X Ctrl+E` | Открыть в текстовом редакторе по умолчанию | Отредактируйте свою подсказку или пользовательский ответ в текстовом редакторе по умолчанию. `Ctrl+X Ctrl+E` — это встроенное в readline сочетание. Включите **Show last response in external editor** в `/config`, чтобы добавить предыдущий ответ Claude в виде контекста с комментариями `#` выше вашей подсказки; Claude Code удаляет блок комментариев при сохранении |


442 442 

443Claude Code отменяет команды оболочки из очереди только когда поле ввода пусто и у вас нет ничего другого в очереди, и оно переключает поле ввода в режим оболочки при этом. В противном случае оно оставляет их в очереди, перечисленными с префиксом `!`, и выполняет их после завершения хода.443Claude Code отменяет команды оболочки из очереди только когда поле ввода пусто и у вас нет ничего другого в очереди, и оно переключает поле ввода в режим оболочки при этом. В противном случае оно оставляет их в очереди, перечисленными с префиксом `!`, и выполняет их после завершения хода.

444 444 

445Если вы забираете текст из очереди, пока `←` [ожидает перевода сессии в фоновый режим](/docs/ru/agent-view#switch-sessions-without-leaving-the-terminal), текст остается в поле ввода, а Claude Code отменяет переключение. Если вы забираете его в момент перемещения сессии, текст исчезает вместе с экраном переднего плана: он не был отправлен. Каждое забранное вами сообщение сохраняется как отдельная запись в [истории команд](#command-history). Чтобы восстановить его, снова откройте сессию и нажмите `Up` в пустом промпте, когда в очереди ничего нет.

446 

445<h2 id="prompt-suggestions">447<h2 id="prompt-suggestions">

446 Предложения подсказок448 Предложения подсказок

447</h2>449</h2>

Details

299 299 

300[Claude Code в Slack](/docs/ru/slack) и [облачные сессии](/docs/ru/claude-code-on-the-web) не являются частью развёртывания шлюза. Переменные шлюза, установленные в конфигурации окружения облачной сессии, не применяются. Если ваш трафик должен оставаться на шлюзе, не включайте эти интерфейсы для таких пользователей.300[Claude Code в Slack](/docs/ru/slack) и [облачные сессии](/docs/ru/claude-code-on-the-web) не являются частью развёртывания шлюза. Переменные шлюза, установленные в конфигурации окружения облачной сессии, не применяются. Если ваш трафик должен оставаться на шлюзе, не включайте эти интерфейсы для таких пользователей.

301 301 

302[Remote Control](/docs/ru/remote-control) и [голосовая диктовка](/docs/ru/voice-dictation) оба полагаются на идентичность claude.ai: Remote Control для связи живого сеанса с вашей учетной записью, и голосовая диктовка для достижения конечной точки транскрипции claude.ai. Они недоступны, пока активны `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper`. Remote Control также отключен, пока `ANTHROPIC_BASE_URL` указывает на хост, не принадлежащий Anthropic, поэтому входа с claude.ai недостаточно само по себе. До версии 2.1.196 не-Anthropic базовый URL не блокировал Remote Control.302[Remote Control](/docs/ru/remote-control) и [голосовая диктовка](/docs/ru/voice-dictation) полагаются на идентичность claude.ai: Remote Control — для связи активной сессии с вашей учётной записью, а голосовая диктовка — для доступа к эндпоинту транскрипции claude.ai. Они недоступны, пока активны `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper`. Remote Control также отключён, пока `ANTHROPIC_BASE_URL` указывает на хост, не принадлежащий Anthropic, поэтому входа с claude.ai самого по себе недостаточно.

303 303 

304Чтобы восстановить любую из этих функций, войдите с claude.ai и отмените установку переменных шлюза, которые проверяет эта функция. Раздел Remote Control в `claude doctor` называет то, что в настоящее время блокирует Remote Control.304Чтобы восстановить любую из этих функций, войдите с claude.ai и отмените установку переменных шлюза, которые проверяет эта функция. Раздел Remote Control в `claude doctor` называет то, что в настоящее время блокирует Remote Control.

305 305 

mcp.md +4 −4

Details

283 Одобрение серверов проекта и доверие к рабочему пространству283 Одобрение серверов проекта и доверие к рабочему пространству

284</h4>284</h4>

285 285 

286Начиная с версии v2.1.196, `claude mcp list` и `claude mcp get` читают одобрения `.mcp.json` только из файлов настроек, не добавленных в репозиторий, пока вы не доверитесь рабочему пространству, запустив в нём `claude` и приняв диалоговое окно доверия к рабочему пространству. Клонированный репозиторий не может одобрить собственные серверы: [`enableAllProjectMcpServers`](/docs/ru/settings-reference#enableallprojectmcpservers) или [`enabledMcpjsonServers`](/docs/ru/settings-reference#enabledmcpjsonservers), добавленные в `.claude/settings.json` проекта, игнорируются в недоверенной папке, и сервер остаётся в статусе `⏸ Pending approval` вместо подключения и проверки работоспособности.286`claude mcp list` и `claude mcp get` читают одобрения `.mcp.json` только из файлов настроек, не добавленных в репозиторий, пока вы не доверитесь рабочему пространству, запустив в нём `claude` и приняв диалоговое окно доверия к рабочему пространству. Клонированный репозиторий не может одобрить собственные серверы: [`enableAllProjectMcpServers`](/docs/ru/settings-reference#enableallprojectmcpservers) или [`enabledMcpjsonServers`](/docs/ru/settings-reference#enabledmcpjsonservers), добавленные в `.claude/settings.json` проекта, игнорируются в недоверенной папке, и сервер остаётся в статусе `⏸ Pending approval` вместо подключения и проверки работоспособности.

287 287 

288Одобрения из этих источников по-прежнему применяются в недоверенной папке:288Одобрения из этих источников по-прежнему применяются в недоверенной папке:

289 289 


859 859 

860Уведомление объявляет каждый сервер один раз и исключает его из подсчета при последующих запусках, пока этот сервер не подключится и снова не потребует входа. `/mcp` по-прежнему перечисляет каждый сервер, который требует входа.860Уведомление объявляет каждый сервер один раз и исключает его из подсчета при последующих запусках, пока этот сервер не подключится и снова не потребует входа. `/mcp` по-прежнему перечисляет каждый сервер, который требует входа.

861 861 

862В неинтерактивном режиме нет панели `/mcp`, поэтому Claude Code не может запустить поток OAuth для вас. Начиная с v2.1.196, когда настроенный сервер требует аутентификации во время запуска `claude -p` или Agent SDK с включенным [поиском инструментов](#scale-with-mcp-tool-search), что является значением по умолчанию, Claude Code сообщает Claude, что инструменты сервера недоступны, пока вы его не авторизуете. Claude затем может назвать сервер, который требует входа, вместо того чтобы отвечать так, как если бы сервер не был настроен. Завершите вход из интерактивного сеанса с `/mcp` или `claude mcp login <name>`.862В неинтерактивном режиме нет панели `/mcp`, поэтому Claude Code не может запустить поток OAuth за вас. Когда настроенный сервер требует аутентификации во время запуска `claude -p` или Agent SDK с включённым [поиском инструментов](#scale-with-mcp-tool-search), что является значением по умолчанию, Claude Code сообщает Claude, что инструменты сервера недоступны, пока вы его не авторизуете. Claude затем может назвать сервер, который требует входа. Завершите вход из интерактивной сессии с помощью `/mcp` или `claude mcp login <name>`.

863 863 

864Если вы настроили `headers.Authorization` для сервера и сервер отклоняет этот заголовок, Claude Code сообщает о неудачном подключении вместо возврата к OAuth. Проверьте, что токен действителен для конечной точки MCP, или удалите заголовок, чтобы использовать поток OAuth.864Если вы настроили `headers.Authorization` для сервера и сервер отклоняет этот заголовок, Claude Code сообщает о неудачном подключении вместо возврата к OAuth. Проверьте, что токен действителен для конечной точки MCP, или удалите заголовок, чтобы использовать поток OAuth.

865 865 


1048 1048 

1049`oauth.scopes` имеет приоритет над `authServerMetadataUrl` и областями, которые сервер обнаруживает на `/.well-known`. Оставьте его неустановленным, чтобы позволить MCP серверу определить запрашиваемый набор областей.1049`oauth.scopes` имеет приоритет над `authServerMetadataUrl` и областями, которые сервер обнаруживает на `/.well-known`. Оставьте его неустановленным, чтобы позволить MCP серверу определить запрашиваемый набор областей.

1050 1050 

1051Начиная с v2.1.196, когда `oauth.scopes` не установлен, Claude Code запрашивает область, предоставленную заголовком `WWW-Authenticate` сервера или его метаданными защищенного ресурса, и не отправляет параметр `scope`, когда ни один из них не предоставляет его. Он больше не запрашивает полный каталог `scopes_supported` из автоматически обнаруженных метаданных сервера авторизации. Запрос этого каталога заставлял поставщиков идентификации, которые объявляют области только для администраторов или шаблоны, отклонять запрос авторизации с ошибкой `invalid_scope`. Метаданные, полученные из настроенного `authServerMetadataUrl`, по-прежнему предоставляют свой `scopes_supported` как запрашиваемые области.1051Когда `oauth.scopes` не установлен, Claude Code не запрашивает полный каталог `scopes_supported` из автоматически обнаруженных метаданных сервера авторизации. Метаданные, полученные из настроенного `authServerMetadataUrl`, по-прежнему предоставляют свой `scopes_supported` в качестве запрашиваемых scope.

1052 1052 

1053Если сервер авторизации объявляет `offline_access` в `scopes_supported`, Claude Code добавляет его к зафиксированным областям, чтобы токен доступа можно было обновить без нового входа в браузер.1053Если сервер авторизации объявляет `offline_access` в `scopes_supported`, Claude Code добавляет его к зафиксированным областям, чтобы токен доступа можно было обновить без нового входа в браузер.

1054 1054 


1141 1141 

1142Помимо переменных `GIT_CONFIG_KEY_<n>` Git, Claude Code удаляет каждую переменную из вашей среды, чье имя выглядит как учетное данное, такое как имя с `TOKEN`, `SECRET`, `PASSWORD`, `KEY` или `AUTH` в нем в любом регистре, поэтому `ANTHROPIC_API_KEY` и `MY_REGISTRY_TOKEN` оба удаляются. Claude Code также удаляет фиксированный список переменных учетных данных, чьи имена не следуют этому шаблону, такие как `ANTHROPIC_CUSTOM_HEADERS`.1142Помимо переменных `GIT_CONFIG_KEY_<n>` Git, Claude Code удаляет каждую переменную из вашей среды, чье имя выглядит как учетное данное, такое как имя с `TOKEN`, `SECRET`, `PASSWORD`, `KEY` или `AUTH` в нем в любом регистре, поэтому `ANTHROPIC_API_KEY` и `MY_REGISTRY_TOKEN` оба удаляются. Claude Code также удаляет фиксированный список переменных учетных данных, чьи имена не следуют этому шаблону, такие как `ANTHROPIC_CUSTOM_HEADERS`.

1143 1143 

1144Когда это применяется к вашему помощнику, попросите скрипт прочитать его учетное данные из файла или хранилища учетных данных. Если URL сервера [несет живое значение одной из этих переменных](#environment-variable-expansion-in-mcp-json), такой как `MY_REGISTRY_TOKEN`, значение `CLAUDE_CODE_MCP_SERVER_URL`, которое получает помощник, имеет эту часть заменена на `REDACTED` также.1144Если это относится к вашему помощнику, пусть скрипт читает учётные данные из файла или хранилища учётных данных. Если `url` сервера [содержит фактическое значение одной из этих переменных](#environment-variable-expansion-in-mcp-json), например `MY_REGISTRY_TOKEN`, то в значении `CLAUDE_CODE_MCP_SERVER_URL`, которое получает помощник, эта часть также заменяется на `REDACTED`.

1145 1145 

1146<h4 id="trust-a-folder-before-its-headershelper-runs">1146<h4 id="trust-a-folder-before-its-headershelper-runs">

1147 Доверьте папку перед запуском ее headersHelper1147 Доверьте папку перед запуском ее headersHelper

Details

213└── claude_code.tool213└── claude_code.tool

214 ├── claude_code.tool.blocked_on_user214 ├── claude_code.tool.blocked_on_user

215 ├── claude_code.tool.execution215 ├── claude_code.tool.execution

216 └── (инструмент Agent) spans подагента claude_code.llm_request / claude_code.tool216 └── (инструмент Agent) spans субагента claude_code.llm_request / claude_code.tool

217```217```

218 218 

219В сеансах Agent SDK и `claude -p` сам `claude_code.interaction` становится дочерним элементом span вызывающей стороны, когда `TRACEPARENT` установлен в окружении.219В сеансах Agent SDK и `claude -p` сам `claude_code.interaction` становится дочерним элементом span вызывающей стороны, когда `TRACEPARENT` установлен в окружении.


470 Обёртывание значений в кавычки не экранирует пробелы. Например, `org.name="My Company"` приводит к буквальному значению `"My Company"` с включёнными кавычками, а не `My Company`.470 Обёртывание значений в кавычки не экранирует пробелы. Например, `org.name="My Company"` приводит к буквальному значению `"My Company"` с включёнными кавычками, а не `My Company`.

471</Warning>471</Warning>

472 472 

473<h3 id="attribute-telemetry-to-desktop-ssh-sessions">

474 Привязка телеметрии к сессиям Desktop SSH

475</h3>

476 

477Чтобы видеть, на какой удалённой машине выполнялась [сессия Desktop SSH](/docs/ru/desktop#ssh-sessions), укажите имя каждой машины в пользовательском атрибуте. Метрики и события не содержат имени машины, на которой выполнялась сессия.

478 

479На каждой удалённой машине добавьте [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) в блок `env`, который включает телеметрию, в [файле управляемых настроек, который читает сессия](/docs/ru/desktop#managed-settings). Запишите имя явно в файле каждой машины. Claude Code не раскрывает значение, поэтому `host.name=$(hostname)` поступает именно в виде этих символов.

480 

481В следующем примере машине присваивается имя `build-7`:

482 

483```json theme={null}

484{

485 "env": {

486 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

487 "OTEL_METRICS_EXPORTER": "otlp",

488 "OTEL_LOGS_EXPORTER": "otlp",

489 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

490 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317",

491 "OTEL_RESOURCE_ATTRIBUTES": "host.name=build-7"

492 }

493}

494```

495 

496Если переменную больше ничто не задаёт, `host.name` поступает в блоке ресурсов — как в сессиях Desktop SSH, так и в CLI на этой машине. О том, где ещё появляются пользовательские атрибуты, см. [Поддержка организаций с несколькими командами](#multi-team-organization-support).

497 

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

499 

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

501* **Вы экспортировали её в файле входа**: файлы вроде `/etc/profile` читают только оболочки входа (login shell). Значение, которое вы задаёте там через `export`, доходит до Claude Code, запущенного из оболочки входа. Оно не доходит до сессии Desktop SSH, поскольку Desktop запускает Claude Code не через оболочку входа.

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

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

504 

473<h3 id="example-configurations">505<h3 id="example-configurations">

474 Примеры конфигураций506 Примеры конфигураций

475</h3>507</h3>


1747 1779 

1748Все метрики и события экспортируются со следующими атрибутами ресурса:1780Все метрики и события экспортируются со следующими атрибутами ресурса:

1749 1781 

1750* `service.name`: `claude-code` для сеансов терминала, `claude-code-desktop` для сеансов, запущенных с вкладки Code в [приложении Claude Desktop](/docs/ru/desktop)1782* `service.name`: `claude-code` для сессий терминала, `claude-code-desktop` для локальных сессий, запущенных с вкладки Code в [приложении Claude Desktop](/docs/ru/desktop)

1751* `service.version`: Текущая версия Claude Code или версия приложения Desktop для сеансов вкладки Code1783* `service.version`: Текущая версия Claude Code или версия приложения Desktop для локальных сессий вкладки Code

1752* `os.type`: Тип операционной системы (например, `linux`, `darwin`, `windows`)1784* `os.type`: Тип операционной системы (например, `linux`, `darwin`, `windows`)

1753* `os.version`: Строка версии операционной системы1785* `os.version`: Строка версии операционной системы

1754* `host.arch`: Архитектура хоста (например, `amd64`, `arm64`)1786* `host.arch`: Архитектура хоста (например, `amd64`, `arm64`)

1755* `wsl.version`: Номер версии WSL (присутствует только при запуске на Windows Subsystem for Linux)1787* `wsl.version`: Номер версии WSL (присутствует только при запуске на Windows Subsystem for Linux)

1756* Имя счетчика: `com.anthropic.claude_code`1788* Имя счетчика: `com.anthropic.claude_code`

1757 1789 

1758Если ваши конвейеры сборщика или панели мониторинга фильтруют по `service.name = claude-code`, добавьте `claude-code-desktop` в фильтр, чтобы также захватить телеметрию из сеансов вкладки Code.1790Если ваши конвейеры сборщика или панели мониторинга фильтруют по `service.name = claude-code`, добавьте `claude-code-desktop` в фильтр, чтобы также захватить телеметрию из локальных сессий вкладки Code.

1759 1791 

1760<h2 id="roi-measurement-resources">1792<h2 id="roi-measurement-resources">

1761 Ресурсы для измерения ROI1793 Ресурсы для измерения ROI

Details

183 Установите переменные сети в параметрах, а не в оболочке183 Установите переменные сети в параметрах, а не в оболочке

184</h3>184</h3>

185 185 

186Супервизор — это один процесс, общий для каждого терминала. Он наследует окружение той оболочки, которая запустила его первой, и установленный в ОС супервизор вообще не получает окружение оболочки. Если вы экспортируете прокси, путь ЦС или переменную mTLS только в вашей оболочке, она достигает фоновых агентов, когда эта оболочка случайно холодно запустила супервизор, и молча не достигает, когда это сделала другая оболочка.186Супервизор — это один процесс, общий для каждого терминала. Он наследует окружение той оболочки, которая запустила его первой. Если вы экспортируете прокси, путь ЦС или переменную mTLS только в вашей оболочке, она достигает фоновых агентов, когда эта оболочка случайно холодно запустила супервизор, и молча не достигает, когда это сделала другая оболочка.

187 187 

188Поместите те же переменные в блок `env` файла `~/.claude/settings.json` или в [управляемые параметры](/docs/ru/settings). Каждая переменная на этой странице может быть установлена там, и параметры — это единственная конфигурация, которая достигает каждый фоновый сеанс на каждой машине.188Поместите те же переменные в блок `env` файла `~/.claude/settings.json` или в [управляемые параметры](/docs/ru/settings). Каждая переменная на этой странице может быть установлена там, и параметры — это единственная конфигурация, которая достигает каждый фоновый сеанс на каждой машине.

189 189 


196Установите параметр [`processWrapper`](/docs/ru/settings-reference#processwrapper), чтобы добавить префикс супервизору, его рабочим процессам и другим фоновым процессам, перечисленным в разделе [Что охватывает запускатель](/docs/ru/corporate-launcher#what-the-launcher-covers), с помощью вашего запускателя. Эквивалентная переменная окружения [`CLAUDE_CODE_PROCESS_WRAPPER`](/docs/ru/env-vars) имеет приоритет, когда установлены оба варианта, и она подчиняется тому же правилу: доставляйте её через управляемые параметры или `~/.claude/settings.json`, а не через экспорт оболочки. [Запуск Claude Code за корпоративным запускателем](/docs/ru/corporate-launcher) охватывает контракт, который должен удовлетворять запускатель, что он делает и не делает, и как его развернуть.196Установите параметр [`processWrapper`](/docs/ru/settings-reference#processwrapper), чтобы добавить префикс супервизору, его рабочим процессам и другим фоновым процессам, перечисленным в разделе [Что охватывает запускатель](/docs/ru/corporate-launcher#what-the-launcher-covers), с помощью вашего запускателя. Эквивалентная переменная окружения [`CLAUDE_CODE_PROCESS_WRAPPER`](/docs/ru/env-vars) имеет приоритет, когда установлены оба варианта, и она подчиняется тому же правилу: доставляйте её через управляемые параметры или `~/.claude/settings.json`, а не через экспорт оболочки. [Запуск Claude Code за корпоративным запускателем](/docs/ru/corporate-launcher) охватывает контракт, который должен удовлетворять запускатель, что он делает и не делает, и как его развернуть.

197 197 

198<Note>198<Note>

199 Уже запущенный супервизор сохраняет конфигурацию запуска, с которой он начал. После развертывания параметра запускателя запустите [`claude daemon stop --any`](/docs/ru/agent-view#the-supervisor-process), чтобы следующий `claude agents` или `--bg` запустил супервизор, который его соблюдает. Установленный сервис принимает `claude daemon stop` без `--any`.199 Уже запущенный супервизор сохраняет конфигурацию запуска, с которой он начал. После развёртывания настройки запускателя запустите [`claude daemon stop --any`](/docs/ru/agent-view#the-supervisor-process), чтобы следующий `claude agents` или `--bg` запустил супервизор, который её соблюдает.

200</Note>200</Note>

201 201 

202<h2 id="streaming-idle-watchdogs">202<h2 id="streaming-idle-watchdogs">

Details

22| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Чтение, редактирование файлов и распространённые команды файловой системы (`mkdir`, `touch`, `mv`, `cp` и т.д.) | Итерация по коду, который вы проверяете |22| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Чтение, редактирование файлов и распространённые команды файловой системы (`mkdir`, `touch`, `mv`, `cp` и т.д.) | Итерация по коду, который вы проверяете |

23| [`plan`](#analyze-before-you-edit-with-plan-mode) | Чтение, плюс одобренные классификатором команды, когда [режим auto](#eliminate-prompts-with-auto-mode) доступен | Изучение кодовой базы перед её изменением |23| [`plan`](#analyze-before-you-edit-with-plan-mode) | Чтение, плюс одобренные классификатором команды, когда [режим auto](#eliminate-prompts-with-auto-mode) доступен | Изучение кодовой базы перед её изменением |

24| [`auto`](#eliminate-prompts-with-auto-mode) | Всё, с фоновыми проверками безопасности | Длительные задачи, снижение усталости от запросов |24| [`auto`](#eliminate-prompts-with-auto-mode) | Всё, с фоновыми проверками безопасности | Длительные задачи, снижение усталости от запросов |

25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Чтение и предварительно одобренные инструменты; всё, что вызвало бы запрос, отклоняется | Заблокированные CI и скрипты |25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Чтение файлов внутри ваших рабочих каталогов и предварительно одобренные инструменты; всё, что вызвало бы запрос, отклоняется | Заблокированные CI и скрипты |

26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Всё | Только изолированные контейнеры и виртуальные машины |26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Всё | Только изолированные контейнеры и виртуальные машины |

27 27 

28Режим, который проверяет каждое действие, называется **Manual** в CLI, в `claude --help`, в расширениях VS Code и JetBrains, а также в настольном приложении. Его значение конфигурации — `default`, которое используют hooks и интеграции SDK. CLI принимает `manual` как псевдоним везде, где вы вводите значение, например `claude --permission-mode manual` или `"defaultMode": "manual"`.28Режим, который проверяет каждое действие, называется **Manual** в CLI, в `claude --help`, в расширениях VS Code и JetBrains, а также в настольном приложении. Его значение конфигурации — `default`, которое используют hooks и интеграции SDK. CLI принимает `manual` как псевдоним везде, где вы вводите значение, например `claude --permission-mode manual` или `"defaultMode": "manual"`.


466 Первое чтение за пределами рабочих каталогов466 Первое чтение за пределами рабочих каталогов

467</h3>467</h3>

468 468 

469Пока [`permissions.blockReadsOutsideWorkingDirectories`](/docs/ru/settings-reference#permissions-blockreadsoutsideworkingdirectories) отключена, чтение файлов в авторежиме выполняется без запроса разрешения, в том числе за пределами [рабочих каталогов](/docs/ru/permissions#working-directories). Когда Claude впервые использует инструмент Read, Grep или Glob для пути за их пределами, Claude Code спрашивает, разрешить ли это чтение.469Пока [`permissions.blockReadsOutsideWorkingDirectories`](/docs/ru/settings-reference#permissions-blockreadsoutsideworkingdirectories) отключена, чтение файлов, кроме [чтения из сетевых путей](/docs/ru/permissions#network-paths), в авторежиме выполняется без запроса разрешения, в том числе за пределами [рабочих каталогов](/docs/ru/permissions#working-directories). Когда Claude впервые использует инструмент Read, Grep или Glob для пути за их пределами, Claude Code спрашивает, разрешить ли это чтение.

470 470 

471Запрос не появляется в неинтерактивных запусках `-p` и фоновых сессиях; чтение там выполняется как прежде.471Запрос не появляется в неинтерактивных запусках `-p` и фоновых сессиях; чтение там выполняется как прежде.

472 472 


530 Каждое действие проходит через фиксированный порядок принятия решений. Срабатывает первый подходящий шаг:530 Каждое действие проходит через фиксированный порядок принятия решений. Срабатывает первый подходящий шаг:

531 531 

532 1. Действия, соответствующие вашим [правилам allow, ask или deny](/docs/ru/permissions#manage-permissions), разрешаются сразу, со следующими исключениями:532 1. Действия, соответствующие вашим [правилам allow, ask или deny](/docs/ru/permissions#manage-permissions), разрешаются сразу, со следующими исключениями:

533 * Запись в [защищённые пути](#protected-paths) направляется классификатору, даже если подходит правило allow533 * Запись в [защищённые пути](#protected-paths) направляется классификатору, даже если подходит правило allow. Если защищённый путь — это файл, на который указывает файл настроек, являющийся символической ссылкой, запись может вместо этого вызвать запрос подтверждения, как описано в списке [защищённых путей](#protected-paths)

534 * Никакое правило allow не одобряет удаления с помощью `rm` и `rmdir`, нацеленные на [критический путь](#critical-paths)534 * Никакое правило allow не одобряет удаления с помощью `rm` и `rmdir`, нацеленные на [критический путь](#critical-paths)

535 * Инструменты MCP, помеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), запрашивают у вас подтверждение напрямую, даже если подходит правило allow; то же самое делают инструменты коннекторов, для которых [ваша организация установила `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, куда эта настройка доходит до Claude Code535 * Инструменты MCP, помеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), запрашивают у вас подтверждение напрямую, даже если подходит правило allow; то же самое делают инструменты коннекторов, для которых [ваша организация установила `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, куда эта настройка доходит до Claude Code

536 * Shell-команда, содержащая [разрешённые домены для отдельной команды](/docs/ru/sandboxing#per-command-allowed-domains-in-auto-mode), также направляется классификатору, даже если подходит правило allow, потому что правило одобряет команду, а не её хосты536 * Shell-команда, содержащая [разрешённые домены для отдельной команды](/docs/ru/sandboxing#per-command-allowed-domains-in-auto-mode), также направляется классификатору, даже если подходит правило allow, потому что правило одобряет команду, а не её хосты

537 * Правила ask, сопоставляемые с содержимым команды, например `Bash(git push *)`, приводят к запросу разрешения537 * Правила ask, сопоставляемые с содержимым команды, например `Bash(git push *)`, приводят к запросу разрешения

538 * Запись, которую [проверка символических ссылок](/docs/ru/permissions#symlinks) разрешает в защищённый путь, вызывает запрос подтверждения, если путь, запрошенный Claude, сам по себе не защищён538 * Запись, которую [проверка символических ссылок](/docs/ru/permissions#symlinks) разрешает в защищённый путь, вызывает запрос подтверждения, если путь, запрошенный Claude, сам по себе не защищён

539 * Чтение из [сетевого пути](/docs/ru/permissions#network-paths) вызывает запрос подтверждения, даже если подходит правило allow

539 2. Действия только для чтения и редактирование файлов в вашем рабочем каталоге одобряются автоматически, за исключением записи в [защищённые пути](#protected-paths) и [первого чтения за пределами рабочих каталогов](#first-read-outside-the-working-directories), которое вызывает запрос подтверждения540 2. Действия только для чтения и редактирование файлов в вашем рабочем каталоге одобряются автоматически, за исключением записи в [защищённые пути](#protected-paths) и [первого чтения за пределами рабочих каталогов](#first-read-outside-the-working-directories), которое вызывает запрос подтверждения

540 * В сессии с [проверкой классификатором на стороне сервера](#server-side-classifier-review) shell-команды только для чтения и [выполняемые в песочнице](/docs/ru/sandboxing#sandbox-modes) ждут этой проверки и блокируются, если она их помечает541 * В сессии с [проверкой классификатором на стороне сервера](#server-side-classifier-review) shell-команды только для чтения и [выполняемые в песочнице](/docs/ru/sandboxing#sandbox-modes) ждут этой проверки и блокируются, если она их помечает

541 * Запись внутри вашего рабочего каталога, которую [проверка символических ссылок](/docs/ru/permissions#symlinks) разрешает в расположение за его пределами, вызывает запрос подтверждения542 * Запись внутри вашего рабочего каталога, которую [проверка символических ссылок](/docs/ru/permissions#symlinks) разрешает в расположение за его пределами, вызывает запрос подтверждения

542 * Когда Claude читает [артефакт, созданный кем-то другим](/docs/ru/artifacts#read-an-artifact-shared-with-you), применяются случаи подтверждения, перечисленные в том разделе543 * Когда Claude читает [артефакт, созданный кем-то другим](/docs/ru/artifacts#read-an-artifact-shared-with-you), применяются случаи подтверждения, перечисленные в том разделе

544 * Чтение из [сетевого пути](/docs/ru/permissions#network-paths) вызывает запрос подтверждения

543 3. Всё остальное направляется классификатору, кроме [удалений критических путей](#critical-paths) при их обработке по умолчанию. Инструменты коннекторов и инструменты MCP с `requiresUserInteraction`, которые запрашивают подтверждение напрямую на шаге 1, тоже никогда не доходят до классификатора, поэтому ни подтверждение, требуемое организацией, ни шаг получения согласия не одобряются автоматически545 3. Всё остальное направляется классификатору, кроме [удалений критических путей](#critical-paths) при их обработке по умолчанию. Инструменты коннекторов и инструменты MCP с `requiresUserInteraction`, которые запрашивают подтверждение напрямую на шаге 1, тоже никогда не доходят до классификатора, поэтому ни подтверждение, требуемое организацией, ни шаг получения согласия не одобряются автоматически

544 4. Если классификатор блокирует действие, Claude получает причину. В большинстве сессий причина указывает правило, с которым совпал классификатор, например `[Data Exfiltration]`, а не даёт письменное объяснение; см. [Просмотр отклонений](/docs/ru/auto-mode-config#review-denials)546 4. Если классификатор блокирует действие, Claude получает причину. В большинстве сессий причина указывает правило, с которым совпал классификатор, например `[Data Exfiltration]`, а не даёт письменное объяснение; см. [Просмотр отклонений](/docs/ru/auto-mode-config#review-denials)

545 547 


593 595 

594Claude Code отклоняет вызовы, соответствующие вашим явным [правилам `ask`](/docs/ru/permissions#manage-permissions), а не запрашивает их. Он также отклоняет встроенный инструмент `AskUserQuestion`, даже если ваши правила разрешения совпадают с ним, и делает то же самое с инструментами коннекторов, для которых [ваша организация установила `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, где эта настройка доходит до Claude Code. Он таким же образом отклоняет инструменты MCP, отмеченные [`_meta["anthropic/requiresUserInteraction"]`](/docs/ru/mcp#require-approval-for-a-specific-tool), потому что их карточка подтверждения требует ответа, который этот режим никогда не собирает.596Claude Code отклоняет вызовы, соответствующие вашим явным [правилам `ask`](/docs/ru/permissions#manage-permissions), а не запрашивает их. Он также отклоняет встроенный инструмент `AskUserQuestion`, даже если ваши правила разрешения совпадают с ним, и делает то же самое с инструментами коннекторов, для которых [ваша организация установила `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, где эта настройка доходит до Claude Code. Он таким же образом отклоняет инструменты MCP, отмеченные [`_meta["anthropic/requiresUserInteraction"]`](/docs/ru/mcp#require-approval-for-a-specific-tool), потому что их карточка подтверждения требует ответа, который этот режим никогда не собирает.

595 597 

596Удаления `rm` и `rmdir`, нацеленные на [критический путь](#critical-paths), такие как `rm -rf /` и `rm -rf ~`, отклоняются даже когда правило разрешения совпадает с ними или hook `PreToolUse` их одобряет.598Удаления `rm` и `rmdir`, нацеленные на [критический путь](#critical-paths), такие как `rm -rf /` и `rm -rf ~`, отклоняются даже когда правило разрешения совпадает с ними или хук `PreToolUse` их одобряет. Чтение по [сетевому пути](/docs/ru/permissions#network-paths) отклоняется таким же образом.

597 599 

598[Облачные сеансы](/docs/ru/claude-code-on-the-web) игнорируют `defaultMode: "dontAsk"`; см. [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) для получения подробной информации.600[Облачные сеансы](/docs/ru/claude-code-on-the-web) игнорируют `defaultMode: "dontAsk"`; см. [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) для получения подробной информации.

599 601 


639* **Если вы согласитесь**: Claude Code устанавливает `skipDangerousModePermissionPrompt` на `true` в `~/.claude/settings.json`, поэтому более поздние сеансы пропускают диалоговое окно. Чтобы увидеть диалоговое окно снова, удалите ключ из этого файла или установите его на `false`. [Справка `skipDangerousModePermissionPrompt`](/docs/ru/settings-reference#skipdangerousmodepermissionprompt) перечисляет другие файлы параметров, где вы или ваша организация можете установить его.641* **Если вы согласитесь**: Claude Code устанавливает `skipDangerousModePermissionPrompt` на `true` в `~/.claude/settings.json`, поэтому более поздние сеансы пропускают диалоговое окно. Чтобы увидеть диалоговое окно снова, удалите ключ из этого файла или установите его на `false`. [Справка `skipDangerousModePermissionPrompt`](/docs/ru/settings-reference#skipdangerousmodepermissionprompt) перечисляет другие файлы параметров, где вы или ваша организация можете установить его.

640* **Если вы отклоните**: Claude Code выходит.642* **Если вы отклоните**: Claude Code выходит.

641 643 

642В [неинтерактивном режиме](/docs/ru/headless) диалоговое окно не показывается, и [фоновый сеанс](/docs/ru/agent-view), запущенный с `--bg`, отклоняется до тех пор, пока вы не приняли диалоговое окно в интерактивном сеансе.644В [неинтерактивном режиме](/docs/ru/headless) диалоговое окно не показывается. [Фоновая сессия](/docs/ru/agent-view) учитывает ваше согласие, если оно записано в пользовательских или управляемых настройках:

645 

646* Если согласие не записано, `claude --bg --permission-mode bypassPermissions` отклоняется до тех пор, пока вы не примете диалоговое окно в интерактивной сессии.

647* Если `skipDangerousModePermissionPrompt` задан только в `.claude/settings.local.json`, фоновая сессия запускается, игнорируя запрос на обход, и закрепляет уведомление `Bypass permissions was requested at launch and ignored · if that was you, ~/.claude/settings.json needs "skipDangerousModePermissionPrompt": true`. Чтобы обход был учтён, добавьте этот ключ в `~/.claude/settings.json`, а затем запустите новую фоновую сессию.

643 648 

644На Linux и macOS Claude Code отклоняет запуск в этом режиме при запуске от пользователя root или под `sudo`:649На Linux и macOS Claude Code отклоняет запуск в этом режиме при запуске от пользователя root или под `sudo`:

645 650 


708* `.devcontainer.json`713* `.devcontainer.json`

709* `.ripgreprc`, `pyrightconfig.json`714* `.ripgreprc`, `pyrightconfig.json`

710* `.mcp.json`, `.claude.json`715* `.mcp.json`, `.claude.json`

716* Файл, на который указывает ваш пользовательский, проектный или локальный [файл настроек](/docs/ru/settings#settings-files-and-who-they-affect), когда сам файл настроек является символической ссылкой, например в репозиторий dotfiles. В режимах, которые маршрутизируют записи в защищённые пути классификатору, запись в этот файл вместо этого требует вашего подтверждения, даже если совпадает правило allow. Если собственный путь файла также является путём файла настроек, например `.claude/settings.json` в другой папке, запись направляется классификатору, как и другие записи в защищённые пути

711 717 

712<h2 id="critical-paths">718<h2 id="critical-paths">

713 Критические пути719 Критические пути


727 733 

728* Корневой каталог файловой системы734* Корневой каталог файловой системы

729* Каталоги верхнего уровня, то есть любой прямой потомок корня, такой как `/usr`, `/etc` или `/data`735* Каталоги верхнего уровня, то есть любой прямой потомок корня, такой как `/usr`, `/etc` или `/data`

730* Ваш домашний каталог736* Ваш домашний каталог. В Windows также учитывается его короткое имя 8.3, например `C:\Users\LONGNA~1`

731* Корни дисков Windows и их каталоги верхнего уровня, такие как `C:\` и `C:\Windows`737* Корни дисков Windows и их каталоги верхнего уровня, такие как `C:\` и `C:\Windows`. Такие варианты написания, как `\\?\C:\` и `\\localhost\C$`, считаются `C:\`

732* Ваш рабочий каталог и его родители738* Ваш рабочий каталог и его родители

733* Ваши дополнительные рабочие каталоги и их родители, но только когда удаление — это glob под одним из них, такой как `rm -rf <dir>/*`. `rm -rf <dir>` на самом каталоге не вызывает эту проверку739* Ваши дополнительные рабочие каталоги и их родители, но только когда удаление — это glob под одним из них, такой как `rm -rf <dir>/*`. `rm -rf <dir>` на самом каталоге не вызывает эту проверку

734 740 

741Проверки короткого имени 8.3 домашнего каталога и вариантов написания `\\?\C:\` и `\\localhost\C$` требуют Claude Code v2.1.292 или позже.

742 

735<h3 id="other-targets-that-count-as-critical-paths">743<h3 id="other-targets-that-count-as-critical-paths">

736 Другие цели, которые считаются критическими путями744 Другие цели, которые считаются критическими путями

737</h3>745</h3>


747| Цель, которая является только выводом подстановки команды, когда `rm` рекурсивна | `rm -rf "$(pwd)"` | Claude Code не может проверить цель перед запуском команды |755| Цель, которая является только выводом подстановки команды, когда `rm` рекурсивна | `rm -rf "$(pwd)"` | Claude Code не может проверить цель перед запуском команды |

748| Завершающая подстановка команды после критического пути | `rm -rf ~/$(cmd)` | Claude Code проверяет путь, который остался бы, если бы подстановка расширилась пусто, здесь ваш домашний каталог |756| Завершающая подстановка команды после критического пути | `rm -rf ~/$(cmd)` | Claude Code проверяет путь, который остался бы, если бы подстановка расширилась пусто, здесь ваш домашний каталог |

749| Цель, которая состоит только из обратных косых черт | `rm -rf "\\"` | Git Bash на Windows читает одну обратную косую черту как корень текущего диска, поэтому проверка применяется на каждой платформе |757| Цель, которая состоит только из обратных косых черт | `rm -rf "\\"` | Git Bash на Windows читает одну обратную косую черту как корень текущего диска, поэтому проверка применяется на каждой платформе |

758| Путь Windows, который указывает том по GUID вместо буквы диска | `rm -rf '\\?\Volume{GUID}\work\build'` | Путь не сообщает, на каком диске он находится, поэтому он может быть критическим путём. Требуется Claude Code v2.1.292 или позже |

750| Некоторые цели, заканчивающиеся на `/*` или `/*/` | `rm -rf logs/*/*`, `rm -rf logs/*/`, `cd logs && rm -rf a/*` | Claude Code не может определить до запуска команды, каких каталогов они достигнут |759| Некоторые цели, заканчивающиеся на `/*` или `/*/` | `rm -rf logs/*/*`, `rm -rf logs/*/`, `cd logs && rm -rf a/*` | Claude Code не может определить до запуска команды, каких каталогов они достигнут |

751 760 

752Чтобы отключить проверку на цели, которая является только выводом подстановки команды, установите [`CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1`](/docs/ru/env-vars#variables) в окружении, которое запускает Claude Code.761Чтобы отключить проверку на цели, которая является только выводом подстановки команды, установите [`CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1`](/docs/ru/env-vars#variables) в окружении, которое запускает Claude Code.

permissions.md +174 −143

Details

36 36 

37До версии 2.1.211 Claude Code всегда сохранял правило в начальном каталоге, поэтому одобрение, предоставленное в worktree или подкаталоге, не применялось к остальной части репозитория. Правила, которые более ранние версии сохранили в подкаталоге или worktree, по-прежнему применяются к сеансам, запущенным там.37До версии 2.1.211 Claude Code всегда сохранял правило в начальном каталоге, поэтому одобрение, предоставленное в worktree или подкаталоге, не применялось к остальной части репозитория. Правила, которые более ранние версии сохранили в подкаталоге или worktree, по-прежнему применяются к сеансам, запущенным там.

38 38 

39Иногда запрос разрешения предлагает только одноразовое одобрение, без опции "не спрашивать снова" и без опции разрешить действие на остаток сеанса. Claude Code предлагает эти опции только когда запрос может показать вам всё, что они позволили бы, поэтому правило, которое вы сохраняете из запроса, охватывает только то, что названо его опцией. Когда запрос предлагает только одноразовое одобрение, одобрите действие один раз или добавьте правило самостоятельно в [`/permissions`](#manage-permissions).39Иногда запрос разрешения предлагает только одноразовое одобрение, без опции "не спрашивать снова" и без опции разрешить действие на остаток сеанса. Claude Code предлагает эти опции только когда запрос может показать вам всё, что они позволили бы, поэтому правило, которое вы сохраняете из запроса, охватывает только то, что названо его опцией. Когда запрос предлагает только одноразовое одобрение, одобрите действие один раз или добавьте правило самостоятельно в [`/permissions`](#manage-permissions). Чтобы запросы перестали появляться для команды, которая начинается с exec-обёртки, например `watch`, или для команды `find` с действием, например `-delete`, см. [Exec-обёртки и действия `find`](#exec-wrappers-and-find-actions).

40 40 

41<h3 id="add-a-comment-when-you-answer-a-permission-prompt">41<h3 id="add-a-comment-when-you-answer-a-permission-prompt">

42 Добавьте комментарий при ответе на запрос разрешения42 Добавьте комментарий при ответе на запрос разрешения


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

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

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

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

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

96 96 

97<Warning>97<Warning>


233Метка, отображаемая для инструмента в стенограмме и диалоге разрешений, может отличаться от его канонического имени. Например, инструмент с меткой `Stop Task` в стенограмме имеет каноническое имя `TaskStop`. Правила разрешений и [матчеры hook](/docs/ru/hooks) не совпадают с меткой, поэтому правило, написанное как `Stop Task`, не совпадает. Для правил отказа и запроса предупреждение при запуске выше ловит несоответствие. Используйте канонические имена, указанные в [справочнике инструментов](/docs/ru/tools-reference).233Метка, отображаемая для инструмента в стенограмме и диалоге разрешений, может отличаться от его канонического имени. Например, инструмент с меткой `Stop Task` в стенограмме имеет каноническое имя `TaskStop`. Правила разрешений и [матчеры hook](/docs/ru/hooks) не совпадают с меткой, поэтому правило, написанное как `Stop Task`, не совпадает. Для правил отказа и запроса предупреждение при запуске выше ловит несоответствие. Используйте канонические имена, указанные в [справочнике инструментов](/docs/ru/tools-reference).

234 234 

235<h2 id="tool-specific-permission-rules">235<h2 id="tool-specific-permission-rules">

236 Правила разрешений для конкретных инструментов236 Правила разрешений для отдельных инструментов

237</h2>237</h2>

238 238 

239<h3 id="bash">239<h3 id="bash">

240 Bash240 Bash

241</h3>241</h3>

242 242 

243Правила Bash соответствуют всему тексту команды, где `*` обозначает любой текст. [Шаблоны подстановки](#wildcard-patterns) показывает, какие команды соответствуют каждой форме правила и где размещать `*`. Остальная часть этого раздела охватывает, как Claude Code сопоставляет составные команды и обёртки, что правило не соответствует, команды только для чтения и перенаправления.243Правила Bash сопоставляются со всем текстом команды, где `*` заменяет любой текст. В разделе [Шаблоны с подстановочными знаками](#wildcard-patterns) показано, какие команды соответствуют каждой форме правила и где ставить `*`. В остальной части этого раздела описано, как Claude Code сопоставляет составные команды и обёртки, какие обёртки и действия `find` не может одобрить правило-префикс, чему правило не соответствует, а также команды только для чтения и перенаправления.

244 244 

245<h4 id="compound-commands">245<h4 id="compound-commands">

246 Составные команды246 Составные команды

247</h4>247</h4>

248 248 

249<Tip>249<Tip>

250 Claude Code осведомлён об операторах оболочки, поэтому правило вроде `Bash(safe-cmd *)` не даст ему разрешение на выполнение команды `safe-cmd && other-cmd`. Распознаваемые разделители команд — это `&&`, `||`, `;`, `|`, `|&`, `&` и новые строки. Правило должно соответствовать каждой подкоманде независимо.250 Claude Code учитывает операторы оболочки, поэтому правило вида `Bash(safe-cmd *)` не даст разрешения на выполнение команды `safe-cmd && other-cmd`. Распознаваемые разделители команд: `&&`, `||`, `;`, `|`, `|&`, `&` и переводы строк. Правило должно соответствовать каждой подкоманде по отдельности.

251</Tip>251</Tip>

252 252 

253Правила отказа и запроса применяются, когда любая подкоманда им соответствует, включая команду, вложенную в подоболочку, подстановку команды или тело управления потоком, такое как цикл `for`. Правило запроса вроде `Bash(git clean *)` по-прежнему запрашивает вас для `cd /tmp && git clean -f` или `echo "$(git clean -f)"`, даже в [автоматическом режиме](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode).253Правила deny и ask применяются, когда им соответствует любая подкоманда, включая команду, вложенную в подоболочку, подстановку команды или тело управляющей конструкции, например цикла `for`. Правило ask вида `Bash(git clean *)` по-прежнему запрашивает у вас подтверждение для `cd /tmp && git clean -f` или `echo "$(git clean -f)"`, даже в [авторежиме](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode).

254 254 

255Когда после `&&` или `||` ничего нет, например в `npm test &&`, Claude Code рассматривает команду как непарсируемую и не разбивает её на подкоманды для сопоставления с правилами разрешения, поэтому правило вроде `Bash(npm *)` его не одобряет.255Когда после `&&` или `||` ничего нет, как в `npm test &&`, Claude Code считает команду неразбираемой и не разделяет её на подкоманды для сопоставления с правилами allow, поэтому правило вида `Bash(npm *)` её не одобряет.

256 256 

257Когда вы одобряете составную команду с помощью «Да, и больше не спрашивать», Claude Code сохраняет отдельное правило для каждой подкоманды, требующей одобрения, а не одно правило для полной составной строки. Например, одобрение `git status && npm test` сохраняет правило для `npm test`, поэтому будущие вызовы `npm test` распознаются независимо от того, что предшествует `&&`. Подкоманды вроде `cd` в каталог вне ваших рабочих каталогов генерируют собственное правило Read для этого пути. Для одной составной команды может быть сохранено до 5 правил.257Когда вы одобряете составную команду с помощью «Yes, and don't ask again», Claude Code сохраняет отдельное правило для каждой подкоманды, требующей подтверждения, а не одно правило для всей составной строки. Например, одобрение `git status && npm test` сохраняет правило для `npm test`, поэтому будущие вызовы `npm test` распознаются независимо от того, что стоит перед `&&`. Подкоманды вроде `cd` в каталог за пределами ваших рабочих каталогов создают собственное правило Read для этого пути. Для одной составной команды может быть сохранено до 5 правил.

258 258 

259<h4 id="process-wrappers">259<h4 id="process-wrappers">

260 Обёртки260 Обёртки

261</h4>261</h4>

262 262 

263Перед сопоставлением правил Bash Claude Code удаляет фиксированный набор обёрток, поэтому правило вроде `Bash(npm test *)` также соответствует `timeout 30 npm test`. Удаляемые обёртки — это `timeout`, `time`, `nice`, `nohup` и `stdbuf`, плюс встроенные команды оболочки `command` и `builtin`, а также `noglob` в zsh. Каждая запускает свой аргумент как фактическую команду. Две связанные формы не удаляются: форма запроса `command -v`, которая ищет команду, а не запускает её, и `nocorrect` в zsh.263Перед сопоставлением с правилами Bash Claude Code отбрасывает фиксированный набор обёрток, поэтому правило вида `Bash(npm test *)` также соответствует `timeout 30 npm test`. Отбрасываемые обёртки: `timeout`, `time`, `nice`, `nohup` и `stdbuf`, а также встроенные команды оболочки `command` и `builtin` и `noglob` из zsh. Каждая из них выполняет свой аргумент как фактическую команду. Две родственные формы не отбрасываются: форма запроса `command -v`, которая ищет команду, а не выполняет её, и `nocorrect` из zsh.

264 264 

265Claude Code также удаляет начальное присваивание определённых известных безопасных переменных окружения, поэтому `Bash(npm test *)` соответствует `NODE_ENV=test npm test`. Правило разрешения не будет соответствовать после присваивания любой другой переменной. Правило отказа или запроса соответствует после любого начального присваивания, поэтому `Bash(rm *)` в отказе по-прежнему соответствует `FOO=bar rm -rf tmp/`.265Claude Code также отбрасывает начальное присваивание некоторых заведомо безопасных переменных окружения, поэтому `Bash(npm test *)` соответствует `NODE_ENV=test npm test`. Правило allow не сопоставляется через присваивание любой другой переменной. Правило deny или ask сопоставляется через любое начальное присваивание, поэтому `Bash(rm *)` в deny по-прежнему соответствует `FOO=bar rm -rf tmp/`.

266 266 

267Голый `xargs` также удаляется, поэтому `Bash(grep *)` соответствует `xargs grep pattern`. Удаление применяется только когда `xargs` не имеет флагов: вызов вроде `xargs -n1 grep pattern` сопоставляется как команда `xargs`, поэтому правила, написанные для внутренней команды, его не охватывают.267Простой `xargs` тоже отбрасывается, поэтому `Bash(grep *)` соответствует `xargs grep pattern`. Отбрасывание применяется только тогда, когда у `xargs` нет флагов: вызов вида `xargs -n1 grep pattern` сопоставляется как команда `xargs`, поэтому правила, написанные для внутренней команды, его не покрывают.

268 268 

269Этот список обёрток встроен и не настраивается. Средства запуска среды разработки, такие как `direnv exec`, `devbox run`, `mise exec`, `npx` и `docker exec`, не входят в список. Поскольку эти инструменты выполняют свои аргументы как команду, правило вроде `Bash(devbox run *)` соответствует всему, что идёт после `run`, включая `devbox run rm -rf .`. Чтобы одобрить работу внутри средства запуска среды, напишите конкретное правило, которое включает как средство запуска, так и внутреннюю команду, например `Bash(devbox run npm test)`. Добавьте одно правило для каждой внутренней команды, которую вы хотите разрешить.269Этот список обёрток встроен и не настраивается. Средства запуска сред разработки, такие как `direnv exec`, `devbox run`, `mise exec`, `npx` и `docker exec`, в список не входят. Поскольку эти инструменты выполняют свои аргументы как команду, правило вида `Bash(devbox run *)` соответствует всему, что идёт после `run`, включая `devbox run rm -rf .`. Чтобы одобрить работу внутри средства запуска среды, напишите конкретное правило, включающее и средство запуска, и внутреннюю команду, например `Bash(devbox run npm test)`. Добавьте по одному правилу на каждую внутреннюю команду, которую хотите разрешить.

270 270 

271Обёртки Exec, такие как `watch`, `setsid`, `ionice` и `flock`, не могут быть автоматически одобрены правилом префикса вроде `Bash(watch *)`, поэтому в ручном режиме они всегда запрашивают. То же самое применяется к `find` с `-exec` или `-delete`: правило `Bash(find *)` не охватывает эти формы. Чтобы одобрить конкретный вызов, напишите правило точного совпадения для полной строки команды.271<h4 id="exec-wrappers-and-find-actions">

272 Exec-обёртки и действия `find`

273</h4>

274 

275Правило-префикс вида `Bash(watch *)` или `Bash(find *)` не может автоматически одобрить следующие команды, поэтому в ручном режиме они запрашивают подтверждение:

276 

277* **Exec-обёртки**: например `watch`, `setsid`, `ionice` и `flock`

278* **`find`**: с действием, которое выполняет команды, удаляет файлы или записывает файлы, например `-exec`, `-delete` или `-fprint`, либо с `-files0-from`, который берёт пути для поиска из файла

279 

280Чтобы одобрить конкретный вызов без `*`, напишите правило точного соответствия для всей строки команды, например `Bash(find build -type f -delete)`.

281 

282Когда в команде есть `*`, как в `find . -name '*.tmp' -delete`, Claude Code читает правило как [шаблон с подстановочными знаками](#wildcard-patterns), а не как точное соответствие, поэтому команда по-прежнему запрашивает подтверждение. Одобряйте её каждый раз при запросе или используйте [хук PreToolUse](/docs/ru/hooks#pretooluse-decision-control), который возвращает для неё `"allow"`.

272 283 

273<h4 id="bash-rule-limits">284<h4 id="bash-rule-limits">

274 Что правило Bash не соответствует285 Чему не соответствует правило Bash

275</h4>286</h4>

276 287 

277Правило Bash соответствует тексту команды, который пишет Claude, после того как Claude Code разбивает [составные команды](#compound-commands) и удаляет [обёртки](#process-wrappers). Оно не соответствует одной и той же программе, вызванной в другой форме, поэтому правило отказа или запроса охватывает вызов, который Claude обычно производит, и не является границей безопасности вокруг программы. Эти правила в `deny` или `ask` останавливают первую форму, а не другие:288Правило Bash сопоставляется с текстом команды, который пишет Claude, после того как Claude Code разделит [составные команды](#compound-commands) и отбросит [обёртки](#process-wrappers). Оно не соответствует той же программе, вызванной в другой форме, поэтому правило deny или ask покрывает вызов, который обычно создаёт Claude, и не является границей безопасности вокруг программы. Эти правила в `deny` или `ask` останавливают первую форму, но не остальные:

278 289 

279| Правило | Останавливает | Не останавливает |290| Правило | Останавливает | Не останавливает |

280| :- | :- | :- |291| :- | :- | :- |


282| `Bash(rm *)` | `rm -rf build/` | `/bin/rm -rf build/`, `bash -c 'rm -rf build/'` |293| `Bash(rm *)` | `rm -rf build/` | `/bin/rm -rf build/`, `bash -c 'rm -rf build/'` |

283| `Bash(git push *)` | `git push origin main` | `git -C . push origin main`, `git -c push.default=current push origin main`, `git 'push' origin main` |294| `Bash(git push *)` | `git push origin main` | `git -C . push origin main`, `git -c push.default=current push origin main`, `git 'push' origin main` |

284 295 

285Ваши другие правила и режим разрешений определяют команды в последнем столбце.296Судьбу команд из последнего столбца решают ваши остальные правила и режим разрешений.

286 297 

287Для принудительного применения файловой системы и сети, которое не зависит от текста команды, используйте [изоляцию в песочнице](/docs/ru/sandboxing). Чтобы проверить полный текст команды с вашей собственной логикой перед её выполнением, используйте hook [PreToolUse](#extend-permissions-with-hooks).298Для ограничений файловой системы и сети, не зависящих от текста команды, используйте [изоляцию в песочнице](/docs/ru/sandboxing). Чтобы проверять полный текст команды собственной логикой перед её выполнением, используйте [хук PreToolUse](#extend-permissions-with-hooks).

288 299 

289<h4 id="read-only-commands">300<h4 id="read-only-commands">

290 Команды только для чтения301 Команды только для чтения

291</h4>302</h4>

292 303 

293Claude Code распознаёт встроенный набор команд Bash как команды только для чтения и выполняет их без запроса разрешения в каждом режиме, за исключением того, как [`permissions.blockReadsOutsideWorkingDirectories`](/docs/ru/settings-reference#permissions-blockreadsoutsideworkingdirectories) изменяет поведение для путей вне ваших рабочих каталогов. Набор включает `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` и формы `git` только для чтения. Набор не настраивается; чтобы требовать запрос для одной из этих команд, добавьте правило `ask` или `deny` для неё. В автоматическом режиме эти команды также могут ждать проверки классификатора; см. [как классификатор оценивает действия](/docs/ru/permission-modes#how-the-classifier-evaluates-actions).304Claude Code распознаёт встроенный набор команд Bash как команды только для чтения и выполняет их без запроса разрешения в любом режиме, за исключением изменений, которые вносит [`permissions.blockReadsOutsideWorkingDirectories`](/docs/ru/settings-reference#permissions-blockreadsoutsideworkingdirectories) для путей за пределами ваших рабочих каталогов. Набор включает `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` и формы `git` только для чтения. Набор не настраивается; чтобы требовать запрос подтверждения для одной из этих команд, добавьте для неё правило `ask` или `deny`. В авторежиме эти команды также могут ожидать проверки классификатором; см. [как классификатор оценивает действия](/docs/ru/permission-modes#how-the-classifier-evaluates-actions).

294 305 

295Перенаправление вроде `ls > out.txt` добавляет проверку на цель. См. [Перенаправления](#redirections).306Перенаправление вида `ls > out.txt` добавляет проверку цели. См. [Перенаправления](#redirections).

296 307 

297Неэкранированные шаблоны глобализации разрешены для команд, у которых каждый флаг только для чтения, поэтому `ls *.ts` и `wc -l src/*.py` выполняются без запроса.308Шаблоны glob без кавычек допускаются для команд, у которых все флаги предназначены только для чтения, поэтому `ls *.ts` и `wc -l src/*.py` выполняются без запроса подтверждения.

298 309 

299В ручном режиме команды из этого набора по-прежнему запрашивают в этих случаях:310В ручном режиме команды из этого набора всё равно запрашивают подтверждение в следующих случаях:

300 311 

301* **Неэкранированные глобы для команд с флагами, способными к записи**: команды с флагами, способными к записи или выполнению, такие как `find`, `sort`, `sed` и `git`, запрашивают при наличии неэкранированного глоба, потому что глоб может расширяться до флага вроде `-delete`.312* **Glob без кавычек для команд с флагами, способными записывать**: команды с флагами, способными записывать или выполнять, такие как `find`, `sort`, `sed` и `git`, запрашивают подтверждение при наличии glob без кавычек, поскольку glob может раскрыться во флаг вроде `-delete`.

302* **`docker` указывающий на другой демон**: формы `docker` только для чтения запрашивают, когда команда несёт флаг, который выбирает другой демон, такой как `-H`, `--context` или `--url` и `--connection` в Podman.313* **`docker`, направленный на другой демон**: формы `docker` только для чтения запрашивают подтверждение, когда команда содержит флаг, выбирающий другой демон, например `-H`, `--context` или `--url` и `--connection` из Podman.

303* **`file` с флагами открытия пути**: `file` запрашивает, когда он передаёт `-m`/`--magic-file` или `-f`/`--files-from`, потому что эти флаги заставляют `file` открывать пути, названные в значении флага.314* **`file` с флагами, открывающими пути**: `file` запрашивает подтверждение, когда передаёт `-m`/`--magic-file` или `-f`/`--files-from`, поскольку эти флаги заставляют `file` открывать пути, указанные в значении флага.

304* **Сетевые пути в Windows**: команда, аргументы которой включают сетевой путь (UNC), такой как `\\server\share\file`, запрашивает, потому что доступ к сетевому пути может отправить ваши учётные данные Windows на хост, который он называет. Та же проверка применяется к командам инструмента [PowerShell](/docs/ru/tools-reference#powershell-tool).315* **`ps`, который может вывести переменные окружения**: `ps` запрашивает подтверждение, когда один из его аргументов может действовать как опция `e`, как в `ps auxe` или `ps aux -e`, поскольку эта опция выводит переменные окружения процессов. `ps aux` и `ps -ef` выполняются без запроса подтверждения. Проверка форм с дефисом, таких как `ps aux -e`, требует Claude Code v2.1.290 или новее.

305* **Записи в специальные переменные оболочки**: команда, которая устанавливает, отменяет или циклирует определённые специальные переменные оболочки, такие как `PATH` или `IFS`, запрашивает даже когда остальная часть команды только для чтения.316* **Сетевые пути в Windows**: команда, аргументы которой включают сетевой путь (UNC), например `\\server\share\file`, запрашивает подтверждение, поскольку обращение к сетевому пути может отправить ваши учётные данные Windows указанному в нём хосту. Та же проверка применяется к командам [инструмента PowerShell](/docs/ru/tools-reference#powershell-tool).

306* **Команды, которые анализ не может разобрать**: когда Claude Code не может полностью разобрать команду, он запрашивает одобрение вместо того, чтобы рассматривать команду как только для чтения. Команды длиннее 10 000 символов всегда запрашивают, потому что они превышают то, что анализирует анализ.317* **Запись в специальные переменные оболочки**: команда, которая задаёт, сбрасывает или перебирает определённые специальные переменные оболочки, такие как `PATH` или `IFS`, запрашивает подтверждение, даже если остальная часть команды только читает.

318* **Команды, которые анализ не может разобрать**: когда Claude Code не может полностью разобрать команду, он запрашивает подтверждение вместо того, чтобы считать команду командой только для чтения. Команды длиннее 10 000 символов всегда запрашивают подтверждение, поскольку превышают объём, который разбирает анализ.

307 319 

308`cd` в путь внутри вашего рабочего каталога или [дополнительного каталога](#working-directories) также только для чтения, и составная команда вроде `cd packages/api && ls` выполняется без запроса, когда каждая часть квалифицируется самостоятельно. Эти комбинации запрашивают даже когда каждая часть только для чтения:320`cd` в путь внутри вашего рабочего каталога или [дополнительного каталога](#working-directories) также считается операцией только для чтения, и составная команда вида `cd packages/api && ls` выполняется без запроса подтверждения, если каждая её часть удовлетворяет условиям сама по себе. Следующие сочетания запрашивают подтверждение, даже если каждая часть только читает:

309 321 

310* **`cd` с `git`**: запрашивает, когда `cd` переходит в другой каталог, поскольку запуск `git` в новом каталоге может выполнить hooks этого каталога. `cd`, чья цель разрешается в текущий рабочий каталог, является холостым ходом и не вызывает запрос.322* **`cd` с `git`**: запрашивает подтверждение, когда `cd` переходит в другой каталог, поскольку запуск `git` в новом каталоге может выполнить хуки этого каталога. `cd`, цель которого разрешается в текущий рабочий каталог, ничего не делает и не вызывает запроса.

311* **`cd` с перенаправлением**: запрашивает, когда Claude Code не может определить, в какой каталог разрешается цель перенаправления после выполнения `cd`. Команда, единственной целью перенаправления которой является `/dev/null`, такая как `cd app; grep -r pattern . 2>/dev/null`, не запрашивает, потому что `/dev/null` не зависит от рабочего каталога.323* **`cd` с перенаправлением**: запрашивает подтверждение, когда Claude Code не может определить, относительно какого каталога разрешается цель перенаправления после выполнения `cd`. Команда, единственной целью перенаправления которой является `/dev/null`, например `cd app; grep -r pattern . 2>/dev/null`, не запрашивает подтверждение, поскольку `/dev/null` не зависит от рабочего каталога.

312 324 

313<Warning>325<Warning>

314 Шаблоны разрешений Bash, которые пытаются ограничить аргументы команды, хрупки. Например, `Bash(curl http://github.com/ *)` предназначен для ограничения curl на URL-адреса GitHub, но не будет соответствовать вариациям вроде:326 Шаблоны разрешений Bash, пытающиеся ограничить аргументы команды, ненадёжны. Например, `Bash(curl http://github.com/ *)` призван ограничить curl адресами GitHub, но не будет соответствовать таким вариантам:

315 327 

316 * Опции перед URL: `curl -X GET http://github.com/...`328 * Опции перед URL: `curl -X GET http://github.com/...`

317 * Другой протокол: `curl https://github.com/...`329 * Другой протокол: `curl https://github.com/...`

318 * Перенаправления: `curl -L http://short.example.com/xyz`, которое перенаправляет на GitHub330 * Перенаправления: `curl -L http://short.example.com/xyz`, который перенаправляет на GitHub

319 * Переменные: `URL=http://github.com && curl $URL`331 * Переменные: `URL=http://github.com && curl $URL`

320 332 

321 Для более надёжной фильтрации URL рассмотрите:333 Для более надёжной фильтрации URL рассмотрите следующие варианты:

322 334 

323 * **Ограничить сетевые инструменты Bash**: используйте правила отказа для остановки `curl`, `wget` и подобных команд, затем используйте инструмент WebFetch с разрешением `WebFetch(domain:github.com)` для разрешённых доменов. Правило отказа не соответствует одной и той же программе по пути или внутри `sh -c`, поэтому объедините его с [списком разрешений сети песочницы](/docs/ru/sandboxing#network-isolation), когда ограничение должно действовать; см. [что правило Bash не соответствует](#bash-rule-limits)335 * **Ограничьте сетевые инструменты Bash**: используйте правила deny, чтобы остановить `curl`, `wget` и подобные команды, а затем используйте инструмент WebFetch с разрешением `WebFetch(domain:github.com)` для разрешённых доменов. Правило deny не соответствует той же программе, вызванной по пути или внутри `sh -c`, поэтому сочетайте его со [списком разрешённых сетевых доменов песочницы](/docs/ru/sandboxing#network-isolation), когда ограничение должно соблюдаться строго; см. [чему не соответствует правило Bash](#bash-rule-limits)

324 * **Используйте hooks PreToolUse**: реализуйте hook, который проверяет URL-адреса в командах Bash и блокирует недопустимые домены336 * **Используйте хуки PreToolUse**: реализуйте хук, который проверяет URL в командах Bash и блокирует запрещённые домены

325 * **Добавьте руководство CLAUDE.md**: опишите ваши разрешённые шаблоны curl в `CLAUDE.md`. Это формирует то, что Claude пытается, но не обеспечивает границу, поэтому объедините с одним из вариантов выше337 * **Добавьте указания в CLAUDE.md**: опишите допустимые шаблоны curl в `CLAUDE.md`. Это влияет на то, что пытается делать Claude, но не обеспечивает границу, поэтому сочетайте это с одним из вариантов выше

326 338 

327 Обратите внимание, что использование только WebFetch не предотвращает сетевой доступ. Если Bash разрешён, Claude всё ещё может использовать `curl`, `wget` или другие инструменты для доступа к любому URL.339 Обратите внимание, что использование одного лишь WebFetch не предотвращает доступ к сети. Если Bash разрешён, Claude по-прежнему может использовать `curl`, `wget` или другие инструменты для обращения к любому URL.

328</Warning>340</Warning>

329 341 

330<h4 id="redirections">342<h4 id="redirections">

331 Перенаправления343 Перенаправления

332</h4>344</h4>

333 345 

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

335 347 

336* **Перенаправления вывода**: для `> file`, `>> file` или `2> file`, проверка охватывает ваши правила разрешения и отказа `Edit`, [защищённые пути](/docs/ru/permission-modes#protected-paths) и [рабочие каталоги](#working-directories). Правило вроде `Bash(git commit *)` разрешает команду, а не цель. Цель, которая начинается с `~` или содержит символ глобализации, требует вашего одобрения.348* **Перенаправления вывода**: для `> file`, `>> file` или `2> file` проверка охватывает ваши правила allow и deny для `Edit`, [защищённые пути](/docs/ru/permission-modes#protected-paths) и [рабочие каталоги](#working-directories). Правило вида `Bash(git commit *)` разрешает команду, а не цель. Цель, которая начинается с `~` или содержит символ glob, требует вашего подтверждения.

337* **Перенаправления ввода**: для `< file`, проверка охватывает ваши правила разрешения и отказа `Read` и рабочие каталоги. Цель вне рабочих каталогов требует вашего одобрения, если правило разрешения её не охватывает. Цель, которая содержит шаблон глобализации, или относительный путь, который следует за `cd` в одной и той же команде, требует вашего одобрения даже когда правило разрешения её охватывает. Claude Code проверяет цели ввода в v2.1.257 и позже.349* **Перенаправления ввода**: для `< file` проверка охватывает ваши правила allow и deny для `Read` и рабочие каталоги. Цель за пределами рабочих каталогов требует вашего подтверждения, если её не покрывает правило allow. Цель, содержащая шаблон glob, или относительный путь, следующий за `cd` в той же команде, требует вашего подтверждения, даже если её покрывает правило allow. Claude Code проверяет цели ввода в v2.1.257 и новее.

338 350 

339Цели без файла позади них не проверяются: `/dev/null`, формы дескриптора файла, такие как `2>&1` и `<&3`, и here-docs и here-strings.351Цели, за которыми не стоит файл, не проверяются: `/dev/null`, формы с файловыми дескрипторами, такие как `2>&1` и `<&3`, а также here-doc и here-string.

340 352 

341Claude Code также проверяет файлы, которые пишет команда `tee`, включая в конвейер вроде `make | tee build.log`. Проверка охватывает ваши правила разрешения и отказа `Edit`, [защищённые пути](/docs/ru/permission-modes#protected-paths) и [рабочие каталоги](#working-directories). Правило разрешения вроде `Bash(tee *)` не охватывает пункт назначения вне рабочих каталогов. Claude Code проверяет цели `tee` в v2.1.269 и позже.353Claude Code также проверяет файлы, которые записывает команда `tee`, в том числе в конвейере вида `make | tee build.log`. Проверка охватывает ваши правила allow и deny для `Edit`, [защищённые пути](/docs/ru/permission-modes#protected-paths) и [рабочие каталоги](#working-directories). Правило allow вида `Bash(tee *)` не покрывает место назначения за пределами рабочих каталогов. Claude Code проверяет цели `tee` в v2.1.269 и новее.

342 354 

343<h3 id="powershell">355<h3 id="powershell">

344 PowerShell356 PowerShell

345</h3>357</h3>

346 358 

347Правила разрешений PowerShell используют ту же форму, что и правила Bash. Подстановки с `*` соответствуют в любой позиции, суффикс `:*` эквивалентен конечному ` *`, и голый `PowerShell` или `PowerShell(*)` соответствует каждой команде. Эта конфигурация разрешает команды `Get-ChildItem` и `git commit` при блокировании `Remove-Item`:359Правила разрешений PowerShell имеют ту же форму, что и правила Bash. Подстановочные знаки `*` сопоставляются в любой позиции, суффикс `:*` эквивалентен завершающему ` *`, а простой `PowerShell` или `PowerShell(*)` соответствует любой команде. Эта конфигурация разрешает команды `Get-ChildItem` и `git commit`, блокируя `Remove-Item`:

348 360 

349```json theme={null}361```json theme={null}

350{362{


360}372}

361```373```

362 374 

363Общие псевдонимы канонизируются перед сопоставлением. Правило, написанное для имени cmdlet, также соответствует его псевдонимам, поэтому `PowerShell(Get-ChildItem *)` соответствует `gci`, `ls` и `dir` также. Сопоставление не чувствительно к регистру.375Распространённые псевдонимы приводятся к каноническому виду перед сопоставлением. Правило, написанное для имени командлета, также соответствует его псевдонимам, поэтому `PowerShell(Get-ChildItem *)` соответствует также `gci`, `ls` и `dir`. Сопоставление не зависит от регистра.

364 376 

365Claude Code разбирает AST PowerShell и проверяет каждую команду в составной команде независимо. Операторы конвейера `|`, разделители операторов `;` и на PowerShell 7+ операторы цепи `&&` и `||` разбивают составную команду на подкоманды. Правило должно соответствовать каждой подкоманде, чтобы составная команда была разрешена.377Claude Code разбирает AST PowerShell и проверяет каждую команду в составной команде независимо. Операторы конвейера `|`, разделители инструкций `;`, а в PowerShell 7+ операторы цепочки `&&` и `||` разделяют составную команду на подкоманды. Чтобы составная команда была разрешена, правило должно соответствовать каждой подкоманде.

366 378 

367<h3 id="read-and-edit">379<h3 id="read-and-edit">

368 Read и Edit380 Read и Edit

369</h3>381</h3>

370 382 

371Чтобы заблокировать инструменты файлов Claude от чтения файла или каталога, добавьте правило отказа `Read` для его пути, такое как `Read(./.env)` или `Read(./secrets/**)`; [Исключить конфиденциальные файлы](/docs/ru/settings-reference#exclude-sensitive-files) содержит готовый к вставке пример. Если в вашем проекте есть файл `.claudeignore`, он ни на что не влияет, поэтому перенесите его записи в правила отказа `Read`.383Чтобы запретить файловым инструментам Claude читать файл или каталог, добавьте правило deny для `Read` с его путём, например `Read(./.env)` или `Read(./secrets/**)`; в разделе [Исключение конфиденциальных файлов](/docs/ru/settings-reference#exclude-sensitive-files) есть готовый для вставки пример. Если в вашем проекте есть файл `.claudeignore`, он ни на что не влияет, поэтому перенесите его записи в правила deny для `Read`.

372 384 

373Правила `Edit` применяются ко всем встроенным инструментам, которые редактируют файлы. Claude прилагает наилучшие усилия для применения правил `Read` ко всем встроенным инструментам, которые читают файлы, такие как Grep и Glob, к упоминаниям `@file` в ваших подсказках и к выделению и контексту открытого файла, которые подключённый [IDE](/docs/ru/vs-code#the-built-in-ide-mcp-server) делит с Claude.385Правила `Edit` применяются ко всем встроенным инструментам, которые редактируют файлы. Claude по мере возможности применяет правила `Read` ко всем встроенным инструментам, которые читают файлы, например Grep и Glob, к упоминаниям `@file` в ваших промптах, а также к выделению и контексту открытого файла, которыми подключённая [IDE](/docs/ru/vs-code#the-built-in-ide-mcp-server) делится с Claude.

374 386 

375Правило отказа `Read` также блокирует инструменты [Edit и Write](/docs/ru/errors#file-is-covered-by-a-read-deny-rule) на том же пути, включая создание нового файла там. NotebookEdit не охватывается, поэтому добавьте правило отказа `Edit` для путей, которые ни один инструмент не может изменять. Проверка требует Claude Code v2.1.208 или позже при редактировании, и v2.1.228 или позже при записи.387Правило deny для `Read` также блокирует [инструменты Edit и Write](/docs/ru/errors#file-is-covered-by-a-read-deny-rule) для того же пути, включая создание там нового файла. NotebookEdit не охватывается, поэтому добавьте правило deny для `Edit` для путей, которые не должен изменять ни один инструмент. Проверка требует Claude Code v2.1.208 или новее для правок, и v2.1.228 или новее для записи.

376 388 

377Claude Code проверяет разрешения файлов только против правил `Edit(path)` и `Read(path)`. Если вы напишете правило пути для `Write`, `NotebookEdit`, `Glob` или устаревшего инструмента `MultiEdit`, Claude Code принимает правило, но никогда не консультируется с ним, и [предупреждает при запуске](/docs/ru/errors#is-not-matched-by-file-permission-checks), за исключением правила `Glob`, переданного в `--allowedTools`. Используйте `Edit(docs/**)` вместо `Write(docs/**)`, `NotebookEdit(docs/**)` или `MultiEdit(docs/**)`, и `Read(docs/**)` вместо `Glob(docs/**)`. Claude Code не предупреждает о правиле имени инструмента без пути, такое как правило отказа для `Write`; оно соответствует этому правилу на уровне инструмента везде. Требует Claude Code v2.1.210 или позже.389Claude Code проверяет файловые разрешения только по правилам `Edit(path)` и `Read(path)`. Если вместо этого вы напишете правило с путём для `Write`, `NotebookEdit`, `Glob` или устаревшего инструмента `MultiEdit`, Claude Code примет правило, но никогда не будет к нему обращаться и [выдаст предупреждение при запуске](/docs/ru/errors#is-not-matched-by-file-permission-checks), за исключением правила `Glob`, переданного в `--allowedTools`. Используйте `Edit(docs/**)` вместо `Write(docs/**)`, `NotebookEdit(docs/**)` или `MultiEdit(docs/**)`, и `Read(docs/**)` вместо `Glob(docs/**)`. Claude Code не предупреждает о правиле с именем инструмента без пути, например о правиле deny для `Write`; такое правило сопоставляется на уровне инструмента везде. Требуется Claude Code v2.1.210 или новее.

378 390 

379<Warning>391<Warning>

380 Правила отказа Read и Edit применяются к встроенным инструментам файлов Claude, к командам файлов, которые Claude Code распознаёт в Bash, таким как `cat`, `head`, `tail`, `sed` и `tee`, и к целям перенаправления Bash [redirections](#redirections), таким как `> file` и `< file`. Они не применяются к команде, которая читает файлы без их именования, такой как `grep -r pattern .`, запущенная из каталога, который содержит файл, или к произвольным подпроцессам, которые косвенно читают или пишут файлы, вроде скрипта Python или Node, который открывает файлы сам. Для принудительного применения на уровне ОС, которое блокирует все процессы от доступа к пути, [включите песочницу](/docs/ru/sandboxing).392 Правила deny для Read и Edit применяются к встроенным файловым инструментам Claude, к файловым командам, которые Claude Code распознаёт в Bash, таким как `cat`, `head`, `tail`, `sed` и `tee`, и к целям [перенаправлений](#redirections) Bash, таким как `> file` и `< file`. Они не применяются к команде, которая читает файлы, не называя их, например `grep -r pattern .`, запущенной из каталога, содержащего файл, или к произвольным подпроцессам, которые читают или записывают файлы косвенно, например к скрипту Python или Node, который сам открывает файлы. Для ограничений на уровне ОС, которые блокируют доступ к пути для всех процессов, [включите песочницу](/docs/ru/sandboxing).

381</Warning>393</Warning>

382 394 

383Правила Read и Edit оба используют синтаксис шаблона [gitignore](https://git-scm.com/docs/gitignore) с четырьмя различными типами шаблонов; для шаблонов каталогов с одним сегментом глубина сопоставления также зависит от типа правила, описанного позже в этом разделе:395Правила Read и Edit используют синтаксис шаблонов [gitignore](https://git-scm.com/docs/gitignore) с четырьмя различными типами шаблонов; для шаблонов каталогов из одного сегмента глубина сопоставления зависит также от типа правила, как описано далее в этом разделе:

384 396 

385| Шаблон | Значение | Пример | Соответствует |397| Шаблон | Значение | Пример | Соответствует |

386| - | - | - | - |398| - | - | - | - |

387| `//path` | Абсолютный путь от корня файловой системы | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |399| `//path` | Абсолютный путь от корня файловой системы | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |

388| `~/path` | Путь из домашнего каталога | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |400| `~/path` | Путь от домашнего каталога | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |

389| `/path` | Путь относительно источника параметров | `Edit(/src/**/*.ts)` | `<primary working directory>/src/**/*.ts` в параметрах проекта |401| `/path` | Путь относительно источника настроек | `Edit(/src/**/*.ts)` | `<primary working directory>/src/**/*.ts` в настройках проекта |

390| `path` или `./path` | Путь относительно текущего каталога | `Read(*.env)` | `<cwd>/*.env` |402| `path` или `./path` | Путь относительно текущего каталога | `Read(*.env)` | `<cwd>/*.env` |

391 403 

392<Warning>404<Warning>

393 Шаблон вроде `/Users/alice/file` не является абсолютным путём. Одиночный начальный слэш якорирует в источнике параметров, а не в корне файловой системы. Используйте `//Users/alice/file` для абсолютных путей.405 Шаблон вида `/Users/alice/file` не является абсолютным путём. Одиночная начальная косая черта привязывает путь к источнику настроек, а не к корню файловой системы. Для абсолютных путей используйте `//Users/alice/file`.

394</Warning>406</Warning>

395 407 

396Шаблон `/path` якорирует в каталоге, связанном с источником параметров, который его определяет, поэтому одно и то же правило соответствует разным местоположениям в зависимости от того, где вы его разместите:408Шаблон `/path` привязывается к каталогу, связанному с источником настроек, в котором он определён, поэтому одно и то же правило соответствует разным расположениям в зависимости от того, где вы его разместите:

397 409 

398| Правило определено в | `/path` разрешается в |410| Где определено правило | Во что разрешается `/path` |

399| :- | :- |411| :- | :- |

400| Параметры проекта в `.claude/settings.json` | `<primary working directory>/path` |412| Настройки проекта в `.claude/settings.json` | `<primary working directory>/path` |

401| Локальные параметры в `.claude/settings.local.json` | `<primary working directory>/path` |413| Локальные настройки в `.claude/settings.local.json` | `<primary working directory>/path` |

402| Параметры пользователя в `~/.claude/settings.json` | `~/.claude/path` |414| Пользовательские настройки в `~/.claude/settings.json` | `~/.claude/path` |

403| Файл, переданный с `--settings <file>` | `<directory of file>/path` |415| Файл, переданный через `--settings <file>` | `<directory of file>/path` |

404| Флаги CLI или правила сеанса | `<primary working directory>/path` |416| Флаги CLI или правила сессии | `<primary working directory>/path` |

405 417 

406Правило, которое вы добавляете через `/permissions`, следует строке для файла параметров, в который вы его сохраняете.418Правило, добавленное через `/permissions`, следует строке для файла настроек, в который вы его сохраняете.

407 419 

408Правила локальных параметров якорируют в [основном рабочем каталоге](#working-directories) сеанса, а не в корне репозитория, где Claude Code [сохраняет файл](#permission-system) в v2.1.211 и позже. В сеансе, запущенном в корне репозитория, два каталога одинаковы; в сеансе [worktree](/docs/ru/worktrees), общее правило вроде `Edit(/src/**)` соответствует собственному каталогу `src/` этого worktree.420В v2.1.211 и новее правила локальных настроек привязываются к [основному рабочему каталогу](#working-directories) сессии, а не к корню репозитория, где Claude Code [хранит файл](#permission-system). В сессии, запущенной из корня репозитория, эти каталоги совпадают; в сессии [worktree](/docs/ru/worktrees) общее правило вида `Edit(/src/**)` соответствует собственному каталогу `src/` этого worktree.

409 421 

410Правило отказа вроде `Read(/secrets/**)` в параметрах пользователя блокирует `~/.claude/secrets/**`, а не каталог `secrets` в вашем проекте. Чтобы написать правило в параметрах пользователя, которое применяется внутри каждого проекта, используйте вместо этого абсолютный путь `//` или путь относительно дома `~/`.422Правило deny вида `Read(/secrets/**)` в пользовательских настройках блокирует `~/.claude/secrets/**`, а не каталог `secrets` в вашем проекте. Чтобы написать в пользовательских настройках правило, действующее внутри каждого проекта, используйте абсолютный путь с `//` или путь относительно домашнего каталога с `~/`.

411 423 

412В Windows пути нормализуются в форму POSIX перед сопоставлением. `C:\Users\alice` становится `/c/Users/alice`, поэтому используйте `//c/**/.env` для соответствия файлам `.env` в любом месте на этом диске. Чтобы соответствовать на всех дисках, используйте `//**/.env`.424В Windows пути перед сопоставлением нормализуются к форме POSIX. `C:\Users\alice` превращается в `/c/Users/alice`, поэтому используйте `//c/**/.env`, чтобы сопоставить файлы `.env` в любом месте этого диска. Чтобы сопоставлять на всех дисках, используйте `//**/.env`.

413 425 

414Примеры:426Примеры:

415 427 

416* `Edit(/docs/**)`: редактирует в `<primary working directory>/docs/`, а не в `/docs/` или `<primary working directory>/.claude/docs/`428* `Edit(/docs/**)`: правки в `<primary working directory>/docs/`, но не в `/docs/` и не в `<primary working directory>/.claude/docs/`

417* `Read(~/.zshrc)`: читает `.zshrc` вашего домашнего каталога429* `Read(~/.zshrc)`: чтение `.zshrc` в вашем домашнем каталоге

418* `Edit(//tmp/scratch.txt)`: редактирует абсолютный путь `/tmp/scratch.txt`430* `Edit(//tmp/scratch.txt)`: правки по абсолютному пути `/tmp/scratch.txt`

419* `Read(src/**)`: как правило разрешения, читает из `<current-directory>/src/` только; как правило отказа или запроса, соответствует каталогу `src` на любой глубине под текущим каталогом431* `Read(src/**)`: как правило allow — чтение только из `<current-directory>/src/`; как правило deny или ask — соответствует каталогу `src` на любой глубине внутри текущего каталога

420 432 

421Правило соответствует только файлам под его якорем; в этих границах глубина сопоставления зависит от формы шаблона и, для шаблонов каталогов с одним сегментом, типа правила, описанного ниже. Голые имена файлов следуют семантике gitignore и соответствуют на любой глубине, поэтому `Read(.env)` и `Read(**/.env)` эквивалентны:433Правило соответствует только файлам внутри своей точки привязки; в этих пределах глубина сопоставления зависит от формы шаблона, а для шаблонов каталогов из одного сегмента — от типа правила, как описано ниже. Простые имена файлов следуют семантике gitignore и сопоставляются на любой глубине, поэтому `Read(.env)` и `Read(**/.env)` эквивалентны:

422 434 

423| Правило отказа | Блокирует | Не блокирует |435| Правило deny | Блокирует | Не блокирует |

424| - | - | - |436| - | - | - |

425| `Read(.env)` или `Read(**/.env)` | любой `.env` в текущем каталоге или под ним | `.env` в родительском каталоге или другом проекте |437| `Read(.env)` или `Read(**/.env)` | любой `.env` в текущем каталоге или ниже | `.env` в родительском каталоге или другом проекте |

426| `Read(//**/.env)` | любой `.env` в любом месте файловой системы | ничего; правило якорировано в корне файловой системы |438| `Read(//**/.env)` | любой `.env` в любом месте файловой системы | ничего; правило привязано к корню файловой системы |

427 439 

428Относительный шаблон с одним сегментом каталога, такой как `src/**`, соответствует на разных глубинах в зависимости от типа правила:440Относительный шаблон с одним сегментом каталога, например `src/**`, сопоставляется на разной глубине в зависимости от типа правила:

429 441 

430* **Правила разрешения**: `Edit(src/**)` соответствует только `<cwd>/src` и файлам под ним. Чтобы разрешить имя каталога на любой глубине, напишите `Edit(**/src/**)`.442* **Правила allow**: `Edit(src/**)` соответствует только `<cwd>/src` и файлам внутри него. Чтобы разрешить имя каталога на любой глубине, напишите `Edit(**/src/**)`.

431* **Правила отказа и запроса**: `Read(secrets/**)` соответствует каталогу с именем `secrets` на любой глубине под текущим каталогом, поэтому правило также применяется к вложенным копиям.443* **Правила deny и ask**: `Read(secrets/**)` соответствует каталогу с именем `secrets` на любой глубине внутри текущего каталога, поэтому правило применяется и к вложенным копиям.

432 444 

433Каждая другая форма шаблона соответствует на одной и той же глубине в каждом типе правила: `Edit(/src/**)` и `Edit(src/components/**)` соответствуют только в их якорированном местоположении, в то время как `Edit(**/src/**)` соответствует на любой глубине.445Все остальные формы шаблонов сопоставляются на одной и той же глубине при любом типе правила: `Edit(/src/**)` и `Edit(src/components/**)` соответствуют только своему привязанному расположению, а `Edit(**/src/**)` — любой глубине.

434 446 

435Следующий пример показывает каждую форму шаблона против проекта с каталогом `src/` верхнего уровня и вложенной копией под `vendor/`:447В следующем примере показана каждая форма шаблона применительно к проекту с каталогом `src/` верхнего уровня и вложенной копией внутри `vendor/`:

436 448 

437```text theme={null}449```text theme={null}

438<current-directory>/450<current-directory>/


446 458 

447| Правило | Соответствует `src/app.ts` | Соответствует `vendor/pkg/src/lib.js` |459| Правило | Соответствует `src/app.ts` | Соответствует `vendor/pkg/src/lib.js` |

448| :- | :- | :- |460| :- | :- | :- |

449| `Edit(src/**)` как правило разрешения | Да | Нет |461| `Edit(src/**)` как правило allow | Да | Нет |

450| `Edit(src/**)` как правило отказа или запроса | Да | Да |462| `Edit(src/**)` как правило deny или ask | Да | Да |

451| `Edit(/src/**)` в любом типе правила | Да | Нет |463| `Edit(/src/**)` при любом типе правила | Да | Нет |

452| `Edit(**/src/**)` в любом типе правила | Да | Да |464| `Edit(**/src/**)` при любом типе правила | Да | Да |

453 465 

454<Note>466<Note>

455 В шаблонах gitignore `*` соответствует в одном сегменте пути и может появляться в любой позиции в шаблоне, в то время как `**` соответствует через каталоги.467 В шаблонах gitignore `*` сопоставляется в пределах одного сегмента пути и может стоять в любой позиции шаблона, а `**` сопоставляется через несколько каталогов.

456</Note>468</Note>

457 469 

458Когда вы одобряете путь файла с помощью «Да, и больше не спрашивать», Claude Code экранирует символы шаблона gitignore в этом пути, такие как `[`, `]` и `*`, поэтому сгенерированное правило соответствует только буквальному пути, который вы одобрили. Правила, которые вы пишете сами, не экранируются. До v2.1.202 Claude Code сохранял путь неэкранированным, поэтому сгенерированное правило для каталога с именем `[2024-06] Reports` могло не соответствовать собственному пути или соответствовать непредусмотренным соседним каталогам.470Когда вы одобряете путь к файлу с помощью «Yes, and don't ask again», Claude Code экранирует в этом пути символы шаблонов gitignore, такие как `[`, `]` и `*`, поэтому созданное правило соответствует только буквально одобренному вами пути. Правила, которые вы пишете сами, не экранируются. До v2.1.202 Claude Code сохранял путь без экранирования, поэтому созданное правило для каталога с именем `[2024-06] Reports` могло не соответствовать собственному пути или соответствовать непредусмотренным соседним каталогам.

459 471 

460Вам не нужно экранировать скобки в пути, поэтому `Edit(./Finance (2024)/**)` соответствует папке `Finance (2024)` как написано.472Экранировать круглые скобки в пути не нужно, поэтому `Edit(./Finance (2024)/**)` соответствует папке `Finance (2024)` в точном написании.

461 473 

462Правило отказа или запроса, чей путь не пригоден для использования в качестве шаблона gitignore, по-прежнему охраняет этот точный путь. Правило разрешения с непригодным шаблоном ничего не одобряет.474Правило deny или ask, путь которого нельзя использовать как шаблон gitignore, всё равно защищает именно этот путь. Правило allow с непригодным шаблоном ничего не одобряет.

463 475 

464Шаблон отказа или запроса, который начинается с `!`, является отрицанием gitignore. Он вырезает пути, которые он соответствует, из правил `path` или `./path`, перечисленных перед ним. В одном списке `deny` файла параметров `Read(*.env)`, за которым следует `Read(!sample.env)`, блокирует каждый файл, имя которого заканчивается на `.env` на любой глубине, за исключением файлов с именем `sample.env`. Правило `!`, перечисленное первым, ничего не вырезает.476Шаблон deny или ask, начинающийся с `!`, является отрицанием gitignore. Он исключает соответствующие ему пути из правил `path` или `./path`, перечисленных перед ним. В списке `deny` одного файла настроек `Read(*.env)`, за которым следует `Read(!sample.env)`, блокирует каждый файл с именем, оканчивающимся на `.env`, на любой глубине, кроме файлов с именем `sample.env`. Правило `!`, указанное первым, ничего не исключает.

465 477 

466Вырезание достигает только правил из одного источника. `Read(!.env)` в параметрах проекта или в `--disallowedTools` не отменяет `Read(./.env)` отказ из управляемых параметров или любого другого файла параметров.478Исключение затрагивает только правила из того же источника. `Read(!.env)` в настройках проекта или в `--disallowedTools` не отменяет правило deny `Read(./.env)` из управляемых настроек или любого другого файла настроек.

467 479 

468Два ограничения сужают то, что шаблон `!` может вырезать:480Два ограничения сужают то, что может исключить шаблон `!`:

469 481 

470* Claude Code читает шаблон `!` относительно текущего каталога даже когда после `!` следует `/`, `~/` или `//`, поэтому шаблон не может достичь правила, якорированного одним из этих префиксов. `Read(!~/notes/public/**)` вырезает ничего из `Read(~/notes/**)`.482* Claude Code читает шаблон `!` относительно текущего каталога, даже если за `!` следует `/`, `~/` или `//`, поэтому шаблон не может затронуть правило, привязанное с помощью одного из этих префиксов. `Read(!~/notes/public/**)` ничего не исключает из `Read(~/notes/**)`.

471* Вырезание не может переоткрыть файл внутри каталога, который правило блокирует целиком. С `Read(secrets/**)` и `Read(!secrets/public/**)`, Claude Code по-прежнему блокирует `secrets/public` вместе с остальной частью `secrets`.483* Исключение не может снова открыть файл внутри каталога, который правило блокирует целиком. При `Read(secrets/**)` и `Read(!secrets/public/**)` Claude Code по-прежнему блокирует `secrets/public` вместе с остальной частью `secrets`.

472 484 

473<h4 id="symlinks">485<h4 id="symlinks">

474 Символические ссылки486 Символические ссылки

475</h4>487</h4>

476 488 

477Когда путь файла, который запрашивает Claude, проходит через символическую ссылку, проверка разрешения охватывает два пути: тот, который запросил Claude, и файл, на который он разрешается. Это применяется к символическим ссылкам на macOS, Linux и Windows, а также к соединениям каталогов в Windows.489Когда путь к файлу, запрошенный Claude, проходит через символическую ссылку, проверка разрешений охватывает два пути: запрошенный Claude и файл, в который он разрешается. Это относится к символическим ссылкам в macOS, Linux и Windows, а также к точкам соединения каталогов (junctions) в Windows.

478 490 

479<h5 id="how-rules-match-a-symlinked-path">491<h5 id="how-rules-match-a-symlinked-path">

480 Как правила соответствуют пути со ссылкой492 Как правила сопоставляются с путём через символическую ссылку

481</h5>493</h5>

482 494 

483Правила разрешения и отказа рассматривают запрошенный путь и файл, на который он разрешается, по-разному:495Правила allow и deny по-разному обрабатывают запрошенный путь и файл, в который он разрешается:

484 496 

485* **Правила разрешения**: применяются только когда оба запрошенный путь и файл, на который он разрешается, соответствуют. Чтение через символическую ссылку внутри разрешённого каталога, которая указывает вне его, не соответствует правилу.497* **Правила allow**: применяются, только если соответствуют и запрошенный путь, и файл, в который он разрешается. Чтение через символическую ссылку внутри разрешённого каталога, указывающую за его пределы, не соответствует правилу.

486* **Правила отказа**: применяются когда либо запрошенный путь, либо файл, на который он разрешается, соответствует. Символическая ссылка, которая указывает на запрещённый файл, сама запрещена. Например, с `Read(./project/**)` разрешённым и `Read(~/.ssh/**)` запрещённым, символическая ссылка в `./project/key`, указывающая на `~/.ssh/id_rsa`, блокируется: цель не проходит правило разрешения и соответствует правилу отказа.498* **Правила deny**: применяются, если соответствует либо запрошенный путь, либо файл, в который он разрешается. Символическая ссылка, указывающая на запрещённый файл, сама запрещена. Например, если `Read(./project/**)` разрешено, а `Read(~/.ssh/**)` запрещено, символическая ссылка `./project/key`, указывающая на `~/.ssh/id_rsa`, блокируется: цель не проходит правило allow и соответствует правилу deny.

487 499 

488На macOS и Linux правило отказа или запроса, написанное через символический каталог с шаблоном `//`, `~/` или `/`, также применяется в реальном местоположении каталога. Например, на macOS, где `/etc` разрешается в `/private/etc`, `Read(//etc/**)` также блокирует `/private/etc/hosts`. До v2.1.268 правило отказа или запроса, написанное через символический каталог, не применялось к пути, заданному его реальным местоположением.500В macOS и Linux правило deny или ask, написанное через каталог-символическую ссылку с шаблоном `//`, `~/` или `/`, применяется также к реальному расположению каталога. Например, в macOS, где `/etc` разрешается в `/private/etc`, `Read(//etc/**)` блокирует и `/private/etc/hosts`. До v2.1.268 правило deny или ask, написанное через каталог-символическую ссылку, не применялось к пути, заданному через его реальное расположение.

489 501 

490Grep и Glob ищут каталог, на который разрешается аргумент `path`. Claude Code применяет правила отказа `Read` к этому каталогу.502Grep и Glob выполняют поиск в каталоге, в который разрешается аргумент `path`. Claude Code применяет к этому каталогу правила deny для `Read`.

491 503 

492<h5 id="writes-through-a-symlink">504<h5 id="writes-through-a-symlink">

493 Записи через символическую ссылку505 Запись через символическую ссылку

494</h5>506</h5>

495 507 

496Если путь, который Claude просит отредактировать или написать, сам является символической ссылкой, инструменты Edit и Write [отказывают в записи и направляют Claude к цели ссылки](/docs/ru/errors#refusing-after-a-symlink-changed).508Если путь, который Claude просит отредактировать или записать, сам является символической ссылкой, инструменты Edit и Write [отказываются выполнять запись и направляют Claude к цели ссылки](/docs/ru/errors#refusing-after-a-symlink-changed).

497 509 

498Запись всё ещё может пройти через символическую ссылку, когда каталог на пути к файлу является символической ссылкой, или когда команда Bash или PowerShell выполняет запись. Для этих записей то, что происходит, зависит от того, где файл, на который разрешается запись, находится относительно ваших [рабочих каталогов](#working-directories) и [защищённых путей](/docs/ru/permission-modes#protected-paths):510Запись всё же может пройти через символическую ссылку, если символической ссылкой является каталог на пути к файлу или если запись выполняет команда Bash или PowerShell. Для таких записей результат зависит от того, где находится файл, в который разрешается запись, относительно ваших [рабочих каталогов](#working-directories) и [защищённых путей](/docs/ru/permission-modes#protected-paths):

499 511 

500* **Разрешается вне рабочих каталогов**: когда запрошенный путь находится внутри ваших рабочих каталогов, а файл, на который он разрешается, нет, запись не автоматически одобряется в режиме [`acceptEdits`](/docs/ru/permission-modes#auto-approve-file-edits-with-acceptedits-mode). В [автоматическом режиме](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), если правило разрешения не одобряет запись, вам предлагается выбор вместо того, чтобы классификатор решал. Запрос называет путь, на который разрешается запись.512* **Разрешается за пределы рабочих каталогов**: когда запрошенный путь находится внутри ваших рабочих каталогов, а файл, в который он разрешается, — нет, запись не одобряется автоматически в [режиме `acceptEdits`](/docs/ru/permission-modes#auto-approve-file-edits-with-acceptedits-mode). В [авторежиме](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), если запись не одобрена правилом allow, подтверждение запрашивается у вас, а не решается классификатором. В запросе указывается путь, в который разрешается запись.

501* **Разрешается к защищённому пути, который запрошенный путь не называет**: таблица [защищённых путей](/docs/ru/permission-modes#protected-paths) даёт результат для каждого режима разрешений, за исключением того, что где таблица маршрутизирует запись классификатору, эта запись вместо этого вас запрашивает.513* **Разрешается в защищённый путь, который не назван в запрошенном пути**: [таблица защищённых путей](/docs/ru/permission-modes#protected-paths) указывает результат для каждого режима разрешений, за исключением того, что там, где таблица направляет запись классификатору, для этой записи подтверждение запрашивается у вас.

502 514 

503<h5 id="paths-that-can’t-be-resolved-or-that-change">515<h5 id="paths-that-can’t-be-resolved-or-that-change">

504 Пути, которые не могут быть разрешены или которые изменяются516 Пути, которые невозможно разрешить или которые изменяются

505</h5>517</h5>

506 518 

507Когда Claude Code не может определить, где путь ведёт на диск, например потому что символические ссылки на нём образуют цикл, инструменты Read, Edit и Write [отказывают в операции](/docs/ru/errors#refusing-after-a-symlink-changed).519Когда Claude Code не может определить, куда ведёт путь на диске, например потому, что символические ссылки на нём образуют цикл, инструменты Read, Edit и Write [отказываются выполнять операцию](/docs/ru/errors#refusing-after-a-symlink-changed).

520 

521Когда инструмент затем открывает одобренный файл, он [проверяет, что путь по-прежнему разрешается в расположение, одобренное проверкой разрешений](/docs/ru/errors#refusing-after-a-symlink-changed).

522 

523<h4 id="network-paths">

524 Сетевые пути

525</h4>

526 

527Когда инструменты Claude для чтения файлов, такие как Read, Grep и Glob, читают по сетевому пути, чтение проходит собственную проверку разрешений. Сетевой путь — это путь, который может вести на другой компьютер: в Windows это путь UNC, например `\\server\share\file`, а в macOS и Linux — путь автомонтирования `/net`, например `/net/fileserver/notes.txt`. Поиск такого пути может обратиться к указанному в нём хосту, а в Windows такое обращение может отправить хосту ваши учётные данные. У shell-команд есть собственная проверка: в ручном режиме команда Bash или PowerShell только для чтения, аргументы которой включают путь UNC, [всё равно запрашивает подтверждение в Windows](#read-only-commands).

528 

529В Claude Code v2.1.292 и новее запрос подтверждения сохраняется в каждом из следующих случаев:

530 

531* **Правила allow**: правило не одобряет чтение заранее, включая правило для всего инструмента, например `Read`

532* **Хуки PreToolUse**: [хук](#extend-permissions-with-hooks), который возвращает `"allow"`, не отменяет запрос подтверждения

533* **Авторежим**: запрос приходит вам, и [классификатор](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) не принимает решение о чтении

534 

535В режиме `dontAsk` Claude Code отклоняет чтение вместо запроса подтверждения. В режиме `bypassPermissions`, а также в интерактивных сессиях терминала в режиме планирования при доступном [обходе разрешений](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) чтение выполняется без этого запроса.

536 

537Чтобы читать файлы на сетевом ресурсе без этого запроса, сначала назначьте ресурсу локальный путь:

508 538 

509Когда инструмент затем открывает одобренный файл, он [подтверждает, что путь по-прежнему разрешается в местоположение, которое проверка разрешения одобрила](/docs/ru/errors#refusing-after-a-symlink-changed).539* **Windows**: подключите ресурс как букву диска и передайте диск через `--add-dir` при запуске Claude Code, как описано в разделе [Рабочие каталоги](#working-directories)

540* **macOS и Linux**: смонтируйте ресурс по локальному пути, например в каталог внутри `/mnt` или `/Volumes`, и читайте файлы оттуда, как описано в разделе [Рабочий каталог является сетевым путём](/docs/ru/errors#working-directory-is-a-network-path)

510 541 

511<h3 id="webfetch">542<h3 id="webfetch">

512 WebFetch543 WebFetch

513</h3>544</h3>

514 545 

515Правила WebFetch используют префикс `domain:` и соответствуют имени хоста запрошенного URL. Сопоставление не чувствительно к регистру, поддерживает подстановки `*` и удаляет конечную точку из правила и имени хоста, поэтому `example.com.` и `example.com` рассматриваются одинаково.546Правила WebFetch используют префикс `domain:` и сопоставляются с именем хоста запрошенного URL. Сопоставление не зависит от регистра, поддерживает подстановочные знаки `*` и удаляет завершающую `.` как из правила, так и из имени хоста, поэтому `example.com.` и `example.com` считаются одинаковыми.

516 547 

517* `WebFetch(domain:example.com)` соответствует запросам к `example.com`548* `WebFetch(domain:example.com)` соответствует только запросам к `example.com`. Чтобы охватить также поддомены, например `api.example.com`, добавьте правило `WebFetch(domain:*.example.com)`

518* `WebFetch(domain:*.example.com)` соответствует любому поддомену на любой глубине, такому как `api.example.com` или `a.b.example.com`, но не самому `example.com`549* `WebFetch(domain:*.example.com)` соответствует любому поддомену на любой глубине, например `api.example.com` или `a.b.example.com`, но не самому `example.com`

519* `WebFetch(domain:*)` соответствует каждому домену. Это не то же самое, что голое правило `WebFetch`; см. [Разрешить или запретить каждую выборку](#allow-or-deny-every-fetch)550* `WebFetch(domain:*)` соответствует любому домену. Это не то же самое, что простое правило `WebFetch`; см. [Разрешение или запрет всех загрузок](#allow-or-deny-every-fetch)

520 551 

521В любой позиции, отличной от начального `*.` или голого `*`, подстановка соответствует только тексту между двумя точками. `WebFetch(domain:example.*)` соответствует `example.org`, где `*` становится `org`, но не `example.evil.com`, где `*` пришлось бы стать `evil.com` и пересечь точку. Это предотвращает конечную подстановку от соответствия доменам, которые злоумышленник мог бы зарегистрировать.552В любой позиции, кроме начального `*.` или одиночного `*`, подстановочный знак соответствует только тексту между двумя точками. `WebFetch(domain:example.*)` соответствует `example.org`, где `*` становится `org`, но не `example.evil.com`, где `*` пришлось бы стать `evil.com` и пересечь точку. Это не позволяет завершающему подстановочному знаку соответствовать доменам, которые может зарегистрировать злоумышленник.

522 553 

523Подстановки в правилах `WebFetch` требуют Claude Code v2.1.172 или позже для соответствия выборкам.554Чтобы подстановочные знаки в правилах `WebFetch` сопоставлялись с загрузками, требуется Claude Code v2.1.172 или новее.

524 555 

525<h4 id="allow-or-deny-every-fetch">556<h4 id="allow-or-deny-every-fetch">

526 Разрешить или запретить каждую выборку557 Разрешение или запрет всех загрузок

527</h4>558</h4>

528 559 

529Голое правило `WebFetch` — это имя инструмента без части `domain:`, такое как `"deny": ["WebFetch"]`. Оно и `WebFetch(domain:*)` охватывают каждый URL, но Claude Code применяет их по-разному, и только форма `domain:` также добавляет свой домен в [список разрешённых или запрещённых доменов](/docs/ru/sandboxing#network-isolation) песочницы. Этот раздел перечисляет формы подстановки, которые песочница поддерживает, и версию, которая добавила голый `*`.560Простое правило `WebFetch` — это имя инструмента без части `domain:`, например `"deny": ["WebFetch"]`. И оно, и `WebFetch(domain:*)` охватывают любой URL, но Claude Code применяет их по-разному, и только форма `domain:` также добавляет свой домен в [список разрешённых или запрещённых доменов](/docs/ru/sandboxing#network-isolation) песочницы. В том разделе перечислены формы с подстановочными знаками, которые учитывает песочница, и версия, в которой был добавлен одиночный `*`.

530 561 

531Каждая строка показывает, что правило делает в списке `allow` и в списке `deny`:562В каждой строке показано, что делает правило в списке `allow` и в списке `deny`:

532 563 

533| Правило | В `allow` | В `deny` |564| Правило | В `allow` | В `deny` |

534| :- | :- | :- |565| :- | :- | :- |

535| `WebFetch` | Claude выполняет выборку без запроса вас. Не изменяет, какие хосты могут достичь команды в песочнице. | Claude Code удаляет инструмент `WebFetch`, поэтому Claude вообще не может выполнять выборку. Не изменяет, какие хосты могут достичь команды в песочнице. |566| `WebFetch` | Claude загружает страницы без запроса подтверждения. Не меняет набор хостов, к которым могут обращаться команды в песочнице. | Claude Code удаляет инструмент `WebFetch`, поэтому Claude вообще не может загружать страницы. Не меняет набор хостов, к которым могут обращаться команды в песочнице. |

536| `WebFetch(domain:*)` | Claude выполняет выборку без запроса вас, и команды в песочнице могут достичь любого хоста. | Claude Code сохраняет инструмент и отказывает в каждой выборке, и команды в песочнице не могут достичь никакого хоста. |567| `WebFetch(domain:*)` | Claude загружает страницы без запроса подтверждения, а команды в песочнице могут обращаться к любому хосту. | Claude Code сохраняет инструмент и отклоняет каждую загрузку, а команды в песочнице не могут обращаться ни к одному хосту. |

537 568 

538Две формы также отличаются при чтении [артефактов](/docs/ru/artifacts), страниц, которые инструмент Artifact публикует на claude.ai. Голое правило отказа или запроса `WebFetch` не применяется к этим чтениям. Правило `domain:`, охватывающее `claude.ai` или хост содержимого `*.claudeusercontent.com`, такое как `WebFetch(domain:claude.ai)` или `WebFetch(domain:*)`, отказывает в каждом чтении или запрашивает перед ним. Правило [`Artifact`](/docs/ru/artifacts#disable-artifacts) делает то же самое.569Эти две формы также различаются при чтении [артефактов](/docs/ru/artifacts) — страниц, которые инструмент Artifact публикует на claude.ai. Простое правило deny или ask для `WebFetch` не применяется к таким чтениям. Правило `domain:`, охватывающее `claude.ai` или хост содержимого `*.claudeusercontent.com`, например `WebFetch(domain:claude.ai)` или `WebFetch(domain:*)`, отклоняет каждое чтение или запрашивает подтверждение перед ним. [Правило `Artifact`](/docs/ru/artifacts#disable-artifacts) делает то же самое.

539 570 

540Когда правило блокирует чтение, отказ называет правило. До v2.1.268 голое правило отказа `WebFetch` блокировало каждое чтение артефакта, и голое правило запроса запрашивало перед каждым.571Когда правило блокирует чтение, в сообщении об отказе указывается это правило. До v2.1.268 простое правило deny для `WebFetch` блокировало каждое чтение артефакта, а простое правило ask запрашивало подтверждение перед каждым из них.

541 572 

542Чтобы позволить Claude выполнять выборку свободно, сохраняя список разрешений песочницы как есть, используйте голую форму. Этот `settings.json` делает это:573Чтобы позволить Claude свободно загружать страницы, сохранив список разрешённых доменов песочницы без изменений, используйте простую форму. Этот `settings.json` делает именно это:

543 574 

544```json theme={null}575```json theme={null}

545{576{


549}580}

550```581```

551 582 

552Когда вы просите Claude выполнить выборку страницы, он выполняет её без запроса. Когда вы просите его запустить [изолированный в песочнице](/docs/ru/sandboxing) `curl` против хоста вне списка разрешений песочницы, Claude Code по-прежнему запрашивает вас для этого хоста, потому что голое правило не добавило хост в список разрешений.583Когда вы просите Claude загрузить страницу, он загружает её без запроса подтверждения. Когда вы просите его выполнить `curl` [в песочнице](/docs/ru/sandboxing) к хосту вне списка разрешённых доменов песочницы, Claude Code всё равно запрашивает у вас подтверждение для этого хоста, поскольку простое правило не добавило хост в список разрешённых доменов.

553 584 

554В [автоматическом режиме](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), Claude вместо этого называет хост в [разрешённых доменах для каждой команды](/docs/ru/sandboxing#per-command-allowed-domains-in-auto-mode) классификатора для проверки.585В [авторежиме](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) Claude вместо этого указывает хост в [разрешённых доменах для отдельной команды](/docs/ru/sandboxing#per-command-allowed-domains-in-auto-mode), чтобы их проверил классификатор.

555 586 

556<h3 id="mcp">587<h3 id="mcp">

557 MCP588 MCP

558</h3>589</h3>

559 590 

560Правила MCP используют имя сервера в соответствии с конфигурацией Claude Code, опционально за которым следует имя инструмента от этого сервера.591Правила MCP используют имя сервера в том виде, в каком оно настроено в Claude Code, за которым может следовать имя инструмента этого сервера.

561 592 

562* `mcp__puppeteer` соответствует любому инструменту, предоставленному сервером `puppeteer`593* `mcp__puppeteer` соответствует любому инструменту, предоставляемому сервером `puppeteer`

563* `mcp__puppeteer__*` использует синтаксис подстановки и также соответствует всем инструментам от сервера `puppeteer`594* `mcp__puppeteer__*` использует синтаксис подстановочных знаков и также соответствует всем инструментам сервера `puppeteer`

564* `mcp__puppeteer__puppeteer_navigate` соответствует инструменту `puppeteer_navigate`, предоставленному сервером `puppeteer`595* `mcp__puppeteer__puppeteer_navigate` соответствует инструменту `puppeteer_navigate`, предоставляемому сервером `puppeteer`

565 596 

566Если ваша организация установила инструмент [claude.ai connector](/docs/ru/mcp#organization-controls-on-connector-tools) на `ask` и эта настройка достигает Claude Code в вашем сеансе, правила разрешения для этого инструмента не вступают в силу: Claude Code запрашивает при каждом вызове, даже в режимах `auto` и `bypassPermissions`. В режиме `dontAsk`, который никогда не запрашивает, Claude Code вместо этого отказывает в вызове. Инструменты от коннекторов, которые Claude Code получает сам, появляются как `mcp__claude_ai_<server>__<tool>`.597Если ваша организация установила для инструмента [коннектора claude.ai](/docs/ru/mcp#organization-controls-on-connector-tools) значение `ask` и эта настройка доходит до Claude Code в вашей сессии, правила allow для этого инструмента не действуют: Claude Code запрашивает подтверждение при каждом вызове, даже в режимах `auto` и `bypassPermissions`. В режиме `dontAsk`, который никогда не запрашивает подтверждение, Claude Code вместо этого отклоняет вызов. Инструменты из коннекторов, которые Claude Code загружает сам, отображаются как `mcp__claude_ai_<server>__<tool>`.

567 598 

568В сеансе [Cowork](https://claude.com/docs/cowork/overview) в приложении Claude Desktop, Claude запускает команды оболочки через инструмент `mcp__workspace__bash` Cowork вместо встроенного инструмента `Bash`, и Cowork также предоставляет `mcp__workspace__web_fetch` для выборок в сети. Claude Code также применяет правила отказа, которые называют весь инструмент `Bash` или `WebFetch`, к этим инструментам Cowork, поэтому управляемое правило отказа `Bash` останавливает Claude от запуска команд оболочки в Cowork. Когда Claude Code блокирует такой вызов, сообщение называет инструмент Cowork: `Permission to use mcp__workspace__bash has been denied.` Правила разрешения не переносятся: Claude Code никогда не применяет правило разрешения `Bash` к `mcp__workspace__bash`.599В сессии [Cowork](https://claude.com/docs/cowork/overview) в приложении Claude Desktop Claude выполняет shell-команды через инструмент Cowork `mcp__workspace__bash`, а не через встроенный инструмент `Bash`, и Cowork аналогично предоставляет `mcp__workspace__web_fetch` для веб-загрузок. Claude Code также применяет к этим инструментам Cowork правила deny, называющие весь инструмент `Bash` или `WebFetch`, поэтому управляемое правило deny для `Bash` не даёт Claude выполнять shell-команды в Cowork. Когда Claude Code блокирует такой вызов, в сообщении указывается инструмент Cowork: `Permission to use mcp__workspace__bash has been denied.` Правила allow не переносятся: Claude Code никогда не применяет правило allow для `Bash` к `mcp__workspace__bash`.

569 600 

570<h3 id="agent-subagents">601<h3 id="agent-subagents">

571 Agent (подагенты)602 Agent (субагенты)

572</h3>603</h3>

573 604 

574Используйте правила `Agent(AgentName)` для управления, какие [подагенты](/docs/ru/sub-agents) может использовать Claude:605Используйте правила `Agent(AgentName)`, чтобы управлять тем, какие [субагенты](/docs/ru/sub-agents) может использовать Claude:

575 606 

576* `Agent(Explore)` соответствует подагенту Explore607* `Agent(Explore)` соответствует субагенту Explore

577* `Agent(Plan)` соответствует подагенту Plan608* `Agent(Plan)` соответствует субагенту Plan

578* `Agent(my-custom-agent)` соответствует пользовательскому подагенту с именем `my-custom-agent`609* `Agent(my-custom-agent)` соответствует пользовательскому субагенту с именем `my-custom-agent`

579 610 

580Добавьте эти правила в массив `deny` в ваших параметрах или используйте флаг CLI `--disallowedTools` для отключения конкретных агентов. Чтобы отключить агент Explore:611Добавьте эти правила в массив `deny` в ваших настройках или используйте флаг CLI `--disallowedTools`, чтобы отключить определённых агентов. Чтобы отключить агента Explore:

581 612 

582```json theme={null}613```json theme={null}

583{614{


591 Cd622 Cd

592</h3>623</h3>

593 624 

594Правила `Cd` управляют, в какие каталоги команда [`/cd`](/docs/ru/commands) может переместить сеанс. `Cd` не является инструментом, вызываемым моделью: Claude не может его вызвать, и правила применяются только когда вы сами запускаете `/cd`.625Правила `Cd` управляют тем, в какие каталоги [команда `/cd`](/docs/ru/commands) может переместить сессию. `Cd` не является инструментом, вызываемым моделью: Claude не может его вызвать, и правила применяются только тогда, когда вы сами запускаете `/cd`.

595 626 

596Голое правило отказа `Cd` отключает `/cd` полностью. Правило отказа `Cd(<path-pattern>)` блокирует соответствующие цели. Правила отказа проверяют каждое написание цели, включая каждый скачок символической ссылки, на который она разрешается, поэтому правило, написанное для одного пути, также блокирует цели, которые разрешаются в него.627Простое правило deny `Cd` полностью отключает `/cd`. Правило deny `Cd(<path-pattern>)` блокирует соответствующие цели. Правила deny проверяют каждое написание цели, включая каждый переход по символической ссылке, через который она разрешается, поэтому правило, написанное для одного пути, также блокирует цели, которые в него разрешаются.

597 628 

598Добавление любого правила разрешения `Cd` переключает `/cd` в режим списка разрешений: разрешённый целевой каталог должен соответствовать одному из ваших правил разрешения, или `/cd` отказывает. Без правил `Cd`, настроенных, `/cd` сохраняет своё поведение по умолчанию и запрашивает вас доверять незнакомому каталогу.629Добавление любого правила allow `Cd` переводит `/cd` в режим списка разрешённых каталогов: разрешённый целевой каталог должен соответствовать одному из ваших правил allow, иначе `/cd` откажет. Если правила `Cd` не настроены, `/cd` сохраняет поведение по умолчанию и запрашивает у вас подтверждение доверия незнакомому каталогу.

599 630 

600Шаблоны путей делят якоря `//`, `~/` и `/` из [правил Read и Edit](#read-and-edit), но сопоставление якорировано к целому пути каталога, а не в стиле gitignore. `*` соответствует ровно одному сегменту пути и `**` соответствует через сегменты. Конечный `/**` также соответствует его названному корню.631Шаблоны путей используют те же точки привязки `//`, `~/` и `/`, что и [правила Read и Edit](#read-and-edit), но сопоставление привязано ко всему пути каталога, а не выполняется в стиле gitignore. `*` соответствует ровно одному сегменту пути, а `**` — нескольким сегментам. Завершающий `/**` также соответствует названному корню.

601 632 

602| Правило | Соответствует | Не соответствует |633| Правило | Соответствует | Не соответствует |

603| - | - | - |634| - | - | - |

604| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`, `~/code` |635| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`, `~/code` |

605| `Cd(~/code/**)` | `~/code` и любой каталог под ним | каталоги вне `~/code` |636| `Cd(~/code/**)` | `~/code` и любому каталогу внутри него | каталогам вне `~/code` |

606| `Cd(**/node_modules)` | любой каталог `node_modules` на любой глубине под текущим каталогом | `node_modules/pkg` |637| `Cd(**/node_modules)` | любому каталогу `node_modules` на любой глубине внутри текущего каталога | `node_modules/pkg` |

607 638 

608<h2 id="extend-permissions-with-hooks">639<h2 id="extend-permissions-with-hooks">

609 Расширение разрешений с помощью hooks640 Расширение разрешений с помощью hooks


622 653 

623См. [Решить, доверять ли mod](/docs/ru/plugins/mods/overview#decide-whether-to-trust-a-mod) или [Управление mod для вашей организации](/docs/ru/plugins/mods/admin#know-what-happens-by-default), если вы развёртываете управляемые параметры.654См. [Решить, доверять ли mod](/docs/ru/plugins/mods/overview#decide-whether-to-trust-a-mod) или [Управление mod для вашей организации](/docs/ru/plugins/mods/admin#know-what-happens-by-default), если вы развёртываете управляемые параметры.

624 655 

625Инструменты MCP, отмеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), также по-прежнему запрашивают, когда hook возвращает `"allow"`, как и инструменты соединителя [установленные вашей организацией на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) в сеансах, где эта настройка достигает Claude Code.656Для [инструмента, требующего взаимодействия с пользователем](/docs/ru/permission-modes#actions-no-mode-auto-approves), например `AskUserQuestion` или инструмента MCP, отмеченного `requiresUserInteraction`, подтверждение мода через `tool.check` не пропускает запрос разрешения. Требуется Claude Code v2.1.292 или новее. Инструменты MCP, отмеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), также по-прежнему запрашивают подтверждение, когда хук возвращает `"allow"`, как и чтение из [сетевых путей](#network-paths) и инструменты коннекторов, [для которых ваша организация установила `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, где эта настройка доходит до Claude Code.

626 657 

627Блокирующий hook также имеет приоритет над правилами allow. Hook, который выходит с кодом 2, останавливает вызов инструмента перед оценкой правил разрешений, поэтому блокировка применяется даже когда правило allow иначе позволило бы вызову продолжиться. Чтобы запустить все Bash команды без запросов, кроме нескольких, которые вы хотите заблокировать, добавьте `"Bash"` в список allow и зарегистрируйте PreToolUse hook, который отклоняет эти конкретные команды. См. [Блокировка редактирования защищённых файлов](/docs/ru/hooks-guide#block-edits-to-protected-files) для скрипта hook, который вы можете адаптировать.658Блокирующий hook также имеет приоритет над правилами allow. Hook, который выходит с кодом 2, останавливает вызов инструмента перед оценкой правил разрешений, поэтому блокировка применяется даже когда правило allow иначе позволило бы вызову продолжиться. Чтобы запустить все Bash команды без запросов, кроме нескольких, которые вы хотите заблокировать, добавьте `"Bash"` в список allow и зарегистрируйте PreToolUse hook, который отклоняет эти конкретные команды. См. [Блокировка редактирования защищённых файлов](/docs/ru/hooks-guide#block-edits-to-protected-files) для скрипта hook, который вы можете адаптировать.

628 659 


636* **Во время сеанса**: используйте команду `/add-dir`667* **Во время сеанса**: используйте команду `/add-dir`

637* **Постоянная конфигурация**: добавьте в `additionalDirectories` в [файлы параметров](/docs/ru/settings#where-settings-live)668* **Постоянная конфигурация**: добавьте в `additionalDirectories` в [файлы параметров](/docs/ru/settings#where-settings-live)

638 669 

639Файлы в дополнительных каталогах следуют тем же правилам разрешений, что и исходный рабочий каталог: они становятся читаемыми без запросов, и разрешения на редактирование файлов следуют текущему режиму разрешений.670Файлы в дополнительных каталогах подчиняются тем же правилам разрешений, что и исходный рабочий каталог: они становятся доступными для чтения без запросов разрешения, за исключением проверки [сетевого пути](#network-paths), а разрешения на редактирование файлов определяются текущим режимом разрешений.

640 671 

641Вы не можете добавить большинство [сетевых путей](/docs/ru/errors#working-directory-is-a-network-path), таких как общая папка UNC `\\server\share`, в качестве рабочих каталогов, потому что поиск может связаться с хостом, который она называет. На Windows вместо этого сопоставьте общую папку с буквой диска и передайте диск с помощью `--add-dir` при запуске.672Вы не можете добавить большинство [сетевых путей](/docs/ru/errors#working-directory-is-a-network-path), таких как общая папка UNC `\\server\share`, в качестве рабочих каталогов, потому что поиск может связаться с хостом, который она называет. На Windows вместо этого сопоставьте общую папку с буквой диска и передайте диск с помощью `--add-dir` при запуске.

642 673 


648 Переместить сеанс в другой каталог679 Переместить сеанс в другой каталог

649</h3>680</h3>

650 681 

651Чтобы переместить сеанс в другой основной рабочий каталог, вместо [добавления каталога](#working-directories) рядом с текущим, запустите `/cd <path>`. Claude Code сохраняет беседу, загружает `CLAUDE.md` нового каталога и предлагает вам [доверить рабочему пространству](#project-allow-rules-and-workspace-trust), если вы в нём раньше не работали. После этого Claude Code [находит перемещённый сеанс](/docs/ru/sessions#resume-a-session), когда вы запускаете `--resume` из нового каталога.682Чтобы переместить сессию в другой основной рабочий каталог, вместо [добавления каталога](#working-directories) рядом с текущим, выполните `/cd <path>`. Claude Code сохраняет диалог, загружает `CLAUDE.md` нового каталога и предлагает вам [доверять рабочему пространству](#project-allow-rules-and-workspace-trust), если вы в нём раньше не работали. После этого Claude Code [находит перемещённую сессию](/docs/ru/sessions#where-the-session-picker-looks), когда вы запускаете `--resume` из нового каталога.

652 683 

653Как только вы переместитесь, Claude Code применяет конфигурацию проекта нового каталога:684Как только вы переместитесь, Claude Code применяет конфигурацию проекта нового каталога:

654 685 

Details

790 790 

791Hooks в `hooks/hooks.json` и в ключе манифеста `hooks` оба загружаются. Для каждого события и его payload см. [Hook events](/docs/ru/hooks#hook-events).791Hooks в `hooks/hooks.json` и в ключе манифеста `hooks` оба загружаются. Для каждого события и его payload см. [Hook events](/docs/ru/hooks#hook-events).

792 792 

793Если у другого включённого плагина такое же имя, один из двух регистрирует хуки из своего `hooks/hooks.json`, а хуки другого не подключаются. Какой именно, а также уведомление в `/plugin`, которое сообщает об этом, см. в разделе [Хуки, когда два включённых плагина имеют одинаковое имя](/docs/ru/plugins/loading#hooks-when-two-enabled-plugins-share-a-name).

794 

793Чтобы написать hooks как функции JavaScript, которые запускаются внутри Claude Code и могут рисовать в его интерфейсе, перечислите файл модуля под ключом `modules` в том же `hooks/hooks.json`. Плагин с одним — это мод. См. [Create a mod](/docs/ru/plugins/mods/create).795Чтобы написать hooks как функции JavaScript, которые запускаются внутри Claude Code и могут рисовать в его интерфейсе, перечислите файл модуля под ключом `modules` в том же `hooks/hooks.json`. Плагин с одним — это мод. См. [Create a mod](/docs/ru/plugins/mods/create).

794 796 

795<h4 id="when-plugin-hooks-fire">797<h4 id="when-plugin-hooks-fire">

Details

209* **Плагин с собственным репозиторием**: установка не удаётся с сообщением, содержащим `Dependency "secrets-vault@your-marketplace" has no git tag satisfying`.209* **Плагин с собственным репозиторием**: установка не удаётся с сообщением, содержащим `Dependency "secrets-vault@your-marketplace" has no git tag satisfying`.

210* **Плагин, на который ссылается относительный путь**: установка использует текущую копию маркетплейса вместо этого, и ограничение проверяется при загрузке плагина. Если эта копия находится вне диапазона, зависимый плагин остаётся отключённым и `claude plugin list` показывает `Requires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0`.210* **Плагин, на который ссылается относительный путь**: установка использует текущую копию маркетплейса вместо этого, и ограничение проверяется при загрузке плагина. Если эта копия находится вне диапазона, зависимый плагин остаётся отключённым и `claude plugin list` показывает `Requires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0`.

211 211 

212Для плагина, на который маркетплейс ссылается относительным путём, маркетплейс, который вы добавили как путь локальной папки, также разрешает ограничения против git-меток этой папки, когда папка является git-репозиторием. Это требует Claude Code v2.1.196 или позже. Локальная папка, которая не является git-репозиторием, не имеет меток, поэтому Claude Code устанавливает зависимость из текущего содержимого папки вместо этого.212Для плагина, на который маркетплейс ссылается относительным путём, маркетплейс, который вы добавили как путь локальной папки, также разрешает ограничения против git-меток этой папки, когда папка является git-репозиторием. Локальная папка, которая не является git-репозиторием, не имеет меток, поэтому Claude Code устанавливает зависимость из текущего содержимого папки вместо этого.

213 213 

214<h3 id="confirm-the-resolved-version">214<h3 id="confirm-the-resolved-version">

215 Подтвердить разрешённую версию215 Подтвердить разрешённую версию

Details

144Эти источники записей не нуждаются в учетной записи git:144Эти источники записей не нуждаются в учетной записи git:

145 145 

146* **`archive`**: zip, загруженный по HTTPS. Пользователям не нужны ни `git`, ни учетная запись, только сетевой доступ к URL. Требует Claude Code v2.1.224 или позже. Закрепите каждый архив с `sha256`, чтобы Claude Code отказал в измененной загрузке. Чтобы отправить учетные данные с загрузкой, смотрите [Authenticate archive downloads](#authenticate-archive-downloads).146* **`archive`**: zip, загруженный по HTTPS. Пользователям не нужны ни `git`, ни учетная запись, только сетевой доступ к URL. Требует Claude Code v2.1.224 или позже. Закрепите каждый архив с `sha256`, чтобы Claude Code отказал в измененной загрузке. Чтобы отправить учетные данные с загрузкой, смотрите [Authenticate archive downloads](#authenticate-archive-downloads).

147* **Публичный git репозиторий**: Claude Code клонирует публичный источник `url` или `git-subdir` по HTTPS без учетных данных, когда запись дает URL `https://`. Для источника `github` или источника `git-subdir`, написанного как `owner/repo`, пользователи без набора ключа GitHub SSH устанавливают `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`.147* **Публичный git-репозиторий**: Claude Code клонирует публичный источник `url` или `git-subdir` по HTTPS без учётных данных, если в записи указан URL `https://`. Для источника `github` или источника `git-subdir`, записанного как `owner/repo`, попросите пользователей без SSH-ключа GitHub установить `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`.

148 

149Оставьте `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1` в своих инструкциях, даже если `claude plugin install` без этой переменной успешно выполняется из оболочки на машине без SSH-ключа. Для источника `github` эта команда может самостоятельно переключиться на HTTPS, выведя `SSH not configured, cloning via HTTPS`. Установки через `/plugin` внутри сессии и обновления плагинов не переключаются, поэтому без этой переменной они завершаются ошибкой у пользователей, у которых нет SSH-ключа GitHub.

148 150 

149Для команды в одной сети marketplace `directory` на общей файловой системе также работает без учетных записей git. Пользователям нужен только доступ на чтение к пути.151Для команды в одной сети marketplace `directory` на общей файловой системе также работает без учетных записей git. Пользователям нужен только доступ на чтение к пути.

150 152 

Details

80 80 

81Облачный сеанс не добавляет маркетплейсы, которые репозиторий перечисляет под [`extraKnownMarketplaces`](/docs/ru/settings-reference#extraknownmarketplaces), потому что это требует диалога доверия рабочей области, который облачный сеанс никогда не показывает.81Облачный сеанс не добавляет маркетплейсы, которые репозиторий перечисляет под [`extraKnownMarketplaces`](/docs/ru/settings-reference#extraknownmarketplaces), потому что это требует диалога доверия рабочей области, который облачный сеанс никогда не показывает.

82 82 

83Плагин skills-directory с областью действия проекта загружается только из `.claude/skills/` [основной рабочей директории](/docs/ru/permissions#working-directories) сеанса и только после того, как вы примете [диалог доверия рабочей области](/docs/ru/permissions#what-runs-before-you-trust-a-folder) для этой папки. Он не [ищет родительские директории вверх до корня репозитория](/docs/ru/skills#discovery-from-parent-and-nested-directories) так, как это делают обычные skills и команды. Если вы запустите из поддиректории, плагин в корне репозитория не загрузится. Вместо этого запустите из корня репозитория или [переместите сеанс туда с помощью `/cd`](/docs/ru/permissions#move-the-session-to-another-directory) на v2.1.246 или позже.83Если плагин из `.claude/skills/` вашего репозитория не загружается, проверьте, где вы запустили сессию и доверяете ли вы этой папке:

84 

85* **В подкаталоге**: плагин в корне репозитория не загружается. Claude Code читает `.claude/skills/` [основного рабочего каталога](/docs/ru/permissions#working-directories) сессии и, в отличие от обычных скиллов и команд, не [ищет плагины в родительских каталогах](/docs/ru/skills#discovery-from-parent-and-nested-directories). Вместо этого запустите из корня репозитория или [переместите сессию туда с помощью `/cd`](/docs/ru/permissions#move-the-session-to-another-directory) на v2.1.246 или позже

86* **Из настольного приложения, в worktree**: плагин загружается из `.claude/skills/` основной копии, а не из worktree. См. [Что worktree разделяют с основной копией](/docs/ru/worktrees#what-worktrees-share-with-the-main-checkout)

87* **В папке, которой вы не доверяете**: плагин загружается только после того, как вы примете [диалог доверия рабочему пространству](/docs/ru/permissions#what-runs-before-you-trust-a-folder) для этой папки

84 88 

85Плагин с областью действия проекта проверяется в репозиторий и доступен каждому сотруднику, который его клонирует. Поскольку это содержимое поступает из репозитория, а не от вас, оно загружается только после той же проверки доверия, которая применяется к правилам разрешения проекта в `.claude/settings.json`. Доверия к родительской папке или запуска с `-p` недостаточно. Компоненты, которые выполняют код, имеют дополнительные ограничения:89Плагин с областью действия проекта проверяется в репозиторий и доступен каждому сотруднику, который его клонирует. Поскольку это содержимое поступает из репозитория, а не от вас, оно загружается только после той же проверки доверия, которая применяется к правилам разрешения проекта в `.claude/settings.json`. Доверия к родительской папке или запуска с `-p` недостаточно. Компоненты, которые выполняют код, имеют дополнительные ограничения:

86 90 


421 425 

422Поскольку порядок сравнивает имена манифестов, плагин `--plugin-dir` с именем `hello-plugin` заменяет `hello@example-marketplace`, когда манифест этого плагина также говорит `"name": "hello-plugin"`.426Поскольку порядок сравнивает имена манифестов, плагин `--plugin-dir` с именем `hello-plugin` заменяет `hello@example-marketplace`, когда манифест этого плагина также говорит `"name": "hello-plugin"`.

423 427 

428<h3 id="hooks-when-two-enabled-plugins-share-a-name">

429 Хуки, когда два включённых плагина имеют одно имя

430</h3>

431 

432Когда вы устанавливаете и включаете два плагина с одинаковым именем манифеста из разных маркетплейсов, оба отображаются как включённые в `/plugin`, но хуки одного из них не используются. Для каждого имени только один плагин регистрирует хуки из своего `hooks/hooks.json`, и только один плагин загружает [модуль хуков](/docs/ru/plugins/mods/overview). Когда управляемые настройки вашей организации включают одну из копий, имя закрепляется за этой копией. В противном случае имя закрепляется за копией, которую Claude Code загружает первой.

433 

434Чтобы узнать, за какой копией закреплено имя, выполните `/plugin` в своей сессии и откройте вкладку **Errors**. Там для копии, хуки которой не используются, есть примечание с названием копии, за которой закреплено имя, и то же примечание отображается в сведениях о неиспользуемой копии. Для хуков из `hooks/hooks.json` примечание начинается с `Its hooks.json hooks do not run`, а для модуля хуков — с `Its hooks module does not load`. Примечание требует Claude Code v2.1.296 или новее.

435 

436Чтобы вместо этого запускать хуки неиспользуемой копии, отключите или удалите копию, за которой закреплено имя, затем выполните `/reload-plugins` в своей сессии. Перезагрузка регистрирует хуки оставшейся копии и убирает примечание. Если копия, за которой закреплено имя, включена вашими управляемыми настройками, вы не можете её отключить, и хуки другой копии остаются выключенными, пока установлены обе.

437 

424<h3 id="keep-a-session-only-plugin-from-loading">438<h3 id="keep-a-session-only-plugin-from-loading">

425 Держите плагин только для сеанса от загрузки439 Держите плагин только для сеанса от загрузки

426</h3>440</h3>

Details

51* <span id="reserved-name-spellings" />**Другое написание зарезервированного имени**: имя, которое отличается от зарезервированного имени только конечной точкой, или символом, отличным от подчёркивания, вместо дефиса, поэтому `claude.code.plugins` считается `claude-code-plugins`. Добавление marketplace завершается ошибкой [`is another spelling of "<reserved>", a reserved marketplace name`](/docs/ru/errors#marketplace-name-is-another-spelling-of-a-reserved-name), и marketplace, уже зарегистрированный под одним, перестаёт загружаться. Эта проверка требует Claude Code v2.1.280 или позже.51* <span id="reserved-name-spellings" />**Другое написание зарезервированного имени**: имя, которое отличается от зарезервированного имени только конечной точкой, или символом, отличным от подчёркивания, вместо дефиса, поэтому `claude.code.plugins` считается `claude-code-plugins`. Добавление marketplace завершается ошибкой [`is another spelling of "<reserved>", a reserved marketplace name`](/docs/ru/errors#marketplace-name-is-another-spelling-of-a-reserved-name), и marketplace, уже зарегистрированный под одним, перестаёт загружаться. Эта проверка требует Claude Code v2.1.280 или позже.

52* **Имена, которые Claude Code использует для плагинов, которые не поступают из marketplace**: `inline` для плагинов, загруженных с [`--plugin-dir`](/docs/ru/cli-reference), `builtin` для встроенных плагинов, `skills-dir` для плагинов, автоматически загруженных из [`.claude/skills/`](/docs/ru/skills), и `synced` для плагинов, синхронизированных с вашего аккаунта claude.ai. `claude-plugin-test` также зарезервирован. `skills-dir` также появляется как `{"source": "skills-dir"}` в `strictKnownMarketplaces` и `blockedMarketplaces`, описанные в разделе [Source values valid only in policy lists](#source-values-valid-only-in-policy-lists).52* **Имена, которые Claude Code использует для плагинов, которые не поступают из marketplace**: `inline` для плагинов, загруженных с [`--plugin-dir`](/docs/ru/cli-reference), `builtin` для встроенных плагинов, `skills-dir` для плагинов, автоматически загруженных из [`.claude/skills/`](/docs/ru/skills), и `synced` для плагинов, синхронизированных с вашего аккаунта claude.ai. `claude-plugin-test` также зарезервирован. `skills-dir` также появляется как `{"source": "skills-dir"}` в `strictKnownMarketplaces` и `blockedMarketplaces`, описанные в разделе [Source values valid only in policy lists](#source-values-valid-only-in-policy-lists).

53* **`npm`, `pip`, `uv`, `cargo`, `github` и `gh`**: зарезервированы в любом регистре. Эта проверка требует Claude Code v2.1.275 или позже.53* **`npm`, `pip`, `uv`, `cargo`, `github` и `gh`**: зарезервированы в любом регистре. Эта проверка требует Claude Code v2.1.275 или позже.

54* **Имена членов, которые есть у каждого объекта JavaScript**: `constructor`, `hasOwnProperty`, `isPrototypeOf`, `propertyIsEnumerable`, `toLocaleString`, `toString` и `valueOf`. `claude plugin marketplace add` отклоняет маркетплейс, использующий одно из них, с ошибкой [`Claude Code reserves this name and cannot register a marketplace under it`](/docs/ru/plugins/troubleshooting#claude-code-reserves-this-name). Эта проверка требует Claude Code v2.1.296 или позже.

54* **Имена, начинающиеся с `claudeai-`**: зарезервированы для marketplace, размещённых на claude.ai. `claude plugin marketplace add` отказывает любому другому marketplace, который использует один с `Cannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.ai`.55* **Имена, начинающиеся с `claudeai-`**: зарезервированы для marketplace, размещённых на claude.ai. `claude plugin marketplace add` отказывает любому другому marketplace, который использует один с `Cannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.ai`.

55* **Папка загрузки зарегистрированного GitHub marketplace, `<owner>-<repo>`**: Claude Code загружает marketplace, добавленный из источника `github`, например `acme/x-tools`, через папку с именем `acme-x-tools`, каким бы ни было собственное `name` этого marketplace. Пока этот marketplace зарегистрирован под именем, отличным от `acme-x-tools`, `claude plugin marketplace add` отказывает другому marketplace с именем `acme-x-tools` после его загрузки и сообщает `Can't use the marketplace name "acme-x-tools"`. Эта проверка требует Claude Code v2.1.290 или позже.56* **Папка загрузки зарегистрированного GitHub marketplace, `<owner>-<repo>`**: Claude Code загружает marketplace, добавленный из источника `github`, например `acme/x-tools`, через папку с именем `acme-x-tools`, каким бы ни было собственное `name` этого marketplace. Пока этот marketplace зарегистрирован под именем, отличным от `acme-x-tools`, `claude plugin marketplace add` отказывает другому marketplace с именем `acme-x-tools` после его загрузки и сообщает `Can't use the marketplace name "acme-x-tools"`. Эта проверка требует Claude Code v2.1.290 или позже.

56 57 

Details

68* **Защита защищает то, что вы управляете.** Мод пользователя не может изменить то, что получают или решают ваши управляемые hooks, системный запрос, ваши управляемые `CLAUDE.md` и другие управляемые инструкции, то, что любой мод читает как параметры, или инструменты и описания ваших управляемых MCP серверов.68* **Защита защищает то, что вы управляете.** Мод пользователя не может изменить то, что получают или решают ваши управляемые hooks, системный запрос, ваши управляемые `CLAUDE.md` и другие управляемые инструкции, то, что любой мод читает как параметры, или инструменты и описания ваших управляемых MCP серверов.

69* **Все остальное разрешено.** Защита не добавляет других ограничений. Мод пользователя по-прежнему может читать и писать файлы, запускать процессы, делать сетевые запросы, переписывать вызовы инструментов и запросы, отказывать в вызове инструмента, одобрять вызов, который иначе потребовал бы подтверждения, и рисовать в интерфейсе, все с разрешениями этого пользователя.69* **Все остальное разрешено.** Защита не добавляет других ограничений. Мод пользователя по-прежнему может читать и писать файлы, запускать процессы, делать сетевые запросы, переписывать вызовы инструментов и запросы, отказывать в вызове инструмента, одобрять вызов, который иначе потребовал бы подтверждения, и рисовать в интерфейсе, все с разрешениями этого пользователя.

70* **Правила отказа и ваши управляемые хуки имеют приоритет.** Где загружается защита, мод пользователя не может одобрить вызов, который отклоняет правило `deny`, независимо от того, какой файл настроек содержит правило. Блокировка из хука `PreToolUse` в управляемых настройках также окончательна. Оба применяются к вызовам инструментов Claude. Ни один не применяется к собственным вызовам мода [`$.fs` и `$.process`](/docs/ru/plugins/mods/api#reach-files-processes-and-the-network): при запрещенном `Read(.env)` мод все еще может прочитать этот файл с помощью `$.fs.read` или запустить программу, которая это делает. Чтобы ограничить эти вызовы, не позволяйте моду загружаться или обработайте вызов в [политическом моде](#enforce-a-policy-with-a-mod-of-your-own).70* **Правила отказа и ваши управляемые хуки имеют приоритет.** Где загружается защита, мод пользователя не может одобрить вызов, который отклоняет правило `deny`, независимо от того, какой файл настроек содержит правило. Блокировка из хука `PreToolUse` в управляемых настройках также окончательна. Оба применяются к вызовам инструментов Claude. Ни один не применяется к собственным вызовам мода [`$.fs` и `$.process`](/docs/ru/plugins/mods/api#reach-files-processes-and-the-network): при запрещенном `Read(.env)` мод все еще может прочитать этот файл с помощью `$.fs.read` или запустить программу, которая это делает. Чтобы ограничить эти вызовы, не позволяйте моду загружаться или обработайте вызов в [политическом моде](#enforce-a-policy-with-a-mod-of-your-own).

71* **Другие проверки разрешений могут быть переопределены.** Мод пользователя, который одобряет вызовы инструментов, может одобрить вызов, который правило `ask` потребовало бы подтверждения, или который hook `PreToolUse` вне управляемых параметров заблокировал. В автоматическом режиме вызов, одобренный модом, выполняется без проверки классификатора.71* **Другие проверки разрешений могут быть переопределены.** Мод пользователя, который одобряет вызовы инструментов, может одобрить вызов, для которого правило `ask` запросило бы подтверждение, или который заблокировал хук `PreToolUse` вне управляемых настроек. В авторежиме вызов, одобренный модом, выполняется без проверки классификатора. О запросах разрешения, которые подтверждение `tool.check` мода не пропускает, см. [Расширение разрешений с помощью хуков](/docs/ru/permissions#extend-permissions-with-hooks).

72 72 

73Исходный код защиты является общедоступным в [каталоге `mods/sec-default` репозитория Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).73Исходный код защиты является общедоступным в [каталоге `mods/sec-default` репозитория Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).

74 74 


81* **Hooks параметров продолжают работать.** Hooks команд, HTTP, запросов и агентов в файлах параметров и в `hooks/hooks.json` плагинов работают как раньше, наряду с модами. Ничего в них не устарело.81* **Hooks параметров продолжают работать.** Hooks команд, HTTP, запросов и агентов в файлах параметров и в `hooks/hooks.json` плагинов работают как раньше, наряду с модами. Ничего в них не устарело.

82* **Правила отказа имеют приоритет, где загружается защита.** Мод пользователя не может одобрить вызов, который правило `deny` отказывает, если вы не установите [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).82* **Правила отказа имеют приоритет, где загружается защита.** Мод пользователя не может одобрить вызов, который правило `deny` отказывает, если вы не установите [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).

83* **Управляемые hooks работают первыми.** Hook `PreToolUse` в управляемых параметрах работает перед тем, как любой мод увидит вызов инструмента, и его блокировка окончательна. Если мод затем переписывает вызов, ваши управляемые hooks работают снова на переписанном вызове, поэтому блокировка по-прежнему применяется. Hooks `PreToolUse` из других файлов параметров и из плагинов работают после последнего мода, поэтому мод, который возвращает свой собственный результат вместо запуска инструмента, не позволяет им работать. См. [Порядок, в котором работают моды](/docs/ru/plugins/mods/events#the-order-mods-run-in).83* **Управляемые hooks работают первыми.** Hook `PreToolUse` в управляемых параметрах работает перед тем, как любой мод увидит вызов инструмента, и его блокировка окончательна. Если мод затем переписывает вызов, ваши управляемые hooks работают снова на переписанном вызове, поэтому блокировка по-прежнему применяется. Hooks `PreToolUse` из других файлов параметров и из плагинов работают после последнего мода, поэтому мод, который возвращает свой собственный результат вместо запуска инструмента, не позволяет им работать. См. [Порядок, в котором работают моды](/docs/ru/plugins/mods/events#the-order-mods-run-in).

84* **Политика сети охватывает `$.http.fetch`.** Если ваша организация отключает веб-выборку или отключен несущественный сетевой трафик для сеанса, Claude Code отказывает в сетевом запросе, который мод делает с помощью `$.http.fetch`. Политика не охватывает программу, которую мод запускает с помощью `$.process.run`. Эта программа достигает сети с собственным доступом пользователя.84* **Сетевая политика охватывает `$.http.fetch`.**

85 

86 * **Политика вашей организации не разрешает WebFetch**: Claude Code также отклоняет каждый запрос `$.http.fetch` любого мода. См. [Доступность WebFetch](/docs/ru/tools-reference#webfetch-availability).

87 * **Вы установили [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/ru/env-vars)**: мод, который устанавливаете вы или ваши пользователи, по-прежнему может выполнять эти запросы. Переменная останавливает только [моды, встроенные в Claude Code](/docs/ru/plugins/mods/overview#mods-built-into-claude-code), а также любой запрос `$.http.fetch`, который несёт учётные данные Anthropic сессии. До v2.1.288 переменная останавливала каждый запрос `$.http.fetch` любого мода.

88 

89 Ни то, ни другое не охватывает программу, которую мод запускает с помощью `$.process.run`: она выходит в сеть с собственным доступом пользователя.

85* **Элементы управления плагинами охватывают моды.** Мод — это плагин, поэтому [параметры, которые ограничивают то, что пользователи могут установить](/docs/ru/plugins/org#restrict-what-users-can-install), такие как `strictKnownMarketplaces`, определяют, может ли он быть установлен вообще.90* **Элементы управления плагинами охватывают моды.** Мод — это плагин, поэтому [параметры, которые ограничивают то, что пользователи могут установить](/docs/ru/plugins/org#restrict-what-users-can-install), такие как `strictKnownMarketplaces`, определяют, может ли он быть установлен вообще.

86* **Моды не могут изменить запрос разрешения.** Мод может переделать большую часть интерфейса Claude Code, но не запрос разрешения, поэтому он не может изменить то, что показывает запрос. Мод все еще может одобрить или отказать в вызове инструмента перед появлением запроса, как описано в [Узнать, что происходит по умолчанию](#know-what-happens-by-default).91* **Моды не могут изменить запрос разрешения.** Мод может переделать большую часть интерфейса Claude Code, но не запрос разрешения, поэтому он не может изменить то, что показывает запрос. Мод все еще может одобрить или отказать в вызове инструмента перед появлением запроса, как описано в [Узнать, что происходит по умолчанию](#know-what-happens-by-default).

87* **Запросы доверия идут первыми.** В интерактивном сеансе в каталоге, который пользователь еще не доверил, ни один мод не загружается, пока они не ответят на запрос доверия.92* **Запросы доверия идут первыми.** В интерактивном сеансе в каталоге, который пользователь еще не доверил, ни один мод не загружается, пока они не ответят на запрос доверия.

Details

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

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

305 305 

306Файлы и процессы имеют несколько собственных правил:306Файлы, процессы и запросы имеют несколько собственных правил:

307 307 

308* **Пути**: относительный путь разрешается относительно рабочего каталога сессии308* **Пути**: относительный путь разрешается относительно рабочего каталога сессии или субагента, событие которого обрабатывает хук

309* **`$.fs.list`**: возвращает записи одного каталога как `{ name, kind, size, isLink }` и не спускается в подкаталоги309* **`$.fs.list`**: возвращает записи одного каталога как `{ name, kind, size, isLink }` и не спускается в подкаталоги

310* **`$.process.run`**: принимает список аргументов и не использует оболочку. Он разрешается в `{ exitCode, stdout, stderr }` независимо от кода выхода. Он отклоняется, если программа не может запуститься или всё ещё выполняется при истечении времени ожидания, которое по умолчанию составляет 30 секунд, поэтому оберните его в `try` и `catch`.310* **`$.process.run`**: принимает список аргументов и не использует оболочку. Он разрешается в `{ exitCode, stdout, stderr }` независимо от кода выхода. Он отклоняется, если программа не может запуститься или всё ещё выполняется при истечении времени ожидания, которое по умолчанию составляет 30 секунд, поэтому оберните его в `try` и `catch`.

311* **`$.http.fetch`**: следует не более чем пяти перенаправлениям. При перенаправлении на другой источник он сохраняет только заданные вами заголовки запроса `accept`, `accept-language`, `content-type` и `user-agent` и отбрасывает остальные, поэтому запрос, зависящий от другого заголовка, например `Authorization`, может завершиться ошибкой после такого перенаправления. В разделе [ограничения](/docs/ru/plugins/mods/reference#limits) указаны его таймаут и размеры тела.

311 312 

312Каждый из этих вызовов сам по себе является событием, названным по его пространству имён и методу без `$.`, например `fs.read` для `$.fs.read`. Мод [ранее в цепи](/docs/ru/plugins/mods/events#the-order-mods-run-in) может наблюдать, переписывать или отклонять ваш вызов — именно так организация ограничивает то, к чему моды получают доступ.313Каждый из этих вызовов сам по себе является событием, названным по его пространству имён и методу без `$.`, например `fs.read` для `$.fs.read`. Мод [ранее в цепи](/docs/ru/plugins/mods/events#the-order-mods-run-in) может наблюдать, переписывать или отклонять ваш вызов — именно так организация ограничивает то, к чему моды получают доступ.

313 314 

Details

148| `agent.offer` | Тип субагента предлагается Claude | `{ isOffered: false }`, чтобы скрыть его |148| `agent.offer` | Тип субагента предлагается Claude | `{ isOffered: false }`, чтобы скрыть его |

149| `agent.spawn` | Субагент или участник [команды агентов](/docs/ru/agent-teams) вот-вот запустится. Для участника команды `e.isTeammate` равно `true`. | `next({ ...e, model })`, чтобы выбрать его модель, или `{ deny: reason }` |149| `agent.spawn` | Субагент или участник [команды агентов](/docs/ru/agent-teams) вот-вот запустится. Для участника команды `e.isTeammate` равно `true`. | `next({ ...e, model })`, чтобы выбрать его модель, или `{ deny: reason }` |

150 150 

151Когда Claude возобновляет субагента с помощью инструмента [`SendMessage`](/docs/ru/sub-agents#resume-subagents), ваш хук `agent.spawn` повторно не запускается. Чтобы отклонять вызовы `SendMessage`, которые возобновляют субагента, сопоставляйте этот инструмент в хуке [`tool.call`](/docs/ru/plugins/mods/events#guard-or-change-a-tool-call).

152 

151<h3 id="interface">153<h3 id="interface">

152 Интерфейс154 Интерфейс

153</h3>155</h3>


175| [`plugin.register`](/docs/ru/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | Модуль хуков вот-вот загрузится. `e.uses` перечисляет его события, вызовы API модов, переменные окружения и состояние в том виде, в каком их выводит `claude plugin validate`. Каждый вызов записан без префикса `$.`, например `fs.read`. | `{ refuse: reason }` |177| [`plugin.register`](/docs/ru/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | Модуль хуков вот-вот загрузится. `e.uses` перечисляет его события, вызовы API модов, переменные окружения и состояние в том виде, в каком их выводит `claude plugin validate`. Каждый вызов записан без префикса `$.`, например `fs.read`. | `{ refuse: reason }` |

176| `engine.create` | Для этого мода строится API модов | Изменённый API модов, чтобы добавить пространство имён. Мод вне [уровня](#the-hook-function) `user` также может скрыть его. |178| `engine.create` | Для этого мода строится API модов | Изменённый API модов, чтобы добавить пространство имён. Мод вне [уровня](#the-hook-function) `user` также может скрыть его. |

177 179 

180Когда хук другого мода вызывает метод пространства имён, которое вы добавили в `engine.create`, вызовы `$` вашего метода выполняются в контексте этого хука, пока все хуки на этом событии не вернут результат. Например, относительный путь разрешается относительно рабочего каталога этого хука, а `$.prompt.submit` отклоняется, пока ход ожидает этот хук. Вызовы, которые ваш метод делает после этого, выполняются в собственном контексте вашего мода.

181 

178<h3 id="telemetry">182<h3 id="telemetry">

179 Телеметрия183 Телеметрия

180</h3>184</h3>


317| Таймаут `$.process.run` | 30 секунд по умолчанию, не более 10 минут |321| Таймаут `$.process.run` | 30 секунд по умолчанию, не более 10 минут |

318| `maxTokens` для `$.model.complete` | 1024 по умолчанию, до 64 000 или предела вывода модели |322| `maxTokens` для `$.model.complete` | 1024 по умолчанию, до 64 000 или предела вывода модели |

319| `$.fs.read` и `$.fs.write` | 4 МиБ на один файл |323| `$.fs.read` и `$.fs.write` | 4 МиБ на один файл |

324| Тело запроса `$.http.fetch` | 4 МиБ, считается в символах. Вызов с более длинным телом отклоняется. |

325| Тело ответа `$.http.fetch` | 4 МиБ. `text` содержит первые 4 МиБ, а остальное не считывается. Если заголовок `Content-Length` объявляет больший размер, вызов вместо этого отклоняется с причиной, оканчивающейся на `is over the 4194304-byte limit`, за исключением случая, когда последний запрос после всех перенаправлений использует метод `HEAD`. Исключение для `HEAD` требует Claude Code v2.1.296 или новее. |

326| Один вызов `$.http.fetch`, включая перенаправления и тело | 30 секунд |

327| Перенаправления, по которым проходит один вызов `$.http.fetch` | 5 |

320| Причина `drop` хука или причина `deny` для `config.set` | 4 096 символов. Конец более длинной причины обрезается, а drop или deny всё равно применяется. Обрезка требует Claude Code v2.1.292 или новее; в более ранних версиях хук вместо этого [завершается с ошибкой](/docs/ru/plugins/mods/events#handle-a-hook-that-fails). |328| Причина `drop` хука или причина `deny` для `config.set` | 4 096 символов. Конец более длинной причины обрезается, а drop или deny всё равно применяется. Обрезка требует Claude Code v2.1.292 или новее; в более ранних версиях хук вместо этого [завершается с ошибкой](/docs/ru/plugins/mods/events#handle-a-hook-that-fails). |

321| Текст в одном дереве | Отрисовываются первые 100 000 символов |329| Текст в одном дереве | Отрисовываются первые 100 000 символов |

322| `language` или `path` элемента `Code`, `value` варианта `Select` или `module` элемента `Client` | 10 000 символов. Если значение длиннее, Claude Code [отрисовывает собственную версию области](/docs/ru/plugins/mods/interface#build-a-tree-from-elements). |330| `language` или `path` элемента `Code`, `value` варианта `Select` или `module` элемента `Client` | 10 000 символов. Если значение длиннее, Claude Code [отрисовывает собственную версию области](/docs/ru/plugins/mods/interface#build-a-tree-from-elements). |

Details

78| `disableAllHooks in managed settings` | Ваша организация отключила hooks из установленных плагинов |78| `disableAllHooks in managed settings` | Ваша организация отключила hooks из установленных плагинов |

79| `only managed plugins and built-in plugins run` | `allowManagedHooksOnly` установлен или `disableAllHooks` установлен в файле параметров, отличном от управляемых параметров |79| `only managed plugins and built-in plugins run` | `allowManagedHooksOnly` установлен или `disableAllHooks` установлен в файле параметров, отличном от управляемых параметров |

80| `installed plugins that are not managed load no hooks module in this mode (--bare)` | Вы запустили Claude Code с `--bare` |80| `installed plugins that are not managed load no hooks module in this mode (--bare)` | Вы запустили Claude Code с `--bare` |

81| `another plugin of that name loads first` | Два плагина имеют одно имя. Используется управляемый или загруженный первым. |81| `another plugin of that name loads first` | Другой включенный плагин имеет то же имя, что и ваш мод, и [удерживает это имя](/docs/ru/plugins/loading#hooks-when-two-enabled-plugins-share-a-name), поэтому ваш модуль хуков не загружается |

82 82 

83<h3 id="messages-from-the-built-in-guard">83<h3 id="messages-from-the-built-in-guard">

84 Сообщения от встроенной защиты84 Сообщения от встроенной защиты


191 191 

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

193 193 

194<h3 id="$-agent-register-refused-the-hooks-module-that-made-the-call-is-no-longer-loaded">

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

196</h3>

197 

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

199 

200Если этот хук не перехватывает отказ, он завершается сбоем, и Claude Code [пропускает его](#hook-skipped). Чтобы зарегистрировать агента из копии, которая остается загруженной, выполните вызов в своем хуке [`session.start`](/docs/ru/plugins/mods/reference#session), который снова выполняется в каждой свежей копии после перезагрузки.

201 

194<h3 id="mods-that-run-in-the-hooks-worker-are-off-for-this-session">202<h3 id="mods-that-run-in-the-hooks-worker-are-off-for-this-session">

195 `mods that run in the hooks worker are off for this session`203 `mods that run in the hooks worker are off for this session`

196</h3>204</h3>

Details

256 256 

257До v2.1.295 Claude Code сообщал о добавлении в этом примере как об успешном.257До v2.1.295 Claude Code сообщал о добавлении в этом примере как об успешном.

258 258 

259<h3 id="claude-code-reserves-this-name">

260 `Cannot add marketplace "<name>": Claude Code reserves this name and cannot register a marketplace under it`

261</h3>

262 

263Вы добавили маркетплейс, и [`name`](/docs/ru/plugins/marketplace-reference#top-level-fields) в его `marketplace.json` — одно из имён членов, которые есть у каждого объекта JavaScript, например `constructor`, `toString` или `valueOf`. Claude Code резервирует эти имена, поэтому отклоняет добавление и ничего не регистрирует. Они перечислены в разделе [Зарезервированные имена](/docs/ru/plugins/marketplace-reference#reserved-names).

264 

265В этом примере маркетплейс называется `constructor`:

266 

267```text theme={null}

268Cannot add marketplace "constructor": Claude Code reserves this name and cannot register a marketplace under it. The name is set by "name" in the marketplace's marketplace.json; ask its maintainer to change it.

269```

270 

271Если файл настроек объявляет маркетплейс в [`extraKnownMarketplaces`](/docs/ru/settings-reference#extraknownmarketplaces), попытка Claude Code добавить его при запуске завершается ошибкой таким же образом, и сообщение появляется на вкладке **Errors** в `/plugin`.

272 

273Дайте маркетплейсу другое имя, затем добавьте его снова:

274 

275* **Вы владеете маркетплейсом**: измените `name` в `marketplace.json`

276* **Кто-то другой размещает его**: попросите владельца изменить имя

277 

278До v2.1.296 добавление такого маркетплейса завершалось внутренней ошибкой вместо этого сообщения.

279 

259<h3 id="ssh-authentication-failed-or-https-authentication-failed">280<h3 id="ssh-authentication-failed-or-https-authentication-failed">

260 `SSH authentication failed` или `HTTPS authentication failed`281 `SSH authentication failed` или `HTTPS authentication failed`

261</h3>282</h3>


907 Hook загружается, но никогда не срабатывает928 Hook загружается, но никогда не срабатывает

908</h4>929</h4>

909 930 

910Если hook загружается без ошибки, но никогда не срабатывает, проверьте его определение, а затем посмотрите, как он запускается:931Если хук загружается без ошибки, но никогда не срабатывает, сначала запустите `/plugin` в вашей сессии и откройте детали плагина. Заметка там, начинающаяся с `Its hooks.json hooks do not run`, означает, что вместо него свои хуки зарегистрировал другой включённый плагин с тем же именем, а в разделе [Хуки, когда два включённых плагина имеют одно имя](/docs/ru/plugins/loading#hooks-when-two-enabled-plugins-share-a-name) указано, какая это копия и как переключиться. В противном случае проверьте определение хука, а затем посмотрите, как он запускается:

911 932 

912<Steps>933<Steps>

913 <Step title="Проверьте имя события">934 <Step title="Проверьте имя события">

routines.md +3 −3

Details

86 </Step>86 </Step>

87 87 

88 <Step title="Выберите репозитории">88 <Step title="Выберите репозитории">

89 Добавьте один или несколько репозиториев GitHub для работы Claude. Каждый репозиторий клонируется в начале запуска, начиная с ветви по умолчанию. Claude создает ветви с префиксом `claude/` для своих изменений.89 Добавьте один или несколько репозиториев GitHub для работы Claude. Каждый репозиторий клонируется в начале запуска. Claude создает ветки с префиксом `claude/` для своих изменений.

90 </Step>90 </Step>

91 91 

92 <Step title="Выберите окружение">92 <Step title="Выберите окружение">


359 Репозитории и разрешения ветвей359 Репозитории и разрешения ветвей

360</h3>360</h3>

361 361 

362Рутинам нужен доступ GitHub для клонирования репозиториев. Когда вы создаете рутину из CLI с `/schedule`, Claude проверяет, имеет ли ваш аккаунт доступ GitHub для репозитория, из которого вы его запустили, и, если это не так, добавляет примечание настройки, указывающее, как предоставить доступ. Смотрите [GitHub authentication options](/docs/ru/claude-code-on-the-web#github-authentication-options) для двух способов предоставления доступа.362Рутинам нужен доступ к GitHub для клонирования репозиториев. Когда вы создаёте рутину из CLI с помощью `/schedule`, Claude проверяет, есть ли у вашего аккаунта доступ к GitHub для репозитория, из которого вы её запустили, и, если его нет, добавляет примечание по настройке, указывающее, как предоставить доступ. Смотрите [Варианты аутентификации GitHub](/docs/ru/claude-code-on-the-web#github-authentication-options), чтобы узнать о двух способах предоставления доступа. В планах Team и Enterprise [Owner](/docs/ru/server-managed-settings#access-control) вашей организации Claude должен включить каждый способ, прежде чем вы сможете его использовать; смотрите [Подключение GitHub](/docs/ru/web-quickstart#connect-github).

363 363 

364Если ваше соединение GitHub отсутствует или истекло, когда запуск должен произойти, рутина пропускает запуски до тех пор, пока вы не переподключитесь, в течение до 72 часов. Переподключитесь GitHub в течение этого окна, и рутина возобновится автоматически. После 72 часов без соединения рутина отключается, и вы включаете ее снова после переподключения GitHub.364Если ваше соединение GitHub отсутствует или истекло, когда запуск должен произойти, рутина пропускает запуски до тех пор, пока вы не переподключитесь, в течение до 72 часов. Переподключитесь GitHub в течение этого окна, и рутина возобновится автоматически. После 72 часов без соединения рутина отключается, и вы включаете ее снова после переподключения GitHub.

365 365 

366Каждый репозиторий, который вы добавляете, клонируется при каждом запуске. Claude начинает с ветви по умолчанию репозитория, если ваша подсказка не указывает иное.366Каждый репозиторий, который вы добавляете, клонируется при каждом запуске. Claude начинает с ветки репозитория по умолчанию, если ваш промпт не указывает иное. Если запуск инициирован [событием pull request в GitHub](#add-a-github-trigger) и репозиторий pull request является первым репозиторием в рутине, этот репозиторий вместо этого начинает с головного коммита pull request.

367 367 

368Claude отправляет свою работу в ветку с префиксом `claude/`, если только ваш промпт не указывает отправить изменения в другую ветку. Чтобы контролировать, в какие ветки запуск может отправлять изменения, используйте правила защиты веток или наборы правил (rulesets) на GitHub. Для запусков на инфраструктуре, управляемой Anthropic, и для самостоятельно размещённых запусков, которые отправляют изменения через [git-прокси Anthropic](/docs/ru/self-hosted-environments-deploy#use-the-anthropic-git-proxy), GitHub применяет их к подключённому вами доступу GitHub, поэтому правило, которое этот доступ может обойти, не блокирует отправку изменений запуском. Самостоятельно размещённый запуск, который отправляет изменения с учётными данными git, предоставленными вашим развёртыванием, вместо этого проверяется на соответствие этим учётным данным. Смотрите [Настройка git](/docs/ru/self-hosted-environments-deploy#configure-git).368Claude отправляет свою работу в ветку с префиксом `claude/`, если только ваш промпт не указывает отправить изменения в другую ветку. Чтобы контролировать, в какие ветки запуск может отправлять изменения, используйте правила защиты веток или наборы правил (rulesets) на GitHub. Для запусков на инфраструктуре, управляемой Anthropic, и для самостоятельно размещённых запусков, которые отправляют изменения через [git-прокси Anthropic](/docs/ru/self-hosted-environments-deploy#use-the-anthropic-git-proxy), GitHub применяет их к подключённому вами доступу GitHub, поэтому правило, которое этот доступ может обойти, не блокирует отправку изменений запуском. Самостоятельно размещённый запуск, который отправляет изменения с учётными данными git, предоставленными вашим развёртыванием, вместо этого проверяется на соответствие этим учётным данным. Смотрите [Настройка git](/docs/ru/self-hosted-environments-deploy#configure-git).

369 369 

sandboxing.md +1 −0

Details

203* Команды `rm` или `rmdir`, нацеленные на [критический путь](/docs/ru/permission-modes#critical-paths), по-прежнему проходят обычный процесс получения разрешений203* Команды `rm` или `rmdir`, нацеленные на [критический путь](/docs/ru/permission-modes#critical-paths), по-прежнему проходят обычный процесс получения разрешений

204* [Правила запроса](/docs/ru/permissions) с ограничением по содержимому, например `Bash(git push *)`, по-прежнему вызывают запрос даже для команд в песочнице204* [Правила запроса](/docs/ru/permissions) с ограничением по содержимому, например `Bash(git push *)`, по-прежнему вызывают запрос даже для команд в песочнице

205* Голое правило запроса `Bash` или эквивалентная форма `Bash(*)` пропускается для команд, выполняемых в песочнице; оно по-прежнему применяется к командам, которые переходят к обычному процессу получения разрешений. В [режиме планирования](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode) правило не пропускается: оно вызывает запрос и для команд в песочнице, включая команды только для чтения205* Голое правило запроса `Bash` или эквивалентная форма `Bash(*)` пропускается для команд, выполняемых в песочнице; оно по-прежнему применяется к командам, которые переходят к обычному процессу получения разрешений. В [режиме планирования](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode) правило не пропускается: оно вызывает запрос и для команд в песочнице, включая команды только для чтения

206* Команды [инструмента Monitor](/docs/ru/tools-reference#monitor-tool) не подтверждаются автоматически, хотя по-прежнему выполняются в песочнице. Чтобы пропустить запрос, добавьте [правило разрешения](/docs/ru/permissions#bash), соответствующее команде, например `Bash(npm run *)`

206 207 

207<Info>208<Info>

208 Режим auto-allow работает независимо от настройки режима разрешений, за тремя исключениями: [режим планирования](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode), команда авторежима с [разрешёнными доменами для отдельной команды](#per-command-allowed-domains-in-auto-mode) и [проверка классификатором на стороне сервера](/docs/ru/permission-modes#how-the-classifier-evaluates-actions) команд в песочнице в авторежиме. Даже если вы не находитесь в режиме «accept edits», команды Bash в песочнице выполняются автоматически, когда включён auto-allow. Это означает, что команды Bash, изменяющие файлы в пределах границ песочницы, выполняются без запроса даже в режиме Manual, где инструменты редактирования файлов запросили бы разрешение.209 Режим auto-allow работает независимо от настройки режима разрешений, за тремя исключениями: [режим планирования](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode), команда авторежима с [разрешёнными доменами для отдельной команды](#per-command-allowed-domains-in-auto-mode) и [проверка классификатором на стороне сервера](/docs/ru/permission-modes#how-the-classifier-evaluates-actions) команд в песочнице в авторежиме. Даже если вы не находитесь в режиме «accept edits», команды Bash в песочнице выполняются автоматически, когда включён auto-allow. Это означает, что команды Bash, изменяющие файлы в пределах границ песочницы, выполняются без запроса даже в режиме Manual, где инструменты редактирования файлов запросили бы разрешение.

Details

132Runner и его сеансы делают несколько видов исходящего соединения, и входящее соединение от Anthropic не требуется:132Runner и его сеансы делают несколько видов исходящего соединения, и входящее соединение от Anthropic не требуется:

133 133 

134* **Control plane**: runner опрашивает `api.anthropic.com` для работы и публикует события прогресса установки и отказа, все исходящие HTTPS. Опрос служит сердцебиением runner.134* **Control plane**: runner опрашивает `api.anthropic.com` для работы и публикует события прогресса установки и отказа, все исходящие HTTPS. Опрос служит сердцебиением runner.

135* **SCM connector**: дополнительный оркестратор [SCM connector](/docs/ru/self-hosted-environments-reference#scm-connector-flags) туннель — это единственное соединение WebSocket.135* **Git**: runner клонирует репозитории с вашего git-хоста и отправляет на него изменения по HTTPS или SSH, аутентифицируясь с помощью учётных данных, которые предоставляет ваше развёртывание. Варианты, включая учётные данные, выпускаемые для каждой сессии, описаны в разделе [Настройка git](/docs/ru/self-hosted-environments-deploy#configure-git). При использовании [git-прокси Anthropic](/docs/ru/self-hosted-environments-deploy#use-the-anthropic-git-proxy) git-трафик для репозиториев на github.com вместо этого проходит через `api.anthropic.com`.

136* **Git**: runner клонирует из и отправляет на ваш git-хост по HTTPS или SSH, аутентифицированный с учетными данными, которые предоставляет ваше развертывание; [Настройка git](/docs/ru/self-hosted-environments-deploy#configure-git) охватывает варианты, включая учетные данные, отчеканенные для каждого сеанса, и [Anthropic git proxy](/docs/ru/self-hosted-environments-deploy#use-the-anthropic-git-proxy), который маршрутизирует git через `api.anthropic.com` вместо этого.136* **Session child**: дочерний процесс Claude Code удерживает поток событий сессии к `api.anthropic.com` и выполняет собственные исходящие вызовы для инференса модели и для команд git, запускаемых во время сессии. В сессии, использующей [git под управлением Anthropic](/docs/ru/self-hosted-environments-deploy#use-the-anthropic-git-proxy), дочерний процесс отправляет свой трафик `git` и `gh` для github.com через WebSocket-соединение, которое он открывает к `api.anthropic.com`.

137* **Session child**: дочерний процесс Claude Code держит поток событий сеанса на `api.anthropic.com` и делает свои собственные исходящие вызовы для вывода модели и для команд git, запущенных во время сеанса. Смотрите [Требования к сети](/docs/ru/self-hosted-environments-deploy#network-requirements) для полного списка выхода. [Диаграмма выше](#how-self-hosted-environments-work) показывает эти пути, кроме дополнительного SCM connector.137* **SCM connector**: дополнительный [SCM connector](/docs/ru/self-hosted-environments-reference#scm-connector-flags) оркестратора недоступен, поэтому его туннель не открывается. Туннель — это WebSocket-соединение с `api.anthropic.com`.

138 

139Полный список исходящих адресов см. в разделе [Требования к сети](/docs/ru/self-hosted-environments-deploy#network-requirements). [Диаграмма выше](#how-self-hosted-environments-work) показывает эти пути, за исключением дополнительного SCM connector и соединения git под управлением Anthropic.

138 140 

139По умолчанию инференс модели использует Anthropic API. Плоскость управления передаёт эндпоинт API каждой сессии, и сессия аутентифицируется с помощью выданного Anthropic токена OAuth с областью действия сессии. Чтобы вместо этого отправлять запросы к модели в собственную облачную учётную запись, см. раздел [Отправка запросов к модели в Bedrock или Agent Platform](/docs/ru/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform).141По умолчанию инференс модели использует Anthropic API. Плоскость управления передаёт эндпоинт API каждой сессии, и сессия аутентифицируется с помощью выданного Anthropic токена OAuth с областью действия сессии. Чтобы вместо этого отправлять запросы к модели в собственную облачную учётную запись, см. раздел [Отправка запросов к модели в Bedrock или Agent Platform](/docs/ru/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform).

140 142 

Details

31| Переменная | Описание |31| Переменная | Описание |

32| :- | :- |32| :- | :- |

33| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | JWT сессии с префиксом `sk-ant-cc-`. Его утверждение `act` идентифицирует создателя сессии, вместе с электронной почтой создателя, если интерфейс, создавший сессию, её записал. Значение — это токен на момент порождения процесса; обновления поступают через stdin дочернего процесса, поэтому обёртка видит только начальное значение. См. [Проверка идентичности сессии](/docs/ru/self-hosted-environments-identity). |33| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | JWT сессии с префиксом `sk-ant-cc-`. Его утверждение `act` идентифицирует создателя сессии, вместе с электронной почтой создателя, если интерфейс, создавший сессию, её записал. Значение — это токен на момент порождения процесса; обновления поступают через stdin дочернего процесса, поэтому обёртка видит только начальное значение. См. [Проверка идентичности сессии](/docs/ru/self-hosted-environments-identity). |

34| `CCR_SESSION_ACCOUNT_EMAIL` | Электронная почта создателя сессии, предварительно извлечённая средством выполнения из утверждения `act.email` токена без проверки подписи. Подходит для маркировки, например для трейлеров коммитов. Когда электронная почта управляет выдачей учётных данных, вместо этого проверьте токен и прочитайте утверждение из него; см. [Подготовка учётных данных, ограниченных создателем сессии](#provision-credentials-scoped-to-the-session-creator). Не установлена, когда токен не содержит электронную почту создателя. Рассматривайте как персональные данные. |34| `CCR_SESSION_ACCOUNT_EMAIL` | Электронная почта создателя сессии, предварительно извлечённая средством выполнения из утверждения `act.email` токена без проверки подписи. Подходит для маркировки, например для трейлеров коммитов. Когда электронная почта управляет выдачей учётных данных, вместо этого проверьте токен и прочитайте утверждение из него. См. [Подготовка учётных данных, ограниченных создателем сессии](#provision-credentials-scoped-to-the-session-creator). Не установлена, когда токен не содержит электронную почту создателя, например в сессиях, которые создаёт служебная учётная запись вашей организации. Рассматривайте как персональные данные. |

35| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Клиентский интерфейс, который создал сессию, например `web_claude_ai`, `desktop_app`, `ios`, `claude_code_cli` или `scheduled_trigger`. Anthropic записывает значение один раз при создании сессии, поэтому обёртка и каждый хук жизненного цикла видят одно и то же значение. Используйте его только для аналитики внедрения и маркировки, а не как сигнал авторизации. Не установлена, когда у сессии нет записанного или распознанного интерфейса, поэтому ссылайтесь на неё как `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` при `set -u`. Требует Claude Code v2.1.229 или новее. |35| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Клиентский интерфейс, который создал сессию, например `web_claude_ai`, `desktop_app`, `ios`, `claude_code_cli` или `scheduled_trigger`. Anthropic записывает значение один раз при создании сессии, поэтому обёртка и каждый хук жизненного цикла видят одно и то же значение. Используйте его только для аналитики внедрения и маркировки, а не как сигнал авторизации. Не установлена, когда у сессии нет записанного или распознанного интерфейса. Требует Claude Code v2.1.229 или новее. |

36| `CLAUDE_RUNNER_CLAUDE_BIN` | Абсолютный путь к собственному двоичному файлу Claude Code средства выполнения. Завершите вашу обёртку командой `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"`, чтобы передать управление закреплённому двоичному файлу без жёсткого кодирования пути установки. |36| `CLAUDE_RUNNER_CLAUDE_BIN` | Абсолютный путь к собственному двоичному файлу Claude Code средства выполнения. Завершите вашу обёртку командой `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"`, чтобы передать управление закреплённому двоичному файлу без жёсткого кодирования пути установки. |

37| `CLAUDE_CODE_REMOTE_SESSION_ID` | ID сессии в форме с тегом `cse_...`. Это та же сессия, которую [хуки жизненного цикла](#lifecycle-hooks) видят как `CLAUDE_RUNNER_SESSION_ID` в форме `session_...`; переменные UUID совпадают в обоих случаях, а замена префикса `cse_` на `session_` даёт ID, показанный в URL сессии. |37| `CLAUDE_CODE_REMOTE_SESSION_ID` | ID сессии в форме с тегом `cse_...`. Это та же сессия, которую [хуки жизненного цикла](#lifecycle-hooks) видят как `CLAUDE_RUNNER_SESSION_ID` в форме `session_...`; переменные UUID совпадают в обоих случаях, а замена префикса `cse_` на `session_` даёт ID, показанный в URL сессии. |

38| `CLAUDE_CODE_REMOTE_SESSION_UUID` | Тот же ID сессии в канонической форме UUID для систем, которые используют UUID в качестве ключа. |38| `CLAUDE_CODE_REMOTE_SESSION_UUID` | Тот же ID сессии в канонической форме UUID для систем, которые используют UUID в качестве ключа. |

39| `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` | Для сессии [Claude Tag](https://claude.com/docs/claude-tag/overview), которая относится к одной ветке Slack, — ссылка на эту ветку. Не установлена для других сессий и может быть не установлена и для сессии ветки. |

40| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | Для сессии Claude Tag, которая относится к одной ветке Slack, — временная метка Slack этой ветки, например `1700000000.000100`. Может быть не установлена, а также может быть установлена, когда `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` не установлена, поэтому проверяйте каждую переменную отдельно. |

39| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Абсолютный путь к файлу для каждой сессии, содержащему текущий JWT сессии, который поддерживается в актуальном состоянии при обновлении токенов. Подпроцессы оболочки читают его для своего заголовка `Authorization` при загрузке вложений, которые пользователь добавил в сессию. `exec` сохраняет переменную автоматически; обёртка, которая перестраивает окружение дочернего процесса, должна перенести переменную, иначе загрузки вложений молча прекратятся. |41| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Абсолютный путь к файлу для каждой сессии, содержащему текущий JWT сессии, который поддерживается в актуальном состоянии при обновлении токенов. Подпроцессы оболочки читают его для своего заголовка `Authorization` при загрузке вложений, которые пользователь добавил в сессию. `exec` сохраняет переменную автоматически; обёртка, которая перестраивает окружение дочернего процесса, должна перенести переменную, иначе загрузки вложений молча прекратятся. |

40| `CLAUDE_CONFIG_DIR` | Каталог конфигурации Claude для каждой сессии, записываемый при запуске сессии из снимка конфигурации хоста средства выполнения, который средство выполнения захватывает при запуске; см. [Разрешения и подтверждение инструментов](#permissions-and-tool-approval). Записи здесь изолированы для этой сессии. Каталог остаётся в `<base-dir>/_sessions/` после завершения сессии, если вы не запустите средство выполнения с [`--remove-session-state`](/docs/ru/self-hosted-environments-reference#runner-cli-flags); см. [Повторное использование предварительно подготовленного checkout](/docs/ru/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout). |42| `CLAUDE_CONFIG_DIR` | Каталог конфигурации Claude для каждой сессии, записываемый при запуске сессии из снимка конфигурации хоста средства выполнения, который средство выполнения захватывает при запуске; см. [Разрешения и подтверждение инструментов](#permissions-and-tool-approval). Записи здесь изолированы для этой сессии. Каталог остаётся в `<base-dir>/_sessions/` после завершения сессии, если вы не запустите средство выполнения с [`--remove-session-state`](/docs/ru/self-hosted-environments-reference#runner-cli-flags); см. [Повторное использование предварительно подготовленного checkout](/docs/ru/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout). |

41| `ANTHROPIC_BASE_URL` | Базовый URL API, который будет использовать дочерний процесс, доставляемый плоскостью управления для каждой сессии; обычно `https://api.anthropic.com`. Не переопределяйте его: учётные данные вывода сессии — это выданный Anthropic токен OAuth, который другие поставщики не принимают. |43| `ANTHROPIC_BASE_URL` | Базовый URL API, который будет использовать дочерний процесс, доставляемый плоскостью управления для каждой сессии; обычно `https://api.anthropic.com`. Не переопределяйте его: учётные данные вывода сессии — это выданный Anthropic токен OAuth, который другие поставщики не принимают. |


43 45 

44Обёртка также наследует остальную часть управляемого окружения дочернего процесса, включая любые переменные окружения, предоставленные сервером. `exec` передаёт всё это автоматически; если ваша обёртка порождает дочерний процесс другим способом, пересылайте окружение полностью.46Обёртка также наследует остальную часть управляемого окружения дочернего процесса, включая любые переменные окружения, предоставленные сервером. `exec` передаёт всё это автоматически; если ваша обёртка порождает дочерний процесс другим способом, пересылайте окружение полностью.

45 47 

48`CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` и `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` доступны вашей обёртке или [хуку `command`](#command). Они также доступны тому, что запускает сессия, например shell-командам, хукам git и хукам Claude Code. Хуки `checkout`, `post-session` и `spawn-runner` их не получают.

49 

50<h3 id="give-a-default-to-variables-that-can-be-unset">

51 Задавайте значение по умолчанию для переменных, которые могут быть не установлены

52</h3>

53 

54Каждая из переменных `CCR_SESSION_ACCOUNT_EMAIL`, `CLAUDE_RUNNER_CLIENT_PLATFORM`, `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` и `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` может быть не установлена. Если ваш скрипт использует `set -u`, Bash останавливается с ошибкой `unbound variable` при раскрытии неустановленной переменной, поэтому раскрывайте их со значением по умолчанию, например `${CCR_SESSION_ACCOUNT_EMAIL:-}`.

55 

56Везде, где оболочка раскрывает ссылку на ветку Slack, соблюдайте следующие меры предосторожности:

57 

58* **Заключайте её в кавычки**: ссылка может содержать символы, на которые реагирует оболочка, например `?` и `&`, поэтому заключайте переменную в кавычки, как в `"${CLAUDE_CODE_REMOTE_SLACK_THREAD_URL:-}"`.

59* **Не подставляйте её значение в строки `eval` и `sh -c`**: не подставляйте её значение в строку, которую выполняет `eval` или `sh -c`, даже внутри кавычек. Вместо этого пусть такая строка ссылается на саму переменную.

60 

46<h3 id="keep-stdin-and-file-descriptor-3-attached">61<h3 id="keep-stdin-and-file-descriptor-3-attached">

47 Сохраняйте stdin и дескриптор файла 3 подключёнными62 Сохраняйте stdin и дескриптор файла 3 подключёнными

48</h3>63</h3>

49 64 

50stdin дочернего процесса — это канал управления средства выполнения. Ротации токенов и сигналы завершения сессии поступают через него. Средство выполнения также открывает канал на дескрипторе файла 3 и читает из него сигналы активности дочернего процесса для управления таймаутами простоя и запуска. Простой `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` сохраняет оба автоматически.65stdin дочернего процесса — это канал управления средства выполнения. Ротации токенов и сигналы завершения сессии поступают через него. Средство выполнения также открывает канал на дескрипторе файла 3 и читает из него сигналы активности дочернего процесса для управления таймаутами простоя и запуска. Простой `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` сохраняет оба автоматически.

51 66 

52Если ваша обёртка переводит дочерний процесс в фоновый режим с помощью простого `&`, она разрывает stdin дочернего процесса: сессия выглядит работоспособной до истечения примерно 30-минутного времени жизни начального токена OAuth, после чего каждый вызов API завершается ошибкой `401 authentication_error`. Если ваша обёртка должна переводить дочерний процесс в фоновый режим, например чтобы сохранить ловушку очистки, сохраните stdin на дескрипторе файла 4 или выше и явно подключите его заново:67Если ваша обёртка переводит дочерний процесс в фоновый режим с помощью простого `&`, она разрывает stdin дочернего процесса. Сессия выглядит работоспособной до истечения примерно 30-минутного времени жизни начального токена OAuth, после чего каждый вызов API, использующий этот токен, завершается ошибкой `401 authentication_error`. Если ваша обёртка должна переводить дочерний процесс в фоновый режим, например чтобы сохранить ловушку очистки, сохраните stdin на дескрипторе файла 4 или выше и явно подключите его заново:

53 68 

54```bash theme={null}69```bash theme={null}

55exec 4<&070exec 4<&0


59wait "$CHILD"74wait "$CHILD"

60```75```

61 76 

62Не закрывайте и не переиспользуйте дескриптор файла 3 в обёртке. Перенаправлять stdout и stderr дочернего процесса можно.77Перенаправлять stdout дочернего процесса можно. Дескриптор файла 3 и stderr должны оставаться подключёнными к средству выполнения:

78 

79* **Дескриптор файла 3**: передаёт сигналы активности дочернего процесса средству выполнения. Не закрывайте и не переиспользуйте его в обёртке.

80* **stderr**: когда обёртка или дочерний процесс завершается с ненулевым кодом выхода, средство выполнения публикует последние строки stderr в сессию и выводит их в свой собственный лог. Пользователь сессии видит эти строки, поэтому не выводите секреты в stderr и удалите `set -x` перед развёртыванием обёртки. Если вы перенаправите stderr, сессии по-прежнему будут работать, но средство выполнения будет сообщать о сбое только с кодом выхода.

63 81 

64<h3 id="pass-the-system-prompt-flags-through">82<h3 id="pass-the-system-prompt-flags-through">

65 Передавайте флаги системного промпта дальше83 Передавайте флаги системного промпта дальше


108 checkout126 checkout

109</h3>127</h3>

110 128 

111Запускается один раз на репозиторий вместо встроенного клонирования и получения данных runner'а. Используйте хук для клонирования из зеркала сквозного доступа, инициализации рабочего дерева из архива или применения аутентификации git для каждой сессии. Runner устанавливает эти переменные, а также может устанавливать другие переменные `CLAUDE_RUNNER_`, которых нет в таблице:129Запускается один раз на репозиторий вместо встроенного клонирования и получения данных runner'а. Используйте хук для клонирования из зеркала сквозного доступа, к которому вы обращаетесь по HTTPS или SSH, инициализации рабочего дерева из архива или применения аутентификации git для каждой сессии. Runner устанавливает эти переменные, а также может устанавливать другие переменные `CLAUDE_RUNNER_`, которых нет в таблице:

112 130 

113| Variable | Description |131| Variable | Description |

114| :- | :- |132| :- | :- |

115| `CLAUDE_RUNNER_REPO_URL` | URL репозитория для клонирования, после применения любых `--git-host-rewrite` и `--git-ssh-rewrite` |133| `CLAUDE_RUNNER_REPO_URL` | URL репозитория для клонирования, после применения любых `--git-host-rewrite` и `--git-ssh-rewrite` |

116| `CLAUDE_RUNNER_REPO_REF` | Ревизия для проверки: ветка, тег или SHA коммита, как её запросила сессия. Пусто означает ветку по умолчанию репозитория. |134| `CLAUDE_RUNNER_REPO_REF` | Ревизия для checkout в том виде, в каком её запросила сессия: ветка, тег, SHA коммита или полное имя ссылки, например `refs/pull/<number>/head`. Пустое значение означает ветку по умолчанию репозитория. |

117| `CLAUDE_RUNNER_CHECKOUT_PATH` | Абсолютный путь, где должно остаться рабочее дерево |135| `CLAUDE_RUNNER_CHECKOUT_PATH` | Абсолютный путь, где должно остаться рабочее дерево |

118| `CLAUDE_RUNNER_SESSION_ID` | ID сессии в форме с тегом `session_...`, для логирования и корреляции |136| `CLAUDE_RUNNER_SESSION_ID` | ID сессии в форме с тегом `session_...`, для логирования и корреляции |

119| `CLAUDE_RUNNER_SESSION_UUID` | Тот же ID сессии в канонической форме UUID |137| `CLAUDE_RUNNER_SESSION_UUID` | Тот же ID сессии в канонической форме UUID |

120| `CLAUDE_RUNNER_API_BASE_URL` | Базовый URL API Anthropic для вызовов в области сессии |138| `CLAUDE_RUNNER_API_BASE_URL` | Базовый URL API Anthropic для вызовов в области сессии |

121| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Поверхность клиента, которая создала сессию, такая как `web_claude_ai`, `desktop_app` или `ios`. Не установлено, когда сессия не имеет записанной или распознанной поверхности. |139| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Интерфейс клиента, который создал сессию, например `web_claude_ai`, `desktop_app` или `ios`. Не установлена, если у сессии нет записанного или распознанного интерфейса, поэтому при `set -u` ссылайтесь на неё как `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}`. Требуется Claude Code v2.1.229 или новее. |

122| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Токен доступа сессии для вызовов API в области сессии |140| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Токен доступа сессии для вызовов API в области сессии |

123| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Настройки git, которые runner фиксирует для git, запускаемого вашим хуком. Они описаны в разделе [Конфигурация git внутри хуков жизненного цикла](#git-configuration-inside-lifecycle-hooks). Требуется Claude Code v2.1.280 или новее. |141| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Настройки git, которые runner фиксирует для git, запускаемого вашим хуком. Они описаны в разделе [Конфигурация git внутри хуков жизненного цикла](#git-configuration-inside-lifecycle-hooks). Требуется Claude Code v2.1.280 или новее. |

124 142 

125Скрипт должен оставить рабочее дерево в `CLAUDE_RUNNER_CHECKOUT_PATH`, проверенное на запрошенной ревизии. Отсоединённая HEAD в порядке; runner создаёт рабочую ветку сессии сверху. Runner проверяет, что путь содержит `.git` после этого; если ваш hook материализует источник, не основанный на git, такой как Perforce или распакованный tarball, установите `CLAUDE_RUNNER_SKIP_GIT_VERIFY=1` в окружении runner'а, чтобы пропустить эту проверку. Потоки на основе Git, такие как создание рабочей ветки и отправка результатов, требуют проверки git, поэтому экспортируйте результаты из деревьев, не основанных на git, с помощью [`post-session` hook](#post-session).143Скрипт должен оставить в `CLAUDE_RUNNER_CHECKOUT_PATH` рабочее дерево, переключённое на запрошенную ревизию. Отсоединённый HEAD подходит, потому что runner создаёт рабочую ветку сессии поверх него.

126 144 

127Runner не передаёт учётные данные git в hook. Вместо этого создайте учётные данные клонирования для каждой сессии из идентификации сессии: проверьте `CLAUDE_CODE_SESSION_ACCESS_TOKEN` с помощью стандартной библиотеки JWT для конечной точки JWKS под `CLAUDE_RUNNER_API_BASE_URL`, как описано в [Verify the token from your service](/docs/ru/self-hosted-environments-identity#verify-the-token-from-your-service), затем попросите вашу службу учётных данных выдать краткосрочные учётные данные клонирования для идентификации в утверждении `act` токена. `CLAUDE_RUNNER_CLAUDE_BIN` не установлен в окружении checkout-hook, поэтому подкоманда `decode-token` недоступна здесь. Возврат к любой аутентификации git, которая уже есть на хосте, такой как SSH агент, помощник учётных данных или `.netrc`, также является вариантом.145После возврата вашего хука runner проверяет, что `CLAUDE_RUNNER_CHECKOUT_PATH` содержит `.git`. Если ваш хук материализует источник, не основанный на git, такой как Perforce или распакованный tarball, установите `CLAUDE_RUNNER_SKIP_GIT_VERIFY=1` в окружении runner'а, чтобы пропустить эту проверку. Потоки на основе Git, такие как создание рабочей ветки и отправка результатов, требуют checkout git, поэтому экспортируйте результаты из деревьев, не основанных на git, с помощью [хука `post-session`](#post-session).

128 146 

129Когда hook завершается с ненулевым кодом или завершается с кодом 0 без оставления пригодной для использования проверки, то, что делает runner, зависит от репозитория:147<h4 id="get-git-credentials-in-the-hook">

148 Получение учётных данных git в хуке

149</h4>

130 150 

131* **Репозиторий, в который сессия отправляет результаты**: runner отмечает сеанс как неудачный, и при ненулевом выходе выводит пользователю конец stderr скрипта.151Runner не передаёт учётные данные git в хук. Подкоманда `decode-token` здесь тоже недоступна, потому что `CLAUDE_RUNNER_CLAUDE_BIN` не установлена в окружении хука checkout. Вместо этого создайте учётные данные клонирования для каждой сессии на основе идентичности сессии или вернитесь к собственной аутентификации git хоста:

132* **Репозиторий, из которого сессия только читает**, такой как репозиторий, добавленный к запущенной сессии: runner логирует строку `[runner:warn]` с деталями отказа, отправляет шаг `Skipped` в сессию, удаляет всё, что hook оставил в пути проверки, и продолжает с оставшимися репозиториями. Когда runner не может немедленно удалить путь, он повторяет удаление в конце сессии. Если пропуск оставляет сессию вообще без репозитория, runner отмечает сеанс как неудачный в любом случае.

133 152 

134До v2.1.228 runner отмечал сеанс как неудачный при отказе hook для любого репозитория, поэтому репозиторий только для чтения, который hook не мог обслуживать, отмечал сеанс как неудачный снова при каждом новом runner'е, на котором сессия возобновлялась.153* **Учётные данные клонирования для каждой сессии**: проверьте `CLAUDE_CODE_SESSION_ACCESS_TOKEN` с помощью стандартной библиотеки JWT по эндпоинту JWKS под `CLAUDE_RUNNER_API_BASE_URL`, как описано в разделе [Verify the token from your service](/docs/ru/self-hosted-environments-identity#verify-the-token-from-your-service). Затем попросите вашу службу учётных данных выдать краткосрочные учётные данные клонирования для идентичности из утверждения `act` токена. Привязывайте эти учётные данные к `act.sub` и не требуйте `act.email`.

154* **Аутентификация git хоста**: используйте любую аутентификацию git, которая уже есть на хосте, например SSH-агент, помощник учётных данных или `.netrc`.

135 155 

136Runner удаляет путь проверки после завершения сессии.156<h4 id="when-the-hook-fails">

157 Когда хук завершается ошибкой

158</h4>

159 

160Хук считается завершившимся ошибкой, если он завершается с ненулевым кодом или завершается с кодом 0, не оставив пригодного для использования checkout:

161 

162* **Репозиторий, в который сессия отправляет результаты**: runner отмечает сеанс как неудачный, и при ненулевом выходе выводит пользователю конец stderr скрипта.

163* **Репозиторий, из которого сессия только читает**, например репозиторий, добавленный к запущенной сессии: runner записывает в лог строку `[runner:warn]` с подробностями ошибки, отправляет в сессию шаг `Skipped`, удаляет всё, что хук оставил по пути checkout, и продолжает работу с оставшимися репозиториями. Если после пропуска у сессии не остаётся ни одного репозитория, runner всё равно отмечает сессию как неудачную.

164 

165Если хук завершается успешно, runner удаляет путь checkout после завершения сессии.

137 166 

138<h3 id="post-session">167<h3 id="post-session">

139 post-session168 post-session


151| `CLAUDE_RUNNER_WORKSPACE_PATHS` | Разделённые двоеточиями абсолютные пути рабочих деревьев сессии. Пусто для сессий с нулевым репозиторием. |180| `CLAUDE_RUNNER_WORKSPACE_PATHS` | Разделённые двоеточиями абсолютные пути рабочих деревьев сессии. Пусто для сессий с нулевым репозиторием. |

152| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | Путь к логу отладки сессии, всё ещё на диске во время выполнения hook'а |181| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | Путь к логу отладки сессии, всё ещё на диске во время выполнения hook'а |

153| `CLAUDE_RUNNER_API_BASE_URL` | Базовый URL API Anthropic для вызовов в области сессии |182| `CLAUDE_RUNNER_API_BASE_URL` | Базовый URL API Anthropic для вызовов в области сессии |

154| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Поверхность клиента, которая создала сессию, такая как `web_claude_ai`, `desktop_app` или `ios`. Не установлено, когда сессия не имеет записанной или распознанной поверхности. Требует Claude Code v2.1.229 или позже. |183| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Интерфейс клиента, который создал сессию, например `web_claude_ai`, `desktop_app` или `ios`. Не установлена, если у сессии нет записанного или распознанного интерфейса, поэтому при `set -u` ссылайтесь на неё как `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}`. Требуется Claude Code v2.1.229 или новее. |

155| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Токен доступа сессии для вызовов API в области сессии |184| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Токен доступа сессии для вызовов API в области сессии |

156| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Настройки git, которые runner фиксирует для git, запускаемого вашим хуком. Они описаны в разделе [Конфигурация git внутри хуков жизненного цикла](#git-configuration-inside-lifecycle-hooks). Требуется Claude Code v2.1.280 или новее. |185| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Настройки git, которые runner фиксирует для git, запускаемого вашим хуком. Они описаны в разделе [Конфигурация git внутри хуков жизненного цикла](#git-configuration-inside-lifecycle-hooks). Требуется Claude Code v2.1.280 или новее. |

157 186 

158`CLAUDE_RUNNER_EXIT_REASON` принимает одно из четырёх значений:187`CLAUDE_RUNNER_EXIT_REASON` принимает одно из четырёх значений:

159 188 

160* `completed`: сессия завершилась чисто. Процесс Claude Code завершился нормально, или сессия была архивирована или удалена, пока она всё ещё работала.189* `completed`: сессия завершилась чисто. Процесс Claude Code завершился нормально или завершился сам после того, как сессия была архивирована или удалена.

161* `failed`: процесс Claude Code упал, или настройка не удалась после его запуска.190* `failed`: процесс Claude Code упал, или настройка не удалась после его запуска.

162* `interrupted`: runner остановил сессию. Он освободил сессию, чтобы освободить слот, сессия истекла при запуске, сервер переместил сессию с этого runner'а, runner был в режиме дренирования, или сессия превысила свой лимит [`--kill-session-after-min`](/docs/ru/self-hosted-environments-reference#runner-cli-flags).191* `interrupted`: runner остановил сессию в одном из следующих случаев:

192 * Runner освободил сессию, чтобы освободить слот.

193 * Истекло время ожидания сессии при запуске.

194 * Сервер переместил сессию с этого runner'а.

195 * Опрос runner'а обнаружил архивирование или удаление до завершения процесса.

196 * Runner был в режиме дренирования.

197 * Сессия превысила свой лимит [`--kill-session-after-min`](/docs/ru/self-hosted-environments-reference#runner-cli-flags).

163* `abandoned`: зарезервировано для сессии, которую заявил другой runner. Hook в настоящее время не срабатывает в этом случае.198* `abandoned`: зарезервировано для сессии, которую заявил другой runner. Hook в настоящее время не срабатывает в этом случае.

164 199 

165[Счётчики жизненного цикла сессии](/docs/ru/self-hosted-environments-reference#session-lifecycle-counter-semantics) считают освобождение, истечение времени при запуске и перемещение сервера как `completed` вместо `interrupted`, потому что runner чисто вернул слот. Ожидайте этого различия, если вы сравниваете квитанции hook'а со счётчиками.200Если вы сравниваете квитанции хука со [счётчиками жизненного цикла сессии](/docs/ru/self-hosted-environments-reference#session-lifecycle-counter-semantics), ожидайте, что некоторые квитанции `interrupted` будут учтены там как `completed`. Счётчики считают освобождение, истечение времени при запуске, перемещение сервером, а также архивирование или удаление, которые первым обнаружил опрос runner'а, как `completed`, потому что runner чисто вернул слот.

166 201 

167Статус выхода hook'а никогда не влияет на результат сессии; отказ логируется и игнорируется. Runner ждёт до `--post-session-hook-timeout-sec`, 60 секунд по умолчанию, при каждом завершении сессии, включая завершение runner'а. Этот пример сохраняет незафиксированную работу в ветку спасения:202Статус выхода hook'а никогда не влияет на результат сессии; отказ логируется и игнорируется. Runner ждёт до `--post-session-hook-timeout-sec`, 60 секунд по умолчанию, при каждом завершении сессии, включая завершение runner'а. Этот пример сохраняет незафиксированную работу в ветку спасения:

168 203 

169```bash theme={null}204```bash theme={null}

170#!/usr/bin/env bash205#!/usr/bin/env bash

171set -u206set -u

207export GIT_ALLOW_PROTOCOL=${GIT_ALLOW_PROTOCOL:-https:http:ssh}

172IFS=':'208IFS=':'

173# -c overrides beat repo-local settings, blocking session-written fsmonitor,209# -c overrides beat repo-local settings, blocking session-written fsmonitor,

174# hook-path, and gpg-program config from executing code with the hook's210# hook-path, and gpg-program config from executing code with the hook's

175# privileges. -c commit.gpgsign=false also leaves these rescue commits211# privileges. -c commit.gpgsign=false also leaves these rescue commits

176# unsigned under --configure-git.212# unsigned under --configure-git.

177# Repo-local credential.helper and pushurl still apply, and on a runner213# Repo-local credential.helper and pushurl still apply, and on a runner

178# before v2.1.280 so does core.sshCommand; if the hook holds credentials214# before v2.1.280 so does core.sshCommand; see the note below the script

179# the session didn't, see the note below the script.215# before you give this push a credential.

180g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \216g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \

181 -c commit.gpgsign=false "$@"; }217 -c commit.gpgsign=false "$@"; }

182for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do218for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do


188done224done

189```225```

190 226 

191Хук выполняет push с любыми учётными данными git, доступными в его собственном окружении на хосте runner'а. При [подходе без учётных данных в образе](/docs/ru/self-hosted-environments-deploy#configure-git), в том числе когда встроенное клонирование проходит через git-прокси Anthropic, их нет, поэтому перед push создайте краткосрочные учётные данные для отправки внутри хука: обменяйте токен сессии, который хук получает в `CLAUDE_CODE_SESSION_ACCESS_TOKEN`, в вашей собственной службе токенов, предварительно проверив его, как описано в разделе [Проверка идентичности сессии](/docs/ru/self-hosted-environments-identity). Когда у хука есть учётные данные, которых не было у сессии, замените `origin` на URL, предоставленный оператором, и передайте `-c credential.helper=` вместе с вашим собственным помощником. Раздел [Конфигурация git внутри хуков жизненного цикла](#git-configuration-inside-lifecycle-hooks) описывает, на что всё ещё может влиять конфигурация, записанная сессией.227Строка `GIT_ALLOW_PROTOCOL` в скрипте ограничивает git удалёнными репозиториями по HTTPS, HTTP и SSH. Если окружение runner'а уже задаёт собственный непустой список `GIT_ALLOW_PROTOCOL`, скрипт сохраняет этот список.

228 

229Хук выполняет push с любыми учётными данными git, доступными в его собственном окружении на хосте runner'а. При [подходе без учётных данных в образе](/docs/ru/self-hosted-environments-deploy#configure-git), в том числе когда встроенное клонирование проходит через git-прокси Anthropic, их нет, поэтому перед push создайте краткосрочные учётные данные для отправки внутри хука: обменяйте токен сессии, который хук получает в `CLAUDE_CODE_SESSION_ACCESS_TOKEN`, в вашей собственной службе токенов, предварительно проверив его, как описано в разделе [Проверка идентичности сессии](/docs/ru/self-hosted-environments-identity).

230 

231Относитесь к любым учётным данным, которые ваш хук передаёт git, как к таким, которые может получить сессия, и создавайте их так, чтобы с их помощью можно было выполнить только этот push. Git в вашем хуке читает файлы конфигурации, в которые может записывать сессия, а помощник учётных данных или драйвер фильтра, указанный в одном из них, запускается с привилегиями вашего хука. Настройки в этих файлах также могут изменить, куда уходит push, независимо от того, какой удалённый репозиторий вы указываете. О настройках git, которые runner фиксирует в вашем хуке, и о тех, которые он оставляет на усмотрение этих файлов, см. раздел [Конфигурация git внутри хуков жизненного цикла](#git-configuration-inside-lifecycle-hooks).

192 232 

193<h4 id="hook-timing-when-the-runner-releases-a-session">233<h4 id="hook-timing-when-the-runner-releases-a-session">

194 Hook timing when the runner releases a session234 Hook timing when the runner releases a session


264| `CLAUDE_RUNNER_ORDER_ID` | Непрозрачный ключ идемпотентности, уникальный для каждого запроса на порождение и безопасный для имен ресурсов Kubernetes. Используйте только ID заказа как ключ дедупликации вашего провизионера. |304| `CLAUDE_RUNNER_ORDER_ID` | Непрозрачный ключ идемпотентности, уникальный для каждого запроса на порождение и безопасный для имен ресурсов Kubernetes. Используйте только ID заказа как ключ дедупликации вашего провизионера. |

265| `CLAUDE_RUNNER_SESSION_ID` | Сеанс, для которого предназначен этот запрос. Он повторяется при каждом повторном запросе для сеанса, поэтому используйте его для логирования и маршрутизации, а не как ключ дедупликации. Пусто для запросов предварительного прогрева, которые загружают резервное средство выполнения перед любым конкретным сеансом, когда установлен [`--min-idle`](/docs/ru/self-hosted-environments-reference#orchestrator-cli-flags), поэтому не предполагайте, что переменная установлена. |305| `CLAUDE_RUNNER_SESSION_ID` | Сеанс, для которого предназначен этот запрос. Он повторяется при каждом повторном запросе для сеанса, поэтому используйте его для логирования и маршрутизации, а не как ключ дедупликации. Пусто для запросов предварительного прогрева, которые загружают резервное средство выполнения перед любым конкретным сеансом, когда установлен [`--min-idle`](/docs/ru/self-hosted-environments-reference#orchestrator-cli-flags), поэтому не предполагайте, что переменная установлена. |

266| `CLAUDE_RUNNER_SESSION_UUID` | Тот же ID сеанса в канонической форме UUID. Пусто для запросов предварительного прогрева. |306| `CLAUDE_RUNNER_SESSION_UUID` | Тот же ID сеанса в канонической форме UUID. Пусто для запросов предварительного прогрева. |

267| `CLAUDE_RUNNER_ATTEMPT` | Сколько запросов на порождение было у этого сеанса. `0` для запросов предварительного прогрева. |307| `CLAUDE_RUNNER_ATTEMPT` | Счётчик для каждой сессии, предназначенный для логирования. Это не число повторных попыток и не число запросов. `0` для запросов предварительного прогрева, хотя запрос для сессии тоже может содержать `0`. |

268| `CLAUDE_RUNNER_ORDER_SERVER_TIME` | Время сервера из заголовка HTTP `Date` ответа опроса. Когда хук проверяет `exp` JWT наряда на работу, сравнивайте с этим значением вместо локальных часов, чтобы допустить перекос. Пусто, когда шлюз опустил заголовок. |308| `CLAUDE_RUNNER_ORDER_SERVER_TIME` | Время сервера из заголовка HTTP `Date` ответа опроса. Когда хук проверяет `exp` JWT наряда на работу, сравнивайте с этим значением вместо локальных часов, чтобы допустить перекос. Пусто, когда шлюз опустил заголовок. |

269| `CLAUDE_RUNNER_POOL_ID` | ID окружения, к которому должно присоединиться новое средство выполнения, в форме `ccpool_...` |309| `CLAUDE_RUNNER_POOL_ID` | ID окружения, к которому должно присоединиться новое средство выполнения, в форме `ccpool_...` |

270| `CLAUDE_RUNNER_ACCOUNT_ID` | Помеченный ID учетной записи, которая поставила сеанс в очередь, для маршрутизации по учетной записи, квоты или возврата средств. Пусто, когда недоступно, и всегда пусто для сеансов канала Claude Tag, которые не ставит в очередь ни одна учетная запись. |310| `CLAUDE_RUNNER_ACCOUNT_ID` | Помеченный ID учетной записи, которая поставила сеанс в очередь, для маршрутизации по учетной записи, квоты или возврата средств. Пусто, когда недоступно, и всегда пусто для сеансов канала Claude Tag, которые не ставит в очередь ни одна учетная запись. |

271| `CLAUDE_RUNNER_ACCOUNT_EMAIL` | Электронная почта учетной записи, которая поставила сеанс в очередь. Пусто, когда недоступно. Рассматривайте электронную почту как личную информацию и не логируйте ее. |311| `CLAUDE_RUNNER_ACCOUNT_EMAIL` | Электронная почта учетной записи, которая поставила сеанс в очередь. Пусто, когда недоступно. Рассматривайте электронную почту как личную информацию и не логируйте ее. |

272| `CLAUDE_RUNNER_PRIMARY_REPO_URL` | URL первого источника git сеанса для маршрутизации на средство выполнения с этим репозиторием предварительно прогретым. Пусто, когда сеанс не имеет источников git. |312| `CLAUDE_RUNNER_PRIMARY_REPO_URL` | URL первого источника git сеанса для маршрутизации на средство выполнения с этим репозиторием предварительно прогретым. Пусто, когда сеанс не имеет источников git. |

273| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | Ревизия первого источника git сеанса: ветка, SHA или тег. Пусто, когда не указано. |313| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | Ревизия первого git-источника сессии: ветка, SHA, тег или полное имя ссылки. Пусто, когда не указано. |

274| `CLAUDE_RUNNER_REPO_SOURCES` | JSON массив `{url, revision}` для всех источников git сеанса для хуков, которые маршрутизируют на вторичный репозиторий. Пусто, когда нет источников. |314| `CLAUDE_RUNNER_REPO_SOURCES` | JSON массив `{url, revision}` для всех источников git сеанса для хуков, которые маршрутизируют на вторичный репозиторий. Пусто, когда нет источников. |

275| `CLAUDE_RUNNER_CORRELATION_ID` | ID корреляции, предоставленный при создании сеанса, повторно отправленный, чтобы хук мог сопоставить этот наряд на работу с запросом, который создал сеанс. Пусто, когда сеанс не имеет ни одного. |315| `CLAUDE_RUNNER_CORRELATION_ID` | ID корреляции, предоставленный при создании сеанса, повторно отправленный, чтобы хук мог сопоставить этот наряд на работу с запросом, который создал сеанс. Пусто, когда сеанс не имеет ни одного. |

276| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Поверхность клиента, которая создала сеанс, такая как `web_claude_ai`, `desktop_app`, `ios` или `scheduled_trigger`, для аналитики внедрения. Не установлена, когда сеанс не имеет записанной или распознанной поверхности, и для запросов предварительного прогрева; проверьте ее с помощью `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]`, что остается безопасным под `set -u`. |316| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Поверхность клиента, которая создала сеанс, такая как `web_claude_ai`, `desktop_app`, `ios` или `scheduled_trigger`, для аналитики внедрения. Не установлена, когда сеанс не имеет записанной или распознанной поверхности, и для запросов предварительного прогрева; проверьте ее с помощью `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]`, что остается безопасным под `set -u`. |


282* **Используйте `--capacity 1` на порожденных средствах выполнения**: наряд на работу, привязанный к сеансу, регистрирует ровно одно средство выполнения, привязанное к этому сеансу, поэтому более высокая емкость добавляет слоты, которые никогда не получают работу, и средство выполнения логирует предупреждение при запуске.322* **Используйте `--capacity 1` на порожденных средствах выполнения**: наряд на работу, привязанный к сеансу, регистрирует ровно одно средство выполнения, привязанное к этому сеансу, поэтому более высокая емкость добавляет слоты, которые никогда не получают работу, и средство выполнения логирует предупреждение при запуске.

283* **Нарядные работы предварительного прогрева регистрируют без привязки**: резервное средство выполнения не привязано к сеансу и заявляет поставленную в очередь работу, как средство выполнения фиксированного флота.323* **Нарядные работы предварительного прогрева регистрируют без привязки**: резервное средство выполнения не привязано к сеансу и заявляет поставленную в очередь работу, как средство выполнения фиксированного флота.

284 324 

285Контракт имеет четыре правила, независимые от провизионера:325Контракт состоит из четырёх правил, независимо от того, на какой платформе ваш хук выделяет ресурсы:

286 326 

2871. **Будьте идемпотентны на `CLAUDE_RUNNER_ORDER_ID`.** Переделивка одного и того же запроса должна порождать не более одного средства выполнения. Выведите детерминированное имя ресурса из ID заказа и позвольте вашей платформе отклонить дубликат. Не ключируйте на `CLAUDE_RUNNER_SESSION_ID` вместо этого. Каждый повторный запрос для сеанса несет тот же ID сеанса с новым ID заказа, поэтому рабочая нагрузка, названная или дедуплицированная по ID сеанса, создается один раз и никогда снова для этого сеанса.3271. **Будьте идемпотентны на `CLAUDE_RUNNER_ORDER_ID`.** Переделивка одного и того же запроса должна порождать не более одного средства выполнения. Выведите детерминированное имя ресурса из ID заказа и позвольте вашей платформе отклонить дубликат. Не ключируйте на `CLAUDE_RUNNER_SESSION_ID` вместо этого. Каждый повторный запрос для сеанса несет тот же ID сеанса с новым ID заказа, поэтому рабочая нагрузка, названная или дедуплицированная по ID сеанса, создается один раз и никогда снова для этого сеанса.

2882. **Не повторяйте рабочую нагрузку.** Один ID заказа означает не более одной созданной рабочей нагрузки. Если средство выполнения никогда не регистрируется, Anthropic повторно запрашивает с новым ID заказа после `--expected-spawn-seconds`.3282. **Не повторяйте рабочую нагрузку.** Один ID заказа означает не более одной созданной рабочей нагрузки. Если средство выполнения никогда не регистрируется, Anthropic повторно запрашивает с новым ID заказа после `--expected-spawn-seconds`.

2893. **Используйте контракт кода выхода.** Выход 0 означает отправлено. Выход 1 означает повторяемый отказ; сеанс отступает и переоффертируется. Выход 2 или выше означает неповторяемый; сеанс блокируется от порождения снова до тех пор, пока [владелец](/docs/ru/cloud-environments#organization-shared-environments) не выберет **Retry** на нем на вкладке **Activity** окружения. При ненулевом выходе хвост stderr хука появляется там как причина отказа, поэтому напишите действенную ошибку в stderr и никогда не секреты. Для запроса предварительного прогрева нет сеанса для отказа: оркестратор логирует ненулевой выход локально только, и сервер повторно запрашивает порождение после аренды.3293. **Соблюдайте контракт кода выхода.** Завершайтесь со статусом, соответствующим результату:

2904. **Установите `--expected-spawn-seconds` на по крайней мере ваше время загрузки p99.** Это аренда на стороне сервера. Все реплики оркестратора должны использовать одно и то же значение.330 

331 * **Выход 0**: отправлено.

332 * **Выход 1**: сбой, допускающий повторную попытку. Сессия выжидает и предлагается снова.

333 * **Выход 2 или выше**: сбой, не допускающий повторной попытки. Сессия блокируется от повторного порождения до тех пор, пока пользователь не отправит ей новое сообщение или [Owner](/docs/ru/cloud-environments#organization-shared-environments) не выберет для неё **Retry** на вкладке **Activity** окружения.

334 

335 При ненулевом выходе конец stderr хука отображается на вкладке **Activity** как причина сбоя, поэтому пишите в stderr понятную ошибку, указывающую, что делать, и никогда не пишите туда секреты. В shell-хуке [сохраняйте временные сбои повторяемыми](#keep-transient-failures-retryable-in-a-shell-hook).

336 

337 У запроса предварительного прогрева нет сессии, которая могла бы завершиться сбоем: оркестратор записывает ненулевой выход только в локальный лог, а сервер повторно запрашивает порождение после истечения аренды `--expected-spawn-seconds`.

3384. **Установите `--expected-spawn-seconds` не меньше вашего времени p99 от запроса на порождение до регистрации средства выполнения.** Отсчитывайте от момента, когда оркестратор получает запрос на порождение, и учитывайте как ожидание ресурсов на вашей платформе, так и время загрузки. Это значение является арендой на стороне сервера, и наряд на работу истекает вместе с ней, поэтому средство выполнения, рабочая нагрузка которого запускается дольше, не сможет зарегистрироваться. Все реплики оркестратора должны использовать одно и то же значение.

291 339 

292Все, что хук пишет в stdout или stderr, появляется в логе оркестратора с автоматически удаленными учетными данными. Если сеансы остаются в очереди, проверьте тело `/healthz` оркестратора на предмет количества в очереди, затем откройте вкладку **Activity** вашего окружения на [странице администратора **Cloud environments**](https://claude.ai/admin-settings/cloud-environments): разверните неудачный сеанс там для его ошибки порождения и выберите **Retry** для повторного запроса.340Все, что хук пишет в stdout или stderr, появляется в логе оркестратора с автоматически удаленными учетными данными. Если сеансы остаются в очереди, проверьте тело `/healthz` оркестратора на предмет количества в очереди, затем откройте вкладку **Activity** вашего окружения на [странице администратора **Cloud environments**](https://claude.ai/admin-settings/cloud-environments): разверните неудачный сеанс там для его ошибки порождения и выберите **Retry** для повторного запроса.

293 341 

294Сеанс, который остается в очереди без ошибки порождения на вкладке **Activity**, может означать, что хук ключируется по ID сеанса. Чтобы подтвердить, проверьте, есть ли на вашей платформе рабочая нагрузка для первого запроса порождения этого сеанса и нет ни одной для повторных запросов. Если это так, ключируйте рабочую нагрузку на `CLAUDE_RUNNER_ORDER_ID` вместо этого.342Сеанс, который остается в очереди без ошибки порождения на вкладке **Activity**, может означать, что хук ключируется по ID сеанса. Чтобы подтвердить, проверьте, есть ли на вашей платформе рабочая нагрузка для первого запроса порождения этого сеанса и нет ни одной для повторных запросов. Если это так, ключируйте рабочую нагрузку на `CLAUDE_RUNNER_ORDER_ID` вместо этого.

295 343 

344<h4 id="keep-transient-failures-retryable-in-a-shell-hook">

345 Сохраняйте временные сбои повторяемыми в shell-хуке

346</h4>

347 

348В shell-хуке, использующем `set -e`, сбой, который могла бы устранить повторная попытка, может заблокировать сессию. Хук останавливается на сбойной команде и завершается с собственным статусом этой команды, а оркестратор применяет контракт кода выхода к этому статусу. Многие сбои возвращают статус 2 или выше, например `127`, когда команда не установлена, и `22` от `curl --fail` при ошибке HTTP, поэтому они блокируют сессию при первом же сбое.

349 

350Сессия, которую хук уже заблокировал, остаётся заблокированной, пока пользователь не отправит ей новое сообщение или [Owner](/docs/ru/cloud-environments#organization-shared-environments) не выберет для неё **Retry** на вкладке **Activity** окружения.

351 

352Чтобы вместо этого превращать такой сбой в выход 1, поместите эти строки сразу под строкой `#!` хука, перед всем, что может завершиться сбоем:

353 

354```bash theme={null}

355set -e

356PERMANENT=; permanent() { printf '%s\n' "$*" >&2; PERMANENT=1; exit 2; }

357trap 'rc=$?; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT

358```

359 

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

361 

362* **Просто `exit 2` или выше**: при установленной ловушке он превращается в выход 1. Для ошибки, которую не исправит никакая повторная попытка, вместо этого вызовите `permanent` с указанием причины, например `permanent "namespace claude-runners does not exist"`. Вызывайте её в основной оболочке, а не внутри `$( )`, `( )` или конвейера.

363* **`exec`**: не начинайте последнюю команду хука с `exec`, потому что `exec` заменяет оболочку, и ловушка не выполняется.

364* **Вторая ловушка `EXIT`**: второй `trap ... EXIT` заменяет первый, поэтому объедините их в одну ловушку. Поместите команды очистки сразу после `rc=$?;` и завершите каждую `|| true;`. Тогда очистка выполняется как при сбое, так и при успехе, а сбойная команда очистки не влияет на статус выхода хука. Эта объединённая ловушка показывает структуру, где `your-cleanup-command` заменяет вашу собственную команду:

365 

366 ```bash theme={null}

367 trap 'rc=$?; your-cleanup-command || true; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT

368 ```

369* **Команды, которым разрешено завершаться сбоем**: если хук раньше не использовал `set -e`, теперь он останавливается на первой команде, вернувшей ненулевой статус, например на поиске, который ничего не нашёл, или на повторной отправке, которую отклоняет ваша платформа. Если хук использует результат, сделайте эту команду условием `if`. Если он игнорирует результат, добавьте после команды `|| true`.

370 

371Чтобы убедиться, что ловушка работает, добавьте сразу под строкой `trap` строку, вызывающую несуществующую команду, например `no-such-command`. Запустите файл хука из своей оболочки и убедитесь, что `echo $?` выводит `1`, затем удалите эту строку.

372 

296<h2 id="send-model-requests-to-bedrock-or-agent-platform">373<h2 id="send-model-requests-to-bedrock-or-agent-platform">

297 Отправка запросов к модели в Bedrock или Agent Platform374 Отправка запросов к модели в Bedrock или Agent Platform

298</h2>375</h2>


381Сессия, отправляющая запросы к модели в Amazon Bedrock или Google Cloud's Agent Platform, отличается от сессии в Anthropic API следующим:458Сессия, отправляющая запросы к модели в Amazon Bedrock или Google Cloud's Agent Platform, отличается от сессии в Anthropic API следующим:

382 459 

383* **Политики из claude.ai**: [настройки, управляемые сервером](/docs/ru/server-managed-settings), не доходят до этих сессий. Не доходят и политики организации, которые Owner задаёт в настройках администратора Claude Code, поэтому Claude Code не применяет их внутри сессии. Поместите правила, на которые вы полагаетесь, в [файл управляемых настроек](/docs/ru/managed-settings#delivery-mechanisms) образа runner.460* **Политики из claude.ai**: [настройки, управляемые сервером](/docs/ru/server-managed-settings), не доходят до этих сессий. Не доходят и политики организации, которые Owner задаёт в настройках администратора Claude Code, поэтому Claude Code не применяет их внутри сессии. Поместите правила, на которые вы полагаетесь, в [файл управляемых настроек](/docs/ru/managed-settings#delivery-mechanisms) образа runner.

461* **Скиллы аккаунта**: эти сессии не загружают скиллы, включённые для аккаунта claude.ai пользователя. См. [Как собирается конфигурация каждой сессии](#how-each-session’s-config-is-assembled).

384* **Файлы**: файлы, которые пользователи прикрепляют к сессии в claude.ai, мобильном или десктопном приложении, до неё не доходят, и Claude не может отправлять файлы обратно с помощью [инструмента `SendUserFile`](/docs/ru/tools-reference). Вместо этого размещайте входные файлы в репозитории или на runner.462* **Файлы**: файлы, которые пользователи прикрепляют к сессии в claude.ai, мобильном или десктопном приложении, до неё не доходят, и Claude не может отправлять файлы обратно с помощью [инструмента `SendUserFile`](/docs/ru/tools-reference). Вместо этого размещайте входные файлы в репозитории или на runner.

385* **Выбор модели**: управляющий уровень Anthropic передаёт модель для каждой сессии, а если сессия запускается без неё, Claude Code использует модель по умолчанию для провайдера. Runner удаляет `ANTHROPIC_MODEL` и `ANTHROPIC_DEFAULT_MODEL` из окружения, которое он передаёт сессиям. В примерах на страницах провайдеров задаётся `ANTHROPIC_MODEL`, но в окружении runner ни одна из этих переменных ни на что не влияет. Переменные для отдельных семейств из раздела «Закрепление версий моделей» для [Amazon Bedrock](/docs/ru/amazon-bedrock#4-pin-model-versions) и [Agent Platform](/docs/ru/google-vertex-ai#5-pin-model-versions) до сессий доходят. Они определяют, во что разрешается псевдоним, например `opus`, но не полный идентификатор модели.463* **Выбор модели**: управляющий уровень Anthropic передаёт модель для каждой сессии, а если сессия запускается без неё, Claude Code использует модель по умолчанию для провайдера. Вы не можете выбрать модель с помощью `ANTHROPIC_MODEL` или `ANTHROPIC_DEFAULT_MODEL` в окружении runner, но можете закрепить, во что разрешается псевдоним:

464 * **`ANTHROPIC_MODEL` и `ANTHROPIC_DEFAULT_MODEL`**: runner удаляет их из окружения, которое он передаёт сессиям, хотя в примерах на страницах провайдеров задаётся `ANTHROPIC_MODEL`.

465 * **Переменные закрепления для отдельных семейств**: переменные из раздела «Закрепление версий моделей» для [Amazon Bedrock](/docs/ru/amazon-bedrock#4-pin-model-versions) и [Agent Platform](/docs/ru/google-vertex-ai#5-pin-model-versions) до сессий доходят. Они определяют, во что разрешается псевдоним, например `opus`, но не полный идентификатор модели.

386* **Модели, которые ваш аккаунт не обслуживает**: сессия может завершиться ошибкой на сообщении с указанием модели. Включите модели, которые могут выбирать ваши разработчики, фоновую модель, описанную в разделе «Закрепление версий моделей», и модель классификатора, которую использует [авторежим](/docs/ru/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry). В Amazon Bedrock разрешите каждую из них в своей политике.466* **Модели, которые ваш аккаунт не обслуживает**: сессия может завершиться ошибкой на сообщении с указанием модели. Включите модели, которые могут выбирать ваши разработчики, фоновую модель, описанную в разделе «Закрепление версий моделей», и модель классификатора, которую использует [авторежим](/docs/ru/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry). В Amazon Bedrock разрешите каждую из них в своей политике.

387* **Веб-поиск и быстрый режим**: [веб-поиск](/docs/ru/tools-reference#websearch-tool-behavior) недоступен в Amazon Bedrock, а [быстрый режим](/docs/ru/fast-mode) недоступен ни у одного из этих провайдеров. О других возможностях, различающихся в зависимости от провайдера, см. [Возможности CLI, зависящие от провайдера](/docs/ru/feature-availability#cli-capabilities-that-vary-by-provider).467* **Веб-поиск и быстрый режим**: [веб-поиск](/docs/ru/tools-reference#websearch-tool-behavior) недоступен в Amazon Bedrock, а [быстрый режим](/docs/ru/fast-mode) недоступен ни у одного из этих провайдеров. О других возможностях, различающихся в зависимости от провайдера, см. [Возможности CLI, зависящие от провайдера](/docs/ru/feature-availability#cli-capabilities-that-vary-by-provider).

388 468 


411 491 

412Сессии наследуют окружение раннера, поэтому задайте там [`ENABLE_TOOL_SEARCH`](/docs/ru/mcp#scale-with-mcp-tool-search), чтобы управлять поиском инструментов MCP для каждой сессии, которую запускает раннер; допустимые значения описаны на странице MCP.492Сессии наследуют окружение раннера, поэтому задайте там [`ENABLE_TOOL_SEARCH`](/docs/ru/mcp#scale-with-mcp-tool-search), чтобы управлять поиском инструментов MCP для каждой сессии, которую запускает раннер; допустимые значения описаны на странице MCP.

413 493 

494<a id="connection-timing" />

495 

496<h3 id="wait-for-mcp-servers-before-the-first-turn">

497 Ожидание MCP-серверов перед первым ходом

498</h3>

499 

500Сессия на собственном хостинге ненадолго ожидает MCP-серверы, которые ещё подключаются, в двух разных точках. Если сервер не успевает к моменту окончания ожидания, его инструменты отсутствуют в начале первого хода и становятся доступны позже без каких-либо действий с вашей стороны. Вот эти две точки ожидания:

501 

502* **Запуск сессии**: до того как список инструментов будет получен в первый раз, сессия по умолчанию ждёт до 5 секунд сервер HTTP или SSE, в записи которого задано [`alwaysLoad: true`](/docs/ru/mcp#exempt-a-server-from-deferral), или все серверы, если в окружении раннера задано [`MCP_CONNECTION_NONBLOCKING=0`](/docs/ru/env-vars). В остальных случаях серверы HTTP и SSE подключаются в фоновом режиме. Пока сессия ждёт на этом этапе, она инициализируется медленнее. [`MCP_CONNECT_TIMEOUT_MS`](/docs/ru/env-vars) изменяет значение по умолчанию в 5 секунд.

503* **Первый ход**: после поступления сообщения первый ход ждёт до 2 секунд stdio-серверы, которые ещё подключаются. Пока сессия ждёт на этом этапе, первый ответ приходит медленнее. Чтобы изменить длительность этого ожидания, задайте [`CLAUDE_CODE_MCP_STARTUP_WAIT_MS`](/docs/ru/env-vars) в окружении раннера. Эта переменная не меняет, какие серверы охватывает ожидание. Требуется Claude Code v2.1.274 или новее.

504 

505У `claude mcp add` нет флага `alwaysLoad`. Чтобы задать этот ключ, добавьте сервер командой `claude mcp add-json`, которая принимает его в JSON сервера и записывает в `.claude.json`. В вашем Dockerfile:

506 

507```dockerfile theme={null}

508RUN claude mcp add-json core '{"type":"http","url":"https://mcp.example.com/mcp","alwaysLoad":true}' --scope user

509```

510 

511Если инструменты сервера не появляются и в последующих ходах, проверьте, попал ли сервер в сессию вообще, как описано в разделе [MCP-серверы](#mcp-servers).

512 

414<h3 id="turn-off-built-in-session-tools">513<h3 id="turn-off-built-in-session-tools">

415 Отключение встроенных инструментов сессии514 Отключение встроенных инструментов сессии

416</h3>515</h3>


571 670 

572Установите `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` для заполнения из другого пути или укажите его на пустой каталог для отключения заполнения.671Установите `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` для заполнения из другого пути или укажите его на пустой каталог для отключения заполнения.

573 672 

574Закоммиченный в репозиторий `.claude/settings.json` накладывается сверху как настройки проекта. В сессии с несколькими репозиториями [действует файл не более чем одного репозитория](#repository-settings-in-sessions-with-several-repositories). Сессии также читают [`managed-settings.json`](/docs/ru/settings#where-settings-live) из стандартного системного пути в вашем образе средства выполнения. Применяются ли его ключи наряду с [управляемыми сервером настройками](/docs/ru/server-managed-settings), определяется тем, [как Claude Code объединяет управляемые источники](/docs/ru/managed-settings#how-claude-code-combines-managed-sources): по умолчанию, когда ваша организация доставляет какие-либо управляемые сервером ключи, сессии игнорируют файл из образа средства выполнения, за исключением [ключей, которые Claude Code читает из каждого источника администратора](/docs/ru/managed-settings#keys-read-from-every-admin-source), таких как блок `env`, блокировки песочницы, пути к исполняемым файлам песочницы и `forceRemoteSettingsRefresh`. См. [приоритет настроек](/docs/ru/settings#settings-precedence).673Сессии также читают следующие файлы настроек:

674 

675* **Настройки проекта**: закоммиченный в репозиторий `.claude/settings.json` накладывается поверх базовой конфигурации уровня пользователя. В сессии с несколькими репозиториями [действует файл не более чем одного репозитория](#repository-settings-in-sessions-with-several-repositories).

676* **Управляемые настройки**: сессии читают [`managed-settings.json`](/docs/ru/settings#where-settings-live) из стандартного системного пути в вашем образе средства выполнения. О том, применяются ли его ключи наряду с [управляемыми сервером настройками](/docs/ru/server-managed-settings), см. раздел [как Claude Code объединяет управляемые источники](/docs/ru/managed-settings#how-claude-code-combines-managed-sources).

677 

678О порядке применения этих источников см. [приоритет настроек](/docs/ru/settings#settings-precedence).

575 679 

576Когда плоскость управления Anthropic предоставляет сеансу [хуки Claude Code](/docs/ru/hooks), средство выполнения устанавливает их рядом, а не над вашей собственной конфигурацией. Требует Claude Code v2.1.229 или позже.680Когда плоскость управления Anthropic предоставляет сеансу [хуки Claude Code](/docs/ru/hooks), средство выполнения устанавливает их рядом, а не над вашей собственной конфигурацией. Требует Claude Code v2.1.229 или позже.

577 681 


579* **Кто их создает**: плоскость управления заполняет скрипты из фиксированных констант в своем собственном развертывании, никогда не из входных данных для каждого сеанса или третьей стороны.683* **Кто их создает**: плоскость управления заполняет скрипты из фиксированных констант в своем собственном развертывании, никогда не из входных данных для каждого сеанса или третьей стороны.

580* **Что по-прежнему их управляет**: хуки, доставленные через `--settings`, входят в обычную объединенную конфигурацию хука, а не в управляемый уровень, поэтому ваши управляемые настройки по-прежнему применяются. `disableAllHooks` отключает их, и они не входят в категории, которые [`allowManagedHooksOnly`](/docs/ru/settings-reference#allowmanagedhooksonly) сохраняет загруженными.684* **Что по-прежнему их управляет**: хуки, доставленные через `--settings`, входят в обычную объединенную конфигурацию хука, а не в управляемый уровень, поэтому ваши управляемые настройки по-прежнему применяются. `disableAllHooks` отключает их, и они не входят в категории, которые [`allowManagedHooksOnly`](/docs/ru/settings-reference#allowmanagedhooksonly) сохраняет загруженными.

581 685 

686Когда пользователь сам запускает свою сессию, Claude Code также загружает [скиллы, включённые для его учётной записи claude.ai](/docs/ru/skills#skills-in-cowork-and-cloud-sessions), в каталог конфигурации этой сессии. Запуск [routine](/docs/ru/routines) не получает скиллы своего владельца, а сессия, которая [отправляет запросы к модели в Bedrock или Agent Platform](#send-model-requests-to-bedrock-or-agent-platform), не загружает никаких скиллов. Если такой сессии нужен скилл, сделайте его коммит в `.claude/skills/` репозитория или добавьте его в образ средства выполнения.

687 

582Вне сессий [Claude Tag](https://claude.com/docs/claude-tag/overview) сессия в самостоятельно размещаемом окружении по умолчанию работает с отключённой [автоматической памятью](/docs/ru/memory#auto-memory). Для инструкций, которые должны сохраняться между сессиями, используйте `CLAUDE.md` в вашем образе средства выполнения или в репозитории.688Вне сессий [Claude Tag](https://claude.com/docs/claude-tag/overview) сессия в самостоятельно размещаемом окружении по умолчанию работает с отключённой [автоматической памятью](/docs/ru/memory#auto-memory). Для инструкций, которые должны сохраняться между сессиями, используйте `CLAUDE.md` в вашем образе средства выполнения или в репозитории.

583 689 

584Снимок `~/.claude/` хоста, который делает средство выполнения, не включает каталог `projects/`. Место хранения автоматической памяти по умолчанию находится внутри этого каталога. Если вы поместите туда файлы памяти, средство выполнения не перенесёт их в сессии, и они не включат автоматическую память.690Снимок `~/.claude/` хоста, который делает средство выполнения, не включает каталог `projects/`. Место хранения автоматической памяти по умолчанию находится внутри этого каталога. Если вы поместите туда файлы памяти, средство выполнения не перенесёт их в сессии, и они не включат автоматическую память.

Details

20 20 

21* **Эфемерные контейнеры для каждой сессии**: запускайте каждый процесс runner в свежем контейнере или VM, который уничтожается при выходе процесса, с `--capacity 1` и значением по умолчанию `--drain-grace-sec 0`, чтобы каждый контейнер обслуживал ровно одну сессию. При более высокой ёмкости или положительном периоде осушения один контейнер обслуживает несколько сессий от одного [заблокированного владельца](/docs/ru/self-hosted-environments#key-concepts); см. [Runner lifecycle](/docs/ru/self-hosted-environments#runner-lifecycle). Не переиспользуйте файловую систему между перезапусками runner, кроме намеренной настройки [pre-warmed checkout](#reuse-a-pre-warmed-checkout), и никогда между владельцами.21* **Эфемерные контейнеры для каждой сессии**: запускайте каждый процесс runner в свежем контейнере или VM, который уничтожается при выходе процесса, с `--capacity 1` и значением по умолчанию `--drain-grace-sec 0`, чтобы каждый контейнер обслуживал ровно одну сессию. При более высокой ёмкости или положительном периоде осушения один контейнер обслуживает несколько сессий от одного [заблокированного владельца](/docs/ru/self-hosted-environments#key-concepts); см. [Runner lifecycle](/docs/ru/self-hosted-environments#runner-lifecycle). Не переиспользуйте файловую систему между перезапусками runner, кроме намеренной настройки [pre-warmed checkout](#reuse-a-pre-warmed-checkout), и никогда между владельцами.

22 * <span id="processes-a-stopped-session-leaves" />Когда runner останавливает сессию, он не отправляет никакого сигнала процессу, который продолжает работать после завершения его shell-команды, например сервису, ставшему демоном. Уничтожение контейнера или VM завершает такой процесс.22 * <span id="processes-a-stopped-session-leaves" />Когда runner останавливает сессию, он не отправляет никакого сигнала процессу, который продолжает работать после завершения его shell-команды, например сервису, ставшему демоном. Уничтожение контейнера или VM завершает такой процесс.

23* **Нет широких учётных данных в образе**: не включайте долгоживущие SSH-ключи, учётные данные облачного провайдера или личные токены доступа, которые предоставляют больше, чем нужно сессии. Создавайте учётные данные, используемые во время сессии, такие как токены push или API, для каждой сессии из вашего [скрипта-обёртки](/docs/ru/self-hosted-environments-configuration#wrapper-scripts). Для начального клонирования, которое происходит перед запуском обёртки, используйте [хук жизненного цикла `checkout`](/docs/ru/self-hosted-environments-configuration#checkout) или [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy); см. [Configure git](#configure-git).23* **Нет широких учётных данных в образе**: не включайте долгоживущие SSH-ключи, учётные данные облачного провайдера или личные токены доступа, которые предоставляют больше, чем нужно сессии. Создавайте учётные данные, используемые во время сессии, такие как токены push или API, для каждой сессии из вашего [скрипта-обёртки](/docs/ru/self-hosted-environments-configuration#wrapper-scripts). Начальное клонирование происходит перед запуском обёртки, поэтому обрабатывайте его с помощью [хука жизненного цикла `checkout`](/docs/ru/self-hosted-environments-configuration#checkout) или с помощью [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), если все репозитории сессии находятся на github.com. Для обоих вариантов см. [Configure git](#configure-git).

24* **Держите учётные данные GitHub хоста вдали от сессий**: Claude может использовать любые учётные данные GitHub, которые может прочитать сессия, с любым доступом, который эти учётные данные предоставляют. Не допускайте, чтобы собственные учётные данные GitHub хоста runner с широкими правами попадали туда, где их может прочитать сессия. Такими учётными данными может быть личный токен доступа, токен, который `gh auth login` сохраняет для вашей учётной записи, или `GH_TOKEN` в окружении runner.

25 * **С [Anthropic-managed git](#use-the-anthropic-git-proxy)**: при наличии таких учётных данных Claude обращается к GitHub напрямую, а не через Anthropic-managed git.

26 * **Без Anthropic-managed git**: учётные данные для клонирования могут оставаться в образе, если вы ограничите их так строго, как описано в [Ship git config in your image](#ship-git-config-in-your-image).

24* **Держите секрет окружения вдали от хостов, запускающих сессии**: секрет окружения может регистрировать runners и получать любую сессию, поставленную в очередь в окружение. На фиксированном флоте он находится на каждом хосте runner, где код любой сессии может прочитать файл секрета. Предпочитайте [on-demand runners](/docs/ru/self-hosted-environments-configuration#on-demand-runners), где секрет остаётся на хосте оркестратора, который никогда не запускает пользовательский код, и каждый runner получает одноразовый наряд на работу, который регистрирует ровно один runner. На фиксированном флоте рассматривайте файл environment-secret как читаемый каждой сессией и ротируйте секрет после любого подозрения на компрометацию сессии.27* **Держите секрет окружения вдали от хостов, запускающих сессии**: секрет окружения может регистрировать runners и получать любую сессию, поставленную в очередь в окружение. На фиксированном флоте он находится на каждом хосте runner, где код любой сессии может прочитать файл секрета. Предпочитайте [on-demand runners](/docs/ru/self-hosted-environments-configuration#on-demand-runners), где секрет остаётся на хосте оркестратора, который никогда не запускает пользовательский код, и каждый runner получает одноразовый наряд на работу, который регистрирует ровно один runner. На фиксированном флоте рассматривайте файл environment-secret как читаемый каждой сессией и ротируйте секрет после любого подозрения на компрометацию сессии.

25* **Исходящий трафик по умолчанию запрещён**: ограничьте исходящий трафик контейнеров runner и сессии на границе вашей собственной сети в каждом окружении; [Default-deny egress](#default-deny-egress) описывает, что разрешить и почему.28* **Исходящий трафик по умолчанию запрещён**: ограничьте исходящий трафик контейнеров runner и сессии на границе вашей собственной сети в каждом окружении; [Default-deny egress](#default-deny-egress) описывает, что разрешить и почему.

26* **Наименьшие привилегии IAM хоста**: вычислительная идентификация, прикреплённая к хосту runner, такая как профиль экземпляра или учётная запись сервиса узла, должна предоставлять только то, что нужно самому runner. Сессии должны получать свои собственные учётные данные через ваш скрипт-обёртку, а не наследовать учётные данные хоста.29* **Наименьшие привилегии IAM хоста**: вычислительная идентификация, прикреплённая к хосту runner, такая как профиль экземпляра или учётная запись сервиса узла, должна предоставлять только то, что нужно самому runner. Сессии должны получать свои собственные учётные данные через ваш скрипт-обёртку, а не наследовать учётные данные хоста.


42 Защита работает независимо от [`--trust-workspace`](/docs/ru/self-hosted-environments-reference#runner-cli-flags) и не охватывает хуки репозитория, `.mcp.json` или правила Bash; см. [Permissions and tool approval](/docs/ru/self-hosted-environments-configuration#permissions-and-tool-approval), чтобы узнать, где должны находиться эти гранты.45 Защита работает независимо от [`--trust-workspace`](/docs/ru/self-hosted-environments-reference#runner-cli-flags) и не охватывает хуки репозитория, `.mcp.json` или правила Bash; см. [Permissions and tool approval](/docs/ru/self-hosted-environments-configuration#permissions-and-tool-approval), чтобы узнать, где должны находиться эти гранты.

43 46 

44<Note>47<Note>

45 Список разрешённых IP-адресов вашей организации по умолчанию не охватывает трафик self-hosted runner. Не полагайтесь на него как на сетевой контроль для трафика runner или сессий; вместо этого применяйте default-deny egress на границе вашей собственной сети и свяжитесь с командой вашего аккаунта Anthropic, если вы хотите применять список разрешённых IP-адресов для вашей организации.48 Если в вашей организации включён [список разрешённых IP-адресов](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting), добавьте публичные адреса исходящего трафика ваших runners и контейнеров сессий в список разрешённых перед их запуском. Если вы используете [on-demand runners](/docs/ru/self-hosted-environments-configuration#on-demand-runners), добавьте также адрес хоста оркестратора. Не полагайтесь на список разрешённых как на сетевой контроль для трафика runner или сессий. Вместо этого применяйте default-deny egress на границе вашей собственной сети.

46</Note>49</Note>

47 50 

48<h2 id="network-requirements">51<h2 id="network-requirements">


55 58 

56| Хост | Порт | Используется для |59| Хост | Порт | Используется для |

57| :- | :- | :- |60| :- | :- | :- |

58| `api.anthropic.com` | 443, HTTPS; WSS только для SCM connector | Плоскость управления runner и потоковая передача сеанса, вывод модели, флаги функций, аналитика продукта, [JWKS](/docs/ru/self-hosted-environments-identity) получение ключей, подпись коммитов, git proxy при установке `--use-anthropic-git-proxy` и туннель [SCM connector](/docs/ru/self-hosted-environments-reference#scm-connector-flags) оркестратора при установке `--scm-connector-host` |61| `api.anthropic.com` | 443, HTTPS; WSS для [git под управлением Anthropic](#use-the-anthropic-git-proxy) | Плоскость управления runner и потоковая передача сессии, вывод модели, флаги функций, аналитика продукта, получение ключей [JWKS](/docs/ru/self-hosted-environments-identity), подпись коммитов и git под управлением Anthropic при установке `--use-anthropic-git-proxy` |

59| Ваш git-хост, такой как `github.com` или ваш хост GitHub Enterprise | 443 или 22 | Клонирование и push репозиториев. Не требуется, если runner использует `--use-anthropic-git-proxy`, который маршрутизирует трафик git через `api.anthropic.com`. |62| Ваш git-хост, такой как `github.com` или ваш хост GitHub Enterprise | 443 или 22 | Клонирование и push репозиториев на каждом git-хосте, который используют сессии runner. Для runner, использующего [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), см. [когда путь к `github.com` всё ещё нужен](#github-com-egress-with-the-anthropic-git-proxy). |

63 

64<span id="github-com-egress-with-the-anthropic-git-proxy" />Runner, использующий [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), направляет свой git-трафик к `github.com` через `api.anthropic.com`, поэтому ему не нужен путь к git-хосту `github.com`. Этот путь всё ещё нужен, если вы устанавливаете `--push-outcome-on-release` или выполняете push из хука `post-session`.

60 65 

61Требуются ли эти хосты, зависит от вашей конфигурации:66Требуются ли эти хосты, зависит от вашей конфигурации:

62 67 


71| `browser-intake-us5-datadoghq.com` | 443 | Загрузки отчетов об ошибках Anthropic, отправляемые только когда [отчетность об ошибках](/docs/ru/data-usage#telemetry-services) включена для учетной записи сеанса. Подавляется `DISABLE_ERROR_REPORTING=1` или `DISABLE_TELEMETRY=1`. |76| `browser-intake-us5-datadoghq.com` | 443 | Загрузки отчетов об ошибках Anthropic, отправляемые только когда [отчетность об ошибках](/docs/ru/data-usage#telemetry-services) включена для учетной записи сеанса. Подавляется `DISABLE_ERROR_REPORTING=1` или `DISABLE_TELEMETRY=1`. |

72| Эндпоинты вашего облачного провайдера для запросов к модели, поиска моделей и обновления учётных данных, такие как `bedrock-runtime.us-east-1.amazonaws.com` или `aiplatform.googleapis.com` | 443 | Только когда runner [отправляет запросы к модели в Amazon Bedrock или Google Cloud's Agent Platform](/docs/ru/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform) |77| Эндпоинты вашего облачного провайдера для запросов к модели, поиска моделей и обновления учётных данных, такие как `bedrock-runtime.us-east-1.amazonaws.com` или `aiplatform.googleapis.com` | 443 | Только когда runner [отправляет запросы к модели в Amazon Bedrock или Google Cloud's Agent Platform](/docs/ru/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform) |

73 78 

74Runner не достигает `statsig.anthropic.com`, `*.sentry.io`, `claude.ai` или `platform.claude.com`. Эти хосты появляются в некоторых старых контрольных списках корпоративной сети, но вам не нужно добавлять их в список разрешений для трафика runner или сеанса: получение флагов функций идет на `api.anthropic.com`, и runner аутентифицируется с помощью секрета окружения, а не интерактивного OAuth. Два потока на стороне хоста достигают `claude.ai`, поэтому запускайте их с хоста, чей исходящий трафик это позволяет, а не расширяйте исходящий трафик контейнера сеанса: одностроковый установщик получает `install.sh` с `claude.ai` во время установки, и интерактивный `claude auth login`, который используют [guided setup](/docs/ru/self-hosted-environments-quickstart#set-up-an-environment-and-runner), режим `doctor` с входом и [CI dispatch](/docs/ru/self-hosted-environments-testing#authenticate-from-ci), входит через `claude.ai`, `claude.com` и `platform.claude.com`. `mcp-proxy.anthropic.com` тоже не требуется: самостоятельно размещаемые сеансы его не используют, и доставка коннекторов claude.ai вашей организации в сеансы, когда это включено для вашей организации, маршрутизируется через `api.anthropic.com`. См. [MCP servers](/docs/ru/self-hosted-environments-configuration#mcp-servers).79Эти хосты не нужно добавлять в список разрешённых хостов для трафика runner или сессий:

80 

81* **`statsig.anthropic.com`, `*.sentry.io`, `claude.ai` и `platform.claude.com`**: эти хосты встречаются в некоторых старых контрольных списках корпоративной сети, но runner к ним не обращается. Получение флагов функций идёт на `api.anthropic.com`, а runner аутентифицируется с помощью секрета окружения, а не интерактивного OAuth.

82* **`mcp-proxy.anthropic.com`**: самостоятельно размещаемые сессии его не используют. Когда доставка коннекторов включена для вашей организации, коннекторы claude.ai вашей организации попадают в сессии через `api.anthropic.com`. См. [MCP servers](/docs/ru/self-hosted-environments-configuration#mcp-servers).

83 

84Следующие процессы на стороне хоста обращаются к `claude.ai`, поэтому запускайте их с хоста, чей исходящий трафик это позволяет, а не расширяйте исходящий трафик контейнера сессии:

85 

86* **Однострочный установщик**: получает `install.sh` с `claude.ai` во время установки.

87* **Интерактивный `claude auth login`**: выполняет вход через `claude.ai`, `claude.com` и `platform.claude.com`. Его используют [guided setup](/docs/ru/self-hosted-environments-quickstart#run-the-guided-setup), режим `doctor` с входом и [CI dispatch](/docs/ru/self-hosted-environments-testing#authenticate-from-ci). Браузер, в котором вы входите, также загружает браузерные проверки страницы входа claude.ai с `hcaptcha.com`, `*.hcaptcha.com` и `challenges.cloudflare.com`.

75 88 

76<h3 id="default-deny-egress">89<h3 id="default-deny-egress">

77 Default-deny egress90 Default-deny egress


127* **Позвольте раннеру настроить git**: запустите раннер с `--configure-git`, чтобы он записал ту же конфигурацию идентификации и подписи коммитов, что используют сессии, размещённые Anthropic140* **Позвольте раннеру настроить git**: запустите раннер с `--configure-git`, чтобы он записал ту же конфигурацию идентификации и подписи коммитов, что используют сессии, размещённые Anthropic

128* **Поставляйте конфигурацию git в своём образе**: задайте идентификацию и учётные данные для push самостоятельно, например чтобы делать коммиты от имени собственного бота141* **Поставляйте конфигурацию git в своём образе**: задайте идентификацию и учётные данные для push самостоятельно, например чтобы делать коммиты от имени собственного бота

129 142 

143Для репозиториев на github.com также можно запустить раннер с [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) или задать `CLAUDE_RUNNER_USE_GIT_PROXY=1`, чтобы попросить Anthropic обслуживать git для сессий раннера.

144 

130Минимальные версии Git на хосте раннера: для подписи коммитов через SSH с [`--configure-git`](#let-the-runner-configure-git) требуется Git 2.34 или новее, для [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) — 2.32 или новее, а для возобновления сессий из веток, отправленных с помощью [`--push-outcome-on-release`](/docs/ru/self-hosted-environments-reference#runner-cli-flags), — 2.29 или новее. Git 2.24 достаточно, если вы не используете ни одну из этих трёх возможностей и управляете идентификацией git самостоятельно.145Минимальные версии Git на хосте раннера: для подписи коммитов через SSH с [`--configure-git`](#let-the-runner-configure-git) требуется Git 2.34 или новее, для [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) — 2.32 или новее, а для возобновления сессий из веток, отправленных с помощью [`--push-outcome-on-release`](/docs/ru/self-hosted-environments-reference#runner-cli-flags), — 2.29 или новее. Git 2.24 достаточно, если вы не используете ни одну из этих трёх возможностей и управляете идентификацией git самостоятельно.

131 146 

132<h3 id="let-the-runner-configure-git">147<h3 id="let-the-runner-configure-git">


138* `user.name = Claude` и `user.email = noreply@anthropic.com`, как в сессиях, размещённых Anthropic153* `user.name = Claude` и `user.email = noreply@anthropic.com`, как в сессиях, размещённых Anthropic

139* Подпись коммитов и тегов в формате SSH, проходящая через управляемую раннером прослойку, которая подписывает каждый коммит через сервис подписи Anthropic с использованием собственных учётных данных сессии. Подписи можно проверить на GitHub по опубликованному ключу подписи SSH от Anthropic.154* Подпись коммитов и тегов в формате SSH, проходящая через управляемую раннером прослойку, которая подписывает каждый коммит через сервис подписи Anthropic с использованием собственных учётных данных сессии. Подписи можно проверить на GitHub по опубликованному ключу подписи SSH от Anthropic.

140* `push.negotiate = true`, чтобы перед упаковкой push git спрашивал у вашего git-хостинга, какие коммиты у него уже есть. Требуется Claude Code v2.1.257 или новее.155* `push.negotiate = true`, чтобы перед упаковкой push git спрашивал у вашего git-хостинга, какие коммиты у него уже есть. Требуется Claude Code v2.1.257 или новее.

141* `core.hooksPath`, указывающий на управляемый раннером каталог хуков. Его хуки `commit-msg` и `prepare-commit-msg` добавляют к каждому коммиту трейлер `Co-authored-by:` для создателя сессии, сформированный из адреса электронной почты в [`CCR_SESSION_ACCOUNT_EMAIL`](/docs/ru/self-hosted-environments-configuration#wrapper-scripts); если эта переменная не задана, трейлер не добавляется. Если ваш образ уже задаёт `core.hooksPath`, раннер оставляет вашу настройку как есть, не устанавливает эти хуки и выводит предупреждение `[runner:git]`.156* `core.hooksPath`, указывающий на управляемый раннером каталог хуков. Его хуки `commit-msg` и `prepare-commit-msg` добавляют к каждому коммиту трейлер `Co-authored-by:` для создателя сессии. Трейлер формируется из адреса электронной почты в [`CCR_SESSION_ACCOUNT_EMAIL`](/docs/ru/self-hosted-environments-configuration#wrapper-scripts) и не добавляется, если эта переменная не задана. Если ваш образ уже задаёт `core.hooksPath` и раннер не использует [git под управлением Anthropic](#use-the-anthropic-git-proxy), раннер оставляет вашу настройку как есть, не устанавливает эти хуки и выводит предупреждение `[runner:git]`.

142 157 

143Для подписи коммитов требуется git 2.34 или новее; раннер проверяет это при запуске и завершается с ошибкой, если ваш git старше. Этот флаг не настраивает учётные данные для push — их по-прежнему нужно предоставить в образе.158Для подписи коммитов требуется git 2.34 или новее; раннер проверяет это при запуске и завершается с ошибкой, если ваш git старше. Этот флаг не настраивает учётные данные для push — их по-прежнему нужно предоставить в образе.

144 159 

145На раннере версии v2.1.280 или новее коммиты, которые вы делаете из хука жизненного цикла `checkout` или `post-session`, также подписываются от имени сессии, но без трейлера `Co-authored-by:`. В разделе [Конфигурация git внутри хуков жизненного цикла](/docs/ru/self-hosted-environments-configuration#git-configuration-inside-lifecycle-hooks) описаны настройки git, которые раннер фиксирует внутри этих хуков.160На раннере версии v2.1.280 или новее коммиты, которые вы делаете из хука жизненного цикла `checkout` или `post-session`, также подписываются от имени сессии, но без трейлера `Co-authored-by:`. В разделе [Конфигурация git внутри хуков жизненного цикла](/docs/ru/self-hosted-environments-configuration#git-configuration-inside-lifecycle-hooks) описаны настройки git, которые раннер фиксирует внутри этих хуков.

146 161 

162С `--configure-git` или без него Claude Code указывает Claude завершать сообщения коммитов трейлером `Claude-Session: <url>`, а описания pull request — URL сессии. Чтобы отключить и то и другое, задайте для [`attribution.sessionUrl`](/docs/ru/settings-reference#attribution-sessionurl) значение `false` в файле [`~/.claude/settings.json`](/docs/ru/self-hosted-environments-configuration#how-each-session’s-config-is-assembled) на хосте раннера, а затем перезапустите раннер.

163 

147<h3 id="ship-git-config-in-your-image">164<h3 id="ship-git-config-in-your-image">

148 Поставляйте конфигурацию git в своём образе165 Поставляйте конфигурацию git в своём образе

149</h3>166</h3>


186 Используйте git-прокси Anthropic203 Используйте git-прокси Anthropic

187</h3>204</h3>

188 205 

189Запустите раннер с `--use-anthropic-git-proxy` или задайте `CLAUDE_RUNNER_USE_GIT_PROXY=1`, чтобы он клонировал репозитории через git-прокси Anthropic с аутентификацией собственным краткосрочным токеном сессии. Для обычных пользовательских сессий прокси использует OAuth-токен GitHub или GitHub Enterprise, сохранённый для создателя сессии; для сессий ботов и агентов он использует токен установки GitHub App вашей организации. В любом случае образу раннера вообще не нужны учётные данные git: ни ключи SSH, ни вспомогательная программа учётных данных, ни `.netrc`. Это тот же путь аутентификации, что используют среды, размещённые Anthropic.206С git-прокси Anthropic, который также называется git под управлением Anthropic, образу раннера не нужны ключи SSH, вспомогательная программа учётных данных, `.netrc` или другие учётные данные git для самой сессии. Вместо этого раннер просит Anthropic обслуживать git для его сессий. Для пользовательской сессии, которую обслуживает Anthropic, clone раннера и собственные fetch и push сессии проходят через Anthropic, который использует OAuth-токен GitHub, сохранённый для создателя сессии. Сессии ботов и агентов описаны в разделе [Как Anthropic обслуживает git для сессии](#how-anthropic-serves-git-for-a-session).

207 

208Git-прокси отключён, пока вы [не включите его](#turn-the-anthropic-git-proxy-on). Раннеру, который обращается к вашему git-хостингу с собственными учётными данными, он не нужен, и git такого раннера работает с любым git-хостингом.

209 

210Взамен git-прокси ограничивает то, что поддерживает раннер, и меняет то, что ему нужно:

211 

212* **Только github.com**: Anthropic обслуживает сессию, только если все её репозитории находятся на github.com, а git-прокси пока не поддерживает GitHub Enterprise Server. На раннере с git-прокси сессия с репозиторием на другом git-хостинге [не запускается](#when-anthropic-doesnt-serve-a-session).

213* **Учётные данные только для репозиториев сессии**: Anthropic предоставляет учётные данные git для репозиториев, входящих в сессию, но не для других репозиториев на том же git-хостинге. Приватный субмодуль, зависимость, которую ваш менеджер пакетов получает через git, или маркетплейс плагинов в другом репозитории не получают учётных данных от Anthropic. Попросите тех, кто создаёт сессии, [добавлять каждый репозиторий](/docs/ru/web-quickstart#start-a-task), который нужен сессии, при её создании.

214* **Только push веток**: push, который удаляет ветку, завершается ошибкой, как и push в ref любого другого типа, например в тег. О том, какие ветки может обновлять push, см. [GitHub-прокси](/docs/ru/cloud-environments#github-proxy).

215* **Подключённые аккаунты GitHub**: человек, создавший пользовательскую сессию, должен подключить GitHub на claude.ai, иначе сессия [не запускается](#creator-has-no-github-connection).

216* **`--capacity 1`**: git-прокси требует одну сессию на процесс раннера, поэтому для параллелизма запускайте больше реплик. Требования перечислены в разделе [Включение git-прокси Anthropic](#turn-the-anthropic-git-proxy-on).

217* **Заменённая глобальная конфигурация git**: раннер [удаляет и заменяет глобальную конфигурацию git](#git-proxy-replaces-global-git-config) пользователя, от имени которого он запущен. Запускайте его от имени отдельного пользователя или в контейнере.

218* **Учётные данные хоста для push с хоста**: push с помощью [`--push-outcome-on-release`](/docs/ru/self-hosted-environments-reference#runner-cli-flags) раннера и любой push, который делает ваш [хук `post-session`](/docs/ru/self-hosted-environments-configuration#post-session), по-прежнему используют собственные учётные данные git хоста раннера и его [сетевой путь к `github.com`](#github-com-egress-with-the-anthropic-git-proxy). Об этих учётных данных см. [Поставляйте конфигурацию git в своём образе](#ship-git-config-in-your-image).

219* **Решение для каждой сессии**: Anthropic решает для каждой сессии на раннере, обслуживать ли её git, и сессия, которую он не обслуживает, не запускается. Причины описаны в разделе [Когда сессии не запускаются на раннере с git-прокси](#when-anthropic-doesnt-serve-a-session).

220 

221<span id="git-proxy-replaces-global-git-config" />

222 

223<Warning>

224 Когда задан `--use-anthropic-git-proxy`, раннер удаляет и заменяет глобальную конфигурацию git пользователя, от имени которого он запущен, и не сохраняет резервную копию. Он делает это при запуске и перед каждой сессией. Данные входа или вспомогательная программа учётных данных, которые вы там хранили, теряются. Настройки, которые записывает [`--configure-git`](#let-the-runner-configure-git), сохраняются. Запускайте раннер от имени отдельного пользователя или в контейнере, но никогда от своего имени.

225</Warning>

226 

227Храните несекретные настройки git, такие как идентификация и `safe.directory`, в системной конфигурации git.

228 

229<h4 id="turn-the-anthropic-git-proxy-on">

230 Включение git-прокси Anthropic

231</h4>

232 

233Прежде чем запускать раннер с `--use-anthropic-git-proxy`, убедитесь, что хост раннера отвечает каждому из этих требований. Раннер отказывается запускаться, если требование к capacity или к git не выполнено:

190 234 

191Прокси требует `--capacity 1`, потому что URL прокси уникален для каждой сессии, и git 2.32 или новее, потому что более старые версии git игнорируют механизм конфигурации, которым прокси изолирует сессии друг от друга. Раннер отказывается запускаться, если любое из этих требований не выполнено. Поскольку прокси выполняет fetch со стороны Anthropic, ваш git-хостинг должен быть доступен из инфраструктуры Anthropic — то же требование, что и для сессий, размещённых Anthropic; для git-хостинга, маршрутизируемого только внутри вашей сети, используйте вместо этого [хук жизненного цикла `checkout`](/docs/ru/self-hosted-environments-configuration#checkout). Каждый процесс раннера обрабатывает одну сессию за раз, поэтому для параллелизма запускайте больше реплик. Когда прокси включён, `--git-host-rewrite` и `--git-ssh-rewrite` не действуют: URL прокси указывает на `api.anthropic.com`, а не на ваш git-хостинг.235* **Claude Code v2.1.267 или новее**: более ранние версии принимают флаг, но не сообщают Anthropic о запросе на обслуживание git и не выводят строку `Registering as opted in`, поэтому Anthropic не обслуживает их сессии.

236* **`--capacity 1`, значение по умолчанию**: каждый процесс раннера обрабатывает одну сессию за раз, поэтому для параллелизма запускайте больше реплик.

237* **Git 2.32 или новее**: более старые версии git игнорируют конфигурацию git для отдельной сессии, которую раннер настраивает для git-прокси.

192 238 

193<Warning>239<Warning>

194 Рецепты для [Kubernetes](#kubernetes) и [Docker Compose](#docker-compose) на этой странице используют `--capacity 4`. Если вы добавите `--use-anthropic-git-proxy` или `CLAUDE_RUNNER_USE_GIT_PROXY=1` в один из них, не изменив capacity на `1`, раннер будет завершаться при запуске каждый раз, когда оркестратор его перезапускает. Задайте `--capacity 1` и запускайте больше реплик для параллелизма. В разделе [Когда раннер завершается](#when-the-runner-exits) показана строка, которую выводит раннер.240 Рецепты для [Kubernetes](#kubernetes) и [Docker Compose](#docker-compose) на этой странице используют `--capacity 4`. Если вы добавите `--use-anthropic-git-proxy` или `CLAUDE_RUNNER_USE_GIT_PROXY=1` в один из них, не изменив capacity на `1`, раннер будет завершаться при запуске каждый раз, когда оркестратор его перезапускает. Задайте `--capacity 1` и запускайте больше реплик для параллелизма. В разделе [Когда раннер завершается](#when-the-runner-exits) показана строка, которую выводит раннер.

195</Warning>241</Warning>

196 242 

197Раннер также сообщает Anthropic о подключении при регистрации, выводя при запуске `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)`. Для сообщения о подключении требуется Claude Code v2.1.267 или новее; более ранние версии принимают флаг, но не сообщают о нём и не выводят эту строку. Каждая сессия на подключённом раннере затем использует либо git под управлением Anthropic, либо URL прокси для отдельной сессии. Когда сессия использует URL прокси для отдельной сессии, раннер записывает в лог одну строку `[runner:warn]`, сообщающую об этом.243Чтобы включить git-прокси, добавьте `--use-anthropic-git-proxy` в команду раннера или задайте `CLAUDE_RUNNER_USE_GIT_PROXY=1` в окружении раннера. Эта команда, выполненная в оболочке на хосте раннера, запускает раннер из [быстрого старта](/docs/ru/self-hosted-environments-quickstart#set-up-manually) с включённым git-прокси:

244 

245```bash theme={null}

246claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>' --use-anthropic-git-proxy

247```

248 

249При запуске раннер выводит `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)`. Затем Anthropic решает для каждой сессии на этом раннере, обслуживать ли её git. Для каждой обслуживаемой сессии раннер записывает в лог строку `[runner:session]`, содержащую `governed git ACTIVE`. Если вместо этого сессия не запускается, см. [Когда сессии не запускаются на раннере с git-прокси](#when-anthropic-doesnt-serve-a-session).

250 

251<h4 id="how-anthropic-serves-git-for-a-session">

252 Как Anthropic обслуживает git для сессии

253</h4>

254 

255Для сессии, которую обслуживает Anthropic, clone раннера и собственные fetch и push сессии проходят через Anthropic с аутентификацией собственным краткосрочным токеном сессии:

256 

257* **Пользовательские сессии**: Anthropic использует OAuth-токен GitHub, сохранённый для создателя сессии.

258* **Сессии ботов и агентов**: Anthropic использует токен установки GitHub App вашей организации.

259* **Перезапись URL**: `--git-host-rewrite` и `--git-ssh-rewrite` не действуют на репозиторий, который обслуживает git-прокси.

260 

261<h4 id="when-anthropic-doesnt-serve-a-session">

262 Когда сессии не запускаются на раннере с git-прокси

263</h4>

264 

265На раннере, запущенном с `--use-anthropic-git-proxy`, сессия не запускается, если Anthropic не обслуживает её git. Найдите в логе раннера ошибку git, в которой указан адрес `api.anthropic.com`, содержащий `/git_proxy/`.

266 

267Для каждой сессии раннер на Claude Code v2.1.267 или новее также записывает в лог либо строку `[runner:session]`, содержащую `governed git ACTIVE`, если Anthropic обслуживает git сессии, либо одну строку `[runner:warn]`, содержащую `the server withheld Anthropic-managed git for this session`, если нет. Найдите строку, которую вы видите, среди следующих случаев:

268 

269* **Нет ни `governed git ACTIVE`, ни строки `withheld`**: раннер старше Claude Code v2.1.267 не записывает ни одну из этих строк, и Anthropic не обслуживает его сессии. Обновите раннер до v2.1.267 или новее, следуя разделу [Закрепление версии](#pin-the-version).

270* **Строка `withheld`**: Anthropic не обслужил сессию. Раннер, который раньше работал с git-прокси, может начать так завершаться без каких-либо изменений с вашей стороны.

271 * **Репозиторий находится не на github.com**: сессия, у которой хотя бы один репозиторий находится на другом git-хостинге, например GitHub Enterprise Server, не обслуживается, включая её репозитории на github.com. [Отключите git-прокси Anthropic](#turn-the-anthropic-git-proxy-off) для раннеров этой среды.

272 * **Все репозитории находятся на github.com**: сообщите о сбое [вашей команде по работе с аккаунтом в Anthropic](#report-an-issue), указав ID сессии из строки `withheld`. Anthropic записывает причину на своей стороне.

273* **Строка, содержащая `remote: access denied by the git proxy`**: сессии, которую обслуживает Anthropic, всё равно может быть отказано, например когда политика организации запрещает доступ к git для сессии или у сессии нет авторизации для репозитория. Тогда в логе раннера есть строка, содержащая `remote: access denied by the git proxy`, и остальная часть этой строки объясняет причину.

274* <span id="creator-has-no-github-connection" />**`GitHub authentication required`**: появляется, когда у создателя сессии нет работающего подключения GitHub на claude.ai. Clone сессии завершается ошибкой, и ошибка git гласит `GitHub authentication required. Please reconnect your GitHub account.` Попросите этого человека подключить или переподключить GitHub в настройках claude.ai.

275 

276После устранения причины снова запустите сессии, которые не запустились.

277 

278<h4 id="turn-the-anthropic-git-proxy-off">

279 Отключение git-прокси Anthropic

280</h4>

281 

282Если сессии в среде используют репозиторий на git-хостинге, отличном от github.com, например GitHub Enterprise Server, отключите `--use-anthropic-git-proxy` для раннеров этой среды.

283 

284<Steps>

285 <Step title="Удалите флаг">

286 Удалите `--use-anthropic-git-proxy` из команды раннера. Если вы задали `CLAUDE_RUNNER_USE_GIT_PROXY` в окружении раннера, например в спецификации пода или в файле Compose, удалите её оттуда. В оболочке сбросьте её:

287 

288 ```bash theme={null}

289 unset CLAUDE_RUNNER_USE_GIT_PROXY

290 ```

291 </Step>

292 

293 <Step title="Предоставьте раннеру учётные данные git">

294 Предоставьте учётные данные, работающие без запроса ввода, для каждого git-хостинга, который используют сессии раннеров, включая github.com. Любые учётные данные, которые были в глобальной конфигурации git пользователя раннера, утеряны, потому что раннер удалил эту конфигурацию, пока был задан `--use-anthropic-git-proxy`. [Поставляйте учётные данные в своём образе](#ship-git-config-in-your-image) или используйте [хук жизненного цикла `checkout`](/docs/ru/self-hosted-environments-configuration#checkout).

295 </Step>

296 

297 <Step title="Откройте сетевой путь">

298 Разрешите раннеру обращаться к каждому git-хостингу, который используют сессии раннеров, по порту 443 или 22. См. строку о git-хостинге в разделе [Сетевые требования](#network-requirements).

299 </Step>

300 

301 <Step title="Перезапустите раннеры">

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

303 </Step>

304</Steps>

198 305 

199<h4 id="github-api-access-without-the-github-cli">306<h4 id="github-api-access-without-the-github-cli">

200 Доступ к API GitHub без GitHub CLI307 Доступ к API GitHub без GitHub CLI


266```dockerfile theme={null}373```dockerfile theme={null}

267FROM debian:bookworm-slim374FROM debian:bookworm-slim

268ARG CLAUDE_CODE_VERSION375ARG CLAUDE_CODE_VERSION

269RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client \376RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client jq \

270 && rm -rf /var/lib/apt/lists/*377 && rm -rf /var/lib/apt/lists/*

271RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \378RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \

272 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude379 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude


382kubectl create namespace claude-runners489kubectl create namespace claude-runners

383```490```

384 491 

385Создайте поддерживающий Secret из локального файла, содержащего значение, которое вы скопировали на шаге [**Copy environment key**](/docs/ru/self-hosted-environments-quickstart#set-up-an-environment-and-runner) в пользовательском интерфейсе администратора, чтобы секрет никогда не появлялся в истории вашей shell. Запустите `(umask 077 && cat > ./environment-secret)`, вставьте секрет, нажмите Enter, затем Ctrl-D. Затем создайте Secret и удалите файл:492Создайте поддерживающий Secret из локального файла, содержащего значение, которое вы скопировали на шаге [**Copy environment key**](/docs/ru/self-hosted-environments-quickstart#set-up-manually) в пользовательском интерфейсе администратора, чтобы секрет никогда не появлялся в истории вашей оболочки. Запустите `(umask 077 && cat > ./environment-secret)`, вставьте секрет, нажмите Enter, затем Ctrl-D. Затем создайте Secret и удалите файл:

386 493 

387```bash theme={null}494```bash theme={null}

388kubectl create secret generic claude-runner-environment-secret -n claude-runners --from-file=environment-secret=./environment-secret495kubectl create secret generic claude-runner-environment-secret -n claude-runners --from-file=environment-secret=./environment-secret


500 Переиспользуйте pre-warmed checkout607 Переиспользуйте pre-warmed checkout

501</h2>608</h2>

502 609 

503Для больших репозиториев клон может доминировать при запуске сеанса. На `--capacity 1` без [`checkout` hook](/docs/ru/self-hosted-environments-configuration#checkout), runner держит один канонический клон на репозиторий на `<base-dir>/<repo-owner>/<repo>` и переиспользует его на сеансы: он получает запрошенный ref, отсоединяет `HEAD` и жестко сбрасывает его, что почти мгновенно, когда мало что изменилось. Чтобы пропустить холодный клон, поставьте клон одним из двух способов:610Для больших репозиториев клонирование может занимать бо́льшую часть времени запуска сессии. Чтобы пропустить холодное клонирование, подготовьте клон самостоятельно по тому пути, где runner хранит собственный. Без [`checkout` хука](/docs/ru/self-hosted-environments-configuration#checkout) runner хранит один канонический клон на репозиторий по пути `<base-dir>/<repo-owner>/<repo>` и переиспользует его между сессиями:

611 

612* **При `--capacity 1`**: runner получает запрошенный ref, отсоединяет `HEAD` и выполняет жесткий сброс на него, что происходит почти мгновенно, когда изменилось немногое.

613* **При `--capacity` больше единицы**: runner выполняет fetch в этот клон, а затем создает из него отдельный worktree для каждой сессии. Pre-warmed клон экономит загрузку, но не checkout.

614 

615Подготовьте клон в образе или на постоянном томе:

504 616 

505* **Клон в образе**: постройте клон в образ runner на этом пути. Каждый свежий контейнер затем начинается с теплым клоном без переиспользования диска.617* **Клон в образе**: постройте клон в образ runner на этом пути. Каждый свежий контейнер затем начинается с теплым клоном без переиспользования диска.

506* **Клон на постоянном томе**: на runners, которые вы предварительно блокируете для учетной записи одного пользователя с [`--lock-to-account`](/docs/ru/self-hosted-environments-reference#runner-cli-flags), укажите `--base-dir` на постоянный том, поэтому диск только когда-либо обслуживает эту учетную запись. Pre-locked runner никогда не подхватывает сеансы канала Claude Tag, поэтому этот вариант не применяется к runners, которые их обслуживают.618* **Клон на постоянном томе**: на runners, которые вы предварительно блокируете для учетной записи одного пользователя с [`--lock-to-account`](/docs/ru/self-hosted-environments-reference#runner-cli-flags), укажите `--base-dir` на постоянный том, поэтому диск только когда-либо обслуживает эту учетную запись. Pre-locked runner никогда не подхватывает сеансы канала Claude Tag, поэтому этот вариант не применяется к runners, которые их обслуживают.


508Что путь переиспользования делает и не гарантирует:620Что путь переиспользования делает и не гарантирует:

509 621 

510* **Любая форма клона работает**: полный, неглубокий или однозвездный клон на пути используется как есть. Runner никогда не передает `--depth` при получении в существующий клон, поэтому полный pre-warm держит свою полную историю и неглубокий остается неглубоким. `CLAUDE_RUNNER_FETCH_DEPTH` (`full`, `0` или число; по умолчанию 50) контролирует только холодный клон, который runner делает, когда клон еще не существует.622* **Любая форма клона работает**: полный, неглубокий или однозвездный клон на пути используется как есть. Runner никогда не передает `--depth` при получении в существующий клон, поэтому полный pre-warm держит свою полную историю и неглубокий остается неглубоким. `CLAUDE_RUNNER_FETCH_DEPTH` (`full`, `0` или число; по умолчанию 50) контролирует только холодный клон, который runner делает, когда клон еще не существует.

511* **Отслеживаемые изменения сбрасываются, неотслеживаемые файлы сохраняются**: каждый сеанс начинается с жесткого сброса, который стирает предыдущие модификации сеанса, но runner никогда не запускает `git clean`, поэтому неотслеживаемые файлы из более ранних сеансов заблокированного владельца остаются в дереве.623* **Отслеживаемые изменения сбрасываются, неотслеживаемые файлы сохраняются**: при `--capacity 1` каждая сессия начинается с жесткого сброса, который стирает отслеживаемые изменения предыдущей сессии, но runner никогда не запускает `git clean`, поэтому неотслеживаемые файлы из более ранних сессий заблокированного владельца остаются в дереве.

512* **Каталоги для каждого сеанса также сохраняются**: рядом с checkout runner создает записи для каждого сеанса под `<base-dir>/_sessions/` для каждого сеанса, который он запускает. Локальный каталог конфигурации Claude сеанса содержит локальную копию транскрипта беседы. Рядом с ним находятся загруженные файлы сеанса, когда сеанс их имеет. Каталог сеанса находится там же: он содержит любые worktrees для каждого сеанса и `checkout` hook checkouts во время работы сеанса, и он сохраняет все остальное, что Claude написал в нем.624* **Каталоги для каждого сеанса также сохраняются**: рядом с checkout runner создает записи для каждого сеанса под `<base-dir>/_sessions/` для каждого сеанса, который он запускает. Локальный каталог конфигурации Claude сеанса содержит локальную копию транскрипта беседы. Рядом с ним находятся загруженные файлы сеанса, когда сеанс их имеет. Каталог сеанса находится там же: он содержит любые worktrees для каждого сеанса и `checkout` hook checkouts во время работы сеанса, и он сохраняет все остальное, что Claude написал в нем.

513 625 

514 По умолчанию runner оставляет их на месте, когда сеанс заканчивается, поэтому на диске, который пережил процесс runner, они накапливаются. Каждый сеанс запускается как собственный пользователь runner, поэтому любой более поздний сеанс, который обслуживает этот диск, может их прочитать. Если вы сохраняете постоянный `--base-dir`, размер тома для этого роста. То же самое применяется к любой установке, которая перезапускает runner на той же файловой системе, включая [Docker Compose рецепт](#docker-compose).626 По умолчанию runner оставляет их на месте, когда сеанс заканчивается, поэтому на диске, который пережил процесс runner, они накапливаются. Каждый сеанс запускается как собственный пользователь runner, поэтому любой более поздний сеанс, который обслуживает этот диск, может их прочитать. Если вы сохраняете постоянный `--base-dir`, размер тома для этого роста. То же самое применяется к любой установке, которая перезапускает runner на той же файловой системе, включая [Docker Compose рецепт](#docker-compose).


522 634 

523Процесс дочернего Claude Code каждого сеанса запускает собственный бинарный файл runner, и runner отключает auto-update внутри сеансов, которые он порождает, поэтому каждый сеанс запускает версию, которую вы установили на хосте или встроили в образ. Обновление на уровне хоста вступает в силу в следующий раз, когда runner запускается.635Процесс дочернего Claude Code каждого сеанса запускает собственный бинарный файл runner, и runner отключает auto-update внутри сеансов, которые он порождает, поэтому каждый сеанс запускает версию, которую вы установили на хосте или встроили в образ. Обновление на уровне хоста вступает в силу в следующий раз, когда runner запускается.

524 636 

525Модель, которую используют ваши сеансы, может требовать более новую версию Claude Code, чем та, которую они запускают. Сервер затем отклоняет запросы для этой модели с [Claude Code does not support this model](/docs/ru/errors#claude-code-does-not-support-this-model). Перед тем как закрепить версию, проверьте [версии Claude Code, которые требуют модели](/docs/ru/model-config#available-models) для каждой модели, которую используют ваши сеансы.637Выберите, какую версию запускают ваши сессии и когда она меняется:

526 638 

639* **Перед тем как закрепить версию**: проверьте [версии Claude Code, которые требуют модели](/docs/ru/model-config#available-models), для каждой модели, которую используют ваши сессии. Если модель требует более новую версию, чем та, которую запускают ваши сессии, сервер отклоняет запросы для этой модели с [Claude Code does not support this model](/docs/ru/errors#claude-code-does-not-support-this-model).

527* **Чтобы держать флот на одной версии**: постройте образ с закрепленной версией или на голом хосте установите конкретную версию и [отключите auto-updates](/docs/ru/setup#disable-auto-updates)640* **Чтобы держать флот на одной версии**: постройте образ с закрепленной версией или на голом хосте установите конкретную версию и [отключите auto-updates](/docs/ru/setup#disable-auto-updates)

528* **Чтобы обновить**: установите более новую версию или пересоздайте образ, затем перезагрузите runners641* **Чтобы обновить фиксированный флот**: прочитайте записи [журнала изменений](/docs/en/changelog) между вашей версией и той, которую вы устанавливаете, затем установите более новую версию или пересоберите образ и перезапустите runners

642* **Чтобы обновить runners по требованию**: прочитайте записи [журнала изменений](/docs/en/changelog) между вашей версией и той, которую вы устанавливаете, затем измените образ, который запускает ваш [хук `spawn-runner`](/docs/ru/self-hosted-environments-configuration#the-spawn-runner-hook). Каждый новый runner получает новую версию. Runner, который уже запущен, включая резервный runner, запущенный [`--min-idle`](/docs/ru/self-hosted-environments-reference#orchestrator-cli-flags), сохраняет свою версию до завершения работы. Не перезапускайте его, потому что его рабочий заказ одноразовый.

529* **Плагины**: рынки плагинов тоже не auto-update; установите `FORCE_AUTOUPDATE_PLUGINS=1` в окружении runner, чтобы позволить плагинам auto-update, пока бинарный файл остается закрепленным643* **Плагины**: рынки плагинов тоже не auto-update; установите `FORCE_AUTOUPDATE_PLUGINS=1` в окружении runner, чтобы позволить плагинам auto-update, пока бинарный файл остается закрепленным

530 644 

531<h2 id="scale-the-fleet">645<h2 id="scale-the-fleet">


580</h3>694</h3>

581 695 

582* **Возобновлённые сессии теряют неотправленную работу**: новый runner заново клонирует репозиторий с его начальной ветки, поэтому работа, которую сессия не отправила, теряется.696* **Возобновлённые сессии теряют неотправленную работу**: новый runner заново клонирует репозиторий с его начальной ветки, поэтому работа, которую сессия не отправила, теряется.

583 * **Чтобы сохранить закоммиченную работу**: задайте [`--push-outcome-on-release`](/docs/ru/self-hosted-environments-reference#runner-cli-flags). Тогда перед освобождением runner по возможности отправляет (push) ветки результатов сессии, и возобновлённая сессия начинается с этих коммитов. Незакоммиченные изменения всё равно теряются.697 * **Чтобы сохранить закоммиченную работу**: задайте [`--push-outcome-on-release`](/docs/ru/self-hosted-environments-reference#runner-cli-flags) на каждом runner в окружении, поскольку runner без этого флага возобновляет сессию с её начальной ветки. Runner с этим флагом перед освобождением по возможности отправляет (push) ветки результатов сессии, и возобновлённая сессия начинается с этих коммитов. Для push используются собственные учётные данные git хоста runner, в том числе на runner, который использует [управляемый Anthropic git](#use-the-anthropic-git-proxy). Незакоммиченные изменения всё равно теряются.

698 * **С хуком `checkout`**: репозитории, извлечённые с помощью [хука жизненного цикла `checkout`](/docs/ru/self-hosted-environments-configuration#checkout), не отправляются. Вместо этого сохраняйте их снимки из [хука `post-session`](/docs/ru/self-hosted-environments-configuration#post-session).

584 * **Перед включением флага**: ограничьте круг тех, кто может выполнять push в refs `claude/*` на исходном удалённом репозитории. При возобновлении runner получает ранее отправленную ветку, не проверяя, кто её отправил.699 * **Перед включением флага**: ограничьте круг тех, кто может выполнять push в refs `claude/*` на исходном удалённом репозитории. При возобновлении runner получает ранее отправленную ветку, не проверяя, кто её отправил.

585* **Репозиторий, добавленный в середине сессии, может не клонироваться**: Claude клонирует его с помощью `git clone` по HTTPS. На runner без [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) клонирование завершается ошибкой аутентификации git, если ничто на хосте не может прочитать репозиторий. По возможности выбирайте все необходимые сессии репозитории при её создании.700* **Репозиторий, добавленный в середине сессии, может не клонироваться**: Claude клонирует его с помощью `git clone` по HTTPS. На runner без [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) клонирование завершается ошибкой аутентификации git, если ничто на хосте не может прочитать репозиторий. По возможности выбирайте все необходимые сессии репозитории при её создании.

586* **Некоторые коннекторы не появляются в самостоятельно размещаемых сеансах**: коннектор, который вы еще не подключили в параметрах claude.ai, не указан в самостоятельно размещаемом сеансе, и сеанс не будет вас приглашать подключить его. Подключите его в параметрах сначала, затем запустите свежий сеанс. Добавление коннектора в уже работающий сеанс тоже не делает его инструменты доступными для Claude; запустите свежий сеанс, чтобы подхватить недавно добавленный коннектор.701* **Некоторые коннекторы не появляются в самостоятельно размещаемых сеансах**: коннектор, который вы еще не подключили в параметрах claude.ai, не указан в самостоятельно размещаемом сеансе, и сеанс не будет вас приглашать подключить его. Подключите его в параметрах сначала, затем запустите свежий сеанс. Добавление коннектора в уже работающий сеанс тоже не делает его инструменты доступными для Claude; запустите свежий сеанс, чтобы подхватить недавно добавленный коннектор.


606* **Runner не появляется в окружении**: подтвердите, что хост может достичь `api.anthropic.com` через HTTPS, секрет окружения текущий и часы хоста находятся в пределах пяти минут от реального времени; большее смещение вызывает отказ аутентификации. Runner регистрирует `[runner:fatal]` с причиной отказа при отказе аутентификации.721* **Runner не появляется в окружении**: подтвердите, что хост может достичь `api.anthropic.com` через HTTPS, секрет окружения текущий и часы хоста находятся в пределах пяти минут от реального времени; большее смещение вызывает отказ аутентификации. Runner регистрирует `[runner:fatal]` с причиной отказа при отказе аутентификации.

607* **Runner выходит при запуске с `cannot create or write to base directory`**: runner не может создать или писать в `--base-dir`, который по умолчанию `/workspace`. Исправьте владение каталога или укажите `--base-dir` на записываемый путь, как описано в [Keep the base directory and capacity identical across runners](#keep-the-base-directory-and-capacity-identical-across-runners). Если runner вместо этого регистрирует `[runner:fatal]`, говоря, что проверка базового каталога истекла по времени, каталог находится на зависшем монтировании NFS или CSI. Проверьте здоровье монтирования, а не разрешения. Runner печатает оба эти отказа при запуске в stderr перед открытием `--log-file`, поэтому ищите их в терминале или логах контейнера вашей платформы, а не в файле логов. До v2.1.225, runner не проверял базовый каталог при запуске, и эта неправильная конфигурация не удавалась сеансам после подхвата вместо этого.722* **Runner выходит при запуске с `cannot create or write to base directory`**: runner не может создать или писать в `--base-dir`, который по умолчанию `/workspace`. Исправьте владение каталога или укажите `--base-dir` на записываемый путь, как описано в [Keep the base directory and capacity identical across runners](#keep-the-base-directory-and-capacity-identical-across-runners). Если runner вместо этого регистрирует `[runner:fatal]`, говоря, что проверка базового каталога истекла по времени, каталог находится на зависшем монтировании NFS или CSI. Проверьте здоровье монтирования, а не разрешения. Runner печатает оба эти отказа при запуске в stderr перед открытием `--log-file`, поэтому ищите их в терминале или логах контейнера вашей платформы, а не в файле логов. До v2.1.225, runner не проверял базовый каталог при запуске, и эта неправильная конфигурация не удавалась сеансам после подхвата вместо этого.

608* **Сеансы остаются поставленными в очередь**: каждый онлайн runner может быть заблокирован для другого владельца. Проверьте метрику `claude_code_self_hosted_runner_locked_account` каждого runner [metric](/docs/ru/self-hosted-environments-reference#prometheus-metrics) или поле `locked_account` его строки логов `[runner:health]`, чтобы увидеть, кто его держит. Оба показывают email владельца только после того, как runner получил токен сеанса, несущий претензию `act.email`, которую сеансы агента Claude Tag никогда не делают. Без претензии runner не излучает серию `locked_account` и регистрирует `locked_account=yes`, что говорит вам, что runner заблокирован, но не для какого владельца. Добавьте реплики или ждите, пока существующий runner осушится и перезагрузится. Если окружение использует on-demand runners, проверьте оркестратор вместо этого; см. [On-demand runners](/docs/ru/self-hosted-environments-configuration#on-demand-runners).723* **Сеансы остаются поставленными в очередь**: каждый онлайн runner может быть заблокирован для другого владельца. Проверьте метрику `claude_code_self_hosted_runner_locked_account` каждого runner [metric](/docs/ru/self-hosted-environments-reference#prometheus-metrics) или поле `locked_account` его строки логов `[runner:health]`, чтобы увидеть, кто его держит. Оба показывают email владельца только после того, как runner получил токен сеанса, несущий претензию `act.email`, которую сеансы агента Claude Tag никогда не делают. Без претензии runner не излучает серию `locked_account` и регистрирует `locked_account=yes`, что говорит вам, что runner заблокирован, но не для какого владельца. Добавьте реплики или ждите, пока существующий runner осушится и перезагрузится. Если окружение использует on-demand runners, проверьте оркестратор вместо этого; см. [On-demand runners](/docs/ru/self-hosted-environments-configuration#on-demand-runners).

609* **Сеансы не удаются сразу после подхвата**: откройте сеанс в claude.ai/code, чтобы увидеть ошибку. Наиболее распространенные причины - отсутствие [git credentials](#configure-git) в образе runner и инструменты сборки, которые не установлены. Неписываемый базовый каталог останавливает runner при запуске вместо того, чтобы не удавались сеансы. См. запись **Runner exits at startup with `cannot create or write to base directory`** в этом списке.724* **Сессии завершаются сбоем сразу после получения**: откройте сессию в claude.ai/code, чтобы увидеть ошибку. Наиболее распространённые причины — отсутствие [учётных данных git](#configure-git) в образе runner и неустановленные инструменты сборки. Для runner, запущенного с `--use-anthropic-git-proxy`, см. [Когда сессии не запускаются на runner с git-прокси](#when-anthropic-doesnt-serve-a-session). Базовый каталог, недоступный для записи, останавливает runner при запуске, а не приводит к сбою сессий. См. пункт **Runner завершается при запуске с `cannot create or write to base directory`** в этом списке.

725* **Сессии не запускаются на runner, для которого задан `--use-anthropic-git-proxy`**: найдите в логе runner `access denied by the git proxy` или ошибку git, в которой указан адрес `api.anthropic.com`, содержащий `/git_proxy/`. Чтобы определить, обслуживала ли Anthropic эту сессию, и устранить причину, см. [Когда сессии не запускаются на runner с git-прокси](#when-anthropic-doesnt-serve-a-session).

610* **Сеансы не могут достичь сеть через аутентифицирующий исходящий прокси**: когда источник, который вы установили с помощью [`--proxy-authorization-command` или `--proxy-authorization-file`](#authenticate-to-an-egress-proxy), не удается, истекает по времени после 30 секунд или дает пустое значение, runner отвечает на это соединение `502 Bad Gateway` и регистрирует почему. Runner редактирует stderr команды в этом логе и никогда не регистрирует значение заголовка. С `--proxy-authorization-command`, запустите команду самостоятельно на хосте, чтобы подтвердить, что она печатает все значение заголовка на stdout. Если runner вместо этого выходит при запуске с `could not start the proxy-authorization listener`, он не мог открыть свой слушатель loopback.726* **Сеансы не могут достичь сеть через аутентифицирующий исходящий прокси**: когда источник, который вы установили с помощью [`--proxy-authorization-command` или `--proxy-authorization-file`](#authenticate-to-an-egress-proxy), не удается, истекает по времени после 30 секунд или дает пустое значение, runner отвечает на это соединение `502 Bad Gateway` и регистрирует почему. Runner редактирует stderr команды в этом логе и никогда не регистрирует значение заголовка. С `--proxy-authorization-command`, запустите команду самостоятельно на хосте, чтобы подтвердить, что она печатает все значение заголовка на stdout. Если runner вместо этого выходит при запуске с `could not start the proxy-authorization listener`, он не мог открыть свой слушатель loopback.

611* **Runner регистрирует строки `Poll failed`, содержащие `rejecting the malformed poll response`**: runner получил ответ на опрос работы, чье тело не является ожидаемым JSON очереди, чаще всего потому что что-то между runner и `api.anthropic.com`, такое как перехватывающий прокси или captive portal, ответил своей собственной страницей. Runner отклоняет ответ, считает его под видом `transport` метрики `claude_code_self_hosted_runner_poll_errors_total` [metric](/docs/ru/self-hosted-environments-reference#prometheus-metrics) и повторяет попытку по расписанию отказа опроса, описанному в [Session lifecycle](/docs/ru/self-hosted-environments#session-lifecycle). Runner продолжает обслуживать свои живые сеансы. Конфигурируйте прокси, чтобы пропустить ответы от `api.anthropic.com` без изменений. До v2.1.246, runner читал такой ответ как пустую очередь работы, которая могла закончить его живые сеансы или заставить его выйти.727* **Runner регистрирует строки `Poll failed`, содержащие `rejecting the malformed poll response`**: runner получил ответ на опрос работы, чье тело не является ожидаемым JSON очереди, чаще всего потому что что-то между runner и `api.anthropic.com`, такое как перехватывающий прокси или captive portal, ответил своей собственной страницей. Runner отклоняет ответ, считает его под видом `transport` метрики `claude_code_self_hosted_runner_poll_errors_total` [metric](/docs/ru/self-hosted-environments-reference#prometheus-metrics) и повторяет попытку по расписанию отказа опроса, описанному в [Session lifecycle](/docs/ru/self-hosted-environments#session-lifecycle). Runner продолжает обслуживать свои живые сеансы. Конфигурируйте прокси, чтобы пропустить ответы от `api.anthropic.com` без изменений. До v2.1.246, runner читал такой ответ как пустую очередь работы, которая могла закончить его живые сеансы или заставить его выйти.

612* **Ветка сеанса больше не существует на удаленном**: для источника git, который сеанс только читает, runner пропускает этот источник и продолжает на оставшихся. Для источника, на который сеанс отправляет результаты, удаленная ветка, обычно потому что она была объединена и auto-deleted, не удается сеанс с ошибкой, называющей репозиторий и ветку и просящей вас восстановить ветку и повторить попытку. Runner не удается сеанс с той же ошибкой, когда пропуск оставил бы его без репозитория вообще. До v2.1.228, такой сеанс начинался в пустом каталоге.728* **Ветка сеанса больше не существует на удаленном**: для источника git, который сеанс только читает, runner пропускает этот источник и продолжает на оставшихся. Для источника, на который сеанс отправляет результаты, удаленная ветка, обычно потому что она была объединена и auto-deleted, не удается сеанс с ошибкой, называющей репозиторий и ветку и просящей вас восстановить ветку и повторить попытку. Runner не удается сеанс с той же ошибкой, когда пропуск оставил бы его без репозитория вообще. До v2.1.228, такой сеанс начинался в пустом каталоге.


616 732 

617 Проверка доступа запускается снова каждый раз, когда сеанс начинается на runner, поэтому как только git identity runner имеет доступ на чтение, следующий старт клонирует репозиторий. До v2.1.274, каждый из этих отказов не удавался запустить сеанс.733 Проверка доступа запускается снова каждый раз, когда сеанс начинается на runner, поэтому как только git identity runner имеет доступ на чтение, следующий старт клонирует репозиторий. До v2.1.274, каждый из этих отказов не удавался запустить сеанс.

618* **Сеансы занимают минуты для запуска**: начальный клон обычно доминирует. Смотрите метрику `claude_code_self_hosted_runner_session_init_duration_seconds` [metric](/docs/ru/self-hosted-environments-reference#prometheus-metrics), чтобы подтвердить, и сократите клон с помощью [pre-warmed checkout](#reuse-a-pre-warmed-checkout) или меньшего `CLAUDE_RUNNER_FETCH_DEPTH`.734* **Сеансы занимают минуты для запуска**: начальный клон обычно доминирует. Смотрите метрику `claude_code_self_hosted_runner_session_init_duration_seconds` [metric](/docs/ru/self-hosted-environments-reference#prometheus-metrics), чтобы подтвердить, и сократите клон с помощью [pre-warmed checkout](#reuse-a-pre-warmed-checkout) или меньшего `CLAUDE_RUNNER_FETCH_DEPTH`.

619* **Turns не удаются с 401**: каждый сеанс аутентифицирует вызовы модели с помощью краткосрочного [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/ru/self-hosted-environments-configuration#wrapper-scripts), который runner получает от Anthropic и ротирует через stdin сеанса. Когда turn заканчивается с 401 или 403 от API модели, runner получает свежий токен и передает его сеансу. Неудачный turn не повторяется.735* **Ходы завершаются с ошибкой 401**: когда ход завершается ошибкой 401 или 403 от Anthropic API, runner получает от Anthropic свежий [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/ru/self-hosted-environments-configuration#wrapper-scripts) и передаёт его сессии. Неудавшийся ход не повторяется. Этот токен краткосрочный, и runner ротирует его через stdin сессии.

620 736 

621 Когда fetch не удается, runner регистрирует строку `inference_token refresh failed`, которая говорит, когда он будет повторять попытку, и он продолжает повторять попытку столько, сколько работает сеанс.737 Когда fetch не удается, runner регистрирует строку `inference_token refresh failed`, которая говорит, когда он будет повторять попытку, и он продолжает повторять попытку столько, сколько работает сеанс.

622 738 


637 753 

638* **Нормальный выход**: runner завершил свои сеансы и осушился, достиг времени выхода на пенсию или ему было приказано остановиться. Перезапустите его, чтобы окружение снова имело емкость. [Runner lifecycle](/docs/ru/self-hosted-environments#runner-lifecycle) описывает эти выходы.754* **Нормальный выход**: runner завершил свои сеансы и осушился, достиг времени выхода на пенсию или ему было приказано остановиться. Перезапустите его, чтобы окружение снова имело емкость. [Runner lifecycle](/docs/ru/self-hosted-environments#runner-lifecycle) описывает эти выходы.

639* **Неудачный старт**: runner не может запуститься с конфигурацией или хостом, который ему был дан, поэтому он выходит через несколько секунд после запуска, и он выходит одинаково каждый раз, когда вы его перезапускаете. Перезапуск его быстрее не помогает. Кто-то должен прочитать его вывод и исправить причину.755* **Неудачный старт**: runner не может запуститься с конфигурацией или хостом, который ему был дан, поэтому он выходит через несколько секунд после запуска, и он выходит одинаково каждый раз, когда вы его перезапускаете. Перезапуск его быстрее не помогает. Кто-то должен прочитать его вывод и исправить причину.

756* **Потеря связи**: runner, который не может связаться с Anthropic дольше срока своей [аренды](/docs/ru/self-hosted-environments#session-lifecycle), например пока его хост находится в спящем режиме, может быть удалён из окружения. Когда удалённый runner снова подключается, он завершается. В его логе может появиться строка `[runner:fatal]`, содержащая `runner record gone server-side` или, после более длительного перерыва, [`poll auth failed`](/docs/ru/self-hosted-environments-quickstart#set-up-an-environment-and-runner). Runner не регистрируется повторно самостоятельно, поэтому перезапустите его.

640 757 

641Конфигурируйте ваш supervisor, чтобы перезапустить runner всякий раз, когда он выходит, чтобы ждать дольше между перезапусками, когда runner продолжает выходить сразу после запуска, и чтобы сообщить кому-то, когда это продолжает происходить.758Конфигурируйте ваш supervisor, чтобы перезапустить runner всякий раз, когда он выходит, чтобы ждать дольше между перезапусками, когда runner продолжает выходить сразу после запуска, и чтобы сообщить кому-то, когда это продолжает происходить.

642 759 

Details

195 195 

196Обертки получают абсолютный путь к собственному бинарному файлу runner в `CLAUDE_RUNNER_CLAUDE_BIN`; используйте этот путь вместо разрешенного PATH `claude`, чтобы декодирование выполнялось на том же бинарном файле, который использует сам runner.196Обертки получают абсолютный путь к собственному бинарному файлу runner в `CLAUDE_RUNNER_CLAUDE_BIN`; используйте этот путь вместо разрешенного PATH `claude`, чтобы декодирование выполнялось на том же бинарном файле, который использует сам runner.

197 197 

198Используйте `jq -re` вместо `jq -r`, чтобы отсутствующее утверждение вызвало ненулевой выход. С одним `-r`, отсутствующее утверждение выводит буквальную строку `null` и выходит с нулем, что молча передает плохое значение вниз по потоку. Передайте `--no-verify` в `decode-token` только для автономной проверки, где эндпоинт JWKS недоступен.198Используйте `jq -re` вместо `jq -r`, чтобы отсутствующее утверждение вызвало ненулевой выход. С одним `-r`, отсутствующее утверждение выводит буквальную строку `null` и выходит с нулем, что молча передает плохое значение вниз по потоку.

199 

200Если `decode-token` не может получить ключи из эндпоинта JWKS или не может проверить токен, она выводит причину в stderr, не выводит утверждения и завершается с кодом 1. Передайте `--no-verify` в `decode-token` только для автономной проверки, где эндпоинт JWKS недоступен.

199 201 

200<h2 id="claims-reference">202<h2 id="claims-reference">

201 Справочник утверждений203 Справочник утверждений

Details

34Хост runner требует:34Хост runner требует:

35 35 

36* Хост или контейнер Linux или macOS с исходящим HTTPS к `api.anthropic.com`, к `claude.ai` и хостам загрузки, на которые он перенаправляет для шага установки ниже, и к вашему git-хосту для клонирования; [таблица требований к сети](/docs/ru/self-hosted-environments-deploy#network-requirements) содержит полный список. Windows не поддерживается в качестве хоста runner; запустите runner в контейнере Linux вместо этого. Рабочие станции разработчиков не затронуты, так как сеансы запускаются из claude.ai в браузере.36* Хост или контейнер Linux или macOS с исходящим HTTPS к `api.anthropic.com`, к `claude.ai` и хостам загрузки, на которые он перенаправляет для шага установки ниже, и к вашему git-хосту для клонирования; [таблица требований к сети](/docs/ru/self-hosted-environments-deploy#network-requirements) содержит полный список. Windows не поддерживается в качестве хоста runner; запустите runner в контейнере Linux вместо этого. Рабочие станции разработчиков не затронуты, так как сеансы запускаются из claude.ai в браузере.

37* Репозиторий для тестовой сессии: публичный или такой, который этот хост уже может клонировать по его HTTPS URL без запроса учётных данных.

37* Часы, синхронизированные с реальным временем, например с помощью NTP. Аутентификация не удаётся, когда часы отстают или спешат более чем на пять минут; см. [Troubleshooting](/docs/ru/self-hosted-environments-deploy#troubleshooting).38* Часы, синхронизированные с реальным временем, например с помощью NTP. Аутентификация не удаётся, когда часы отстают или спешат более чем на пять минут; см. [Troubleshooting](/docs/ru/self-hosted-environments-deploy#troubleshooting).

38 39 

39<h3 id="software-on-the-runner-host">40<h3 id="software-on-the-runner-host">


57 Настройка окружения и runner58 Настройка окружения и runner

58</h2>59</h2>

59 60 

60Claude Code включает управляемую установку: интерактивный сеанс Claude Code, который проведёт вас через создание окружения в админ-интерфейсе, запустит локальный runner с файлом секрета, который вы сохраняете, подтвердит, что runner регистрируется, и напишет шпаргалку в `./runner-setup/CHEAT-SHEET.md`. Запустите его на машине, где вы вошли с помощью `claude auth login`, используя учётную запись, которая имеет роль Owner; это недоступно с API ключами или поставщиками моделей третьих сторон. На хостах, где интерактивный сеанс невозможен, используйте вместо этого ручные шаги ниже. Сначала подтвердите, что [проверка версии](#software-on-the-runner-host) прошла: на версиях старше 2.1.224 эта команда запускает обычный сеанс Claude со словами в качестве подсказки вместо управляемой установки. Чтобы запустить управляемую установку, запустите подкоманду setup и следуйте подсказкам:61Используйте либо [пошаговую настройку](#run-the-guided-setup), либо [ручные шаги](#set-up-manually). Пошаговая настройка — это одна команда, которая запускает интерактивную сессию Claude Code и проводит вас через остальные действия. Используйте вместо неё ручные шаги на хосте, где интерактивная сессия невозможна. Также используйте их, если окружение создал пользователь с ролью Owner и передал вам его секрет, поскольку для пошаговой настройки требуется вход с ролью Owner.

62 

63<h3 id="run-the-guided-setup">

64 Запуск пошаговой настройки

65</h3>

66 

67Пошаговая настройка проводит вас через создание окружения в админ-интерфейсе, запускает локальный runner с файлом секрета, который вы сохраняете, подтверждает, что runner регистрируется, и записывает шпаргалку в `./runner-setup/CHEAT-SHEET.md`. Перед запуском проверьте вход и версию:

68 

69* **Вход**: запускайте её на машине, где вы вошли с помощью `claude auth login`, используя учётную запись с ролью Owner. Если используется только API-ключ или сторонний поставщик моделей, сессия запустится, но проверки организации завершатся неудачей.

70* **Версия**: убедитесь, что [проверка версии](#software-on-the-runner-host) пройдена. На версиях старше 2.1.224 команда setup запускает сессию Claude с этими словами в качестве промпта вместо пошаговой настройки.

71 

72Чтобы запустить пошаговую настройку, выполните подкоманду setup в оболочке и следуйте инструкциям:

61 73 

62```bash theme={null}74```bash theme={null}

63claude self-hosted-runner setup75claude self-hosted-runner setup

64```76```

65 77 

66Для ручной настройки вместо этого:78Пошаговая настройка сама не запускает тестовую сессию: она предлагает вам запустить её на claude.ai/code. Последний шаг настройки останавливает запущенный ею runner. Если вы выйдете из настройки до этого шага, runner продолжит работать. Чтобы продолжить после последнего шага, снова запустите runner в оболочке с помощью команды из `./runner-setup/CHEAT-SHEET.md`, затем [направьте сессию в окружение](#route-a-session).

79 

80<h3 id="set-up-manually">

81 Ручная настройка

82</h3>

83 

84Создайте окружение на claude.ai, запустите runner из терминала на хосте, затем вернитесь на claude.ai, чтобы убедиться, что runner появился, и направить на него сессию. Если пользователь с ролью Owner уже создал окружение и передал вам его секрет, начните с шага 2.

67 85 

68<Steps>86<Steps>

69 <Step title="Создайте окружение">87 <Step title="Создайте окружение">

70 Перейдите на [страницу **Cloud environments**](https://claude.ai/admin-settings/cloud-environments) в параметрах администратора. В разделе **Self-hosted environments** выберите **New**, назовите окружение и выберите **Create**. На втором шаге мастера выберите **Copy environment key**, чтобы скопировать секрет окружения, который админ-интерфейс обозначает как ключ окружения. claude.ai показывает секрет один раз, и вы не можете получить его позже; он истекает через 365 дней после создания. ID окружения `ccpool_...` остаётся видимым в его диалоговом окне деталей; вам понадобится он для проверки `aud` в [проверке токена](/docs/ru/self-hosted-environments-identity) и для отправки [тестовых сеансов из CI](/docs/ru/self-hosted-environments-testing#run-the-test-loop).88 Перейдите на [страницу **Cloud environments**](https://claude.ai/admin-settings/cloud-environments) в параметрах администратора. В разделе **Self-hosted environments** выберите **New**, назовите окружение и выберите **Create**. На втором шаге мастера выберите **Copy environment key**, чтобы скопировать секрет окружения, который админ-интерфейс обозначает как ключ окружения. claude.ai показывает секрет один раз, и вы не можете получить его позже; он истекает через 365 дней после создания. ID окружения `ccpool_...` остаётся видимым в его диалоговом окне деталей; вам понадобится он для проверки `aud` в [проверке токена](/docs/ru/self-hosted-environments-identity) и для отправки [тестовых сеансов из CI](/docs/ru/self-hosted-environments-testing#run-the-test-loop).

71 89 

72 Если вы потеряли секрет или вам нужно его ротировать, создайте новый секрет на вкладке **Configuration** окружения, разверните новый секрет на ваших runners, затем отозовите старый. Runners, держащие отозванный секрет, не пройдут свой следующий аутентифицированный опрос и выйдут, логируя `poll auth failed`, и ваш оркестратор перезапустит их с новым секретом.90 Если вы потеряли секрет или вам нужно его ротировать, создайте новый секрет на вкладке **Configuration** окружения, разверните новый секрет на ваших runners, затем отзовите старый. Runners с отозванным секретом не пройдут следующий аутентифицированный опрос и завершатся, записав в лог `poll auth failed`, а ваш оркестратор перезапустит их с новым секретом.

73 </Step>91 </Step>

74 92 

75 <Step title="Запустите runner">93 <Step title="Запустите runner">

76 Создайте директорию секрета. Этот шаг и следующий требуют root для пути `/etc/claude`; любой путь, который процесс runner может читать, работает, поэтому отрегулируйте обе команды и значение `--environment-secret-file` вместе, если вы используете другой.94 Создайте директорию для секрета. Эта и следующая команды используют `/etc/claude`, что требует root, а создаваемый ими файл секрета доступен для чтения только пользователю, который их выполнил. Если runner будет работать от имени другого пользователя, он завершится с ошибкой `error: Failed to read environment secret file <path> (EACCES: permission denied, open '<path>')`. В этом случае выполните обе команды от имени пользователя runner, указав вместо `/etc/claude` директорию, в которую этот пользователь может записывать, и передайте тот же путь в `--environment-secret-file`. Подойдёт любой путь, который процесс runner может читать.

77 95 

78 ```bash theme={null}96 ```bash theme={null}

79 mkdir -p /etc/claude97 mkdir -p /etc/claude


89 107 

90 Если runner не может создать или писать в путь, он выходит при запуске с ошибкой, называющей директорию вместо регистрации. См. [Troubleshooting](/docs/ru/self-hosted-environments-deploy#troubleshooting).108 Если runner не может создать или писать в путь, он выходит при запуске с ошибкой, называющей директорию вместо регистрации. См. [Troubleshooting](/docs/ru/self-hosted-environments-deploy#troubleshooting).

91 109 

92 Затем запустите runner с `--environment-secret-file` и `--base-dir`. Runner регистрируется в вашем окружении и начинает опрашивать работу. Если runner выходит, перезапустите его вручную. Production развёртывания запускают runner под оркестратором, который перезапускает вышедшие runners, обычно со свежей файловой системой при каждом перезапуске; [Reuse a pre-warmed checkout](/docs/ru/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) охватывает поддерживаемую настройку постоянного диска.110 Затем запустите runner с `--environment-secret-file` и `--base-dir`:

93 111 

94 ```bash theme={null}112 ```bash theme={null}

95 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'113 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'

96 ```114 ```

115 

116 После регистрации в вашем окружении runner записывает в лог `Registered: runner_id=<runner-id>`, а затем начинает опрашивать наличие работы. Если runner позже завершится, перезапустите его вручную. О том, когда это происходит, см. [Если runner завершился](#if-the-runner-exits).

97 </Step>117 </Step>

98 118 

99 <Step title="Проверьте, что runner появился">119 <Step title="Проверьте, что runner появился">

100 Вернитесь на [страницу **Cloud environments**](https://claude.ai/admin-settings/cloud-environments). Статус вашего окружения изменяется с **No runners deployed** на **Healthy** в течение нескольких секунд после запуска runner; откройте окружение и выберите **Activity**, чтобы увидеть сам runner.120 Вернитесь на [страницу **Cloud environments**](https://claude.ai/admin-settings/cloud-environments). Статус вашего окружения изменится с **No runners deployed** на **Healthy** в течение нескольких секунд после запуска runner; откройте окружение и выберите **Activity**, чтобы увидеть сам runner. Если у вас нет доступа к странице администратора, тот же сигнал даёт строка `Registered: runner_id=<runner-id>` в логе runner из предыдущего шага.

101 </Step>121 </Step>

102 122 

103 <Step title="Маршрутизируйте сеанс на окружение">123 <Step title="Направьте сессию в окружение">

104 Запустите сеанс на claude.ai/code и выберите ваше окружение из средства выбора окружения, где самостоятельно размещаемые окружения появляются рядом с размещаемыми Anthropic. Runner клонирует с любыми учётными данными git, которые хост уже имеет, поэтому выберите репозиторий, который этот хост уже может клонировать, или публичный; опции учётных данных для приватных репозиториев в production находятся на [Configure git](/docs/ru/self-hosted-environments-deploy#configure-git). Следующий доступный runner подхватывает поставленный в очередь сеанс и логирует `Picked up session <session-id>` вместе с его активным счётом и ёмкостью, поэтому вы можете подтвердить из собственного вывода runner, какой хост взял сеанс. Смотрите, как работает сеанс, и читайте ответы Claude на [claude.ai/code](https://claude.ai/code). Если сеанс остаётся в очереди вместо этого, см. [Troubleshooting](/docs/ru/self-hosted-environments-deploy#troubleshooting).124 <span id="route-a-session" />Запустите сессию на claude.ai/code и выберите ваше окружение в средстве выбора окружения, где самостоятельно размещаемые окружения отображаются рядом с размещаемыми Anthropic. В качестве репозитория выберите указанный в [предварительных требованиях](#host-and-network): публичный репозиторий или тот, который этот хост уже может клонировать. Runner клонирует с теми учётными данными git, которые уже есть на хосте.

125 

126 Следующий доступный runner подхватывает поставленную в очередь сессию и записывает в лог `Picked up session <session-id>` вместе с числом активных сессий и ёмкостью, поэтому по собственному выводу runner можно определить, какой хост взял сессию. Наблюдайте за работой сессии и читайте ответы Claude на [claude.ai/code](https://claude.ai/code).

127 

128 Если сессия не начинает работу, сопоставьте то, что вы видите:

129 

130 * **Сессия остаётся в очереди**: см. [Устранение неполадок](/docs/ru/self-hosted-environments-deploy#troubleshooting).

131 * **Сессия не запускается из-за ошибки git**: ошибка отображается в сессии и в логе runner. Если она содержит `could not read Username for` из git, за которым следует URL вашего git-хоста, у runner не было учётных данных HTTPS для этого хоста. См. [Configure git](/docs/ru/self-hosted-environments-deploy#configure-git), где также описаны варианты учётных данных для приватных репозиториев в production.

105 </Step>132 </Step>

106</Steps>133</Steps>

107 134 

108Runner выходит по дизайну после завершения его активных сеансов; см. [Runner lifecycle](/docs/ru/self-hosted-environments#runner-lifecycle). Для production развёртывайте его под оркестратором, который перезапускает его при выходе и ждёт дольше между перезапусками, когда runner продолжает выходить сразу после запуска. См. [Deploy to production](/docs/ru/self-hosted-environments-deploy) и [When the runner exits](/docs/ru/self-hosted-environments-deploy#when-the-runner-exits).135<h3 id="if-the-runner-exits">

136 Если runner завершился

137</h3>

138 

139Если runner завершится во время этого быстрого старта, запустите его снова той же командой. Runner может завершиться самостоятельно:

140 

141* **Сессии завершены**: в логе отображается `[runner:exit] account workload drained — exiting`. Runner по задумке завершается после окончания его активных сессий. См. [Runner lifecycle](/docs/ru/self-hosted-environments#runner-lifecycle).

142* **Потеряна связь**: в логе отображается строка `[runner:fatal]` с `runner record gone server-side` или с `poll auth failed`. Если runner на некоторое время теряет связь с Anthropic, например потому что хост перешёл в спящий режим, он может завершиться при следующем обращении к Anthropic.

143 

144Завершённый ход не завершает вашу тестовую сессию. После первого хода сессия остаётся подключённой, а runner продолжает работать, поэтому вы можете [отправить сессии следующее сообщение](#send-a-follow-up-message-to-a-running-session), не перезапуская runner.

145 

146Для production развёртывайте runner под оркестратором, который перезапускает его при завершении и увеличивает паузу между перезапусками, если runner продолжает завершаться сразу после запуска. См. [Deploy to production](/docs/ru/self-hosted-environments-deploy) и [When the runner exits](/docs/ru/self-hosted-environments-deploy#when-the-runner-exits).

109 147 

110<h2 id="send-a-follow-up-message-to-a-running-session">148<h2 id="send-a-follow-up-message-to-a-running-session">

111 Отправьте follow-up сообщение работающему сеансу149 Отправьте follow-up сообщение работающему сеансу

Details

52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Отпустите слот сеанса после N минут неактивности после завершения хода или ожидания сеансом действия пользователя. Сеанс, который все еще находится в процессе хода, включая тот, который держит никогда не заканчивающуюся фоновую задачу или одобрение, запрошенное изнутри работающего вызова инструмента, не считается неактивным; объедините с `--kill-session-after-min` как жесткий упор. После завершения фоновой задачи сеанса runner считает сеанс занятым до тех пор, пока не начнется следующий ход, который читает результат, в течение максимум окна [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). До тех пор, пока runner не получит сигнал завершения или не достигнет времени выхода на пенсию, отпуск, который оставляет runner без активных сеансов, запускает тот же путь выхода, что и нормальное осушение, управляемое `--drain-grace-sec`. После первого сигнала, который вы отложили с помощью [`--defer-shutdown-max-min`](/docs/ru/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), runner выходит, как только отпуск оставляет его без сеансов. `0` отключает. |52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Отпустите слот сеанса после N минут неактивности после завершения хода или ожидания сеансом действия пользователя. Сеанс, который все еще находится в процессе хода, включая тот, который держит никогда не заканчивающуюся фоновую задачу или одобрение, запрошенное изнутри работающего вызова инструмента, не считается неактивным; объедините с `--kill-session-after-min` как жесткий упор. После завершения фоновой задачи сеанса runner считает сеанс занятым до тех пор, пока не начнется следующий ход, который читает результат, в течение максимум окна [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). До тех пор, пока runner не получит сигнал завершения или не достигнет времени выхода на пенсию, отпуск, который оставляет runner без активных сеансов, запускает тот же путь выхода, что и нормальное осушение, управляемое `--drain-grace-sec`. После первого сигнала, который вы отложили с помощью [`--defer-shutdown-max-min`](/docs/ru/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), runner выходит, как только отпуск оставляет его без сеансов. `0` отключает. |

53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | off | Удалите каталоги сеанса для каждого сеанса под `<base-dir>/_sessions/` когда сеанс заканчивается на этом runner, независимо от результата. [Reuse a pre-warmed checkout](/docs/ru/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) описывает, что они содержат и кто может их читать, когда они остаются. Удаление является лучшим усилием: каталоги для каждого сеанса остаются на месте, когда runner убивается или достигает крайнего срока осушения перед запуском очистки. С флагом включенным, логи отладки неудачного или прерванного сеанса не сохраняются на диск. Требует Claude Code v2.1.268 или позже. |53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | off | Удалите каталоги сеанса для каждого сеанса под `<base-dir>/_sessions/` когда сеанс заканчивается на этом runner, независимо от результата. [Reuse a pre-warmed checkout](/docs/ru/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) описывает, что они содержат и кто может их читать, когда они остаются. Удаление является лучшим усилием: каталоги для каждого сеанса остаются на месте, когда runner убивается или достигает крайнего срока осушения перед запуском очистки. С флагом включенным, логи отладки неудачного или прерванного сеанса не сохраняются на диск. Требует Claude Code v2.1.268 или позже. |

54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Выведите runner на пенсию в абсолютный временной штамп Unix в секундах для инфраструктуры, которая убивает runner в известное время; [Runner lifecycle](/docs/ru/self-hosted-environments#runner-lifecycle) описывает последовательность отпуска и как определить размер маржи. Значения до 2001 или после года 5138 отклоняются флагом и игнорируются переменной окружения. |54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Выведите runner на пенсию в абсолютный временной штамп Unix в секундах для инфраструктуры, которая убивает runner в известное время; [Runner lifecycle](/docs/ru/self-hosted-environments#runner-lifecycle) описывает последовательность отпуска и как определить размер маржи. Значения до 2001 или после года 5138 отклоняются флагом и игнорируются переменной окружения. |

55| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Какие из списков правил классификатора [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), которые управляющий уровень отправляет вместе с сессией, могут применяться к этой сессии: `all`, `no-allow` или `none`. Что применяет каждое значение, см. в разделе [Списки правил авторежима](#auto-mode-rule-lists). Недопустимое значение останавливает runner при запуске. Требуется Claude Code v2.1.295 или новее. |

55| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Как долго ждать чистого выхода процесса Claude после завершения сеанса перед принудительным завершением. Повысьте значение, если собственные hooks `SessionEnd` дочернего процесса нуждаются в большем времени. |56| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Как долго ждать чистого выхода процесса Claude после завершения сеанса перед принудительным завершением. Повысьте значение, если собственные hooks `SessionEnd` дочернего процесса нуждаются в большем времени. |

56| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Отпустите слот сеанса, если дочерний процесс не сигнализировал об инициализации в течение N минут после порождения. Очищается сигналом инициализации дочернего процесса на [канале активности](/docs/ru/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached), а не обычным выводом, после чего `--release-idle-session-min` берет верх. `0` отключает. |57| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Освобождает слот сессии, если дочерний процесс не сообщил об инициализации в течение N минут после запуска. Клонирование выполняется до запуска, поэтому время клонирования не учитывается. Сбрасывается сигналом инициализации дочернего процесса в [канале активности](/docs/ru/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached), а не обычным выводом, после чего в действие вступает `--release-idle-session-min`. `0` отключает. |

57| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | on | Посейте сохраняемое доверие для путей репозитория каждого сеанса, чтобы зафиксированные в репо `permissions.allow` и `additionalDirectories` были соблюдены. Установите `false` для отпуска зафиксированных в репо грантов разрешений и вместо этого настройте правила разрешения в `settings.json` конфигурации хоста; параметры `sandbox.*` зафиксированные в репо все еще применяются в любом случае, поэтому [защита repo-settings](/docs/ru/self-hosted-environments-deploy#harden-your-deployment) сканирует их независимо от этого флага. |58| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | on | Посейте сохраняемое доверие для путей репозитория каждого сеанса, чтобы зафиксированные в репо `permissions.allow` и `additionalDirectories` были соблюдены. Установите `false` для отпуска зафиксированных в репо грантов разрешений и вместо этого настройте правила разрешения в `settings.json` конфигурации хоста; параметры `sandbox.*` зафиксированные в репо все еще применяются в любом случае, поэтому [защита repo-settings](/docs/ru/self-hosted-environments-deploy#harden-your-deployment) сканирует их независимо от этого флага. |

58| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Клонируйте через [прокси git Anthropic](/docs/ru/self-hosted-environments-deploy#use-the-anthropic-git-proxy) вместо управляемой клиентом аутентификации git. Требует `--capacity 1` и git 2.32 или новее; runner отказывается запускаться в противном случае. Заменяет флаги переписи. |59| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Клонирует репозитории на github.com через [прокси git Anthropic](/docs/ru/self-hosted-environments-deploy#use-the-anthropic-git-proxy) вместо управляемой клиентом аутентификации git. Требует `--capacity 1` и git 2.32 или новее; в противном случае runner отказывается запускаться. Заменяет флаги перезаписи. |

59 60 

60Большинство флагов длительности имеют максимум, выбранный для сохранения каждого timeout в потолке 32-битного таймера runtime примерно 24,85 дня. Флаги `--*-min` ограничены 10080 минутами, 7 дней; `--drain-grace-sec` на 604800 секунд, также 7 дней; и `--drain-wait-sec` на 86400 секунд, 24 часа. `--session-stop-grace-sec` и `--post-session-hook-timeout-sec` не ограничены. Превышение лимита ведет себя по-разному в зависимости от поверхности:61Большинство флагов длительности имеют максимум, выбранный для сохранения каждого timeout в потолке 32-битного таймера runtime примерно 24,85 дня. Флаги `--*-min` ограничены 10080 минутами, 7 дней; `--drain-grace-sec` на 604800 секунд, также 7 дней; и `--drain-wait-sec` на 86400 секунд, 24 часа. `--session-stop-grace-sec` и `--post-session-hook-timeout-sec` не ограничены. Превышение лимита ведет себя по-разному в зависимости от поверхности:

61 62 

62* **Флаг**: запуск не удается с ошибкой.63* **Флаг**: запуск не удается с ошибкой.

63* **Переменная окружения**: runner зажимает значение до потолка таймера вместо его отклонения.64* **Переменная окружения**: runner зажимает значение до потолка таймера вместо его отклонения.

64 65 

66<h3 id="auto-mode-rule-lists">

67 Списки правил авторежима

68</h3>

69 

70`--server-auto-mode-lists` позволяет решить, какие правила классификатора [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode), поступающие извне runner, применяются к сессиям на ваших runner. Управляющий уровень Anthropic может отправлять списки правил вместе с сессией и просить runner применить их. Некоторые записи могут быть правилами, написанными администратором вашей организации. Списки называются `environment`, `soft_deny` и `allow`:

71 

72* **`environment`**: запись может заставить классификатор разрешать как больше, так и меньше.

73* **`soft_deny`**: запись блокирует действие, если только пользователь явно не попросил о нём или не применяется исключение `allow`.

74* **`allow`**: исключения для записей `soft_deny`.

75 

76Значение флага определяет, какие списки применяет runner:

77 

78* **`no-allow`**: значение по умолчанию. Применяет `environment` и `soft_deny` и не применяет `allow`. Запись `environment` по-прежнему может заставить классификатор разрешать больше, поэтому значение по умолчанию не исключает всех ослаблений.

79* **`all`**: применяет все три списка.

80* **`none`**: не применяет ни один из них. Выберите `none`, чтобы исключить любые ослабления из этих списков. При этом также отбрасываются ограничения `soft_deny`.

81 

82Никакая настройка runner не заставляет управляющий уровень просить runner применить списки. Если он не просит, сессии не получают ни одного списка, что бы вы ни установили. Чтобы узнать, что произошло, запустите runner с `--log-level debug`. Тогда для каждой сессии runner записывает в лог строку, содержащую `the server asked this runner to apply`, или строку, содержащую `the server did not ask this runner to apply the auto mode lists it sends`.

83 

65<h2 id="orchestrator-cli-flags">84<h2 id="orchestrator-cli-flags">

66 Флаги CLI Orchestrator85 Флаги CLI Orchestrator

67</h2>86</h2>


72| :- | :- | :- |91| :- | :- | :- |

73| `--hook-concurrency <n>` | `4` | Максимум hooks `spawn-runner`, работающих параллельно. Также ограничивает, сколько запросов на порождение претендуют на опрос. |92| `--hook-concurrency <n>` | `4` | Максимум hooks `spawn-runner`, работающих параллельно. Также ограничивает, сколько запросов на порождение претендуют на опрос. |

74| `--hook-timeout <sec>` | `60` | Завершите дерево процессов hook после этого количества секунд. Timeout плюс его 5-секундная благодать убийства должны оставаться ниже `--expected-spawn-seconds`; orchestrator обеспечивает это при запуске. |93| `--hook-timeout <sec>` | `60` | Завершите дерево процессов hook после этого количества секунд. Timeout плюс его 5-секундная благодать убийства должны оставаться ниже `--expected-spawn-seconds`; orchestrator обеспечивает это при запуске. |

75| `--expected-spawn-seconds <sec>` | `120` | Ожидаемое время загрузки p99 для порожденных runner в диапазоне, обеспеченном сервером, от 10 до 3600. Отправляется при каждом опросе как аренда на стороне сервера; если ни один runner не регистрируется до его истечения, сеанс переоформляется с новым ID заказа. Все реплики должны совместно использовать это значение. |94| `--expected-spawn-seconds <sec>` | `120` | Ожидаемое время p99 с момента получения orchestrator запроса на порождение до регистрации runner, включая любое ожидание свободных ресурсов на вашей платформе. Сервер допускает диапазон от 10 до 3600. Отправляется при каждом опросе как аренда на стороне сервера: если ни один runner не зарегистрируется до её истечения, сессия предлагается повторно с новым ID заказа. Все реплики должны использовать одно и то же значение. |

76| `--min-idle <n>` | `0` | Держите по крайней мере N свободных слотов сеанса в режиме ожидания, активно порождая резервные runner. `0` отключает предварительное прогревание. Объедините с `--exit-if-unused-min` runner, чтобы избыточные резервные runner восстановили себя. |95| `--min-idle <n>` | `0` | Держите по крайней мере N свободных слотов сеанса в режиме ожидания, активно порождая резервные runner. `0` отключает предварительное прогревание. Объедините с `--exit-if-unused-min` runner, чтобы избыточные резервные runner восстановили себя. |

77| `--debug-dir <path>` | unset | Запишите рабочий заказ каждого запроса на порождение и stderr hook на диск. Только для отладки; никогда не устанавливайте в production. |96| `--debug-dir <path>` | unset | Запишите рабочий заказ каждого запроса на порождение и stderr hook на диск. Только для отладки; никогда не устанавливайте в production. |

78 97 


108| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | Ограничение на то, как долго runner считает сеанс занятым для осушения `--drain-wait-sec` после завершения хода, пока процесс сеанса сообщает об окончании хода в Anthropic. `0` или неиспользуемое значение возвращается к значению по умолчанию, поэтому удержание не может быть отключено. Требует Claude Code v2.1.275 или позже. |127| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | Ограничение на то, как долго runner считает сеанс занятым для осушения `--drain-wait-sec` после завершения хода, пока процесс сеанса сообщает об окончании хода в Anthropic. `0` или неиспользуемое значение возвращается к значению по умолчанию, поэтому удержание не может быть отключено. Требует Claude Code v2.1.275 или позже. |

109| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | Как долго runner ждет, пока ОС доставит `SIGKILL` дочернему процессу, застрявшему в неперерываемом I/O, перед выходом самого себя. Минимум `--post-session-hook-timeout-sec` плюс 15 секунд, и 30 больше, когда установлен `--push-outcome-on-release`, поэтому эффективный минимум составляет 75 секунд при значениях по умолчанию. |128| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | Как долго runner ждет, пока ОС доставит `SIGKILL` дочернему процессу, застрявшему в неперерываемом I/O, перед выходом самого себя. Минимум `--post-session-hook-timeout-sec` плюс 15 секунд, и 30 больше, когда установлен `--push-outcome-on-release`, поэтому эффективный минимум составляет 75 секунд при значениях по умолчанию. |

110| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | Глубина выборки Git для свежих клонов. Установите положительное целое число или `full` или `0` для полной выборки. Репозитории, уже присутствующие в рабочем пространстве, сохраняют свою существующую глубину. |129| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | Глубина выборки Git для свежих клонов. Установите положительное целое число или `full` или `0` для полной выборки. Репозитории, уже присутствующие в рабочем пространстве, сохраняют свою существующую глубину. |

130| `CLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS` | `600000` | Как долго в миллисекундах, в рамках одной попытки, выборка git может ждать первых данных, пока собственные показатели прогресса сервера git продолжают расти, например когда сервер подготавливает pack для большого репозитория. `0` или `off` отключает ожидание: тогда такая выборка прерывается через две минуты без данных. Любое другое целое число ограничивается диапазоном от `120000` до `1800000`, то есть от 2 до 30 минут. Требует Claude Code v2.1.295 или позже. |

111| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | unset | Когда `1`, пропустите проверку наличия `.git` после запуска hook `checkout`. Установите это, когда ваш hook материализует источник, не являющийся git. |131| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | unset | Когда `1`, пропустите проверку наличия `.git` после запуска hook `checkout`. Установите это, когда ваш hook материализует источник, не являющийся git. |

112| `FORCE_AUTOUPDATE_PLUGINS` | unset | Когда `1`, позвольте маркетплейсам плагинов автоматически обновляться, несмотря на то, что бинарный файл закреплен |132| `FORCE_AUTOUPDATE_PLUGINS` | unset | Когда `1`, позвольте маркетплейсам плагинов автоматически обновляться, несмотря на то, что бинарный файл закреплен |

113| `CLAUDE_CODE_DISABLE_ARTIFACT` | unset | Когда `1`, отключите инструмент Artifact в сеансах независимо от параметра администратора организации и отпустите требование выхода `*.frame.claudeusercontent.com` |133| `CLAUDE_CODE_DISABLE_ARTIFACT` | unset | Когда `1`, отключите инструмент Artifact в сеансах независимо от параметра администратора организации и отпустите требование выхода `*.frame.claudeusercontent.com` |


148 Метрики Prometheus168 Метрики Prometheus

149</h2>169</h2>

150 170 

151Каждый runner служит метрикам Prometheus в `GET /metrics` на том же порту, что и `/healthz`. Ключевые серии:171Каждый runner отдаёт метрики Prometheus по `GET /metrics` на том же порту, что и `/healthz`. Основные серии:

152 172 

153| Серия | Примечания |173| Серия | Примечания |

154| :- | :- |174| :- | :- |

155| `claude_code_self_hosted_runner_info{runner_id,version,client_label}` | Всегда `1`; полезно для инвентаризации флота и обнаружения дрейфа версий |175| `claude_code_self_hosted_runner_info{runner_id,version,client_label}` | Всегда `1`; полезна для инвентаризации парка и обнаружения расхождения версий |

156| `claude_code_self_hosted_runner_capacity` | Настроенный `--capacity` |176| `claude_code_self_hosted_runner_capacity` | Настроенное значение `--capacity` |

157| `claude_code_self_hosted_runner_active_sessions` | Сеансы, в настоящее время работающие |177| `claude_code_self_hosted_runner_active_sessions` | Сессии, выполняющиеся в данный момент |

158| `claude_code_self_hosted_runner_locked_account{email}` | Присутствует после того, как runner заблокировался на пользователя и был выдан токен сеанса, несущий претензию `act.email`. Серия отсутствует на runner, заблокированном на агента Claude Tag, чьи токены сеанса не несут `act.email`. Значение метки — это адрес электронной почты аккаунта; если ваше хранилище метрик широко читаемо, отпустите или хешируйте метку во время скребка, например с помощью Prometheus `metric_relabel_configs`. |178| `claude_code_self_hosted_runner_locked_account{email}` | Появляется, как только runner закреплён за пользователем и выдан токен сессии с утверждением `act.email`. Серия отсутствует на runner, закреплённом за агентом Claude Tag, поскольку его токены сессий не содержат `act.email`. Значение метки — email учётной записи; если ваше хранилище метрик доступно для чтения широкому кругу лиц, удаляйте или хешируйте метку при сборе, например с помощью `metric_relabel_configs` в Prometheus. |

159| `claude_code_self_hosted_runner_last_poll_age_seconds` | Секунды с момента последнего успешного опроса. Оповещение, если более 60. |179| `claude_code_self_hosted_runner_last_poll_age_seconds` | Секунды с момента последнего успешного опроса. Настройте оповещение, если значение превышает 60. |

160| `claude_code_self_hosted_runner_poll_errors_total{error_kind}` | Кумулятивные сбои PollWork по типу: `transport`, `timeout`, `5xx`, `429` или `4xx`. Все пять серий присутствуют с начала процесса; оповещение на `rate(...[5m]) > 0`. |180| `claude_code_self_hosted_runner_poll_errors_total{error_kind}` | Накопительное число сбоев PollWork по типам: `transport`, `timeout`, `5xx`, `429` или `4xx`. Все пять серий присутствуют с момента запуска процесса; настройте оповещение на `rate(...[5m]) > 0`. |

161| `claude_code_self_hosted_runner_sessions_started_total{client_platform}` | Дочерние процессы сеанса, порожденные за время жизни runner, одна серия на источник сеанса, такой как `web_claude_ai`, `ios`, `android`, `desktop_app` или `claude_code_cli`, или `unknown`, когда сервер не отправил один. Сеансы Slack несут либо `claude_in_slack`, либо `claude-in-slack` в зависимости от того, какая интеграция Slack их создала, поэтому совпадайте с обоими с помощью селектора regex, такого как `{client_platform=~"claude[-_]in[-_]slack"}`. Используйте `sum()` для общего количества флота. |181| `claude_code_self_hosted_runner_sessions_started_total{client_platform}` | Дочерние процессы сессий, запущенные за время жизни runner, по одной серии на источник сессии, например `web_claude_ai`, `ios`, `android`, `desktop_app` или `claude_code_cli`, либо `unknown`, если сервер его не передал. Сессии Slack помечаются либо `claude_in_slack`, либо `claude-in-slack` в зависимости от того, какая интеграция Slack их создала, поэтому сопоставляйте оба варианта селектором с регулярным выражением, например `{client_platform=~"claude[-_]in[-_]slack"}`. Используйте `sum()` для получения общего значения по парку. |

162| `claude_code_self_hosted_runner_sessions_completed_total{client_platform}` | Сеансы, которые завершились чисто, помеченные так же. Шире, чем простой чистый выход: см. [session lifecycle counter semantics](#session-lifecycle-counter-semantics) для того, что считается. |182| `claude_code_self_hosted_runner_sessions_completed_total{client_platform}` | Сессии, завершившиеся штатно, с такими же метками. Понятие шире, чем просто штатный выход: что именно учитывается, см. в разделе [семантика счётчиков жизненного цикла сессий](#session-lifecycle-counter-semantics). |

163| `claude_code_self_hosted_runner_sessions_failed_total{client_platform}` | Сеансы, которые завершились в отказе, помеченные так же. Та же оговорка: см. [session lifecycle counter semantics](#session-lifecycle-counter-semantics). |183| `claude_code_self_hosted_runner_sessions_failed_total{client_platform}` | Сессии, завершившиеся сбоем, с такими же метками. Та же оговорка: см. [семантика счётчиков жизненного цикла сессий](#session-lifecycle-counter-semantics). |

164| `claude_code_self_hosted_runner_sessions_interrupted_total{client_platform}` | Сеансы, которые runner завершил по операционной причине, а не по результату сеанса, помеченные так же. См. [session lifecycle counter semantics](#session-lifecycle-counter-semantics). |184| `claude_code_self_hosted_runner_sessions_interrupted_total{client_platform}` | Сессии, которые runner завершил по эксплуатационной причине, а не по итогу самой сессии, с такими же метками. См. [семантика счётчиков жизненного цикла сессий](#session-lifecycle-counter-semantics). |

165| `claude_code_self_hosted_runner_initializing_sessions` | Сеансы, в настоящее время находящиеся в фазе инициализации, от назначения до события инициализации дочернего процесса |185| `claude_code_self_hosted_runner_initializing_sessions` | Сессии, находящиеся в фазе инициализации: от назначения до события init дочернего процесса |

166| `claude_code_self_hosted_runner_session_init_duration_seconds` | Гистограмма длительности инициализации сеанса |186| `claude_code_self_hosted_runner_session_init_duration_seconds` | Гистограмма длительности инициализации сессий |

167| `claude_code_self_hosted_runner_session_init_errors_total` | Сеансы, которые не удалось инициализировать: сбой hook checkout, подготовка git, проблема с токеном или сбой дочернего процесса до инициализации |187| `claude_code_self_hosted_runner_session_init_errors_total` | Сессии, завершившиеся сбоем до достижения init: сбой хука checkout, подготовки git, выдачи токена или падение дочернего процесса до init |

168| `claude_code_self_hosted_runner_session_start_hook_errors_total` | Hooks `SessionStart`, которые сообщили об ошибке результата, один на каждое неудачное выполнение hook |188| `claude_code_self_hosted_runner_session_start_hook_errors_total` | Хуки `SessionStart`, сообщившие об ошибке, по одному на каждое неудачное выполнение хука |

169| `claude_code_self_hosted_runner_session_idle_seconds{session_id,client_platform}` | Датчик для каждого сеанса секунд с момента простоя сеанса. Полезно для завершения сеансов, застрявших на неотвеченном запросе разрешения. |189| `claude_code_self_hosted_runner_session_idle_seconds{session_id,client_platform}` | Gauge для каждой сессии: секунды с момента перехода сессии в режим простоя. Полезна для завершения сессий, зависших на неотвеченном запросе разрешения. |

170 190 

171Orchestrator служит своим собственным сериям в `GET /metrics` на том же порту, что и его `/healthz`:191Оркестратор отдаёт собственные серии по `GET /metrics` на том же порту, что и его `/healthz`:

172 192 

173| Серия | Примечания |193| Серия | Примечания |

174| :- | :- |194| :- | :- |

175| `claude_code_self_hosted_orchestrator_info{version,pool_id,orchestrator_uuid,hostname}` | Всегда `1` |195| `claude_code_self_hosted_orchestrator_info{version,pool_id,orchestrator_uuid,hostname}` | Всегда `1` |

176| `claude_code_self_hosted_orchestrator_connected` | `1`, когда последний опрос успешен; падает до `0` после любого неудачного опроса, независимо от типа сбоя |196| `claude_code_self_hosted_orchestrator_connected` | `1`, если последний опрос завершился успешно; падает до `0` после любого неудачного опроса, независимо от типа сбоя |

177| `claude_code_self_hosted_orchestrator_last_poll_age_seconds` | Секунды с момента последней попытки опроса, успеха или сбоя, в отличие от идентично названной метрики runner, которая измеряет с момента последнего успеха; объедините с `connected` для перехвата неудачных опросов. Цикл опроса orchestrator ждет выполнения hook, поэтому оповещение выше `--hook-timeout` плюс маржа, около 90 секунд при значениях по умолчанию, вместо плоских 60. |197| `claude_code_self_hosted_orchestrator_last_poll_age_seconds` | Секунды с момента последней попытки опроса, успешной или нет, в отличие от одноимённой метрики runner, которая отсчитывается от последнего успешного опроса; используйте вместе с `connected`, чтобы отлавливать неудачные опросы. Цикл опроса оркестратора ожидает выполнения хуков, поэтому настраивайте оповещение на значение выше `--hook-timeout` плюс запас, около 90 секунд при значениях по умолчанию, а не на фиксированные 60. |

178| `claude_code_self_hosted_orchestrator_poll_errors_total{error_kind}` | Кумулятивные сбои PollSpawnHints по типу: `transport`, `timeout`, `5xx`, `429` или `4xx`. Все пять серий присутствуют с начала процесса; оповещение на `rate(...[5m]) > 0`. |198| `claude_code_self_hosted_orchestrator_poll_errors_total{error_kind}` | Накопительное число сбоев PollSpawnHints по типам: `transport`, `timeout`, `5xx`, `429` или `4xx`. Все пять серий присутствуют с момента запуска процесса; настройте оповещение на `rate(...[5m]) > 0`. |

179| `claude_code_self_hosted_orchestrator_queue_pending_sessions` | Запросы на порождение, претендующие прямо сейчас |199| `claude_code_self_hosted_orchestrator_queue_pending_sessions` | Запросы на запуск, которые можно забрать прямо сейчас |

180| `claude_code_self_hosted_orchestrator_queue_backing_off_sessions` | Запросы на порождение в отступлении повтора после повторяемого сбоя hook |200| `claude_code_self_hosted_orchestrator_queue_backing_off_sessions` | Запросы на запуск, находящиеся в задержке перед повторной попыткой после сбоя хука, допускающего повторную попытку |

181| `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions` | Запросы на порождение, заблокированные до тех пор, пока Owner не повторит их с вкладки **Activity** среды; оповещение, если выше нуля |201| `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions` | Сессии, запуск которых заблокирован. Каждая остаётся заблокированной, пока пользователь не отправит ей новое сообщение или Owner не повторит попытку на вкладке **Activity** окружения. Значение может оставаться выше нуля после устранения причины. Настройте оповещение, если значение выше нуля. |

182| `claude_code_self_hosted_orchestrator_pool_pending_sessions` | Всего сеансов, ожидающих runner для этой среды. Совокупность на уровне среды, идентичная на каждом экземпляре orchestrator: используйте `MAX` вместо `SUM` по экземплярам. |202| `claude_code_self_hosted_orchestrator_pool_pending_sessions` | Общее число сессий, ожидающих runner для этого окружения. Агрегат по всему окружению, одинаковый на каждом экземпляре оркестратора: используйте `MAX`, а не `SUM` по экземплярам. |

183| `claude_code_self_hosted_orchestrator_pool_active_sessions` | Сеансы, в настоящее время назначенные живому runner в этой среде. Совокупность на уровне среды, идентичная на каждом экземпляре orchestrator: используйте `MAX` вместо `SUM` по экземплярам. |203| `claude_code_self_hosted_orchestrator_pool_active_sessions` | Сессии, в данный момент назначенные работающему runner в этом окружении. Агрегат по всему окружению, одинаковый на каждом экземпляре оркестратора: используйте `MAX`, а не `SUM` по экземплярам. |

184| `claude_code_self_hosted_orchestrator_spawn_hooks_total{result}` | Кумулятивные результаты hook `spawn-runner`: `ok`, `retryable`, `non_retryable`. Подсчитывает вызовы hook orchestrator, а не дочерние процессы сеанса, которые порождают runner: не сравнимо с `sessions_started_total`, так как емкость выше одного, теплые пулы и runner, порожденные снова для того же сеанса, все расходятся в двух. |204| `claude_code_self_hosted_orchestrator_spawn_hooks_total{result}` | Накопительные результаты хука `spawn-runner`: `ok`, `retryable`, `non_retryable`. Учитывает вызовы хука оркестратором, а не дочерние процессы сессий, которые запускают runner: несопоставима с `sessions_started_total`, поскольку ёмкость больше единицы, тёплые пулы и повторный запуск runner для той же сессии приводят к расхождению этих значений. |

185| `claude_code_self_hosted_orchestrator_spawn_hook_duration_seconds` | Гистограмма длительности hook |205| `claude_code_self_hosted_orchestrator_spawn_hook_duration_seconds` | Гистограмма длительности выполнения хука |

186| `claude_code_self_hosted_orchestrator_warm_hints_dispatched_total` | Запросы на порождение резервного копирования, отправленные с начала процесса |206| `claude_code_self_hosted_orchestrator_warm_hints_dispatched_total` | Резервные запросы на запуск, отправленные с момента запуска процесса |

187| `claude_code_self_hosted_orchestrator_session_queue_wait_seconds` | Гистограмма секунд, которые каждый сеанс ждал в очереди перед тем, как orchestrator претендовал на него для порождения, записанная из временной метки очереди ожидания, которую плоскость управления отправляет с каждым запросом на порождение сеанса. Используйте для оповещения времени очереди p50/p99. Порождения предварительного прогрева не отбираются. |207| `claude_code_self_hosted_orchestrator_session_queue_wait_seconds` | Гистограмма времени в секундах, которое каждая сессия провела в очереди, прежде чем оркестратор забрал её для запуска; записывается по метке времени ожидания в очереди, которую плоскость управления передаёт с запросом на запуск каждой сессии. Используйте для оповещений по p50/p99 времени в очереди. Запуски для предварительного прогрева не учитываются. |

188| `claude_code_self_hosted_orchestrator_clock_skew_seconds` | Перекос часов локальный минус сервер; диагностический, присутствует один раз измеренный |208| `claude_code_self_hosted_orchestrator_clock_skew_seconds` | Расхождение часов (локальное минус серверное); диагностическая метрика, появляется после измерения |

189| `claude_code_self_hosted_orchestrator_scm_connector_connected` | `1`, когда WebSocket [SCM connector](#scm-connector-flags) открыт; `0` во время набора номера или отступления. Отсутствует, когда `--scm-connector-host` не установлен. |209| `claude_code_self_hosted_orchestrator_scm_connector_connected` | `1`, когда WebSocket [коннектора SCM](#scm-connector-flags) открыт; `0` во время подключения или задержки перед повторной попыткой. Отсутствует, если `--scm-connector-host` не задан. |

190| `claude_code_self_hosted_orchestrator_scm_connector_requests_forwarded_total` | Кумулятивные HTTP запросы, проксированные на настроенный хост SCM с начала процесса. Отсутствует, когда `--scm-connector-host` не установлен. |210| `claude_code_self_hosted_orchestrator_scm_connector_requests_forwarded_total` | Накопительное число HTTP-запросов, проксированных на настроенный хост SCM с момента запуска процесса. Отсутствует, если `--scm-connector-host` не задан. |

191 211 

192Для автомасштабирования выберите серию, которая соответствует вашему стилю масштабирования, и ограничьте её перед подачей в масштабер:212Для автомасштабирования выберите серию, соответствующую вашему подходу к масштабированию, и отфильтруйте её, прежде чем передавать в механизм масштабирования:

193 213 

194* **Масштабирование глубины очереди**: подайте `claude_code_self_hosted_orchestrator_pool_pending_sessions` в ваш HPA или KEDA масштабер, а не `queue_pending_sessions`.214* **Масштабирование по глубине очереди**: передавайте в HPA или KEDA `claude_code_self_hosted_orchestrator_pool_pending_sessions`, а не `queue_pending_sessions`.

195* **Масштабирование емкости**: масштабируйте по соотношению `active_sessions` runner к `capacity`.215* **Масштабирование по ёмкости**: масштабируйте по отношению `active_sessions` runner к `capacity`.

196* **Ограничение на `connected`**: отфильтруйте запрос с помощью `claude_code_self_hosted_orchestrator_connected == 1` на экземпляр, поэтому устаревшее значение отключенной реплики не подается в масштабер.216* **Фильтрация по `connected`**: фильтруйте запрос условием `claude_code_self_hosted_orchestrator_connected == 1` для каждого экземпляра, чтобы устаревшее значение отключённой реплики не попадало в механизм масштабирования.

197 217 

198Во время полного отключения опроса каждая реплика отключена, гейтированный запрос не возвращает данные. HPA удерживает текущее количество реплик на отсутствующей метрике, но Prometheus масштабер KEDA при его значении по умолчанию `ignoreNullValues: "true"` читает пустой результат как ноль и масштабирует; установите `ignoreNullValues: "false"` на ScaledObject, опционально с полом реплики `fallback`.218Во время полного сбоя опроса, когда все реплики отключены, отфильтрованный запрос не возвращает данных. HPA сохраняет текущее число реплик при отсутствии метрики, однако Prometheus scaler в KEDA со значением по умолчанию `ignoreNullValues: "true"` интерпретирует пустой результат как ноль и уменьшает число реплик; задайте `ignoreNullValues: "false"` в ScaledObject, при необходимости вместе с минимальным числом реплик `fallback`.

199 219 

200Следующий Prometheus Operator `PodMonitor` охватывает оба процесса. Он выбирает pods по метке `app.kubernetes.io/part-of: claude-code-self-hosted-runner` и именованному порту `health`, который устанавливает [рецепт Kubernetes](/docs/ru/self-hosted-environments-deploy#kubernetes); отрегулируйте пространства имен в соответствии с вашим развертыванием:220Следующий `PodMonitor` для Prometheus Operator охватывает оба процесса. Он выбирает поды по метке `app.kubernetes.io/part-of: claude-code-self-hosted-runner` и именованному порту `health`, которые задаёт [рецепт для Kubernetes](/docs/ru/self-hosted-environments-deploy#kubernetes); скорректируйте пространства имён в соответствии с вашим развёртыванием:

201 221 

202```yaml theme={null}222```yaml theme={null}

203# Example Prometheus Operator PodMonitor for the Claude Code self-hosted223# Example Prometheus Operator PodMonitor for the Claude Code self-hosted


227 interval: 30s247 interval: 30s

228```248```

229 249 

230Эти примеры правил оповещения — это отправная точка; настройте пороги для размера вашего флота:250Эти примеры правил оповещений — отправная точка; настройте пороговые значения под размер вашего парка:

231 251 

232```yaml theme={null}252```yaml theme={null}

233# Example Prometheus alert rules for the Claude Code self-hosted runner253# Example Prometheus alert rules for the Claude Code self-hosted runner


285 for: 1m305 for: 1m

286 labels: {severity: critical}306 labels: {severity: critical}

287 annotations:307 annotations:

288 summary: "{{ $value }} sessions circuit-broken — spawn-runner hook is repeatedly non-retryable; fix infra then retry from the Activity tab"308 summary: "Sessions blocked from spawning: {{ $value }}. Read each one's error in the Activity tab, fix the cause, then select Retry"

289 - alert: ClaudeOrchestratorPollErrors309 - alert: ClaudeOrchestratorPollErrors

290 expr: sum by (pod) (rate(claude_code_self_hosted_orchestrator_poll_errors_total[5m])) > 0310 expr: sum by (pod) (rate(claude_code_self_hosted_orchestrator_poll_errors_total[5m])) > 0

291 for: 2m311 for: 2m


301```321```

302 322 

303<h3 id="pass-through-session-child-metrics">323<h3 id="pass-through-session-child-metrics">

304 Пропустить метрики дочернего процесса сеанса324 Проброс метрик дочерних процессов сессий

305</h3>325</h3>

306 326 

307Каждый сеанс работает в своем собственном дочернем процессе с собственными метриками OpenTelemetry; при `--capacity` выше одного runner переписывает, как эти метрики дочернего процесса выставляются. Установка `OTEL_METRICS_EXPORTER=prometheus` на хосте runner и `CLAUDE_CODE_ENABLE_TELEMETRY=1` в окружении сеанса, например из вашего [скрипта-обертки](/docs/ru/self-hosted-environments-configuration#wrapper-scripts) или собственного окружения runner, которое сеансы наследуют, переоткрывает счетчики и датчики каждого дочернего процесса на собственной конечной точке `/metrics` runner, наряду с сериями runner. Runner переписывает экспортер дочернего процесса для отправки по OTLP на приемник только для loopback на порту здоровья, помечает каждую серию метками `session_id` и `client_platform` и вытесняет серии сеанса при завершении этого сеанса. Гистограммы не проходят, и метрика дочернего процесса, чье имя будет конфликтовать с собственным префиксом runner, отпускается.327Каждая сессия выполняется в собственном дочернем процессе со своими метриками OpenTelemetry; при `--capacity` больше единицы runner изменяет способ публикации этих дочерних метрик. Если задать `OTEL_METRICS_EXPORTER=prometheus` на хосте runner и `CLAUDE_CODE_ENABLE_TELEMETRY=1` в окружении сессии, например из вашего [скрипта-обёртки](/docs/ru/self-hosted-environments-configuration#wrapper-scripts) или в собственном окружении runner, которое наследуют сессии, то инструменты типа counter и gauge каждого дочернего процесса будут повторно опубликованы на собственном эндпоинте `/metrics` runner рядом с сериями самого runner. Runner перенастраивает экспортёр дочернего процесса на отправку по OTLP в приёмник на порту health, доступный только через loopback, помечает каждую серию метками `session_id` и `client_platform` и удаляет серии сессии, когда эта сессия завершается. Гистограммы не пробрасываются, а дочерняя метрика, имя которой конфликтовало бы с собственным префиксом runner, отбрасывается.

308 328 

309При значении по умолчанию `--capacity 1` переписывание не применяется: дочерний процесс сеанса привязывает свою собственную конечную точку Prometheus на порту 9464 как обычно.329При значении по умолчанию `--capacity 1` эта перенастройка не применяется: дочерний процесс сессии, как обычно, открывает собственный эндпоинт Prometheus на порту 9464.

310 330 

311<h3 id="session-lifecycle-counter-semantics">331<h3 id="session-lifecycle-counter-semantics">

312 Семантика счетчика жизненного цикла сеанса332 Семантика счётчиков жизненного цикла сессий

313</h3>333</h3>

314 334 

315Счетчики `sessions_started_total`, `sessions_completed_total`, `sessions_failed_total` и `sessions_interrupted_total` классифицируют каждый сеанс по тому, как он завершился. Каждый порожденный дочерний процесс сеанса увеличивает `sessions_started_total` во время порождения, и ровно один из трех других увеличивается при выходе, поэтому `sessions_started_total` минус сумма трех других равна количеству дочерних процессов сеанса, в настоящее время работающих.335Счётчики `sessions_started_total`, `sessions_completed_total`, `sessions_failed_total` и `sessions_interrupted_total` классифицируют каждую сессию по тому, как она завершилась. Каждый запущенный дочерний процесс сессии увеличивает `sessions_started_total` в момент запуска, и ровно один из остальных трёх счётчиков увеличивается при выходе, поэтому `sessions_started_total` минус сумма остальных трёх равна числу дочерних процессов сессий, выполняющихся в данный момент.

316 336 

317* `completed`: сеанс завершился чисто. Это охватывает дочерний процесс, выходящий самостоятельно с кодом `0`, сеанс, архивируемый или удаляемый, пока дочерний процесс был все еще подключен, и runner, передающий слот чисто: отпуск сеанса при timeout простоя, времени выхода на пенсию или лимите `--kill-session-after-min`; startup timeout; или деассайн на стороне сервера, который цикл опроса заметил перед выходом дочернего процесса. Увеличивает `sessions_completed_total`.337* `completed`: сессия завершилась штатно. Сюда относятся: самостоятельный выход дочернего процесса с кодом `0`; архивация или удаление сессии, пока дочерний процесс ещё был подключён; штатное освобождение слота runner: освобождение сессии по таймауту простоя, по времени вывода из эксплуатации или по лимиту `--kill-session-after-min`; таймаут запуска; либо снятие назначения на стороне сервера, которое цикл опроса заметил до выхода дочернего процесса. Увеличивает `sessions_completed_total`.

318* `failed`: дочерний процесс выходит самостоятельно с ненулевым кодом, либо сбой, либо сбой настройки после порождения. Увеличивает `sessions_failed_total`.338* `failed`: дочерний процесс самостоятельно завершился с ненулевым кодом — из-за падения или сбоя настройки после запуска. Увеличивает `sessions_failed_total`.

319* `interrupted`: runner завершил дочерний процесс по операционной причине, которая не является ни успехом сеанса, ни ошибкой runner, такой как осушение или завершение сеанса, который все еще был на runner, когда окончилось окно благодати [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings) после его лимита `--kill-session-after-min`. Перезагрузка Kubernetes, отправляющая `SIGTERM`, является одним примером осушения. Увеличивает `sessions_interrupted_total`.339* `interrupted`: runner завершил дочерний процесс по эксплуатационной причине, которая не является ни успехом сессии, ни ошибкой runner, например при выводе из работы (drain) или при завершении сессии, которая всё ещё находилась на runner по истечении окна отсрочки [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings) после её лимита `--kill-session-after-min`. Поэтапный перезапуск в Kubernetes с отправкой `SIGTERM` — один из примеров вывода из работы. Увеличивает `sessions_interrupted_total`.

320 340 

321До v2.1.260 runner завершал каждый сеанс, который достигал своего лимита `--kill-session-after-min`, и подсчитывал его в `sessions_interrupted_total`.341До версии v2.1.260 runner завершал каждую сессию, достигшую лимита `--kill-session-after-min`, и учитывал её в `sessions_interrupted_total`.

322 342 

323Hook [`post-session`](/docs/ru/self-hosted-environments-configuration#post-session) классифицирует чистые передачи по-другому через `CLAUDE_RUNNER_EXIT_REASON`. Hook сообщает об отпуске, startup timeout и деассайне сервера как `interrupted`, потому что runner остановил дочерний процесс. Эти счетчики записывают те же события, что и `completed`, потому что слот был передан чисто.343Переменная `CLAUDE_RUNNER_EXIT_REASON` [хука `post-session`](/docs/ru/self-hosted-environments-configuration#post-session) классифицирует штатные передачи иначе. Хук сообщает о них как об `interrupted`, поскольку runner остановил дочерний процесс: это освобождение, таймаут запуска, снятие назначения сервером, а также архивация или удаление, которые первым заметил опрос. Эти счётчики записывают те же события как `completed`, поскольку слот был освобождён штатно.

324 344 

325Если вы согласовываете квитанции hook непосредственно с `sessions_completed_total`, вы недосчитываетесь завершений. Используйте hook для гарантий для каждого сеанса и счетчики для совокупных ставок.345Если сверять получение хуков непосредственно с `sessions_completed_total`, число завершений окажется заниженным. Используйте хук для гарантий на уровне отдельных сессий, а счётчики — для агрегированных показателей.

326 346 

327В одноразовой среде `--capacity 1` с значением по умолчанию `--drain-grace-sec 0` каждый процесс runner выходит через несколько мгновений после завершения его одного сеанса. `sessions_completed_total`, `sessions_failed_total` и `sessions_interrupted_total` увеличиваются только при завершении сеанса, прямо перед этим выходом, поэтому скребок Prometheus каждые 15-60 секунд редко ловит увеличение перед исчезновением серии runner; эти три счетчика конца сеанса — это терминальные счетчики, на которые ссылается остальная часть этого раздела. `sessions_started_total` увеличивается при порождении и остается видимым в течение жизни сеанса, поэтому он надежно показывается, но в одноразовой среде он читается ближе к "сеансам, в настоящее время работающим", чем к совокупному подсчету.347В одноразовом окружении, с `--capacity 1` и значением по умолчанию `--drain-grace-sec 0`, каждый процесс runner завершается через мгновение после окончания его единственной сессии. `sessions_completed_total`, `sessions_failed_total` и `sessions_interrupted_total` увеличиваются только в конце сессии, непосредственно перед этим выходом, поэтому сбор метрик Prometheus каждые 15–60 секунд редко успевает зафиксировать приращение до того, как серии runner исчезнут; именно эти три счётчика окончания сессии далее в этом разделе называются терминальными. `sessions_started_total` увеличивается при запуске и остаётся видимым на протяжении всей сессии, поэтому он надёжно появляется, однако в одноразовом окружении он скорее отражает «сессии, выполняющиеся в данный момент», чем накопительное значение.

328 348 

329Используйте серию в этой таблице для соответствующей цели вместо терминальных счетчиков:349Для соответствующей цели используйте серии из этой таблицы вместо терминальных счётчиков:

330 350 

331| Цель | Использование |351| Цель | Что использовать |

332| :- | :- |352| :- | :- |

333| Пропускная способность | `claude_code_self_hosted_orchestrator_spawn_hooks_total{result="ok"}`, счетчик на долгоживущем orchestrator, который увеличивается один раз на успешный hook `spawn-runner` и остается значимым под `rate()`. Он подсчитывает вызовы hook, а не сеансы, поэтому предварительное прогревание и повторные порождения для того же сеанса расходятся в нем от подсчетов сеансов. |353| Пропускная способность | `claude_code_self_hosted_orchestrator_spawn_hooks_total{result="ok"}` — счётчик на долгоживущем оркестраторе, который увеличивается один раз на каждое успешное выполнение хука `spawn-runner` и сохраняет смысл при использовании `rate()`. Он учитывает вызовы хука, а не сессии, поэтому предварительный прогрев и повторные запуски для одной и той же сессии приводят к расхождению с числом сессий. |

334| Использование | `sum(claude_code_self_hosted_runner_active_sessions)` против `sum(claude_code_self_hosted_runner_capacity)`, оба датчика действительны при каждом скребке независимо от времени жизни runner |354| Загрузка | `sum(claude_code_self_hosted_runner_active_sessions)` относительно `sum(claude_code_self_hosted_runner_capacity)`; обе метрики — gauge, корректные при каждом сборе независимо от времени жизни runner |

335| Невыполненные заказы | `claude_code_self_hosted_orchestrator_pool_pending_sessions` для глубины очереди и `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions`, оповещение, если выше нуля |355| Очередь | `claude_code_self_hosted_orchestrator_pool_pending_sessions` для глубины очереди и `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions` с оповещением, если значение выше нуля |

336| Сбои | `claude_code_self_hosted_runner_sessions_failed_total`, лучшее усилие: реальные сбои после порождения действительно увеличивают его, и `rate()` значим на runner, которые пережили свои сеансы с `--drain-grace-sec` выше `0`. Одноразовая среда имеет ту же проблему окна скребка, что и другие терминальные счетчики, поэтому рассматривайте любое ненулевое значение, которое вы видите, как стоящее исследования. Сбои перед порождением, такие как сбой hook checkout, подготовка git или проблема с токеном, появляются только в `session_init_errors_total`. |356| Сбои | `claude_code_self_hosted_runner_sessions_failed_total`, по мере возможности: реальные падения после запуска его увеличивают, а `rate()` имеет смысл на runner, которые переживают свои сессии при `--drain-grace-sec` больше `0`. В одноразовом окружении существует та же проблема окна сбора, что и у остальных терминальных счётчиков, поэтому любое ненулевое значение, которое вы всё же увидите, стоит расследовать. Сбои до запуска, например сбой хука checkout, подготовки git или выдачи токена, отражаются только в `session_init_errors_total`. |

337 357 

338Строки `orchestrator_*` существуют только в средах, работающих с [on-demand orchestrator](/docs/ru/self-hosted-environments-configuration#on-demand-runners). На фиксированном флоте, чьи runner пережили свои сеансы, с `--drain-grace-sec` выше `0`, используйте `sum(rate(claude_code_self_hosted_runner_sessions_started_total[5m]))` для пропускной способности; в одноразовом флоте эта серия имеет ту же проблему окна скребка, что и терминальные счетчики, поэтому полагайтесь на подсчет сеансов в очереди вместо этого. Проверьте невыполненные заказы на вкладке **Activity** среды, на [странице администратора **Cloud environments**](https://claude.ai/admin-settings/cloud-environments): runner не экспортируют серию глубины очереди.358Строки `orchestrator_*` существуют только в окружениях, использующих [оркестратор по требованию](/docs/ru/self-hosted-environments-configuration#on-demand-runners). В фиксированном парке, runner которого переживают свои сессии при `--drain-grace-sec` больше `0`, используйте `sum(rate(claude_code_self_hosted_runner_sessions_started_total[5m]))` для пропускной способности; в одноразовом парке у этой серии та же проблема окна сбора, что и у терминальных счётчиков, поэтому полагайтесь на число сессий в очереди. Проверяйте очередь на вкладке **Activity** окружения на [странице администрирования **Cloud environments**](https://claude.ai/admin-settings/cloud-environments): runner не экспортируют серию глубины очереди.

339 359 

340Для отчетности результатов для каждого сеанса используйте вместо этого [hook `post-session`](/docs/ru/self-hosted-environments-configuration#post-session): он срабатывает при каждом завершении сеанса, где был порожден дочерний процесс, кроме резкого завершения runner, такого как вытеснение VM, в соответствии с [собственным контрактом hook](/docs/ru/self-hosted-environments-configuration#post-session).360Для отчётности по итогам отдельных сессий используйте [хук `post-session`](/docs/ru/self-hosted-environments-configuration#post-session): он срабатывает при каждом завершении сессии, для которой был запущен дочерний процесс, за исключением внезапного завершения runner, например при вытеснении VM, в соответствии с [собственным контрактом хука](/docs/ru/self-hosted-environments-configuration#post-session).

341 361 

342<h2 id="what’s-next">362<h2 id="what’s-next">

343 Что дальше363 Что дальше

Details

87 87 

88Флаги dispatch `--environment` и `--ref` требуют Claude Code v2.1.224 или позже на машине, которая запускает скрипт, то же минимальное требование, что и для самого runner. С установленным hook и запущенным runner на этом хосте тестовый скрипт:88Флаги dispatch `--environment` и `--ref` требуют Claude Code v2.1.224 или позже на машине, которая запускает скрипт, то же минимальное требование, что и для самого runner. С установленным hook и запущенным runner на этом хосте тестовый скрипт:

89 89 

901. Создаёт сеанс в тестовом окружении с помощью `claude -p "<prompt>" --environment <environment-id> --output-format json`, запущенной из git-репозитория, чтобы CLI мог автоматически обнаружить репозиторий из удалённого `origin`. Опциональный флаг `--ref <branch>` основывает checkout сеанса на именованном ref вместо локального HEAD. Команда создаёт сеанс, выводит одну строку JSON, содержащую `session_id`, и выходит без ожидания ответа Claude.901. Создаёт сессию в тестовом окружении с помощью `claude -p "<prompt>" --environment <environment-id> --output-format json`. Запускайте команду из git-checkout, чтобы CLI мог автоматически определить репозиторий по удалённому `origin`. Опциональный флаг `--ref <branch>` основывает checkout сессии на именованном ref вместо локального HEAD. Команда завершается, не дожидаясь ответа Claude. То, что она выводит, сообщает вашему скрипту результат:

91 * **Сессия создана**: одна строка JSON, например `{"ok":true,"session_id":"session_...","title":"...","url":"...","pool_id":"..."}`

92 * **Не удалось создать сессию**: строка `{"ok":false,"error":"..."}`, и команда завершается с кодом 1

93 * **Некоторые более ранние ошибки**, например недоступность облачных сессий для вашей организации или отсутствующий промпт: ошибка выводится в stderr без строки JSON, и команда завершается с кодом 1

912. Ждёт, пока ответ появится в `$E2E_REPLY_DIR/<session_id>.txt`, записанный hook Stop на runner после завершения хода.942. Ждёт, пока ответ появится в `$E2E_REPLY_DIR/<session_id>.txt`, записанный hook Stop на runner после завершения хода.

923. Отправляет дополнительный вопрос с помощью `claude -p "<message>" --cloud <session_id> --output-format json` (см. [Отправка дополнительного сообщения в работающий сеанс](/docs/ru/claude-code-on-the-web#send-follow-ups-from-the-cli)), который отправляет событие пользователя в существующий сеанс и выходит.953. Отправляет дополнительный вопрос с помощью `claude -p "<message>" --cloud <session_id> --output-format json` (см. [Отправка дополнительного сообщения в работающий сеанс](/docs/ru/claude-code-on-the-web#send-follow-ups-from-the-cli)), который отправляет событие пользователя в существующий сеанс и выходит.

934. Ждёт ответа на дополнительный вопрос так же, как на шаге 2.964. Ждёт ответа на дополнительный вопрос так же, как на шаге 2.


104 Пример скрипта107 Пример скрипта

105</h2>108</h2>

106 109 

107Скрипт ниже запускает полный цикл против `$CLAUDE_TEST_ENVIRONMENT_ID`, ID `ccpool_...` вашего тестового окружения, показанный в диалоговом окне деталей окружения на странице администратора или возвращённый вызовом [create-environment](#create-a-dedicated-test-environment), и проверяет наличие фразы-маркера в каждом ответе. Запускайте его из git-клона репозитория, в котором должна работать сессия, после запуска runner на этом хосте с установленным хуком захвата и экспортированной переменной `E2E_REPLY_DIR`. Сначала войдите с учётной записью claude.ai на машине, на которой запускается скрипт, как описано в разделе [Аутентификация из CI](#authenticate-from-ci). Без этого входа первая отправка завершится ошибкой, например `Unable to get organization UUID for cloud session creation`.110Пример скрипта запускается на той же машине, что и тестовый runner. Перед запуском подготовьте эту машину:

111 

112* **Клон репозитория**: запускайте скрипт из git-клона репозитория, в котором должна работать сессия.

113* **Runner**: запустите runner на этом хосте с установленным хуком захвата и экспортированной переменной `E2E_REPLY_DIR`.

114* **Вход**: войдите с учётной записью claude.ai на машине, на которой запускается скрипт, как описано в разделе [Аутентификация из CI](#authenticate-from-ci).

115* **ID окружения**: задайте в `CLAUDE_TEST_ENVIRONMENT_ID` ID `ccpool_...` вашего тестового окружения, показанный в диалоговом окне деталей окружения на странице администратора или возвращённый [вызовом create-environment](#create-a-dedicated-test-environment).

116 

117Скрипт ниже запускает полный цикл против `$CLAUDE_TEST_ENVIRONMENT_ID` и проверяет наличие фразы-маркера в каждом ответе.

108 118 

109```bash theme={null}119```bash theme={null}

110#!/usr/bin/env bash120#!/usr/bin/env bash


152TURN1="e2e-probe-$(date +%s)-$$: say exactly 'ok: custom tools are reachable' and nothing else"162TURN1="e2e-probe-$(date +%s)-$$: say exactly 'ok: custom tools are reachable' and nothing else"

153EXPECT1="ok: custom tools are reachable"163EXPECT1="ok: custom tools are reachable"

154create_json=$(claude -p "$TURN1" --environment "$CLAUDE_TEST_ENVIRONMENT_ID" \164create_json=$(claude -p "$TURN1" --environment "$CLAUDE_TEST_ENVIRONMENT_ID" \

155 --ref "$TEST_REPO_REF" --output-format json)165 --ref "$TEST_REPO_REF" --output-format json < /dev/null)

156echo "create: $create_json"166echo "create: $create_json"

157SESSION_ID=$(jq -er '.session_id' <<<"$create_json")167SESSION_ID=$(jq -er '.session_id' <<<"$create_json")

158 168 


163# 3. Post a follow-up via the CLI.173# 3. Post a follow-up via the CLI.

164TURN2="e2e-probe-followup-$(date +%s): say exactly 'ok: follow-up delivered' and nothing else"174TURN2="e2e-probe-followup-$(date +%s): say exactly 'ok: follow-up delivered' and nothing else"

165EXPECT2="ok: follow-up delivered"175EXPECT2="ok: follow-up delivered"

166followup_json=$(claude -p "$TURN2" --cloud "$SESSION_ID" --output-format json)176followup_json=$(claude -p "$TURN2" --cloud "$SESSION_ID" --output-format json < /dev/null)

167echo "followup: $followup_json"177echo "followup: $followup_json"

168jq -e '.ok == true' <<<"$followup_json" >/dev/null178jq -e '.ok == true' <<<"$followup_json" >/dev/null

169 179 

sessions.md +43 −41

Details

6 6 

7> Назовите, возобновите, создавайте ветви и переключайтесь между диалогами Claude Code. Охватывает `--continue`, `--resume`, `--from-pr`, средство выбора `/resume`, именование сеансов, экспорт стенограмм и место хранения стенограмм.7> Назовите, возобновите, создавайте ветви и переключайтесь между диалогами Claude Code. Охватывает `--continue`, `--resume`, `--from-pr`, средство выбора `/resume`, именование сеансов, экспорт стенограмм и место хранения стенограмм.

8 8 

9Сеанс — это сохранённый диалог, привязанный к каталогу проекта. Claude Code сохраняет его локально по мере работы, поэтому вы можете возобновить работу с того же места, создать ветвь для попытки другого подхода или переключаться между задачами.9[Сессия](/docs/ru/glossary#session) — это сохранённый диалог, привязанный к каталогу проекта. Claude Code сохраняет его локально по мере работы, поэтому вы можете возобновить работу с того же места, создать ветку для попытки другого подхода или переключаться между задачами.

10 10 

11[Настольное приложение](/docs/ru/desktop#work-in-parallel-with-sessions), [Claude Code в веб-версии](/docs/ru/claude-code-on-the-web) и [расширение VS Code](/docs/ru/vs-code#resume-past-conversations) каждое ведёт собственную историю сеансов, а настольное приложение также может [возобновить сеанс CLI](/docs/ru/desktop#coming-from-the-cli). На этой странице рассматривается CLI.11[Настольное приложение](/docs/ru/desktop#work-in-parallel-with-sessions), [Claude Code в веб-версии](/docs/ru/claude-code-on-the-web) и [расширение VS Code](/docs/ru/vs-code#resume-past-conversations) каждое ведёт собственную историю сеансов, а настольное приложение также может [возобновить сеанс CLI](/docs/ru/desktop#coming-from-the-cli). На этой странице рассматривается CLI.

12 12 


18 18 

19| Команда | Что она делает |19| Команда | Что она делает |

20| :- | :- |20| :- | :- |

21| `claude --continue` | Повторно открывает самый последний диалог в текущем каталоге |21| `claude --continue` | Повторно открывает самую последнюю сессию в текущем каталоге |

22| `claude --resume` | Открывает [средство выбора сессий](#use-the-session-picker) |22| `claude --resume` | Открывает [средство выбора сессий](#use-the-session-picker) |

23| `claude --resume <name>` | Возобновляет именованную сессию напрямую |23| `claude --resume <name>` | Возобновляет именованную сессию напрямую |

24| `claude --resume <transcript-path>` | Возобновляет диалог, сохранённый в файле [транскрипта](#where-transcripts-are-stored) `.jsonl` по этому абсолютному пути |24| `claude --resume <transcript-path>` | Возобновляет сессию, сохранённую в файле [транскрипта](#where-transcripts-are-stored) `.jsonl` по этому абсолютному пути |

25| `claude --from-pr <number>` | Открывает средство выбора сессий, отфильтрованное по сессиям, связанным с этим pull request |25| `claude --from-pr <number>` | Открывает средство выбора сессий, отфильтрованное по сессиям, связанным с этим pull request |

26| `/resume` | Переключается на другой диалог из активной сессии |26| `/resume` | Переключается на другую сессию из активной сессии |

27 

28Claude Code исключает сессии, созданные с помощью [`claude -p`](/docs/ru/headless) или [Agent SDK](/docs/ru/agent-sdk/overview), из средства выбора сессий и из `claude --continue`. Вы всё равно можете возобновить такую сессию, передав её ID в `claude --resume <session-id>`. При использовании `claude --continue` Claude Code также пропускает [сессии, первым промптом которых был `/loop`](#where-the-session-picker-looks). Когда вы запускаете [`claude -p --continue`](/docs/ru/headless#continue-conversations), Claude Code учитывает сессии `-p`, SDK и `/loop`.

29 

30Вы можете запустить `claude --resume <session-id>` из любого каталога, поэтому можно возобновить сессию, которая началась в другом месте или была перемещена с помощью [`/cd`](/docs/ru/commands). Claude Code ищет ID в следующем порядке:

31 

321. Каталог текущего проекта и его git worktrees

332. Все остальные проекты на этой машине

34 

35Поиск по проектам находит ID только тогда, когда ровно один другой проект содержит транскрипт с сообщениями для него, поэтому вручную скопированный дубликат приводит к тому, что Claude Code сообщает об отсутствии сессии, а не возобновляет произвольную копию. Если ни одна сохранённая сессия не соответствует ID, Claude Code сообщает `No conversation found with session ID: <session-id>`.

36 

37До версии 2.1.223 поиск ограничивался каталогом текущего проекта и его git worktrees, поэтому возобновлять сессию приходилось из каталога, в котором она работала в последний раз.

38 

39`claude --continue` открывает [фоновую сессию](/docs/ru/agent-view), которая завершилась, но не ту, которая всё ещё выполняется; для открытия завершённых фоновых сессий требуется Claude Code v2.1.257 или более поздней версии. Если ваш самый последний диалог — это тот, который вы [переместили в фон](/docs/ru/agent-view#send-the-session-to-the-background), и он всё ещё там выполняется, Claude Code завершается с сообщением `Your most recent conversation is running in the background` и ID этой сессии. Подключитесь к сессии из [`claude agents`](/docs/ru/agent-view#attach-to-a-session) или запустите `claude --resume`, чтобы выбрать другую.

40 27 

41<h3 id="resume-a-running-background-session">28<h3 id="resume-a-running-background-session">

42 Возобновление выполняющейся фоновой сессии29 Возобновление выполняющейся фоновой сессии


64 51 

65Когда Claude Code загружает диалог из его транскрипта, возобновлённая сессия восстанавливает диалог вместе с сохранённым в нём состоянием:52Когда Claude Code загружает диалог из его транскрипта, возобновлённая сессия восстанавливает диалог вместе с сохранённым в нём состоянием:

66 53 

67* История диалога: полная история, включая вызовы инструментов и их результаты. Инструмент, который всё ещё выполнялся, когда предыдущий процесс завершился, например при сбое, не завершается и не запускается снова при возобновлении. Claude видит вызов, помеченный как прерванный до записи его результата, и получает указание проверить, сработал ли он, прежде чем запускать его снова, если только не установлена переменная [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/ru/env-vars#variables). До версии 2.1.281 Claude Code либо удалял прерванный вызов из диалога, либо показывал его Claude как вызов, который вы прервали.54* История диалога: полная история, включая вызовы инструментов и их результаты. Инструмент, который всё ещё выполнялся, когда предыдущий процесс завершился, например при сбое, не завершается и не запускается снова при возобновлении. Claude видит вызов, помеченный как прерванный до записи его результата, и получает указание проверить, сработал ли он, прежде чем запускать его снова, если только не установлена переменная [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/ru/env-vars#variables).

68* Модель: сессия продолжается на модели, которую она использовала, за исключением случаев, описанных в разделе [Выбор модели](/docs/ru/model-config#setting-your-model).55* Модель: сессия продолжается на модели, которую она использовала, за исключением случаев, описанных в разделе [Выбор модели](/docs/ru/model-config#setting-your-model).

69* Агент: сессия, запущенная с помощью [`--agent`](/docs/ru/sub-agents#invoke-subagents-explicitly) или настройки `agent`, продолжается как этот агент, сохраняя его ограничения инструментов и модель. Передайте `--agent` при возобновлении, чтобы выбрать другого агента; о системном промпте в обоих случаях см. [Флаги системного промпта в возобновлённых диалогах](/docs/ru/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code ищет агента в двух местах: в исходном каталоге сессии, при условии что вы [доверяете этому рабочему пространству](/docs/ru/permissions#project-allow-rules-and-workspace-trust), а затем в каталоге, из которого вы возобновляете сессию, поэтому агент уровня проекта загружается и при возобновлении из другого каталога. Если Claude Code не находит агента ни в одном из этих мест, сессия возобновляется с инструментами по умолчанию и показывает [предупреждение с именем агента](/docs/ru/errors#session-agent-no-longer-available).56* Агент: сессия, запущенная с помощью [`--agent`](/docs/ru/sub-agents#invoke-subagents-explicitly) или настройки `agent`, продолжается как этот агент, сохраняя его ограничения инструментов и модель. Передайте `--agent` при возобновлении, чтобы выбрать другого агента; о системном промпте в обоих случаях см. [Флаги системного промпта в возобновлённых диалогах](/docs/ru/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code ищет агента в двух местах: в исходном каталоге сессии, при условии что вы [доверяете этому рабочему пространству](/docs/ru/permissions#project-allow-rules-and-workspace-trust), а затем в каталоге, из которого вы возобновляете сессию, поэтому агент уровня проекта загружается и при возобновлении из другого каталога. Если Claude Code не находит агента ни в одном из этих мест, сессия возобновляется с инструментами по умолчанию и показывает [предупреждение с именем агента](/docs/ru/errors#session-agent-no-longer-available).

70* Режим разрешений: если вы возобновляете сессию из терминала с помощью `claude --continue`, `claude --resume <session-id>` или `claude --resume <name>`, когда имя соответствует одной сессии, без `-p`, Claude Code восстанавливает режим разрешений, в котором находилась сессия, за исключением случаев, описанных в разделе [режим разрешений при возобновлении](#permission-mode-on-resume), который также охватывает средство выбора сессий, `/resume` и возобновление с помощью `claude -p`. Передайте `--permission-mode` или `--dangerously-skip-permissions`, чтобы переопределить восстановленный режим.57* Режим разрешений: если вы возобновляете сессию из терминала с помощью `claude --continue`, `claude --resume <session-id>` или `claude --resume <name>`, когда имя соответствует одной сессии, без `-p`, Claude Code восстанавливает режим разрешений, в котором находилась сессия, за исключением случаев, описанных в разделе [режим разрешений при возобновлении](#permission-mode-on-resume), который также охватывает средство выбора сессий, `/resume` и возобновление с помощью `claude -p`. Передайте `--permission-mode` или `--dangerously-skip-permissions`, чтобы переопределить восстановленный режим.


83* Терминал: `claude --continue`, `claude --resume <session-id>` или `claude --resume <name>`, когда имя соответствует одной сессии, без `-p`. Claude Code восстанавливает режим разрешений, в котором находилась сессия, за исключением случаев, указанных в таблице. Передайте `--permission-mode` или `--dangerously-skip-permissions`, чтобы переопределить восстановленный режим.70* Терминал: `claude --continue`, `claude --resume <session-id>` или `claude --resume <name>`, когда имя соответствует одной сессии, без `-p`. Claude Code восстанавливает режим разрешений, в котором находилась сессия, за исключением случаев, указанных в таблице. Передайте `--permission-mode` или `--dangerously-skip-permissions`, чтобы переопределить восстановленный режим.

84* Неинтерактивный: `claude -p --resume` или `claude -p --continue`. Claude Code запускает выполнение в том режиме разрешений, в котором запустился бы новый запуск `claude -p`, за исключением того, что сессия, завершившаяся в режиме планирования, возобновляется в режиме планирования при [условиях ниже](#resume-in-plan-mode-with-p).71* Неинтерактивный: `claude -p --resume` или `claude -p --continue`. Claude Code запускает выполнение в том режиме разрешений, в котором запустился бы новый запуск `claude -p`, за исключением того, что сессия, завершившаяся в режиме планирования, возобновляется в режиме планирования при [условиях ниже](#resume-in-plan-mode-with-p).

85* VS Code: панель диалога расширения. Таблица охватывает только диалог, завершившийся в режиме планирования; об остальных случаях см. [возобновление прошлых диалогов](/docs/ru/vs-code#resume-past-conversations).72* VS Code: панель диалога расширения. Таблица охватывает только диалог, завершившийся в режиме планирования; об остальных случаях см. [возобновление прошлых диалогов](/docs/ru/vs-code#resume-past-conversations).

86* Средство выбора сессий при запуске: сессия, которую вы выбираете в [средстве выбора сессий](#use-the-session-picker), независимо от того, открыли ли вы его с помощью одного `claude --resume`, `claude --from-pr` или имени, соответствующего нескольким сессиям. Claude Code запускает сессию в том режиме разрешений, в котором запустил бы новую сессию из той же командной строки, за исключением того, что сессия, завершившаяся в режиме планирования, возобновляется в режиме планирования, если вы не передали `--permission-mode`, `--dangerously-skip-permissions` или `--fork-session`. Никакой другой сохранённый режим разрешений не восстанавливается.73* Средство выбора сессий при запуске: сессия, которую вы выбираете в [средстве выбора сессий](#use-the-session-picker), независимо от того, открыли ли вы его с помощью одного `claude --resume`, `claude --from-pr` или имени, соответствующего нескольким сессиям. Claude Code запускает сессию в том режиме разрешений, в котором запустил бы новую сессию из той же командной строки, за исключением того, что сессия, завершившаяся в режиме планирования, возобновляется в режиме планирования. Если вы передаёте `--permission-mode`, `--dangerously-skip-permissions` или `--fork-session`, Claude Code не восстанавливает режим планирования. Никакой другой сохранённый режим разрешений не восстанавливается.

87* `/resume` внутри сессии, с аргументом или без: диалог, на который вы переключаетесь, продолжается в режиме разрешений вашей текущей сессии, за исключением того, что диалог, завершившийся в режиме планирования, возобновляется в режиме планирования, даже если вы запустили Claude Code с `--permission-mode` или `--dangerously-skip-permissions`. Если этот диалог уже открывался ранее в текущем запуске Claude Code, например диалог, с которого вы начали, или диалог, который вы покинули с помощью `/clear` или `/resume`, он вместо этого продолжается в вашем текущем режиме разрешений.74* `/resume` внутри сессии, с аргументом или без: диалог, на который вы переключаетесь, продолжается в режиме разрешений вашей текущей сессии, за исключением того, что диалог, завершившийся в режиме планирования, возобновляется в режиме планирования, даже если вы запустили Claude Code с `--permission-mode` или `--dangerously-skip-permissions`. Если этот диалог уже открывался ранее в текущем запуске Claude Code, например диалог, с которого вы начали, или диалог, который вы покинули с помощью `/clear` или `/resume`, он вместо этого продолжается в вашем текущем режиме разрешений.

88 75 

76Если [правило запрета](/docs/ru/permissions#manage-permissions) удаляет инструмент [`ExitPlanMode`](/docs/ru/tools-reference), Claude не может представить план на утверждение, поэтому Claude Code не восстанавливает режим планирования. Сессия запускается в том режиме разрешений, в котором запустилась бы новая сессия из той же командной строки. При использовании `/resume` диалог продолжается в вашем текущем режиме разрешений.

77 

89Для восстановления режима планирования в неинтерактивном пути и в VS Code требуется Claude Code v2.1.246 или более поздней версии. В каждой строке указаны режим разрешений, в котором завершилась сессия, путь возобновления (терминал, неинтерактивный или VS Code) и режим разрешений, в котором Claude Code запускает возобновлённую сессию.78Для восстановления режима планирования в неинтерактивном пути и в VS Code требуется Claude Code v2.1.246 или более поздней версии. В каждой строке указаны режим разрешений, в котором завершилась сессия, путь возобновления (терминал, неинтерактивный или VS Code) и режим разрешений, в котором Claude Code запускает возобновлённую сессию.

90 79 

91| Сессия завершилась в | Как вы возобновляете | Режим разрешений после возобновления |80| Сессия завершилась в | Как вы возобновляете | Режим разрешений после возобновления |

92| :- | :- | :- |81| :- | :- | :- |

93| `bypassPermissions` | Терминал | Режим разрешений, в котором запустилась бы новая сессия. Чтобы снова [обходить разрешения](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode), включите этот режим при запуске с помощью одного из его флагов запуска или `permissions.defaultMode: "bypassPermissions"` в [пользовательских настройках, `--settings` или управляемых настройках](/docs/ru/settings-reference#permissions-defaultmode) |82| `bypassPermissions` | Терминал | Режим разрешений, в котором запустилась бы новая сессия. Чтобы снова [обходить разрешения](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode), включите этот режим при запуске с помощью одного из его флагов запуска или `permissions.defaultMode: "bypassPermissions"` в [пользовательских настройках, `--settings` или управляемых настройках](/docs/ru/settings-reference#permissions-defaultmode) |

94| `plan` | Терминал | Режим планирования. С `--fork-session` — режим разрешений, в котором запустилась бы новая сессия |83| `plan` | Терминал | Режим планирования. С `--fork-session` — режим разрешений, в котором запустилась бы новая сессия |

84| `plan` | Терминал, когда правило запрета удаляет `ExitPlanMode` | Режим разрешений, в котором запустилась бы новая сессия |

95| `auto` | Терминал | `auto`, только если ваша учётная запись всё ещё соответствует [требованиям авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) |85| `auto` | Терминал | `auto`, только если ваша учётная запись всё ещё соответствует [требованиям авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) |

96| Manual | Терминал | Manual, если новая сессия запустилась бы в авторежиме согласно [встроенному значению по умолчанию](/docs/ru/permission-modes#which-mode-a-session-starts-in). Когда [вступает в силу](/docs/ru/permission-modes#which-mode-a-session-starts-in) `defaultMode` из файла настроек, Claude Code вместо этого запускает возобновлённую сессию в этом режиме |86| Manual | Терминал | Manual, если новая сессия запустилась бы в авторежиме согласно [встроенному значению по умолчанию](/docs/ru/permission-modes#which-mode-a-session-starts-in). Когда [вступает в силу](/docs/ru/permission-modes#which-mode-a-session-starts-in) `defaultMode` из файла настроек, Claude Code вместо этого запускает возобновлённую сессию в этом режиме |

97| `plan` | Неинтерактивный, при [условиях ниже](#resume-in-plan-mode-with-p) | Режим планирования |87| `plan` | Неинтерактивный, при [условиях ниже](#resume-in-plan-mode-with-p) | Режим планирования |


110* Вы не передаёте `--permission-mode` или `--dangerously-skip-permissions`100* Вы не передаёте `--permission-mode` или `--dangerously-skip-permissions`

111* Вы не передаёте `--fork-session`101* Вы не передаёте `--fork-session`

112* Запуск выполняется не через [каналы](/docs/ru/channels)102* Запуск выполняется не через [каналы](/docs/ru/channels)

103* Ни одно [правило запрета](/docs/ru/permissions#manage-permissions) не удаляет инструмент `ExitPlanMode`

113 104 

114<h3 id="resume-from-a-summary">105<h3 id="resume-from-a-summary">

115 Возобновление из сводки106 Возобновление из сводки


117 108 

118На плане Pro или Max, когда вы возобновляете сессию, которая была неактивна примерно более часа и превышает 100 000 токенов, Claude Code восстанавливает диалог и затем открывает диалоговое окно до отправки вашего первого сообщения. К этому моменту [кэш промптов](/docs/ru/prompt-caching#cache-lifetime) сессии уже истёк, поэтому следующий запрос один раз обрабатывает полную историю независимо от того, какой вариант в диалоговом окне вы выберете.109На плане Pro или Max, когда вы возобновляете сессию, которая была неактивна примерно более часа и превышает 100 000 токенов, Claude Code восстанавливает диалог и затем открывает диалоговое окно до отправки вашего первого сообщения. К этому моменту [кэш промптов](/docs/ru/prompt-caching#cache-lifetime) сессии уже истёк, поэтому следующий запрос один раз обрабатывает полную историю независимо от того, какой вариант в диалоговом окне вы выберете.

119 110 

120Диалоговое окно предлагает три способа продолжить сессию. Они различаются тем, какую часть диалога каждый из них переносит в последующие запросы, что представляет собой компромисс между сохранением всех деталей и отправкой меньшего количества токенов за запрос:111Диалоговое окно предлагает три способа продолжить сессию:

121 112 

122* **Resume from summary**: немедленно запускает [`/compact`](/docs/ru/context-window#what-survives-compaction). Claude Code отправляет один запрос на суммирование по полной истории, затем заменяет историю сводкой, вашими самыми последними обменами сообщениями и не более чем пятью недавно прочитанными файлами. Последующие запросы содержат сводку вместо полной истории.113* **Resume from summary**: немедленно запускает [`/compact`](/docs/ru/context-window#what-survives-compaction). Последующие запросы содержат сводку вместо полной истории.

123* **Resume full session as-is**: загружает диалог без изменений. После отправки первого сообщения Claude Code повторно обрабатывает и повторно кэширует полную историю, а затем при последующих запросах считывает её из кэша, пока кэш остаётся активным.114* **Resume full session as-is**: загружает диалог без изменений.

124* **Don't ask me again**: возобновляет полную сессию и больше не показывает это диалоговое окно при будущих возобновлениях.115* **Don't ask me again**: возобновляет полную сессию и больше не показывает это диалоговое окно при будущих возобновлениях.

125 116 

126Возобновление как есть сохраняет доступными все детали диалога, но стоимость каждого запроса растёт с размером диалога. Возобновление из сводки обходится дешевле при каждом последующем запросе, поскольку передаётся сводка вместо полной истории, однако всё, что не вошло в сводку, больше не находится в контексте Claude. О том, откуда берётся эта стоимость за запрос, см. [почему использование растёт в длинной сессии](/docs/ru/costs#why-usage-climbs-in-a-long-session).117Возобновление как есть сохраняет доступными все детали диалога, но стоимость каждого запроса растёт с размером диалога. Возобновление из сводки обходится дешевле при каждом последующем запросе, поскольку передаётся сводка вместо полной истории, однако всё, что не вошло в сводку, больше не находится в контексте Claude. О том, откуда берётся эта стоимость за запрос, см. [почему использование растёт в длинной сессии](/docs/ru/costs#why-usage-climbs-in-a-long-session).


136 127 

137Используйте `Ctrl+W`, чтобы расширить список на все worktrees репозитория, или `Ctrl+A`, чтобы расширить его на все проекты на этой машине.128Используйте `Ctrl+W`, чтобы расширить список на все worktrees репозитория, или `Ctrl+A`, чтобы расширить его на все проекты на этой машине.

138 129 

139Сессии, первым промптом которых была команда [`/loop`](/docs/ru/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop), не отображаются в средстве выбора, и `claude --continue` также их пропускает. Запуск `/loop` позже в диалоге не скрывает сессию. До версии 2.1.211 запуск `/loop` в начале диалога навсегда скрывал сессию из средства выбора.130<h4 id="/loop-p-agent-sdk-and-background-sessions">

131 `/loop`, `-p`, Agent SDK и фоновые сессии

132</h4>

133 

134Сессии, первым промптом которых была команда [`/loop`](/docs/ru/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop), не отображаются в средстве выбора, и `claude --continue` также их пропускает. Запуск `/loop` позже в диалоге не скрывает сессию.

135 

136Claude Code исключает сессии, созданные с помощью [`claude -p`](/docs/ru/headless) или [Agent SDK](/docs/ru/agent-sdk/overview), из средства выбора сессий и из `claude --continue`. Вы всё равно можете возобновить такую сессию, передав её ID в `claude --resume <session-id>`. Когда вы запускаете [`claude -p --continue`](/docs/ru/headless#continue-conversations), Claude Code учитывает сессии `-p`, SDK и `/loop`.

140 137 

141Перемещение сессии с помощью [`/cd`](/docs/ru/commands) переносит её в хранилище проекта нового каталога, поэтому впоследствии она появляется в средстве выбора этого каталога. Начиная с версии 2.1.196, перемещённая сессия не отображается в средстве выбора старого каталога даже после сбоя или принудительного выхода. В более ранних версиях она также могла снова появиться в списке старого каталога после некорректного выхода, если старый путь содержал специальные символы, например подчёркивания.138`claude --continue` открывает [фоновую сессию](/docs/ru/agent-view), которая завершилась, но не ту, которая всё ещё выполняется; для открытия завершённых фоновых сессий требуется Claude Code v2.1.257 или более поздней версии. Если ваш самый последний диалог — это тот, который вы [переместили в фон](/docs/ru/agent-view#send-the-session-to-the-background), и он всё ещё там выполняется, Claude Code завершается с сообщением `Your most recent conversation is running in the background` и ID этой сессии. Подключитесь к сессии из [`claude agents`](/docs/ru/agent-view#attach-to-a-session) или запустите `claude --resume`, чтобы выбрать другую.

139 

140<h4 id="sessions-in-other-worktrees-and-projects">

141 Сессии в других worktrees и проектах

142</h4>

142 143 

143Когда вы выбираете сессию из другого worktree того же репозитория, Claude Code возобновляет её на месте; если собственный worktree сессии больше не существует, Claude Code [возобновляет её в вашем текущем каталоге](/docs/ru/worktrees#resume-a-worktree-session). Когда вы выбираете сессию из несвязанного проекта, Claude Code вместо этого копирует в буфер обмена команду `cd` и команду возобновления. Если каталог этого проекта больше не существует, Claude Code возобновляет сессию в вашем текущем каталоге, а не копирует команду `cd`, которая завершилась бы ошибкой.144Когда вы выбираете сессию из другого worktree того же репозитория, Claude Code возобновляет её на месте; если собственный worktree сессии больше не существует, Claude Code [возобновляет её в вашем текущем каталоге](/docs/ru/worktrees#resume-a-worktree-session). Когда вы выбираете сессию из несвязанного проекта, Claude Code вместо этого копирует в буфер обмена команду `cd` и команду возобновления. Если каталог этого проекта больше не существует, Claude Code возобновляет сессию в вашем текущем каталоге, а не копирует команду `cd`, которая завершилась бы ошибкой.

144 145 

146Перемещение сессии с помощью [`/cd`](/docs/ru/commands) переносит её в хранилище проекта нового каталога, поэтому впоследствии она появляется в средстве выбора этого каталога.

147 

148<h4 id="resume-by-session-id-or-name">

149 Возобновление по ID сессии или имени

150</h4>

151 

152Вы можете запустить `claude --resume <session-id>` из любого каталога, поэтому можно возобновить сессию, которая началась в другом месте или была перемещена с помощью [`/cd`](/docs/ru/commands). Claude Code ищет ID в следующем порядке:

153 

1541. Каталог текущего проекта и его git worktrees

1552. Все остальные проекты на этой машине

156 

157Поиск по проектам находит ID только тогда, когда ровно один другой проект содержит транскрипт с сообщениями для него, поэтому вручную скопированный дубликат приводит к тому, что Claude Code сообщает об отсутствии сессии, а не возобновляет произвольную копию. Если ни одна сохранённая сессия не соответствует ID, Claude Code сообщает `No conversation found with session ID: <session-id>`.

158 

145Возобновление по имени выполняет поиск в текущем репозитории и его worktrees. Обе формы ищут точное совпадение и возобновляют сессию напрямую, даже если она находится в другом worktree:159Возобновление по имени выполняет поиск в текущем репозитории и его worktrees. Обе формы ищут точное совпадение и возобновляют сессию напрямую, даже если она находится в другом worktree:

146 160 

147| Команда | Точное совпадение | Неоднозначное имя |161| Команда | Точное совпадение | Неоднозначное имя |


166 180 

167После того как вы назовете сессию через маршрут CLI или из claude.ai, вернитесь к ней с помощью `claude --resume <name>` или `/resume <name>`; сессия приложения для рабочего стола возобновляется в [приложении для рабочего стола](/docs/ru/desktop#work-in-parallel-with-sessions). Смотрите [Возобновить сессию](#resume-a-session), чтобы узнать, как разрешение имен работает в worktrees.181После того как вы назовете сессию через маршрут CLI или из claude.ai, вернитесь к ней с помощью `claude --resume <name>` или `/resume <name>`; сессия приложения для рабочего стола возобновляется в [приложении для рабочего стола](/docs/ru/desktop#work-in-parallel-with-sessions). Смотрите [Возобновить сессию](#resume-a-session), чтобы узнать, как разрешение имен работает в worktrees.

168 182 

169Когда вы запускаете или возобновляете интерактивную сессию с именем, которое уже использует другая активная сессия на этой машине, или переименовываете сессию в такое имя, Claude Code оставляет имя с сессией, которая его уже имеет, переименовывает вашу в вариант с двусловным суффиксом, например `auth-refactor-graceful-unicorn`, и сообщает вам об этом. Запустите `/rename` с новым именем, если вы предпочитаете выбрать его сами. До версии v2.1.232 обе сессии сохраняли имя.

170 

171В трех случаях Claude Code не переименовывает дубликат, поэтому вы все еще можете видеть две сессии с одинаковым именем в списках:

172 

173* Он не проверяет сгенерированные AI названия или имена отображения по умолчанию.

174* Он не проверяет `--name` [фоновой](/docs/ru/agent-view#from-your-shell) или `-p` сессии при запуске.

175* Он не может переименовать сессию в более ранней версии Claude Code.

176 

177Сессии, которые вы не назвали, все еще получают два ярлыка, которые назначает Claude Code. Только сгенерированное название работает как дескриптор возобновления:183Сессии, которые вы не назвали, все еще получают два ярлыка, которые назначает Claude Code. Только сгенерированное название работает как дескриптор возобновления:

178 184 

179* Имя отображения по умолчанию: интерактивные сессии, которые вы никогда не назвали, все еще получают имя отображения по умолчанию при запуске. Требуется Claude Code v2.1.196 или позже. Значение по умолчанию объединяет имя рабочего каталога с двухсимвольным суффиксом, например `my-app-3f`, и идентифицирует сессию в списках запущенных сессий, таких как [представление агента](/docs/ru/agent-view) и вывод `claude agents --json`. Значение по умолчанию не является дескриптором возобновления. Если вы передадите его в `claude --resume` или `/resume`, Claude Code не найдет сессию. Именование сессии заменяет значение по умолчанию в этих списках, как и принятие плана.185* Имя отображения по умолчанию: интерактивные сессии, которые вы никогда не назвали, все еще получают имя отображения по умолчанию при запуске. Требуется Claude Code v2.1.196 или позже. Значение по умолчанию объединяет имя рабочего каталога с двухсимвольным суффиксом, например `my-app-3f`, и идентифицирует сессию в списках запущенных сессий, таких как [представление агента](/docs/ru/agent-view) и вывод `claude agents --json`. Значение по умолчанию не является дескриптором возобновления. Если вы передадите его в `claude --resume` или `/resume`, Claude Code не найдет сессию.

180* Сгенерированное название: если вы не назовете сессию, Claude Code генерирует для неё название сессии. Название — это краткое резюме вашей первой подсказки, написанное фоновым запросом к небольшой/быстрой модели, обычно модели класса Haiku. Запуск `claude -p`, который вы запускаете непосредственно из оболочки или скрипта, не получает его.186* Сгенерированное название: если вы не назовете сессию, Claude Code генерирует для неё название сессии. Название — это краткое резюме вашей первой подсказки, написанное фоновым запросом к небольшой/быстрой модели, обычно модели класса Haiku. Запуск `claude -p`, который вы запускаете непосредственно из оболочки или скрипта, не получает его.

181 187 

182 Принятие плана заменяет название первой подсказки на название на основе плана. Именование сессии также его заменяет.188 Принятие плана заменяет сгенерированное название на название на основе плана. Вы можете передать любое из названий в `claude --resume` или `/resume`, и Claude Code разрешит его так же, как имя, которое вы установили.

183 

184 Вы видите название первой подсказки в [средстве выбора сессий](#use-the-session-picker) и в поле [`session_name`](/docs/ru/statusline) строки состояния, когда имя не установлено. Название плана отображается в тех же двух местах, а также в списках запущенных сессий, где оно занимает место имени отображения по умолчанию.

185 

186 Вы можете передать любое название в `claude --resume` или `/resume`, и Claude Code разрешит его так же, как имя, которое вы установили.

187 189 

188<h2 id="use-the-session-picker">190<h2 id="use-the-session-picker">

189 Использование средства выбора сеансов191 Использование средства выбора сеансов


205| `Ctrl+B` | Фильтр к сеансам из текущей ветви git. Нажмите снова, чтобы показать все ветви |207| `Ctrl+B` | Фильтр к сеансам из текущей ветви git. Нажмите снова, чтобы показать все ветви |

206| `Esc` | Выход из средства выбора сеансов или режима поиска |208| `Esc` | Выход из средства выбора сеансов или режима поиска |

207 209 

208Каждая строка показывает имя сеанса, если оно установлено, в противном случае автоматически сгенерированное название сеанса, сводку диалога или первую подсказку, а также время с момента последней активности, ветвь git и размер файла. Расширьте на все проекты с помощью `Ctrl+A`, чтобы также увидеть путь проекта каждого сеанса.210Каждая строка показывает имя сессии, если оно установлено, в противном случае сгенерированное ИИ название сессии, сводку диалога или первый промпт, а также время с момента последней активности, ветку git и размер файла.

209 211 

210Сеансы, созданные с помощью `/branch` или `--fork-session`, получают свои собственные идентификаторы сеансов и отображаются как отдельные строки. Когда средство выбора находит более одной записи для одного и того же сеанса, оно группирует их под одной строкой. Нажмите `→` для развёртывания группы.212Сеансы, созданные с помощью `/branch` или `--fork-session`, получают свои собственные идентификаторы сеансов и отображаются как отдельные строки. Когда средство выбора находит более одной записи для одного и того же сеанса, оно группирует их под одной строкой. Нажмите `→` для развёртывания группы.

211 213 


223/branch try-streaming-approach225/branch try-streaming-approach

224```226```

225 227 

226Если вы опустите имя, Claude Code назовёт новую ветвь в соответствии с первым запросом в диалоге. Начиная с версии v2.1.198 это также применяется после [compaction](/docs/ru/how-claude-code-works#when-context-fills-up); более ранние версии вместо этого использовали буквальное имя `Branched conversation` вместо того, чтобы смотреть дальше сводки compaction на исходный первый запрос.228Если вы опустите имя, Claude Code назовёт новую ветку по первому промпту в диалоге.

227 229 

228Из командной строки объедините `--continue` или `--resume` с `--fork-session`:230Из командной строки объедините `--continue` или `--resume` с `--fork-session`:

229 231 


250 252 

251Эти команды управляют тем, что находится в окне контекста, не покидая сеанс:253Эти команды управляют тем, что находится в окне контекста, не покидая сеанс:

252 254 

253* **`/clear`**: начать заново с пустым контекстом. Claude Code сохраняет предыдущий диалог; возобновите его с помощью `/resume`, или, в том же процессе Claude Code, из [записи предыдущего сеанса меню перемотки](/docs/ru/checkpointing#rewind-past-a-cleared-conversation). Без аргументов новый диалог сохраняет имя, которое вы установили с помощью `--name` или `/rename`, но не автоматически сгенерированное название сеанса. Чтобы назвать диалог, который вы оставляете, передайте имя, как в `/clear release-prep`; новый диалог затем начинается без имени255* **`/clear`**: начать заново с пустым контекстом. Claude Code сохраняет предыдущую сессию; возобновите её с помощью `/resume`, или, в том же процессе Claude Code, из [записи предыдущей сессии в меню перемотки](/docs/ru/checkpointing#rewind-past-a-cleared-conversation). Без аргумента новая сессия сохраняет имя, которое вы установили с помощью `--name` или `/rename`, но не название сессии, сгенерированное ИИ. Чтобы вместо этого назвать сессию, которую вы покидаете, передайте имя, как в `/clear release-prep`; новая сессия затем начинается без имени

254* **`/compact [instructions]`**: заменить историю сводкой, опционально сосредоточенной на том, что вы указали256* **`/compact [instructions]`**: заменить историю сводкой, опционально сосредоточенной на том, что вы указали

255* **`/context`**: показать, что в настоящее время потребляет контекст257* **`/context`**: показать, что в настоящее время потребляет контекст

256 258 

settings.md +2 −2

Details

495 495 

496До v2.1.211 Claude Code хранил файл в начальном каталоге. Он всё ещё читает файл, который более ранняя версия оставила там, наряду с файлом в корне; если оба задают один и тот же ключ, применяется значение из корня, а правила разрешений из обоих файлов применяются. Вспомогательная функция Agent SDK [`resolveSettings()`](/docs/ru/agent-sdk/typescript#resolvesettings) всегда читает файл из начального каталога.496До v2.1.211 Claude Code хранил файл в начальном каталоге. Он всё ещё читает файл, который более ранняя версия оставила там, наряду с файлом в корне; если оба задают один и тот же ключ, применяется значение из корня, а правила разрешений из обоих файлов применяются. Вспомогательная функция Agent SDK [`resolveSettings()`](/docs/ru/agent-sdk/typescript#resolvesettings) всегда читает файл из начального каталога.

497 497 

498Claude Code читает общий `.claude/settings.json` из [основного рабочего каталога](/docs/ru/permissions#working-directories) сессии, поэтому, чтобы использовать файл, зафиксированный в корне репозитория, запустите Claude Code там. После того как вы [переместите сессию с помощью `/cd`](/docs/ru/permissions#move-the-session-to-another-directory), Claude Code читает оба файла проекта из нового каталога, размещая локальный файл по тем же правилам. Чтение их из каталога, в который вы переместились, требует Claude Code v2.1.246 или более поздней версии.498Claude Code читает общий `.claude/settings.json` из [основного рабочего каталога](/docs/ru/permissions#working-directories) сессии, поэтому, чтобы использовать файл, зафиксированный в корне репозитория, запустите Claude Code там. После того как вы [переместите сессию с помощью `/cd`](/docs/ru/permissions#move-the-session-to-another-directory), Claude Code вместо этого читает оба файла проекта из нового каталога, размещая локальный файл по тем же правилам. Чтение их из каталога, в который вы переместились, требует Claude Code v2.1.246 или более поздней версии. О сессии в worktree, которую вы запускаете из десктопного приложения, см. раздел [Что worktree разделяют с основным checkout](/docs/ru/worktrees#what-worktrees-share-with-the-main-checkout).

499 499 

500<span id="managed-settings-delivery" />500<span id="managed-settings-delivery" />

501 501 


767 767 

768Две вещи не позволяют ключу в `.claude/settings.json` применяться для всех, кто клонирует репозиторий:768Две вещи не позволяют ключу в `.claude/settings.json` применяться для всех, кто клонирует репозиторий:

769 769 

770* **Claude Code игнорирует ключ в файле репозитория.** Ищите `User, local, or managed`, `User or managed`, `Managed` или `Global config` в столбце Scope [индекса настроек](/docs/ru/settings-reference#settings-index). Эти ключи никогда не применяются из общего файла, кроме нескольких, которые файл репозитория все еще может отключить. Каждая из этих записей говорит об этом в строке Scope. Ключи `Global config` применяются только из `~/.claude.json`.770* **Claude Code игнорирует ключ в файле репозитория.** Ищите `User, local, or managed`, `User or managed`, `User`, `Managed` или `Global config` в столбце Scope [индекса настроек](/docs/ru/settings-reference#settings-index). Эти ключи никогда не применяются из общего файла, кроме нескольких, которые файл репозитория все еще может отключить. Каждая из этих записей говорит об этом в строке Scope. Ключи `Global config` применяются только из `~/.claude.json`.

771 771 

772 Внутри ключа `env` переменные экспорта телеметрии также никогда не применяются из общего файла, кроме нескольких отключающих значений; см. [Переменные, которые Claude Code игнорирует в `env`](/docs/ru/settings-reference#variables-claude-code-ignores-in-env).772 Внутри ключа `env` переменные экспорта телеметрии также никогда не применяются из общего файла, кроме нескольких отключающих значений; см. [Переменные, которые Claude Code игнорирует в `env`](/docs/ru/settings-reference#variables-claude-code-ignores-in-env).

773* **Ключ ждет доверия.** Правила `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces` и большинство значений [`env`](/docs/ru/settings-reference#env) применяются только после того, как каждый товарищ по команде [доверит папке](/docs/ru/permissions#project-allow-rules-and-workspace-trust). До этого они все еще видят запросы разрешений и не получают плагины с маркетплейса, который объявляет файл. Правила `deny` и `ask` применяются сразу же.773* **Ключ ждет доверия.** Правила `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces` и большинство значений [`env`](/docs/ru/settings-reference#env) применяются только после того, как каждый товарищ по команде [доверит папке](/docs/ru/permissions#project-allow-rules-and-workspace-trust). До этого они все еще видят запросы разрешений и не получают плагины с маркетплейса, который объявляет файл. Правила `deny` и `ask` применяются сразу же.

Details

582<ReferenceFilter582<ReferenceFilter

583 noun="settings"583 noun="settings"

584 placeholder="Filter settings by key or purpose"584 placeholder="Filter settings by key or purpose"

585 facetOrder={{ scope: ["Any file", "User, local, or managed", "User or managed", "Managed", "Global config"] }}585 facetOrder={{ scope: ["Any file", "User, local, or managed", "User or managed", "User", "Managed", "Global config"] }}

586 columnHelp={{586 columnHelp={{

587topic: "The section of this page that holds the entry. Use Sort by to group the table by topic.",587topic: "The section of this page that holds the entry. Use Sort by to group the table by topic.",

588scope: "Which settings files can set the key: user (~/.claude/settings.json), project (.claude/settings.json), local (.claude/settings.local.json), or managed (deployed by your organization). Global config keys are in ~/.claude.json instead.",588scope: "Which settings files can set the key: user (~/.claude/settings.json), project (.claude/settings.json), local (.claude/settings.local.json), or managed (deployed by your organization). Global config keys are in ~/.claude.json instead.",


638| [`claudeMdExcludes`](#claudemdexcludes) | Пропускайте определённые [файлы CLAUDE.md](/docs/ru/memory#exclude-specific-claude-md-files) при загрузке памяти | Memory and context | Any file |638| [`claudeMdExcludes`](#claudemdexcludes) | Пропускайте определённые [файлы CLAUDE.md](/docs/ru/memory#exclude-specific-claude-md-files) при загрузке памяти | Memory and context | Any file |

639| [`cleanupPeriodDays`](#cleanupperioddays) | Выберите, сколько дней Claude Code хранит [транскрипты](/docs/ru/data-usage#data-retention) перед их удалением | Privacy and telemetry | Any file |639| [`cleanupPeriodDays`](#cleanupperioddays) | Выберите, сколько дней Claude Code хранит [транскрипты](/docs/ru/data-usage#data-retention) перед их удалением | Privacy and telemetry | Any file |

640| [`companyAnnouncements`](#companyannouncements) | Показывайте объявления вашей организации при запуске | Interface and terminal | Any file |640| [`companyAnnouncements`](#companyannouncements) | Показывайте объявления вашей организации при запуске | Interface and terminal | Any file |

641| [`copyFullResponse`](#copyfullresponse) | Сделайте так, чтобы [`/copy`](/docs/ru/commands) копировала полный ответ без отображения средства выбора блока кода | Global config settings | Global config |641| [`copyFullResponse`](#copyfullresponse) | Сделайте так, чтобы [`/copy`](/docs/ru/commands) копировала полный ответ без отображения средства выбора | Global config settings | Global config |

642| [`copyOnSelect`](#copyonselect) | Отключите автоматическое копирование текста, который вы выбираете мышью в [полноэкранном отображении](/docs/ru/fullscreen#use-the-mouse) и представлении агента | Global config settings | Global config |642| [`copyOnSelect`](#copyonselect) | Отключите автоматическое копирование текста, который вы выбираете мышью в [полноэкранном отображении](/docs/ru/fullscreen#use-the-mouse) и представлении агента | Global config settings | Global config |

643| [`crossSessionInbound`](#crosssessioninbound) | Выберите, доставляет ли Claude Code [сообщения из ваших других сессий](/docs/ru/cross-session-messaging#control-inbound-messages), показывает уведомление без их доставки или отклоняет их | Agents, sessions, and worktrees | Any file |643| [`crossSessionInbound`](#crosssessioninbound) | Выберите, доставляет ли Claude Code [сообщения из ваших других сессий](/docs/ru/cross-session-messaging#control-inbound-messages), показывает уведомление без их доставки или отклоняет их | Agents, sessions, and worktrees | Any file |

644| [`defaultShell`](#defaultshell) | Выберите, запускается ли Bash или PowerShell для shell-команд, которые вы вводите с префиксом [`!`](/docs/ru/interactive-mode#shell-mode-with-prefix) | Interface and terminal | Any file |644| [`defaultShell`](#defaultshell) | Выберите, запускается ли Bash или PowerShell для shell-команд, которые вы вводите с префиксом [`!`](/docs/ru/interactive-mode#shell-mode-with-prefix) | Interface and terminal | Any file |


684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Отключите или включите снимки файлов, которые [`/rewind`](/docs/ru/checkpointing) восстанавливает | Memory and context | Any file |684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Отключите или включите снимки файлов, которые [`/rewind`](/docs/ru/checkpointing) восстанавливает | Memory and context | Any file |

685| [`fileSuggestion`](#filesuggestion) | Предоставляйте [автодополнение файлов `@`](/docs/ru/interactive-mode#quick-commands) из вашей собственной команды | Interface and terminal | Any file |685| [`fileSuggestion`](#filesuggestion) | Предоставляйте [автодополнение файлов `@`](/docs/ru/interactive-mode#quick-commands) из вашей собственной команды | Interface and terminal | Any file |

686| [`footerLinksRegexes`](#footerlinksregexes) | Превратите ID задач или рецензий в выводе в [кликабельные ссылки](/docs/ru/statusline#clickable-links) под полем ввода | Interface and terminal | User or managed |686| [`footerLinksRegexes`](#footerlinksregexes) | Превратите ID задач или рецензий в выводе в [кликабельные ссылки](/docs/ru/statusline#clickable-links) под полем ввода | Interface and terminal | User or managed |

687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Установите [URL шлюза](/docs/ru/claude-apps-gateway#set-the-gateway-url), к которому подключается экран входа | Authentication and providers | Managed |687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Установите [URL шлюза](/docs/ru/claude-apps-gateway#set-the-gateway-url), к которому подключается экран входа | Authentication and providers | User or managed |

688| [`forceLoginMethod`](#forceloginmethod) | [Ограничьте вход](/docs/ru/authentication#restrict-login-to-your-organization) на claude.ai, Claude Console или [облачный шлюз](/docs/ru/claude-apps-gateway) | Authentication and providers | Any file |688| [`forceLoginMethod`](#forceloginmethod) | [Ограничьте вход](/docs/ru/authentication#restrict-login-to-your-organization) на claude.ai, Claude Console или [облачный шлюз](/docs/ru/claude-apps-gateway) | Authentication and providers | Any file |

689| [`forceLoginOrgUUID`](#forceloginorguuid) | [Привяжите входы claude.ai к вашей организации](/docs/ru/authentication#restrict-login-to-your-organization); только управляемый источник это обеспечивает | Authentication and providers | Any file |689| [`forceLoginOrgUUID`](#forceloginorguuid) | [Привяжите входы claude.ai к вашей организации](/docs/ru/authentication#restrict-login-to-your-organization); только управляемый источник это обеспечивает | Authentication and providers | Any file |

690| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Блокируйте запуск до тех пор, пока [настройки, управляемые сервером](/docs/ru/server-managed-settings), не будут заново получены | Enterprise and managed settings | Managed |690| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Блокируйте запуск до тех пор, пока [настройки, управляемые сервером](/docs/ru/server-managed-settings), не будут заново получены | Enterprise and managed settings | Managed |


831| [`worktree`](#worktree) | Настройте, как Claude Code создаёт git [worktrees](/docs/ru/worktrees) | Agents, sessions, and worktrees | Any file |831| [`worktree`](#worktree) | Настройте, как Claude Code создаёт git [worktrees](/docs/ru/worktrees) | Agents, sessions, and worktrees | Any file |

832| [`worktree.baseRef`](#worktree-baseref) | Создавайте новые [worktrees](/docs/ru/worktrees) от удалённой ветки по умолчанию или вашего локального HEAD | Agents, sessions, and worktrees | Any file |832| [`worktree.baseRef`](#worktree-baseref) | Создавайте новые [worktrees](/docs/ru/worktrees) от удалённой ветки по умолчанию или вашего локального HEAD | Agents, sessions, and worktrees | Any file |

833| [`worktree.bgIsolation`](#worktree-bgisolation) | Позвольте фоновым сессиям редактировать рабочую копию без [worktree](/docs/ru/worktrees) | Agents, sessions, and worktrees | Any file |833| [`worktree.bgIsolation`](#worktree-bgisolation) | Позвольте фоновым сессиям редактировать рабочую копию без [worktree](/docs/ru/worktrees) | Agents, sessions, and worktrees | Any file |

834| [`worktree.location`](#worktree-location) | Выберите, где [SSH-сессии Desktop](/docs/ru/desktop#ssh-sessions) создают свои worktrees на удалённой машине | Agents, sessions, and worktrees | User |

834| [`worktree.sparsePaths`](#worktree-sparsepaths) | Извлекайте только необходимые вам каталоги в каждом [worktree](/docs/ru/worktrees) | Agents, sessions, and worktrees | Any file |835| [`worktree.sparsePaths`](#worktree-sparsepaths) | Извлекайте только необходимые вам каталоги в каждом [worktree](/docs/ru/worktrees) | Agents, sessions, and worktrees | Any file |

835| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Создавайте символические ссылки на большие каталоги в каждом [worktree](/docs/ru/worktrees) вместо их дублирования | Agents, sessions, and worktrees | Any file |836| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Создавайте символические ссылки на большие каталоги в каждом [worktree](/docs/ru/worktrees) вместо их дублирования | Agents, sessions, and worktrees | Any file |

836| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Пусть WSL читает [управляемые настройки](/docs/ru/managed-settings) из цепочки политик Windows | Enterprise and managed settings | Managed |837| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Пусть WSL читает [управляемые настройки](/docs/ru/managed-settings) из цепочки политик Windows | Enterprise and managed settings | Managed |


1763 * `"acceptEdits"`: Claude Code также без запроса выполняет редактирование файлов и распространённые команды файловой системы, такие как `mkdir` и `mv`1764 * `"acceptEdits"`: Claude Code также без запроса выполняет редактирование файлов и распространённые команды файловой системы, такие как `mkdir` и `mv`

1764 * `"plan"`: Claude Code читает и планирует, но блокирует редактирование, пока вы не утвердите план1765 * `"plan"`: Claude Code читает и планирует, но блокирует редактирование, пока вы не утвердите план

1765 * `"auto"`: Claude Code работает без рутинных запросов; перед выполнением таких действий, как shell-команды и сетевые запросы, фоновый классификатор проверяет, что они соответствуют вашей задаче1766 * `"auto"`: Claude Code работает без рутинных запросов; перед выполнением таких действий, как shell-команды и сетевые запросы, фоновый классификатор проверяет, что они соответствуют вашей задаче

1766 * `"dontAsk"`: Claude Code автоматически отклоняет каждый вызов, который иначе потребовал бы запроса; чтение, другие действия, не требующие подтверждения, и заранее разрешённые инструменты по-прежнему выполняются1767 * `"dontAsk"`: Claude Code автоматически отклоняет каждый вызов, который иначе потребовал бы запроса; чтение файлов внутри ваших рабочих каталогов, другие действия, не требующие подтверждения, и заранее разрешённые инструменты по-прежнему выполняются, за исключением чтения по [сетевым путям](/docs/ru/permissions#network-paths)

1767 * `"bypassPermissions"`: Claude Code выполняет всё без запроса1768 * `"bypassPermissions"`: Claude Code выполняет всё без запроса

1768 * `"manual"`: псевдоним для `"default"`1769 * `"manual"`: псевдоним для `"default"`

1769* **По умолчанию**: не установлено1770* **По умолчанию**: не установлено


2398 2399 

2399* Запись в `files` или `envVars`, у которой по-прежнему действительный `path` или `name` и `mode` со значением `mask` или `deny`, например запись, шаблон `extract` которой не содержит группы захвата, понижается до `mode: "deny"` с предупреждением, поэтому учётные данные остаются заблокированными, а не замаскированными, пока вы не исправите запись. Пониженная запись `files` закрепляет [`filesystem.disabled`](/docs/ru/sandboxing#disable-filesystem-isolation) так же, как явная запись `deny`, а предупреждение отмечает, что её блокировка чтения не применяется, если управляемые настройки отключают изоляцию файловой системы.2400* Запись в `files` или `envVars`, у которой по-прежнему действительный `path` или `name` и `mode` со значением `mask` или `deny`, например запись, шаблон `extract` которой не содержит группы захвата, понижается до `mode: "deny"` с предупреждением, поэтому учётные данные остаются заблокированными, а не замаскированными, пока вы не исправите запись. Пониженная запись `files` закрепляет [`filesystem.disabled`](/docs/ru/sandboxing#disable-filesystem-isolation) так же, как явная запись `deny`, а предупреждение отмечает, что её блокировка чтения не применяется, если управляемые настройки отключают изоляцию файловой системы.

2400* Запись с неизвестным `mode` или недействительным `path` или `name` удаляется.2401* Запись с неизвестным `mode` или недействительным `path` или `name` удаляется.

2401* В каждом случае выводится предупреждение; независимо от того, понижена запись или удалена, остальные действительные записи по-прежнему применяются, а полностью недействительное значение `credentials` отбрасывается, тогда как остальная часть `sandbox` по-прежнему применяется.2402* В каждом случае выводится предупреждение; независимо от того, понижена запись или удалена, остальные действительные записи по-прежнему применяются.

2402 2403 

2403Действует в v2.1.191 и более поздних версиях; до v2.1.221 каждая недействительная запись удалялась. Для других управляемых ключей с обработкой на уровне отдельных полей см. [Invalid entries in managed settings](/docs/ru/managed-settings#invalid-entries-in-managed-settings).2404Действует в v2.1.191 и более поздних версиях; до v2.1.221 каждая недействительная запись удалялась. Для других управляемых ключей с обработкой на уровне отдельных полей см. [Invalid entries in managed settings](/docs/ru/managed-settings#invalid-entries-in-managed-settings).

2404 2405 


5681 5682 

5682Вне git-репозитория [хук `WorktreeCreate`](/docs/ru/worktrees#non-git-version-control), который завершается с ошибкой, снимает блокировку, чтобы сессия могла редактировать рабочий каталог на месте; это снятие блокировки требует Claude Code v2.1.203 или позже.5683Вне git-репозитория [хук `WorktreeCreate`](/docs/ru/worktrees#non-git-version-control), который завершается с ошибкой, снимает блокировку, чтобы сессия могла редактировать рабочий каталог на месте; это снятие блокировки требует Claude Code v2.1.203 или позже.

5683 5684 

5685<h3 id="worktree-location">

5686 `worktree.location`

5687</h3>

5688 

5689Выберите папку на удалённой машине, в которой [сессии Desktop по SSH](/docs/ru/desktop#choose-where-ssh-session-worktrees-go) создают свои worktrees, вместо `<project-root>/.claude/worktrees/`. Этот ключ читает только настольное приложение: `--worktree`, инструмент `EnterWorktree`, изолированные субагенты и фоновые сессии его игнорируют. Требуется Claude Desktop v1.44121.0 или позже.

5690 

5691* **Scope**: [`User`](#scopes), в `~/.claude/settings.json` на удалённой машине

5692* **Type**: string, абсолютный путь или путь, начинающийся с `~/`

5693* **Default**: не установлено, поэтому worktrees размещаются внутри проекта

5694 

5695Этот пример задаёт папку `~/worktrees`:

5696 

5697```json settings.json theme={null}

5698{

5699 "worktree": {

5700 "location": "~/worktrees"

5701 }

5702}

5703```

5704 

5705Значение **Worktree folder**, заданное для SSH-подключения в Desktop, имеет приоритет. Если ваша организация ограничивает папки, которые могут использовать сессии, Desktop размещает worktrees внутри проекта.

5706 

5684<h2 id="remote-desktop-and-notifications">5707<h2 id="remote-desktop-and-notifications">

5685 Удалённое управление, настольное приложение и уведомления5708 Удалённое управление, настольное приложение и уведомления

5686</h2>5709</h2>


5813 `enableArtifact`5836 `enableArtifact`

5814</h3>5837</h3>

5815 5838 

5816Отключить инструмент [Artifact](/docs/ru/artifacts), который публикует выходные данные сеанса как приватную веб-страницу на claude.ai. Когда вы отключаете строку **Artifacts** в `/config`, Claude Code записывает этот ключ в ваши пользовательские настройки, поэтому вы обычно не редактируете его вручную. Требуется Claude Code v2.1.196 или позже.5839Отключить инструмент [Artifact](/docs/ru/artifacts), который публикует выходные данные сессии как приватную веб-страницу на claude.ai. Когда вы отключаете строку **Artifacts** в `/config`, Claude Code записывает этот ключ в ваши пользовательские настройки, поэтому вы обычно не редактируете его вручную.

5817 5840 

5818* **Scope**: [`Any file`](#scopes). Каждый файл может отключить инструмент, и ни один не может включить его обратно.5841* **Scope**: [`Any file`](#scopes). Каждый файл может отключить инструмент, и ни один не может включить его обратно.

5819* **Type**: Boolean5842* **Type**: Boolean


5920 `sshConfigs`5943 `sshConfigs`

5921</h3>5944</h3>

5922 5945 

5923Добавить SSH-соединения в раскрывающийся список окружения [Desktop](/docs/ru/desktop#pre-configure-ssh-connections-for-your-team). Администраторы используют это для распределения общих соединений команде. Соединения, которые вы определяете в управляемых настройках, отображаются как управляемые, поэтому пользователи могут их выбирать, но не могут редактировать или удалять их в приложении.5946Добавить SSH-соединения в раскрывающийся список окружений [Desktop](/docs/ru/desktop#pre-configure-ssh-connections-for-your-team). Администраторы используют этот ключ для распространения общих соединений в команде. Соединения, определённые в управляемых настройках, отображаются как управляемые. Пользователи могут выбирать их и [задавать для них собственную **Worktree folder**](/docs/ru/desktop#choose-where-ssh-session-worktrees-go), но не могут изменять что-либо ещё или удалять их в приложении.

5924 5947 

5925* **Scope**: [`User or managed`](#scopes). Настольное приложение читает этот ключ. По умолчанию оно читает управляемые соединения из [одного управляемого источника](/docs/ru/managed-settings#how-claude-code-combines-managed-sources).5948* **Scope**: [`User or managed`](#scopes). Настольное приложение читает этот ключ. По умолчанию оно читает управляемые соединения из [одного управляемого источника](/docs/ru/managed-settings#how-claude-code-combines-managed-sources).

5926* **Type**: массив объектов, каждый с обязательными `id`, `name` и `sshHost` и опциональными `sshPort` и `sshIdentityFile`5949* **Type**: массив объектов, каждый с обязательными `id`, `name` и `sshHost` и опциональными `sshPort` и `sshIdentityFile`


6085 6108 

6086Ограничьте, с каким типом учётной записи люди могут входить. Установите `"claudeai"`, чтобы разрешить только учётные записи claude.ai, `"console"`, чтобы разрешить только учётные записи Claude Console, или `"gateway"`, чтобы направлять людей на [облачный шлюз](/docs/ru/claude-apps-gateway) вместо входа первой стороны. Администраторы устанавливают это в управляемых настройках и сочетают с [`forceLoginOrgUUID`](#forceloginorguuid), чтобы входы разработчиков в claude.ai оставались внутри одной организации. Если вы установите значение `"claudeai"` или `"console"` в любом файле настроек, Claude Code также перестаёт предлагать [вход в Console без ключа](/docs/ru/authentication#sign-in-without-an-api-key) в сессиях, к которым применяется этот файл.6109Ограничьте, с каким типом учётной записи люди могут входить. Установите `"claudeai"`, чтобы разрешить только учётные записи claude.ai, `"console"`, чтобы разрешить только учётные записи Claude Console, или `"gateway"`, чтобы направлять людей на [облачный шлюз](/docs/ru/claude-apps-gateway) вместо входа первой стороны. Администраторы устанавливают это в управляемых настройках и сочетают с [`forceLoginOrgUUID`](#forceloginorguuid), чтобы входы разработчиков в claude.ai оставались внутри одной организации. Если вы установите значение `"claudeai"` или `"console"` в любом файле настроек, Claude Code также перестаёт предлагать [вход в Console без ключа](/docs/ru/authentication#sign-in-without-an-api-key) в сессиях, к которым применяется этот файл.

6087 6110 

6088* **Scope**: [`Any file`](#scopes). Claude Code учитывает `"gateway"` только из управляемого источника на машине: `managed-settings.json`, plist macOS или реестра Windows HKLM, или помощника политики. Он рассматривает `"gateway"` как неустановленное значение в пользовательских, проектных, локальных, HKCU и управляемых сервером настройках — то же правило, что и для [`forceLoginGatewayUrl`](#forcelogingatewayurl).6111* **Scope**: [`Any file`](#scopes). Claude Code учитывает `"gateway"` из тех же источников, что и [`forceLoginGatewayUrl`](#forcelogingatewayurl), и рассматривает его как неустановленное значение во всех остальных.

6089* **Type**: строка, одно из значений:6112* **Type**: строка, одно из значений:

6090 * `"claudeai"`: входить могут только учётные записи claude.ai6113 * `"claudeai"`: входить могут только учётные записи claude.ai

6091 * `"console"`: входить могут только учётные записи Claude Console6114 * `"console"`: входить могут только учётные записи Claude Console


6108 6131 

6109Установите URL шлюза, к которому подключается экран облачного шлюза `/login`, чтобы люди попадали на ваш [облачный шлюз](/docs/ru/claude-apps-gateway) без ввода его адреса. На экране нет поля URL: если этот ключ установлен, экран показывает URL вашего шлюза и подключается, когда человек нажимает Enter; без него экран предлагает обратиться к IT-администратору.6132Установите URL шлюза, к которому подключается экран облачного шлюза `/login`, чтобы люди попадали на ваш [облачный шлюз](/docs/ru/claude-apps-gateway) без ввода его адреса. На экране нет поля URL: если этот ключ установлен, экран показывает URL вашего шлюза и подключается, когда человек нажимает Enter; без него экран предлагает обратиться к IT-администратору.

6110 6133 

6111Либо этот ключ, либо `forceLoginMethod: "gateway"` делает машину доступной только через шлюз, за исключением сессий, которые выбирают облачного поставщика с помощью `CLAUDE_CODE_USE_*`. Тогда `/login` открывается на экране облачного шлюза без выбора метода входа. См. [Политика администратора требует вход через облачный шлюз](/docs/ru/errors#administrator-policy-requires-a-cloud-gateway-sign-in), чтобы узнать, что происходит с оставшимся входом первой стороны или API-ключом. Установите оба ключа, чтобы экран подключался, а не показывал ошибку.6134В управляемых настройках либо этот ключ, либо `forceLoginMethod: "gateway"` делает машину доступной только через шлюз, за исключением сессий, которые выбирают облачного поставщика с помощью `CLAUDE_CODE_USE_*`. Тогда `/login` открывается на экране облачного шлюза без выбора метода входа. См. [Политика администратора требует вход через облачный шлюз](/docs/ru/errors#administrator-policy-requires-a-cloud-gateway-sign-in), чтобы узнать, что происходит с оставшимся входом первой стороны или API-ключом. Установите оба ключа, чтобы экран подключался, а не показывал ошибку.

6112 6135 

6113* **Scope**: [`Managed`](#scopes). Читается только из источника на машине: `managed-settings.json`, plist macOS или реестра Windows HKLM, или помощника политики. Claude Code игнорирует его в HKCU и управляемых сервером настройках.6136* **Scope**: [`User or managed`](#scopes). Читается из управляемого источника на машине: `managed-settings.json`, plist macOS или реестра Windows HKLM, или помощника политики. На машине, где нет ни одного из них, Claude Code v2.1.295 или позже также читает его из [пользовательских настроек](/docs/ru/claude-apps-gateway#set-the-gateway-url-in-user-settings). Claude Code игнорирует его в HKCU и управляемых сервером настройках.

6114* **Type**: строка, полный URL, включая схему6137* **Type**: строка, полный URL, включая схему

6115* **Default**: не установлено, поэтому экран облачного шлюза показывает ошибку с предложением обратиться к IT-администратору6138* **Default**: не установлено, поэтому экран облачного шлюза показывает ошибку с предложением обратиться к IT-администратору

6116 6139 


6140}6163}

6141```6164```

6142 6165 

6143Если управляемый источник устанавливает пустой массив или значение, которое Claude Code не может разобрать, Claude Code блокирует любой вход с сообщением о неправильной конфигурации.6166Если управляемый источник устанавливает пустой массив или значение, которое не является строкой или массивом строк, пользователи, входящие с учётной записью Anthropic, не могут запустить Claude Code или завершить вход. Они видят сообщение, в котором указан `forceLoginOrgUUID` и предлагается обратиться к администратору. [`policyHelper`](#policyhelper), который выдаёт значение неправильного типа, вместо этого [завершает свой запуск с ошибкой](#helper-failures).

6144 6167 

6145См. [Ограничить вход вашей организацией](/docs/ru/authentication#restrict-login-to-your-organization), чтобы узнать, как Claude Code обрабатывает входы в Claude Console, другие пути входа и учётные данные окружения.6168См. [Ограничить вход вашей организацией](/docs/ru/authentication#restrict-login-to-your-organization), чтобы узнать, как Claude Code обрабатывает входы в Claude Console, другие пути входа и учётные данные окружения.

6146 6169 


6806 `copyFullResponse`6829 `copyFullResponse`

6807</h3>6830</h3>

6808 6831 

6809Делайте так, чтобы [`/copy`](/docs/ru/commands) копировала полный ответ каждый раз, без средства выбора, которое оно иначе показывает, когда ответ содержит блоки кода. Выбор **Always copy full response** в этом средстве выбора устанавливает этот ключ на `true`. Отображается в `/config` как **Skip the /copy picker**.6832Делайте так, чтобы [`/copy`](/docs/ru/commands) копировала полный ответ каждый раз, без показа средства выбора. Выбор **Always copy full response** в этом средстве выбора устанавливает этот ключ в `true`. Отображается в `/config` как **Skip the /copy picker**.

6810 6833 

6811* **Scope**: [`Global config`](#scopes)6834* **Scope**: [`Global config`](#scopes)

6812* **Type**: Boolean6835* **Type**: Boolean

6813 * `true`: `/copy` копирует полный ответ без показа средства выбора6836 * `true`: `/copy` копирует полный ответ без показа средства выбора

6814 * `false`: когда ответ содержит блоки кода, `/copy` показывает средство выбора, где вы выбираете один блок кода или полный ответ6837 * `false`: когда ответ содержит блоки кода или цитаты, `/copy` показывает средство выбора, где вы выбираете один блок или полный ответ

6815* **Default**: `false`6838* **Default**: `false`

6816 6839 

6817```json ~/.claude.json theme={null}6840```json ~/.claude.json theme={null}

skills.md +6 −6

Details

192 192 

193Claude Code загружает проектные скиллы из `.claude/skills/` в каталоге, в котором вы его запускаете, и в каждом родительском каталоге вплоть до корня репозитория, поэтому при запуске в `packages/frontend/` всё равно подхватываются скиллы, определённые в корне. Когда вы [перемещаете сессию с помощью `/cd`](/docs/ru/permissions#move-the-session-to-another-directory) в версии v2.1.246 или новее, Claude Code добавляет проектные скиллы нового каталога.193Claude Code загружает проектные скиллы из `.claude/skills/` в каталоге, в котором вы его запускаете, и в каждом родительском каталоге вплоть до корня репозитория, поэтому при запуске в `packages/frontend/` всё равно подхватываются скиллы, определённые в корне. Когда вы [перемещаете сессию с помощью `/cd`](/docs/ru/permissions#move-the-session-to-another-directory) в версии v2.1.246 или новее, Claude Code добавляет проектные скиллы нового каталога.

194 194 

195В сессии, работающей в связанном [git worktree](/docs/ru/worktrees), Claude Code ищет родительские каталоги только до корня worktree. В Claude Code v2.1.277 или новее, если в корне checkout worktree нет каталога `.claude/skills`, Claude Code вместо этого загружает проектные скиллы основного checkout. См. [Что worktree разделяют с основным checkout](/docs/ru/worktrees#what-worktrees-share-with-the-main-checkout).195В сессии, работающей в связанном [git worktree](/docs/ru/worktrees), который вы создали с помощью `--worktree` или `git worktree add`, Claude Code ищет родительские каталоги только до корня worktree. В Claude Code v2.1.277 или новее, если в корне checkout worktree нет каталога `.claude/skills`, Claude Code вместо этого загружает проектные скиллы основного checkout. См. [Что worktree разделяют с основным checkout](/docs/ru/worktrees#what-worktrees-share-with-the-main-checkout).

196 196 

197Скиллы в каталоге `.claude/skills/` ниже места запуска не загружаются при старте. Они загружаются, когда Claude впервые читает или редактирует файл в этом подкаталоге, и остаются доступными до конца сессии. До этого момента они не отображаются в меню `/`, и вы не можете вызвать их по имени. Чтобы загрузить их раньше, выполните `/add-dir` с путём к подкаталогу; для этого требуется Claude Code v2.1.257 или новее.197Скиллы в каталоге `.claude/skills/` ниже места запуска не загружаются при старте. Они загружаются, когда Claude впервые читает или редактирует файл в этом подкаталоге, и остаются доступными до конца сессии. До этого момента они не отображаются в меню `/`, и вы не можете вызвать их по имени. Чтобы загрузить их раньше, выполните `/add-dir` с путём к подкаталогу; для этого требуется Claude Code v2.1.257 или новее. О сессии в worktree, которую вы запускаете из приложения Desktop, см. [Что worktree разделяют с основным checkout](/docs/ru/worktrees#what-worktrees-share-with-the-main-checkout).

198 198 

199Когда имя каталога вложенного скилла совпадает с именем другого скилла, доступными остаются оба. Если скилл `deploy` есть в корне репозитория и ещё один — в `apps/web/.claude/skills/`:199Когда имя каталога вложенного скилла совпадает с именем другого скилла, доступными остаются оба. Если скилл `deploy` есть в корне репозитория и ещё один — в `apps/web/.claude/skills/`:

200 200 


235 235 

236Если скилл существует только в `~/.claude/skills/` на вашем компьютере, Claude Code сообщает, что скилл не найден, когда его вызывает [routine](/docs/ru/routines), поскольку каждый запуск routine начинается как новая облачная сессия. Чтобы сделать личный скилл доступным в этих сессиях:236Если скилл существует только в `~/.claude/skills/` на вашем компьютере, Claude Code сообщает, что скилл не найден, когда его вызывает [routine](/docs/ru/routines), поскольку каждый запуск routine начинается как новая облачная сессия. Чтобы сделать личный скилл доступным в этих сессиях:

237 237 

238* Для Cowork и облачных сессий включите скилл для своего аккаунта claude.ai.238* Для Cowork и облачных сессий включите скилл для своего аккаунта claude.ai. [Некоторые сессии в самостоятельно размещённой среде](/docs/ru/self-hosted-environments-configuration#how-each-session’s-config-is-assembled) не загружают скиллы вашего аккаунта.

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

240 240 

241[Запланированные задачи Desktop](/docs/ru/desktop-scheduled-tasks) выполняются локально на вашем компьютере, поэтому они загружают `~/.claude/skills/`.241[Запланированные задачи Desktop](/docs/ru/desktop-scheduled-tasks) выполняются локально на вашем компьютере, поэтому они загружают `~/.claude/skills/`.


434| `when_to_use` | Нет | Дополнительный контекст для того, когда Claude должен вызвать skill, такой как фразы-триггеры или примеры запросов. Добавляется к `description` в списке skills и учитывается в ограничении 1536 символов. |434| `when_to_use` | Нет | Дополнительный контекст для того, когда Claude должен вызвать skill, такой как фразы-триггеры или примеры запросов. Добавляется к `description` в списке skills и учитывается в ограничении 1536 символов. |

435| `argument-hint` | Нет | Подсказка, показываемая при автодополнении, чтобы указать ожидаемые аргументы. Пример: `[issue-number]` или `[filename] [format]`. |435| `argument-hint` | Нет | Подсказка, показываемая при автодополнении, чтобы указать ожидаемые аргументы. Пример: `[issue-number]` или `[filename] [format]`. |

436| `arguments` | Нет | Именованные позиционные аргументы для [`$name` подстановки](#available-string-substitutions) в содержимом skill. Принимает строку, разделенную пробелами, или список YAML. Имена соответствуют позициям аргументов по порядку. |436| `arguments` | Нет | Именованные позиционные аргументы для [`$name` подстановки](#available-string-substitutions) в содержимом skill. Принимает строку, разделенную пробелами, или список YAML. Имена соответствуют позициям аргументов по порядку. |

437| `disable-model-invocation` | Нет | Установите значение `true`, чтобы предотвратить автоматическую загрузку этого skill Claude. Используйте для рабочих процессов, которые вы хотите запустить вручную с помощью `/name`. Также предотвращает [предварительную загрузку skill в подагентов](/docs/ru/sub-agents#preload-skills-into-subagents). Начиная с v2.1.196, также предотвращает запуск skill при срабатывании [запланированной задачи](/docs/ru/scheduled-tasks) с skill в качестве подсказки. По умолчанию: `false`. |437| `disable-model-invocation` | Нет | Установите значение `true`, чтобы предотвратить автоматическую загрузку этого skill Claude. Используйте для рабочих процессов, которые вы хотите запустить вручную с помощью `/name`. Также предотвращает [предварительную загрузку skill в субагентов](/docs/ru/sub-agents#preload-skills-into-subagents) и запуск skill при срабатывании [запланированной задачи](/docs/ru/scheduled-tasks) с skill в качестве промпта. По умолчанию: `false`. |

438| `user-invocable` | Нет | Установите значение `false`, когда только Claude должен вызвать skill: Claude Code скрывает его из меню `/` и не запускает его при вводе `/name`. Используйте для фоновых знаний, которые пользователи не должны вызывать напрямую. По умолчанию: `true`. |438| `user-invocable` | Нет | Установите значение `false`, когда только Claude должен вызвать skill: Claude Code скрывает его из меню `/` и не запускает его при вводе `/name`. Используйте для фоновых знаний, которые пользователи не должны вызывать напрямую. По умолчанию: `true`. |

439| `allowed-tools` | Нет | Tools, которые Claude может использовать без запроса разрешения во время хода, который вызывает этот skill. Разрешение очищается при отправке следующего сообщения. Принимает строку, разделенную пробелами или запятыми, или список YAML. См. [Предварительное одобрение tools для skill](#pre-approve-tools-for-a-skill). |439| `allowed-tools` | Нет | Tools, которые Claude может использовать без запроса разрешения во время хода, который вызывает этот skill. Разрешение очищается при отправке следующего сообщения. Принимает строку, разделенную пробелами или запятыми, или список YAML. См. [Предварительное одобрение tools для skill](#pre-approve-tools-for-a-skill). |

440| `disallowed-tools` | Нет | Tools, удаленные из доступного пула Claude во время активности этого skill. Используйте для автономных skills, которые никогда не должны вызывать определенные tools, такие как `AskUserQuestion` для фонового цикла. Принимает строку, разделенную пробелами или запятыми, или список YAML. Ограничение очищается при отправке следующего сообщения. Как и правила отказа, это поле не может удалить [`EndConversation`](/docs/ru/tools-reference#endconversation-tool-behavior) пока остаются другие tools. |440| `disallowed-tools` | Нет | Tools, удаленные из доступного пула Claude во время активности этого skill. Используйте для автономных skills, которые никогда не должны вызывать определенные tools, такие как `AskUserQuestion` для фонового цикла. Принимает строку, разделенную пробелами или запятыми, или список YAML. Ограничение очищается при отправке следующего сообщения. Как и правила отказа, это поле не может удалить [`EndConversation`](/docs/ru/tools-reference#endconversation-tool-behavior) пока остаются другие tools. |


528 528 

529Если этот skill установлен в `~/.claude/skills/render-chart/`, обе вхождения `${CLAUDE_SKILL_DIR}` расширяются до этого каталога. Правило `allowed-tools` затем соответствует точной команде, которую тело skill говорит Claude запустить, поэтому скрипт запускается без подсказки.529Если этот skill установлен в `~/.claude/skills/render-chart/`, обе вхождения `${CLAUDE_SKILL_DIR}` расширяются до этого каталога. Правило `allowed-tools` затем соответствует точной команде, которую тело skill говорит Claude запустить, поэтому скрипт запускается без подсказки.

530 530 

531Подстановка `${CLAUDE_PROJECT_DIR}` требует Claude Code v2.1.196 или позже.

532 

533Индексированные аргументы используют кавычки в стиле shell, поэтому оборачивайте многословные значения в кавычки, чтобы передать их как один аргумент. Например, `/my-skill "hello world" second` делает `$0` расширяющимся до `hello world`, а `$1` — до `second`. Заполнитель `$ARGUMENTS` всегда расширяется до полной строки аргументов в том виде, в котором она была введена.531Индексированные аргументы используют кавычки в стиле shell, поэтому оборачивайте многословные значения в кавычки, чтобы передать их как один аргумент. Например, `/my-skill "hello world" second` делает `$0` расширяющимся до `hello world`, а `$1` — до `second`. Заполнитель `$ARGUMENTS` всегда расширяется до полной строки аргументов в том виде, в котором она была введена.

534 532 

535Индексированный заполнитель без соответствующего аргумента, такой как `$2`, когда был передан только один аргумент, остается в содержимом неизменным. Именованный заполнитель из frontmatter [`arguments`](#frontmatter-reference) без соответствующего аргумента расширяется до пустой строки.533Индексированный заполнитель без соответствующего аргумента, такой как `$2`, когда был передан только один аргумент, остается в содержимом неизменным. Именованный заполнитель из frontmatter [`arguments`](#frontmatter-reference) без соответствующего аргумента расширяется до пустой строки.


843* Когда вы вызываете ответвлённый скилл, пока предыдущий вызов того же скилла ещё выполняется841* Когда вы вызываете ответвлённый скилл, пока предыдущий вызов того же скилла ещё выполняется

844* Когда срабатывает [запланированная задача](/docs/ru/scheduled-tasks) со скиллом в качестве промпта842* Когда срабатывает [запланированная задача](/docs/ru/scheduled-tasks) со скиллом в качестве промпта

845 843 

844Когда агент в [динамическом рабочем процессе](/docs/ru/workflows) вызывает ответвлённый скилл, этот агент ждёт результата и получает его, даже если скилл не задаёт `background: false`. До v2.1.295 Claude Code в этом случае не ждал, и если скилл выполнялся в фоне, его результат появлялся в вашем основном диалоге, а не доходил до этого агента.

845 

846Ответвление, выполняемое в фоне, также работает с [более узким набором инструментов, который применяется к фоновым субагентам](/docs/ru/sub-agents#run-subagents-in-foreground-or-background): субагент скилла — это обычный тип агента, поэтому на него не распространяется исключение для субагентов, ответвляющих диалог. Если шаги вашего скилла зависят от инструмента вне этого набора, задайте `background: false`, чтобы сохранить полный набор инструментов.846Ответвление, выполняемое в фоне, также работает с [более узким набором инструментов, который применяется к фоновым субагентам](/docs/ru/sub-agents#run-subagents-in-foreground-or-background): субагент скилла — это обычный тип агента, поэтому на него не распространяется исключение для субагентов, ответвляющих диалог. Если шаги вашего скилла зависят от инструмента вне этого набора, задайте `background: false`, чтобы сохранить полный набор инструментов.

847 847 

848Ответвлённый скилл, выполняемый в фоне, применяет свои правки вне [чекпоинтов](/docs/ru/checkpointing) вашей сессии, поэтому `/rewind` их не отменяет; для их отката используйте git.848Ответвлённый скилл, выполняемый в фоне, применяет свои правки вне [чекпоинтов](/docs/ru/checkpointing) вашей сессии, поэтому `/rewind` их не отменяет; для их отката используйте git.

sub-agents.md +3 −5

Details

386* **Модель основного разговора принадлежит этому семейству**: subagent работает на точной модели основного разговора, включая любой суффикс `[1m]`, поэтому он получает то же [extended context](/docs/ru/model-config#extended-context) окно, что и основной разговор.386* **Модель основного разговора принадлежит этому семейству**: subagent работает на точной модели основного разговора, включая любой суффикс `[1m]`, поэтому он получает то же [extended context](/docs/ru/model-config#extended-context) окно, что и основной разговор.

387* **Claude Code не может определить семейство модели основного разговора, на [поставщике, отличном от Anthropic API](/docs/ru/third-party-integrations)**: это может произойти с [application inference profile ARN](/docs/ru/amazon-bedrock#iam-configuration) на Amazon Bedrock, который Claude Code не разрешил в резервную модель. Этот случай охватывает только псевдоним `opus` и не применяется, когда вы устанавливаете [`ANTHROPIC_DEFAULT_OPUS_MODEL`](/docs/ru/model-config#environment-variables), поскольку `opus` затем разрешается в модель, которую вы установили.387* **Claude Code не может определить семейство модели основного разговора, на [поставщике, отличном от Anthropic API](/docs/ru/third-party-integrations)**: это может произойти с [application inference profile ARN](/docs/ru/amazon-bedrock#iam-configuration) на Amazon Bedrock, который Claude Code не разрешил в резервную модель. Этот случай охватывает только псевдоним `opus` и не применяется, когда вы устанавливаете [`ANTHROPIC_DEFAULT_OPUS_MODEL`](/docs/ru/model-config#environment-variables), поскольку `opus` затем разрешается в модель, которую вы установили.

388 388 

389Псевдоним в `CLAUDE_CODE_SUBAGENT_MODEL` всегда разрешается в версию, на которую указывает псевдоним, даже когда он называет семейство основного разговора.389Псевдоним в `CLAUDE_CODE_SUBAGENT_MODEL` всегда разрешается в версию, на которую указывает псевдоним, даже когда он называет семейство основного разговора. Установка переменной на `inherit` — это то же самое, что оставить её неустановленной.

390 390 

391Установка `CLAUDE_CODE_SUBAGENT_MODEL` сама по себе не изменяет модель, на которой работают встроенные subagents Explore и Plan. Чтобы изменить её, см. [Run every subagent on one model](#run-every-subagent-on-one-model).391Установка `CLAUDE_CODE_SUBAGENT_MODEL` сама по себе не изменяет модель, на которой работают встроенные subagents Explore и Plan. Чтобы изменить её, см. [Run every subagent on one model](#run-every-subagent-on-one-model).

392 392 

393До версии 2.1.251 `CLAUDE_CODE_SUBAGENT_MODEL` был первым в этом порядке и переопределял как параметр для конкретного вызова, так и frontmatter, включая `model: inherit`.393До версии 2.1.251 `CLAUDE_CODE_SUBAGENT_MODEL` был первым в этом порядке и переопределял как параметр для конкретного вызова, так и frontmatter, включая `model: inherit`.

394 394 

395Установка переменной на `inherit` — это то же самое, что оставить её неустановленной. До версии 2.1.196 это значение заставляло subagents использовать модель основного разговора и игнорировало оба этих источника.

396 

397Claude Code проверяет параметр для конкретного вызова, frontmatter и значения переменной окружения на соответствие списку разрешений [`availableModels`](/docs/ru/model-config#restrict-model-selection) вашей организации. Для заблокированного значения он подставляет другую модель:395Claude Code проверяет параметр для конкретного вызова, frontmatter и значения переменной окружения на соответствие списку разрешений [`availableModels`](/docs/ru/model-config#restrict-model-selection) вашей организации. Для заблокированного значения он подставляет другую модель:

398 396 

399* Когда заблокированное значение — это семейный псевдоним, такой как `opus`, Claude Code запускает subagent на самой новой версии этого семейства, которое разрешает список разрешений, следуя тем же [правилам подстановки и области поставщика](/docs/ru/model-config#restrict-model-selection), что и `/model`. До версии 2.1.222 Claude Code запускал subagent на унаследованной модели для заблокированного семейного псевдонима также.397* Когда заблокированное значение — это семейный псевдоним, такой как `opus`, Claude Code запускает subagent на самой новой версии этого семейства, которое разрешает список разрешений, следуя тем же [правилам подстановки и области поставщика](/docs/ru/model-config#restrict-model-selection), что и `/model`. До версии 2.1.222 Claude Code запускал subagent на унаследованной модели для заблокированного семейного псевдонима также.


620| `default` | Режим Manual: запрашивает разрешение |618| `default` | Режим Manual: запрашивает разрешение |

621| `acceptEdits` | Автоматически принимать редактирование файлов и общие команды файловой системы для путей в рабочей директории или `additionalDirectories` |619| `acceptEdits` | Автоматически принимать редактирование файлов и общие команды файловой системы для путей в рабочей директории или `additionalDirectories` |

622| `auto` | [Auto mode](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode): классификатор в фоне проверяет команды и записи в защищённые директории |620| `auto` | [Auto mode](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode): классификатор в фоне проверяет команды и записи в защищённые директории |

623| `dontAsk` | Автоматически отклонять запросы разрешений. Явно разрешённые инструменты по-прежнему работают; `AskUserQuestion`, MCP инструменты, отмеченные [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), и инструменты соединителя [которые ваша организация установила на `ask`](/docs/ru/mcp#organization-controls-on-connector-tools) в сессиях, где этот параметр достигает Claude Code, отклоняются, даже если вы их разрешили |621| `dontAsk` | Автоматически отклоняет запросы разрешений. Явно разрешённые инструменты по-прежнему работают; `AskUserQuestion`, инструменты MCP с пометкой [`requiresUserInteraction`](/docs/ru/mcp#require-approval-for-a-specific-tool), [чтение из сетевых путей](/docs/ru/permissions#network-paths) и инструменты коннекторов, [для которых ваша организация задала `ask`](/docs/ru/mcp#organization-controls-on-connector-tools), в сессиях, где эта настройка доходит до Claude Code, отклоняются, даже если вы их разрешили |

624| `bypassPermissions` | [Пропустить запросы разрешений](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode). Subagent работает в этом режиме только когда основной разговор это делает |622| `bypassPermissions` | [Пропустить запросы разрешений](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode). Subagent работает в этом режиме только когда основной разговор это делает |

625| `plan` | Режим Plan (исследование только для чтения) |623| `plan` | Режим Plan (исследование только для чтения) |

626 624 


1150* **Системный промпт**: собственный промпт агента плюс сведения об окружении, которые добавляет Claude Code, — а не системный промпт Claude Code. Пользовательские субагенты задают свой промпт в [теле markdown](#write-subagent-files) или в поле `prompt`. У встроенных агентов промпты заданы заранее.1148* **Системный промпт**: собственный промпт агента плюс сведения об окружении, которые добавляет Claude Code, — а не системный промпт Claude Code. Пользовательские субагенты задают свой промпт в [теле markdown](#write-subagent-files) или в поле `prompt`. У встроенных агентов промпты заданы заранее.

1151* **Сообщение задачи**: промпт делегирования, который Claude пишет, передавая работу.1149* **Сообщение задачи**: промпт делегирования, который Claude пишет, передавая работу.

1152* **Файлы CLAUDE.md**: все уровни [иерархии CLAUDE.md](/docs/ru/memory#how-claude-md-files-load), которые загружает основной диалог, включая `~/.claude/CLAUDE.md`, правила проекта, `CLAUDE.local.md`, файлы управляемых политик и любые [файлы `AGENTS.md`](/docs/ru/memory#agents-md), загружаемые как инструкции проекта. Встроенные агенты Explore и Plan это пропускают. Субагент, в определении которого задано [`omitClaudeMd`](#supported-frontmatter-fields), загружает только файлы управляемых политик, а если определение получено из [управляемых настроек](#choose-the-subagent-scope) — вообще ничего.1150* **Файлы CLAUDE.md**: все уровни [иерархии CLAUDE.md](/docs/ru/memory#how-claude-md-files-load), которые загружает основной диалог, включая `~/.claude/CLAUDE.md`, правила проекта, `CLAUDE.local.md`, файлы управляемых политик и любые [файлы `AGENTS.md`](/docs/ru/memory#agents-md), загружаемые как инструкции проекта. Встроенные агенты Explore и Plan это пропускают. Субагент, в определении которого задано [`omitClaudeMd`](#supported-frontmatter-fields), загружает только файлы управляемых политик, а если определение получено из [управляемых настроек](#choose-the-subagent-scope) — вообще ничего.

1153* **Статус Git**: снимок, который Claude Code считывает из вашего репозитория при запуске субагента. Отсутствует вне Git-репозитория или если снимок отключён; см. [`includeGitInstructions`](/docs/ru/settings-reference#includegitinstructions). Explore и Plan пропускают его в любом случае.1151* **Статус Git**: снимок, который Claude Code считывает из вашего репозитория при запуске субагента. Для субагента в [собственном worktree](/docs/ru/worktrees#isolate-subagents-with-worktrees) этого репозитория снимок показывает ветку, статус и последние коммиты этого worktree. Отсутствует вне Git-репозитория или если снимок отключён; см. [`includeGitInstructions`](/docs/ru/settings-reference#includegitinstructions). Explore и Plan пропускают его в любом случае.

1154* **Предзагруженные скиллы**: полное содержимое всех скиллов, перечисленных в [поле `skills`](#preload-skills-into-subagents) агента. Встроенные агенты не предзагружают скиллы.1152* **Предзагруженные скиллы**: полное содержимое всех скиллов, перечисленных в [поле `skills`](#preload-skills-into-subagents) агента. Встроенные агенты не предзагружают скиллы.

1155* **Список соседних агентов**: [системное напоминание](/docs/ru/glossary#system-reminder) со списком `main` и всех остальных именованных агентов в сессии; каждый из них — допустимое значение `to` для [`SendMessage`](#resume-subagents). Требуется Claude Code v2.1.206 или новее. Список появляется, только если инструменты субагента включают `SendMessage` и хотя бы у одного другого агента есть имя — неважно, дал ли его Claude при порождении или агент работает как участник [команды агентов](/docs/ru/agent-teams). Это снимок на момент запуска субагента, поэтому агенты, получившие имя позже, в нём не отображаются.1153* **Список соседних агентов**: [системное напоминание](/docs/ru/glossary#system-reminder) со списком `main` и всех остальных именованных агентов в сессии; каждый из них — допустимое значение `to` для [`SendMessage`](#resume-subagents). Требуется Claude Code v2.1.206 или новее. Список появляется, только если инструменты субагента включают `SendMessage` и хотя бы у одного другого агента есть имя — неважно, дал ли его Claude при порождении или агент работает как участник [команды агентов](/docs/ru/agent-teams). Это снимок на момент запуска субагента, поэтому агенты, получившие имя позже, в нём не отображаются.

1156 1154 

Details

122}122}

123```123```

124 124 

125<h2 id="see-session-status-in-your-terminal">

126 Просмотр статуса сессии в терминале

127</h2>

128 

129Если ваш терминал реализует протокол OSC 7501 Program Status Protocol, он может показывать, работает ли каждая интерактивная сессия Claude Code, ожидает ли она вас или завершила работу, что полезно, когда вы выполняете длительные задачи или несколько сессий одновременно. В Claude Code ничего включать не нужно. Чтобы узнать, реализует ли ваш терминал этот протокол и где он показывает статус, обратитесь к его документации.

130 

131Если терминал его реализует, но вы не видите статус сессии, проверьте каждую из следующих причин:

132 

133* **Версия Claude Code**: для отображения статуса требуется Claude Code v2.1.295 или новее. Выполните `claude --version` в оболочке, чтобы проверить.

134* **tmux**: внутри tmux Claude Code проверяет поддержку у tmux, а не у вашего терминала, и [`allow-passthrough`](#configure-tmux) на это не влияет. Запустите сессию вне tmux.

135* **Фоновая сессия**: [фоновая сессия](/docs/ru/agent-view) не сообщает свой статус вашему терминалу, даже когда вы к ней подключены. Вместо этого её статус отображается в представлении агентов.

136* **[`CLAUDE_CODE_DISABLE_TERMINAL_TITLE`](/docs/ru/env-vars#variables)**: если вы установили эту переменную в `1`, Claude Code не проверяет поддержку и не сообщает статус. Удалите её.

137 

125<h2 id="configure-tmux">138<h2 id="configure-tmux">

126 Настройка tmux139 Настройка tmux

127</h2>140</h2>

tools-reference.md +32 −11

Details

279 279 

280Инструмент Edit выполняет точную замену строк. Он принимает `old_string` и `new_string` и заменяет первую на вторую. Он не использует регулярные выражения или нечеткое совпадение.280Инструмент Edit выполняет точную замену строк. Он принимает `old_string` и `new_string` и заменяет первую на вторую. Он не использует регулярные выражения или нечеткое совпадение.

281 281 

282Для применения редактирования должны пройти три проверки. Перед любой из них путь, соответствующий [правилу отказа `Read`](/docs/ru/permissions#tool-specific-permission-rules), отклоняется, включая создание нового файла там. Отказ требует Claude Code v2.1.208 или позже.282Для применения редактирования должны пройти следующие проверки. Перед любой из них путь, соответствующий [правилу отказа `Read`](/docs/ru/permissions#tool-specific-permission-rules), отклоняется, включая создание нового файла там. Отказ требует Claude Code v2.1.208 или позже.

283 283 

284* **Read-before-edit**: Claude читает файл в текущем разговоре перед его редактированием, и чтение, прерванное уведомлением [`PARTIAL view`](#read-tool-behavior), не учитывается. Claude Opus 4.6, Claude Haiku 4.5 и более старые модели всегда требуют чтения. Более новые модели могут редактировать непрочитанный файл при чтении, когда чтение не требует запроса разрешения и инструмент Read доступен.284* **Read-before-edit**: Claude читает файл в текущем диалоге перед его редактированием, и чтение, прерванное уведомлением [`PARTIAL view`](#large-files), не учитывается. Claude Opus 4.6, Claude Haiku 4.5 и более старые модели всегда требуют чтения. Более новые модели могут редактировать непрочитанный файл, когда его чтение не потребовало бы запроса разрешения и инструмент Read доступен.

285* **Match**: `old_string` должна появиться в файле ровно так, как написано. Даже одного символа пробела или различия в отступе достаточно, чтобы не совпасть.285* **Match**: `old_string` должна появиться в файле ровно так, как написано. Даже одного символа пробела или различия в отступе достаточно, чтобы не совпасть.

286* **Uniqueness**: `old_string` должна появиться ровно один раз. Когда она появляется более одного раза, Claude либо предоставляет более длинную строку с достаточным окружающим контекстом, чтобы определить одно вхождение, либо устанавливает `replace_all: true` для замены всех вхождений.286* **Uniqueness**: `old_string` должна появиться ровно один раз. Когда она появляется более одного раза, Claude либо предоставляет более длинную строку с достаточным окружающим контекстом, чтобы определить одно вхождение, либо устанавливает `replace_all: true` для замены всех вхождений.

287 287 

288Файл, который изменился на диске после последнего чтения Claude, все еще может быть отредактирован, когда `old_string` точно совпадает с текущим содержимым однозначно и Claude Code может прочитать файл без запроса. Сопоставление с текущим содержимым файла обеспечивает безопасность, и результат отмечает, что файл содержит другие изменения, поэтому Claude перечитывает его перед редактированиями, которые зависят от окружающего содержимого. В любом другом случае, например при устаревшей `old_string` или той, которая совпадает более одного раза без `replace_all`, Claude читает файл снова перед редактированием. Расслабленная обработка непрочитанных и измененных файлов требует Claude Code v2.1.208 или позже; до этого Claude Code отказывал в любом редактировании файла, который он не читал в разговоре или который изменился на диске после чтения.288Файл, который изменился на диске после последнего чтения Claude, все еще может быть отредактирован, когда `old_string` точно совпадает с текущим содержимым однозначно и Claude Code может прочитать файл без запроса. Сопоставление с текущим содержимым файла обеспечивает безопасность, и результат отмечает, что файл содержит другие изменения, поэтому Claude перечитывает его перед редактированиями, которые зависят от окружающего содержимого. В любом другом случае, например при устаревшей `old_string` или той, которая совпадает более одного раза без `replace_all`, Claude читает файл снова перед редактированием. Расслабленная обработка непрочитанных и измененных файлов требует Claude Code v2.1.208 или позже; до этого Claude Code отказывал в любом редактировании файла, который он не читал в разговоре или который изменился на диске после чтения.

289 289 

290Просмотр файла с помощью Bash также удовлетворяет требованию read-before-edit, когда команда — это `cat`, `nl`, `bat`, `batcat`, `head`, `tail`, `sed -n 'X,Yp'`, `grep`, `egrep`, `fgrep` или `rg` на одном файле без конвейеров или перенаправлений. Выходные данные конвейера и другие команды Bash не учитываются при проверке read-before-edit.290Claude также может редактировать файл без отдельного вызова Read после того, как просмотрит его с помощью команды Bash, например `cat` или `grep`. Это команды `cat`, `nl`, `bat`, `batcat`, `head`, `tail`, `sed -n 'X,Yp'`, `grep`, `egrep`, `fgrep` и `rg`, каждая из которых запускается на одном файле без конвейеров или перенаправлений. Поиск, который не вывел ни одного совпадения, не считается чтением, как и любая команда вне этого списка.

291 291 

292Когда Claude просматривает файл таким образом, Claude Code также загружает все [`CLAUDE.md` подкаталогов](/docs/ru/memory#how-claude-md-files-load) и [правила с областью действия по пути](/docs/ru/memory#path-specific-rules), которые применяются к этому файлу. См. [Правила разрешений Read и Edit](/docs/ru/permissions#read-and-edit) для информации о том, какие команды Bash охватывают ваши правила отказа `Read` и `Edit`.292Когда Claude просматривает файл таким образом, Claude Code также загружает все [`CLAUDE.md` подкаталогов](/docs/ru/memory#how-claude-md-files-load) и [правила с областью действия по пути](/docs/ru/memory#path-specific-rules), которые применяются к этому файлу. См. [Правила разрешений Read и Edit](/docs/ru/permissions#read-and-edit) для информации о том, какие команды Bash охватывают ваши правила отказа `Read` и `Edit`.

293 293 

294<h3 id="non-utf-8-files">

295 Файлы не в UTF-8

296</h3>

297 

298Claude не может использовать [NotebookEdit](#notebookedit-tool-behavior) для файла, который не является допустимым UTF-8. То же касается Edit, если только файл не начинается с метки порядка байтов UTF-16 little-endian. Когда Claude пытается это сделать, инструмент отклоняет изменение и оставляет файл нетронутым. К отклоняемым файлам относятся текст не в ASCII, сохраненный в устаревшей кодировке, такой как Windows-1252 или Shift-JIS, двоичные файлы и UTF-8 с недопустимой последовательностью байтов.

299 

300Инструменты отказываются, поскольку они сохраняют весь файл обратно в UTF-8, что заменило бы каждый байт, который они не могут декодировать, символом замены `U+FFFD`. Вместо этого [ошибка, которую получает Claude](/docs/ru/errors#file-is-not-valid-utf-8), указывает ему внести изменение с помощью shell-команды, которая сохраняет кодировку файла, или сначала спросить вас о преобразовании файла в UTF-8.

301 

302Claude по-прежнему может заменить такой файл с помощью Write, если только новое содержимое не содержит `U+FFFD` — символ, который Read показывает Claude вместо байтов, которые не удается декодировать. Эта защита не позволяет Claude записать обратно искаженный текст, который он прочитал. Когда Write все же заменяет файл, он сохраняет новое содержимое в UTF-8, поэтому исходная кодировка файла теряется.

303 

294<h2 id="endconversation-tool-behavior">304<h2 id="endconversation-tool-behavior">

295 Поведение инструмента EndConversation305 Поведение инструмента EndConversation

296</h2>306</h2>


455* `insert`: добавить новую ячейку после целевой. Без `cell_id` новая ячейка переходит в начало notebook. Требует установки `cell_type` на `code` или `markdown`.465* `insert`: добавить новую ячейку после целевой. Без `cell_id` новая ячейка переходит в начало notebook. Требует установки `cell_type` на `code` или `markdown`.

456* `delete`: удалить целевую ячейку.466* `delete`: удалить целевую ячейку.

457 467 

468NotebookEdit отклоняет файл notebook, который не декодируется как UTF-8, по [тому же правилу, что и Edit](#non-utf-8-files), и ничего не записывает.

469 

458Правила разрешений используют формат пути `Edit(...)`. Правило, такое как `Edit(notebooks/**)`, охватывает вызовы NotebookEdit на файлы в этом каталоге.470Правила разрешений используют формат пути `Edit(...)`. Правило, такое как `Edit(notebooks/**)`, охватывает вызовы NotebookEdit на файлы в этом каталоге.

459 471 

460<h2 id="powershell-tool">472<h2 id="powershell-tool">


514* `"shell": "powershell"` на отдельных [command hooks](/docs/ru/hooks#command-hook-fields): запускает этот hook в PowerShell. Hooks запускают PowerShell напрямую, поэтому это работает независимо от `CLAUDE_CODE_USE_POWERSHELL_TOOL`.526* `"shell": "powershell"` на отдельных [command hooks](/docs/ru/hooks#command-hook-fields): запускает этот hook в PowerShell. Hooks запускают PowerShell напрямую, поэтому это работает независимо от `CLAUDE_CODE_USE_POWERSHELL_TOOL`.

515* `shell: powershell` в [skill frontmatter](/docs/ru/skills#frontmatter-reference): запускает блоки `` !`command` `` в PowerShell. Требует включения инструмента PowerShell.527* `shell: powershell` в [skill frontmatter](/docs/ru/skills#frontmatter-reference): запускает блоки `` !`command` `` в PowerShell. Требует включения инструмента PowerShell.

516 528 

517То же поведение сброса рабочего каталога основного сеанса, описанное в разделе инструмента Bash, применяется к командам PowerShell, включая переменную среды `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.529Команды PowerShell следуют [тому же поведению сброса рабочего каталога основной сессии](#what-persists-between-commands), что и команды Bash, включая переменную окружения `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.

530 

531Команды PowerShell также получают переменные, которые хуки сохраняют через `CLAUDE_ENV_FILE`, при условиях, описанных в разделе [Сохраняемые переменные в командах PowerShell](/docs/ru/hooks#persisted-variables-in-powershell-commands). Требуется Claude Code v2.1.296 или более поздней версии.

518 532 

519Код выхода 1 из `grep`, `rg`, `egrep`, `fgrep`, `findstr` и `git grep` означает отсутствие совпадений. Код выхода 1 из `git diff` означает наличие различий. Ни один из этих результатов не сообщается Claude как ошибка команды. Для `robocopy` коды выхода от 0 до 7 являются информационными результатами, такими как скопированные файлы или обнаруженные дополнительные файлы. Коды выхода 8 или выше считаются ошибками.533Код выхода 1 из `grep`, `rg`, `egrep`, `fgrep`, `findstr` и `git grep` означает отсутствие совпадений. Код выхода 1 из `git diff` означает наличие различий. Ни один из этих результатов не сообщается Claude как ошибка команды. Для `robocopy` коды выхода от 0 до 7 являются информационными результатами, такими как скопированные файлы или обнаруженные дополнительные файлы. Коды выхода 8 или выше считаются ошибками.

520 534 


547 561 

548Инструмент Read принимает путь к файлу и возвращает его содержимое с номерами строк. Claude инструктирован всегда передавать абсолютные пути.562Инструмент Read принимает путь к файлу и возвращает его содержимое с номерами строк. Claude инструктирован всегда передавать абсолютные пути.

549 563 

550По умолчанию Read возвращает файл с начала. Когда чтение всего файла превышает лимит токенов, Read возвращает первую страницу с уведомлением `PARTIAL view`, которое сообщает Claude, сколько файла он получил и как прочитать больше с помощью `offset` и `limit`. Чтение, которое передает явный `offset` или `limit` и все еще превышает лимит токенов, возвращает ошибку.

551 

552Чтение с явным `limit` останавливается, как только выбранные строки превышают то, что лимит токенов когда-либо мог бы вместить, и возвращает ошибку без загрузки остальной части диапазона. Ошибка сообщает Claude использовать меньший `limit` или искать конкретное содержимое с помощью [Grep](#grep-tool-behavior) вместо этого, когда одна строка такая большая. До версии 2.1.208 Claude Code загружал весь диапазон в память перед его отклонением, поэтому чтение файла с чрезвычайно длинной одной строкой могло привести к нехватке памяти.

553 

554Чтение пустого файла возвращает уведомление о том, что файл существует, но его содержимое пусто, а `offset` за последней строкой возвращает уведомление, дающее количество строк файла. До версии 2.1.208 чтение пустого файла возвращало уведомление о конце вместо этого.564Чтение пустого файла возвращает уведомление о том, что файл существует, но его содержимое пусто, а `offset` за последней строкой возвращает уведомление, дающее количество строк файла. До версии 2.1.208 чтение пустого файла возвращало уведомление о конце вместо этого.

555 565 

556Read обрабатывает несколько типов файлов помимо простого текста:566Read обрабатывает несколько типов файлов помимо простого текста:

557 567 

558* **Изображения**: PNG, JPG и другие форматы изображений возвращаются как визуальное содержимое, которое Claude может видеть, а не как необработанные байты. Claude Code изменяет размер и переупаковывает большие изображения, чтобы они соответствовали ограничениям размера изображения модели перед отправкой, поэтому Claude может видеть уменьшенную версию большого снимка экрана. Изображение, которое все еще больше 500 КБ после этого изменения размера, перекодируется в JPEG с пониженным качеством с неизменными размерами в пикселях. Если Claude пропустит мелкие детали на уровне пикселей в большом изображении, попросите его сначала обрезать интересующий регион, например с помощью ImageMagick через Bash.568* **Изображения**: PNG, JPG и другие форматы изображений возвращаются как визуальное содержимое, которое Claude может видеть, а не как необработанные байты. Claude Code изменяет размер и переупаковывает большие изображения, чтобы они соответствовали ограничениям размера изображения модели перед отправкой, поэтому Claude может видеть уменьшенную версию большого снимка экрана. Изображение, которое все еще больше 500 КБ после этого изменения размера, перекодируется в JPEG с пониженным качеством с неизменными размерами в пикселях. Если Claude пропустит мелкие детали на уровне пикселей в большом изображении, попросите его сначала обрезать интересующий регион, например с помощью ImageMagick через Bash.

559* **PDF-файлы**: Claude читает короткие файлы `.pdf` целиком. Для PDF-файлов длиннее 10 страниц он читает диапазоны с параметром `pages`, таким как `"1-5"`, до 20 страниц за раз. Чтение диапазонов страниц отображает страницы с помощью `pdftoppm` из poppler-utils, поэтому установите его с помощью `brew install poppler` на macOS или `apt-get install poppler-utils` на Debian и Ubuntu. На Windows и других платформах установите сборку poppler, которая помещает `pdftoppm` в ваш `PATH`. Без этого чтение диапазона страниц завершается ошибкой `pdftoppm is not installed`.569* **PDF-файлы**: Claude читает короткие файлы `.pdf` целиком. Для PDF-файлов длиннее 10 страниц он читает диапазоны с параметром `pages`, таким как `"1-5"`, до 20 страниц за раз. Чтение диапазонов страниц отображает страницы с помощью `pdftoppm` из poppler-utils, поэтому установите его с помощью `brew install poppler` на macOS или `apt-get install poppler-utils` на Debian и Ubuntu. На Windows и других платформах установите сборку poppler, которая помещает `pdftoppm` в ваш `PATH`. Без этого чтение диапазона страниц завершается ошибкой `pdftoppm is not installed`.

560* **Jupyter notebooks**: файлы `.ipynb` возвращают все ячейки с их выводом, включая код, markdown и визуализации. Claude Code отказывается читать файл notebook размером более 100 МБ; ошибка сообщает Claude, как прочитать часть notebook вместо этого, например срез ячеек, с помощью команды shell.570* **Jupyter notebooks**: файлы `.ipynb` возвращают все ячейки с их выводом, включая код, markdown и визуализации. Notebook, ячейки которого в сумме занимают более 256 КБ или превышают [лимит токенов](#large-files), вместо этого возвращает ошибку. Claude Code отказывается читать файл notebook размером более 100 МБ; ошибка сообщает Claude, как прочитать часть notebook вместо этого, например срез ячеек, с помощью команды shell.

561 571 

562Read читает только файлы, а не директории. Claude выводит содержимое директории с помощью команды shell, такой как `ls`.572Read читает только файлы, а не директории. Claude выводит содержимое директории с помощью команды shell, такой как `ls`.

563 573 

574<h3 id="large-files">

575 Большие файлы

576</h3>

577 

578Claude может прочитать текстовый файл, размер которого превышает то, что возвращает один вызов Read. По умолчанию один вызов возвращает не более 25 000 токенов или значение, заданное вами в [`CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS`](/docs/ru/env-vars), и отклоняет чтение целого файла размером более 256 КБ, поэтому Claude читает большой файл постранично с помощью `offset` и `limit`. В Claude Code v2.1.296 или новее он может вместо этого прочитать весь файл или длинный диапазон строк за один вызов, установив `allow_large: true`, когда это необходимо, например потому что вы попросили весь файл. Размер такого чтения рассчитывается исходя из места, оставшегося в [контекстном окне](/docs/ru/context-window) сессии, а не по лимитам по умолчанию. Для изображений, PDF-файлов и notebook их лимиты сохраняются.

579 

580Что получает Claude, когда чтение превышает лимиты по умолчанию:

581 

582* **Весь файл превышает лимит токенов**: первая страница файла с уведомлением `PARTIAL view`, сообщающим, какую часть файла он получил и как прочитать больше с помощью `offset` и `limit`

583* **Весь файл больше 256 КБ или чтение с `offset` или `limit` превышает лимит токенов**: ошибка, предлагающая прочитать часть файла с помощью `offset` и `limit` или вместо этого искать конкретное содержимое с помощью [Grep](#grep-tool-behavior)

584 

564<h2 id="sendfeedback-tool-behavior">585<h2 id="sendfeedback-tool-behavior">

565 Поведение инструмента SendFeedback586 Поведение инструмента SendFeedback

566</h2>587</h2>


734 Поведение инструмента Write755 Поведение инструмента Write

735</h2>756</h2>

736 757 

737Инструмент Write создает новый файл или перезаписывает существующий полным содержимым. Он не добавляет и не объединяет.758Инструмент Write создает новый файл или перезаписывает существующий полным содержимым. Он не добавляет и не объединяет. Write также перезаписывает существующий файл, байты которого не декодируются, и сохраняет новое содержимое в UTF-8, как описано в разделе [файлы не в UTF-8](#non-utf-8-files).

738 759 

739Требуется ли Claude прочитать существующий файл в текущем разговоре перед его перезаписью, зависит от модели и файла:760Требуется ли Claude прочитать существующий файл в текущем разговоре перед его перезаписью, зависит от модели и файла:

740 761 

741* Claude Opus 4.6, Claude Haiku 4.5 и более старые модели всегда требуют чтения, поэтому Write в непрочитанный существующий файл завершается с ошибкой.762* Claude Opus 4.6, Claude Haiku 4.5 и более старые модели всегда требуют чтения, поэтому Write в непрочитанный существующий файл завершается с ошибкой.

742* Более новые модели могут перезаписать файл, который они никогда не читали в этом сеансе, при тех же условиях, что и [read-before-edit](#edit-tool-behavior): чтение его не потребует запроса разрешения и инструмент Read доступен.763* Более новые модели могут перезаписать файл, который они никогда не читали в этом сеансе, при тех же условиях, что и [read-before-edit](#edit-tool-behavior): чтение его не потребует запроса разрешения и инструмент Read доступен.

743* Jupyter notebooks и файлы, которые Claude прочитал только частично с уведомлением [`PARTIAL view`](#read-tool-behavior), требуют чтения на всех моделях.764* Jupyter notebooks и файлы, которые Claude прочитал только частично с [уведомлением `PARTIAL view`](#large-files), требуют чтения на всех моделях.

744 765 

745Это ограничение не применяется к новым файлам. До версии 2.1.228 каждая модель требовала чтения перед перезаписью существующего файла.766Это ограничение не применяется к новым файлам. До версии 2.1.228 каждая модель требовала чтения перед перезаписью существующего файла.

746 767 

Details

1212Если вы видите `API Error: 403 Request not allowed` после входа:1212Если вы видите `API Error: 403 Request not allowed` после входа:

1213 1213 

1214* **Пользователи Claude Pro/Max**: проверьте, что ваша подписка активна на [claude.ai/settings](https://claude.ai/settings)1214* **Пользователи Claude Pro/Max**: проверьте, что ваша подписка активна на [claude.ai/settings](https://claude.ai/settings)

1215* **Пользователи Anthropic Console**: подтвердите, что ваша учётная запись имеет роль "Claude Code" или "Developer". Администраторы назначают это в Anthropic Console под Settings → Members.1215* **Пользователи Anthropic Console**: подтвердите, что ваша учётная запись имеет роль "Claude Code" или "Developer". Администраторы назначают её на странице Members в Console по адресу [platform.claude.com/settings/members](https://platform.claude.com/settings/members).

1216* **За прокси**: корпоративные прокси могут помешать запросам API. См. [network configuration](/docs/ru/network-config) для настройки прокси.1216* **За прокси**: корпоративные прокси могут помешать запросам API. См. [network configuration](/docs/ru/network-config) для настройки прокси.

1217 1217 

1218<h3 id="claude-code-access-has-not-been-granted-for-this-account">1218<h3 id="claude-code-access-has-not-been-granted-for-this-account">

vs-code.md +3 −2

Details

237 237 

238Чтобы восстановить заархивированную сессию, разверните **Archived sessions** и нажмите **Unarchive session**. Чтобы восстановить все заархивированные сессии сразу, наведите курсор на заголовок **Archived sessions** в списке сессий на панели действий и нажмите на его значок разархивирования; для этого требуется Claude Code v2.1.277 или новее. До v2.1.257 это действие называлось **Delete session** и скрывало сессию без возможности её восстановить. Удалённые тогда сессии появятся в **Archived sessions** после обновления.238Чтобы восстановить заархивированную сессию, разверните **Archived sessions** и нажмите **Unarchive session**. Чтобы восстановить все заархивированные сессии сразу, наведите курсор на заголовок **Archived sessions** в списке сессий на панели действий и нажмите на его значок разархивирования; для этого требуется Claude Code v2.1.277 или новее. До v2.1.257 это действие называлось **Delete session** и скрывало сессию без возможности её восстановить. Удалённые тогда сессии появятся в **Archived sessions** после обновления.

239 239 

240Если возобновляемый диалог завершился в режиме планирования, Claude Code восстанавливает режим планирования. Требуется Claude Code v2.1.246 или новее. Claude Code не восстанавливает его в двух случаях:240Если возобновляемый диалог завершился в режиме планирования, Claude Code восстанавливает режим планирования. Требуется Claude Code v2.1.246 или новее. Claude Code не восстанавливает его в следующих случаях:

241 241 

242* Расширение [выбирает начальный режим разрешений](/docs/ru/permission-modes#switch-permission-modes) из `claudeCode.initialPermissionMode` или из выбора, перенесённого из более раннего диалога242* Расширение [выбирает начальный режим разрешений](/docs/ru/permission-modes#switch-permission-modes) из `claudeCode.initialPermissionMode` или из выбора, перенесённого из более раннего диалога

243* У вас настроен `claudeCode.claudeProcessWrapper`243* У вас настроен `claudeCode.claudeProcessWrapper`

244* [Правило запрета](/docs/ru/permissions#manage-permissions) удаляет инструмент [`ExitPlanMode`](/docs/ru/tools-reference)

244 245 

245<h3 id="resume-cloud-sessions-from-claude-ai">246<h3 id="resume-cloud-sessions-from-claude-ai">

246 Возобновление облачных сессий из Claude.ai247 Возобновление облачных сессий из Claude.ai


479 480 

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

481 482 

482Чтобы каждая сессия подключалась к вашему браузеру при запуске без ввода `@browser`, см. раздел [Включение Chrome по умолчанию](/docs/ru/chrome#enable-chrome-by-default). О том, когда Claude Code запрашивает у вас подтверждение перед действием в браузере в сессии, подключённой таким образом, см. раздел [Запросы разрешений в сессиях VS Code](/docs/ru/chrome#permission-prompts-in-vs-code-sessions).483Чтобы каждая сессия подключалась к вашему браузеру при запуске без ввода `@browser`, см. раздел [Включение Chrome по умолчанию](/docs/ru/chrome#enable-chrome-by-default). О том, когда Claude Code запрашивает у вас подтверждение перед действием в браузере, см. раздел [Запросы разрешений в сессиях VS Code](/docs/ru/chrome#permission-prompts-in-vs-code-sessions).

483 484 

484Инструкции по настройке, полный список возможностей и устранение неполадок см. в разделе [Use Claude Code with Chrome](/docs/ru/chrome).485Инструкции по настройке, полный список возможностей и устранение неполадок см. в разделе [Use Claude Code with Chrome](/docs/ru/chrome).

485 486 

workflows.md +1 −1

Details

511* Проверьте `/model` перед крупным запуском, если вы обычно переключаетесь на меньшую модель для рутинной работы511* Проверьте `/model` перед крупным запуском, если вы обычно переключаетесь на меньшую модель для рутинной работы

512* Попросите Claude использовать меньшую модель для этапов, которые не требуют самой сильной, когда вы описываете задачу512* Попросите Claude использовать меньшую модель для этапов, которые не требуют самой сильной, когда вы описываете задачу

513 513 

514Когда список разрешённых моделей [`availableModels`](/docs/ru/model-config#restrict-model-selection) вашей организации блокирует модель, которую скрипт запрашивает для агента, этот агент работает на замещённой модели вместо этого, следуя тем же [правилам замещения, что и подагенты](/docs/ru/sub-agents#choose-a-model). Представление прогресса запуска в [`/workflows`](#watch-the-run) показывает предупреждение, называющее как запрошенную, так и замещённую модели.514Когда [список разрешённых моделей `availableModels`](/docs/ru/model-config#restrict-model-selection) вашей организации блокирует модель, которую скрипт запрашивает для агента, этот агент работает на замещённой модели вместо этого, следуя тем же [правилам замещения, что и субагенты](/docs/ru/sub-agents#choose-a-model).

515 515 

516<h3 id="set-a-size-guideline">516<h3 id="set-a-size-guideline">

517 Установить рекомендацию по размеру517 Установить рекомендацию по размеру

worktrees.md +3 −1

Details

268 268 

269 То же самое применяется к `.claude/agents` и `.claude/commands`. Для skills это требует Claude Code версии 2.1.277 или позже.269 То же самое применяется к `.claude/agents` и `.claude/commands`. Для skills это требует Claude Code версии 2.1.277 или позже.

270 270 

271Все это применяется независимо от того, создаёте ли вы worktree с `--worktree`, с `git worktree add` или через [десктопное приложение](/docs/ru/desktop#work-in-parallel-with-sessions).271Всё это применяется независимо от того, создаёте ли вы worktree с `--worktree` или с `git worktree add`.

272 

273В сессии worktree, которую вы запускаете из [десктопного приложения](/docs/ru/desktop#work-in-parallel-with-sessions), Claude Code читает конфигурацию проекта, такую как настройки, хуки, скиллы, агенты, команды и серверы [`.mcp.json`](/docs/ru/mcp#project-scope), из корня основной копии, а не из worktree. Команды хуков выполняются в этом корне, и `${CLAUDE_PROJECT_DIR}` указывает на него. Чтобы получить доступ к файлам, с которыми работает Claude, считайте путь worktree из [поля ввода `cwd`](/docs/ru/hooks#common-input-fields) хука. Файлы `CLAUDE.md` и `.claude/rules/` по-прежнему загружаются из worktree.

272 274 

273<h2 id="manage-worktrees-manually">275<h2 id="manage-worktrees-manually">

274 Управляйте worktrees вручную276 Управляйте worktrees вручную