SpyBara
Go Premium

Documentation 2026-11-12 23:02 UTC to 2026-11-13 23:02 UTC

66 files changed +1,226 −885. View all changes and history on the product overview
2026
Sat 14 03:01 Fri 13 23:02 Thu 12 23:02 Wed 11 22:59 Tue 10 21:57 Mon 9 23:02 Sun 8 22:58 Sat 7 23:58 Fri 6 23:01 Thu 5 23:03 Wed 4 23:59 Tue 3 23:58 Mon 2 23:57 Sun 1 23:57
Details

117 --network none \117 --network none \

118 --memory 2g \118 --memory 2g \

119 --cpus 2 \119 --cpus 2 \

120 --pids-limit 100 \120 --pids-limit 600 \

121 --user 1000:1000 \121 --user 1000:1000 \

122 -v /path/to/code:/workspace:ro \122 -v /path/to/code:/workspace:ro \

123 -v /var/run/proxy.sock:/var/run/proxy.sock:ro \123 -v /var/run/proxy.sock:/var/run/proxy.sock:ro \


135| `--tmpfs /tmp:...` | Предоставляет записываемый временный каталог, который очищается при остановке контейнера |135| `--tmpfs /tmp:...` | Предоставляет записываемый временный каталог, который очищается при остановке контейнера |

136| `--network none` | Отключает контейнер от внешних сетей |136| `--network none` | Отключает контейнер от внешних сетей |

137| `--memory 2g` | Ограничивает использование памяти, чтобы предотвратить истощение ресурсов |137| `--memory 2g` | Ограничивает использование памяти, чтобы предотвратить истощение ресурсов |

138| `--pids-limit 100` | Ограничивает количество процессов, чтобы предотвратить fork bombs |138| `--pids-limit 600` | Ограничивает количество процессов и потоков, чтобы предотвратить fork bombs |

139| `--user 1000:1000` | Запускается от непривилегированного пользователя |139| `--user 1000:1000` | Запускается от непривилегированного пользователя |

140| `-v ...:/workspace:ro` | Монтирует код только для чтения, чтобы агент мог анализировать, но не изменять его. **Избегайте монтирования чувствительных каталогов хоста, таких как `~/.ssh`, `~/.aws` или `~/.config`** |140| `-v ...:/workspace:ro` | Монтирует код только для чтения, чтобы агент мог анализировать, но не изменять его. **Избегайте монтирования чувствительных каталогов хоста, таких как `~/.ssh`, `~/.aws` или `~/.config`** |

141| `-v .../proxy.sock:...` | Монтирует Unix-сокет, подключенный к прокси, работающему вне контейнера (см. ниже) |141| `-v .../proxy.sock:...` | Монтирует Unix-сокет, подключенный к прокси, работающему вне контейнера (см. ниже) |

Details

104| `options` | [`Options`](#options) | Опциональный объект конфигурации. Аналогичен параметру `options` функции `query()` |104| `options` | [`Options`](#options) | Опциональный объект конфигурации. Аналогичен параметру `options` функции `query()` |

105| `initializeTimeoutMs` | `number` | Максимальное время в миллисекундах для ожидания инициализации подпроцесса. По умолчанию `60000`. Если инициализация не завершится вовремя, промис отклонится с ошибкой таймаута |105| `initializeTimeoutMs` | `number` | Максимальное время в миллисекундах для ожидания инициализации подпроцесса. По умолчанию `60000`. Если инициализация не завершится вовремя, промис отклонится с ошибкой таймаута |

106 106 

107Медленные [командные хуки](https://code.claude.com/docs/ru/hooks.md#command-hook-fields) [SessionStart](https://code.claude.com/docs/ru/hooks.md#sessionstart) и [Setup](https://code.claude.com/docs/ru/hooks.md#setup) получают дополнительное время, только если `initializeTimeoutMs` не задан:

108 

109* **Если вы оставите его незаданным:** время выполнения этих хуков не учитывается в 60-секундном значении по умолчанию, в сумме до 10 минут, поэтому инициализация может занять не более 11 минут.

110* **Если вы зададите значение, включая `60000`:** это значение является пределом, даже пока выполняется хук.

111 

112Для дополнительного времени требуется TypeScript Agent SDK v0.3.304 или позже.

113 

107#### Возвращаемое значение114#### Возвращаемое значение

108 115 

109Возвращает `Promise<`[`WarmQuery`](#warmquery)`>`, который разрешается после того, как подпроцесс запущен и завершил инициализационное рукопожатие.116Возвращает `Promise<`[`WarmQuery`](#warmquery)`>`, который разрешается после того, как подпроцесс запущен и завершил инициализационное рукопожатие.


128 135 

129### `prewarm()`136### `prewarm()`

130 137 

131*Альфа.* Запускает процесс Claude Code как запасной до того, как вы узнаете, какую сессию он будет обслуживать, чтобы вы могли привязать его к сессии позже с помощью [`claim()`](#spareprocess). Используйте его в приложении, которое загружается до того, как пользователь выберет папку. Требуется TypeScript Agent SDK v0.3.282 или позже.138*Альфа.* Запускает процесс Claude Code как запасной до того, как вы узнаете, какую сессию он будет обслуживать, чтобы вы могли привязать его к сессии позже с помощью [`claim()`](#spareprocess). Требуется TypeScript Agent SDK v0.3.282 или позже.

132 139 

133`prewarm()` завершает то же инициализационное рукопожатие, что и [`startup()`](#startup), при этом процесс ожидает в `options.cwd`, если вы его задали, а в противном случае — в приватном временном каталоге внутри вашего каталога конфигурации Claude Code. Рабочий каталог сессии, её хуки `SessionStart`, её stdio MCP-серверы, а также её CLAUDE.md и контекст git ждут привязки. Запасной процесс занимает примерно 230–260 МБ памяти во время ожидания. Если ваш [`spawnClaudeCodeProcess`](#options) запускает Claude Code на другой машине или в контейнере, установите в `options.cwd` каталог, который там существует, чтобы запасной процесс ждал в нём.140Используйте `prewarm()`, когда ваше приложение загружается до того, как пользователь выберет папку.

134 141 

135```typescript theme={null}142```typescript theme={null}

136function prewarm(params?: {143function prewarm(params?: {


139}): Promise<SpareProcess>;146}): Promise<SpareProcess>;

140```147```

141 148 

142`options` и `initializeTimeoutMs` означают то же самое, что и для `startup()`, за исключением того, что `options.cwd` задаёт только каталог, в котором ждёт запасной процесс. Промис разрешается с [`SpareProcess`](#spareprocess) после того, как процесс завершил инициализационное рукопожатие. `prewarm()` выбрасывает исключение, если `options` устанавливает `resume`, `continue` или `forkSession`, потому что у запасного процесса ещё нет сессии. Всё, что привязка не может установить, например `mcpServers`, `hooks`, `canUseTool`, `settingSources`, `systemPrompt` и `plugins`, зафиксировано на время жизни запасного процесса, поэтому держите один запасной процесс на каждый отдельный набор этих параметров и выполняйте предварительный разогрев снова, когда они изменяются.149#### Параметры

150 

151| Параметр | Тип | Описание |

152| :- | :- | :- |

153| `options` | [`Options`](#options) | Опциональный объект конфигурации того же типа, который принимает `startup()` |

154| `initializeTimeoutMs` | `number` | Максимальное время в миллисекундах для ожидания инициализации запасного процесса. По умолчанию `60000`. Если инициализация не завершится вовремя, промис отклонится с ошибкой таймаута |

155 

156`prewarm()` учитывает время, затраченное на хуки [Setup](https://code.claude.com/docs/ru/hooks.md#setup), в `initializeTimeoutMs`, даже если вы оставите его незаданным. Чтобы дать медленным хукам Setup больше времени, задайте большее значение.

157 

158#### Возвращаемое значение

159 

160Возвращает `Promise<`[`SpareProcess`](#spareprocess)`>`, который разрешается, как только запасной процесс готов к привязке.

161 

162Промис отклоняется, если вы запрашиваете `resume`, `continue` или `forkSession` в `options`, потому что у запасного процесса ещё нет сессии.

163 

164#### Как работает запасной процесс

165 

166* **Где ждёт запасной процесс:** в приватном временном каталоге внутри вашего каталога конфигурации Claude Code или в `options.cwd`, если вы задали его в `prewarm()`.

167* **Если ваш [`spawnClaudeCodeProcess`](#options) запускает Claude Code на другой машине или в контейнере:** передайте в `prewarm()` `options.cwd`, который там существует, потому что временный каталог по умолчанию создаётся на вашей машине.

168* **Память:** каждый запасной процесс занимает примерно 230–260 МБ во время ожидания.

169* **Что не происходит до вызова `claim()`:**

170 * Переход в рабочий каталог, который вы передаёте в `claim()`

171 * Выполнение хуков SessionStart

172 * Запуск stdio MCP-серверов

173 * Загрузка CLAUDE.md и контекста git

174* **Что привязка не может изменить:** такие параметры, как `mcpServers`, `hooks`, `canUseTool`, `settingSources` и `plugins`, сохраняют свои значения из `prewarm()`. В [`SpareProcess`](#spareprocess) перечислено, что может задать привязка.

175* **Если сессиям нужны разные значения этих параметров:** держите отдельный запасной процесс для каждого набора значений.

143 176 

144#### Пример177#### Пример

145 178 

agent-view.md +5 −3

Details

8 8 

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

10 10 

11![Agent view в терминале. Строка в верхней части подсчитывает сеансы, ожидающие ввода, работающие и завершённые. Четыре сеанса сгруппированы под Требуется ввод, Работает и Завершено. Каждая строка показывает имя сеанса, его последний статус или вопрос и время. В нижней части находится поле ввода для описания новой задачи и строка подсказок сочетаний клавиш.](https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/agent-view-light.png?fit=max\&auto=format\&n=HDAmBwgbrZVk0pOt\&q=85\&s=d6905012bee31f3e6b3920b09c05dd02)11![Agent view в терминале. Строка в верхней части подсчитывает сеансы, ожидающие ввода, работающие и завершённые. Четыре сеанса сгруппированы под Требуется ввод, Работает и Завершено. Каждая строка показывает имя сеанса, его последний статус или вопрос и время. В нижней части находится поле ввода для описания новой задачи и строка подсказок сочетаний клавиш.](https://mintcdn.com/claude-code/v_J840yKc6uuKDX_/images/agent-view-light.png?fit=max\&auto=format\&n=v_J840yKc6uuKDX_\&q=85\&s=bd95fda83ea66ca8b2e0e7b68f8cb29e)

12 12 

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

14 14 


628 628 

629* Agent view удаляет его вместе с незафиксированными изменениями, поэтому сначала сделайте коммит того, что хотите сохранить.629* Agent view удаляет его вместе с незафиксированными изменениями, поэтому сначала сделайте коммит того, что хотите сохранить.

630* `claude rm` сохраняет его вместе со строкой сессии, если в нём есть незафиксированные изменения.630* `claude rm` сохраняет его вместе со строкой сессии, если в нём есть незафиксированные изменения.

631* Ни agent view, ни `claude rm` не удаляют worktree, который использует или заблокировала другая работающая сессия, и повторное удаление этого не меняет. Claude Code сохраняет worktree и сессию и называет сохранённый каталог и причину; в agent view в строке сессии отображается `not deleted`. Закройте другую сессию, затем удалите снова.631* Ни agent view, ни `claude rm` не удаляют worktree, который использует или заблокировала другая работающая сессия, и повторное удаление этого не меняет. Claude Code сохраняет worktree и сессию и называет сохранённый каталог и причину; в agent view в строке сессии отображается `not removed`. Закройте другую сессию, затем удалите снова.

632* Если вы удаляете сессию, в worktree которой есть коммиты, о которых Claude Code не может подтвердить, что они сохранены где-то ещё, Claude Code сохраняет worktree и сессию, а в сообщении указываются ветка worktree и количество коммитов без push. Сообщение также предлагает два варианта дальнейших действий: выполнить push коммитов или удалить снова, чтобы отбросить их.632* Если вы удаляете сессию, в worktree которой есть коммиты, о которых Claude Code не может подтвердить, что они сохранены где-то ещё, Claude Code сохраняет worktree и сессию, а в сообщении указываются ветка worktree и количество коммитов без push. Сообщение также предлагает два варианта дальнейших действий: выполнить push коммитов или удалить снова, чтобы отбросить их.

633 633 

634 Коммиты в удалённом репозитории не блокируют удаление. Не блокируют его и коммиты в локальной копии ветки по умолчанию вашего удалённого репозитория `origin`, если эта ветка извлечена в основной рабочей копии, то есть в самом каталоге репозитория, а не в worktree.634 Коммиты в удалённом репозитории не блокируют удаление. Не блокируют его и коммиты в локальной копии ветки по умолчанию вашего удалённого репозитория `origin`, если эта ветка извлечена в основной рабочей копии, то есть в самом каталоге репозитория, а не в worktree.


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

936 936 

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

938* Более 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>` возобновляет её без этого сообщения в нижней строке.938* Более 48 часов, например если машина была выключена несколько дней, сессия отображается как остановленная с пометкой `ended while the background service was off`.

939 

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

939 941 

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

941 943 

Details

349 349 

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

351 351 

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

353 353 

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

355 355 

356[Цепочка резервных моделей](https://code.claude.com/docs/ru/model-config.md#fallback-model-chains), которую вы настраиваете, заменяет переключение уровня: при этих отказах Claude Code переключается на ваш настроенный резервный вариант. Чтобы отклонённые запросы не выполнялись вместо переключения, установите [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](https://code.claude.com/docs/ru/env-vars). Цепочка резервных моделей, которую вы настроили, всё ещё переключается при этих отказах; удалите цепочку также, если вы хотите, чтобы каждый отклонённый запрос не выполнялся.356* Ваша сессия работает на закреплённой модели, на выбранной вами конкретной версии или на [ARN профиля вывода приложения](#map-each-model-version-to-an-inference-profile)

357* Ни одна из [моделей, которые пробует Claude Code](#startup-model-checks), не доступна. В [авторежиме](https://code.claude.com/docs/ru/permission-modes.md#enable-auto-mode-on-bedrock-agent-platform-or-foundry) Claude Code переключается только на модель, которую авторежим поддерживает на Amazon Bedrock.

358 

359Чтобы продолжить работу, выполните `/model` в сессии и нажмите `s` на модели, которую может использовать ваша учётная запись; при этом ваше значение по умолчанию не изменится. Ошибка `403` отображается как [AWS authentication failed](https://code.claude.com/docs/ru/errors.md#aws-authentication-failed).

360 

361Чтобы отклонённые запросы завершались ошибкой вместо переключения, установите [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](https://code.claude.com/docs/ru/env-vars). Если вы настроили цепочку резервных моделей, удалите и её, так как Claude Code всё равно переключится на этот резервный вариант.

357 362 

358## Префиксы профилей кросс-региональной инференции363## Префиксы профилей кросс-региональной инференции

359 364 

Details

222 222 

223Каждое из них — это массив описаний на прозе, читаемых как правила на естественном языке. Для инструментов на основе паттернов с жесткими блокировками, которые работают перед классификатором, используйте [`permissions.deny`](https://code.claude.com/docs/ru/permissions).223Каждое из них — это массив описаний на прозе, читаемых как правила на естественном языке. Для инструментов на основе паттернов с жесткими блокировками, которые работают перед классификатором, используйте [`permissions.deny`](https://code.claude.com/docs/ru/permissions).

224 224 

225> [!NOTE]

226>

227> В сессии [Code Mode](https://code.claude.com/docs/ru/code-mode.md#permission-checks) классификатор применяет `hard_deny` и `soft_deny`, когда проверяет код Claude, а не к каждому вызову инструмента, который делает этот код. Правила `permissions.deny` применяются к каждому вызову.

228 

225Внутри классификатора приоритет работает в четыре уровня:229Внутри классификатора приоритет работает в четыре уровня:

226 230 

227* Правила `hard_deny` блокируют безусловно. Намерение пользователя и исключения `allow` не применяются.231* Правила `hard_deny` блокируют безусловно. Намерение пользователя и исключения `allow` не применяются.


283 287 

284По умолчанию узкие правила Bash и PowerShell, такие как `Bash(npm test)`, остаются в силе в режиме auto. Claude Code разрешает их до запуска классификатора, если только команда не содержит [разрешённые домены для отдельных команд](https://code.claude.com/docs/ru/sandboxing.md#per-command-allowed-domains-in-auto-mode). Claude Code приостанавливает только широкие правила, которые предоставляют произвольное выполнение кода, такие как `Bash(*)` или интерпретаторы с подстановочными знаками, вместе с каждым правилом, которое называет [`Monitor`](https://code.claude.com/docs/ru/tools-reference#monitor-tool), потому что команды Monitor выполняются через shell. Это означает, что узкое правило всё ещё может пропустить деструктивный аргумент без того, чтобы классификатор его увидел, например путь скрипта или флаг, который префикс правила не предусмотрел.288По умолчанию узкие правила Bash и PowerShell, такие как `Bash(npm test)`, остаются в силе в режиме auto. Claude Code разрешает их до запуска классификатора, если только команда не содержит [разрешённые домены для отдельных команд](https://code.claude.com/docs/ru/sandboxing.md#per-command-allowed-domains-in-auto-mode). Claude Code приостанавливает только широкие правила, которые предоставляют произвольное выполнение кода, такие как `Bash(*)` или интерпретаторы с подстановочными знаками, вместе с каждым правилом, которое называет [`Monitor`](https://code.claude.com/docs/ru/tools-reference#monitor-tool), потому что команды Monitor выполняются через shell. Это означает, что узкое правило всё ещё может пропустить деструктивный аргумент без того, чтобы классификатор его увидел, например путь скрипта или флаг, который префикс правила не предусмотрел.

285 289 

286Установите `autoMode.classifyAllShell` в значение `true`, чтобы приостановить каждое правило разрешения Bash и PowerShell, пока активен режим auto, так чтобы классификатор оценивал каждую команду shell независимо от вашего списка разрешений, кроме [критических путей удаления](https://code.claude.com/docs/ru/permission-modes.md#critical-paths).290Установите `autoMode.classifyAllShell` в значение `true`, чтобы приостановить каждое правило разрешения Bash и PowerShell, пока активен режим auto, так чтобы классификатор оценивал каждую команду shell независимо от вашего списка разрешений, кроме [критических путей удаления](https://code.claude.com/docs/ru/permission-modes.md#critical-paths). В сессии [Code Mode](https://code.claude.com/docs/ru/code-mode.md#permission-checks) классификатор проверяет код, который запускает команды, даже если эта настройка включена.

287 291 

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

289{293{

Details

315 {315 {

316 "matcher": "Edit|Write",316 "matcher": "Edit|Write",

317 "hooks": [317 "hooks": [

318 { "type": "command", "command": "npx prettier --write --ignore-unknown \"$(jq -r '.tool_input.file_path')\"" }318 { "type": "command", "command": "f=$(jq -r '.tool_input.file_path') && npx prettier --write --ignore-unknown \"$f\"" }

319 ]319 ]

320 }320 }

321 ]321 ]

Details

74| PostgreSQL 11 или новее | Обеспечивает процесс входа с устройства и счётчики ограничений частоты запросов. Подойдёт управляемый сервис PostgreSQL, включая самый маленький тариф; см. [какие базы данных поддерживаются](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#postgres). При использовании [лимитов расходов](https://code.claude.com/docs/ru/claude-apps-gateway-spend-limits.md) в нём также хранятся постоянные таблицы расходов, аудита и удостоверений, для которых следует делать резервные копии. Рекомендуется TLS через `?sslmode=require`. Для PostgreSQL 11, 12 и 13 на сервере шлюза требуется Claude Code v2.1.290 или новее. Проект PostgreSQL больше не поддерживает эти версии, поэтому по возможности используйте более новую. |74| PostgreSQL 11 или новее | Обеспечивает процесс входа с устройства и счётчики ограничений частоты запросов. Подойдёт управляемый сервис PostgreSQL, включая самый маленький тариф; см. [какие базы данных поддерживаются](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#postgres). При использовании [лимитов расходов](https://code.claude.com/docs/ru/claude-apps-gateway-spend-limits.md) в нём также хранятся постоянные таблицы расходов, аудита и удостоверений, для которых следует делать резервные копии. Рекомендуется TLS через `?sslmode=require`. Для PostgreSQL 11, 12 и 13 на сервере шлюза требуется Claude Code v2.1.290 или новее. Проект PostgreSQL больше не поддерживает эти версии, поэтому по возможности используйте более новую. |

75| Вышестоящий провайдер моделей | Учётные данные Amazon Bedrock, учётные данные Claude Platform on AWS, учётные данные Google Cloud, ресурс Microsoft Foundry или API-ключ Anthropic. Поддерживается несколько вышестоящих провайдеров с переключением при отказе. |75| Вышестоящий провайдер моделей | Учётные данные Amazon Bedrock, учётные данные Claude Platform on AWS, учётные данные Google Cloud, ресурс Microsoft Foundry или API-ключ Anthropic. Поддерживается несколько вышестоящих провайдеров с переключением при отказе. |

76| HTTPS | Шлюз должен быть доступен по `https://` с ноутбуков разработчиков и из любого браузера, используемого для входа; шлюз отдаёт страницу проверки устройства на том же слушателе. Либо предоставьте TLS-сертификат через `listen.tls`, либо запустите шлюз за ingress с терминированием TLS, и в обоих случаях задайте в `listen.public_url` внешний origin. При `/login` Claude Code принимает обычный origin `http://` только в том случае, если хост шлюза — loopback: `localhost`, `127.0.0.1` или `::1`. |76| HTTPS | Шлюз должен быть доступен по `https://` с ноутбуков разработчиков и из любого браузера, используемого для входа; шлюз отдаёт страницу проверки устройства на том же слушателе. Либо предоставьте TLS-сертификат через `listen.tls`, либо запустите шлюз за ingress с терминированием TLS, и в обоих случаях задайте в `listen.public_url` внешний origin. При `/login` Claude Code принимает обычный origin `http://` только в том случае, если хост шлюза — loopback: `localhost`, `127.0.0.1` или `::1`. |

77| Адрес в частной сети | При `/login` Claude Code требует, чтобы имя хоста или IP-адрес шлюза разрешались только в частные адреса: RFC 1918, link-local, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7` или loopback. Для размещаемого вами шлюза любой публичный адрес вне объявленного вами блока отклоняется; см. [модель угроз](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#threat-model-summary) в руководстве по развёртыванию. Если машины разработчиков направляют HTTPS через корпоративный прокси, для входа также требуется, чтобы хост прокси разрешался в частные адреса; если это не так, добавьте хост шлюза в `NO_PROXY`, чтобы CLI подключался напрямую. Если ваша внутренняя сеть использует публичное адресное пространство IPv4, принадлежащее вашей организации, [объявите эти блоки](#allow-a-gateway-on-public-address-space-you-own), чтобы `/login` принимал шлюз в них. |77| Адрес в частной сети | При `/login` Claude Code требует, чтобы имя хоста или IP-адрес шлюза разрешались только в частные адреса: диапазоны RFC 1918 и link-local, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7` и loopback. См. [модель угроз](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#threat-model-summary). Если ваша внутренняя сеть использует публичное адресное пространство IPv4, принадлежащее вашей организации, [объявите эти блоки](#allow-a-gateway-on-public-address-space-you-own), чтобы `/login` принимал шлюз в них. |

78| Среда выполнения Linux | Сервер шлюза работает только как нативный бинарный файл Linux. macOS подходит для локальной разработки. Windows не поддерживается в качестве серверной платформы. |78| Среда выполнения Linux | Сервер шлюза работает только как нативный бинарный файл Linux. macOS подходит для локальной разработки. Windows не поддерживается в качестве серверной платформы. |

79 79 

80Если к хосту шлюза применяется `HTTPS_PROXY` или `HTTP_PROXY`, для входа также требуется либо прокси, имя хоста которого разрешается в частные адреса, либо хост шлюза в `NO_PROXY` на машинах разработчиков. Если на этих машинах также задан `no_proxy`, добавьте хост шлюза и туда, иначе запросы к модели по-прежнему будут идти через прокси.

81 

80### Шаги82### Шаги

81 83 

82**1. Зарегистрируйте OAuth-клиент в вашем IdP**84**1. Зарегистрируйте OAuth-клиент в вашем IdP**

Details

16 16 

17## Структура файла17## Структура файла

18 18 

19Пять разделов [обязательны](#required-sections). Все остальные разделы [опциональны](#optional-sections), и пропущенный раздел принимает значения по умолчанию. Неизвестные ключи приводят к сбою при загрузке, поэтому опечатка выявляется как именованная ошибка, а не как молча игнорируемый параметр.19Пять разделов [обязательны](#required-sections). Все остальные разделы [опциональны](#optional-sections), и пропущенный раздел принимает значения по умолчанию.

20 20 

21**Обязательные разделы:**21**Обязательные разделы:**

22 22 


51 51 

52### `listen`52### `listen`

53 53 

54Блок `listen` определяет, где шлюз принимает запросы: адрес и порт привязки, видимый извне origin и необязательное завершение TLS.54Блок `listen` определяет, где работает шлюз: адрес и порт привязки, внешне видимый origin и необязательное завершение TLS.

55 55 

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

57| - | - | - |57| - | - | - |

58| `host` | Нет | Адрес привязки. По умолчанию `0.0.0.0`. |58| `host` | Нет | Адрес привязки. По умолчанию `0.0.0.0`. |

59| `port` | Нет | Порт привязки. По умолчанию `8080`. |59| `port` | Нет | Порт привязки. По умолчанию `8080`. |

60| `public_url` | Если `host` не loopback | Видимый извне origin `https://`, из которого формируются `redirect_uri` для IdP и метаданные обнаружения. Обязателен всякий раз, когда `host` не является loopback-адресом, независимо от того, завершается ли TLS на прокси, таком как ALB, Ingress или Cloud Run, или на самом шлюзе через `tls`, потому что шлюз никогда не выводит собственный origin из заголовков `X-Forwarded-*`: клиент может их подделать. Без него шлюз не запустится. Параметр `trusted_proxies` ниже управляет только определением IP-адреса клиента. Также обязателен для включения [телеметрии](#telemetry), потому что шлюз формирует из этого URL эндпоинт OTLP, который передаёт клиентам. |60| `public_url` | Если `host` не является loopback-адресом | Внешне видимый origin `https://`, используемый для формирования `redirect_uri` IdP и метаданных обнаружения. Обязателен всякий раз, когда `host` не является loopback-адресом, независимо от того, завершается ли TLS на прокси, таком как ALB, Ingress или Cloud Run, или на самом шлюзе через `tls`, поскольку шлюз никогда не определяет собственный origin по заголовкам `X-Forwarded-*`: их может подделать клиент. Без него шлюз не запустится. Описанный ниже `trusted_proxies` управляет только определением IP-адреса клиента. Также обязателен для включения [телеметрии](#telemetry), поскольку шлюз формирует из этого URL эндпоинт OTLP, который он передаёт клиентам. |

61| `tls.cert` / `tls.key` | Нет | Пути к PEM-файлам, если шлюз сам завершает TLS |61| `tls.cert` / `tls.key` | Нет | Пути к PEM-файлам, если шлюз сам завершает TLS |

62| `trusted_proxies` | Нет | CIDR или IP-адреса фронтендов, которым следует доверять. Если задано, шлюз доверяет `X-Forwarded-For` только от этих узлов и записывает реальный IP-адрес клиента для ограничения частоты запросов по IP и аудита. |62| `trusted_proxies` | Нет | CIDR или IP-адреса фронтендов, которым следует доверять. Если поле задано, шлюз доверяет `X-Forwarded-For` только от этих узлов и записывает реальный IP-адрес клиента для ограничения частоты запросов по IP и аудита. |

63 63 

64Указывайте фронтенд в `trusted_proxies`, только если последняя запись `X-Forwarded-For`, которую он передаёт дальше, не написана ни одним разработчиком. Не указывайте ни одного адреса или диапазона, с которых подключаются разработчики. Фронтенд, который добавляет адрес каждого получаемого соединения, подходит. Фронтенд, который передаёт заголовок дальше в том виде, в каком его отправляют разработчики, — нет.64Указывайте фронтенд в `trusted_proxies`, только если последняя запись `X-Forwarded-For`, которую он передаёт дальше, не написана ни одним разработчиком. Не указывайте ни адресов, ни диапазонов, с которых подключаются разработчики. Фронтенд, который добавляет адрес каждого получаемого соединения, подходит. Фронтенд, который передаёт заголовок дальше в том виде, в каком его отправляют разработчики, не подходит.

65 65 

66Записи `X-Forwarded-For` в форме `ipv4:port` или `[ipv6]:port`, как их записывают некоторые балансировщики нагрузки, читаются без порта. IPv6-адрес с добавленным портом без квадратных скобок может быть прочитан как другой адрес или не прочитан вовсе. Отключите опцию порта на любом прокси, который записывает такую форму.66Записи `X-Forwarded-For` в виде `ipv4:port` или `[ipv6]:port`, как их пишут некоторые балансировщики нагрузки, читаются с отброшенным портом. IPv6-адрес с добавленным портом без квадратных скобок может быть прочитан как другой адрес или не прочитан вовсе. Отключите опцию добавления порта на любом прокси, который пишет адреса в таком виде.

67 67 

68### `oidc`68### `oidc`

69 69 

70Блок `oidc` подключает шлюз к вашему поставщику идентификации и определяет, кто может входить. В нём указываются издатель и OAuth-клиент, задаются claims, содержащие email и группы, и вход ограничивается по домену email или по группе.70Блок `oidc` подключает шлюз к вашему поставщику удостоверений и определяет, кто может входить. В нём указываются издатель и OAuth-клиент, сопоставляются claims, содержащие email и группы, и ограничивается вход по домену электронной почты или группе.

71 71 

72OpenID Connect (OIDC) — это протокол SSO, который шлюз использует для работы с вашим поставщиком идентификации; что нужно зарегистрировать на стороне IdP, см. в разделе [Настройка поставщика идентификации](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#identity-provider-setup).72OpenID Connect (OIDC) — это протокол SSO, который шлюз использует с вашим поставщиком удостоверений; о том, что нужно зарегистрировать на стороне IdP, см. в разделе [Настройка поставщика удостоверений](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#identity-provider-setup).

73 73 

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

75| - | - | - |75| - | - | - |

76| `issuer` | Да | Базовый URL обнаружения OIDC. Документ обнаружения должен отдаваться по пути `/.well-known/openid-configuration`. В production используйте HTTPS; шлюз принимает издателя `http://`. Loopback-издатель, например `http://localhost:8081`, отклоняется [защитой от SSRF](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#threat-model-summary), если в окружении шлюза не задано `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1`. |76| `issuer` | Да | Базовый адрес OIDC discovery. Должен отдавать документ обнаружения по пути `/.well-known/openid-configuration`. В продакшене используйте HTTPS; шлюз принимает издателя с `http://`. Loopback-издатель, например `http://localhost:8081`, отклоняется [защитой от SSRF](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#threat-model-summary), если в окружении шлюза не задано `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1`. |

77| `client_id` | Да | Из регистрации OAuth-клиента |77| `client_id` | Да | Из регистрации вашего OAuth-клиента |

78| `client_secret` | Если `token_endpoint_auth_method` не равен `private_key_jwt` | Из регистрации OAuth-клиента. Не указывайте его, если используете [аутентификацию клиента по сертификату](#certificate-client-authentication). |78| `client_secret` | Если `token_endpoint_auth_method` не равен `private_key_jwt` | Из регистрации вашего OAuth-клиента. Не указывайте его, если используете [аутентификацию клиента по сертификату](#certificate-client-authentication). |

79| `allowed_email_domains` | Нет | Отклонять id\_token, claim `email` которых не относится ни к одному из этих доменов, без учёта регистра. Дополнительная защита от ошибок конфигурации мультитенантного IdP. Независимо от этой настройки id\_token, claim `email_verified` которого явно равен `false`, всегда отклоняется. |79| `allowed_email_domains` | Нет | Отклонять id\_token, у которых claim `email` не относится ни к одному из этих доменов, без учёта регистра. Эшелонированная защита от неправильной конфигурации мультитенантного IdP. Независимо от этой настройки id\_token, у которого claim `email_verified` явно равен `false`, всегда отклоняется. |

80| `allowed_groups` | Нет | Разрешить вход только участникам этих групп IdP, сопоставляемых с `groups_claim`. Пользователь из разрешённого домена email, не входящий ни в одну из этих групп, отклоняется. Требует, чтобы IdP выдавал claim групп. Сопоставление — это точное сравнение строк с учётом регистра со значениями в этом claim, и шлюз не раскрывает вложенные группы: чтобы допустить участников подгруппы, укажите подгруппу здесь или настройте IdP на выдачу развёрнутого членства. |80| `allowed_groups` | Нет | Ограничить вход участниками этих групп IdP, сопоставляемых по `groups_claim`. Пользователь из разрешённого домена электронной почты, не состоящий ни в одной из этих групп, отклоняется. Требуется, чтобы IdP выдавал claim групп. Сопоставление — это точное сравнение строк с учётом регистра со значениями в этом claim, и шлюз не раскрывает вложенные группы: чтобы допустить участников подгруппы, укажите здесь подгруппу или настройте IdP на выдачу развёрнутого членства. |

81| `groups_claim` | Нет | Какой claim id\_token содержит членство в группах. По умолчанию `groups`. Microsoft Entra выдаёт роли приложения в `roles`. Принимает простой ключ или RFC 6901 JSON Pointer, например `/resource_access/gateway/roles`, для вложенных claims. |81| `groups_claim` | Нет | Какой claim id\_token содержит членство в группах. По умолчанию `groups`. Microsoft Entra выдаёт роли приложения в `roles`. Принимает плоский ключ или JSON Pointer по RFC 6901, например `/resource_access/gateway/roles`, для вложенных claims. |

82| `google_groups` | Нет | Получать группы вошедшего пользователя через Google Workspace Admin SDK Directory API, поскольку id\_token Google не содержит claim групп. Укажите в `service_account_json_path` файл ключа сервисного аккаунта с делегированием на уровне домена для scope `https://www.googleapis.com/auth/admin.directory.group.readonly`, а в `admin_email` — администратора Workspace, от имени которого действует сервисный аккаунт; Directory API требует реального субъекта-администратора. Email-адреса групп каждого пользователя становятся его claim групп, поэтому `allowed_groups` и `managed.policies.match.groups` сопоставляются с email-адресами групп. |82| `google_groups` | Нет | Получать группы вошедшего пользователя через Directory API из Google Workspace Admin SDK, поскольку id\_token Google не содержит claim групп. Задайте в `service_account_json_path` файл ключа сервисного аккаунта с делегированием на уровне домена для scope `https://www.googleapis.com/auth/admin.directory.group.readonly`, а в `admin_email` — администратора Workspace, от имени которого действует сервисный аккаунт; Directory API требует реального субъекта-администратора. Адреса электронной почты групп каждого пользователя становятся его claim групп, поэтому `allowed_groups` и `managed.policies.match.groups` сопоставляются по адресам электронной почты групп. |

83| `email_claim` | Нет | Какой claim id\_token содержит email пользователя. По умолчанию `email`. Некоторые IdP, например ADFS и Entra B2C, вместо него выдают `upn` или `preferred_username`. Принимает простой ключ, JSON Pointer или список резервных ключей, из которых используется первый присутствующий. |83| `email_claim` | Нет | Какой claim id\_token содержит email пользователя. По умолчанию `email`. Некоторые IdP, такие как ADFS и Entra B2C, вместо него выдают `upn` или `preferred_username`. Принимает плоский ключ, JSON Pointer или список резервных ключей, из которых используется первый присутствующий. |

84| `scopes` | Нет | Полное переопределение scope OIDC, которые запрашивает шлюз. По умолчанию `[openid, profile, email, offline_access]`. Задайте, если ваш IdP отклоняет нераспознанные scope или требует пользовательский scope для выдачи групп или email. Должен включать `openid`. Без `offline_access` refresh-токены отключаются, и разработчикам приходится заново проходить вход в браузере каждые `session.ttl_hours`. Рецепты scope для отдельных IdP, например для потока refresh-токенов Google, см. в разделе [Настройка поставщика идентификации](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#identity-provider-setup). |84| `scopes` | Нет | Полное переопределение OIDC scope, запрашиваемых шлюзом. По умолчанию `[openid, profile, email, offline_access]`. Задайте, если ваш IdP отклоняет неизвестные ему scope или требует пользовательский scope для выдачи групп или email. Должен включать `openid`. Удаление `offline_access` отключает refresh-токены, поэтому разработчики будут заново проходить вход через браузер каждые `session.ttl_hours`. Рецепты scope для отдельных IdP, например для потока refresh-токенов Google, см. в разделе [Настройка поставщика удостоверений](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#identity-provider-setup). |

85| `scope_on_refresh` | Нет | Также отправлять `scope` с тем же списком, что и в запросе входа, когда шлюз обменивает refresh-токен. По умолчанию `false`: запрос обновления не содержит `scope`. Большинство IdP возвращают id\_token при каждом обновлении, и им это не нужно. Задайте `true`, если ваш IdP возвращает id\_token при обновлении, только когда снова запрошен `openid`, как Okta описывает для своего refresh grant. Без id\_token каждое обновление зависит от того, примет ли эндпоинт userinfo IdP обновлённый access-токен. Если вы ограничиваете вход или сопоставляете политики по группам, а id\_token вашего IdP при обновлении их не содержит, также задайте `userinfo_fallback: true`, чтобы шлюз получал их из эндпоинта userinfo. IdP, предоставивший меньше scope, чем запрошено, может отклонить обновление с `invalid_scope`, в том числе для существующих сессий, если при включённой настройке вы добавите записи в `scopes`. Удалите ключ, если после его установки обновления начнут завершаться ошибкой на `token_endpoint`. Требует Claude Code v2.1.260 или новее на сервере шлюза. |85| `scope_on_refresh` | Нет | Также отправлять `scope` с тем же списком, что и в запросе на вход, когда шлюз обменивает refresh-токен. По умолчанию `false`: запрос обновления не содержит `scope`. Большинство IdP возвращают id\_token при каждом обновлении, и им это не нужно. Установите `true`, если ваш IdP возвращает id\_token при обновлении, только когда снова запрошен `openid`, — именно так Okta документирует свой refresh grant. Без id\_token каждое обновление зависит от того, примет ли эндпоинт userinfo IdP обновлённый access-токен. Если вы ограничиваете вход или сопоставляете политики по группам, а id\_token вашего IdP при обновлении их не содержит, также задайте `userinfo_fallback: true`, чтобы шлюз заполнял их из эндпоинта userinfo. IdP, предоставивший меньше scope, чем было запрошено, может отклонить обновление с `invalid_scope`, в том числе для существующих сессий, если вы добавите записи в `scopes`, пока этот параметр включён. Удалите ключ, если после его установки обновления начнут завершаться ошибкой на `token_endpoint`. Требуется Claude Code v2.1.260 или новее на сервере шлюза. |

86| `extra_auth_params` | Нет | Дополнительные параметры запроса, дословно добавляемые к запросу авторизации IdP. Это механизм переопределения для поведения, специфичного для IdP, например `access_type: offline` для refresh-токенов Google, `domain_hint` для некоторых тенантов Entra или `acr_values` для потоков step-up. Не может переопределять параметры протокола, которыми управляет шлюз: `state`, `nonce`, `redirect_uri`, PKCE, `scope`, `response_type`, `response_mode` и `client_id`. |86| `extra_auth_params` | Нет | Дополнительные параметры запроса, добавляемые к запросу авторизации IdP дословно. Это механизм переопределения поведения, специфичного для IdP, например `access_type: offline` для refresh-токенов Google, `domain_hint` для некоторых тенантов Entra или `acr_values` для потоков повышения уровня аутентификации. Не может переопределять протокольные параметры, которыми управляет шлюз: `state`, `nonce`, `redirect_uri`, PKCE, `scope`, `response_type`, `response_mode` и `client_id`. |

87| `userinfo_fallback` | Нет | Если id\_token не содержит email или группы, получать их из `/userinfo`. Нужно для облегчённых access-токенов Keycloak, org server Okta и минимальных токенов ADFS. Приоритет остаётся за id\_token; userinfo только заполняет пробелы. По умолчанию `false`. |87| `userinfo_fallback` | Нет | Если id\_token не содержит email или группы, получать их из `/userinfo`. Нужно для облегчённых access-токенов Keycloak, сервера организации Okta и минимальных токенов ADFS. id\_token остаётся авторитетным источником; userinfo лишь заполняет пробелы. По умолчанию `false`. |

88| `use_pkce` | Нет | Отправлять вызов PKCE (S256) в запросе авторизации. По умолчанию `true`. Задавайте `false`, только если ваш IdP отклоняет PKCE для этого конфиденциального клиента. |88| `use_pkce` | Нет | Отправлять challenge PKCE (S256) в запросе авторизации. По умолчанию `true`. Устанавливайте `false`, только если ваш IdP отклоняет PKCE для этого конфиденциального клиента. |

89| `clock_skew_seconds` | Нет | Допустимое расхождение часов при проверке временных claims id\_token. По умолчанию `0`, то есть строгая проверка. Увеличьте, если сразу после входа видите ошибки "token expired / not yet valid" из-за расхождения часов хоста и IdP. |89| `clock_skew_seconds` | Нет | Допустимое расхождение часов при проверке временных claims id\_token. По умолчанию `0`, то есть строгая проверка. Увеличьте, если сразу после входа видите ошибки «token expired / not yet valid» из-за расхождения часов хоста и IdP. |

90| `token_endpoint_auth_method` | Нет | Как шлюз аутентифицируется на эндпоинте токенов IdP: `client_secret_basic`, `client_secret_post` или `private_key_jwt` для [аутентификации клиента по сертификату](#certificate-client-authentication). По умолчанию шлюз выбирает один из двух методов `client_secret` на основе того, что объявляет IdP. |90| `token_endpoint_auth_method` | Нет | Как шлюз проходит аутентификацию на эндпоинте токенов IdP: `client_secret_basic`, `client_secret_post` или `private_key_jwt` для [аутентификации клиента по сертификату](#certificate-client-authentication). По умолчанию шлюз выбирает один из двух методов `client_secret` исходя из того, что объявляет IdP. |

91| `client_assertion` | С `private_key_jwt` | Блок с `private_key_pem` и `certificate_pem`: закрытый ключ и сертификат для [аутентификации клиента по сертификату](#certificate-client-authentication). Требует v2.1.284 или новее. |91| `client_assertion` | При `private_key_jwt` | Блок с `private_key_pem` и `certificate_pem`: закрытый ключ и сертификат для [аутентификации клиента по сертификату](#certificate-client-authentication). Требуется v2.1.284 или новее. |

92| `id_token_signed_response_alg` | Нет | Ожидаемый алгоритм подписи id\_token. По умолчанию `RS256`. Задайте для IdP, которые подписывают с помощью ES256, PS256 или EdDSA. |92| `id_token_signed_response_alg` | Нет | Ожидаемый алгоритм подписи id\_token. По умолчанию `RS256`. Задайте для IdP, которые подписывают с помощью ES256, PS256 или EdDSA. |

93| `additional_authorized_parties` | Нет | Дополнительные допустимые значения `azp` помимо `client_id`, для потоков брокера и обмена токенами Keycloak |93| `additional_authorized_parties` | Нет | Дополнительные значения `azp`, принимаемые помимо `client_id`, для потоков брокера Keycloak и обмена токенов |

94| `discovery_url` | Нет | Получать документ обнаружения по этому URL вместо выведения его из `issuer`, для IdP за прокси, который переписывает хост издателя. Путь должен содержать `/.well-known/`. |94| `discovery_url` | Нет | Загружать документ обнаружения с этого URL, а не выводить его из `issuer`, — для IdP за прокси, который переписывает хост издателя. Путь должен содержать `/.well-known/`. |

95| `use_proxy` | Нет | Отправлять собственные запросы шлюза к IdP через прямой прокси из `HTTPS_PROXY` или `HTTP_PROXY` с учётом `NO_PROXY`. Значение `false` оставляет эти запросы прямыми. Требует v2.1.227 или новее; см. [Запросы к IdP через прямой прокси](#idp-requests-through-a-forward-proxy) ниже. |95| `use_proxy` | Нет | Отправлять собственные запросы шлюза к IdP через forward-прокси из `HTTPS_PROXY` или `HTTP_PROXY` с учётом `NO_PROXY`. `false` оставляет эти запросы прямыми. Требуется v2.1.227 или новее; см. ниже раздел [Запросы к IdP через forward-прокси](#idp-requests-through-a-forward-proxy). |

96| `form_action_origins` | Нет | Дополнительные origin для директивы `Content-Security-Policy: form-action` страницы `/device`. Шлюз уже разрешает `'self'` и origin обнаруженного `authorization_endpoint`, но Chrome применяет `form-action` ко всей цепочке перенаправлений. Если ваш IdP перенаправляет через второй хост, например Azure AD с федерацией в ADFS, Okta по схеме hub-spoke или корпоративный перехватчик SSO, перечислите все origin, через которые может перенаправляться запрос авторизации. |96| `form_action_origins` | Нет | Дополнительные origin для директивы `Content-Security-Policy: form-action` страницы `/device`. Шлюз уже разрешает `'self'` и origin обнаруженного `authorization_endpoint`, но Chrome применяет `form-action` ко всей цепочке перенаправлений. Если ваш IdP перенаправляет через второй хост, например Azure AD с федерацией в ADFS, Okta с топологией hub-spoke или корпоративный перехватчик SSO, перечислите все origin, через которые может проходить запрос авторизации. |

97| `ca_cert_pem` | Нет | Сам сертификат CA в кодировке PEM, а не путь к файлу. Заменяет системное хранилище доверенных сертификатов только для запросов к IdP. Чтобы загрузить смонтированный файл, напишите `${file:/etc/gateway/idp-ca.pem}`. Используйте для Keycloak или Dex за корпоративной PKI. |97| `ca_cert_pem` | Нет | Сам CA-сертификат в кодировке PEM, а не путь к файлу. Заменяет системное хранилище доверенных сертификатов только для запросов к IdP. Чтобы загрузить смонтированный файл, напишите `${file:/etc/gateway/idp-ca.pem}`. Используйте для Keycloak или Dex за корпоративной PKI. |

98 98 

99#### Аутентификация клиента по сертификату99#### Аутентификация клиента по сертификату

100 100 

101Если ваш поставщик идентификации аутентифицирует OAuth-клиентов по сертификату вместо секрета клиента, как это делает Microsoft Entra с учётными данными-сертификатами, задайте `token_endpoint_auth_method: private_key_jwt`. Требует Claude Code v2.1.284 или новее на сервере шлюза.101Если ваш поставщик удостоверений аутентифицирует OAuth-клиентов по сертификату, а не по секрету клиента, как это делает Microsoft Entra с учётными данными-сертификатами, задайте `token_endpoint_auth_method: private_key_jwt`. Требуется Claude Code v2.1.284 или новее на сервере шлюза.

102 102 

103В этой конфигурации шлюз не отправляет секрет. Он аутентифицируется на эндпоинте токенов IdP с помощью короткоживущего JWT, подписанного закрытым ключом сертификата, когда разработчик входит в систему и каждый раз, когда шлюз обновляет его сессию. JWT подписывается алгоритмом RS256 и идентифицирует сертификат заголовками отпечатков `x5t` и `x5t#S256`, а не `kid`. Ваш IdP должен уметь находить зарегистрированный сертификат по отпечатку.103В такой конфигурации шлюз не отправляет секрет. Он проходит аутентификацию на эндпоинте токенов IdP с помощью короткоживущего JWT, подписанного закрытым ключом сертификата, когда разработчик входит в систему и каждый раз, когда шлюз обновляет его сессию. JWT подписывается с помощью RS256 и идентифицирует сертификат заголовками отпечатков `x5t` и `x5t#S256`, а не `kid`. Ваш IdP должен уметь находить зарегистрированный сертификат по отпечатку.

104 104 

105**1. Создайте ключ и сертификат**105**1. Создайте ключ и сертификат**

106 106 

107Создайте незашифрованный закрытый ключ RSA длиной не менее 2048 бит в формате PEM PKCS#8 или PKCS#1 и сертификат для него. Шлюз отказывается запускаться с ключом, который не соответствует этим условиям. Эта команда `openssl` создаёт такой ключ с самоподписанным сертификатом, действительным в течение одного года:107Создайте незашифрованный закрытый ключ RSA длиной не менее 2048 бит в формате PEM PKCS#8 или PKCS#1 и сертификат для него. Шлюз отказывается запускаться с любым ключом, не удовлетворяющим этим условиям. Эта команда `openssl` создаёт такой ключ с самоподписанным сертификатом, действительным в течение одного года:

108 108 

109```bash theme={null}109```bash theme={null}

110openssl req -x509 -newkey rsa:2048 -nodes -keyout idp-client.key -out idp-client.crt -days 365 -subj "/CN=claude-gateway"110openssl req -x509 -newkey rsa:2048 -nodes -keyout idp-client.key -out idp-client.crt -days 365 -subj "/CN=claude-gateway"


114 114 

115**2. Загрузите сертификат в IdP**115**2. Загрузите сертификат в IdP**

116 116 

117Загрузите сертификат, а не закрытый ключ, в регистрацию приложения шлюза в IdP.117Загрузите сертификат, но не закрытый ключ, в регистрацию приложения шлюза в IdP.

118 118 

119**3. Добавьте ключ и сертификат в gateway.yaml**119**3. Добавьте ключ и сертификат в gateway.yaml**

120 120 

121Передайте шлюзу закрытый ключ и сертификат в блоке `client_assertion`. Не указывайте `client_secret`, потому что шлюз отказывается запускаться, если он задан вместе с `private_key_jwt`. Этот блок `oidc` аутентифицирует шлюз в тенанте Microsoft Entra с помощью сертификата:121Передайте шлюзу закрытый ключ и сертификат в блоке `client_assertion`. Не указывайте `client_secret`, поскольку шлюз отказывается запускаться, если он задан вместе с `private_key_jwt`. Этот блок `oidc` аутентифицирует шлюз в тенанте Microsoft Entra с помощью сертификата:

122 122 

123```yaml theme={null}123```yaml theme={null}

124oidc:124oidc:


130 certificate_pem: ${file:/etc/gateway/idp-client.crt}130 certificate_pem: ${file:/etc/gateway/idp-client.crt}

131```131```

132 132 

133Оба значения — это содержимое PEM, а не пути к файлам, поэтому загружайте смонтированные файлы с помощью `${file:/path}`, как в примере. Шлюз отказывается запускаться, если `certificate_pem` не является одним PEM-сертификатом без остальной цепочки, открытый ключ которого соответствует `private_key_pem`.133Оба значения — это содержимое PEM, а не пути к файлам, поэтому загружайте смонтированные файлы с помощью `${file:/path}`, как в примере. Шлюз отказывается запускаться, если `certificate_pem` не является одним PEM-сертификатом (без остальной части цепочки), открытый ключ которого совпадает с `private_key_pem`.

134 134 

135**4. Перезапустите шлюз и проверьте лог загрузки**135**4. Перезапустите шлюз и проверьте лог загрузки**

136 136 

137Перезапустите шлюз и найдите эту строку в логе загрузки:137Перезапустите шлюз и найдите в логе загрузки такую строку:

138 138 

139```text theme={null}139```text theme={null}

140[gateway] 2026-10-01T23:07:40.512Z info oidc: client authentication private_key_jwt; certificate CN=claude-gateway, SHA-1 thumbprint DE92821854EE8BAA1D98C758FAA04AABE80B9F57, expires Oct 1 23:07:31 2027 GMT140[gateway] 2026-10-01T23:07:40.512Z info oidc: client authentication private_key_jwt; certificate CN=claude-gateway, SHA-1 thumbprint DE92821854EE8BAA1D98C758FAA04AABE80B9F57, expires Oct 1 23:07:31 2027 GMT

141```141```

142 142 

143Сравните отпечаток SHA-1 с тем, который IdP показывает для загруженного вами сертификата. Если срок действия сертификата истёк или он ещё не действителен, шлюз всё равно запускается, но записывает в лог предупреждение о том, что входы и обновления будут завершаться ошибкой, пока вы его не замените. Чтобы убедиться, что IdP принимает сертификат, попросите одного разработчика войти через шлюз.143Сравните отпечаток SHA-1 с тем, который IdP показывает для загруженного вами сертификата. Если срок действия сертификата истёк или ещё не начался, шлюз всё равно запускается, но записывает в лог предупреждение о том, что вход и обновления будут завершаться ошибкой, пока вы не замените сертификат. Чтобы убедиться, что IdP принимает сертификат, попросите одного разработчика войти через шлюз.

144 144 

145#### Ротация сертификата клиента145#### Ротация сертификата клиента

146 146 

147Шлюз читает ключ и сертификат один раз при загрузке, поэтому изменённый файл вступает в силу только после перезапуска. Выполняйте ротацию в таком порядке, чтобы ни один запрос токена не предъявлял сертификат, которого нет у IdP:147Шлюз читает ключ и сертификат один раз при загрузке, поэтому изменённый файл вступает в силу только после перезапуска. Выполняйте ротацию в следующем порядке, чтобы ни один запрос токена не предъявлял сертификат, которого нет у IdP:

148 148 

1491. Загрузите новый сертификат в IdP в дополнение к старому.1491. Загрузите новый сертификат в IdP рядом со старым.

1502. Замените файлы ключа и сертификата, которые загружает `gateway.yaml`, затем перезапустите шлюз. Если вы запускаете несколько реплик, подойдёт [последовательный перезапуск](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#upgrades), потому что у IdP есть оба сертификата, пока вы не удалите старый.1502. Замените файлы ключа и сертификата, которые загружает `gateway.yaml`, затем перезапустите шлюз. Если вы запускаете несколько реплик, подойдёт [поэтапный перезапуск](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#upgrades), поскольку у IdP есть оба сертификата, пока вы не удалите старый.

1513. После перезапуска всех реплик удалите старый сертификат из IdP.1513. После перезапуска всех реплик удалите старый сертификат из IdP.

152 152 

153#### Запросы к IdP через прямой прокси153#### Запросы к IdP через forward-прокси

154 154 

155Upstream для инференса учитывают `HTTPS_PROXY` и `HTTP_PROXY` во всех версиях. Собственные запросы шлюза к IdP — обнаружение, JWKS, токены и userinfo — идут напрямую, если вы не зададите `oidc.use_proxy: true`, что требует v2.1.227 или новее. Если задана переменная прокси, `use_proxy` не задан, а издатель не входит в `NO_PROXY`, шлюз оставляет эти запросы прямыми и при загрузке записывает в лог уведомление с просьбой сделать выбор; `use_proxy: false` оставляет их прямыми и отключает уведомление.155Upstream-серверы инференса учитывают `HTTPS_PROXY` и `HTTP_PROXY` во всех версиях. Собственные запросы шлюза к IdP — обнаружение, JWKS, токен и userinfo — идут напрямую, если вы не задали `oidc.use_proxy: true`, что требует v2.1.227 или новее. Если задана переменная прокси, `use_proxy` не задан, а издатель не охвачен `NO_PROXY`, шлюз оставляет эти запросы прямыми и при загрузке записывает в лог уведомление с просьбой сделать выбор; `use_proxy: false` оставляет их прямыми и отключает уведомление.

156 156 

157С `use_proxy: true` под сам разрешает имя хоста каждого эндпоинта IdP и просит прокси выполнить `CONNECT` к полученному IP-адресу, поэтому прокси должен разрешать `CONNECT` к IP-адресу каждого хоста, указанного в документе обнаружения, а не только издателя. Используйте URL прокси `http://`. `ca_cert_pem` и [защита от SSRF](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#threat-model-summary) действуют и на пути через прокси.157При `use_proxy: true` под сам разрешает имя хоста каждого эндпоинта IdP и просит прокси выполнить `CONNECT` к полученному IP-адресу, поэтому прокси должен принимать `CONNECT` к IP-адресу каждого хоста, указанного в документе обнаружения, а не только издателя. Используйте URL прокси с `http://`. `ca_cert_pem` и [защита от SSRF](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#threat-model-summary) действуют и на пути через прокси.

158 158 

159[Исходящий трафик только через прокси](#proxy-only-egress) меняет оба этих момента: пока он активен, запросы к IdP идут через прокси, если вы не зададите `use_proxy: false`, а шлюз передаёт прокси каждое имя хоста IdP, не разрешая его предварительно.159[Исходящий трафик только через прокси](#proxy-only-egress) меняет оба этих правила: пока он активен, запросы к IdP идут через прокси, если вы не задали `use_proxy: false`, а шлюз передаёт прокси имя хоста каждого IdP, не разрешая его предварительно.

160 160 

161#### Исходящий трафик только через прокси161#### Исходящий трафик только через прокси

162 162 

163Задайте `CLAUDE_GATEWAY_PROXY_IS_EGRESS_BOUNDARY=1` в окружении шлюза рядом с `HTTPS_PROXY`, если под обращается к другим хостам только через этот прямой прокси и не может сам разрешать публичные DNS-имена, или если прокси отклоняет `CONNECT` к IP-адресу. Требует v2.1.277 или новее. Это переменная окружения, а не ключ `gateway.yaml`, чтобы ничто в файле конфигурации не могло ослабить проверку адресов шлюзом.163Задайте `CLAUDE_GATEWAY_PROXY_IS_EGRESS_BOUNDARY=1` в окружении шлюза рядом с `HTTPS_PROXY`, если под обращается к другим хостам только через этот forward-прокси и не может сам разрешать публичные DNS-имена или если прокси отказывает в `CONNECT` к IP-адресу. Требуется v2.1.277 или новее. Это переменная окружения, а не ключ `gateway.yaml`, чтобы ничто в файле конфигурации не могло ослабить проверку адресов шлюзом.

164 164 

165```bash theme={null}165```bash theme={null}

166export HTTPS_PROXY=http://proxy.corp.example.com:3128166export HTTPS_PROXY=http://proxy.corp.example.com:3128


169export CLAUDE_GATEWAY_PROXY_IS_EGRESS_BOUNDARY=1169export CLAUDE_GATEWAY_PROXY_IS_EGRESS_BOUNDARY=1

170```170```

171 171 

172Пока исходящий трафик только через прокси активен, шлюз при загрузке записывает в лог одну строку `network:`.172Пока режим исходящего трафика только через прокси активен, шлюз при загрузке записывает в лог одну строку `network:`.

173 173 

174Каждая строка ниже — это один класс исходящих запросов шлюза с заданным `HTTPS_PROXY`: по умолчанию и при активном исходящем трафике только через прокси.174Каждая строка ниже — это один класс исходящих запросов шлюза с заданной `HTTPS_PROXY`: по умолчанию и при активном режиме исходящего трафика только через прокси.

175 175 

176| Исходящий запрос | По умолчанию | Исходящий трафик только через прокси активен |176| Исходящий запрос | По умолчанию | Режим только через прокси активен |

177| - | - | - |177| - | - | - |

178| Upstream `provider: anthropic`, обмен токенов Workload Identity Federation, экспорт `telemetry.forward_to` | Разрешается и проверяется локально, затем `CONNECT` к проверенному IP-адресу через прокси. К сборщику телеметрии, указанному в `NO_PROXY`, шлюз обращается напрямую | Имя хоста передаётся прокси |178| Upstream-серверы `provider: anthropic`, обмен токенов Workload Identity Federation, экспорт `telemetry.forward_to` | Разрешается и проверяется локально, затем `CONNECT` к проверенному IP-адресу через прокси. К сборщику телеметрии, указанному в `NO_PROXY`, выполняется прямое подключение | Имя хоста передаётся прокси |

179| Обнаружение IdP, JWKS, токены и userinfo | Напрямую, если не задано [`oidc.use_proxy: true`](#idp-requests-through-a-forward-proxy); в этом случае `CONNECT` к проверенному IP-адресу | Имя хоста передаётся прокси, если только `oidc.use_proxy: false` не оставляет внутренний IdP прямым |179| Обнаружение IdP, JWKS, токен и userinfo | Напрямую, если не задано [`oidc.use_proxy: true`](#idp-requests-through-a-forward-proxy); в этом случае `CONNECT` к проверенному IP-адресу | Имя хоста передаётся прокси, за исключением случая, когда `oidc.use_proxy: false` оставляет прямое подключение к внутреннему IdP |

180| Upstream Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform и Microsoft Foundry; поиск групп Google | Имя хоста передаётся прокси | Без изменений |180| Upstream-серверы Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform и Microsoft Foundry; получение групп Google | Имя хоста передаётся прокси | Без изменений |

181 181 

182Исходящий трафик только через прокси остаётся выключенным, если окружение шлюза не удовлетворяет всем трём условиям:182Режим исходящего трафика только через прокси остаётся выключенным, за исключением случая, когда окружение шлюза удовлетворяет всем трём следующим условиям:

183 183 

184* Задан `HTTPS_PROXY` или `HTTP_PROXY`.184* Задана `HTTPS_PROXY` или `HTTP_PROXY`.

185* `NO_PROXY` и `no_proxy` пусты. Если ваша платформа внедряет любую из них в поды, задайте обеим пустое значение в контейнере шлюза. Если указать сборщик телеметрии в `NO_PROXY`, исходящий трафик только через прокси останется выключенным.185* `NO_PROXY` и `no_proxy` пусты. Если ваша платформа внедряет любую из них в поды, задайте обеим пустое значение в контейнере шлюза. Указание сборщика телеметрии в `NO_PROXY` оставляет режим выключенным.

186* `CLAUDE_GATEWAY_ALLOW_LOOPBACK` не включена. Сборщик или IdP на собственном loopback пода нельзя сочетать с исходящим трафиком только через прокси, потому что loopback-адрес, переданный прокси, указывал бы на сам хост прокси, поэтому дайте этим сервисам адрес, доступный для прокси. По той же причине, пока исходящий трафик только через прокси активен, шлюз полностью отклоняет имена вида `localhost`.186* `CLAUDE_GATEWAY_ALLOW_LOOPBACK` не включена. Сборщик или IdP на собственном loopback-интерфейсе пода нельзя совмещать с режимом исходящего трафика только через прокси, поскольку loopback-адрес, переданный прокси, был бы loopback-адресом самого хоста прокси, поэтому дайте этим сервисам адрес, доступный прокси. По той же причине при активном режиме шлюз сразу отвергает имена вида `localhost`.

187 187 

188Если одно из этих условий не выполнено, шлюз при загрузке записывает в лог предупреждение с именем переменной, которая помешала включению, и сохраняет поведение по умолчанию.188Если одно из этих условий не выполнено, шлюз при загрузке записывает в лог предупреждение с названием помешавшей переменной и сохраняет поведение по умолчанию.

189 189 

190Когда исходящий трафик только через прокси активен, разрешите в прокси все назначения, включая внутренний сборщик и любые хосты, заданные по IP-адресу. Вы по-прежнему можете оставить внутренний IdP прямым с помощью [`oidc.use_proxy: false`](#idp-requests-through-a-forward-proxy).190Когда режим исходящего трафика только через прокси активен, разрешите в прокси все назначения, включая внутренний сборщик и любой хост, настроенный по IP-адресу. Внутренний IdP по-прежнему можно оставить на прямом подключении с помощью [`oidc.use_proxy: false`](#idp-requests-through-a-forward-proxy).

191 191 

192> [!WARNING]192> [!WARNING]

193>193>

194> Включайте это, только если список разрешённых адресов прокси как минимум так же строг, как собственная проверка шлюза. Прокси должен отклонять эндпоинты облачных метаданных, такие как `169.254.169.254` и `metadata.google.internal`, link-local-адреса и собственный loopback хоста прокси, причём отклонять по адресу, в который разрешается имя, а не только по имени, потому что шлюз больше не перехватывает имя хоста, которое разрешается в один из них. Прокси, который подключается куда угодно по запросу, снимает [защиту от SSRF](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#threat-model-summary) шлюза для этих запросов.194> Включайте этот режим, только если список разрешённых адресов прокси не менее строг, чем собственная проверка шлюза. Прокси должен отказывать в доступе к эндпоинтам облачных метаданных, таким как `169.254.169.254` и `metadata.google.internal`, к link-local-адресам и к собственному loopback-интерфейсу хоста прокси, причём отказывать по адресу, в который разрешается имя, а не только по имени, поскольку шлюз больше не перехватывает имя хоста, разрешающееся в один из них. Прокси, который подключается куда угодно по запросу, снимает [защиту шлюза от SSRF](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#threat-model-summary) для этих запросов.

195 195 

196### `session`196### `session`

197 197 


199 199 

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

201| - | - | - |201| - | - | - |

202| `jwt_secret` | Да | Не менее 32 байт энтропии, например из `openssl rand -base64 32`. Подписывает Bearer-токены шлюза HS256. Принимает одну строку или массив для ротации: элемент с индексом 0 подписывает, все элементы проверяют. Для ротации добавьте новый секрет в начало, подождите `ttl_hours`, затем удалите старый. |202| `jwt_secret` | Да | Не менее 32 байт энтропии, например из `openssl rand -base64 32`. Подписывает Bearer-токены шлюза HS256. Принимает одну строку или массив для ротации: элемент с индексом 0 подписывает, а все элементы проверяют. Для ротации добавьте новый секрет в начало, подождите `ttl_hours`, затем удалите старый. |

203| `ttl_hours` | Нет | Время жизни Bearer-токена шлюза. По умолчанию `1`. CLI незаметно обновляет токен до истечения, если IdP выдаёт refresh-токены. Более короткое время жизни ускоряет отзыв доступа; более длинное сокращает число обращений к IdP. Если ваш IdP не может выдавать refresh-токены, потому что `offline_access` недоступен, незаметного обновления нет, поэтому увеличьте значение до `8` или `12`, чтобы разработчикам не приходилось проходить вход в браузере каждый час. |203| `ttl_hours` | Нет | Время жизни Bearer-токена шлюза. По умолчанию `1`. CLI незаметно обновляет токен до истечения срока, если IdP выдаёт refresh-токены. Более короткий срок быстрее отзывает доступ; более длинный требует меньше обращений к IdP. Если ваш IdP не может выдавать refresh-токены, потому что `offline_access` недоступен, незаметного обновления не происходит, поэтому увеличьте значение до `8` или `12`, чтобы разработчикам не приходилось каждый час заново входить через браузер. |

204 204 

205### `store`205### `store`

206 206 

207Блок `store` указывает шлюзу на его базу данных PostgreSQL, в которой хранятся гранты устройств и счётчики ограничения частоты запросов.207Блок `store` указывает шлюзу его базу данных PostgreSQL, в которой хранятся выданные устройствам разрешения и счётчики ограничения частоты запросов.

208 208 

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

210| - | - | - |210| - | - | - |

211| `postgres_url` | Да | URL `postgres://` или `postgresql://` с одним хостом, а не списком хостов через запятую. Шлюз сам выполняет миграции схемы при загрузке и при обновлении, поэтому роли нужны права на создание и изменение таблиц в целевой схеме. См. [Обновления](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#upgrades) и [Postgres](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#postgres). |211| `postgres_url` | Да | URL `postgres://` или `postgresql://` с одним хостом, а не списком через запятую. Шлюз сам выполняет миграции схемы при загрузке и при обновлении, поэтому роли нужны права на создание и изменение таблиц в целевой схеме. См. разделы [Обновления](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#upgrades) и [Postgres](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#postgres). |

212| `username` | Нет | Переопределяет пользователя в `postgres_url` |212| `username` | Нет | Переопределяет пользователя в `postgres_url` |

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

214| `max_connections` | Нет | Размер пула соединений Postgres на реплику. По умолчанию `5` — консервативное значение, подходящее для общих баз данных. При включённых [лимитах расходов](#admin) шлюз выполняет несколько операций с базой данных на каждый запрос инференса, поэтому увеличьте значение для выделенной базы данных под нагрузкой в пределах того, что допускает раздел [Выбор размера пула соединений](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#size-the-connection-pool). |214| `max_connections` | Нет | Размер пула соединений Postgres на реплику. По умолчанию `5` — консервативное значение, подходящее для общих баз данных. При включённых [лимитах расходов](#admin) шлюз выполняет несколько операций с базой данных на каждый запрос инференса, поэтому увеличьте его для выделенной базы данных под нагрузкой в пределах того, что допускает раздел [Определение размера пула соединений](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#size-the-connection-pool). |

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

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

217 217 

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

219 219 

220### `upstreams`220### `upstreams`

221 221 

222`upstreams` — упорядоченный список. Шлюз перенаправляет инференс на первый вышестоящий сервер, который разрешает запрошенную модель, пропуская любой вышестоящий сервер, [список `groups`](#send-each-team-to-its-own-upstream) которого не включает разработчика.222`upstreams` — упорядоченный список. Шлюз перенаправляет инференс на первый upstream, который разрешает запрошенную модель, пропуская любой upstream, чей [список `groups`](#send-each-team-to-its-own-upstream) не включает разработчика.

223 223 

224При `5xx`, `429`, `401`, `403`, `404` или таймауте шлюз переключается на следующий upstream; при других `4xx` — нет, потому что такие ошибки связаны с запросом, а не с upstream. `401` или `403` означает, что upstream отклонил учётные данные, которые использовал шлюз, или отказал ему в доступе, например к запрошенной модели. `404` означает, что этот upstream не обслуживает запрошенную модель, поэтому её может обслужить следующий upstream в списке.224При `5xx`, `429`, `401`, `403`, `404` или таймауте шлюз переключается на следующий upstream; при других `4xx` — нет, поскольку эти ошибки связаны с запросом, а не с upstream. `401` или `403` означает, что upstream отклонил учётные данные, использованные шлюзом, или запретил ему доступ, например к запрошенной модели. `404` означает, что этот upstream не обслуживает запрошенную модель, поэтому её ещё может обслужить следующий upstream в списке.

225 225 

226Если вы задали `forward_user_identity: true` для upstream, ответ `429` от него на запрос, содержащий email разработчика, не приводит к переключению. См. [как отказ по лимиту для отдельного пользователя доходит до разработчика](#per-user-identity-headers-for-a-proxy-you-run).226Если вы задали `forward_user_identity: true` для upstream, то `429`, возвращённый им на запрос, содержавший email разработчика, не приводит к переключению. См. раздел о том, [как отказ по лимиту на пользователя доходит до разработчика](#per-user-identity-headers-for-a-proxy-you-run).

227 227 

228Переключение при `404` требует шлюза v2.1.198 или новее. Более ранние выпуски возвращали клиенту первый `404`, даже если модель обслуживал следующий upstream в списке.228Переключение при `404` требует шлюза v2.1.198 или новее. Более ранние выпуски возвращали клиенту первый `404`, даже если модель обслуживал следующий upstream в списке.

229 229 

230Несколько upstream одного поставщика должны иметь разные `name:`.230Несколько upstream одного провайдера должны задавать разные `name:`.

231 231 

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

233 233 

234#### Сообщения об ошибках upstream234#### Сообщения об ошибках upstream

235 235 

236В зависимости от того, как ответили upstream, шлюз возвращает ответ с ошибкой от одного из них или собственный `502`:236В зависимости от того, как ответили upstream-серверы, шлюз возвращает ответ с ошибкой одного из upstream или собственный `502`:

237 237 

238* **Upstream вернул статус, при котором шлюз не [переключается](#multiple-upstreams)**: ответ этого upstream. Другие upstream шлюз больше не пробует.238* **Upstream вернул статус, при котором шлюз не [переключается](#multiple-upstreams)**: ответ этого upstream. Шлюз больше не пробует другие upstream.

239* **Все вышестоящие серверы, которые пробовал шлюз, завершились ошибкой, при которой он [переключается](#multiple-upstreams)**: последний `429`. Если ни один не вернул `429`, шлюз предпочитает по порядку последний `401` или `403`, последний `404` и последний `501`. Если ни один не вернул ничего из этого — собственный `502` шлюза, `all upstreams failed (N attempted)`. N — это число ваших записей [`upstreams`](#upstreams), включая пропущенные, за вычетом тех, [список `groups`](#send-each-team-to-its-own-upstream) которых не включает разработчика.239* **Каждый опробованный шлюзом upstream завершился сбоем, при котором шлюз [переключается](#multiple-upstreams)**: последний `429`. Если ни один не вернул `429`, шлюз предпочитает, в указанном порядке, последний `401` или `403`, последний `404` и последний `501`. Если ни один не вернул ничего из этого — собственный `502` шлюза, `all upstreams failed (N attempted)`. N — это число записей в ваших [`upstreams`](#upstreams), включая пропущенные, за вычетом тех, чей список [`groups`](#send-each-team-to-its-own-upstream) не включает разработчика.

240 240 

241Возвращая ответ upstream, шлюз сохраняет его код статуса. Сохраняется ли сообщение upstream, зависит от поставщика. Тело ошибки от upstream Anthropic API доходит до разработчика без изменений.241Когда шлюз возвращает ответ upstream, он сохраняет код статуса upstream. Сохранится ли сообщение upstream, зависит от провайдера. Тело ошибки upstream Anthropic API доходит до разработчика без изменений.

242 242 

243Upstream Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform и Microsoft Foundry могут указывать в тексте ошибки ID ваших аккаунтов, ARN ролей и ID проектов. Шлюз записывает полный текст в [операционный лог](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#logs). Что видит разработчик от этих upstream, зависит от типа отклонения:243Upstream-серверы Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform и Microsoft Foundry могут указывать в тексте ошибки идентификаторы ваших аккаунтов, ARN ролей и идентификаторы проектов. Шлюз записывает этот полный текст в [операционный лог](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#logs). Что разработчик видит от этих upstream, зависит от вида отказа:

244 244 

245* `400` или `413` в стандартной обёртке ошибок Anthropic: собственное сообщение upstream, например `prompt is too long`. Claude Platform on AWS, Agent Platform и Microsoft Foundry возвращают такую обёртку при отклонениях API модели.245* `400` или `413` в стандартной оболочке ошибки Anthropic: собственное сообщение upstream, например `prompt is too long`. Claude Platform on AWS, Agent Platform и Microsoft Foundry возвращают эту оболочку при отказах API модели.

246* `400` или `413` в собственном формате поставщика: токен `capability_rejected:`. Если шлюз не может классифицировать отклонение — `upstream rejected the request` для `400` или `request too large for this upstream` для `413`.246* `400` или `413` в собственном формате провайдера: токен `capability_rejected:`. Если шлюз не может классифицировать отказ — `upstream rejected the request` при `400` или `request too large for this upstream` при `413`.

247* Любой другой статус: общий текст для каждого статуса, например `upstream rate limit exceeded` для `429`.247* Любой другой статус: общий текст для данного статуса, например `upstream rate limit exceeded` при `429`.

248 248 

249Например, шлюз заменяет сообщение Amazon Bedrock `Input is too long for requested model.` на `capability_rejected: prompt_too_long`. На этот токен Claude Code [автоматически выполняет сжатие](https://code.claude.com/docs/ru/errors.md#prompt-is-too-long), так же как на `prompt is too long`.249Например, шлюз заменяет сообщение Amazon Bedrock `Input is too long for requested model.` на `capability_rejected: prompt_too_long`. Claude Code [автоматически выполняет сжатие](https://code.claude.com/docs/ru/errors.md#prompt-is-too-long) при получении этого токена, так же как при `prompt is too long`.

250 250 

251Сохранение сообщения `400` или `413` облачного upstream или его замена токеном `capability_rejected:` требует шлюза v2.1.233 или новее.251Сохранение сообщения `400` или `413` облачного upstream или его замена токеном `capability_rejected:` требует шлюза v2.1.233 или новее.

252 252 


259 - provider: anthropic259 - provider: anthropic

260 auth:260 auth:

261 api_key: ${ANTHROPIC_API_KEY}261 api_key: ${ANTHROPIC_API_KEY}

262 # ИЛИ OAuth Bearer-токен (например, токен, полученный через Workload Identity Federation):262 # OR an OAuth bearer (e.g. a Workload-Identity-Federation-exchanged token):

263 # oauth_token: ${file:/var/run/secrets/anthropic-oauth-token}263 # oauth_token: ${file:/var/run/secrets/anthropic-oauth-token}

264 # base_url: https://api.anthropic.com # по умолчанию; переопределите для прямого прокси264 # base_url: https://api.anthropic.com # default; override for a forward proxy

265```265```

266 266 

267Две формы учётных данных различаются отправляемым заголовком:267Две формы учётных данных различаются отправляемым заголовком:


269* **`api_key`**: отправляет `x-api-key`. Выполняйте ротацию в Claude Console и обновляйте переменную окружения.269* **`api_key`**: отправляет `x-api-key`. Выполняйте ротацию в Claude Console и обновляйте переменную окружения.

270* **`oauth_token`**: отправляет `Authorization: Bearer`. Используйте Bearer-форму, если ваша организация выдаёт короткоживущие токены вместо долгоживущих API-ключей. Bearer-токен читается один раз при запуске, поэтому для обновления перемонтируйте секрет и перезапустите шлюз.270* **`oauth_token`**: отправляет `Authorization: Bearer`. Используйте Bearer-форму, если ваша организация выдаёт короткоживущие токены вместо долгоживущих API-ключей. Bearer-токен читается один раз при запуске, поэтому для обновления перемонтируйте секрет и перезапустите шлюз.

271 271 

272Вместо статического ключа или Bearer-токена можно использовать Workload Identity Federation. Создайте правило федерации по [руководству по Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation), затем смонтируйте OIDC JWT вашей рабочей нагрузки как файл, например проецируемый токен сервисного аккаунта Kubernetes или id-token CI-платформы. Шлюз обменивает JWT на короткоживущий Bearer-токен и автоматически его обновляет. Файл токена перечитывается при каждом обмене, поэтому ротированные проецируемые токены подхватываются без перезапуска.272Вместо статического ключа или Bearer-токена можно использовать Workload Identity Federation. Создайте правило федерации по [руководству Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation), затем смонтируйте OIDC JWT вашей рабочей нагрузки как файл, например projected-токен сервисного аккаунта Kubernetes или id-token CI-платформы. Шлюз обменивает JWT на короткоживущий Bearer-токен и автоматически обновляет его. Файл токена перечитывается при каждом обмене, поэтому обновлённые projected-токены подхватываются без перезапуска.

273 273 

274```yaml theme={null}274```yaml theme={null}

275upstreams:275upstreams:


278 federation_rule_id: ${ANTHROPIC_FEDERATION_RULE_ID}278 federation_rule_id: ${ANTHROPIC_FEDERATION_RULE_ID}

279 organization_id: ${ANTHROPIC_ORGANIZATION_ID}279 organization_id: ${ANTHROPIC_ORGANIZATION_ID}

280 identity_token_file: /var/run/secrets/anthropic/id-token280 identity_token_file: /var/run/secrets/anthropic/id-token

281 # workspace_id: wrkspc_... # обязателен, если правило охватывает >1 рабочего пространства281 # workspace_id: wrkspc_... # required if the rule covers >1 workspace

282 # service_account_id: svac_... # необязательная проверка ожидаемой цели282 # service_account_id: svac_... # optional expected-target check

283```283```

284 284 

285##### Заголовки идентификации пользователя для вашего прокси285##### Заголовки идентификации пользователя для вашего прокси

286 286 

287Вы можете указать в `base_url` upstream `provider: anthropic` свой прокси вместо Anthropic API. Чтобы сообщать этому прокси, какой разработчик отправил каждый запрос, задайте `forward_user_identity: true` для этого upstream. Тогда прокси сможет учитывать расходы по разработчикам. Требует шлюза на Claude Code v2.1.233 или новее.287Вы можете направить `base_url` upstream с `provider: anthropic` на собственный прокси вместо Anthropic API. Чтобы сообщать этому прокси, какой разработчик отправил каждый запрос, задайте `forward_user_identity: true` для этого upstream. Тогда прокси сможет учитывать расходы по каждому разработчику. Требуется шлюз с Claude Code v2.1.233 или новее.

288 288 

289Например, для прокси по адресу `upstream-gateway.internal.example.com`:289Например, для прокси по адресу `upstream-gateway.internal.example.com`:

290 290 


297 forward_user_identity: true # default false297 forward_user_identity: true # default false

298```298```

299 299 

300Шлюз добавляет эти заголовки к каждому запросу, который направляет этому upstream.300Шлюз добавляет эти заголовки к каждому запросу, который он перенаправляет этому upstream.

301 301 

302| Заголовок | Значение |302| Заголовок | Значение |

303| - | - |303| - | - |

304| `x-litellm-end-user-id` | Email разработчика, если IdP его предоставил. |304| `x-litellm-end-user-id` | Email разработчика, если IdP его предоставил. |

305| `x-claude-gateway-user-id` | Субъект IdP разработчика из claim `sub` токена. |305| `x-claude-gateway-user-id` | Субъект разработчика в IdP, из claim `sub` токена. |

306| `x-claude-gateway-user-email` | Email разработчика, если IdP его предоставил. |306| `x-claude-gateway-user-email` | Email разработчика, если IdP его предоставил. |

307 307 

308Если токен IdP не содержит email, шлюз отправляет только `x-claude-gateway-user-id` и опускает два заголовка с email. Если ваш IdP передаёт email в другом claim, укажите этот claim в [`oidc.email_claim`](#oidc).308Если токен IdP не содержит email, шлюз отправляет только `x-claude-gateway-user-id` и опускает два заголовка с email. Если ваш IdP помещает email в другой claim, укажите этот claim в [`oidc.email_claim`](#oidc).

309 309 

310Ваш прокси не получает [заголовки `x-claude-code-*`](https://code.claude.com/docs/ru/llm-gateway-protocol#request-headers), которые отправляет Claude Code, например `x-claude-code-session-id`. Шлюз не передаёт их ни одному upstream, поэтому группируйте запросы по разработчикам с помощью заголовков из таблицы выше.310Ваш прокси не получает [заголовки `x-claude-code-*`](https://code.claude.com/docs/ru/llm-gateway-protocol#request-headers), которые отправляет Claude Code, например `x-claude-code-session-id`. Шлюз не передаёт их ни одному upstream, поэтому группируйте запросы по разработчикам с помощью заголовков из таблицы выше.

311 311 

312Когда ваш прокси отвечает `429` на запрос, содержащий email разработчика, шлюз возвращает этот ответ разработчику как есть, а не переключается на следующий upstream, поэтому бюджет или ограничение частоты запросов для отдельного пользователя в вашем прокси соблюдается. Остальные ответы прокси подчиняются обычным [правилам переключения](#upstreams). Если токен IdP разработчика не содержит email, шлюз пересылает его запросы без заголовков с email, поэтому `429` на такой запрос считается нехваткой мощности upstream и приводит к переключению. До v2.1.267 на сервере шлюза каждый `429` приводил к переключению.312Когда ваш прокси отвечает `429` на запрос, содержавший email разработчика, шлюз возвращает этот ответ разработчику как есть, а не переключается на следующий upstream, поэтому бюджет или ограничение частоты запросов вашего прокси для каждого пользователя соблюдается. Остальные ответы прокси подчиняются обычным [правилам переключения](#upstreams). Если токен IdP разработчика не содержит email, шлюз перенаправляет его запросы без заголовков с email, поэтому `429` на такой запрос считается нехваткой ёмкости upstream и приводит к переключению. До v2.1.267 на сервере шлюза каждый `429` приводил к переключению.

313 313 

314Задавайте `forward_user_identity` только для upstream, `base_url` которого — прокси под вашим управлением. Шлюз отправляет email разработчиков на любой сервер, указанный в этом `base_url`. Если `base_url` указывает на Anthropic API, что является значением по умолчанию, шлюз отказывается запускаться.314Задавайте `forward_user_identity` только для upstream, чей `base_url` — прокси, которым управляете вы. Шлюз отправляет email разработчиков на любой сервер, указанный в этом `base_url`. Если `base_url` — это Anthropic API, что является значением по умолчанию, шлюз отказывается запускаться.

315 315 

316> [!NOTE]316> [!NOTE]

317>317>

318> Если задать `forward_user_identity` для upstream Amazon Bedrock, шлюз завершает работу при запуске с ошибкой `Unrecognized key(s) in object: 'forward_user_identity'`. Если ваш прокси стоит перед Bedrock, укажите его как upstream `provider: anthropic`. Шлюз отправляет этому upstream запросы в формате Anthropic Messages, поэтому ваш прокси должен [преобразовывать запросы для Bedrock](https://code.claude.com/docs/ru/llm-gateway-protocol.md#format-mismatch-with-the-upstream). Чтобы вместо этого сообщать AWS, какой разработчик отправил запрос, см. [Учёт затрат AWS по разработчикам](#per-developer-aws-cost-attribution).318> Если вы зададите `forward_user_identity` для upstream Amazon Bedrock, шлюз при запуске завершится с ошибкой `Unrecognized key(s) in object: 'forward_user_identity'`. Если ваш прокси стоит перед Bedrock, укажите его как upstream с `provider: anthropic`. Шлюз отправляет такому upstream данные в формате Anthropic Messages, поэтому ваш прокси должен [преобразовывать запросы для Bedrock](https://code.claude.com/docs/ru/llm-gateway-protocol.md#format-mismatch-with-the-upstream). Чтобы вместо этого сообщать AWS имя каждого разработчика, см. раздел [Учёт расходов AWS по разработчикам](#per-developer-aws-cost-attribution).

319 319 

320#### Amazon Bedrock320#### Amazon Bedrock

321 321 

322О клиентском развёртывании Amazon Bedrock, которое шлюз заменяет или перед которым стоит, см. [Claude Code на Amazon Bedrock](https://code.claude.com/docs/ru/amazon-bedrock.md). Upstream на стороне шлюза:322О клиентском развёртывании Amazon Bedrock, которое шлюз заменяет или перед которым стоит, см. раздел [Claude Code на Amazon Bedrock](https://code.claude.com/docs/ru/amazon-bedrock.md). Upstream на стороне шлюза:

323 323 

324```yaml theme={null}324```yaml theme={null}

325upstreams:325upstreams:


338 # base_url: https://bedrock-runtime-fips.us-east-1.amazonaws.com338 # base_url: https://bedrock-runtime-fips.us-east-1.amazonaws.com

339```339```

340 340 

341Пустой блок `auth` использует цепочку учётных данных AWS SDK по умолчанию: переменные окружения, `~/.aws/credentials`, роль задачи ECS, метаданные экземпляра EC2 или IRSA на EKS. В production назначьте поду шлюза IAM-роль вместо встраивания статических ключей в образ контейнера.341Пустой блок `auth` использует цепочку учётных данных AWS SDK по умолчанию: переменные окружения, `~/.aws/credentials`, роль задачи ECS, метаданные экземпляра EC2 или IRSA в EKS. В продакшене назначьте поду шлюза IAM-роль, а не встраивайте статические ключи в образ контейнера.

342 342 

343Явные учётные данные должны быть полными: шлюз не запускается, если `aws_access_key_id` и `aws_secret_access_key` заданы не вместе или если `aws_session_token` задан без них. До v2.1.207 частичный блок `auth:` проходил проверку.343Явные учётные данные должны быть полными: шлюз завершается с ошибкой при загрузке, если `aws_access_key_id` и `aws_secret_access_key` не заданы вместе или если `aws_session_token` задан без них. До v2.1.207 частичный блок `auth:` проходил проверку.

344 344 

345| Настройка | Как |345| Настройка | Как |

346| - | - |346| - | - |

347| Разрешения IAM | Предоставьте принципалу шлюза `bedrock:InvokeModel` и `bedrock:InvokeModelWithResponseStream` как на ARN профилей инференса, так и на ARN базовых foundation-моделей. Для встроенного каталога в регионах США: `arn:aws:bedrock:<region>:<account>:inference-profile/us.anthropic.*` и `arn:aws:bedrock:*::foundation-model/anthropic.*`. Также предоставьте `bedrock:CountTokens` на ARN foundation-моделей. Шлюз бесплатно использует это разрешение, чтобы подсчитать входные токены запроса, прерванного клиентом, и [лимиты расходов](#admin) оставались точными. Без него шлюз для такого подсчёта использует как резервный вариант запрос Bedrock на один токен. |347| IAM-разрешения | Предоставьте принципалу шлюза `bedrock:InvokeModel` и `bedrock:InvokeModelWithResponseStream` как на ARN профилей инференса, так и на ARN базовых foundation-моделей. Для встроенного каталога в регионах США: `arn:aws:bedrock:<region>:<account>:inference-profile/us.anthropic.*` и `arn:aws:bedrock:*::foundation-model/anthropic.*`. Также предоставьте `bedrock:CountTokens` на ARN foundation-моделей. Шлюз бесплатно использует его, чтобы подсчитать входные токены запроса, который клиент прервал, благодаря чему [лимиты расходов](#admin) остаются точными. Без него шлюз для этого подсчёта использует как резервный вариант запрос к Bedrock на один токен. |

348| Доступ к моделям | В коммерческих регионах Amazon Bedrock включает доступ к моделям по умолчанию. Остаётся одно ограничение на уровне аккаунта — одноразовая форма Anthropic с описанием сценария использования: если в вашем аккаунте AWS её ещё никто не отправлял, откройте консоль Amazon Bedrock, выберите модель Anthropic в каталоге моделей и заполните форму. О форме для AWS Organizations и разрешениях, которые нужны отправителю, см. [Отправка сведений о сценарии использования](https://code.claude.com/docs/ru/amazon-bedrock.md#1-submit-use-case-details). |348| Доступ к моделям | Amazon Bedrock по умолчанию включает доступ к моделям в коммерческих регионах. Оставшееся ограничение на уровне аккаунта — одноразовая форма описания сценария использования Anthropic: если никто в вашем аккаунте AWS её не отправлял, откройте консоль Amazon Bedrock, выберите модель Anthropic в каталоге моделей и заполните форму. О форме для AWS Organizations и разрешениях, необходимых отправителю, см. раздел [Отправка описания сценария использования](https://code.claude.com/docs/ru/amazon-bedrock.md#1-submit-use-case-details). |

349| EKS (IRSA) | Создайте IAM-роль с политикой выше и политикой доверия для OIDC-поставщика вашего кластера, ограниченной сервисным аккаунтом шлюза. Добавьте сервисному аккаунту аннотацию `eks.amazonaws.com/role-arn: arn:aws:iam::<acct>:role/claude-gateway`. `auth: {}` подхватит её. |349| EKS (IRSA) | Создайте IAM-роль с указанной выше политикой и политикой доверия для OIDC-провайдера вашего кластера, ограниченной сервисным аккаунтом шлюза. Добавьте к сервисному аккаунту аннотацию `eks.amazonaws.com/role-arn: arn:aws:iam::<acct>:role/claude-gateway`. `auth: {}` подхватывает её. |

350| ECS / EC2 | Привяжите IAM-роль к определению задачи или профилю экземпляра. `auth: {}` подхватит её. |350| ECS / EC2 | Привяжите IAM-роль к определению задачи или профилю экземпляра. `auth: {}` подхватывает её. |

351| В других средах | Передайте учётные данные через переменные окружения `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` и `AWS_SESSION_TOKEN` или задайте их явно в `auth:` с подстановкой `${VAR}` |351| В любом другом месте | Передайте учётные данные через переменные окружения `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` и `AWS_SESSION_TOKEN` или задайте их явно в `auth:` с подстановкой `${VAR}` |

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

353 353 

354##### Применение guardrail Amazon Bedrock354##### Применение guardrail Amazon Bedrock

355 355 

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

357 357 

358```yaml theme={null}358```yaml theme={null}

359upstreams:359upstreams:


366 # keep the quotes: a bare 1 fails at boot366 # keep the quotes: a bare 1 fails at boot

367```367```

368 368 

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

370 370 

371Задайте `guardrail` либо для каждого upstream `bedrock`, либо ни для одного. При смешанной конфигурации шлюз отказывается запускаться, потому что иначе [переключение](#multiple-upstreams) могло бы отправить запрос в upstream Bedrock без guardrail.371Задайте `guardrail` либо для всех upstream `bedrock`, либо ни для одного. При смешанной конфигурации шлюз отказывается запускаться, поскольку иначе [переключение](#multiple-upstreams) могло бы отправить запрос на upstream Bedrock без guardrail.

372 372 

373Guardrail действует только для upstream Bedrock. Если вы укажете в `upstreams` другого поставщика, шлюз будет отправлять ему запросы без guardrail, а если этот поставщик — [`mantle`](#amazon-bedrock-mantle-endpoint), откажется запускаться.373Guardrail действует только для upstream Bedrock. Если в `upstreams` указан другой провайдер, шлюз отправляет запросы этому провайдеру без guardrail или отказывается запускаться, если этот провайдер — [`mantle`](#amazon-bedrock-mantle-endpoint).

374 374 

375Когда запрос `/v1/messages`, тело которого содержит поле `amazon-bedrock-*`, например `amazon-bedrock-guardrailConfig`, попадает в upstream Bedrock с заданным `guardrail`, шлюз отвечает 400 вместо того, чтобы переслать его.375Когда запрос `/v1/messages`, тело которого содержит поле `amazon-bedrock-*`, например `amazon-bedrock-guardrailConfig`, поступает на upstream Bedrock с заданным `guardrail`, шлюз отвечает 400, а не перенаправляет его.

376 376 

377> [!WARNING]377> [!WARNING]

378>378>

379> По умолчанию шлюз не добавляет к промптам входные теги, поэтому фильтр guardrail, который Amazon Bedrock применяет только к помеченному вводу, не срабатывает на трафике через шлюз. Чтобы добавлять теги, задайте [`input_tagging`](#add-guardrail-input-tags). О том, какие фильтры зависят от входных тегов, см. [входные теги](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-tagging.html) в документации Amazon Bedrock.379> По умолчанию шлюз не добавляет к промптам входные теги, поэтому фильтр guardrail, который Amazon Bedrock применяет только к помеченному входу, не срабатывает на трафике через шлюз. Чтобы добавлять теги, задайте [`input_tagging`](#add-guardrail-input-tags). О том, какие фильтры зависят от входных тегов, см. раздел [input tags](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-tagging.html) в документации Amazon Bedrock.

380 380 

381##### Добавление входных тегов guardrail381##### Добавление входных тегов guardrail

382 382 

383Чтобы шлюз добавлял входные теги, которые нужны [фильтру атак на промпты](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-prompt-attack.html) guardrail Amazon Bedrock, задайте `input_tagging` в блоке `guardrail` и перезапустите шлюз. Задайте одно и то же значение на каждом вышестоящем сервере `bedrock`, иначе шлюз не запустится. Требуется Claude Code v2.1.316 или новее на сервере шлюза. Шлюз версии, в которой нет этого ключа, завершается при запуске с ошибкой `Unrecognized key(s) in object: 'input_tagging'`.383Чтобы шлюз добавлял входные теги, необходимые [фильтру атак на промпт](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-prompt-attack.html) guardrail Amazon Bedrock, задайте `input_tagging` в блоке `guardrail` и перезапустите шлюз. Задайте одинаковое значение для всех upstream `bedrock`, иначе шлюз откажется запускаться. Требуется Claude Code v2.1.316 или новее на сервере шлюза. Шлюз версии, в которой этого ключа нет, при запуске завершается с ошибкой `Unrecognized key(s) in object: 'input_tagging'`.

384 384 

385> [!WARNING]385> [!WARNING]

386>386>

387> Согласно [документации Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-tagging.html), как только запрос содержит входные теги, каждый фильтр в guardrail перестаёт оценивать непомеченное содержимое. Опробуйте `input_tagging` на тестовом шлюзе, прежде чем задавать его на шлюзе, которым пользуются разработчики.387> Согласно [документации Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-tagging.html), как только запрос содержит входные теги, каждый фильтр guardrail перестаёт оценивать непомеченное содержимое. Опробуйте `input_tagging` на тестовом шлюзе, прежде чем задавать его на шлюзе, которым пользуются разработчики.

388 388 

389`input_tagging` принимает одно из следующих значений:389`input_tagging` принимает одно из следующих значений:

390 390 

391| `input_tagging` | Где шлюз помечает текст | После того как guardrail заблокировал промпт |391| `input_tagging` | Где шлюз помечает текст | После того как guardrail заблокировал промпт |

392| :- | :- | :- |392| :- | :- | :- |

393| `last_message` | Сообщения `user` после последнего ответа Claude | В Claude Code следующий промпт может пройти, и тогда Claude получит заблокированный промпт как часть диалога |393| `last_message` | Сообщения `user` после последнего ответа Claude | В Claude Code следующий промпт может пройти, и тогда Claude получает заблокированный промпт как часть диалога |

394| `user_messages` | Сообщения `user` | Последующие промпты в сессии тоже могут блокироваться, пока разработчик не удалит заблокированный промпт |394| `user_messages` | Сообщения `user` | Последующие промпты в сессии тоже могут блокироваться, пока разработчик не удалит заблокированный промпт |

395| `all_messages` | Сообщения `user` и `assistant` | Так же, как при `user_messages` |395| `all_messages` | Сообщения `user` и `assistant` | Так же, как при `user_messages` |

396| `all_messages_and_system` | Системный промпт и каждое сообщение, включая [системные сообщения посреди диалога](https://code.claude.com/docs/ru/llm-gateway-protocol.md#feature-pass-through) | Так же, как при `user_messages` |396| `all_messages_and_system` | Системный промпт и каждое сообщение, включая [системные сообщения в середине диалога](https://code.claude.com/docs/ru/llm-gateway-protocol.md#feature-pass-through) | Так же, как при `user_messages` |

397 397 

398При `last_message`, если в сообщениях `user` после последнего ответа Claude нет текста для пометки, шлюз вместо этого помечает системные сообщения посреди диалога, появившиеся после этого ответа. Вызов инструмента считается ответом.398При `last_message`, если в сообщениях `user` после последнего ответа Claude нет текста для пометки, шлюз вместо этого помечает системные сообщения в середине диалога, появившиеся после этого ответа. Вызов инструмента считается ответом.

399 399 

400Рекомендация Amazon Bedrock для фильтра атак на промпты — [помечать пользовательский ввод так, чтобы системный промпт был исключён](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-prompt-attack.html). Если вы зададите `all_messages_and_system`, фильтр, срабатывающий на собственный системный промпт Claude Code, может блокировать запросы.400Рекомендация Amazon Bedrock для фильтра атак на промпт — [помечать пользовательский ввод так, чтобы системный промпт был исключён](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-prompt-attack.html). Если вы задаёте `all_messages_and_system`, фильтр, помечающий собственный системный промпт Claude Code, может блокировать запросы.

401 401 

402В примере ниже помечается текст в каждом сообщении `user`:402Пример ниже помечает текст в каждом сообщении `user`:

403 403 

404```yaml theme={null}404```yaml theme={null}

405upstreams:405upstreams:


412 input_tagging: user_messages412 input_tagging: user_messages

413```413```

414 414 

415Сообщения `user` могут также содержать текст, который добавляет Claude Code, например [системные напоминания](https://code.claude.com/docs/ru/glossary.md#system-reminder), поэтому проверьте на тестовом шлюзе, что обычные запросы не блокируются.415Сообщения `user` также могут содержать текст, который добавляет Claude Code, например [системные напоминания](https://code.claude.com/docs/ru/glossary.md#system-reminder), поэтому проверьте на тестовом шлюзе, что обычные запросы не блокируются.

416 416 

417В тестах Anthropic помеченная сессия сохраняла чтение из [кэша промптов](https://code.claude.com/docs/ru/prompt-caching.md) от одного промпта к другому, а теги не добавляли входных токенов.417В тестах Anthropic помеченная сессия сохраняла чтение из [кэша промптов](https://code.claude.com/docs/ru/prompt-caching.md) от одного промпта к следующему, а теги не добавляли входных токенов.

418 418 

419##### Что не покрывают входные теги419##### Что не покрывают входные теги

420 420 

421Ни одно значение `input_tagging` не остановит разработчика, который намеренно помещает текст туда, куда тег не ставится. Не рассчитывайте, что guardrail будет оценивать следующие части запроса:421Ни одно значение `input_tagging` не остановит разработчика, который намеренно помещает текст туда, где тегов нет. Не рассчитывайте, что guardrail будет оценивать следующие части запроса:

422 422 

423* **Содержимое, которое шлюз не помечает**: сообщения, не охваченные вашим значением `input_tagging`, определения инструментов, входные данные вызовов инструментов, изображения и PDF, среди прочего. Если не задано `all_messages_and_system`, системный промпт тоже не помечается.423* **Содержимое, которое шлюз не помечает**: сообщения, которые ваше значение `input_tagging` не охватывает, определения инструментов, входные данные вызовов инструментов, изображения и PDF, среди прочего. Если вы не задали `all_messages_and_system`, системный промпт тоже остаётся без тегов.

424* **Результаты инструментов**: они содержат то, что возвращают инструменты Claude, например содержимое файлов и веб-страницы. В тестах Anthropic фильтр слов не оценивал их ни с тегами, ни без них.424* **Результаты инструментов**: они содержат то, что возвращают инструменты Claude, например содержимое файлов и веб-страницы. В тестах Anthropic фильтр слов не оценивал их ни с тегами, ни без.

425 425 

426Если ваш аккаунт или организация AWS принудительно применяет guardrail, о том, как такой guardrail обрабатывает входные теги, см. [документацию Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-enforcements.html).426Если ваш аккаунт или организация AWS принудительно применяет guardrail, о том, как такой guardrail обрабатывает входные теги, см. [документацию Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-enforcements.html).

427 427 

428##### Запись в лог сработавшего фильтра guardrail428##### Запись в лог сработавшего фильтра guardrail

429 429 

430Чтобы выяснить, какой фильтр guardrail Amazon Bedrock заблокировал запрос разработчика, задайте `guardrail_trace: true` для вышестоящего сервера Bedrock, перезапустите шлюз и попросите разработчика отправить запрос снова. Затем найдите событие `guardrail.trace` этого запроса в [журнале аудита](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#logs). Требует Claude Code v2.1.314 или новее на сервере шлюза. Более ранний шлюз отказывается запускаться, обнаружив `guardrail_trace`.430Чтобы узнать, какой фильтр guardrail Amazon Bedrock заблокировал запрос разработчика, задайте `guardrail_trace: true` для upstream Bedrock, перезапустите шлюз и попросите разработчика отправить запрос ещё раз. Затем найдите событие `guardrail.trace` этого запроса в [журнале аудита](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#logs). Требуется Claude Code v2.1.314 или новее на сервере шлюза. Более ранний шлюз отказывается запускаться, обнаружив `guardrail_trace`.

431 431 

432```yaml theme={null}432```yaml theme={null}

433upstreams:433upstreams:


440 guardrail_trace: true # default false; beside guardrail, not inside it440 guardrail_trace: true # default false; beside guardrail, not inside it

441```441```

442 442 

443Шлюз записывает событие `guardrail.trace` без совпавшего текста, когда сработал фильтр или действие guardrail равно `INTERVENED`. Ищите события разработчика по `email` или `sub`. Один запрос с потоковой передачей может породить несколько событий, и у одного из них список `filters` может быть пустым, поэтому читайте все события с одинаковым `request_id`:443Шлюз записывает событие `guardrail.trace` без совпавшего текста, когда срабатывает фильтр или действие guardrail равно `INTERVENED`. Ищите события разработчика по `email` или `sub`. Один потоковый запрос может порождать несколько событий, и у одного из них список `filters` может быть пустым, поэтому читайте все события с одинаковым `request_id`:

444 444 

445| Поле | Что содержит |445| Поле | Что содержит |

446| - | - |446| - | - |

447| `request_id` | Идентификатор запроса |447| `request_id` | ID запроса |

448| `sub`, `email` | Идентификатор пользователя и email разработчика |448| `sub`, `email` | ID пользователя и email разработчика |

449| `upstream` | Вышестоящий сервер, от которого пришёл ответ |449| `upstream` | Upstream, от которого пришёл ответ |

450| `action` | Действие guardrail, например `INTERVENED` |450| `action` | Действие guardrail, например `INTERVENED` |

451| `filters` | Сработавшие фильтры. Список пуст, если AWS не присылает подробностей о фильтрах |451| `filters` | Сработавшие фильтры. Список пуст, если AWS не присылает сведений о фильтрах |

452| `filters[].side` | `input` или `output` |452| `filters[].side` | `input` или `output` |

453| `filters[].guardrail` | Идентификатор guardrail |453| `filters[].guardrail` | ID guardrail |

454| `filters[].policy` | Политика и список Bedrock, например `contentPolicy.filters` или `sensitiveInformationPolicy.piiEntities` |454| `filters[].policy` | Политика и список Bedrock, например `contentPolicy.filters` или `sensitiveInformationPolicy.piiEntities` |

455| Другие поля `filters[]` | Запись также может содержать такие поля, как `action`, `name`, `type`, `confidence`, `filterStrength`, `score` и `threshold` |455| Другие поля `filters[]` | Запись также может содержать такие поля, как `action`, `name`, `type`, `confidence`, `filterStrength`, `score` и `threshold` |

456 456 

457Событие не содержит текста, совпавшего с фильтром, включая поле `match` трассировки Bedrock. Разработчики не получают данные трассировки Bedrock, поскольку шлюз удаляет их из каждого ответа, потокового или нет.457Событие не содержит текста, совпавшего с фильтром, в том числе поля `match` трассировки Bedrock. Разработчики не получают данные трассировки Bedrock, поскольку шлюз удаляет их из каждого ответа, потокового или нет.

458 458 

459Если клиент отправляет поле `amazon-bedrock-*` в теле запроса `/v1/messages`, шлюз отвечает 400 на вышестоящем сервере, для которого задан `guardrail_trace`.459Если клиент отправляет поле `amazon-bedrock-*` в теле запроса `/v1/messages`, шлюз отвечает 400 на upstream, для которого задан `guardrail_trace`.

460 460 

461##### Bedrock в другом аккаунте AWS461##### Bedrock в другом аккаунте AWS

462 462 

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

464 464 

465Требует шлюза на Claude Code v2.1.281 или новее. Более ранний шлюз отказывается запускаться, обнаружив этот ключ.465Требуется шлюз с Claude Code v2.1.281 или новее. Более ранний шлюз отказывается запускаться, обнаружив этот ключ.

466 466 

467```yaml theme={null}467```yaml theme={null}

468upstreams:468upstreams:


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

481| - | - |481| - | - |

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

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

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

485 485 

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

487 487 

488```json theme={null}488```json theme={null}

489{489{


497}497}

498```498```

499 499 

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

501* Шлюз вызывает региональный эндпоинт STS `sts.<region>.amazonaws.com`, который должен быть доступен из его сети. Для эндпоинта FIPS задайте `AWS_USE_FIPS_ENDPOINT=true` в окружении шлюза, а не `use_fips_endpoint` в файле конфигурации AWS.501* Шлюз обращается к региональному эндпоинту STS `sts.<region>.amazonaws.com`, который должен быть доступен из его сети. Для эндпоинта FIPS задайте `AWS_USE_FIPS_ENDPOINT=true` в окружении шлюза, а не `use_fips_endpoint` в файле конфигурации AWS.

502* `assume_role` требует исходных учётных данных SigV4: шлюз не запустится, если он задан вместе с `aws_bearer_token`.502* `assume_role` требует исходных учётных данных SigV4: шлюз отказывается запускаться, если он задан рядом с `aws_bearer_token`.

503* Без [списка `groups`](#send-each-team-to-its-own-upstream) этот вышестоящий сервер может использовать каждый разработчик, которого допускает шлюз. Чтобы ограничить, какие модели может использовать разработчик, задайте `availableModels` в политике [`managed`](#managed).503* Без [списка `groups`](#send-each-team-to-its-own-upstream) этот upstream может использовать любой разработчик, которого допускает шлюз. Чтобы ограничить модели, доступные разработчику, задайте `availableModels` в политике [`managed`](#managed).

504* Чтобы модель, обслуживаемая через роль, не обслуживалась также из другого аккаунта, дайте ей пользовательский id, карта `upstream_model` которого содержит только имя этого вышестоящего сервера. Для такого id шлюз пропускает все остальные вышестоящие серверы, поэтому ни сам запрос, ни подсчёт токенов для прерванного запроса не могут переключиться на другой аккаунт.504* Чтобы модель, обслуживаемая через роль, не обслуживалась также из другого аккаунта, дайте ей пользовательский id, карта `upstream_model` которого содержит только имя этого upstream. Для такого id шлюз пропускает все остальные upstream, поэтому ни сам запрос, ни подсчёт токенов для прерванного запроса не могут переключиться на другой аккаунт.

505* Запрос встроенного имени модели всё равно может [дойти до этого вышестоящего сервера](#multiple-upstreams), и шлюз подписывает его той же ролью. Указывайте этот вышестоящий сервер последним, если его аккаунт не должен также обслуживать эти модели.505* Запрос со встроенным именем модели всё равно может [дойти до этого upstream](#multiple-upstreams), и шлюз подпишет его той же ролью. Размещайте этот upstream последним, если только его аккаунт не должен также обслуживать эти модели.

506 506 

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

508 508 

509```yaml theme={null}509```yaml theme={null}

510models:510models:


513 bedrock-isolated: us.anthropic.claude-opus-4-8 # the only upstream that serves it513 bedrock-isolated: us.anthropic.claude-opus-4-8 # the only upstream that serves it

514```514```

515 515 

516##### Учёт затрат AWS по разработчикам516##### Учёт расходов AWS по разработчикам

517 517 

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

519 519 

520Требует шлюза на Claude Code v2.1.281 или новее. IAM-роль и то, где биллинг AWS показывает сессии, описаны в разделе [Учёт затрат в AWS](https://code.claude.com/docs/ru/claude-apps-gateway-on-aws.md#cost-attribution).520Требуется шлюз с Claude Code v2.1.281 или новее. Об IAM-роли и о том, где биллинг AWS показывает сессии, см. раздел [Учёт расходов в AWS](https://code.claude.com/docs/ru/claude-apps-gateway-on-aws.md#cost-attribution).

521 

522> [!NOTE]

523>

524> Для учёта по разработчикам задайте `assume_role` с `session_name` для каждого upstream `bedrock` и [`mantle`](#amazon-bedrock-mantle-endpoint), кроме тех, которые используют `aws_bearer_token`. Такие upstream [не могут использовать `assume_role`](#bedrock-in-another-aws-account), поэтому их запросы остаются под одним принципалом.

521 525 

522```yaml theme={null}526```yaml theme={null}

523upstreams:527upstreams:


529 session_name: email # or sub533 session_name: email # or sub

530```534```

531 535 

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

533 

534Активный разработчик обходится в один вызов STS в час на каждую реплику шлюза, а одновременные первые запросы используют один общий вызов.

535 537 

536Шлюз также выполняет на этой роли один собственный вызов: подсчёт токенов для запроса, прерванного клиентом, чтобы [лимиты расходов](https://code.claude.com/docs/ru/claude-apps-gateway-spend-limits.md) оставались точными. Этот подсчёт и его [резервный запрос на один токен](#amazon-bedrock) подписываются общей сессией `claude-apps-gateway`, поэтому AWS относит резервный запрос к `claude-apps-gateway`, а не к разработчику.538Каждый активный разработчик обходится в один вызов STS в час на реплику шлюза, а одновременные первые запросы используют один общий вызов.

537 539 

538Для строгого учёта по разработчикам задайте `assume_role` с `session_name` для каждого указанного upstream Bedrock. Upstream без этой настройки подписывает обслуживаемые им запросы собственными учётными данными.540Шлюз также выполняет с этой ролью один собственный вызов: подсчёт токенов для запроса, который клиент прервал, чтобы [лимиты расходов](https://code.claude.com/docs/ru/claude-apps-gateway-spend-limits.md) оставались точными. Этот подсчёт и его [резервный запрос на один токен](#amazon-bedrock) подписываются общей сессией `claude-apps-gateway`, поэтому AWS относит резервный запрос к `claude-apps-gateway`, а не к разработчику.

539 541 

540#### Эндпоинт Amazon Bedrock Mantle542#### Эндпоинт Amazon Bedrock Mantle

541 543 

542Поставщик `mantle` отправляет запросы инференса на [эндпоинт Mantle](https://code.claude.com/docs/ru/amazon-bedrock.md#use-the-mantle-endpoint) Amazon Bedrock. Требует Claude Code v2.1.283 или новее на сервере шлюза. Более ранние выпуски шлюза отклоняют его при загрузке, поэтому обновите все реплики, прежде чем добавлять его.544Провайдер `mantle` отправляет инференс на [эндпоинт Mantle](https://code.claude.com/docs/ru/amazon-bedrock.md#use-the-mantle-endpoint) Amazon Bedrock. Он требует Claude Code v2.1.283 или новее на сервере шлюза. Более ранние выпуски шлюза отклоняют его при загрузке, поэтому обновите все реплики, прежде чем добавлять его.

543 545 

544В примере ниже Mantle стоит первым, а за ним следует upstream Amazon Bedrock, обслуживающий все модели, не указанные в поле `models`:546В примере ниже Mantle стоит первым, а за ним следует upstream Amazon Bedrock, обслуживающий все модели, не указанные в поле `models`:

545 547 


558 560 

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

560| - | - | - |562| - | - | - |

561| `region` | Да | Регион AWS. Шлюз выводит из него эндпоинт `https://bedrock-mantle.<region>.api.aws/anthropic`. |563| `region` | Да | Регион AWS. Шлюз выводит из него эндпоинт в виде `https://bedrock-mantle.<region>.api.aws/anthropic`. |

562| `models` | Да | Модели, доступ к которым в Mantle предоставлен вашему аккаунту AWS, под теми именами, которые отправляют клиенты, например `claude-haiku-4-5`. В этот upstream направляются только они, а все остальные модели переходят к следующему. |564| `models` | Да | Модели, к которым вашему аккаунту AWS предоставлен доступ в Mantle, с именами в том виде, в каком их отправляют клиенты, например `claude-haiku-4-5`. Только они направляются на этот upstream, а все остальные модели переходят к следующему. |

563| `auth` | Нет | Принимает те же ключи, что и блок `auth` upstream [Amazon Bedrock](#amazon-bedrock), по тем же правилам. |565| `auth` | Нет | Принимает те же ключи, что и блок `auth` upstream [Amazon Bedrock](#amazon-bedrock), по тем же правилам. |

564| `assume_role` | Нет | Роль, через которую идут запросы этого вышестоящего сервиса, с теми же ключами, что и [для вышестоящего сервиса `bedrock`](#bedrock-in-another-aws-account), включая `session_name` для [учёта по каждому разработчику](#per-developer-aws-cost-attribution). Предоставьте роли IAM-действия Mantle. Требуется шлюз с Claude Code v2.1.318 или новее. Более ранний шлюз завершает работу при запуске с ошибкой `Unrecognized key(s) in object: 'assume_role'`. |566| `assume_role` | Нет | Роль, через которую проходят запросы этого upstream, с теми же ключами, что и [для upstream `bedrock`](#bedrock-in-another-aws-account), включая `session_name` для [учёта по разработчикам](#per-developer-aws-cost-attribution). Предоставьте роли IAM-действия Mantle. Требуется шлюз с Claude Code v2.1.318 или новее. Более ранний шлюз при запуске завершается с ошибкой `Unrecognized key(s) in object: 'assume_role'`. |

565| `base_url` | Нет | Переопределить выведенный эндпоинт. Сохраните путь `/anthropic` в конце. |567| `base_url` | Нет | Переопределяет выведенный эндпоинт. Сохраните путь `/anthropic` в конце. |

566 568 

567Предоставьте идентичности AWS этого upstream собственные IAM-действия Mantle для инференса и подсчёта токенов, перечисленные в разделе [Использование эндпоинта Mantle](https://code.claude.com/docs/ru/amazon-bedrock.md#use-the-mantle-endpoint).569Предоставьте AWS-удостоверению upstream собственные IAM-действия Mantle для инференса и подсчёта токенов, перечисленные в разделе [Использование эндпоинта Mantle](https://code.claude.com/docs/ru/amazon-bedrock.md#use-the-mantle-endpoint).

568 570 

569Для ID модели Mantle, который шлюзу неизвестен, добавьте запись в блок верхнего уровня [`models:`](#models), в `upstream_model` которой имя этого upstream сопоставлено с этим ID. Затем укажите `id` этой записи также в поле `models` этого upstream.571Для ID модели Mantle, неизвестного шлюзу, добавьте запись в блок верхнего уровня [`models:`](#models), у которой `upstream_model` сопоставляет имя этого upstream с этим ID. Затем также укажите `id` этой записи в поле `models` этого upstream.

570 572 

571Настройки `guardrail` и `assume_role` upstream `bedrock` не распространяются на запросы, которые обслуживает Mantle:573Настройки `guardrail` и `assume_role` upstream `bedrock` не распространяются на запросы, которые обслуживает Mantle:

572 574 

573* **`guardrail`**: шлюз не применяет [guardrail Bedrock](#apply-an-amazon-bedrock-guardrail) к запросам, которые отправляет в Mantle, поэтому отказывается запускаться, если указан upstream `mantle`, а для какого-либо upstream `bedrock` задан `guardrail`.575* **`guardrail`**: шлюз не применяет [guardrail Bedrock](#apply-an-amazon-bedrock-guardrail) к запросам, которые он отправляет в Mantle, поэтому отказывается запускаться, если указан upstream `mantle`, а какой-либо upstream `bedrock` задаёт `guardrail`.

574* **`assume_role`**: задайте его для самого вышестоящего сервиса `mantle`. Без него запросы, обслуживаемые Mantle, отправляются с собственными учётными данными `auth` вышестоящего сервиса `mantle`.576* **`assume_role`**: задайте его для самого upstream `mantle`. Без него запросы, которые обслуживает Mantle, отправляются с собственными учётными данными `auth` upstream `mantle`.

575 577 

576Что означают собственные ответы Mantle с ошибками, см. в разделе [Ошибки эндпоинта Mantle](https://code.claude.com/docs/ru/amazon-bedrock.md#mantle-endpoint-errors).578О значении собственных ответов Mantle с ошибками см. раздел [Ошибки эндпоинта Mantle](https://code.claude.com/docs/ru/amazon-bedrock.md#mantle-endpoint-errors).

577 579 

578#### Claude Platform on AWS580#### Claude Platform on AWS

579 581 

580Claude Platform on AWS предоставляет собственный API Anthropic на инфраструктуре AWS по адресу `aws-external-anthropic.<region>.api.aws`. Он использует собственные ID моделей Anthropic, учитывает заголовки `anthropic-beta` в том виде, в каком они отправлены, и обслуживает `count_tokens`, поэтому никакие преобразования, специфичные для Bedrock, не применяются. Поставщик `anthropicAws` требует Claude Code v2.1.198 или новее; более ранние выпуски шлюза отклоняют его при загрузке.582Claude Platform on AWS предоставляет собственный API Anthropic на инфраструктуре AWS по адресу `aws-external-anthropic.<region>.api.aws`. Она использует собственные идентификаторы моделей Anthropic, учитывает заголовки `anthropic-beta` в том виде, в каком они отправлены, и обслуживает `count_tokens`, поэтому никакие преобразования, специфичные для Bedrock, не применяются. Провайдер `anthropicAws` требует Claude Code v2.1.198 или новее; более ранние выпуски шлюза отклоняют его при загрузке.

581 583 

582О клиентском развёртывании той же платформы см. [Claude Code на Claude Platform on AWS](https://code.claude.com/docs/ru/claude-platform-on-aws.md). Upstream на стороне шлюза:584О клиентском развёртывании той же платформы см. раздел [Claude Code на Claude Platform on AWS](https://code.claude.com/docs/ru/claude-platform-on-aws.md). Upstream на стороне шлюза:

583 585 

584```yaml theme={null}586```yaml theme={null}

585upstreams:587upstreams:


598 # base_url: https://aws-external-anthropic.us-east-1.api.aws600 # base_url: https://aws-external-anthropic.us-east-1.api.aws

599```601```

600 602 

601Платформа работает в отдельном от Amazon Bedrock аккаунте AWS и подписывает запросы SigV4 для собственного имени сервиса `aws-external-anthropic`, поэтому IAM-роль, ограниченная Bedrock, не даёт к ней доступа. API-ключ в `auth.api_key` имеет приоритет, если также заданы учётные данные SigV4. Пустой блок `auth` использует цепочку учётных данных AWS SDK по умолчанию — ту же, что и upstream [Amazon Bedrock](#amazon-bedrock).603Платформа работает в отдельном от Amazon Bedrock аккаунте AWS и проверяет подписи SigV4 для собственного имени сервиса `aws-external-anthropic`, поэтому IAM-роль с областью действия Bedrock не даёт к ней доступа. API-ключ в `auth.api_key` имеет приоритет, если также заданы учётные данные SigV4. Пустой блок `auth` использует цепочку учётных данных AWS SDK по умолчанию — ту же, что и upstream [Amazon Bedrock](#amazon-bedrock).

602 604 

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

604| - | - | - |606| - | - | - |

605| `region` | Да | Регион AWS: строчные буквы, цифры и дефисы. Шлюз выводит из него эндпоинт `https://aws-external-anthropic.<region>.api.aws`. |607| `region` | Да | Регион AWS: строчные буквы, цифры и дефисы. Шлюз выводит из него эндпоинт в виде `https://aws-external-anthropic.<region>.api.aws`. |

606| `workspace_id` | Да | Отправляется как заголовок в каждом запросе; платформа его требует |608| `workspace_id` | Да | Отправляется как заголовок в каждом запросе; платформа его требует |

607| `auth.api_key` | Нет | API-ключ для платформы, отправляется как `x-api-key`. Это не Bearer-токен: два режима аутентификации — API-ключ или SigV4. |609| `auth.api_key` | Нет | API-ключ платформы, отправляемый как `x-api-key`. Это не Bearer-токен: два режима аутентификации — API-ключ или SigV4. |

608| `auth.aws_access_key_id` / `auth.aws_secret_access_key` | Нет | Явные учётные данные SigV4. Если задать одно без другого, шлюз не запустится. Вместе с ними принимается `auth.aws_session_token`. |610| `auth.aws_access_key_id` / `auth.aws_secret_access_key` | Нет | Явные учётные данные SigV4. Если задать одно без другого, загрузка завершится ошибкой. Вместе с ними принимается `auth.aws_session_token`. |

609| `base_url` | Нет | Переопределить выведенный эндпоинт |611| `base_url` | Нет | Переопределяет выведенный эндпоинт |

610 612 

611Поскольку платформа разрешает собственные ID моделей Anthropic, встроенный каталог направляет запросы к ней без блока [`models:`](#models). Если вы составляете собственный список `models:`, задайте для записи ключ `anthropicAws:` с собственным ID Anthropic.613Поскольку платформа разрешает собственные идентификаторы моделей Anthropic, встроенный каталог маршрутизируется на неё без блока [`models:`](#models). Если вы составляете собственный список `models:`, используйте для записи ключ `anthropicAws:` с собственным идентификатором Anthropic.

612 614 

613#### Google Cloud Agent Platform615#### Google Cloud Agent Platform

614 616 

615Об аналогичной клиентской настройке см. [Claude Code на Google Cloud](https://code.claude.com/docs/ru/google-vertex-ai.md). Upstream на стороне шлюза:617Об эквивалентной клиентской настройке см. раздел [Claude Code в Google Cloud](https://code.claude.com/docs/ru/google-vertex-ai.md). Upstream на стороне шлюза:

616 618 

617```yaml theme={null}619```yaml theme={null}

618upstreams:620upstreams:


626 # base_url: https://us-east5-aiplatform.p.googleapis.com628 # base_url: https://us-east5-aiplatform.p.googleapis.com

627```629```

628 630 

629Пустой блок `auth` использует Application Default Credentials: `GOOGLE_APPLICATION_CREDENTIALS`, метаданные GCE или Workload Identity GKE. JSON-файлы ключей сервисного аккаунта поддерживаются, но не рекомендуются; используйте Workload Identity или привяжите сервисный аккаунт к экземпляру GCE или Cloud Run.631Пустой блок `auth` использует Application Default Credentials: `GOOGLE_APPLICATION_CREDENTIALS`, метаданные GCE или GKE Workload Identity. Файлы ключей сервисных аккаунтов в формате JSON поддерживаются, но не рекомендуются; используйте Workload Identity или привяжите сервисный аккаунт к экземпляру GCE или Cloud Run.

630 632 

631Задайте `region: global`, чтобы использовать [глобальный эндпоинт Google Cloud's Agent Platform](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations) вместо регионального. Тогда Google направляет каждый запрос в доступный регион, и вам не нужно отслеживать доступность моделей по регионам. Указание конкретного региона закрепляет за ним все запросы.633Задайте `region: global`, чтобы использовать [глобальный эндпоинт Google Cloud's Agent Platform](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations) вместо регионального. Тогда Google направляет каждый запрос в доступный регион, и вам не нужно отслеживать доступность моделей по регионам. Указание конкретного региона закрепляет за ним каждый запрос.

632 634 

633| Настройка | Как |635| Настройка | Как |

634| - | - |636| - | - |

635| Разрешения IAM | Предоставьте сервисному аккаунту шлюза `roles/aiplatform.user` в проекте или пользовательскую роль с `aiplatform.endpoints.predict`. Включите API Google Cloud's Agent Platform (`aiplatform.googleapis.com`). |637| IAM-разрешения | Предоставьте сервисному аккаунту шлюза `roles/aiplatform.user` на проект или пользовательскую роль с `aiplatform.endpoints.predict`. Включите API Google Cloud's Agent Platform (`aiplatform.googleapis.com`). |

636| Доступ к моделям | В Model Garden включите модели Claude для вашего проекта. Они публикуются в определённых регионах; поддерживаемые регионы указаны в карточке модели. |638| Доступ к моделям | В Model Garden включите модели Claude для вашего проекта. Они публикуются в определённых регионах; поддерживаемые регионы смотрите в карточке модели. |

637| GKE (Workload Identity) | Привяжите сервисный аккаунт GCP к сервисному аккаунту Kubernetes шлюза и добавьте KSA аннотацию `iam.gke.io/gcp-service-account: claude-gateway@<proj>.iam.gserviceaccount.com`. `auth: {}` подхватит её. |639| GKE (Workload Identity) | Привяжите сервисный аккаунт GCP к сервисному аккаунту Kubernetes шлюза и добавьте к KSA аннотацию `iam.gke.io/gcp-service-account: claude-gateway@<proj>.iam.gserviceaccount.com`. `auth: {}` подхватывает её. |

638| Cloud Run / GCE | Назначьте сервису сервисный аккаунт с `roles/aiplatform.user`. `auth: {}` подхватит его. |640| Cloud Run / GCE | Назначьте сервису сервисный аккаунт с `roles/aiplatform.user`. `auth: {}` подхватывает его. |

639| В других средах | `auth: { service_account_json: /secrets/sa.json }` — путь к JSON-файлу ключа, смонтированному как секрет. Поле принимает путь к файлу, а не содержимое ключа, поэтому подстановка `${file:…}` здесь не используется. |641| В любом другом месте | `auth: { service_account_json: /secrets/sa.json }` — путь к файлу ключа JSON, смонтированному как секрет. Поле принимает путь к файлу, а не содержимое ключа, поэтому подстановка `${file:…}` не используется. |

640 642 

641#### Microsoft Foundry643#### Microsoft Foundry

642 644 

643О клиентском развёртывании Microsoft Foundry см. [Claude Code на Microsoft Foundry](https://code.claude.com/docs/ru/microsoft-foundry.md). Upstream на стороне шлюза:645О клиентском развёртывании Microsoft Foundry см. раздел [Claude Code на Microsoft Foundry](https://code.claude.com/docs/ru/microsoft-foundry.md). Upstream на стороне шлюза:

644 646 

645```yaml theme={null}647```yaml theme={null}

646upstreams:648upstreams:


652 # api_key: ${FOUNDRY_API_KEY}654 # api_key: ${FOUNDRY_API_KEY}

653```655```

654 656 

655`use_azure_ad: true` получает учётные данные через `DefaultAzureCredential`: Managed Identity на AKS, ACI или App Service, Azure CLI или учётные данные из окружения. API-ключи работают, но действуют на уровне всего проекта и не ротируются автоматически. Эндпоинт Microsoft Foundry выводится из `resource:`; задайте необязательный `base_url`, чтобы переопределить его для суверенных облаков, таких как Azure Government.657`use_azure_ad: true` разрешается через `DefaultAzureCredential`: Managed Identity в AKS, ACI или App Service; Azure CLI; или учётные данные из окружения. API-ключи работают, но действуют на весь проект и не ротируются автоматически. Эндпоинт Microsoft Foundry выводится из `resource:`; задайте необязательный `base_url`, чтобы переопределить его для суверенных облаков, таких как Azure Government.

656 658 

657| Настройка | Как |659| Настройка | Как |

658| - | - |660| - | - |

659| RBAC | Предоставьте идентичности шлюза роль `Azure AI User` или `Cognitive Services User` на ресурс Microsoft Foundry |661| RBAC | Предоставьте удостоверению шлюза роль `Foundry User` или `Cognitive Services User` на ресурс Microsoft Foundry |

660| Развёртывания | Microsoft Foundry использует имена развёртываний, выбранные администратором, а не канонические ID моделей. Добавьте блок [`models:`](#models), сопоставляющий каждый канонический ID с именем вашего развёртывания. |662| Развёртывания | Microsoft Foundry использует выбранные администратором имена развёртываний, а не канонические идентификаторы моделей. Добавьте блок [`models:`](#models), сопоставляющий каждый канонический ID с именем вашего развёртывания. |

661| AKS (workload identity) | Настройте федерацию User-Assigned Managed Identity с OIDC-издателем кластера и привяжите её к сервисному аккаунту шлюза. `use_azure_ad: true` подхватит её через `WorkloadIdentityCredential`. |663| AKS (workload identity) | Настройте федерацию User-Assigned Managed Identity с OIDC-издателем кластера и привяжите её к сервисному аккаунту шлюза. `use_azure_ad: true` подхватывает её через `WorkloadIdentityCredential`. |

662| ACI / App Service | Включите для ресурса управляемую идентичность, назначаемую системой или пользователем. `use_azure_ad: true` подхватит её. |664| ACI / App Service | Включите для ресурса управляемое удостоверение, назначаемое системой или пользователем. `use_azure_ad: true` подхватывает его. |

663| В других средах | `auth: { api_key: "${FOUNDRY_API_KEY}" }`. Заключайте `${…}` в кавычки внутри `{ }`. |665| В любом другом месте | `auth: { api_key: "${FOUNDRY_API_KEY}" }`. Заключайте `${…}` в кавычки внутри `{ }`. |

664 666 

665#### Статические заголовки в запросах к upstream667#### Статические заголовки в запросах к upstream

666 668 

667Чтобы добавлять фиксированные заголовки к запросам, которые шлюз отправляет одному upstream, задайте для этого upstream `headers:`. Используйте это, если ваш прокси перед поставщиком маршрутизирует или учитывает трафик по заголовку.669Чтобы добавить фиксированные заголовки к запросам, которые шлюз отправляет одному upstream, задайте для этого upstream `headers:`. Используйте это, если ваш прокси перед провайдером маршрутизирует или учитывает трафик по заголовку.

668 670 

669`headers:` требует Claude Code v2.1.277 или новее на сервере шлюза. Более ранний шлюз отказывается запускаться, обнаружив этот ключ. Обновите все реплики, прежде чем добавлять ключ, и удалите ключ перед откатом на более раннюю версию.671`headers:` требует Claude Code v2.1.277 или новее на сервере шлюза. Более ранний шлюз отказывается запускаться, обнаружив этот ключ. Обновите все реплики, прежде чем добавлять ключ, и удалите ключ, прежде чем откатываться на более раннюю версию.

670 672 

671Заголовки отправляются на сервер, указанный в `base_url`, или на собственный эндпоинт поставщика, если `base_url` не задан. Поставщик тоже получает их, если ваш прокси их не удаляет.673Заголовки отправляются на сервер, указанный в `base_url`, или на собственный эндпоинт провайдера, если `base_url` не задан. Провайдер тоже их получает, если ваш прокси их не удаляет.

672 674 

673В этом примере upstream `provider: vertex` доступен через прокси по адресу `upstream-proxy.internal.example.com`. Задаётся заголовок `x-source`, который читает прокси, и токен из переменной окружения `PROXY_TOKEN` отправляется как `x-proxy-token`:675В этом примере upstream с `provider: vertex` доступен через прокси по адресу `upstream-proxy.internal.example.com`. Задаётся заголовок `x-source`, который читает прокси, и отправляется токен из переменной окружения `PROXY_TOKEN` в виде `x-proxy-token`:

674 676 

675```yaml theme={null}677```yaml theme={null}

676upstreams:678upstreams:


684 x-proxy-token: ${PROXY_TOKEN}686 x-proxy-token: ${PROXY_TOKEN}

685```687```

686 688 

687Значения — печатный текст ASCII без пробелов в начале и конце. Заключайте в кавычки числа, `true` и `false`, чтобы YAML читал их как текст.689Значения — печатаемый текст ASCII без пробелов в начале и в конце. Заключайте число, `true` или `false` в кавычки, чтобы YAML читал их как текст.

688 690 

689Чтобы не хранить секрет в файле конфигурации, используйте [подстановку секретов](#secret-expansion) и загружайте значение из переменной окружения через `${VAR}` или из файла через `${file:/path}`. Если `${VAR}` разрешается в пустое значение, шлюз не запустится.691Чтобы не хранить секрет в файле конфигурации, используйте [подстановку секретов](#secret-expansion) для загрузки значения из переменной окружения через `${VAR}` или из файла через `${file:/path}`. Если `${VAR}` разрешается в пустое значение, шлюз не запустится.

690 692 

691`headers:` работает для всех поставщиков, и каждый upstream отправляет только свои заголовки.693`headers:` работает для любого провайдера, и каждый upstream отправляет только свои заголовки.

692 694 

693Не все запросы, которые шлюз отправляет upstream, содержат их:695Не каждый запрос, который шлюз отправляет upstream, содержит их:

694 696 

695| Запрос шлюза к этому upstream | Содержит `headers:` |697| Запрос, который шлюз отправляет этому upstream | Содержит `headers:` |

696| - | - |698| - | - |

697| `/v1/messages`, потоковый или нет, и `/v1/messages/count_tokens` | Да |699| `/v1/messages`, потоковый или нет, и `/v1/messages/count_tokens` | Да |

698| Запрос, переключённый с другого upstream | Да, только `headers:` этого upstream |700| Запрос, переключившийся с другого upstream | Да, только `headers:` этого upstream |

699| Вызов `CountTokens` Amazon Bedrock для запроса, прерванного клиентом | Нет |701| Вызов `CountTokens` Amazon Bedrock для запроса, который клиент прервал | Нет |

700| Обмен токенов Workload Identity Federation | Нет |702| Обмен токенов Workload Identity Federation | Нет |

701 703 

702Для upstream Amazon Bedrock или Claude Platform on AWS, который подписывает запросы с помощью AWS SigV4, эти заголовки входят в подпись, поэтому ваш прокси должен передавать их без изменений.704На upstream Amazon Bedrock или Claude Platform on AWS, который подписывает запросы с помощью AWS SigV4, эти заголовки входят в подпись, поэтому ваш прокси должен передавать их без изменений.

703 705 

704Если вы используете имя, зарезервированное шлюзом, он отказывается запускаться, и ошибка запуска указывает этот заголовок. К зарезервированным относятся:706Если вы используете имя, зарезервированное шлюзом, он отказывается запускаться, а ошибка запуска называет этот заголовок. К зарезервированным относятся:

705 707 

706* `authorization` и `x-api-key`708* `authorization` и `x-api-key`

707* `host`, `content-type` и `user-agent`709* `host`, `content-type` и `user-agent`

708* Любое имя, начинающееся с `anthropic-`, `x-goog-`, `x-amz-` или `x-amzn-`710* Любое имя, начинающееся с `anthropic-`, `x-goog-`, `x-amz-` или `x-amzn-`

709 711 

710#### Несколько upstream712#### Несколько вышестоящих провайдеров

711 713 

712Один и тот же поставщик может встречаться несколько раз с разными `name:`. Это позволяет использовать разные регионы, разные аккаунты через разные цепочки учётных данных, выделенную пропускную способность наряду с оплатой по запросу, а также резервный вариант у другого поставщика.714Один и тот же провайдер может встречаться несколько раз с разными значениями `name:`. Это покрывает разные регионы, разные аккаунты через разные цепочки учётных данных, выделенную пропускную способность в сравнении с оплатой по запросу, а также переключение на другого провайдера в качестве резервного варианта.

713 715 

714Шлюз пробует upstream по порядку. При `5xx`, `429`, `401`, `403`, `404`, таймаутах и отсутствии эндпоинта (`501`) происходит переключение; при других `4xx` — нет.716Шлюз перебирает вышестоящих провайдеров по порядку. При `5xx`, `429`, `401`, `403`, `404`, таймаутах и отсутствующем эндпоинте (`501`) происходит переключение на следующего; при остальных `4xx` — нет.

715 717 

716`429` означает нехватку мощности конкретного upstream, поэтому при исчерпании выделенной пропускной способности (PT) запросы переключаются на оплату по запросу. Если вы задали [`forward_user_identity: true`](#per-user-identity-headers-for-a-proxy-you-run) для upstream, `429` на запрос, содержащий email разработчика, считается отказом для отдельного пользователя и не приводит к переключению.718`429` относится к ёмкости конкретного вышестоящего провайдера, поэтому исчерпание выделенной пропускной способности (PT) приводит к переключению на оплату по запросу. Если для вышестоящего провайдера задан [`forward_user_identity: true`](#per-user-identity-headers-for-a-proxy-you-run), то `429` в ответ на запрос, содержащий email разработчика, означает отказ для конкретного пользователя и не приводит к переключению.

717 719 

718Запрос переходит к следующему вышестоящему провайдеру только в следующих случаях:720Запрос переходит к следующему вышестоящему провайдеру только в следующих случаях:

719 721 


721* Вышестоящий провайдер не обслуживает запрошенную модель723* Вышестоящий провайдер не обслуживает запрошенную модель

722* У вышестоящего провайдера есть [список `groups`](#send-each-team-to-its-own-upstream), в который разработчик не входит724* У вышестоящего провайдера есть [список `groups`](#send-each-team-to-its-own-upstream), в который разработчик не входит

723 725 

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

725 727 

726Шлюз ждёт начала ответа в течение следующего времени:728Шлюз ждёт начала ответа в течение следующего времени:

727 729 

728* **Upstream `provider: anthropic`**: [`timeouts.upstream_ttfb_ms`](#http-tuning), по умолчанию 120 секунд730* **Вышестоящие провайдеры `provider: anthropic`**: [`timeouts.upstream_ttfb_ms`](#http-tuning), по умолчанию 120 секунд

729* **Другие поставщики**: до одного часа. Чтобы сократить это ожидание для потоковых запросов, задайте `timeouts.upstream_ttfb_ms` на шлюзе v2.1.295 или новее. Непотоковые запросы к модели в любом случае ждут до одного часа731* **Другие провайдеры**: до одного часа. Чтобы сократить это ожидание для потоковых запросов, задайте `timeouts.upstream_ttfb_ms` на шлюзе версии v2.1.295 или новее. Непотоковые запросы к модели в любом случае ждут до одного часа

730 732 

731`404` означает недоступность модели в конкретном upstream, поэтому upstream, в котором модель не включена, не блокирует следующий upstream, который её обслуживает. Upstream, который не может разрешить запрошенную модель, пропускается без сетевого обращения.733`404` относится к доступности модели у конкретного вышестоящего провайдера, поэтому провайдер, у которого модель не включена, не блокирует следующего провайдера, который её обслуживает. Вышестоящий провайдер, который не может сопоставить запрошенную модель, пропускается без сетевого обращения.

732 734 

733В этом примере запросы сначала направляются в выделенную пропускную способность Amazon Bedrock, при переполнении — в режим оплаты по запросу и во второй аккаунт, а в последнюю очередь — в Anthropic API:735В этом примере запросы сначала направляются в выделенную пропускную способность Amazon Bedrock, излишек уходит на оплату по запросу и во второй аккаунт, а в качестве последнего резервного варианта используется Anthropic API:

734 736 

735```yaml theme={null}737```yaml theme={null}

736upstreams:738upstreams:

737 # Основной: выделенная пропускная способность в вашем домашнем регионе.739 # Primary: provisioned throughput in your home region.

738 - name: bedrock-pt740 - name: bedrock-pt

739 provider: bedrock741 provider: bedrock

740 region: us-east-1742 region: us-east-1

741 auth: {}743 auth: {}

742 # Переполнение: оплата по запросу, межрегиональный инференс.744 # Overflow: on-demand cross-region.

743 - name: bedrock-od745 - name: bedrock-od

744 provider: bedrock746 provider: bedrock

745 region: us-west-2747 region: us-west-2

746 auth: {}748 auth: {}

747 # Другой аккаунт: отдельная квота Bedrock через статические ключи.749 # Different account: a separate Bedrock allotment via static keys.

748 - name: bedrock-acct2750 - name: bedrock-acct2

749 provider: bedrock751 provider: bedrock

750 region: us-east-1752 region: us-east-1

751 auth:753 auth:

752 aws_access_key_id: ${ACCT2_AKID}754 aws_access_key_id: ${ACCT2_AKID}

753 aws_secret_access_key: ${ACCT2_SK}755 aws_secret_access_key: ${ACCT2_SK}

754 # Последний вариант: Anthropic API напрямую.756 # Last resort: direct Anthropic API.

755 - name: anthropic-fallback757 - name: anthropic-fallback

756 provider: anthropic758 provider: anthropic

757 auth:759 auth:

758 api_key: ${ANTHROPIC_API_KEY}760 api_key: ${ANTHROPIC_API_KEY}

759 761 

760# ID моделей для каждого upstream задаются по `name:` upstream.762# Per-upstream model IDs are keyed on the upstream's `name:`.

761models:763models:

762 - id: claude-opus-4-8764 - id: claude-opus-4-8

763 label: Claude Opus 4.8765 label: Claude Opus 4.8


768 anthropic-fallback: claude-opus-4-8770 anthropic-fallback: claude-opus-4-8

769```771```

770 772 

771| Рычаг | Как |773| Инструмент | Как |

772| - | - |774| - | - |

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

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

775| Разные команды | Задайте для вышестоящего провайдера каждой команды список `groups`, чтобы к нему обращались только разработчики из этих групп IdP. См. [Направление каждой команды к своему вышестоящему провайдеру](#send-each-team-to-its-own-upstream). |777| Разные команды | Задайте вышестоящему провайдеру каждой команды список `groups`, чтобы к нему обращались только разработчики из этих групп IdP. См. [Направление каждой команды к её собственному вышестоящему провайдеру](#send-each-team-to-its-own-upstream). |

776| Выделенная пропускная способность | Сопоставьте модель с ARN выделенной пропускной способности в `models:` для имени этого upstream. Остальные upstream сохраняют ID для оплаты по запросу, поэтому мощность PT исчерпывается до переключения. |778| Выделенная пропускная способность | Сопоставьте модель с ARN выделенной пропускной способности в `models:` для имени этого вышестоящего провайдера. Остальные провайдеры сохраняют ID для оплаты по запросу, поэтому ёмкость PT исчерпывается до переключения. |

777| Эндпоинты VPC / FIPS | Задайте в `base_url:` upstream URL вашего VPC-эндпоинта или эндпоинта FIPS |779| Эндпоинты VPC / FIPS | Задайте для вышестоящего провайдера `base_url:` с URL вашего эндпоинта VPC или FIPS |

778| Маршрутизация по модели | Пользовательский `id` модели, то есть не встроенной модели Claude, пропускает вышестоящих провайдеров, отсутствующих в его карте `upstream_model:`. Вышестоящий провайдер со списком `models`, который обязателен для [провайдера `mantle`](#amazon-bedrock-mantle-endpoint), используется только для этих моделей. |780| Маршрутизация по модели | Пользовательский `id` модели, то есть не встроенной модели Claude, пропускает вышестоящих провайдеров, отсутствующих в его карте `upstream_model:`. Вышестоящий провайдер со списком `models`, который обязателен для [вышестоящего провайдера `mantle`](#amazon-bedrock-mantle-endpoint), используется только для этих моделей. |

779| Маршрутизация встроенных моделей | Для вышестоящего провайдера без списков `models` и `groups` шлюз перебирает встроенные модели по порядку и использует ID провайдера по умолчанию, если в карте `upstream_model:` нет записи. Для встроенной модели, у которой у провайдера есть ID по умолчанию, карта определяет, какой ID получит вышестоящий провайдер, а не то, будет ли он использован. Вышестоящий провайдер, отклонивший ID, подчиняется тем же [правилам переключения](#upstreams), что и при любой другой ошибке. |781| Маршрутизация встроенных моделей | Для вышестоящего провайдера без списков `models` и `groups` шлюз перебирает встроенные модели по порядку и использует ID провайдера по умолчанию, если в карте `upstream_model:` нет записи. Для встроенной модели, у которой есть ID по умолчанию у провайдера, карта меняет то, какой ID получает вышестоящий провайдер, а не то, будет ли он использован. Вышестоящий провайдер, отклоняющий ID, подчиняется тем же [правилам переключения](#upstreams), что и при любой другой ошибке вышестоящего провайдера. |

780 782 

781Переключение между облачными поставщиками или на Anthropic API напрямую меняет соглашение, географию и другие условия, которым подчиняется запрос.783Переключение между облачными провайдерами или на прямой Anthropic API меняет то, какое соглашение, география и другие условия применяются к запросу.

782 784 

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

784 786 

785#### Направление каждой команды к своему вышестоящему провайдеру787#### Направление каждой команды к её собственному вышестоящему провайдеру

786 788 

787Чтобы направлять запросы каждой команды в её собственный аккаунт AWS или проект Google Cloud, укажите по одному вышестоящему провайдеру на команду и задайте каждому список `groups`. К такому провайдеру обращаются только разработчики из перечисленных групп IdP — как при первой попытке, так и при [переключении](#multiple-upstreams). `groups` поддерживается всеми провайдерами. Требуется Claude Code v2.1.314 или новее на сервере шлюза.789Чтобы направлять запросы каждой команды в её собственный аккаунт AWS или проект Google Cloud, укажите по одному вышестоящему провайдеру на команду и задайте каждому список `groups`. К такому провайдеру обращаются только разработчики из указанной группы IdP — как при первой попытке, так и при [переключении](#multiple-upstreams). `groups` поддерживается всеми провайдерами. Требуется Claude Code v2.1.314 или новее на сервере шлюза.

788 790 

789В этом примере группы `payments-eng` и `search-eng` получают по аккаунту AWS, а также добавлен вышестоящий провайдер без списка `groups`, доступный всем разработчикам:791В этом примере группы `payments-eng` и `search-eng` получают по аккаунту AWS, а также добавлен вышестоящий провайдер без списка `groups`, которым может пользоваться любой разработчик:

790 792 

791```yaml theme={null}793```yaml theme={null}

792upstreams:794upstreams:


810 auth: {}812 auth: {}

811```813```

812 814 

813При такой конфигурации запросы каждого разработчика начинаются с первого вышестоящего провайдера в его строке и при переключении переходят к следующему:815С этой конфигурацией запросы каждого разработчика начинаются с первого вышестоящего провайдера в его строке и при переключении переходят к следующему:

814 816 

815| Группы разработчика | Вышестоящие провайдеры по порядку |817| Группы разработчика | Вышестоящие провайдеры по порядку |

816| - | - |818| - | - |

817| `payments-eng` | `bedrock-payments`, затем `bedrock-shared` |819| `payments-eng` | `bedrock-payments`, затем `bedrock-shared` |

818| `search-eng` | `bedrock-search`, затем `bedrock-shared` |820| `search-eng` | `bedrock-search`, затем `bedrock-shared` |

819| `payments-eng` и `search-eng` | `bedrock-payments`, затем `bedrock-search`, затем `bedrock-shared` |821| `payments-eng` и `search-eng` | `bedrock-payments`, затем `bedrock-search`, затем `bedrock-shared` |

820| Ни одной | `bedrock-shared` |822| Ни одна из них | `bedrock-shared` |

821 823 

822Когда вышестоящий провайдер команды отклоняет запрошенную модель с кодом `403`, шлюз пробует следующего провайдера в строке этой команды, который обслуживает модель. Чтобы закрепить команду за одним провайдером, задайте список `groups` каждому вышестоящему провайдеру и убедитесь, что ни один другой провайдер не перечисляет группу, в которую входят разработчики команды. Тогда у этой команды не будет переключения, а запросы разработчиков, не входящих ни в одну из перечисленных групп, [завершатся ошибкой `400`](#what-happens-when-a-developer-is-in-no-listed-group).824Когда вышестоящий провайдер команды отклоняет запрошенную модель с кодом `403`, шлюз пробует следующего провайдера в строке этой команды, который обслуживает модель. Чтобы удержать команду на одном вышестоящем провайдере, задайте каждому провайдеру список `groups` и убедитесь, что ни один другой провайдер не содержит группу, в которую входят разработчики команды. Тогда у этой команды нет переключения, а запросы от разработчиков, не входящих ни в одну указанную группу, [завершаются ошибкой `400`](#what-happens-when-a-developer-is-in-no-listed-group).

823 825 

824Чтобы каждый разработчик попадал к нужному вышестоящему провайдеру, записывайте точно совпадающие значения и размещайте открытых провайдеров последними:826Чтобы каждый разработчик попадал к нужному вышестоящему провайдеру, указывайте записи, совпадающие в точности, и размещайте открытых провайдеров последними:

825 827 

826* **Значения**: записывайте каждую группу точно так, как ваш IdP передаёт её в [claim групп](#oidc), который также читает [`match.groups`](#managed). Шлюз отказывается запускаться, если находит пустой список или пустое значение. Он не сверяет значения с вашим IdP, поэтому значение, которому никто не соответствует, не вызывает предупреждения.828* **Записи**: указывайте каждую группу в точности так, как ваш IdP отправляет её в [claim групп](#oidc), который также читает [`match.groups`](#managed). Шлюз отказывается запускаться, если находит пустой список или пустую запись. Он не сверяет записи с вашим IdP, поэтому запись, которой никто не соответствует, не вызывает предупреждения.

827* **Порядок**: размещайте вышестоящего провайдера без списка `groups` последним. Он обслуживает всех, поэтому, если указать его раньше, он будет перехватывать запросы команды до её собственного провайдера.829* **Порядок**: размещайте вышестоящего провайдера без списка `groups` последним. Он обслуживает всех, поэтому, если указать его раньше, он будет забирать запросы команды раньше её собственного провайдера.

828 830 

829> [!WARNING]831> [!WARNING]

830>832>

831> Шлюз версии ниже v2.1.314 отказывается запускаться, если находит `groups`, поэтому обновите все реплики, прежде чем добавлять этот параметр.833> Шлюз версии ниже v2.1.314 отказывается запускаться, если находит `groups`, поэтому обновите все реплики, прежде чем добавлять его.

832>834>

833> Перед откатом на предыдущую версию удалите каждого вышестоящего провайдера со списком `groups`, а также все ключи `upstream_model` и переопределения цен, ссылающиеся на него, и оставьте хотя бы одного вышестоящего провайдера. Если удалить только ключ `groups`, этот провайдер станет доступен всем разработчикам. Ключ или переопределение, которые всё ещё ссылаются на удалённого провайдера, не дают шлюзу запуститься с ошибкой `references unknown upstream`.835> Перед откатом версии удалите каждого вышестоящего провайдера со списком `groups`, а также все ключи `upstream_model` и переопределения цен, которые на него ссылаются, и оставьте хотя бы одного вышестоящего провайдера. Если удалить только ключ `groups`, этот провайдер становится открыт для всех разработчиков. Ключ или переопределение, всё ещё ссылающиеся на удалённого провайдера, не дают шлюзу запуститься с ошибкой `references unknown upstream`.

834 836 

835##### Что происходит, если разработчик не входит ни в одну из перечисленных групп837##### Что происходит, если разработчик не входит ни в одну указанную группу

836 838 

837Если у каждого вышестоящего провайдера есть список `groups`, разработчик, не входящий ни в одну из этих групп, видит следующую ошибку, и шлюз не обращается ни к одному провайдеру:839Если у каждого вышестоящего провайдера есть список `groups`, разработчик, не входящий ни в одну из этих групп, видит следующую ошибку, и шлюз не обращается ни к одному провайдеру:

838 840 


840API Error: 400 you aren't in a group that can use this gateway. Ask your administrator to add you to one842API Error: 400 you aren't in a group that can use this gateway. Ask your administrator to add you to one

841```843```

842 844 

843Добавьте разработчика в одну из перечисленных групп в вашем IdP или добавьте вышестоящего провайдера без списка `groups`.845Добавьте разработчика в одну из указанных групп в вашем IdP или добавьте вышестоящего провайдера без списка `groups`.

844 846 

845Шлюз заново считывает группы разработчика при каждом обновлении токена. Если ваш IdP не передаёт группы при обновлении, у разработчика их не оказывается:847Шлюз заново считывает группы разработчика при каждом обновлении токена. Если ваш IdP не включает группы в обновление, у разработчика их не остаётся:

846 848 

847* **Задан [`oidc.allowed_groups`](#oidc)**: шлюз отклоняет обновление, и сессия завершается849* **Задан [`oidc.allowed_groups`](#oidc)**: шлюз отклоняет обновление, и сессия завершается

848* **Иначе, если у какого-либо вышестоящего провайдера нет списка `groups`**: запросы разработчика переходят к нему850* **Иначе, если есть вышестоящий провайдер без списка `groups`**: запросы разработчика переходят к нему

849* **Иначе, если у каждого вышестоящего провайдера есть список `groups`**: запросы разработчика завершаются этой ошибкой851* **Иначе, если у каждого вышестоящего провайдера есть список `groups`**: запросы разработчика завершаются этой ошибкой

850 852 

851Если эндпоинт userinfo вашего IdP возвращает claim групп, а `oidc.google_groups` не задан, установите [`oidc.userinfo_fallback`](#oidc) в `true`, чтобы получать группы оттуда.853Если userinfo-эндпоинт вашего IdP возвращает claim групп, а `oidc.google_groups` не задан, установите [`oidc.userinfo_fallback`](#oidc) в `true`, чтобы получать группы оттуда.

852 854 

853## Необязательные разделы855## Необязательные разделы

854 856 


1001 1003 

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

1003 1005 

1006Чтобы разработчики могли использовать псевдоним `fable` при `auto_include_builtin_models: false`, добавьте запись `claude-fable-5` в `models`. Это ID, в который [псевдоним `fable`](https://code.claude.com/docs/ru/model-config#fable-alias-resolution) разрешается для разработчиков, вошедших через шлюз. Без неё их сообщения завершаются ошибкой, начинающейся с `API Error: 400 model claude-fable-5 is not in the operator's model allowlist`.

1007 

1004### `managed`1008### `managed`

1005 1009 

1006Блок `managed` определяет политики доступа на основе ролей, привязанные к группам IdP или домену email. Политики оцениваются по порядку; по умолчанию выбирается первое совпадение, которое затем объединяется с базовой политикой `match: {}`, охватывающей всех. Пользователь, подпадающий под две ролевые политики, получает только первую, поэтому правила запрета второй политики не применяются, если вы не [примените все подходящие политики](#apply-every-matching-policy). Политики обслуживаются для каждого пользователя по адресу `GET /managed/settings` с кэшированием ETag/304.1010Блок `managed` определяет политики доступа на основе ролей, привязанные к группам IdP или домену email. Политики оцениваются по порядку; по умолчанию выбирается первое совпадение, которое затем объединяется с базовой политикой `match: {}`, охватывающей всех. Пользователь, подпадающий под две ролевые политики, получает только первую, поэтому правила запрета второй политики не применяются, если вы не [примените все подходящие политики](#apply-every-matching-policy). Политики обслуживаются для каждого пользователя по адресу `GET /managed/settings` с кэшированием ETag/304.


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

1026 1030 

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

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

1033 * `permissions.deny` и `permissions.ask`

1034 * `disabledMcpjsonServers` и `deniedMcpServers`

1035 * `blockedMarketplaces` и `deniedModels`

1036 * Массивы типов событий `hooks`

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

1030 1038 

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


1277 1285 

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

1279 1287 

1288> [!NOTE]

1289>

1290> Claude Code не читает `upstream_model` псевдонима, чтобы определить размер его контекстного окна. Чтобы передать окно модели псевдониму в `models`, который Claude Code не распознаёт, см. [Исправление окна для ID модели шлюза или пользовательской модели](https://code.claude.com/docs/ru/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id).

1291 

1280#### Часовой кэш промптов1292#### Часовой кэш промптов

1281 1293 

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


1379 1391 

1380##### Что шлюз отклоняет при запуске1392##### Что шлюз отклоняет при запуске

1381 1393 

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

1383 1395 

1384* Неизвестный ключ1396* Распознанный ключ со значением, которое Claude Desktop отклонил бы или молча отбросил, например пустым значением.

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

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

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

1399* Начиная с v2.1.300 — любой ключ, имя которого начинается с `selfHosted`, например ключи для самостоятельно размещённого хоста сессий. Удалите эти ключи, прежде чем обновлять шлюз до v2.1.300 или более поздней версии.

1388 1400 

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

1390 1402 

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

1392 1404 

1405##### Ключи, неизвестные шлюзу

1406 

1407На шлюзе под управлением Claude Code v2.1.295 или более поздней версии большинство ключей из более нового выпуска Claude Desktop не требуют обновления шлюза. В v2.1.321 или более поздней версии его не требует и большинство новых подключей внутри известного ключа.

1408 

1409Некоторые ключи и значения по-прежнему приводят к сбою при загрузке, например:

1410 

1411* Новый вариант в фиксированном списке значений известного ключа.

1412* Вероятная опечатка в ключе, который можно задать в блоке `desktop`, например `disable_auto_updates` вместо `disableAutoUpdates`. Ошибка предлагает правильное имя.

1413 

1414В каждом случае, если такое имя или значение действительно существует в более новом выпуске Claude Desktop, [обновите шлюз](https://code.claude.com/docs/ru/claude-apps-gateway-deploy.md#upgrades) до последнего выпуска. В противном случае исправьте или удалите его. Чтобы узнать это до развёртывания, [проверьте политику](#test-a-policy-before-deployment).

1415 

1393##### Ключи, требующие более новой версии шлюза или Claude Desktop1416##### Ключи, требующие более новой версии шлюза или Claude Desktop

1394 1417 

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

1396 1419 

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

1398 1421 

Details

92 92 

93Помимо бинарного файла, образу нужны:93Помимо бинарного файла, образу нужны:

94 94 

95* **Образ на основе glibc**: единственные динамические зависимости сборки glibc — это библиотеки glibc. Образы на основе Musl нуждаются в сборке `linux-x64-musl` или `linux-arm64-musl` плюс дополнительные пакеты; см. [Настройка Alpine Linux](https://code.claude.com/docs/ru/setup.md#alpine-linux-and-musl-based-distributions).95* **Образ на основе glibc**: единственные динамические зависимости сборки glibc — это библиотеки glibc. Образам на основе Musl нужна сборка `linux-x64-musl` или `linux-arm64-musl`, единственной динамической зависимостью которой является musl.

96* **Записываемый каталог состояния**: шлюз работает как любой пользователь, но минимальные образы не имеют записываемого home. Установите `CLAUDE_CONFIG_DIR` на записываемый путь, такой как `/tmp/.claude`.96* **Записываемый каталог состояния**: шлюз работает как любой пользователь, но минимальные образы не имеют записываемого home. Установите `CLAUDE_CONFIG_DIR` на записываемый путь, такой как `/tmp/.claude`.

97* **Команда контейнера**: `claude gateway --config /etc/claude/gateway.yaml`, с файлом конфигурации, смонтированным только для чтения, и секретами, предоставленными как переменные окружения; шлюз слушает на `listen.port`, по умолчанию `8080`.97* **Команда контейнера**: `claude gateway --config /etc/claude/gateway.yaml`, с файлом конфигурации, смонтированным только для чтения, и секретами, предоставленными как переменные окружения; шлюз слушает на `listen.port`, по умолчанию `8080`.

98 98 

Details

189 189 

190```190```

191Sent to cloud session.191Sent to cloud session.

192Session ID: session_01DiUkqY2kzbUbDmW1w96rfi192Session ID: session_01HJKLMNOPQRSTUVWXYZ

193View: https://claude.ai/code/session_01DiUkqY2kzbUbDmW1w96rfi?from=cli&m=0193View: https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ?from=cli&m=0

194```194```

195 195 

196Передайте `--output-format json` для машиночитаемого результата: `{ok, session_id, url}` при успехе, или `{ok: false, session_id, error}` когда отправка не пройдёт, например когда сессия отсутствует или архивирована. Ошибки конфигурации, такие как неподдерживаемый поставщик или отключённая политика организации, выводятся в stderr без JSON. `--output-format stream-json` не поддерживается с `--cloud <session-id>`.196Передайте `--output-format json` для машиночитаемого результата: `{ok, session_id, url}` при успехе, или `{ok: false, session_id, error}` когда отправка не пройдёт, например когда сессия отсутствует или архивирована. Ошибки конфигурации, такие как неподдерживаемый поставщик или отключённая политика организации, выводятся в stderr без JSON. `--output-format stream-json` не поддерживается с `--cloud <session-id>`.

Details

274 274 

275Тред работает в [авторежиме](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode), поэтому Claude выполняет команды и редактирует файлы в этой папке, не спрашивая вас каждый раз. Если авторежим недоступен или отключён в Claude Code на этом компьютере, тред работает без него, и любой запрос разрешения, который он выдаёт, ожидает вашего ответа в треде, как описано в разделе [Разблокировка треда, ожидающего подтверждения](#unblock-a-thread-waiting-on-approval).275Тред работает в [авторежиме](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode), поэтому Claude выполняет команды и редактирует файлы в этой папке, не спрашивая вас каждый раз. Если авторежим недоступен или отключён в Claude Code на этом компьютере, тред работает без него, и любой запрос разрешения, который он выдаёт, ожидает вашего ответа в треде, как описано в разделе [Разблокировка треда, ожидающего подтверждения](#unblock-a-thread-waiting-on-approval).

276 276 

277Чтобы запустить тред в другом режиме, запустите `claude remote-control` с [`--settings`](https://code.claude.com/docs/ru/remote-control#start-a-remote-control-session). Тогда [`permissions.defaultMode`](https://code.claude.com/docs/ru/permission-modes#start-in-a-different-mode) в этом файле или в настройках этого компьютера может выбрать другой режим.

278 

277Пока тред работает, значок ноутбука в его заголовке показывает, подключён ли ваш компьютер. Нажмите на него, чтобы увидеть, какую папку использует тред, или отключить соединение. Тред приостанавливается, пока этот компьютер находится в спящем режиме, и останавливается, если настольное приложение или `claude remote-control` завершает работу.279Пока тред работает, значок ноутбука в его заголовке показывает, подключён ли ваш компьютер. Нажмите на него, чтобы увидеть, какую папку использует тред, или отключить соединение. Тред приостанавливается, пока этот компьютер находится в спящем режиме, и останавливается, если настольное приложение или `claude remote-control` завершает работу.

278 280 

279* **Чтобы снова запустить тред**: см. [Lost contact with your folder](#lost-contact-with-your-folder)281* **Чтобы снова запустить тред**: см. [Lost contact with your folder](#lost-contact-with-your-folder)

code-mode.md +224 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Выполнение вызовов инструментов из кода с помощью Code Mode

6 

7> Попробуйте Code Mode — экспериментальную функцию, в которой Claude пишет JavaScript-код, выполняющий несколько вызовов инструментов за один шаг.

8 

9Code Mode меняет то, как Claude использует свои [инструменты](https://code.claude.com/docs/ru/tools-reference.md). Без Code Mode Claude запрашивает вызовы инструментов, таких как Bash, Read или Edit, напрямую и читает каждый результат, прежде чем решить, что делать дальше. С Code Mode Claude пишет фрагмент JavaScript-кода, который выполняет вызовы инструментов, а Claude Code запускает этот код в вашей сессии.

10 

11> [!NOTE]

12>

13> Code Mode — экспериментальная функция, по умолчанию отключённая. Она может измениться или быть удалена в любом релизе. Чтобы оставить отзыв, выполните `/feedback`.

14 

15## Как работает Code Mode

16 

17В сессии с Code Mode вы по-прежнему описываете задачу в промпте, а Claude пишет JavaScript-код для её выполнения. Один фрагмент кода может запускать команды параллельно, использовать один результат в следующем вызове и возвращать ту часть вывода, которую Claude нужно прочитать.

18 

19Например, если вы попросите Claude увеличить лимит повторных попыток, Claude может написать такой код, чтобы найти файл, отредактировать его и запустить тесты. Последняя строка возвращает Claude путь к файлу и вывод тестов:

20 

21```javascript theme={null}

22const files = await $`rg -l "function retryPolicy" src`.text();

23const target = files.trim().split("\n")[0];

24await edit(target, "maxAttempts: 3", "maxAttempts: 5");

25({ edited: target, tests: $`npm test -- retryPolicy`.nothrow() });

26```

27 

28В диалоге вы видите вызовы инструментов, например diff правки, а не код. Чтобы прочитать код, нажмите `Ctrl+O` и откройте [просмотрщик транскрипта](https://code.claude.com/docs/ru/interactive-mode.md#transcript-viewer). Каждый фрагмент кода отображается там в виде свёрнутой строки **Code** с подсказкой, как её развернуть.

29 

30### Когда использовать Code Mode

31 

32Попробуйте Code Mode на задачах, требующих множества связанных вызовов инструментов, например:

33 

34* Изменение, которое повторяется во многих файлах

35* Поиск, результаты которого нужно отфильтровать, прежде чем Claude их прочитает

36* Несколько независимых команд, которые можно выполнять одновременно

37 

38### Ограничения Code Mode

39 

40Прежде чем включить Code Mode, убедитесь, что эти ограничения для вас приемлемы:

41 

42* **Возобновление**: сессию с Code Mode можно возобновить только в терминале и только с включённым Code Mode

43* **Авторежим**: классификатор авторежима [проверяет код, а не каждый вызов инструмента](#permission-checks)

44* **Долго выполняющийся код**: если код не может [выполняться в фоновом режиме](#long-running-code), вы ждёте его завершения, и он останавливается через десять минут

45* **Хуки**: вы можете увидеть [отклонённые вызовы инструментов](#tool-call-refused-by-a-hook), когда хук `PreToolUse` не может запуститься или превышает таймаут, а также [вывод кода, заблокированный](#code-output-withheld-by-a-hook) хуком `UserPromptSubmit`

46* **Недоступные функции**: вы не можете использовать [Remote Control](https://code.claude.com/docs/ru/remote-control.md), [Claude in Chrome](https://code.claude.com/docs/ru/chrome.md) или [computer use](https://code.claude.com/docs/ru/computer-use.md)

47* **Перенос сессии**: вы не можете перенести сессию в приложение Desktop или превратить её в [фоновую сессию](https://code.claude.com/docs/ru/agent-view.md), а `/fork` не может запустить фоновую копию

48 

49## Требования

50 

51* **Версия**: Claude Code v2.1.323 или новее, на любом [канале релизов](https://code.claude.com/docs/ru/setup.md#configure-release-channel). Более старая версия запускается без Code Mode — с причиной `it isn't open to your account yet` или без неё

52* **Аккаунт**: подписка Claude или аккаунт Console. Использовать Code Mode через шлюз, Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform или Microsoft Foundry нельзя

53* **Организация**: ваша организация не использует ни [конфигурацию HIPAA](https://code.claude.com/docs/ru/hipaa-setup.md), ни [нулевое хранение данных](https://code.claude.com/docs/ru/zero-data-retention.md)

54* **Модель**: Claude Opus 5.5, Sonnet 5.5, Haiku 5.5 или Fable 5.2

55* **Интерфейс**: интерактивная сессия `claude` в терминале. Code Mode не работает с `-p`, Agent SDK, панелью VS Code, приложением Desktop и облачными сессиями

56* **Установка**: [нативная сборка](https://code.claude.com/docs/ru/setup.md) Claude Code

57* **Windows**: установлен [Git for Windows](https://git-scm.com/downloads/win)

58 

59Кроме того, Code Mode не запустится, если включены некоторые настройки, например вспомогательная программа для API-ключа, команды агентов, экспорт OpenTelemetry или `DISABLE_TELEMETRY`. Как исправить каждый из этих случаев, см. в разделе [Code Mode не запускается](#code-mode-doesnt-start).

60 

61## Попробуйте Code Mode

62 

63Включите Code Mode, дайте Claude задачу и посмотрите на код, который написал Claude.

64 

65**1. Проверьте версию**

66 

67Выполните `claude --version`. Если версия старше v2.1.323, выполните `claude update`. Если вы на канале `stable` и обновление не доходит до v2.1.323, подождите, пока `stable` догонит, или [переключитесь на `latest`](https://code.claude.com/docs/ru/setup#configure-release-channel).

68 

69**2. Запустите Claude Code с включённым Code Mode**

70 

71Установите для переменной окружения [`CLAUDE_CODE_EXPERIMENTAL_CODE_MODE`](https://code.claude.com/docs/ru/env-vars#variables) значение `1`. Чтобы попробовать Code Mode, задайте её в оболочке. Чтобы включить Code Mode для каждой новой сессии, задайте её в пользовательских настройках.

72 

73> [tab] macOS, Linux, WSL

74>

75> ```bash theme={null}

76> CLAUDE_CODE_EXPERIMENTAL_CODE_MODE=1 claude

77> ```

78 

79> [tab] Windows PowerShell

80>

81> ```powershell theme={null}

82> $env:CLAUDE_CODE_EXPERIMENTAL_CODE_MODE = "1"

83> claude

84> ```

85 

86> [tab] settings.json

87>

88> Сохраните этот блок `env` в `~/.claude/settings.json` и запустите `claude`:

89>

90> ```json theme={null}

91> {

92> "env": {

93> "CLAUDE_CODE_EXPERIMENTAL_CODE_MODE": "1"

94> }

95> }

96> ```

97>

98> Claude Code [игнорирует эту переменную в файлах настроек проекта](https://code.claude.com/docs/ru/settings-reference.md#variables-claude-code-ignores-in-env), поэтому клонированный вами репозиторий не может включить Code Mode за вас.

99 

100**3. Подтвердите, что хотите использовать Code Mode**

101 

102Перед вашей первой сессией с Code Mode Claude Code попросит подтверждения. Выберите **Yes, turn on Code Mode**. Claude Code перезапустится и покажет эту строку в верхней части сессии:

103 

104```text theme={null}

105Code Mode (experimental) is on · this session can be resumed only with Code Mode on

106```

107 

108Если вы видите другую строку или не видите никакой, см. раздел [Code Mode не запускается](#code-mode-doesnt-start).

109 

110**4. Дайте Claude задачу с множеством вызовов инструментов**

111 

112В знакомом вам проекте отправьте промпт, например такой:

113 

114```text theme={null}

115Read every Markdown file in this project and list the links that point to local files that don't exist.

116```

117 

118**5. Прочитайте код, написанный Claude**

119 

120Нажмите `Ctrl+O` и разверните строку **Code**, чтобы увидеть JavaScript-код, стоящий за вызовами инструментов. Нажмите `Ctrl+O` ещё раз, чтобы вернуться к диалогу.

121 

122> [!WARNING]

123>

124> Чтобы позже возобновить сессию с Code Mode, оставьте для `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE` значение `1` при запуске `claude --continue` или `claude --resume`. При отключённом Code Mode Claude Code отказывается возобновлять такую сессию. Сессии, которые вы начали без Code Mode, возобновляются без Code Mode, даже если переменная задана.

125 

126### Отключение Code Mode

127 

128Удалите `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE` из оболочки и из `~/.claude/settings.json`, а затем начните новую сессию. Также можно оставить переменную и изменить её значение на `0` в любом из этих мест. Если в одном месте задано `0`, Code Mode остаётся отключённым, даже если в другом вы задали `1`.

129 

130### Блокировка Code Mode для вашей организации

131 

132Добавьте `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE` со значением `0` в [управляемые настройки](https://code.claude.com/docs/ru/managed-settings.md), чтобы никто в вашей организации не мог использовать Code Mode:

133 

134```json theme={null}

135{

136 "env": {

137 "CLAUDE_CODE_EXPERIMENTAL_CODE_MODE": "0"

138 }

139}

140```

141 

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

143 

144## Разрешения и долго выполняющийся код

145 

146Ваш режим разрешений определяет, как проверяется код Claude и можете ли вы общаться с Claude, пока код выполняется.

147 

148### Проверки разрешений

149 

150Каждый вызов инструмента, который выполняет код Claude, проходит через ваши [правила разрешений](https://code.claude.com/docs/ru/permissions.md) `deny` и `ask` и ваши [хуки `PreToolUse`](https://code.claude.com/docs/ru/hooks#pretooluse). Менять правило или matcher для инструмента, такого как `Bash`, не нужно. Помимо правил и хуков, в авторежиме код проверяет классификатор, а в режимах, которые запрашивают подтверждение, вы отвечаете на запросы разрешений:

151 

152* **[Авторежим](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode)**: классификатор проверяет каждый фрагмент кода перед его запуском, а не каждый вызов инструмента. Он не видит значения, вычисляемые во время выполнения, например путь, взятый из вывода поиска, поэтому сохраняйте правила или хуки для вызовов, которые вы обязаны контролировать. Вы по-прежнему можете [получить запрос разрешения, когда новый код запускается, пока выполняется предыдущий](#permission-prompt-with-a-countdown)

153* **Другие [режимы разрешений](https://code.claude.com/docs/ru/permission-modes.md)**: код запускается без проверки, а запрос разрешения появляется для каждого вызова инструмента, для которого он появился бы в этом режиме

154 

155Чтобы проверять сам код, напишите хук `PreToolUse`, который соответствует `REPL` — инструменту, выполняющему код Claude, — и читайте JavaScript-код из `tool_input.code`.

156 

157> [!WARNING]

158>

159> Правила для Bash сопоставляются с текстом команды, поэтому Claude может выполнить запрещённую команду [в форме, которой правило не соответствует](https://code.claude.com/docs/ru/permissions.md#bash-rule-limits), — с Code Mode или без него. Ограничения, не зависящие от текста команды, описаны в разделе об [изоляции в песочнице](https://code.claude.com/docs/ru/sandboxing.md).

160 

161### Долго выполняющийся код

162 

163Пока код выполняет долгую сборку или тест, Claude либо ждёт его, либо позволяет ему продолжаться в фоновом режиме:

164 

165* **Ожидание**: Claude отвечает после завершения кода, а код останавливается через десять минут, включая время, которое вы провели над запросами разрешений

166* **Фоновый режим**: вы можете продолжать общаться с Claude, а код может выполняться до двух часов

167 

168Чтобы код выполнялся в фоновом режиме, начните сессию в авторежиме или в режиме `bypassPermissions`. Если Claude всё равно ждёт, проверьте текущий режим и то, как вы начали сессию:

169 

170* **Вы переключились на другой режим**: нажимайте `Shift+Tab`, пока не вернётесь в режим, в котором начали

171* **Вы начали в другом режиме или выбрали сессию из списка `claude --resume`**: если [авторежим вам доступен](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode), выйдите, а затем выполните `claude --continue --permission-mode auto` с включённым Code Mode

172* **Вы передали имена инструментов в `--tools`**: начните заново в авторежиме без этого флага

173 

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

175 

176### Code Mode не запускается

177 

178Строка `Code Mode (experimental) isn't available` в верхней части сессии означает, что Claude Code запустился без Code Mode. Причина указана в той же строке, и `/status` также её показывает. Найдите причину в этой таблице, внесите изменение и начните новую сессию. Если причины нет в списке, проверьте [требования](#requirements).

179 

180| Причина содержит | Что делать |

181| :- | :- |

182| `it isn't open to your account yet` | Если ваша версия старше v2.1.323, [обновитесь](#try-code-mode). В противном случае проверьте сетевое подключение и запустите заново. Если причина не исчезает, попробуйте ещё раз в другой день |

183| `it only works with the Anthropic API` | Удалите настройки, которые направляют запросы через облачного провайдера, шлюз или пользовательский `ANTHROPIC_BASE_URL` |

184| `it doesn't work with an API key helper` | Удалите `apiKeyHelper`, `ANTHROPIC_AUTH_TOKEN` и любые заголовки `Authorization` или `X-Api-Key` в `ANTHROPIC_CUSTOM_HEADERS`. Затем войдите в аккаунт или задайте `ANTHROPIC_API_KEY` |

185| `it only works with Opus 5.5, Sonnet 5.5 and later models` | Запустите с [поддерживаемой моделью](#requirements), например с `--model opus`. Haiku 5.5 и Fable 5.2 также подходят |

186| `it doesn't work in background jobs` | Запускайте на переднем плане, без `--remote-control` |

187| `it needs settings that Claude Code downloads from Anthropic` | Удалите переменную, которая [отключает получение флагов функций](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching), например `DISABLE_TELEMETRY` |

188| `OpenTelemetry is on` | Удалите `CLAUDE_CODE_ENABLE_TELEMETRY` и `ENABLE_BETA_TRACING_DETAILED`, если можете обойтись без [экспорта OpenTelemetry](https://code.claude.com/docs/ru/monitoring-usage.md) |

189| `it doesn't yet work with an installed mod` | Отключите [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md), который проверяет вызовы инструментов |

190| `it can't be used together with agent teams yet` | Удалите `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` |

191| `this launch's tool options` | Запускайте без `--restricted`, добавьте `REPL` в `--tools` и удалите `REPL` из `--disallowedTools` и ваших правил `deny` |

192| `couldn't save your answer` | Сделайте `~/.claude.json` доступным для записи |

193| `your organization's settings don't allow it` | Спросите администратора об [управляемой настройке](#block-code-mode-for-your-organization) |

194 

195Если вы не видите строки о Code Mode, выполните `claude --version`. Если ваша версия старше v2.1.323, обновитесь. Затем убедитесь, что `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE` имеет значение `1` в вашей оболочке или пользовательских настройках, и удалите любое значение `0` оттуда и из любого файла `--settings`.

196 

197### Запрос разрешения с обратным отсчётом

198 

199Когда Claude в авторежиме запускает новый код, пока предыдущий код ещё выполняется, предыдущий код теряет проверку классификатором. Тогда Claude Code спрашивает вас об оставшихся вызовах предыдущего кода, которым потребовалась бы проверка. Если IDE не подключена, запрос показывает обратный отсчёт:

200 

201```text theme={null}

202Claude Code will automatically block this request in 1:59, to avoid holding up an unattended session

203```

204 

205Ответьте до окончания отсчёта. В противном случае этот вызов отклоняется, а последующие вызовы, для которых показывался бы обратный отсчёт, отклоняются без запроса. Чтобы снова видеть запросы, отправьте Claude сообщение.

206 

207### Tool call refused by a hook

208 

209Если Claude сообщает об отклонённом вызове инструмента, попросите его привести текст ошибки. Эти ошибки означают, что хук `PreToolUse` не вынес решения, и вызов отклоняется, даже если [`onFailure`](https://code.claude.com/docs/ru/hooks#block-the-action-when-a-hook-fails) не задан:

210 

211* **`the hook failed`**: при вызове из кода Claude ваш хук не смог запуститься, был принудительно завершён, завершился с кодом 126, 127 или кодом выше 128 либо вернул HTTP-ошибку или некорректный вывод. Исправьте хук

212* **`the hook did not finish`**: ваш хук превысил таймаут при вызове из кода Claude или при любом другом вызове инструмента после того, как Claude выполнил код в сессии. Увеличьте [`timeout`](https://code.claude.com/docs/ru/hooks#common-fields) хука

213 

214Чтобы вызовы выполнялись, когда хук `command` или `http` завершается с ошибкой или превышает таймаут, задайте для него `"onFailure": "continue"`. Если хук `command` завершается с обычным кодом, например 1, вызов выполняется, если только вы не задали `"onFailure": "block"`.

215 

216### Вывод кода, задержанный хуком

217 

218Если Claude сообщает причину блокировки от хука там, где вы ожидали вывод кода Claude, проверьте ваши хуки [`UserPromptSubmit`](https://code.claude.com/docs/ru/hooks#userpromptsubmit). Когда [код может выполняться в фоновом режиме](#long-running-code), хуки `command`, `http` и `mcp_tool` для этого события также запускаются для вывода кода. Чтобы пропустить вывод, измените хук так, чтобы он не блокировал, когда `source` в его входных данных равен `poll_event`.

219 

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

221 

222* [Режимы разрешений](https://code.claude.com/docs/ru/permission-modes.md): сравнение авторежима с режимами, которые запрашивают подтверждение

223* [Справочник по хукам](https://code.claude.com/docs/ru/hooks.md): написание хуков `PreToolUse` и `UserPromptSubmit`

224* [Управляемые настройки](https://code.claude.com/docs/ru/managed-settings.md): применение единой конфигурации во всей организации

commands.md +3 −5

Details

35В таблице ниже перечислены все команды, входящие в Claude Code. Большинство из них — встроенные команды, поведение которых запрограммировано в CLI. Отмечены записи двух видов:35В таблице ниже перечислены все команды, входящие в Claude Code. Большинство из них — встроенные команды, поведение которых запрограммировано в CLI. Отмечены записи двух видов:

36 36 

37* **[Скилл](https://code.claude.com/docs/ru/skills.md#bundled-skills)**: встроенный скилл. Он работает так же, как скиллы, которые вы пишете сами: это промпт, передаваемый Claude.37* **[Скилл](https://code.claude.com/docs/ru/skills.md#bundled-skills)**: встроенный скилл. Он работает так же, как скиллы, которые вы пишете сами: это промпт, передаваемый Claude.

38 * `/verify` запускается только по вашему вызову.

39* **[Рабочий процесс](https://code.claude.com/docs/ru/workflows.md#bundled-workflows)**: встроенный [динамический рабочий процесс](https://code.claude.com/docs/ru/workflows.md), который распределяет работу между множеством субагентов и выполняется в фоновом режиме.38* **[Рабочий процесс](https://code.claude.com/docs/ru/workflows.md#bundled-workflows)**: встроенный [динамический рабочий процесс](https://code.claude.com/docs/ru/workflows.md), который распределяет работу между множеством субагентов и выполняется в фоновом режиме.

40 * `/deep-research` запускается только по вашему вызову.

41 39 

42Чтобы добавить собственные команды, см. [скиллы](https://code.claude.com/docs/ru/skills.md).40Чтобы добавить собственные команды, см. [скиллы](https://code.claude.com/docs/ru/skills.md).

43 41 


149| `/stats` | Псевдоним для `/usage`. Открывается на вкладке Stats |147| `/stats` | Псевдоним для `/usage`. Открывается на вкладке Stats |

150| `/status` | Открыть интерфейс настроек на вкладке Status, где показаны версия, модель, учётная запись и состояние подключения. Строка `Session kind` показывает `background job · attached` или `background job · unattended` в [фоновой сессии](https://code.claude.com/docs/ru/agent-view.md) в зависимости от того, подключён ли терминал, и `interactive` в любой другой сессии. До v2.1.221 `/status` не показывал эту строку. Работает, пока Claude отвечает |148| `/status` | Открыть интерфейс настроек на вкладке Status, где показаны версия, модель, учётная запись и состояние подключения. Строка `Session kind` показывает `background job · attached` или `background job · unattended` в [фоновой сессии](https://code.claude.com/docs/ru/agent-view.md) в зависимости от того, подключён ли терминал, и `interactive` в любой другой сессии. До v2.1.221 `/status` не показывал эту строку. Работает, пока Claude отвечает |

151| `/statusline` | Настроить [строку состояния](https://code.claude.com/docs/ru/statusline.md) Claude Code. Опишите, что вы хотите, или запустите без аргументов для автоматической настройки на основе приглашения командной строки вашей оболочки |149| `/statusline` | Настроить [строку состояния](https://code.claude.com/docs/ru/statusline.md) Claude Code. Опишите, что вы хотите, или запустите без аргументов для автоматической настройки на основе приглашения командной строки вашей оболочки |

152| `/stickers` | Заказать наклейки Claude Code |150| `/stickers` | Проверить наличие наклеек Claude Code |

153| `/stop` | Остановить [фоновую сессию](https://code.claude.com/docs/ru/agent-view.md), к которой вы подключены, или ту, которой вы отправляете команду в качестве [ответа в режиме просмотра](https://code.claude.com/docs/ru/agent-view.md#peek-and-reply); транскрипт и worktree сохраняются. Чтобы отсоединиться без остановки, используйте `/exit` или нажмите `←` |151| `/stop` | Остановить [фоновую сессию](https://code.claude.com/docs/ru/agent-view.md), к которой вы подключены, или ту, которой вы отправляете команду в качестве [ответа в режиме просмотра](https://code.claude.com/docs/ru/agent-view.md#peek-and-reply); транскрипт и worktree сохраняются. Чтобы отсоединиться без остановки, используйте `/exit` или нажмите `←` |

154| `/subtask <task>` | Запустить [ответвлённого субагента](https://code.claude.com/docs/ru/sub-agents.md#fork-the-current-conversation): фонового субагента, который наследует весь диалог и работает над задачей, пока вы продолжаете работу. Его результат возвращается в этот диалог по завершении. Чтобы вместо этого скопировать диалог в отдельную фоновую сессию, используйте `/fork`. Когда [представление агентов отключено](https://code.claude.com/docs/ru/agent-view.md#turn-off-agent-view), `/subtask` недоступна, а `/fork` вместо неё запускает ответвлённого субагента |152| `/subtask <task>` | Запустить [ответвлённого субагента](https://code.claude.com/docs/ru/sub-agents.md#fork-the-current-conversation): фонового субагента, который наследует весь диалог и работает над задачей, пока вы продолжаете работу. Его результат возвращается в этот диалог по завершении. Чтобы вместо этого скопировать диалог в отдельную фоновую сессию, используйте `/fork`. Когда [представление агентов отключено](https://code.claude.com/docs/ru/agent-view.md#turn-off-agent-view), `/subtask` недоступна, а `/fork` вместо неё запускает ответвлённого субагента |

155| `/tasks` | Просматривать фоновую работу в текущей сессии и управлять ею, включая завершившихся субагентов. Также доступно как `/bashes` |153| `/tasks` | Просматривать фоновую работу в текущей сессии и управлять ею, включая завершившихся субагентов. Также доступно как `/bashes` |


161| `/ultraplan <prompt>` | Удалена. Вместо неё используйте [режим планирования](https://code.claude.com/docs/ru/permission-modes.md#analyze-before-you-edit-with-plan-mode). Ранее отправляла задачу планирования в [облачную сессию](https://code.claude.com/docs/ru/claude-code-on-the-web.md) для просмотра в браузере |159| `/ultraplan <prompt>` | Удалена. Вместо неё используйте [режим планирования](https://code.claude.com/docs/ru/permission-modes.md#analyze-before-you-edit-with-plan-mode). Ранее отправляла задачу планирования в [облачную сессию](https://code.claude.com/docs/ru/claude-code-on-the-web.md) для просмотра в браузере |

162| `/ultrareview [PR or branch]` | Запустить глубокое мультиагентное код-ревью в облачной песочнице с помощью [ultrareview](https://code.claude.com/docs/ru/ultrareview.md). Передайте ссылку на PR, чтобы проверить этот pull request, либо базовую ветку или коммит, чтобы изменить базу сравнения. Предпочтительный способ вызова — `/code-review ultra`, а `/ultrareview` является псевдонимом. Включает 3 бесплатных запуска на Pro, Max и Ultra, после чего требуются [кредиты использования](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |160| `/ultrareview [PR or branch]` | Запустить глубокое мультиагентное код-ревью в облачной песочнице с помощью [ultrareview](https://code.claude.com/docs/ru/ultrareview.md). Передайте ссылку на PR, чтобы проверить этот pull request, либо базовую ветку или коммит, чтобы изменить базу сравнения. Предпочтительный способ вызова — `/code-review ultra`, а `/ultrareview` является псевдонимом. Включает 3 бесплатных запуска на Pro, Max и Ultra, после чего требуются [кредиты использования](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

163| `/update-config [request]` | **[Скилл](https://code.claude.com/docs/ru/skills.md#bundled-skills).** Опишите изменение настроек, например разрешение команды, задание переменной окружения или добавление [хука](https://code.claude.com/docs/ru/hooks.md), и Claude отредактирует соответствующий файл [`settings.json`](https://code.claude.com/docs/ru/settings). Для таких параметров, как тема и модель, используйте вместо этого `/config` |161| `/update-config [request]` | **[Скилл](https://code.claude.com/docs/ru/skills.md#bundled-skills).** Опишите изменение настроек, например разрешение команды, задание переменной окружения или добавление [хука](https://code.claude.com/docs/ru/hooks.md), и Claude отредактирует соответствующий файл [`settings.json`](https://code.claude.com/docs/ru/settings). Для таких параметров, как тема и модель, используйте вместо этого `/config` |

164| `/upgrade` | Открыть страницу повышения тарифа в браузере, чтобы перейти на более высокий тариф. Если браузер не открывается, команда показывает приглашение ко входу, не выводя URL |162| `/upgrade` | Открыть страницу повышения тарифа в браузере, чтобы перейти на более высокий тариф. Если ни один браузер не может открыть страницу, например при работе через SSH, команда выводит URL страницы над приглашением ко входу. Для вывода URL требуется Claude Code v2.1.323 или новее |

165| `/usage` | Показать стоимость сессии, лимиты использования тарифа и статистику активности. На тарифе Pro, Max, Ultra, Team или Enterprise включает [разбивку того, что учитывается в лимитах тарифа](https://code.claude.com/docs/ru/costs.md#plan-usage-breakdown). При работе через шлюз Claude apps, отслеживающий расходы, показывает [ваши расходы через шлюз](https://code.claude.com/docs/ru/claude-apps-gateway-spend-limits.md#usage-warnings-in-claude-code). `/cost` и `/stats` — псевдонимы |163| `/usage` | Показать стоимость сессии, лимиты использования тарифа и статистику активности. На тарифе Pro, Max, Ultra, Team или Enterprise включает [разбивку того, что учитывается в лимитах тарифа](https://code.claude.com/docs/ru/costs.md#plan-usage-breakdown). При работе через шлюз Claude apps, отслеживающий расходы, показывает [ваши расходы через шлюз](https://code.claude.com/docs/ru/claude-apps-gateway-spend-limits.md#usage-warnings-in-claude-code). `/cost` и `/stats` — псевдонимы |

166| `/usage-credits` | Настроить кредиты использования или запросить их у администратора, когда вы достигли лимита. Открывает [настройки биллинга кредитов использования](https://code.claude.com/docs/ru/costs.md#add-usage-credits-to-your-subscription) в браузере, за исключением случаев, когда участники Team и Enterprise без доступа к биллингу вместо этого отправляют запрос на кредиты своему администратору из CLI, предварительно подтвердив в диалоговом окне, что запрос уведомит их администраторов. Если ни один браузер не может открыть страницу биллинга, например при работе через SSH, команда вместо этого выводит URL для перехода; для этого требуется Claude Code v2.1.205 или новее, а более ранние версии в этом случае ничего не показывали. Ранее `/extra-usage` |164| `/usage-credits` | Настроить кредиты использования или запросить их у администратора, когда вы достигли лимита. Открывает [настройки биллинга кредитов использования](https://code.claude.com/docs/ru/costs.md#add-usage-credits-to-your-subscription) в браузере. Участники Team и Enterprise без доступа к биллингу вместо этого отправляют запрос на кредиты использования своему администратору из CLI. В терминале, где ни один браузер не может открыть страницу, например при работе через SSH, команда выводит URL. Для его вывода требуется Claude Code v2.1.205 или новее. Ранее `/extra-usage` |

167| `/verify` | **[Скилл](https://code.claude.com/docs/ru/skills.md#bundled-skills).** Убедиться, что изменение кода делает то, что должно, собрав приложение вашего проекта, запустив его и наблюдая за результатом, а не полагаясь на тесты или проверки типов. См. [Запуск и проверка приложения](https://code.claude.com/docs/ru/skills.md#run-and-verify-your-app) |165| `/verify` | **[Скилл](https://code.claude.com/docs/ru/skills.md#bundled-skills).** Убедиться, что изменение кода делает то, что должно, собрав приложение вашего проекта, запустив его и наблюдая за результатом, а не полагаясь на тесты или проверки типов. См. [Запуск и проверка приложения](https://code.claude.com/docs/ru/skills.md#run-and-verify-your-app) |

168| `/vim` | Удалена в v2.1.92. Чтобы переключаться между режимами редактирования Vim и Normal, используйте `/config` → Editor mode |166| `/vim` | Удалена в v2.1.92. Чтобы переключаться между режимами редактирования Vim и Normal, используйте `/config` → Editor mode |

169| `/voice [hold\|tap\|off]` | Включить или отключить [голосовой ввод](https://code.claude.com/docs/ru/voice-dictation.md) либо включить его в определённом режиме. Требуется учётная запись Claude.ai |167| `/voice [hold\|tap\|off]` | Включить или отключить [голосовой ввод](https://code.claude.com/docs/ru/voice-dictation.md) либо включить его в определённом режиме. Требуется учётная запись Claude.ai |

desktop.md +0 −4

Details

2261 2261 

2262Приложение Desktop загружает MCP-серверы из `claude_desktop_config.json` в локальные сессии вкладки Code наряду с серверами из `~/.claude.json` и `.mcp.json`. Сервер, определённый в `claude_desktop_config.json`, доступен как в чат-интерфейсе Desktop, так и в локальных сессиях вкладки Code.2262Приложение Desktop загружает MCP-серверы из `claude_desktop_config.json` в локальные сессии вкладки Code наряду с серверами из `~/.claude.json` и `.mcp.json`. Сервер, определённый в `claude_desktop_config.json`, доступен как в чат-интерфейсе Desktop, так и в локальных сессиях вкладки Code.

2263 2263 

2264Если вы определите одно и то же имя сервера в `claude_desktop_config.json` и в `~/.claude.json` или `.mcp.json`, вкладка Code в локальных сессиях подключится один раз и будет использовать определение из `claude_desktop_config.json`.

2265 

2266Приложение также повторно передаёт stdio-серверы из `~/.claude.json` встроенному CLI в локальных сессиях. Если на верхнем уровне `~/.claude.json` (область действия пользователя) и в `.mcp.json` определено одно и то же имя stdio-сервера, вкладка Code использует определение из `~/.claude.json`, отступая от [иерархии областей действия](https://code.claude.com/docs/ru/mcp.md#scope-hierarchy-and-precedence) CLI.

2267 

2268> [!NOTE]2264> [!NOTE]

2269>2265>

2270> Автономный CLI не читает `claude_desktop_config.json`. На macOS и в WSL выполните `claude mcp add-from-claude-desktop`, чтобы скопировать эти серверы в `~/.claude.json`. Описание процесса импорта и вариантов области действия см. в разделе [Импорт MCP-серверов из Claude Desktop](https://code.claude.com/docs/ru/mcp.md#import-mcp-servers-from-claude-desktop).2266> Автономный CLI не читает `claude_desktop_config.json`. На macOS и в WSL выполните `claude mcp add-from-claude-desktop`, чтобы скопировать эти серверы в `~/.claude.json`. Описание процесса импорта и вариантов области действия см. в разделе [Импорт MCP-серверов из Claude Desktop](https://code.claude.com/docs/ru/mcp.md#import-mcp-servers-from-claude-desktop).

Details

71 71 

72Запустите **Claude** из вашего средства запуска приложений или выполните `claude-desktop` из терминала и войдите с помощью вашей учетной записи Anthropic.72Запустите **Claude** из вашего средства запуска приложений или выполните `claude-desktop` из терминала и войдите с помощью вашей учетной записи Anthropic.

73 73 

74Приложение Linux входит так же, как на macOS и Windows: с подпиской claude.ai или через SSO вашей организации. Для аутентификации по API-ключу используйте [CLI](https://code.claude.com/docs/ru/quickstart.md). Чтобы вместо этого использовать Desktop с Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry или LLM-шлюзом, см. [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview). Сведения о прокси-серверах и пользовательских центрах сертификации в таких развёртываниях см. в разделе [конфигурация сети](https://code.claude.com/docs/ru/network-config.md).74Приложение Linux входит так же, как на macOS и Windows: с подпиской claude.ai или через SSO вашей организации. Чтобы вместо этого использовать Desktop с API-ключом Claude, Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry или LLM-шлюзом, см. [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview). Сведения о прокси-серверах и пользовательских центрах сертификации в таких развёртываниях см. в разделе [конфигурация сети](https://code.claude.com/docs/ru/network-config.md).

75 75 

76### Установка из загруженного файла76### Установка из загруженного файла

77 77 

Details

83 83 

84**8. Выберите режим разрешений и модель**84**8. Выберите режим разрешений и модель**

85 85 

86На панели инструментов поля инструкций выберите [режим разрешений](#permissions-for-scheduled-tasks) и модель. Если оставить их без изменений, запуски будут использовать ваши настройки Claude Code и модель по умолчанию.86На панели инструментов поля инструкций выберите [режим разрешений](#permissions-for-scheduled-tasks) и модель.

87 

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

89* **Модель**: если в меню модели указано **Default · Set by admin** и вы не выберете другую модель, запуски будут использовать модель, заданную вашей организацией в [управляемых настройках](https://code.claude.com/docs/ru/managed-settings.md). [Запуск для наверстывания](#missed-runs), который начинается при открытии приложения, может вместо этого использовать [модель по умолчанию для вашей учетной записи во время выполнения](https://code.claude.com/docs/ru/model-config.md#default-model-setting).

87 90 

88**9. Создайте задачу**91**9. Создайте задачу**

89 92 

90Нажмите **Create**. Если вы еще не доверили эту папку, Desktop предложит вам доверить ее на этом этапе. Откроется страница с подробностями задачи.93Нажмите **Create**. Если вы еще не доверили эту папку, Desktop предложит вам доверить ее на этом этапе. Откроется страница с подробностями задачи.

91 94 

95Чтобы узнать, какой модели соответствует **Default · Set by admin**, нажмите **Run now** на странице с подробностями, чтобы сразу запустить задачу. Затем [откройте сессию этого запуска](#find-a-runs-session): в строке под полем промпта отображается название модели.

96 

92На странице с подробностями нажмите значок карандаша, чтобы открыть [форму **Edit**](#manage-scheduled-tasks). В ней можно изменить **Description**, которое Desktop заполнил на основе ваших инструкций, выбрать **Worktree** или переключить расписание на **Manual** или **Custom**.97На странице с подробностями нажмите значок карандаша, чтобы открыть [форму **Edit**](#manage-scheduled-tasks). В ней можно изменить **Description**, которое Desktop заполнил на основе ваших инструкций, выбрать **Worktree** или переключить расписание на **Manual** или **Custom**.

93 98 

94Вы также можете создать задачу, описав то, что вы хотите, в любой сессии. Например, "настрой ежедневное код-ревью, которое запускается каждое утро в 9:00" создает повторяющуюся задачу. Сообщение вроде "напомни мне завтра в 3 часа дня проверить развёртывание" создает одноразовую задачу, которая отключается после срабатывания.99Вы также можете создать задачу, описав то, что вы хотите, в любой сессии. Например, "настрой ежедневное код-ревью, которое запускается каждое утро в 9:00" создает повторяющуюся задачу. Сообщение вроде "напомни мне завтра в 3 часа дня проверить развёртывание" создает одноразовую задачу, которая отключается после срабатывания.


181 186 

182Чтобы позволить задаче изменять свое собственное расписание или промпт с помощью инструмента MCP `update_scheduled_task`, нажимайте **Run now** и подтверждайте вызов каждый раз.187Чтобы позволить задаче изменять свое собственное расписание или промпт с помощью инструмента MCP `update_scheduled_task`, нажимайте **Run now** и подтверждайте вызов каждый раз.

183 188 

184Чтобы отредактировать подсказку задачи на диске, откройте `~/.claude/scheduled-tasks/<task-name>/SKILL.md` (или под [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ru/env-vars), если установлено). Файл использует YAML frontmatter для `name` и `description`, с подсказкой в качестве тела. Изменения вступают в силу при следующем запуске. Расписание, папка, модель и состояние включения не находятся в этом файле: измените их через форму Edit или попросите Claude.189Чтобы отредактировать промпт задачи на диске, откройте `~/.claude/scheduled-tasks/<task-name>/SKILL.md` (или под [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ru/env-vars), если установлено). Файл использует YAML frontmatter для `name` и `description`, с промптом в качестве тела. Изменения вступают в силу при следующем запуске. Расписание, папка и состояние включения не находятся в этом файле: измените их через форму Edit или попросите Claude.

185 190 

186## Связанные ресурсы191## Связанные ресурсы

187 192 

env-vars.md +7 −3

Details

211| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Переопределяет автоматическое [подключение к IDE](https://code.claude.com/docs/ru/vs-code.md). По умолчанию Claude Code подключается автоматически при запуске во встроенном терминале поддерживаемой IDE. Установите `false`, чтобы предотвратить это. Установите `true`, чтобы принудительно попытаться подключиться, когда автоопределение не срабатывает, например когда tmux скрывает родительский терминал. Имеет приоритет над глобальной настройкой конфигурации [`autoConnectIde`](https://code.claude.com/docs/ru/settings-reference#autoconnectide) |211| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Переопределяет автоматическое [подключение к IDE](https://code.claude.com/docs/ru/vs-code.md). По умолчанию Claude Code подключается автоматически при запуске во встроенном терминале поддерживаемой IDE. Установите `false`, чтобы предотвратить это. Установите `true`, чтобы принудительно попытаться подключиться, когда автоопределение не срабатывает, например когда tmux скрывает родительский терминал. Имеет приоритет над глобальной настройкой конфигурации [`autoConnectIde`](https://code.claude.com/docs/ru/settings-reference#autoconnectide) |

212| `CLAUDE_CODE_AUTO_MODE_MODEL` | Задаёт модель для запросов классификатора, которые Claude Code отправляет в [авторежиме](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode). Используйте полный ID модели, например `claude-sonnet-4-6`. О случаях, когда Claude Code игнорирует эту переменную, см. [Выбор модели классификатора](https://code.claude.com/docs/ru/permission-modes.md#choose-the-classifier-model). Требуется Claude Code v2.1.302 или новее |212| `CLAUDE_CODE_AUTO_MODE_MODEL` | Задаёт модель для запросов классификатора, которые Claude Code отправляет в [авторежиме](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode). Используйте полный ID модели, например `claude-sonnet-4-6`. О случаях, когда Claude Code игнорирует эту переменную, см. [Выбор модели классификатора](https://code.claude.com/docs/ru/permission-modes.md#choose-the-classifier-model). Требуется Claude Code v2.1.302 или новее |

213| `CLAUDE_CODE_AUTO_MODE_SERVER` | Определяет, просит ли Claude Code сервер [проверять действия авторежима](https://code.claude.com/docs/ru/permission-modes.md#server-side-classifier-review). Установите `0`, чтобы вместо этого использовать собственные запросы классификатора Claude Code. При прямом подключении к Anthropic API требуется v2.1.281 или новее. В связанном разделе перечислено, какие сессии обращаются к серверу, когда переменная не задана, и начиная с какой версии. Требуется Claude Code v2.1.271 или новее |213| `CLAUDE_CODE_AUTO_MODE_SERVER` | Определяет, просит ли Claude Code сервер [проверять действия авторежима](https://code.claude.com/docs/ru/permission-modes.md#server-side-classifier-review). Установите `0`, чтобы вместо этого использовать собственные запросы классификатора Claude Code. При прямом подключении к Anthropic API требуется v2.1.281 или новее. В связанном разделе перечислено, какие сессии обращаются к серверу, когда переменная не задана, и начиная с какой версии. Требуется Claude Code v2.1.271 или новее |

214| `CLAUDE_CODE_AUTOMOUNT_ROOTS` | Корневые папки автомонтирования, которые Claude Code должен пропускать, когда ищет в папках выше вашего рабочего каталога такие файлы, как `CLAUDE.md`, скиллы и `.mcp.json`. Задайте её, если эти поиски ожидают ответа вашего автомонтировщика. Разделяйте несколько путей символом `:` в Unix или `;` в Windows и указывайте каждый как абсолютный путь без символических ссылок. Требуется Claude Code v2.1.323 или новее |

214| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Время в миллисекундах, в течение которого Claude Code ждёт, пока цепочка поставщиков учётных данных AWS по умолчанию предоставит учётные данные, прежде чем запрос завершится ошибкой [`AWS default-chain credential resolve timed out`](https://code.claude.com/docs/ru/errors#aws-default-chain-credential-resolve-timed-out) (по умолчанию: `60000`). Увеличьте его, если какому-либо шагу вашей цепочки действительно нужно больше времени, например при входе через SSO в браузере с MFA через обёртку вроде `aws-vault`. Применяется в Amazon Bedrock, [Claude Platform on AWS](https://code.claude.com/docs/ru/claude-platform-on-aws.md) и [эндпоинте Mantle](https://code.claude.com/docs/ru/amazon-bedrock.md#use-the-mantle-endpoint). См. [кэширование учётных данных и таймаут их получения](https://code.claude.com/docs/ru/amazon-bedrock.md#credential-caching-and-resolution-timeout). Требуется Claude Code v2.1.207 или новее |215| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Время в миллисекундах, в течение которого Claude Code ждёт, пока цепочка поставщиков учётных данных AWS по умолчанию предоставит учётные данные, прежде чем запрос завершится ошибкой [`AWS default-chain credential resolve timed out`](https://code.claude.com/docs/ru/errors#aws-default-chain-credential-resolve-timed-out) (по умолчанию: `60000`). Увеличьте его, если какому-либо шагу вашей цепочки действительно нужно больше времени, например при входе через SSO в браузере с MFA через обёртку вроде `aws-vault`. Применяется в Amazon Bedrock, [Claude Platform on AWS](https://code.claude.com/docs/ru/claude-platform-on-aws.md) и [эндпоинте Mantle](https://code.claude.com/docs/ru/amazon-bedrock.md#use-the-mantle-endpoint). См. [кэширование учётных данных и таймаут их получения](https://code.claude.com/docs/ru/amazon-bedrock.md#credential-caching-and-resolution-timeout). Требуется Claude Code v2.1.207 или новее |

215| `CLAUDE_CODE_BASH_EDIT_DIFF` | Установите `0`, чтобы отключить [diff файлов, изменившихся во время выполнения команды Bash](https://code.claude.com/docs/ru/hooks.md#bash), или `1`, чтобы записывать его в любом режиме разрешений. Имеет приоритет над настройкой [`bashEditDiffEnabled`](https://code.claude.com/docs/ru/settings-reference#basheditdiffenabled). Требуется Claude Code v2.1.269 или новее |216| `CLAUDE_CODE_BASH_EDIT_DIFF` | Установите `0`, чтобы отключить [diff файлов, изменившихся во время выполнения команды Bash](https://code.claude.com/docs/ru/hooks.md#bash), или `1`, чтобы записывать его в любом режиме разрешений. Имеет приоритет над настройкой [`bashEditDiffEnabled`](https://code.claude.com/docs/ru/settings-reference#basheditdiffenabled). Требуется Claude Code v2.1.269 или новее |

216| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Установите `0`, чтобы неинтерактивная сессия сообщала своему хосту статус простоя в конце каждого хода, даже если фоновая работа ещё выполняется. По умолчанию сессия продолжает сообщать статус выполнения после окончания хода, пока активна фоновая работа, например фоновый агент или запуск [рабочего процесса](https://code.claude.com/docs/ru/workflows.md). Благодаря этому хост, отслеживающий статус, например список удалённых сессий, не объявляет посреди работы, что Claude ожидает вашего ввода. Фоновые shell-команды, например dev-сервер, не удерживают статус выполнения. Статус выполнения по умолчанию и отказ от него через `0` требуют Claude Code v2.1.269 или новее; в более ранних версиях установите `1`, чтобы удерживать статус выполнения |217| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Установите `0`, чтобы неинтерактивная сессия сообщала своему хосту статус простоя в конце каждого хода, даже если фоновая работа ещё выполняется. По умолчанию сессия продолжает сообщать статус выполнения после окончания хода, пока активна фоновая работа, например фоновый агент или запуск [рабочего процесса](https://code.claude.com/docs/ru/workflows.md). Благодаря этому хост, отслеживающий статус, например список удалённых сессий, не объявляет посреди работы, что Claude ожидает вашего ввода. Фоновые shell-команды, например dev-сервер, не удерживают статус выполнения. Статус выполнения по умолчанию и отказ от него через `0` требуют Claude Code v2.1.269 или новее; в более ранних версиях установите `1`, чтобы удерживать статус выполнения |


298| `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` | Установите `1`, чтобы [выполнять опасные команды `rm` без запроса подтверждения](https://code.claude.com/docs/ru/permission-modes#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) в режиме `bypassPermissions`; это убирает защитный запрос подтверждения для разрушительных удалений. В указанном разделе перечислены случаи, когда переменная не действует. [Задавайте её в окружении, из которого запускается Claude Code](#set-variables-in-your-shell), поскольку Claude Code [игнорирует её в блоке `env` настроек](https://code.claude.com/docs/ru/settings-reference#variables-claude-code-ignores-in-env). Требуется Claude Code v2.1.311 или новее |299| `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` | Установите `1`, чтобы [выполнять опасные команды `rm` без запроса подтверждения](https://code.claude.com/docs/ru/permission-modes#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) в режиме `bypassPermissions`; это убирает защитный запрос подтверждения для разрушительных удалений. В указанном разделе перечислены случаи, когда переменная не действует. [Задавайте её в окружении, из которого запускается Claude Code](#set-variables-in-your-shell), поскольку Claude Code [игнорирует её в блоке `env` настроек](https://code.claude.com/docs/ru/settings-reference#variables-claude-code-ignores-in-env). Требуется Claude Code v2.1.311 или новее |

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

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

302| `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE` | Установите значение `1`, чтобы запускать сессии в [Code Mode](https://code.claude.com/docs/ru/code-mode.md) — экспериментальной функции. Установите значение `0`, чтобы оставить её выключенной, или задайте его в управляемых настройках, чтобы [заблокировать её для организации](https://code.claude.com/docs/ru/code-mode.md#block-code-mode-for-your-organization). Переменная [учитывается не во всех файлах настроек](https://code.claude.com/docs/ru/settings-reference.md#variables-claude-code-ignores-in-env). См. [требования к версии и учётной записи](https://code.claude.com/docs/ru/code-mode.md#requirements) |

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

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

303| `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, где было удалено обнаружение вложенных сессий, которое она переопределяет |305| `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, где было удалено обнаружение вложенных сессий, которое она переопределяет |


348| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Таймаут в миллисекундах для сброса ожидающих спанов OpenTelemetry (по умолчанию: 5000). См. [Мониторинг](https://code.claude.com/docs/ru/monitoring-usage.md) |350| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Таймаут в миллисекундах для сброса ожидающих спанов OpenTelemetry (по умолчанию: 5000). См. [Мониторинг](https://code.claude.com/docs/ru/monitoring-usage.md) |

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

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

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

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

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

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

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


370| `CLAUDE_CODE_REMOTE` | Автоматически устанавливается в `true`, когда Claude Code работает как [облачная сессия](https://code.claude.com/docs/ru/claude-code-on-the-web.md). Считывайте её из хука или скрипта настройки, чтобы определить, находитесь ли вы в облачной сессии |372| `CLAUDE_CODE_REMOTE` | Автоматически устанавливается в `true`, когда Claude Code работает как [облачная сессия](https://code.claude.com/docs/ru/claude-code-on-the-web.md). Считывайте её из хука или скрипта настройки, чтобы определить, находитесь ли вы в облачной сессии |

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

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

375| `CLAUDE_CODE_RESUME_HINT_COMMAND` | В скрипте-обёртке, который запускает Claude Code, задайте здесь имя, которое вы вводите для запуска обёртки, например `mytool`. Тогда локальная сессия при выходе выводит `mytool --resume <session-id>` вместо `claude --resume <session-id>`. Claude Code игнорирует имя, не соответствующее `^\w[\w-]*$`. Он также игнорирует эту переменную в блоке `env` файла настроек. Требуется Claude Code v2.1.323 или новее |

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

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

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


405| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Установите `1`, чтобы удалять учётные данные из окружения подпроцессов, которые запускает Claude Code, таких как команды Bash, хуки и stdio MCP-серверы. Очистка распознаёт учётные данные по имени переменной или по её значению и оставляет токены GitHub и настройки прокси. См. [Что удаляет очистка окружения подпроцессов](#what-the-subprocess-environment-scrub-removes). `claude-code-action` задаёт эту переменную автоматически, когда настроен `allowed_non_write_users` |408| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Установите `1`, чтобы удалять учётные данные из окружения подпроцессов, которые запускает Claude Code, таких как команды Bash, хуки и stdio MCP-серверы. Очистка распознаёт учётные данные по имени переменной или по её значению и оставляет токены GitHub и настройки прокси. См. [Что удаляет очистка окружения подпроцессов](#what-the-subprocess-environment-scrub-removes). `claude-code-action` задаёт эту переменную автоматически, когда настроен `allowed_non_write_users` |

406| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Установите `1` в неинтерактивном режиме (флаг `-p`), чтобы дождаться завершения установки плагинов перед первым запросом. Без этого плагины устанавливаются в фоне и могут быть недоступны на первом ходу. Используйте вместе с `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS`, чтобы ограничить ожидание |409| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Установите `1` в неинтерактивном режиме (флаг `-p`), чтобы дождаться завершения установки плагинов перед первым запросом. Без этого плагины устанавливаются в фоне и могут быть недоступны на первом ходу. Используйте вместе с `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS`, чтобы ограничить ожидание |

407| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Таймаут в миллисекундах для синхронной установки плагинов. При превышении Claude Code продолжает работу без плагинов и записывает ошибку в лог. Значения по умолчанию нет: без этой переменной синхронная установка ждёт до завершения |410| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Таймаут в миллисекундах для синхронной установки плагинов. При превышении Claude Code продолжает работу без плагинов и записывает ошибку в лог. Значения по умолчанию нет: без этой переменной синхронная установка ждёт до завершения |

408| `CLAUDE_CODE_SYNC_SKILLS` | Установите `1` в неинтерактивном режиме с флагом `-p`, чтобы Claude Code загрузил скиллы, включённые для вашей учётной записи claude.ai, в этом запуске и дождался их списка, вплоть до `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`, прежде чем выполнить первый запрос. Требуется аутентификация claude.ai. Сессии в терминале, в которых вы входите с учётной записью claude.ai, [синхронизируют эти скиллы](https://code.claude.com/docs/ru/skills.md#where-synced-skills-load) без этой переменной, поэтому задавайте её, только когда запуску `-p` нужны ваши актуальные скиллы уже при первом запросе |411| `CLAUDE_CODE_SYNC_SKILLS` | Установите `1`, чтобы Claude Code загружал скиллы, включённые для вашей учётной записи claude.ai. В неинтерактивном режиме с флагом `-p` Claude Code также ждёт список скиллов в течение времени до `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`, прежде чем выполнить первый запрос. Требуется аутентификация через claude.ai. Сессии терминала, в которых вы входите с учётной записью claude.ai, [синхронизируют эти скиллы](https://code.claude.com/docs/ru/skills.md#where-synced-skills-load) без этой переменной. В интерактивной сессии переменная требует v2.1.323 или новее |

409| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | Таймаут в миллисекундах для повторной синхронизации скиллов, которая выполняется посреди сессии, когда приложение на основе [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/typescript.md#query-object) перезагружает скиллы (по умолчанию: 30000). При превышении перезагрузка продолжается с теми скиллами, которые уже поступили, а остальные загрузки завершаются в фоне |412| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | Таймаут в миллисекундах для повторной синхронизации скиллов, которая выполняется посреди сессии, когда приложение на основе [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/typescript.md#query-object) перезагружает скиллы (по умолчанию: 30000). При превышении перезагрузка продолжается с теми скиллами, которые уже поступили, а остальные загрузки завершаются в фоне |

410| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | Таймаут в миллисекундах, в течение которого первый запрос ожидает исходный список скиллов, когда задана `CLAUDE_CODE_SYNC_SKILLS` (по умолчанию: 5000). При превышении первый запрос выполняется с теми скиллами, которые уже поступили. В любом случае загрузки завершаются в фоне, а Claude дожидается загрузки скилла, когда вызывает этот скилл |413| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | Таймаут в миллисекундах, в течение которого первый запрос ожидает исходный список скиллов, когда задана `CLAUDE_CODE_SYNC_SKILLS` (по умолчанию: 5000). При превышении первый запрос выполняется с теми скиллами, которые уже поступили. В любом случае загрузки завершаются в фоне, а Claude дожидается загрузки скилла, когда вызывает этот скилл |

411| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Установите `false`, чтобы отключить подсветку синтаксиса в выводе diff. Полезно, когда цвета мешают настройке вашего терминала. Чтобы также отключить подсветку в блоках кода и предпросмотре файлов, используйте настройку [`syntaxHighlightingDisabled`](https://code.claude.com/docs/ru/settings-reference#syntaxhighlightingdisabled) |414| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Установите `false`, чтобы отключить подсветку синтаксиса в выводе diff. Полезно, когда цвета мешают настройке вашего терминала. Чтобы также отключить подсветку в блоках кода и предпросмотре файлов, используйте настройку [`syntaxHighlightingDisabled`](https://code.claude.com/docs/ru/settings-reference#syntaxhighlightingdisabled) |


585* Включить [мод You should know](https://code.claude.com/docs/ru/interactive-mode.md#you-should-know-suggestions)588* Включить [мод You should know](https://code.claude.com/docs/ru/interactive-mode.md#you-should-know-suggestions)

586* Использовать [инструмент-советник](https://code.claude.com/docs/ru/advisor.md#requirements), за исключением Claude Platform on AWS с Claude Code v2.1.300 или новее589* Использовать [инструмент-советник](https://code.claude.com/docs/ru/advisor.md#requirements), за исключением Claude Platform on AWS с Claude Code v2.1.300 или новее

587* Использовать [задачи MCP](https://code.claude.com/docs/ru/mcp.md#mcp-tasks-that-run-on-the-server)590* Использовать [задачи MCP](https://code.claude.com/docs/ru/mcp.md#mcp-tasks-that-run-on-the-server)

591* Включить [Code Mode](https://code.claude.com/docs/ru/code-mode.md#requirements)

588* Читать [комментарии к артефакту](https://code.claude.com/docs/ru/artifacts.md#collect-comments-on-an-artifact) или отвечать на них592* Читать [комментарии к артефакту](https://code.claude.com/docs/ru/artifacts.md#collect-comments-on-an-artifact) или отвечать на них

589* Поручать Claude читать [публичный артефакт другой организации](https://code.claude.com/docs/ru/artifacts.md#read-an-artifact-shared-with-you)593* Поручать Claude читать [публичный артефакт другой организации](https://code.claude.com/docs/ru/artifacts.md#read-an-artifact-shared-with-you)

590* Получать [инструмент PowerShell](https://code.claude.com/docs/ru/tools-reference.md#powershell-tool) по умолчанию для учётных записей claude.ai и Console в Windows с установленным Git Bash; Claude Code направляет shell-команды через Git Bash, если вы не задали `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. В Windows без Git Bash инструмент остаётся включённым594* Получать [инструмент PowerShell](https://code.claude.com/docs/ru/tools-reference.md#powershell-tool) по умолчанию для учётных записей claude.ai и Console в Windows с установленным Git Bash; Claude Code направляет shell-команды через Git Bash, если вы не задали `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. В Windows без Git Bash инструмент остаётся включённым

errors.md +399 −314

Details

122| `A request to MCP server "<name>" was sent without your stored credentials` | [Authentication](#couldnt-read-the-stored-credentials-for-mcp-server) |122| `A request to MCP server "<name>" was sent without your stored credentials` | [Authentication](#couldnt-read-the-stored-credentials-for-mcp-server) |

123| `This server's URL is missing or not a valid URL, so sign-in can't start` | [Authentication](#mcp-server-url-is-missing-or-not-a-valid-url) |123| `This server's URL is missing or not a valid URL, so sign-in can't start` | [Authentication](#mcp-server-url-is-missing-or-not-a-valid-url) |

124| `Issuer mismatch in authorization response (RFC 9207)` | [Authentication](#issuer-mismatch-in-authorization-response) |124| `Issuer mismatch in authorization response (RFC 9207)` | [Authentication](#issuer-mismatch-in-authorization-response) |

125| `Stopped an OAuth request` | [Аутентификация](#stopped-an-oauth-request) |

125| `Refusing to send credentials to non-https token endpoint` / `<short-name> from the MCP SDK for <server-url>` | [Authentication](#refusing-to-send-credentials-to-non-https-token-endpoint) |126| `Refusing to send credentials to non-https token endpoint` / `<short-name> from the MCP SDK for <server-url>` | [Authentication](#refusing-to-send-credentials-to-non-https-token-endpoint) |

126| `Cloud gateway session expired — run /login to reconnect.` | [Authentication](#cloud-gateway-session-expired) |127| `Cloud gateway session expired — run /login to reconnect.` | [Authentication](#cloud-gateway-session-expired) |

127| `Cloud gateway <url> no longer accepts this session` | [Authentication](#cloud-gateway-session-expired) |128| `Cloud gateway <url> no longer accepts this session` | [Authentication](#cloud-gateway-session-expired) |


153| `403` с `GitHub GraphQL is not available from Claude Code sessions` в облачной сессии | [GitHub proxy](https://code.claude.com/docs/ru/cloud-environments.md#github-proxy) |154| `403` с `GitHub GraphQL is not available from Claude Code sessions` в облачной сессии | [GitHub proxy](https://code.claude.com/docs/ru/cloud-environments.md#github-proxy) |

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

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

157| `Couldn't load the history of cloud session` | [Сеть](#couldnt-load-the-history-of-cloud-session) |

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

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

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


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

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

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

185| `N tools left out` рядом с сервером в `/mcp` / `Claude wasn't given N tools because the Anthropic API would reject their input schemas` | [Инструменты с недопустимыми входными схемами](https://code.claude.com/docs/ru/mcp.md#tools-with-invalid-input-schemas) |

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

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

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


251| `Ultrareview did not start` | [Command-line errors](#ultrareview-did-not-start) |254| `Ultrareview did not start` | [Command-line errors](#ultrareview-did-not-start) |

252| `Remote Control did not start: "<question>" got no answer` | [Ошибки командной строки](#remote-control-did-not-start-got-no-answer) |255| `Remote Control did not start: "<question>" got no answer` | [Ошибки командной строки](#remote-control-did-not-start-got-no-answer) |

253| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Command-line errors](#not-carried-over-to-the-sessions-remote-control-starts) |256| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Command-line errors](#not-carried-over-to-the-sessions-remote-control-starts) |

257| `Remote Control did not start, because sessions would skip part or all of the --settings file` | [Ошибки командной строки](#remote-control-did-not-start-because-of-the-settings-file) |

258| `The settings file <file> has changed since Remote Control started, so this session did not start` | [Ошибки командной строки](#settings-file-changed-since-remote-control-started) |

254| `--sandbox is not supported by claude remote-control` / `--no-sandbox is not supported by claude remote-control` | [Command-line errors](#sandbox-is-not-supported-by-claude-remote-control) |259| `--sandbox is not supported by claude remote-control` / `--no-sandbox is not supported by claude remote-control` | [Command-line errors](#sandbox-is-not-supported-by-claude-remote-control) |

255| `` `claude import` is not yet available in this build `` | [Command-line errors](#claude-import-is-not-yet-available-in-this-build) |260| `` `claude import` is not yet available in this build `` | [Command-line errors](#claude-import-is-not-yet-available-in-this-build) |

256| `Could not read Claude Code config` | [Command-line errors](#could-not-read-claude-code-config) |261| `Could not read Claude Code config` | [Command-line errors](#could-not-read-claude-code-config) |


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

269| `Shell command failed for pattern "..."`, from `/security-review` or any skill that injects dynamic context | [Command-line errors](#security-review-fails-without-origin-head) |274| `Shell command failed for pattern "..."`, from `/security-review` or any skill that injects dynamic context | [Command-line errors](#security-review-fails-without-origin-head) |

270| `Shell command permission check failed for pattern "..."`, from a skill that injects dynamic context | [Command-line errors](#security-review-fails-without-origin-head) |275| `Shell command permission check failed for pattern "..."`, from a skill that injects dynamic context | [Command-line errors](#security-review-fails-without-origin-head) |

276| ``Couldn't run `<command>` for <name>. A file named HEAD or .git in this folder or one above it may not be yours`` от скилла, который внедряет динамический контекст | [Проверки разрешений для внедряемых команд](https://code.claude.com/docs/ru/skills.md#permission-checks-on-injected-commands) |

271| ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` | [Command-line errors](#security-review-fails-without-origin-head) |277| ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` | [Command-line errors](#security-review-fails-without-origin-head) |

272| `No shell command in <name> was run, because the <tool> tool does not accept one of them` | [Command-line errors](#no-shell-command-was-run) |278| `No shell command in <name> was run, because the <tool> tool does not accept one of them` | [Command-line errors](#no-shell-command-was-run) |

273| `Input must be provided either through stdin or as a prompt argument when using --print` | [Command-line errors](#input-must-be-provided-when-using-print) |279| `Input must be provided either through stdin or as a prompt argument when using --print` | [Command-line errors](#input-must-be-provided-when-using-print) |


425| `Workspace not trusted.` when starting or restarting a background session | [Background session errors](#workspace-not-trusted-when-dispatching-a-background-session) |431| `Workspace not trusted.` when starting or restarting a background session | [Background session errors](#workspace-not-trusted-when-dispatching-a-background-session) |

426| `Claude Code is being updated by npm on this machine (still not runnable after 2 min, ...)` | [Background session errors](#eacces-when-starting-a-background-session) |432| `Claude Code is being updated by npm on this machine (still not runnable after 2 min, ...)` | [Background session errors](#eacces-when-starting-a-background-session) |

427| `Claude Code process exited with code N` | [Wrapper and IDE errors](#claude-code-process-exited-with-code-n) |433| `Claude Code process exited with code N` | [Wrapper and IDE errors](#claude-code-process-exited-with-code-n) |

434| `Subprocess initialization did not complete within 60000ms` | [Ошибки обёрток и IDE](#subprocess-initialization-did-not-complete-within-60000ms) |

435| `Claude Code did not finish starting` | [Ошибки обёрток и IDE](#subprocess-initialization-did-not-complete-within-60000ms) |

428| `The connection to Claude Code ended before this message completed` | [Wrapper and IDE errors](#the-connection-to-claude-code-ended-before-this-message-completed) |436| `The connection to Claude Code ended before this message completed` | [Wrapper and IDE errors](#the-connection-to-claude-code-ended-before-this-message-completed) |

429| `Could not locate the Claude CLI on PATH` | [Wrapper and IDE errors](#could-not-locate-the-claude-cli-on-path) |437| `Could not locate the Claude CLI on PATH` | [Wrapper and IDE errors](#could-not-locate-the-claude-cli-on-path) |

430| `The Claude Code program for this computer, the <build> build, could not be found` | [Ошибки обёрток и IDE](#the-claude-code-program-for-this-computer-could-not-be-found) |438| `The Claude Code program for this computer, the <build> build, could not be found` | [Ошибки обёрток и IDE](#the-claude-code-program-for-this-computer-could-not-be-found) |


560| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS` | без ограничения | При установленной `CLAUDE_CODE_RETRY_WATCHDOG` — максимальное время в миллисекундах, в течение которого один запрос ожидает сброса [лимита использования](#youve-hit-your-session-limit) вашего плана, например сессионного или недельного лимита. Если до сброса остаётся больше этого предела, запрос сразу завершается с ошибкой, если только у кредитов использования нет запаса или API не удалось их проверить. В этих случаях попытка повторяется, а запрос завершается с ошибкой, если предел истекает до успешного выполнения. Требуется Claude Code v2.1.301 или позже. |568| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS` | без ограничения | При установленной `CLAUDE_CODE_RETRY_WATCHDOG` — максимальное время в миллисекундах, в течение которого один запрос ожидает сброса [лимита использования](#youve-hit-your-session-limit) вашего плана, например сессионного или недельного лимита. Если до сброса остаётся больше этого предела, запрос сразу завершается с ошибкой, если только у кредитов использования нет запаса или API не удалось их проверить. В этих случаях попытка повторяется, а запрос завершается с ошибкой, если предел истекает до успешного выполнения. Требуется Claude Code v2.1.301 или позже. |

561| [`CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS`](https://code.claude.com/docs/ru/env-vars) | не установлено | Минимальный интервал в миллисекундах между проверками того, не был ли [лимит использования](#youve-hit-your-session-limit) уже снят, пока запрос ожидает сброса этого лимита при установленной `CLAUDE_CODE_RETRY_WATCHDOG`. Когда проверка обнаруживает, что лимит снят, запрос отправляется сразу. Укажите значение только цифрами, от `60000` до `10800000`. Если переменная не установлена или значение выходит за пределы этого диапазона, проверки не выполняются. О том, когда Claude Code пропускает эти проверки, см. [справочник по переменным окружения](https://code.claude.com/docs/ru/env-vars.md). Требуется Claude Code v2.1.305 или позже. |569| [`CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS`](https://code.claude.com/docs/ru/env-vars) | не установлено | Минимальный интервал в миллисекундах между проверками того, не был ли [лимит использования](#youve-hit-your-session-limit) уже снят, пока запрос ожидает сброса этого лимита при установленной `CLAUDE_CODE_RETRY_WATCHDOG`. Когда проверка обнаруживает, что лимит снят, запрос отправляется сразу. Укажите значение только цифрами, от `60000` до `10800000`. Если переменная не установлена или значение выходит за пределы этого диапазона, проверки не выполняются. О том, когда Claude Code пропускает эти проверки, см. [справочник по переменным окружения](https://code.claude.com/docs/ru/env-vars.md). Требуется Claude Code v2.1.305 или позже. |

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

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

564| [`API_TIMEOUT_MS`](https://code.claude.com/docs/ru/env-vars) | 600000 | Время в миллисекундах, за которое каждая попытка запроса должна получить заголовки ответа. Оно не ограничивает, как долго после этого длится потоковый ответ. Повысьте его для медленных сетей или прокси. О том, как оно ограничивает дедлайн первого байта, см. [No response from API](#no-response-from-api). |572| [`API_TIMEOUT_MS`](https://code.claude.com/docs/ru/env-vars) | 600000 | Время в миллисекундах, за которое каждая попытка запроса должна получить заголовки ответа. Оно не ограничивает, как долго после этого длится потоковый ответ. Повысьте его для медленных сетей или прокси. О том, как оно ограничивает дедлайн первого байта, см. [No response from API](#no-response-from-api). |

565| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](https://code.claude.com/docs/ru/env-vars) | не установлено | Лимит повторных отправок [непотокового запроса](#streaming-response-ended-before-any-complete-data-was-received), который завершается по таймауту. При достижении лимита запрос завершается с ошибкой. Ответ Claude, генерация которого занимает больше времени, чем таймаут, снова завершается по таймауту при каждой повторной отправке, поэтому установите небольшое число, например `0`, чтобы получить ошибку быстрее. О таймауте каждой попытки см. [Сколько ждёт непотоковая попытка](#how-long-a-non-streaming-attempt-waits). Требуется Claude Code v2.1.285 или позже. |573| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](https://code.claude.com/docs/ru/env-vars) | не установлено | Лимит повторных отправок [непотокового запроса](#streaming-response-ended-before-any-complete-data-was-received), который завершается по таймауту. При достижении лимита запрос завершается с ошибкой. Ответ Claude, генерация которого занимает больше времени, чем таймаут, снова завершается по таймауту при каждой повторной отправке, поэтому установите небольшое число, например `0`, чтобы получить ошибку быстрее. О таймауте каждой попытки см. [Сколько ждёт непотоковая попытка](#how-long-a-non-streaming-attempt-waits). Требуется Claude Code v2.1.285 или позже. |

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


825Последующие вызовы в том же ответе Claude могут быть отклонены по этой причине:833Последующие вызовы в том же ответе Claude могут быть отклонены по этой причине:

826 834 

827```text theme={null}835```text theme={null}

828another call in this response was changed by a hook after auto mode reviewed it, or could not be confirmed unchanged836another call in this response was changed after auto mode reviewed it, or could not be confirmed unchanged

829```837```

830 838 

831Затем Claude может повторно выполнить каждый отклоненный вызов, чтобы сервер его проверил. Если появится запрос разрешения, ответьте на него. Больше ничего делать не нужно, если только Claude не сообщит в своем ответе, что авторежим не смог проверить вызов. В этом случае остановите изменение или одобрите вызов самостоятельно и попросите Claude повторить вызов:839Затем Claude может повторно выполнить каждый отклоненный вызов, чтобы сервер его проверил. Если появится запрос разрешения, ответьте на него. Больше ничего делать не нужно, если только Claude не сообщит в своем ответе, что авторежим не смог проверить вызов. В этом случае остановите изменение или одобрите вызов самостоятельно и попросите Claude повторить вызов:


978 986 

979### You've hit your monthly spend limit987### You've hit your monthly spend limit

980 988 

981Включённое в ваш план использование не может покрыть этот запрос, а [usage credits](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), которые в противном случае оплатили бы его, достигли лимита расходов. Это происходит, когда одно из окон использования вашего плана закончилось, или когда запрос относится к тем, которые оплачиваются только кредитами использования, например запрос к модели, которая [оплачивается кредитами использования](https://code.claude.com/docs/ru/model-config.md#fable-and-usage-credits). Сообщение указывает, чей лимит вас заблокировал. Текст после `·` говорит, как увеличить этот лимит, и зависит от вашего плана и от того, управляете ли вы биллингом:989Включённое в ваш план использование не может покрыть этот запрос, а [usage credits](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), которые в противном случае оплатили бы его, достигли лимита расходов. Ваш план не может покрыть запрос, когда одно из его окон использования закончилось или когда запрос оплачивается только кредитами использования. Один из примеров — запрос к модели, которая [оплачивается кредитами использования](https://code.claude.com/docs/ru/model-config.md#fable-and-usage-credits).

990 

991Слова перед `·` называют лимит, который вас заблокировал, например ежемесячный лимит расходов вашей организации, а текст после него говорит, как добиться увеличения этого лимита. В облачной сессии или при работе через [Remote Control](https://code.claude.com/docs/ru/remote-control.md) этот текст не содержит URL, а сообщение о вашем собственном `monthly spend limit` не говорит, как его повысить. Другие сессии показывают такие формы:

982 992 

983```text theme={null}993```text theme={null}

984You've hit your monthly spend limit · raise it at https://claude.ai/settings/usage?from=cc_cli_limit_message994You've hit your monthly spend limit · raise it at https://claude.ai/settings/usage?from=cc_cli_limit_message


1822 1832 

1823До версии v2.1.232 Claude Code использовал среду выполнения v2 только при постепенном развёртывании или когда вы задавали `MCP_SDK_GENERATION=v2`.1833До версии v2.1.232 Claude Code использовал среду выполнения v2 только при постепенном развёртывании или когда вы задавали `MCP_SDK_GENERATION=v2`.

1824 1834 

1835### Stopped an OAuth request

1836 

1837Это сообщение означает, что Claude Code остановил [запрос OAuth для MCP-сервера](https://code.claude.com/docs/ru/mcp.md#authenticate-with-remote-mcp-servers), потому что эндпоинт OAuth перенаправил его. В обеих формах сообщения первый адрес — тот, который отправил перенаправление:

1838 

1839```text theme={null}

1840Stopped an OAuth request, which can hold secrets: https://auth.example.com redirected it to https://other.example.com. Ask the owner of https://auth.example.com to remove that redirect.

1841Stopped an OAuth request: https://auth.example.com redirected it more than 5 times. Ask the owner of https://auth.example.com to fix those redirects.

1842```

1843 

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

1845 

1846* Попросите того, кто обслуживает первый адрес, например оператора MCP-сервера, удалить или исправить перенаправление. Затем повторите попытку из `/mcp`.

1847 

1825### Отказ отправлять учётные данные на эндпоинт токенов без https1848### Отказ отправлять учётные данные на эндпоинт токенов без https

1826 1849 

1827В [среде выполнения v2](https://code.claude.com/docs/ru/mcp.md#mcp-client-runtimes) Claude Code отправляет запрос токена [MCP OAuth](https://code.claude.com/docs/ru/mcp.md#authenticate-with-remote-mcp-servers) только на эндпоинт токенов, обслуживаемый по HTTPS или по адресу `localhost`, `127.0.0.1` или `::1`. Это сообщение означает, что эндпоинт токенов сервера не удовлетворяет ни одному из этих условий, поэтому Claude Code остановился до отправки запроса. Это происходит после входа в браузере, поэтому сначала шаг в браузере завершается успешно, а затем снова — каждый раз, когда Claude Code обновляет токен сервера.1850В [среде выполнения v2](https://code.claude.com/docs/ru/mcp.md#mcp-client-runtimes) Claude Code отправляет запрос токена [MCP OAuth](https://code.claude.com/docs/ru/mcp.md#authenticate-with-remote-mcp-servers) только на эндпоинт токенов, обслуживаемый по HTTPS или по адресу `localhost`, `127.0.0.1` или `::1`. Это сообщение означает, что эндпоинт токенов сервера не удовлетворяет ни одному из этих условий, поэтому Claude Code остановился до отправки запроса. Это происходит после входа в браузере, поэтому сначала шаг в браузере завершается успешно, а затем снова — каждый раз, когда Claude Code обновляет токен сервера.


2207 2230 

2208### Host not allowed in a cloud session2231### Host not allowed in a cloud session

2209 2232 

2210Исходящий HTTP-запрос из облачной сессии или облачной запланированной задачи был заблокирован сетевой политикой среды.2233В облачной сессии или облачной запланированной задаче `403` или ошибка DNS, например `ENOTFOUND`, может означать, что запрошенного хоста нет в [списке разрешённых доменов облачной среды](https://code.claude.com/docs/ru/cloud-environments.md#access-levels). Чтобы убедиться в этом, сверьте хост с этим списком. `403` с этим заголовком подтверждает блокировку, но этот заголовок есть не у каждого `403` заблокированного запроса:

2211 2234 

2212```text theme={null}2235```text theme={null}

2213HTTP 4032236HTTP 403


2290 2313 

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

2292 2315 

2316### Couldn't load the history of cloud session

2317 

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

2319 

2320```text theme={null}

2321Couldn't load the history of cloud session session_01HJKLMNOPQRSTUVWXYZ. Check it at https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ?from=cli

2322```

2323 

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

2325 

2326* Откройте ссылку из сообщения, чтобы проверить сессию в браузере. Если там она открывается, а тот же перенос сессии снова завершается этой ошибкой, [сообщите о проблеме](#report-an-error).

2327 

2293### Couldn't reconnect to your Remote Control session2328### Couldn't reconnect to your Remote Control session

2294 2329 

2295```text theme={null}2330```text theme={null}


2565 2600 

2566Обычно Claude Code автоматически уменьшает большие изображения. Эти ошибки означают, что изображение не удалось декодировать или уменьшить до размеров в пределах лимитов API.2601Обычно Claude Code автоматически уменьшает большие изображения. Эти ошибки означают, что изображение не удалось декодировать или уменьшить до размеров в пределах лимитов API.

2567 2602 

2603Ошибка, которую вы видите, может называть другой пиксельный лимит, например `2576x2576px` там, где в этих примерах указано `2000x2000px`.

2604 

2568**Что делать:**2605**Что делать:**

2569 2606 

2570* Если сообщение просит преобразовать изображение, преобразуйте его в PNG, JPEG, GIF или WebP и прикрепите снова. Для этих форматов Claude Code может проверить размеры по заголовку файла, не декодируя изображение.2607* Если сообщение просит преобразовать изображение, преобразуйте его в PNG, JPEG, GIF или WebP и прикрепите снова. Для этих форматов Claude Code может проверить размеры по заголовку файла, не декодируя изображение.


2873* **Причина, написанная хуком**: хук PreModelSwitch указал эту причину, когда [отклонил переключение или запросил подтверждение](https://code.claude.com/docs/ru/hooks.md#premodelswitch-decision-control). Выполните то, что он требует, или выберите модель, разрешённую вашими хуками.2910* **Причина, написанная хуком**: хук PreModelSwitch указал эту причину, когда [отклонил переключение или запросил подтверждение](https://code.claude.com/docs/ru/hooks.md#premodelswitch-decision-control). Выполните то, что он требует, или выберите модель, разрешённую вашими хуками.

2874* **`PreModelSwitch hook <name> did not respond before its timeout`**: хук, не ответивший до истечения своего [таймаута](https://code.claude.com/docs/ru/hooks.md#timeouts), блокирует переключение. Исправьте зависающую команду или увеличьте `timeout` этого хука, затем переключитесь снова.2911* **`PreModelSwitch hook <name> did not respond before its timeout`**: хук, не ответивший до истечения своего [таймаута](https://code.claude.com/docs/ru/hooks.md#timeouts), блокирует переключение. Исправьте зависающую команду или увеличьте `timeout` этого хука, затем переключитесь снова.

2875* **`confirmation required, and this session cannot ask`**: хук ответил `ask` без причины, а у управляющего запроса нет способа показать запрос подтверждения. Команда `/model` в [запуске `-p`](https://code.claude.com/docs/ru/headless) сообщает о том же состоянии с `(run /model interactively to confirm)` после причины. Выполните переключение из интерактивной сессии или измените решение хука для этой модели.2912* **`confirmation required, and this session cannot ask`**: хук ответил `ask` без причины, а у управляющего запроса нет способа показать запрос подтверждения. Команда `/model` в [запуске `-p`](https://code.claude.com/docs/ru/headless) сообщает о том же состоянии с `(run /model interactively to confirm)` после причины. Выполните переключение из интерактивной сессии или измените решение хука для этой модели.

2876* **`so organization-managed PreModelSwitch hooks could not be checked`**: Claude Code не смог определить, какие хуки PreModelSwitch предоставляют [управляемые плагины](https://code.claude.com/docs/ru/settings-reference.md#enabledplugins) вашей организации, например потому что управляемый плагин не загрузился. Один из этих хуков мог бы заблокировать переключение, поэтому Claude Code отказывает, а не применяет переключение без проверки. Начало причины указывает, что именно не удалось. Claude Code проверяет заново при каждой попытке переключения, поэтому устранённый сбой перестаёт блокировать; если сбой повторяется, запустите `claude --debug` и снова переключитесь, чтобы получить подробности, затем исправьте плагин или попросите администратора его исправить.2913* **`so organization-managed PreModelSwitch hooks could not be checked`**: Claude Code до v2.1.323 отказывает, когда не может определить, какие хуки PreModelSwitch предоставляют ваши [управляемые плагины](https://code.claude.com/docs/ru/settings-reference.md#enabledplugins). Текст перед этой фразой называет то, что завершилось неудачей. Чтобы отказы прекратились, обновите Claude Code. Чтобы хуки неисправного плагина тоже заработали, исправьте плагин или обратитесь к администратору. Для подробностей запустите `claude --debug` в оболочке и переключите модель, затем прочитайте [отладочный лог](https://code.claude.com/docs/ru/hooks.md#debug-hooks).

2877* **`a PreModelSwitch hook failed before answering`** или **`PreModelSwitch hooks were cancelled (the control stream closed) before answering`**: выполнение хука завершилось без решения, и Claude Code не считает это подтверждением. Запустите `claude --debug`, чтобы увидеть, что не удалось, затем переключитесь снова.2914* **`a PreModelSwitch hook failed before answering`** или **`PreModelSwitch hooks were cancelled (the control stream closed) before answering`**: выполнение хука завершилось без решения, и Claude Code не считает это подтверждением. Запустите `claude --debug`, чтобы увидеть, что не удалось, затем переключитесь снова.

2878 2915 

2879До версии 2.1.260 отказ из-за управляемого плагина звучал как `plugin hooks could not be loaded, so PreModelSwitch hooks could not be checked; see the debug log`. Claude Code один раз повторял загрузку плагина, а затем отклонял последующие переключения в сессии, даже если ваша организация не управляла никакими плагинами. В этих версиях перезапустите сессию, чтобы снова выполнить загрузку плагинов.2916До версии 2.1.260 отказ из-за управляемого плагина звучал как `plugin hooks could not be loaded, so PreModelSwitch hooks could not be checked; see the debug log`. Claude Code один раз повторял загрузку плагина, а затем отклонял последующие переключения в сессии, даже если ваша организация не управляла никакими плагинами. В этих версиях перезапустите сессию, чтобы снова выполнить загрузку плагинов.


3155 3192 

3156## Ошибки командной строки3193## Ошибки командной строки

3157 3194 

3158Эти ошибки возникают в командной строке `claude` и её подкомандах, при отправке имени команды в строке ввода, а также в командах вроде `/security-review`, которые собирают контекст, выполняя shell-команды до запуска своего промпта. Они также возникают в `/tui`, которая перезапускает CLI.3195Эти ошибки выдаёт командная строка `claude` и её подкоманды, имя команды, которое вы отправляете в строке ввода, а также такие команды, как `/security-review`, которые собирают контекст, выполняя shell-команды до запуска своего промпта. Их также выдаёт `/tui`, который перезапускает CLI.

3159 3196 

3160### Конфликт между `--bg` и `--print`3197### Конфликт между `--bg` и `--print`

3161 3198 

3162Это сообщение требует Claude Code v2.1.198 или новее. Вы объединили `--bg` с `-p` или `--print` в одном вызове `claude`. `--bg` запускает [фоновую сессию](https://code.claude.com/docs/ru/agent-view.md#from-your-shell), к которой вы позже подключаетесь с помощью `claude agents`, а `--print` работает [неинтерактивно](https://code.claude.com/docs/ru/headless.md) и никогда не запускает интерактивную сессию, к которой подключается `claude agents`. До v2.1.198 такое сочетание молча создавало фоновое задание, к которому невозможно было подключиться.3199Это сообщение требует Claude Code v2.1.198 или новее. Вы указали `--bg` вместе с `-p` или `--print` в одном вызове `claude`. `--bg` запускает [фоновую сессию](https://code.claude.com/docs/ru/agent-view.md#from-your-shell), к которой вы позже подключаетесь с помощью `claude agents`, а `--print` работает [в неинтерактивном режиме](https://code.claude.com/docs/ru/headless.md) и никогда не запускает интерактивную сессию, к которой подключается `claude agents`. До v2.1.198 такое сочетание молча создавало фоновую задачу, к которой невозможно было подключиться.

3163 3200 

3164```text theme={null}3201```text theme={null}

3165--bg and --print conflict: --print never starts the interactive session that `claude agents` attaches to, so the job would be unattachable. The prompt is the positional — drop --print: `claude --bg '<task>'`.3202--bg and --print conflict: --print never starts the interactive session that `claude agents` attaches to, so the job would be unattachable. The prompt is the positional — drop --print: `claude --bg '<task>'`.


3168**Что делать:**3205**Что делать:**

3169 3206 

3170* Уберите `-p` или `--print`. `--bg` принимает промпт как позиционный аргумент, поэтому `claude --bg "<task>"` — это полная команда. См. [Запуск новых агентов из оболочки](https://code.claude.com/docs/ru/agent-view.md#from-your-shell).3207* Уберите `-p` или `--print`. `--bg` принимает промпт как позиционный аргумент, поэтому `claude --bg "<task>"` — это полная команда. См. [Запуск новых агентов из оболочки](https://code.claude.com/docs/ru/agent-view.md#from-your-shell).

3171* Чтобы выполнить промпт неинтерактивно и вывести результат вместо создания фоновой сессии, уберите `--bg` и выполните `claude -p "<task>"`3208* Чтобы выполнить промпт в неинтерактивном режиме и вывести результат вместо создания фоновой сессии, уберите `--bg` и выполните `claude -p "<task>"`

3172 3209 

3173### Couldn't tell whether `--bg` is a flag or text3210### Couldn't tell whether `--bg` is a flag or text

3174 3211 


3178Couldn't tell whether --bg is a flag or text here, so nothing was started. To start a background session put it first: claude --bg <prompt>3215Couldn't tell whether --bg is a flag or text here, so nothing was started. To start a background session put it first: claude --bg <prompt>

3179```3216```

3180 3217 

3181Если вы ввели `--background`, в строке вместо этого будет указан `--background`.3218Если вы ввели `--background`, в строке вместо этого указан `--background`.

3182 3219 

3183**Что делать:**3220**Что делать:**

3184 3221 


3192Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.3229Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.

3193```3230```

3194 3231 

3195До v2.1.283 `claude` завершался так же, когда вы передавали `--system-prompt` вместе с `--system-prompt-file` или `--append-system-prompt` вместе с `--append-system-prompt-file`, поскольку эти пары конфликтовали, а не [объединялись](https://code.claude.com/docs/ru/cli-reference.md#system-prompt-flags). В этих версиях сообщение называет пару, которую вы объединили.3232До v2.1.283 `claude` завершался так же, когда вы передавали `--system-prompt` с `--system-prompt-file` или `--append-system-prompt` с `--append-system-prompt-file`, потому что эти пары конфликтовали, а не [объединялись](https://code.claude.com/docs/ru/cli-reference.md#system-prompt-flags). В этих версиях сообщение называет пару, которую вы указали вместе.

3196 3233 

3197**Что делать:**3234**Что делать:**

3198 3235 

3199* Оставьте одну форму флага и уберите другую. Чтобы объединить фиксированный файл промпта с текстом для конкретного запуска, добавьте текст в файл перед запуском вместо передачи обоих флагов3236* Оставьте одну форму флага и уберите другую. Чтобы объединить фиксированный файл промпта с текстом для конкретного запуска, перед запуском добавьте этот текст в файл, а не передавайте оба флага

3200 3237 

3201### Недопустимая конфигурация `--agents`3238### Invalid `--agents` configuration

3202 3239 

3203Значение, переданное в `--agents`, недопустимо, поэтому `claude` завершается с кодом выхода 1 вместо запуска сессии. Если вы передаёте `--safe-mode` или задаёте [`CLAUDE_CODE_SAFE_MODE`](https://code.claude.com/docs/ru/env-vars#variables), Claude Code полностью игнорирует `--agents`. С `--resume` или `--continue` встроенное значение JSON не проверяется, и сессия запускается; значение, прочитанное из файла, проверяется при каждом запуске. До v2.1.242 Claude Code всё равно запускал сессию.3240Значение, переданное в `--agents`, недопустимо, поэтому `claude` завершается с кодом выхода 1 вместо запуска сессии. Если вы передаёте `--safe-mode` или задаёте [`CLAUDE_CODE_SAFE_MODE`](https://code.claude.com/docs/ru/env-vars#variables), Claude Code полностью игнорирует `--agents`. С `--resume` или `--continue` встроенное JSON-значение не проверяется, и сессия запускается; значение, прочитанное из файла, проверяется при каждом запуске. До v2.1.242 Claude Code всё равно запускал сессию.

3204 3241 

3205```text theme={null}3242```text theme={null}

3206Error: Invalid --agents configuration:3243Error: Invalid --agents configuration:

3207<what failed>3244<what failed>

3208```3245```

3209 3246 

3210Что следует за первой строкой, зависит от того, какую проверку не прошло значение. Claude Code выполняет эти проверки по порядку и останавливается на первой неудачной. Если в вашем значении есть проблемы двух видов, вторую вы увидите только после исправления первой:3247То, что следует за первой строкой, зависит от того, какую проверку не прошло значение. Claude Code выполняет эти проверки по порядку и останавливается на первой непройденной. Если в вашем значении есть проблемы двух видов, вторую вы увидите только после исправления первой:

3211 3248 

32121. Если значение начинается с `{`, но не разбирается как JSON, или содержимое файла `--agents` не разбирается, Claude Code выводит одну строку `invalid JSON:` с собственным сообщением парсера JSON32491. Если значение начинается с `{`, но не разбирается как JSON, или содержимое файла `--agents` не разбирается, Claude Code выводит одну строку `invalid JSON:` с сообщением самого JSON-парсера

32132. Если значение разбирается, но определение агента не соответствует схеме для [субагентов, определённых через CLI](https://code.claude.com/docs/ru/sub-agents.md#choose-the-subagent-scope), Claude Code выводит по одной строке на каждую проблему32502. Если значение разбирается, но определение агента не соответствует схеме для [субагентов, определённых через CLI](https://code.claude.com/docs/ru/sub-agents.md#choose-the-subagent-scope), Claude Code выводит по одной строке на каждую проблему

32143. Если имя агента начинается с `-`, Claude Code выводит `<name>: agent names must not start with '-'`32513. Если имя агента начинается с `-`, Claude Code выводит `<name>: agent names must not start with '-'`

3215 3252 

3216Если строк с проблемами больше 20, Claude Code выводит первые 20, а остальные заменяет на `…and N more`.3253Если строк с проблемами больше 20, Claude Code выводит первые 20, а остальные заменяет на `…and N more`.

3217 3254 

3218С `--print` флаг `--agents` также принимает [путь к файлу JSON](https://code.claude.com/docs/ru/sub-agents.md#choose-the-subagent-scope) вместо встроенного объекта. До v2.1.281 `--agents` принимал только встроенный JSON и считал путь к файлу недопустимым JSON. У файловой формы есть собственные отказы, которые выводятся вместо этого сообщения, в том числе следующие:3255С `--print` флаг `--agents` также принимает [путь к JSON-файлу](https://code.claude.com/docs/ru/sub-agents.md#choose-the-subagent-scope) вместо встроенного объекта. До v2.1.281 `--agents` принимал только встроенный JSON и считал путь к файлу недопустимым JSON. У файловой формы есть собственные отказы, которые выводятся вместо этого сообщения, в том числе следующие:

3219 3256 

3220* **`Error: --agents takes a JSON object, or a file path only with --print (-p)`**: Claude Code прочитал значение как путь к файлу в интерактивной сессии. Передайте определения как встроенный JSON или добавьте `-p`, чтобы прочитать их из файла.3257* **`Error: --agents takes a JSON object, or a file path only with --print (-p)`**: Claude Code прочитал значение как путь к файлу в интерактивной сессии. Передайте определения как встроенный JSON или добавьте `-p`, чтобы читать их из файла.

3221* **`Error: --agents file not found: <path>`**: по этому пути нет файла. Значение, которое не начинается с `{` и не является допустимым JSON, читается как путь, поэтому встроенный JSON, испорченный вашей оболочкой, тоже может вызвать эту ошибку. Проверьте путь или кавычки и выполните команду снова.3258* **`Error: --agents file not found: <path>`**: по этому пути файл не существует. Значение, которое не начинается с `{` и не является допустимым JSON, читается как путь, поэтому встроенный JSON, искажённый вашей оболочкой, тоже может завершиться такой ошибкой. Проверьте путь или кавычки и снова выполните команду.

3222 3259 

3223**Что делать:**3260**Что делать:**

3224 3261 

3225* Исправьте каждую проблему, перечисленную в сообщении, затем выполните команду снова. См. [поля, которые принимает субагент, определённый через CLI](https://code.claude.com/docs/ru/sub-agents.md#choose-the-subagent-scope).3262* Исправьте каждую проблему, перечисленную в сообщении, затем снова выполните команду. См. [поля, которые принимает субагент, определённый через CLI](https://code.claude.com/docs/ru/sub-agents.md#choose-the-subagent-scope).

3226 3263 

3227### Облачные сессии нельзя создавать из сессии `--restricted`3264### Cloud sessions cannot be created from a `--restricted` session

3228 3265 

3229Если вы запускаете сессию с [`--restricted`](https://code.claude.com/docs/ru/cli-reference#cli-flags), Claude Code отказывается создавать из неё [облачные сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md#from-terminal-to-cloud), поскольку новая сессия работала бы вне ограниченного процесса и не соблюдала бы ограниченный режим. Claude Code отказывает на стороне клиента, до обращения к серверу, поэтому облачная сессия не создаётся:3266Если вы запустили сессию с [`--restricted`](https://code.claude.com/docs/ru/cli-reference#cli-flags), Claude Code отказывается создавать из неё [облачные сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md#from-terminal-to-cloud), потому что новая сессия работала бы вне ограниченного процесса и не соблюдала бы ограниченный режим. Claude Code отказывает на стороне клиента, до обращения к серверу, поэтому облачная сессия не создаётся:

3230 3267 

3231```text theme={null}3268```text theme={null}

3232Cloud sessions cannot be created from a --restricted session: they would not enforce it.3269Cloud sessions cannot be created from a --restricted session: they would not enforce it.


3235**Что делать:**3272**Что делать:**

3236 3273 

3237* Выполните задачу локально в ограниченной сессии3274* Выполните задачу локально в ограниченной сессии

3238* Если вы управляете тем, как запускается сессия, запустите новую сессию `claude` без `--restricted` и создайте облачную сессию из неё3275* Если вы управляете тем, как была запущена сессия, запустите новую сессию `claude` без `--restricted` и создайте облачную сессию из неё

3239 3276 

3240До v2.1.248 в Claude Code не было флага `--restricted`; более ранние версии отклоняют сам флаг с ошибкой неизвестного параметра.3277До v2.1.248 в Claude Code не было флага `--restricted`; более ранние версии отклоняют сам флаг с ошибкой о неизвестном параметре.

3241 3278 

3242### Облачные сессии отключены политикой вашей организации3279### Cloud sessions are disabled by your organization's policy

3243 3280 

3244Политика `allow_remote_sessions` вашей организации выключена, поэтому [облачные сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md) и команды, которые их используют, недоступны:3281Политика `allow_remote_sessions` вашей организации отключена, поэтому [облачные сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md) и команды, которые их используют, недоступны:

3245 3282 

3246```text theme={null}3283```text theme={null}

3247Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.3284Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.

3248```3285```

3249 3286 

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

3251 3288 

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

3253 3290 

3254**Что делать:**3291**Что делать:**

3255 3292 

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

3257 3294 

3258### Cloud sessions use your claude.ai login3295### Cloud sessions use your claude.ai login

3259 3296 

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

3261 3298 

3262```text theme={null}3299```text theme={null}

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

3264```3301```

3265 3302 

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

3267 3304 

3268### Couldn't verify your organization's policy for cloud sessions3305### Couldn't verify your organization's policy for cloud sessions

3269 3306 


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

3274```3311```

3275 3312 

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

3277 3314 

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

3279 3316 

3280```text theme={null}3317```text theme={null}

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

3282```3319```

3283 3320 

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

3285 3322 

3286```text theme={null}3323```text theme={null}

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


3292**Что делать:**3329**Что делать:**

3293 3330 

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

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

3296 3333 

3297### Nothing was stashed because a folder replaced a tracked file3334### Ничего не было помещено в stash, потому что папка заменила отслеживаемый файл

3298 3335 

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

3300 3337 

3301```text wrap theme={null}3338```text wrap theme={null}

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


3304 3341 

3305**Что делать:**3342**Что делать:**

3306 3343 

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

3308 3345 

3309### Значение `--json-schema` не является допустимой JSON Schema3346### The `--json-schema` value is not a valid JSON Schema

3310 3347 

3311Схема, переданная в [`--json-schema`](https://code.claude.com/docs/ru/cli-reference#cli-flags) в [неинтерактивном режиме](https://code.claude.com/docs/ru/headless.md#get-structured-output), не прошла компиляцию JSON Schema, поэтому `claude` завершается с кодом выхода 1 вместо выполнения промпта. До v2.1.205 недопустимая схема давала неструктурированный вывод без ошибки, а любая схема с ключевым словом `format` считалась недопустимой.3348Схема, переданная в [`--json-schema`](https://code.claude.com/docs/ru/cli-reference#cli-flags) в [неинтерактивном режиме](https://code.claude.com/docs/ru/headless.md#get-structured-output), не прошла компиляцию JSON Schema, поэтому `claude` завершается с кодом выхода 1 вместо выполнения промпта. До v2.1.205 недопустимая схема приводила к неструктурированному выводу без ошибки, а любая схема, использующая ключевое слово `format`, считалась недопустимой.

3312 3349 

3313```text theme={null}3350```text theme={null}

3314Error: --json-schema is not a valid JSON Schema: data/type must be equal to one of the allowed values3351Error: --json-schema is not a valid JSON Schema: data/type must be equal to one of the allowed values

3315```3352```

3316 3353 

3317Текст после второго двоеточия — это диагностика валидатора, которая называет ключевое слово или место, не прошедшее проверку. Схемы с ключевым словом `format`, например `"format": "email"`, допустимы: Claude Code принимает `format` как аннотацию и не применяет его.3354Текст после второго двоеточия — это диагностика валидатора, которая называет ключевое слово или место, не прошедшее проверку. Схемы, использующие ключевое слово `format`, например `"format": "email"`, допустимы: Claude Code принимает `format` как аннотацию и не применяет его.

3318 3355 

3319Claude Code выполняет две проверки до компиляции схемы: значение, которое не разбирается как JSON, отклоняется с `Error: --json-schema is not valid JSON`, а допустимый JSON, не являющийся объектом, — с `Error: --json-schema must be a JSON object`.3356Перед компиляцией схемы Claude Code выполняет две проверки: значение, которое не разбирается как JSON, он отклоняет с `Error: --json-schema is not valid JSON`, а допустимый JSON, который не является объектом, — с `Error: --json-schema must be a JSON object`.

3320 3357 

3321**Что делать:**3358**Что делать:**

3322 3359 

3323* Исправьте часть схемы, указанную в диагностике, затем снова выполните команду3360* Исправьте часть схемы, названную в диагностике, затем снова выполните команду

3324* См. [Получение структурированного вывода](https://code.claude.com/docs/ru/headless.md#get-structured-output), где приведены рабочая схема и команда3361* См. [Получение структурированного вывода](https://code.claude.com/docs/ru/headless.md#get-structured-output), где приведены рабочая схема и команда

3325 3362 

3326### Файл настроек превышает лимит 2MiB3363### Settings file exceeds the 2MiB limit

3327 3364 

3328Файл, переданный в [`--settings`](https://code.claude.com/docs/ru/cli-reference#cli-flags), больше 2 MiB, поэтому `claude` завершается с кодом выхода 1 при запуске вместо его загрузки. До v2.1.214 Claude Code читал файл без проверки размера, и файл размером в несколько гигабайт или файл устройства, например `/dev/zero`, неограниченно увеличивал потребление памяти.3365Файл, переданный в [`--settings`](https://code.claude.com/docs/ru/cli-reference#cli-flags), больше 2 MiB, поэтому `claude` при запуске завершается с кодом выхода 1 вместо его загрузки. До v2.1.214 Claude Code читал файл без проверки размера, и файл размером в несколько гигабайт или файл устройства, например `/dev/zero`, неограниченно увеличивал потребление памяти.

3329 3366 

3330```text theme={null}3367```text theme={null}

3331Error: Settings file exceeds the 2MiB limit: /path/to/settings.json3368Error: Settings file exceeds the 2MiB limit: /path/to/settings.json

3332```3369```

3333 3370 

3334Таким же образом Claude Code отклоняет путь `--settings`, который не является обычным файлом: для устройства, FIFO или сокета выводится `Error: Cannot use settings file (Not a regular file (device, FIFO, or socket))` с последующим путём, а для каталога указывается причина `EISDIR`.3371Так же Claude Code отклоняет путь `--settings`, который не является обычным файлом: для устройства, FIFO или сокета выводится `Error: Cannot use settings file (Not a regular file (device, FIFO, or socket))`, а затем путь, а для каталога указывается причина `EISDIR`.

3335 3372 

3336**Что делать:**3373**Что делать:**

3337 3374 

3338* Укажите в `--settings` обычный файл настроек JSON размером менее 2 MiB. Формат описан в разделе [Настройки](https://code.claude.com/docs/ru/settings.md).3375* Укажите в `--settings` обычный JSON-файл настроек размером меньше 2 MiB. Формат описан в разделе [Настройки](https://code.claude.com/docs/ru/settings.md).

3339 3376 

3340### Configuration error in \~/.claude.json3377### Configuration error in \~/.claude.json

3341 3378 

3342Claude Code не смог разобрать `~/.claude.json` — файл, в котором хранятся данные вашей учётной записи, MCP-серверы и состояние по проектам. [Неинтерактивный](https://code.claude.com/docs/ru/headless.md) запуск, например `claude -p`, завершается с кодом выхода 1.3379Claude Code не смог разобрать `~/.claude.json` — файл, в котором хранятся данные вашей учётной записи, MCP-серверы и состояние отдельных проектов. [Неинтерактивный](https://code.claude.com/docs/ru/headless.md) запуск, например `claude -p`, завершается с кодом выхода 1.

3343 3380 

3344Если Claude Code находит [резервную копию](https://code.claude.com/docs/ru/claude-directory.md#cleaned-up-automatically), вывод называет её и содержит строку `cp`, которая копирует её обратно:3381Если Claude Code находит [резервную копию](https://code.claude.com/docs/ru/claude-directory.md#cleaned-up-automatically), вывод называет её и содержит строку `cp`, которая копирует её обратно:

3345 3382 


3355**Что делать:**3392**Что делать:**

3356 3393 

3357* **В выводе есть строка `cp`**: выполните эту строку в терминале. В Windows выполните её в PowerShell.3394* **В выводе есть строка `cp`**: выполните эту строку в терминале. В Windows выполните её в PowerShell.

3358* **В выводе нет строки `cp`, или ошибка возвращается после её выполнения**: если `~/.claude.json` всё ещё содержит вашу конфигурацию, исправьте его JSON. Если не получается, скопируйте поверх него другой файл `.claude.json.backup.<timestamp>` из [`~/.claude/backups/`](https://code.claude.com/docs/ru/claude-directory#cleaned-up-automatically), если такой есть, или переименуйте его. Если файла `~/.claude.json` нет, Claude Code запускается с настройками по умолчанию и без всего, что содержал этот файл.3395* **В выводе нет строки `cp`, или ошибка возвращается после её выполнения**: если в `~/.claude.json` всё ещё есть ваша конфигурация, исправьте её JSON. Если это не удаётся, скопируйте поверх него другой файл `.claude.json.backup.<timestamp>` из [`~/.claude/backups/`](https://code.claude.com/docs/ru/claude-directory#cleaned-up-automatically), если такой есть, или переименуйте его. Если файла `~/.claude.json` нет, Claude Code запускается с настройками по умолчанию и без всего, что содержал файл.

3359* **`~/.claude.json` больше не содержит вашу конфигурацию**: найдите файл `.claude.json.corrupted.<timestamp>`, который всё ещё её содержит, в [`~/.claude/backups/`](https://code.claude.com/docs/ru/claude-directory#cleaned-up-automatically) или в домашнем каталоге. Исправьте его JSON, затем скопируйте его поверх `~/.claude.json`. Если не удаётся найти или исправить такой файл, попробуйте те же шаги с файлом `.claude.json.backup.<timestamp>`, содержащим вашу конфигурацию. Если такого нет, переименуйте `~/.claude.json` и снова добавьте свои MCP-серверы с помощью [`claude mcp add`](https://code.claude.com/docs/ru/mcp#installing-mcp-servers).3396* **В `~/.claude.json` больше нет вашей конфигурации**: найдите файл `.claude.json.corrupted.<timestamp>`, в котором она ещё есть, в [`~/.claude/backups/`](https://code.claude.com/docs/ru/claude-directory#cleaned-up-automatically) или в домашнем каталоге. Исправьте его JSON, затем скопируйте его поверх `~/.claude.json`. Если не удаётся найти или исправить такой файл, выполните те же шаги с файлом `.claude.json.backup.<timestamp>`, содержащим вашу конфигурацию. Если такого нет, переименуйте `~/.claude.json` и снова добавьте MCP-серверы с помощью [`claude mcp add`](https://code.claude.com/docs/ru/mcp#installing-mcp-servers).

3360 3397 

3361### Claude configuration file was empty and no backup holds anything3398### Claude configuration file was empty and no backup holds anything

3362 3399 

3363Это сообщение при запуске означает, что названный в нём файл был пустым и ни одна из [копий `.backup`](https://code.claude.com/docs/ru/claude-directory#cleaned-up-automatically) этого файла ничего не содержит. Claude Code запустился со значениями по умолчанию для того, что хранит этот файл. Ваши файлы `settings.json` и `.mcp.json` — это отдельные файлы.3400Это сообщение при запуске означает, что названный в нём файл был пустым и ни одна из [копий `.backup`](https://code.claude.com/docs/ru/claude-directory#cleaned-up-automatically) этого файла ничего не содержит. Claude Code запустился со значениями по умолчанию для того, что хранится в этом файле. Ваши файлы `settings.json` и `.mcp.json` — это отдельные файлы.

3364 3401 

3365```text wrap theme={null}3402```text wrap theme={null}

3366Claude configuration file at /home/user/.claude.json was empty and no backup holds anything: starting with defaults.3403Claude configuration file at /home/user/.claude.json was empty and no backup holds anything: starting with defaults.


3368 3405 

3369**Что делать:**3406**Что делать:**

3370 3407 

3371* Заново настройте то, что было сконфигурировано в этом файле. Например, добавьте свои [MCP-серверы](https://code.claude.com/docs/ru/mcp.md#mcp-installation-scopes) с областью действия `user` и `local` с помощью `claude mcp add` из терминала.3408* Заново настройте то, что было сконфигурировано в этом файле. Например, добавьте [MCP-серверы](https://code.claude.com/docs/ru/mcp.md#mcp-installation-scopes) с областью действия `user` и `local` с помощью `claude mcp add` из терминала.

3372* Войдите снова, если Claude Code попросит об этом3409* Войдите снова, если Claude Code попросит об этом

3373 3410 

3374До v2.1.318 Claude Code сообщал о пустом файле без резервной копии как о [повреждённом](#configuration-error-in-claude-json).3411До v2.1.318 Claude Code сообщал о пустом файле без резервной копии как о [повреждённом](#configuration-error-in-claude-json).

3375 3412 

3376### Текущий каталог больше не существует3413### The current directory no longer exists

3377 3414 

3378Вы запустили `claude` из каталога, который был удалён или перемещён после того, как ваша оболочка в него перешла, например worktree или временный каталог, удалённый другой оболочкой. Claude Code не может прочитать свой рабочий каталог, поэтому завершается с кодом выхода 1 до запуска сессии — как в интерактивном, так и в [неинтерактивном](https://code.claude.com/docs/ru/headless.md) режиме. До v2.1.239 Claude Code вместо этого сообщения аварийно завершался, выводя минифицированный исходный код бандла и необработанный стек `ENOENT ... uv_cwd` в stderr.3415Вы запустили `claude` из каталога, который был удалён или перемещён после того, как ваша оболочка в него перешла, например из worktree или временного каталога, удалённого другой оболочкой. Claude Code не может прочитать свой рабочий каталог, поэтому завершается с кодом выхода 1 до запуска сессии — как в интерактивном, так и в [неинтерактивном](https://code.claude.com/docs/ru/headless.md) режиме. До v2.1.239 Claude Code вместо этого сообщения аварийно завершался, выводя в stderr минифицированный исходный код сборки и необработанный стек `ENOENT ... uv_cwd`.

3379 3416 

3380```text theme={null}3417```text theme={null}

3381The current directory no longer exists (it was deleted or moved). Start Claude Code from an existing directory.3418The current directory no longer exists (it was deleted or moved). Start Claude Code from an existing directory.

3382error: The current working directory was deleted, so that command didn't work. Please cd into a different directory and try again.3419error: The current working directory was deleted, so that command didn't work. Please cd into a different directory and try again.

3383```3420```

3384 3421 

3385Причина и решение одинаковы для обеих форм.3422Причина и способ исправления одинаковы для обеих форм.

3386 3423 

3387Если Claude Code не может прочитать рабочий каталог по другой причине, например из-за изменения прав доступа, сообщение вместо этого называет код ошибки: `Can't read the current directory (EACCES). Start Claude Code from a different directory.`3424Если Claude Code не может прочитать рабочий каталог по другой причине, например из-за изменения прав доступа, сообщение вместо этого называет код ошибки: `Can't read the current directory (EACCES). Start Claude Code from a different directory.`

3388 3425 

3389В macOS ошибка `EPERM` для каталога в `~/Desktop`, `~/Documents`, `~/Downloads` или iCloud Drive обычно означает, что macOS блокирует доступ вашего приложения терминала к этой папке. Другие команды, читающие эту папку, завершаются с той же ошибкой: `ls` в ней сообщает `Operation not permitted`, даже с `sudo`.3426В macOS `EPERM` для каталога в `~/Desktop`, `~/Documents`, `~/Downloads` или iCloud Drive обычно означает, что macOS блокирует доступ вашего терминального приложения к этой папке. Другие команды, читающие эту папку, завершаются так же: `ls` в ней сообщает `Operation not permitted` даже с `sudo`.

3390 3427 

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

3392 3429 

3393* Перейдите в существующий каталог, например в домашний каталог или каталог проекта, затем снова выполните `claude`3430* Перейдите в существующий каталог, например в домашний каталог или каталог проекта, затем снова запустите `claude`

3394* Если каталог был создан заново по тому же пути, ваша оболочка всё ещё держит удалённый. Выполните `cd "$PWD"` или выйдите из каталога и войдите снова, затем снова выполните `claude`3431* Если каталог был создан заново по тому же пути, ваша оболочка всё ещё удерживает удалённый. Выполните `cd "$PWD"` или выйдите из каталога и снова войдите в него, затем снова запустите `claude`

3395* При `EPERM` в macOS закройте приложение терминала с помощью Cmd+Q, откройте его снова, вернитесь в эту папку и выполните `claude`. Если `ls` в этой папке по-прежнему завершается с ошибкой, откройте **System Settings > Privacy & Security > Files and Folders**, включите эту папку для своего приложения терминала, затем снова откройте терминал3432* При `EPERM` в macOS закройте терминальное приложение с помощью Cmd+Q, откройте его снова, вернитесь в эту папку и запустите `claude`. Если `ls` в этой папке по-прежнему завершается ошибкой, откройте **System Settings > Privacy & Security > Files and Folders**, включите эту папку для вашего терминального приложения, затем снова откройте терминал

3396 3433 

3397### Временный каталог отклонён или не может быть создан3434### Временный каталог отклонён или не может быть создан

3398 3435 

3399В macOS и Linux Claude Code при запуске создаёт приватный временный каталог `claude-<uid>` в системном временном каталоге или в каталоге, заданном переопределением [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/ru/env-vars). Если каталог не удаётся создать или уже существующий по этому пути элемент не проходит проверки безопасности, Claude Code выводит ошибку в stderr и завершается с кодом выхода 1 вместо запуска сессии:3436В macOS и Linux Claude Code при запуске создаёт приватный временный каталог `claude-<uid>` внутри системного временного каталога или каталога, заданного переопределением [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/ru/env-vars). Если каталог не удаётся создать или уже существующий по этому пути элемент не проходит проверки безопасности, Claude Code выводит сообщение о сбое в stderr и завершается с кодом выхода 1, не запуская сессию:

3400 3437 

3401```text wrap theme={null}3438```text wrap theme={null}

3402Claude Code's temporary directory /tmp/claude-501 could not be created: the volume holding /tmp is full (ENOSPC). Free space on that volume, or set CLAUDE_CODE_TMPDIR to a directory on another one, then try again.3439Claude Code's temporary directory /tmp/claude-501 could not be created: the volume holding /tmp is full (ENOSPC). Free space on that volume, or set CLAUDE_CODE_TMPDIR to a directory on another one, then try again.


3410 3447 

3411**Что делать:**3448**Что делать:**

3412 3449 

3413* При `could not be created` с последующим `is full (ENOSPC)` освободите место на диске, указанном в сообщении. Если вместо этого указано `your disk quota on the volume holding /tmp is used up (EDQUOT)`, удалите на этом томе свои файлы, которые вам больше не нужны3450* При `could not be created`, за которым следует `is full (ENOSPC)`, освободите место на томе, названном в сообщении. Если вместо этого указано `your disk quota on the volume holding /tmp is used up (EDQUOT)`, удалите на этом томе свои файлы, которые вам больше не нужны

3414* Для форм с `Refusing to use it` удалите сам указанный элемент, а не то, на что указывает ссылка, и снова запустите Claude Code; в случае формы `owned by uid` удалить его может только администратор или этот пользователь3451* При формах с `Refusing to use it` удалите сам названный элемент, а не то, на что указывает ссылка, и снова запустите Claude Code; при форме `owned by uid` удалить его может только администратор или этот пользователь

3415* При `is not readable` выполните `chmod 0700` для указанного каталога или удалите его и запустите снова3452* При `is not readable` выполните `chmod 0700` для названного каталога или удалите его и запустите снова

3416* В любом из этих случаев задайте в [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/ru/env-vars) каталог, которым вы управляете, и снова запустите Claude Code, не трогая отклонённый путь3453* В любом из этих случаев задайте в [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/ru/env-vars) каталог, которым вы управляете, и снова запустите Claude Code, не трогая отклонённый путь

3417 3454 

3418До v2.1.309 Claude Code выводил только текст ошибки операционной системы, когда том был заполнен или квота исчерпана. Пример: `ENOSPC: no space left on device, mkdir '/tmp/claude-501'`; применимы те же шаги.3455До v2.1.309 Claude Code выводил только текст ошибки операционной системы, когда том был заполнен или ваша квота исчерпана. Пример: `ENOSPC: no space left on device, mkdir '/tmp/claude-501'`; применяются те же шаги.

3419 3456 

3420### Claude Code could not save because the disk is full3457### Claude Code не смог сохранить данные, потому что диск заполнен

3421 3458 

3422Эта строка в stderr после запуска [`claude -p`](https://code.claude.com/docs/ru/headless) означает, что диск заполнен или ваша дисковая квота исчерпана, поэтому Claude Code не смог сохранить всё из этого запуска:3459Эта строка в stderr после запуска [`claude -p`](https://code.claude.com/docs/ru/headless) означает, что диск заполнен или ваша дисковая квота исчерпана, поэтому Claude Code не смог сохранить всё из этого запуска:

3423 3460 


3425Error: Claude Code could not save all of this session's transcript under /Users/you/.claude because the disk is full (ENOSPC). If you resume this session, part of the conversation may be missing. Free up space on that disk before the next run.3462Error: Claude Code could not save all of this session's transcript under /Users/you/.claude because the disk is full (ENOSPC). If you resume this session, part of the conversation may be missing. Free up space on that disk before the next run.

3426```3463```

3427 3464 

3428При выводе в формате text или `json` запуск завершается с кодом выхода 1, а ответ уже выведен. При выводе `stream-json` запуск сохраняет свой обычный код выхода, и ответ всё равно приходит.3465При текстовом выводе или выводе `json` запуск завершается с кодом выхода 1, а ответ уже выведен. При выводе `stream-json` запуск сохраняет свой обычный код выхода, и ответ всё равно приходит.

3429 3466 

3430**Что делать:**3467**Что делать:**

3431 3468 

3432* **`the disk is full (ENOSPC)`**: перед следующим запуском освободите место на диске, где находится путь из сообщения3469* **`the disk is full (ENOSPC)`**: перед следующим запуском освободите место на диске, где находится путь из сообщения

3433* **`your disk quota is used up (EDQUOT)`**: перед следующим запуском освободите место или запросите увеличение квоты3470* **`your disk quota is used up (EDQUOT)`**: перед следующим запуском освободите место или запросите увеличение квоты

3434 3471 

3435### Не удалось определить реальное расположение каталога3472### Directory couldn't be resolved to a real location

3436 3473 

3437Вы выполнили `/add-dir` для подкаталога рабочего каталога, и Claude Code не смог определить реальное расположение этого каталога.3474Вы выполнили `/add-dir` для подкаталога рабочего каталога, и Claude Code не смог определить реальное расположение этого каталога.

3438 3475 

3439У вас уже есть доступ к файлам в подкаталоге рабочего каталога, поэтому `/add-dir` только загружает его скиллы, команды и агентов. Перед их загрузкой Claude Code проверяет, что реальное расположение каталога, с разрешением всех символических ссылок, находится внутри рабочего каталога. Если Claude Code не может определить это расположение, он ничего не загружает и показывает это сообщение:3476У вас уже есть доступ к файлам подкаталога рабочего каталога, поэтому `/add-dir` только загружает его скиллы, команды и агентов. Перед их загрузкой Claude Code проверяет, что реальное расположение каталога, с разрешением всех символических ссылок, находится внутри рабочего каталога. Если Claude Code не может определить это расположение, он ничего не загружает и показывает это сообщение:

3440 3477 

3441```text theme={null}3478```text theme={null}

3442packages/app couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded. Check that it is a directory inside the working directory and try again.3479packages/app couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded. Check that it is a directory inside the working directory and try again.


3444 3481 

3445**Что делать:**3482**Что делать:**

3446 3483 

3447* Проверьте, что путь указывает на реальный каталог внутри рабочего каталога, затем снова выполните `/add-dir`3484* Убедитесь, что путь указывает на реальный каталог внутри рабочего каталога, затем снова выполните `/add-dir`

3448* Сообщение не меняет ваш доступ к файлам; оно лишь сообщает, что содержимое `.claude/` этого каталога не было загружено3485* Сообщение не меняет ваш доступ к файлам; оно лишь сообщает, что содержимое `.claude/` этого каталога не было загружено

3449 3486 

3450До v2.1.261 это сообщение также появлялось при каждом `/add-dir <subdirectory>`, когда рабочий каталог находился на автомонтировании `/net/<host>`, где Claude Code намеренно не разрешает пути; с каталогом всё было в порядке, и повторная попытка не помогала.3487До v2.1.261 это сообщение также появлялось для каждого `/add-dir <subdirectory>`, когда рабочий каталог находился на автомонтировании `/net/<host>`, где Claude Code намеренно не разрешает пути; с каталогом всё было в порядке, и повторная попытка не могла помочь.

3451 3488 

3452### Рабочее пространство не является доверенным при запуске Remote Control3489### Workspace not trusted when starting Remote Control

3453 3490 

3454> [!NOTE]3491> [!NOTE]

3455>3492>

3456> Если `claude ultrareview` вывел `Error: Workspace not trusted`, см. вместо этого [Workspace not trusted при запуске claude ultrareview](#workspace-not-trusted-when-running-claude-ultrareview).3493> Если `claude ultrareview` вывел `Error: Workspace not trusted`, вместо этого см. [Workspace not trusted when running claude ultrareview](#workspace-not-trusted-when-running-claude-ultrareview).

3457 3494 

3458Вы запустили серверный режим [Remote Control](https://code.claude.com/docs/ru/remote-control.md) командой `claude remote-control` или её псевдонимом `claude rc` в каталоге, которому не доверяете, и команда не смогла спросить вас, доверять ли ему. Например, стандартный ввод или стандартный вывод команды не является терминалом, поскольку один из них перенаправлен или передан через конвейер. Команда завершается с кодом выхода 1:3495Вы запустили серверный режим [Remote Control](https://code.claude.com/docs/ru/remote-control.md) с помощью `claude remote-control` или его псевдонима `claude rc` в каталоге, которому вы не доверяли, и команда не смогла спросить вас, доверяете ли вы ему. Например, стандартный ввод или стандартный вывод команды не является терминалом, потому что один из них перенаправлен или передан через конвейер. Команда завершается с кодом выхода 1:

3459 3496 

3460```text theme={null}3497```text theme={null}

3461Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog.3498Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog.

3462```3499```

3463 3500 

3464Два варианта, которые также начинаются с `Error: Workspace not trusted.`, появляются в терминале, слишком маленьком, чтобы показать, что включает доверие к каталогу, или в терминале, который не сообщил свой размер. Увеличьте окно или переключитесь на обычное окно терминала, затем снова выполните `claude rc`.3501Два варианта, которые тоже начинаются с `Error: Workspace not trusted.`, появляются в терминале, слишком маленьком, чтобы показать, что включает доверие к каталогу, или в терминале, который не сообщил свой размер. Увеличьте окно или переключитесь на обычное окно терминала, затем снова выполните `claude rc`.

3465 3502 

3466В домашнем каталоге сообщение другое, поскольку диалог доверия к рабочему пространству никогда не сохраняет доверие для домашнего каталога, поэтому подтверждение в нём не может удовлетворить эту проверку. До v2.1.214 в домашнем каталоге показывалось сообщение выше, совет из которого там не может сработать.3503В домашнем каталоге сообщение другое, потому что диалоговое окно доверия к рабочему пространству никогда не сохраняет доверие для домашнего каталога, поэтому его подтверждение там не может удовлетворить эту проверку. До v2.1.214 в домашнем каталоге показывалось сообщение выше, совет из которого там не может сработать.

3467 3504 

3468```text theme={null}3505```text theme={null}

3469Error: Workspace not trusted. /Users/you is your home directory, and for security home-directory trust is never saved, so running `claude` here first won't help. Run `claude rc` from a project directory instead (run `claude` there once to accept the trust dialog).3506Error: Workspace not trusted. /Users/you is your home directory, and for security home-directory trust is never saved, so running `claude` here first won't help. Run `claude rc` from a project directory instead (run `claude` there once to accept the trust dialog).

3470```3507```

3471 3508 

3472Если вы ответите `n` или нажмёте Enter на [вопрос `Trust <directory>?`](https://code.claude.com/docs/ru/remote-control#requirements), команда выведет сообщение `Remote Control did not start` с названием каталога и завершится с кодом выхода 1. Снова выполните `claude rc`, чтобы ответить `y`.3509Если на [вопрос `Trust <directory>?`](https://code.claude.com/docs/ru/remote-control#requirements) вы отвечаете `n` или нажимаете Enter, команда выводит сообщение `Remote Control did not start` с названием каталога и завершается с кодом выхода 1. Снова выполните `claude rc`, чтобы ответить `y`.

3473 3510 

3474**Что делать:**3511**Что делать:**

3475 3512 

3476* Сначала подтвердите доверие к каталогу из терминала: выполните там `claude rc` и ответьте `y` или выполните там `claude` и примите [диалог доверия к рабочему пространству](https://code.claude.com/docs/ru/permissions.md#project-allow-rules-and-workspace-trust), затем снова выполните исходную команду3513* Сначала подтвердите доверие к каталогу из терминала: выполните там `claude rc` и ответьте `y` или выполните там `claude` и примите [диалоговое окно доверия к рабочему пространству](https://code.claude.com/docs/ru/permissions.md#project-allow-rules-and-workspace-trust), затем снова выполните исходную команду

3477* В домашнем каталоге перейдите в каталог проекта и запустите Remote Control там3514* Если вы в домашнем каталоге, перейдите в каталог проекта и запустите Remote Control там

3478 3515 

3479До v2.1.284 команда никогда не задавала этот вопрос, даже в терминале.3516До v2.1.284 команда никогда не задавала этот вопрос, даже в терминале.

3480 3517 

3481### Workspace not trusted при запуске claude ultrareview3518### Workspace not trusted when running claude ultrareview

3482 3519 

3483В папке, которой вы не доверяли, если [`claude ultrareview`](https://code.claude.com/docs/ru/ultrareview#trust-the-folder-before-the-review-runs) не может спросить, доверяете ли вы ей, запуск завершается с кодом выхода 1 до начала ревью:3520Если в папке, которой вы не доверяли, [`claude ultrareview`](https://code.claude.com/docs/ru/ultrareview#trust-the-folder-before-the-review-runs) не может спросить, доверяете ли вы ей, запуск завершается с кодом выхода 1 до начала ревью:

3484 3521 

3485```text theme={null}3522```text theme={null}

3486Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog. Or, in a script or CI job, pass `--trust-workspace` to trust the folder for this run only.3523Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog. Or, in a script or CI job, pass `--trust-workspace` to trust the folder for this run only.

3487```3524```

3488 3525 

3489Например, подкоманда не может задать вопрос, если её стандартный ввод или стандартный вывод не является терминалом. Перенаправление вывода в файл, как в `claude ultrareview --json > findings.json`, означает, что стандартный вывод не является терминалом.3526Например, подкоманда не может спросить, если её стандартный ввод или стандартный вывод не является терминалом. Перенаправление вывода в файл, как в `claude ultrareview --json > findings.json`, означает, что стандартный вывод не является терминалом.

3490 3527 

3491**Что делать:**3528**Что делать:**

3492 3529 

3493* В скрипте или задании CI добавьте `--trust-workspace`, чтобы доверять папке для этого запуска: `claude ultrareview --trust-workspace`. Добавляйте его только для кода, которому доверяете, потому что git и Claude Code смогут запускать программы, указанные в конфигурации git и настройках проекта этой папки. Для pull request с кодом, которому вы не доверяете, [запускайте ревью из ветки, которой доверяете](https://code.claude.com/docs/ru/ultrareview.md#trust-the-folder-before-the-review-runs).3530* В скрипте или задаче CI добавьте `--trust-workspace`, чтобы доверять папке на время этого запуска: `claude ultrareview --trust-workspace`. Добавляйте его только для кода, которому вы доверяете, потому что тогда git и Claude Code могут запускать программы, указанные в конфигурации git этой папки и в настройках проекта. Для pull request, коду которого вы не доверяете, [запустите ревью из ветки, которой вы доверяете](https://code.claude.com/docs/ru/ultrareview.md#trust-the-folder-before-the-review-runs).

3494* На своём компьютере выполните `claude` в этой папке и примите [диалог доверия к рабочему пространству](https://code.claude.com/docs/ru/permissions.md#project-allow-rules-and-workspace-trust), затем снова выполните исходную команду3531* На своём компьютере выполните `claude` в этой папке и примите [диалоговое окно доверия к рабочему пространству](https://code.claude.com/docs/ru/permissions.md#project-allow-rules-and-workspace-trust), затем снова выполните исходную команду

3495 3532 

3496Каждое из этих сообщений `claude ultrareview` означает, что ревью не началось, а код выхода равен 1:3533Каждое из этих сообщений от `claude ultrareview` означает, что ревью не началось и код выхода равен 1:

3497 3534 

3498* **`Error: Workspace not trusted. This terminal ...`**: терминал не сообщил количество строк и столбцов или не может вместить вопрос о доверии и предупреждения к нему. Увеличьте его или используйте терминал, который сообщает свой размер, затем снова выполните `claude ultrareview`. Вне домашнего каталога вы также можете один раз выполнить `claude` в этой папке и принять диалог доверия, чтобы последующие запуски там не задавали вопрос.3535* **`Error: Workspace not trusted. This terminal ...`**: терминал не сообщил количество строк и столбцов или в него не помещаются вопрос о доверии и его предупреждения. Увеличьте его или используйте терминал, который сообщает свой размер, затем снова выполните `claude ultrareview`. Вне домашнего каталога вы также можете один раз выполнить `claude` в этой папке и принять диалоговое окно доверия, чтобы последующие запуски там не задавали вопрос.

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

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

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

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

3503 3540 

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

3505 3542 


3514 3551 

3515**Что делать:**3552**Что делать:**

3516 3553 

3517* **`Enable Remote Control?`**: в скрипте или службе стандартный ввод заканчивается прежде, чем кто-либо успеет ответить. Один раз выполните `claude remote-control` в терминале от имени пользователя, под которым работает ваш скрипт или служба, и ответьте `y`.3554* **`Enable Remote Control?`**: в скрипте или сервисе стандартный ввод заканчивается до того, как кто-либо успевает ответить. Один раз выполните `claude remote-control` в терминале от имени пользователя, под которым работает ваш скрипт или сервис, и ответьте `y`.

3518* **`Choose [1/2] (default: 1):`**: снова выполните `claude remote-control` и [выберите режим запуска](https://code.claude.com/docs/ru/remote-control.md#set-the-default-spawn-mode-for-a-project) или передайте [`--spawn=same-dir` или `--spawn=worktree`](https://code.claude.com/docs/ru/remote-control#start-a-remote-control-session), чтобы пропустить вопрос3555* **`Choose [1/2] (default: 1):`**: снова выполните `claude remote-control` и [выберите режим запуска](https://code.claude.com/docs/ru/remote-control.md#set-the-default-spawn-mode-for-a-project) или передайте [`--spawn=same-dir` или `--spawn=worktree`](https://code.claude.com/docs/ru/remote-control#start-a-remote-control-session), чтобы пропустить вопрос

3519 3556 

3520### Не переносится в сессии, которые запускает Remote Control3557### Not carried over to the sessions Remote Control starts

3521 3558 

3522Вы запустили [Remote Control](https://code.claude.com/docs/ru/remote-control.md) с глобальным флагом `claude` перед глаголом `remote-control` — флагом, который ограничивал бы или настраивал сессии, запускаемые Remote Control, например `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools` или `--mcp-config`. Флаг, указанный перед глаголом, никогда не доходит до этих сессий. Вместо этого Claude Code отказывается запускаться и называет флаг:3559Вы запустили [Remote Control](https://code.claude.com/docs/ru/remote-control.md) с глобальным флагом `claude` перед глаголом `remote-control`, причём с таким, который ограничивал бы или настраивал сессии, запускаемые Remote Control, например `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools` или `--mcp-config`. Флаг, стоящий перед глаголом, никогда не доходит до этих сессий. Вместо этого Claude Code отказывается запускаться и называет флаг:

3523 3560 

3524```text theme={null}3561```text theme={null}

3525Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`).3562Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`). Pass settings with `claude remote-control --settings <file>`.

3526```3563```

3527 3564 

3528Claude Code не отклоняет глобальные флаги, которые безопасно отбросить, например `--verbose`, `--model` или добавленные обёрткой `--session-id` или `--plugin-dir`: он их игнорирует, и Remote Control запускается.3565Claude Code не отказывается запускаться из-за глобальных флагов, отбрасывание которых безвредно, например `--verbose`, `--model` или добавленных обёрткой `--session-id` или `--plugin-dir`: он их игнорирует, и Remote Control запускается.

3529 3566 

3530Claude Code также отказывается запускаться при глобальном флаге, который он пока не распознаёт как безопасный, поэтому флаг, добавленный в более новом выпуске, может появляться в этом сообщении, пока более поздний выпуск не пометит его как безопасный.3567Claude Code также отказывается запускаться из-за глобального флага, который он пока не распознаёт как безвредный, поэтому флаг, добавленный в более новом выпуске, может появляться в этом сообщении, пока последующий выпуск не пометит его как безвредный.

3531 3568 

3532**Что делать:**3569**Что делать:**

3533 3570 

3534* Уберите флаг перед глаголом и передайте [собственные параметры Remote Control](https://code.claude.com/docs/ru/remote-control.md#start-a-remote-control-session) после него; `claude remote-control --help` выводит их список3571* Уберите флаг перед глаголом и передайте [собственные параметры Remote Control](https://code.claude.com/docs/ru/remote-control.md#start-a-remote-control-session) после него; `claude remote-control --help` перечисляет их

3535* Если отклонённый флаг — `--permission-mode`, выполните `claude remote-control --permission-mode <mode>`, чтобы задать режим разрешений для сессий, которые запускает Remote Control3572* Если отклонённый флаг — `--permission-mode`, выполните `claude remote-control --permission-mode <mode>`, чтобы задать режим разрешений для сессий, запускаемых Remote Control

3536 3573 

3537До v2.1.248 `claude remote-control` не принимал собственные флаги, если первым шёл глобальный флаг, и команда завершалась с ошибкой `unknown option`.3574До v2.1.248 `claude remote-control` не принимал собственные флаги, если первым шёл глобальный флаг, и команда завершалась ошибкой `unknown option`.

3575 

3576### Remote Control did not start because of the `--settings` file

3577 

3578С файлом, переданным в [`claude remote-control --settings`](https://code.claude.com/docs/ru/remote-control#start-a-remote-control-session), есть проблема:

3579 

3580```text theme={null}

3581Error: Remote Control did not start, because sessions would skip part or all of the --settings file ./rc-settings.json: Invalid or malformed JSON

3582```

3583 

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

3585 

3586* Исправьте проблему, названную в сообщении, затем снова выполните команду `claude remote-control`

3587 

3588### The settings file has changed since Remote Control started

3589 

3590Это сообщение в терминале, где запущен `claude remote-control`, означает, что сессии не будут запускаться из файла, переданного в [`--settings`](https://code.claude.com/docs/ru/remote-control#start-a-remote-control-session), в его текущем виде:

3591 

3592```text theme={null}

3593Session failed: Error: The settings file /path/to/settings.json has changed since Remote Control started, so this session did not start. Restart `claude remote-control` to use it as it is now.

3594```

3595 

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

3597 

3598* Чтобы использовать файл в его текущем виде, остановите `claude remote-control` и снова выполните ту же команду. Чтобы вернуть сессии, которые он обслуживал, см. [Возобновление сессий после остановки сервера](https://code.claude.com/docs/ru/remote-control.md#resume-sessions-after-stopping-the-server).

3599* Чтобы сохранить настройки, с которыми был запущен Remote Control, верните содержимое файла в прежнее состояние, затем снова выполните команду, если `claude remote-control` завершился

3538 3600 

3539### `--sandbox` or `--no-sandbox` is not supported by claude remote-control3601### `--sandbox` or `--no-sandbox` is not supported by claude remote-control

3540 3602 


3547 3609 

3548**Что делать:**3610**Что делать:**

3549 3611 

3550* Уберите флаг из команды, в том числе из скрипта или определения сервиса, которые запускают сервер за вас, затем выполните её снова3612* Уберите флаг из команды, в том числе в скрипте или определении сервиса, которые запускают сервер за вас, затем выполните её снова

3551* Чтобы изолировать в песочнице сессии, запускаемые сервером, включите [изоляцию в песочнице](https://code.claude.com/docs/ru/sandboxing.md), задав [`sandbox.enabled`](https://code.claude.com/docs/ru/settings-reference#sandbox-enabled) значение `true` в [файле настроек](https://code.claude.com/docs/ru/settings.md#where-settings-live)3613* Чтобы изолировать в песочнице сессии, которые запускает сервер, включите [изоляцию в песочнице](https://code.claude.com/docs/ru/sandboxing.md), задав [`sandbox.enabled`](https://code.claude.com/docs/ru/settings-reference#sandbox-enabled) значение `true` в [файле настроек](https://code.claude.com/docs/ru/settings.md#where-settings-live)

3552 3614 

3553Оба флага были удалены из `claude remote-control` в v2.1.300, поэтому команда, написанная для более ранней версии, всё ещё может содержать один из них.3615Оба флага были удалены из `claude remote-control` в v2.1.300, поэтому команда, написанная для более ранней версии, может всё ещё содержать один из них.

3554 3616 

3555### claude import ещё недоступен в этой сборке3617### claude import is not yet available in this build

3556 3618 

3557Вы выполнили [`claude import`](https://code.claude.com/docs/ru/cli-reference#cli-commands), и Claude Code обнаружил, что процесс импорта выключен, поэтому команда завершается с кодом выхода 1 вместо запуска импорта. До v2.1.222 сборка с выключенным процессом импорта воспринимала `import` как промпт и запускала интерактивную сессию вместо вывода этого сообщения.3619Вы выполнили [`claude import`](https://code.claude.com/docs/ru/cli-reference#cli-commands), и Claude Code обнаружил, что процесс импорта отключён, поэтому команда завершается с кодом выхода 1 вместо запуска импорта. До v2.1.222 сборка с отключённым процессом импорта воспринимала `import` как промпт и запускала интерактивную сессию вместо вывода этого сообщения.

3558 3620 

3559```text theme={null}3621```text theme={null}

3560`claude import` is not yet available in this build. Run `claude` and use /mcp or edit ~/.claude/settings.json directly.3622`claude import` is not yet available in this build. Run `claude` and use /mcp or edit ~/.claude/settings.json directly.

3561```3623```

3562 3624 

3563Claude Code включает `claude import` через флаг функции, который он получает от Anthropic и кэширует на диске. Это сообщение означает, что кэшированное значение выключено. Обычно причина одна из следующих:3625Claude Code включает `claude import` с помощью флага функции, который он получает от Anthropic и кэширует на диске. Это сообщение означает, что кэшированное значение отключено. Обычно причина в одном из следующего:

3564 3626 

3565* Вы ещё не запускали сессию после установки, поэтому Claude Code ещё не получил флаг. Первый `claude import` может вывести это сообщение, даже если функция вам доступна.3627* Вы ещё не запускали сессию после установки, поэтому Claude Code ещё не получил флаг. Первый `claude import` может вывести это сообщение, даже если функция вам доступна.

3566* Вы используете Claude Code через Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry или Claude Platform on AWS либо через [шлюз приложений Claude](https://code.claude.com/docs/ru/claude-apps-gateway#availability-and-limitations). В этих сессиях Claude Code не получает флаги функций, поэтому `claude import` остаётся недоступным.3628* Вы используете Claude Code через Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry или Claude Platform on AWS либо через [шлюз Claude apps](https://code.claude.com/docs/ru/claude-apps-gateway#availability-and-limitations). В таких сессиях Claude Code не получает флаги функций, поэтому `claude import` остаётся недоступным.

3567* Вы задали `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, [`CLAUDE_CODE_DISABLE_FEATURE_FLAGS`](https://code.claude.com/docs/ru/env-vars#variables), `DISABLE_GROWTHBOOK` или [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/ru/env-vars), которые отключают получение флагов функций, поэтому `claude import` остаётся недоступным.3629* Вы задали `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, [`CLAUDE_CODE_DISABLE_FEATURE_FLAGS`](https://code.claude.com/docs/ru/env-vars#variables), `DISABLE_GROWTHBOOK` или [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/ru/env-vars), которые отключают получение флагов функций, поэтому `claude import` остаётся недоступным.

3568 3630 

3569**Что делать:**3631**Что делать:**

3570 3632 

3571* В новой установке запустите `claude`, дождитесь загрузки сессии, выйдите и снова выполните `claude import`3633* На новой установке запустите `claude`, дождитесь загрузки сессии, выйдите и снова выполните `claude import`

3572* Если получение флагов функций остаётся отключённым, настройте конфигурацию самостоятельно: добавьте MCP-серверы с помощью [`claude mcp add`](https://code.claude.com/docs/ru/mcp#installing-mcp-servers) и создайте [файлы `CLAUDE.md`](https://code.claude.com/docs/ru/memory#how-claude-md-files-load), [скиллы и команды](https://code.claude.com/docs/ru/skills.md#where-skills-live) и [субагентов](https://code.claude.com/docs/ru/sub-agents.md#choose-the-subagent-scope), которых хотите перенести. В сообщении также упоминается `~/.claude/settings.json`. Из конфигурации, которую переносит `claude import`, этот файл содержит только [режим разрешений](https://code.claude.com/docs/ru/settings-reference.md#permission-settings); Claude Code не читает из него MCP-серверы.3634* Если получение флагов функций остаётся отключённым, настройте конфигурацию самостоятельно: добавьте MCP-серверы с помощью [`claude mcp add`](https://code.claude.com/docs/ru/mcp#installing-mcp-servers) и создайте [файлы `CLAUDE.md`](https://code.claude.com/docs/ru/memory#how-claude-md-files-load), [скиллы и команды](https://code.claude.com/docs/ru/skills.md#where-skills-live), а также [субагентов](https://code.claude.com/docs/ru/sub-agents.md#choose-the-subagent-scope), которых хотите перенести. Сообщение также упоминает `~/.claude/settings.json`. Из конфигурации, которую переносит `claude import`, этот файл содержит только [режим разрешений](https://code.claude.com/docs/ru/settings-reference.md#permission-settings); MCP-серверы Claude Code из него не читает.

3573 3635 

3574### Не удалось прочитать конфигурацию Claude Code3636### Could not read Claude Code config

3575 3637 

3576Вы выполнили [`claude import`](https://code.claude.com/docs/ru/cli-reference#cli-commands), когда Claude Code не смог разобрать `~/.claude.json` — файл, в котором он хранит данные вашей учётной записи и состояние отдельных проектов. Подкоманда читает этот файл для проверки доступности, но не показывает диалог восстановления, который показывает интерактивная сессия, поэтому завершается с кодом выхода 1. До v2.1.222 `claude import` с нечитаемым файлом конфигурации запускал интерактивную сессию, диалог восстановления которой обрабатывал файл.3638Вы выполнили [`claude import`](https://code.claude.com/docs/ru/cli-reference#cli-commands), когда Claude Code не смог разобрать `~/.claude.json` — файл, в котором он хранит данные вашей учётной записи и состояние отдельных проектов. Подкоманда читает этот файл, чтобы проверить доступность, но не показывает диалоговое окно восстановления, которое показывает интерактивная сессия, поэтому завершается с кодом выхода 1. До v2.1.222 `claude import` с нечитаемым файлом конфигурации запускал интерактивную сессию, диалоговое окно восстановления которой обрабатывало файл.

3577 3639 

3578```text theme={null}3640```text theme={null}

3579Could not read Claude Code config — run `claude` with no arguments to recover it.3641Could not read Claude Code config — run `claude` with no arguments to recover it.


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

3583 3645 

3584* Выполните `claude` без аргументов. Claude Code обнаружит недопустимый файл и предложит сбросить его. Затем снова выполните `claude import`.3646* Выполните `claude` без аргументов. Claude Code обнаружит недопустимый файл и предложит сбросить его. Затем снова выполните `claude import`.

3585* Чтобы сохранить внесённые вручную изменения, вместо этого исправьте синтаксис JSON в `~/.claude.json` в редакторе, затем снова выполните `claude import`3647* Чтобы сохранить сделанные вами правки вручную, вместо этого исправьте синтаксис JSON в `~/.claude.json` в редакторе, затем снова выполните `claude import`

3586 3648 

3587### Не удалось импортировать сервер из Claude Desktop3649### Could not import a server from Claude Desktop

3588 3650 

3589Claude Code не смог добавить один из серверов, выбранных в `claude mcp add-from-claude-desktop`. Команда всё равно импортирует остальные выбранные серверы и выводит по одной строке на каждый сервер, который не удалось добавить. До v2.1.205 первый сервер с ошибкой останавливал импорт.3651Claude Code не смог добавить один из серверов, выбранных в `claude mcp add-from-claude-desktop`. Команда всё равно импортирует остальные выбранные серверы и выводит по одной строке для каждого сервера, который не удалось добавить. До v2.1.205 первый сервер, который не удалось добавить, останавливал импорт.

3590 3652 

3591```text theme={null}3653```text theme={null}

3592Could not import my server: Invalid name my server. Names can only contain letters, numbers, hyphens, and underscores.3654Could not import my server: Invalid name my server. Names can only contain letters, numbers, hyphens, and underscores.

3593```3655```

3594 3656 

3595Текст после имени сервера — это причина. Самая распространённая — проверка имени: Claude Desktop допускает в именах серверов символы, например пробелы и точки, тогда как `claude mcp` ограничивает их буквами, цифрами, дефисами и подчёркиваниями. Другие причины — конфигурация сервера, не прошедшая проверку, и сервер, заблокированный [политикой MCP](https://code.claude.com/docs/ru/managed-mcp.md) вашей организации.3657Текст после имени сервера — это причина. Наиболее частая — проверка имени: Claude Desktop допускает в именах серверов символы, например пробелы и точки, а `claude mcp` ограничивает их буквами, цифрами, дефисами и подчёркиваниями. Другие причины — конфигурация сервера, не прошедшая проверку, и сервер, заблокированный [политикой MCP](https://code.claude.com/docs/ru/managed-mcp.md) вашей организации.

3596 3658 

3597**Что делать:**3659**Что делать:**

3598 3660 

3599* Переименуйте сервер в `claude_desktop_config.json`, используя только буквы, цифры, дефисы и подчёркивания, затем снова выполните `claude mcp add-from-claude-desktop`3661* Переименуйте сервер в `claude_desktop_config.json`, используя только буквы, цифры, дефисы и подчёркивания, затем снова выполните `claude mcp add-from-claude-desktop`

3600* Добавьте этот сервер напрямую с помощью `claude mcp add` или `claude mcp add-json` под допустимым именем. См. [Импорт MCP-серверов из Claude Desktop](https://code.claude.com/docs/ru/mcp.md#import-mcp-servers-from-claude-desktop).3662* Добавьте этот сервер напрямую с помощью `claude mcp add` или `claude mcp add-json` под допустимым именем. См. [Импорт MCP-серверов из Claude Desktop](https://code.claude.com/docs/ru/mcp.md#import-mcp-servers-from-claude-desktop).

3601 3663 

3602### Не удаётся добавить MCP-сервер в управляемую область действия3664### Cannot add MCP server to the managed scope

3603 3665 

3604Вы выполнили `claude mcp add` или `claude mcp add-json` с `--scope managed`. Эта область действия содержит серверы, которые ваша организация предоставляет через управляемую настройку [`managedMcpServers`](https://code.claude.com/docs/ru/settings-reference#managedmcpservers). Claude Code читает их только из управляемых настроек, поэтому команда не может записать сервер в эту область действия.3666Вы выполнили `claude mcp add` или `claude mcp add-json` с `--scope managed`. Эта область действия содержит серверы, которые ваша организация предоставляет через управляемую настройку [`managedMcpServers`](https://code.claude.com/docs/ru/settings-reference#managedmcpservers). Claude Code читает их только из управляемых настроек, поэтому команда не может записать сервер в эту область действия.

3605 3667 


3610**Что делать:**3672**Что делать:**

3611 3673 

3612* Добавьте сервер в область действия, доступную для записи: `local`, `user` или `project`. Без `--scope` команда использует `local`. См. [Области действия установки MCP](https://code.claude.com/docs/ru/mcp.md#mcp-installation-scopes)3674* Добавьте сервер в область действия, доступную для записи: `local`, `user` или `project`. Без `--scope` команда использует `local`. См. [Области действия установки MCP](https://code.claude.com/docs/ru/mcp.md#mcp-installation-scopes)

3613* Чтобы предоставить сервер каждому пользователю в организации, добавьте его в [`managedMcpServers`](https://code.claude.com/docs/ru/settings-reference#managedmcpservers) в развёртываемых вами управляемых настройках3675* Чтобы предоставить сервер каждому пользователю вашей организации, добавьте его в [`managedMcpServers`](https://code.claude.com/docs/ru/settings-reference#managedmcpservers) в развёртываемых вами управляемых настройках

3614 3676 

3615### Не удаётся добавить MCP-сервер, когда управляемые настройки разрешают только серверы из плагинов3677### Cannot add MCP server when managed settings allow only plugin servers

3616 3678 

3617Вы выполнили `claude mcp add` или `claude mcp add-json`, когда управляемые настройки вашей организации задают для [`strictPluginOnlyCustomization`](https://code.claude.com/docs/ru/settings-reference#strictpluginonlycustomization) значение `true` или список, включающий `mcp`. С этой настройкой Claude Code не загружает MCP-серверы из `~/.claude.json` или `.mcp.json`, поэтому команда завершается с кодом выхода 1 вместо сохранения сервера, который никогда не загрузится:3679Вы выполнили `claude mcp add` или `claude mcp add-json`, когда управляемые настройки вашей организации задают для [`strictPluginOnlyCustomization`](https://code.claude.com/docs/ru/settings-reference#strictpluginonlycustomization) значение `true` или список, включающий `mcp`. С этой настройкой Claude Code не загружает MCP-серверы из `~/.claude.json` или `.mcp.json`, поэтому команда завершается с кодом выхода 1 вместо сохранения сервера, который никогда бы не загрузился:

3618 3680 

3619```text theme={null}3681```text theme={null}

3620Cannot add MCP server: your organization's managed settings allow only MCP servers that plugins provide. Install a plugin that provides this server, or ask your administrator to make it available.3682Cannot add MCP server: your organization's managed settings allow only MCP servers that plugins provide. Install a plugin that provides this server, or ask your administrator to make it available.


3622 3684 

3623`claude mcp add-from-claude-desktop` сообщает о каждом выбранном сервере как о неимпортированном, указывая это сообщение в качестве причины. [`/import`](https://code.claude.com/docs/ru/commands#all-commands) выводит это сообщение для каждого MCP-сервера, который пытается добавить, и всё равно импортирует остальные найденные элементы.3685`claude mcp add-from-claude-desktop` сообщает о каждом выбранном сервере как о неимпортированном, указывая это сообщение в качестве причины. [`/import`](https://code.claude.com/docs/ru/commands#all-commands) выводит это сообщение для каждого MCP-сервера, который пытается добавить, и всё равно импортирует остальные найденные элементы.

3624 3686 

3625До v2.1.284 эти команды сохраняли сервер и сообщали об успехе, но сервер никогда не загружался.3687До v2.1.284 эти команды сохраняли сервер и сообщали об успехе, а сервер так и не загружался.

3626 3688 

3627**Что делать:**3689**Что делать:**

3628 3690 

3629* Установите [плагин](https://code.claude.com/docs/ru/plugins/install.md), который предоставляет этот сервер3691* Установите [плагин](https://code.claude.com/docs/ru/plugins/install.md), который предоставляет этот сервер

3630* Попросите администратора распространить сервер в [плагине](https://code.claude.com/docs/ru/plugins/org.md) или предоставить его через [`managedMcpServers`](https://code.claude.com/docs/ru/settings-reference#managedmcpservers), если это удалённый сервер HTTP или SSE3692* Попросите администратора распространить сервер в [плагине](https://code.claude.com/docs/ru/plugins/org.md) или предоставить его через [`managedMcpServers`](https://code.claude.com/docs/ru/settings-reference#managedmcpservers), если это удалённый сервер HTTP или SSE

3631 3693 

3632### Не удаётся прочитать .mcp.json3694### Can't read .mcp.json

3633 3695 

3634Команда, читающая файл проекта [`.mcp.json`](https://code.claude.com/docs/ru/mcp#project-scope), например `claude mcp add` или `claude mcp add-json` с `--scope project` либо `claude mcp remove`, обнаружила, что файл в текущем каталоге не является обычным файлом или больше 2 MiB, поэтому завершается с этой ошибкой вместо чтения файла.3696Команда, которая читает [`.mcp.json`](https://code.claude.com/docs/ru/mcp#project-scope) проекта, например `claude mcp add` или `claude mcp add-json` с `--scope project` либо `claude mcp remove`, обнаружила, что этот файл в текущем каталоге не является обычным файлом или больше 2 MiB, поэтому завершается с этой ошибкой вместо чтения файла.

3635 3697 

3636```text theme={null}3698```text theme={null}

3637Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes. Fix or remove it, then run the command again.3699Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes. Fix or remove it, then run the command again.

3638```3700```

3639 3701 

3640До v2.1.257 FIFO на месте `.mcp.json` заставлял команду бесконечно ждать без вывода, а символическая ссылка на файл устройства, например `/dev/zero`, увеличивала потребление памяти, пока процесс не завершался принудительно.3702До v2.1.257 FIFO по пути `.mcp.json` заставлял команду бесконечно ждать без вывода, а символическая ссылка на файл устройства, например `/dev/zero`, увеличивала потребление памяти, пока процесс не завершался принудительно.

3641 3703 

3642**Что делать:**3704**Что делать:**

3643 3705 

3644* Проверьте, что находится по пути `.mcp.json` в текущем каталоге. Замените это обычным файлом JSON в [формате области действия проекта](https://code.claude.com/docs/ru/mcp.md#project-scope) или удалите, затем снова выполните команду.3706* Проверьте, что находится по пути `.mcp.json` в текущем каталоге. Замените это обычным JSON-файлом в [формате области действия проекта](https://code.claude.com/docs/ru/mcp.md#project-scope) или удалите, затем снова выполните команду.

3645 3707 

3646### MCP-сервер не был сохранён или удалён3708### MCP server was not saved or removed

3647 3709 

3648Эта ошибка означает, что команда вроде `claude mcp add` или `claude mcp remove` не смогла внести ваше изменение в `~/.claude.json`. Возможно, другие процессы Claude Code удерживали блокировку файла, или файл доступен только для чтения либо защищён песочницей.3710Эта ошибка означает, что команда, например `claude mcp add` или `claude mcp remove`, не смогла внести ваше изменение в `~/.claude.json`. Возможно, другие процессы Claude Code удерживали блокировку файла или файл доступен только для чтения либо защищён песочницей.

3649 3711 

3650```text theme={null}3712```text theme={null}

3651MCP server "example" was not saved to /home/user/.claude.json. If other Claude Code processes use that file, they may have kept it locked: add the server again, with CLAUDE_CODE_CONFIG_LOCK_WAIT_MS=60000 set to wait up to a minute. If that file is read-only or protected by a sandbox, make it writable or run the command outside the sandbox first.3713MCP server "example" was not saved to /home/user/.claude.json. If other Claude Code processes use that file, they may have kept it locked: add the server again, with CLAUDE_CODE_CONFIG_LOCK_WAIT_MS=60000 set to wait up to a minute. If that file is read-only or protected by a sandbox, make it writable or run the command outside the sandbox first.


3655 3717 

3656**Что делать:**3718**Что делать:**

3657 3719 

3658* **Запущены другие процессы Claude Code**: команда ждёт блокировку файла примерно от 10 до 20 секунд, затем сдаётся, ничего не записав. Снова выполните ту же команду, задав в [`CLAUDE_CODE_CONFIG_LOCK_WAIT_MS`](https://code.claude.com/docs/ru/env-vars#variables) более долгое ожидание в миллисекундах, например `60000`.3720* **Запущены другие процессы Claude Code**: команда ждёт блокировку файла примерно 10–20 секунд, а затем прекращает попытки, ничего не записав. Снова выполните ту же команду, задав в [`CLAUDE_CODE_CONFIG_LOCK_WAIT_MS`](https://code.claude.com/docs/ru/env-vars#variables) более долгое ожидание в миллисекундах, например `60000`.

3659* **Файл доступен только для чтения или защищён песочницей**: сделайте указанный в сообщении файл доступным для записи и снова выполните ту же команду добавления или удаления либо выполните эту команду вне песочницы.3721* **Файл доступен только для чтения или защищён песочницей**: сделайте названный в сообщении файл доступным для записи и снова выполните ту же команду добавления или удаления либо выполните эту команду вне песочницы.

3660 3722 

3661До v2.1.283 `claude mcp add`, `claude mcp add-json` и `claude mcp remove` сообщали об успехе, даже если изменение не попало в файл. До v2.1.318 сообщение не упоминало блокировку, а Claude Code не читал [`CLAUDE_CODE_CONFIG_LOCK_WAIT_MS`](https://code.claude.com/docs/ru/env-vars#variables).3723До v2.1.283 `claude mcp add`, `claude mcp add-json` и `claude mcp remove` сообщали об успехе, даже если изменение не попадало в файл. До v2.1.318 сообщение не упоминало блокировку, а Claude Code не читал [`CLAUDE_CODE_CONFIG_LOCK_WAIT_MS`](https://code.claude.com/docs/ru/env-vars#variables).

3662 3724 

3663### MCP-сервер, возможно, не был сохранён или удалён3725### MCP server may not have been saved or removed

3664 3726 

3665Вы выполнили `claude mcp add`, `claude mcp add-json` или `claude mcp remove` для сервера с [областью действия](https://code.claude.com/docs/ru/mcp.md#mcp-installation-scopes) `user` или `local`, и Claude Code не смог прочитать `~/.claude.json` обратно, чтобы подтвердить изменение. Изменение может как оказаться на диске, так и нет. В скобках после `to confirm the change` указана причина.3727Вы выполнили `claude mcp add`, `claude mcp add-json` или `claude mcp remove` для сервера в [области действия](https://code.claude.com/docs/ru/mcp.md#mcp-installation-scopes) `user` или `local`, и Claude Code не смог снова прочитать `~/.claude.json`, чтобы подтвердить изменение. Изменение может быть как записано на диск, так и нет. Причина указана в скобках после `to confirm the change`.

3666 3728 

3667```text theme={null}3729```text theme={null}

3668MCP server "example" may not have been saved: /home/user/.claude.json could not be read to confirm the change (EACCES: permission denied, open '/home/user/.claude.json'). Run `claude mcp get example` to check, then add the server again if it is missing.3730MCP server "example" may not have been saved: /home/user/.claude.json could not be read to confirm the change (EACCES: permission denied, open '/home/user/.claude.json'). Run `claude mcp get example` to check, then add the server again if it is missing.

3669```3731```

3670 3732 

3671После удаления сообщение содержит `may not have been removed` и заканчивается на `then remove the server again if it is still listed`. Если причина — `the file was not found`, сервер может всё ещё быть сконфигурирован.3733После удаления сообщение содержит `may not have been removed` и заканчивается на `then remove the server again if it is still listed`. Если причина — `the file was not found`, сервер может по-прежнему быть сконфигурирован.

3672 3734 

3673До v2.1.283 эти команды сообщали об успехе, даже если изменение не удавалось подтвердить.3735До v2.1.283 команды сообщали об успехе, даже если изменение не удавалось подтвердить.

3674 3736 

3675**Что делать:**3737**Что делать:**

3676 3738 

3677* Выполните `claude mcp get <name>`, чтобы проверить, есть ли изменение на диске. Для сервера в области действия `local` выполните её из каталога проекта, к которому относится сервер, поскольку локальная область действия задаётся для каждого проекта.3739* Выполните `claude mcp get <name>`, чтобы проверить, записано ли изменение на диск. Для сервера с областью действия `local` выполняйте эту команду из каталога проекта, к которому относится сервер, поскольку локальная область действия задаётся для каждого проекта отдельно.

3678* Если после добавления сервер отсутствует или после удаления всё ещё в списке, снова выполните ту же команду добавления или удаления.3740* Если сервер отсутствует после добавления или всё ещё присутствует в списке после удаления, снова выполните ту же команду добавления или удаления.

3679 3741 

3680### Сервер размещён Anthropic и не поддерживает локальный OAuth3742### Server is Anthropic-hosted and doesn't support local OAuth

3681 3743 

3682Вы начали вход для MCP-сервера, URL которого указывает на размещённый Anthropic хост коннектора, выполняющий аутентификацию через сторонний поставщик удостоверений. К таким хостам относятся `microsoft365.mcp.claude.com`, `gmail.mcp.claude.com` и `gcal.mcp.claude.com`. Claude Code отказывается запускать свой локальный процесс OAuth для этих хостов как из панели `/mcp`, так и из `claude mcp login`, потому что [вход для них работает только через claude.ai](https://code.claude.com/docs/ru/mcp.md#use-mcp-servers-from-claude-ai).3744Вы начали вход для MCP-сервера, URL которого указывает на размещённый Anthropic хост коннектора, выполняющий аутентификацию через сторонний поставщик удостоверений. К таким хостам относятся `microsoft365.mcp.claude.com`, `gmail.mcp.claude.com` и `gcal.mcp.claude.com`. Claude Code отказывается запускать свой локальный процесс OAuth для этих хостов как из панели `/mcp`, так и из `claude mcp login`, потому что [вход для них работает только через claude.ai](https://code.claude.com/docs/ru/mcp.md#use-mcp-servers-from-claude-ai).

3683 3745 


3688**Что делать:**3750**Что делать:**

3689 3751 

3690* Удалите свою запись с помощью `claude mcp remove <name>`, чтобы она не скрывала коннектор claude.ai с тем же URL3752* Удалите свою запись с помощью `claude mcp remove <name>`, чтобы она не скрывала коннектор claude.ai с тем же URL

3691* После удаления подключите сервис на [claude.ai/customize/connectors](https://claude.ai/customize/connectors), войдя в учётную запись, которую используете в Claude Code. После подключения [коннектор автоматически появится в Claude Code](https://code.claude.com/docs/ru/mcp.md#use-mcp-servers-from-claude-ai), если ваш активный способ аутентификации — вход по подписке claude.ai3753* После удаления подключите сервис на [claude.ai/customize/connectors](https://claude.ai/customize/connectors), войдя в ту учётную запись, которую используете в Claude Code. После подключения [коннектор автоматически появится в Claude Code](https://code.claude.com/docs/ru/mcp.md#use-mcp-servers-from-claude-ai), если ваш активный способ аутентификации — вход по подписке claude.ai

3692 3754 

3693### Сервер отклонил заголовок Authorization, созданный настроенным headersHelper3755### Server rejected the Authorization header minted by the configured headersHelper

3694 3756 

3695MCP-сервер, у которого [`headersHelper`](https://code.claude.com/docs/ru/mcp#use-dynamic-headers-for-custom-authentication) предоставляет заголовок `Authorization`, ответил на подключение HTTP 401 или 403, поэтому Claude Code сообщает о неудачном подключении. Поскольку заголовок `Authorization` предоставляет helper, Claude Code [не переключается на OAuth](https://code.claude.com/docs/ru/mcp.md#authenticate-with-remote-mcp-servers) для этого сервера:3757MCP-сервер, для которого [`headersHelper`](https://code.claude.com/docs/ru/mcp#use-dynamic-headers-for-custom-authentication) предоставляет заголовок `Authorization`, ответил на подключение HTTP 401 или 403, поэтому Claude Code сообщает, что подключение не удалось. Поскольку helper предоставляет заголовок `Authorization`, Claude Code [не переключается на OAuth](https://code.claude.com/docs/ru/mcp.md#authenticate-with-remote-mcp-servers) для этого сервера:

3696 3758 

3697```text theme={null}3759```text theme={null}

3698Server rejected the Authorization header minted by the configured headersHelper (HTTP 401). Check that the helper command returns a valid credential for this MCP endpoint — OAuth fallback is disabled when the helper supplies Authorization.3760Server rejected the Authorization header minted by the configured headersHelper (HTTP 401). Check that the helper command returns a valid credential for this MCP endpoint — OAuth fallback is disabled when the helper supplies Authorization.

3699```3761```

3700 3762 

3701Claude Code заново запускает helper при каждой попытке подключения, поэтому повторная попытка после временного отказа, например из-за гонки при ротации токена, может завершиться успешно с новыми учётными данными.3763Claude Code повторно запускает helper при каждой попытке подключения, поэтому повторная попытка после временного отказа, например из-за гонки при ротации токена, может завершиться успешно со свежими учётными данными.

3702 3764 

3703**Что делать:**3765**Что делать:**

3704 3766 

3705* Запустите команду `headersHelper` самостоятельно так, как её запускает Claude Code: из [каталога, в котором её запускает Claude Code](https://code.claude.com/docs/ru/mcp.md#where-the-helper-runs), с [переменными окружения, которые Claude Code для неё задаёт](https://code.claude.com/docs/ru/mcp.md#use-dynamic-headers-for-custom-authentication), и без [переменных с учётными данными, которые Claude Code удаляет](https://code.claude.com/docs/ru/mcp.md#which-variables-a-helper-can-read) для сервера из проектного `.mcp.json`, плагина или файла агента проекта. Убедитесь, что она выводит значение `Authorization`, которое принимает эндпоинт сервера3767* Запустите команду `headersHelper` самостоятельно так же, как её запускает Claude Code: из [каталога, в котором её запускает Claude Code](https://code.claude.com/docs/ru/mcp.md#where-the-helper-runs), с [переменными окружения, которые Claude Code задаёт для неё](https://code.claude.com/docs/ru/mcp.md#use-dynamic-headers-for-custom-authentication), и без [переменных с учётными данными, которые Claude Code удаляет](https://code.claude.com/docs/ru/mcp.md#which-variables-a-helper-can-read) для сервера из `.mcp.json` проекта, плагина или файла агента проекта. Проверьте, что она выводит значение `Authorization`, которое принимает эндпоинт сервера

3706* После исправления helper или источника его учётных данных выберите сервер в `/mcp` и нажмите **Reconnect**3768* После исправления helper или источника его учётных данных выберите сервер в `/mcp` и выберите **Reconnect**

3707 3769 

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

3709 3771 

3710### MCP-сервер отклонил возможность elicitation3772### MCP server rejected the elicitation capability

3711 3773 

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

3713 3775 

3714```text theme={null}3776```text theme={null}

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


3717 3779 

3718**Что делать:**3780**Что делать:**

3719 3781 

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

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

3722 3784 

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

3724 3786 


3734}3796}

3735```3797```

3736 3798 

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

3738 3800 

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

3740 3802 

3741### Инструмент запроса разрешений MCP не найден3803### MCP permission prompt tool not found

3742 3804 

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

3744 3806 

3745```text theme={null}3807```text theme={null}

3746Error: MCP tool mcp__permissions__approve (passed via --permission-prompt-tool) not found. Available MCP tools: none3808Error: MCP tool mcp__permissions__approve (passed via --permission-prompt-tool) not found. Available MCP tools: none

3747```3809```

3748 3810 

3749Список после `Available MCP tools:` называет подключённые инструменты MCP.3811Список после `Available MCP tools:` называет MCP-инструменты, которые были подключены.

3750 3812 

3751**Что делать:**3813**Что делать:**

3752 3814 

3753* Убедитесь, что сервер запускается и остаётся подключённым: выполните `claude mcp list` в том же каталоге и проверьте, что сервер отмечен как подключённый3815* Проверьте, что сервер запускается и остаётся подключённым: выполните `claude mcp list` в том же каталоге и убедитесь, что сервер указан как подключённый

3754* Убедитесь, что имя инструмента совпадает с именем `mcp__<server>__<tool>`, которое предоставляет сервер3816* Убедитесь, что имя инструмента совпадает с именем `mcp__<server>__<tool>`, которое предоставляет сервер

3755* Если серверу нужно больше 30 секунд для запуска, увеличьте [`MCP_TIMEOUT`](https://code.claude.com/docs/ru/env-vars)3817* Если серверу нужно больше 30 секунд для запуска, увеличьте [`MCP_TIMEOUT`](https://code.claude.com/docs/ru/env-vars)

3756 3818 

3757### Порт обратного вызова OAuth уже используется3819### OAuth callback port is already in use

3758 3820 

3759Когда вы входите на удалённый MCP-сервер через OAuth, Claude Code запускает локальный прослушиватель для получения обратного вызова входа. Если нужный этому прослушивателю порт занят другим процессом, вход завершается с этим сообщением. Чаще всего это происходит с [фиксированным портом обратного вызова](https://code.claude.com/docs/ru/mcp.md#use-a-fixed-oauth-callback-port), заданным через переменную [`MCP_OAUTH_CALLBACK_PORT`](https://code.claude.com/docs/ru/env-vars) или `--callback-port`, поскольку без него Claude Code выбирает свободный порт.3821Когда вы входите на удалённый MCP-сервер через OAuth, Claude Code запускает локальный обработчик для получения обратного вызова входа. Если порт, нужный этому обработчику, занят другим процессом, вход завершается ошибкой с этим сообщением. Чаще всего это происходит с [фиксированным портом обратного вызова](https://code.claude.com/docs/ru/mcp.md#use-a-fixed-oauth-callback-port), заданным через переменную [`MCP_OAUTH_CALLBACK_PORT`](https://code.claude.com/docs/ru/env-vars) или `--callback-port`, поскольку без него Claude Code выбирает свободный порт.

3760 3822 

3761```text theme={null}3823```text theme={null}

3762OAuth callback port <port> is already in use — another process may be holding it. Run `lsof -ti:<port> -sTCP:LISTEN` to find it.3824OAuth callback port <port> is already in use — another process may be holding it. Run `lsof -ti:<port> -sTCP:LISTEN` to find it.


3767**Что делать:**3829**Что делать:**

3768 3830 

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

3770* Если другой программе этот порт нужен постоянно, зарегистрируйте на сервере другой redirect URI и задайте его порт через `MCP_OAUTH_CALLBACK_PORT` или `--callback-port` — в зависимости от того, что вы используете3832* Если другой программе этот порт нужен постоянно, зарегистрируйте на сервере другой URI перенаправления и задайте его порт с помощью `MCP_OAUTH_CALLBACK_PORT` или `--callback-port` — в зависимости от того, что вы используете

3771* Затем снова начните вход, например выбрав сервер в `/mcp`3833* Затем снова начните вход, например выбрав сервер в `/mcp`

3772 3834 

3773### Нет свободных портов для перенаправления OAuth3835### No available ports for OAuth redirect

3774 3836 

3775Когда вы входите на удалённый MCP-сервер через [OAuth](https://code.claude.com/docs/ru/mcp.md#authenticate-with-remote-mcp-servers), Claude Code запускает локальный прослушиватель для получения обратного вызова входа. Вход завершается с этим сообщением, когда Claude Code не может привязать для него локальный порт. Что-то на компьютере мешает ему прослушивать `127.0.0.1`, например программы безопасности или политика песочницы, запрещающая локальные прослушиватели.3837Когда вы входите на удалённый MCP-сервер через [OAuth](https://code.claude.com/docs/ru/mcp.md#authenticate-with-remote-mcp-servers), Claude Code запускает локальный обработчик для получения обратного вызова входа. Вход завершается ошибкой с этим сообщением, если Claude Code не может занять для него локальный порт. Что-то на компьютере мешает ему прослушивать `127.0.0.1`, например защитное ПО или политика песочницы, запрещающая локальные обработчики.

3776 3838 

3777```text theme={null}3839```text theme={null}

3778No available ports for OAuth redirect3840No available ports for OAuth redirect

3779```3841```

3780 3842 

3781До v2.1.268 Claude Code не переключался на порт, назначаемый операционной системой, поэтому сообщение появлялось и тогда, когда не удавалось привязать только порты, выбранные им самим. Такое может происходить на хостах Windows, где Hyper-V резервирует диапазоны портов, охватывающие порты, из которых выбирает Claude Code.3843До v2.1.268 Claude Code не переключался на порт, назначенный операционной системой, поэтому сообщение также появлялось, когда не удавалось занять только самостоятельно выбранные им порты. Так могло происходить на хостах Windows, где Hyper-V резервирует диапазоны портов, покрывающие порты, из которых выбирает Claude Code.

3782 3844 

3783**Что делать:**3845**Что делать:**

3784 3846 

3785* Проверьте, не запрещают ли программы безопасности или политика песочницы процессам прослушивать `127.0.0.1`, и разрешите Claude Code привязывать локальный порт3847* Проверьте, не блокирует ли защитное ПО или политика песочницы прослушивание `127.0.0.1` процессами, и разрешите Claude Code занимать локальный порт

3786* Затем снова начните вход, например выбрав сервер в `/mcp`3848* Затем снова начните вход, например выбрав сервер в `/mcp`

3787 3849 

3788### /security-review завершается с ошибкой без origin/HEAD3850### /security-review завершается ошибкой без origin/HEAD

3789 3851 

3790[`/security-review`](https://code.claude.com/docs/ru/commands#all-commands) формирует контекст ревью, сравнивая вашу ветку с `origin/HEAD` — локальной ссылкой, которая указывает, какая ветка является веткой по умолчанию на вашем удалённом репозитории `origin`. Если этой ссылки нет, команды git, собирающие diff, завершаются с ошибкой, и ревью останавливается, не начавшись.3852[`/security-review`](https://code.claude.com/docs/ru/commands#all-commands) формирует контекст ревью, вычисляя diff вашей ветки относительно `origin/HEAD` — локальной ссылки, которая фиксирует, какая ветка является веткой по умолчанию на вашем удалённом репозитории `origin`. Если этой ссылки нет, команды git, собирающие diff, завершаются ошибкой, и ревью останавливается, не начавшись.

3791 3853 

3792```text theme={null}3854```text theme={null}

3793Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]3855Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]


3796'git <command> [<revision>...] -- [<file>...]'3858'git <command> [<revision>...] -- [<file>...]'

3797```3859```

3798 3860 

3799Вместо этого сообщение может цитировать `git log` или другую команду `git diff`. Git создаёт `origin/HEAD` только тогда, когда удалённый репозиторий объявляет ветку по умолчанию и ваш refspec для fetch её охватывает, что и происходит при полном `git clone` удалённого репозитория с коммитами. Ссылка отсутствует в следующих конфигурациях:3861Вместо этого сообщение может цитировать `git log` или другой `git diff`. Git создаёт `origin/HEAD` только тогда, когда удалённый репозиторий объявляет ветку по умолчанию и ваш refspec для fetch её охватывает, что происходит при полном `git clone` удалённого репозитория с коммитами. Ссылка отсутствует в следующих конфигурациях:

3800 3862 

3801* Checkout одной ветки или в CI, который получает слишком узкий refspec3863* Однобранчевая или CI-копия, которая получает слишком узкий refspec

3802* Удалённый репозиторий, у которого HEAD на сервере указывает на ветку, которую никто не отправлял3864* Удалённый репозиторий, HEAD которого на стороне сервера указывает на ветку, которую никто не отправлял

3803* Репозиторий без удалённого `origin` или такой, для которого вы никогда не выполняли fetch3865* Репозиторий без удалённого репозитория `origin` или такой, для которого вы никогда не выполняли fetch

3804 3866 

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

3806 3868 

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

3808 3870 

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

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

3811 3873 

3812**Что делать:**3874**Что делать:**

3813 3875 

3814* Создайте ссылку, указав ветку по умолчанию вашего удалённого репозитория: `git remote set-head origin <default-branch>`. Это работает, если существует локальная отслеживающая ссылка `origin/<default-branch>`. Если её нет, как в клонах одной ветки, сначала получите ветку: выполните `git remote set-branches --add origin <branch>`, затем `git fetch origin`, затем снова выполните команду set-head. Снова запустите `/security-review`.3876* Создайте ссылку, указав ветку по умолчанию вашего удалённого репозитория: `git remote set-head origin <default-branch>`. Это работает, если существует локальная отслеживающая ссылка `origin/<default-branch>`. Если её нет, как в однобранчевых клонах, сначала получите ветку: выполните `git remote set-branches --add origin <branch>`, затем `git fetch origin`, затем повторите команду set-head. Снова выполните `/security-review`.

3815* Если вы не хотите указывать ветку, выполните `git fetch origin`, а затем `git remote set-head origin --auto`, которая спрашивает у удалённого репозитория, какая ветка у него по умолчанию. Она завершается с `error: Cannot determine remote HEAD`, если удалённый репозиторий не объявляет ветку по умолчанию, потому что он пуст или его HEAD указывает на ветку, которую никто не отправлял; в этом случае укажите ветку явно. Она завершается с `error: Not a valid ref`, если ваш клон не получает эту ветку; сначала расширьте refspec, как описано выше.3877* Если вы не хотите указывать ветку, выполните `git fetch origin`, а затем `git remote set-head origin --auto`, которая спрашивает у удалённого репозитория, какая ветка у него по умолчанию. Она завершается ошибкой `error: Cannot determine remote HEAD`, если удалённый репозиторий не объявляет ветку по умолчанию, потому что он пуст или его HEAD указывает на ветку, которую никто не отправлял; в этом случае укажите ветку явно. Она завершается ошибкой `error: Not a valid ref`, если ваш клон не получает эту ветку; сначала расширьте refspec, как описано выше.

3816* Если у репозитория нет удалённого репозитория, добавьте его с помощью `git remote add origin <url>` и выполните fetch перед созданием ссылки. Если удалённый репозиторий пуст, сначала отправьте свою ветку с помощью `git push -u origin HEAD` и укажите эту ветку в команде set-head; после этого `origin/HEAD` указывает на только что отправленную ветку, поэтому `/security-review` видит пустой diff, пока ваша ветка не разойдётся с ней.3878* Если у репозитория нет удалённого репозитория, добавьте его с помощью `git remote add origin <url>` и выполните fetch перед созданием ссылки. Если удалённый репозиторий пуст, сначала отправьте свою ветку с помощью `git push -u origin HEAD` и укажите эту ветку в команде set-head; тогда `origin/HEAD` будет указывать на только что отправленную ветку, поэтому `/security-review` будет видеть пустой diff, пока ваша ветка не разойдётся с ней.

3817 3879 

3818### No shell command in a skill or command was run3880### No shell command in a skill or command was run

3819 3881 

3820`No shell command in <name> was run` означает, что [команда динамического контекста](https://code.claude.com/docs/ru/skills.md#inject-dynamic-context) `` !`<command>` `` в этом файле скилла или команды содержит символ, который отклоняет инструмент Bash или PowerShell:3882`No shell command in <name> was run` означает, что [команда динамического контекста](https://code.claude.com/docs/ru/skills.md#inject-dynamic-context) `` !`<command>` `` в этом файле скилла или команды содержит символ, который отклоняет инструмент Bash или PowerShell:

3821 3883 

3822* **Любой инструмент**: необработанный управляющий символ, кроме табуляции или перевода строки3884* **Любой из инструментов**: необработанный управляющий символ, отличный от табуляции или перевода строки

3823* **Инструмент PowerShell**: также U+FEFF или U+180E3885* **Инструмент PowerShell**: также U+FEFF или U+180E

3824 3886 

3825Сообщение заканчивается отклонённой командой, в которой каждый отклонённый символ показан как `�`, как в этом примере для инструмента Bash:3887Сообщение заканчивается отклонённой командой, в которой каждый отклонённый символ показан как `�`, как в этом примере для инструмента Bash:


3831 3893 

3832**Что делать:**3894**Что делать:**

3833 3895 

3834* Найдите каждый `�` в команде, процитированной в конце сообщения. Удалите обозначаемый им символ из [файла скилла или команды](https://code.claude.com/docs/ru/skills.md#where-skills-live) либо из аргументов или [параметров](https://code.claude.com/docs/ru/plugins/manifest-reference.md#user-configuration), подставляемых в файл.3896* Найдите каждый `�` в команде, процитированной в конце сообщения. Удалите символ, который он обозначает, из [файла скилла или команды](https://code.claude.com/docs/ru/skills.md#where-skills-live) либо из аргументов или [параметров](https://code.claude.com/docs/ru/plugins/manifest-reference.md#user-configuration), подставляемых в этот файл.

3835 3897 

3836### Необходимо предоставить ввод при использовании `--print`3898### Input must be provided when using `--print`

3837 3899 

3838Для запуска интерактивного интерфейса простому `claude` нужно, чтобы stdout был терминалом. Если stdout перенаправлен или консоль не является настоящим терминалом, как в PowerShell ISE и некоторых панелях вывода IDE, `claude` вместо этого работает [неинтерактивно](https://code.claude.com/docs/ru/headless.md). Это тот же режим, что и `claude -p`, которому требуется промпт, поэтому сообщение упоминает `--print`, даже если вы не передавали этот флаг. Передача `-p`/`--print` без промпта и без данных, переданных через stdin, вызывает ту же ошибку в любом окружении.3900Чтобы запустить интерактивный интерфейс, простому `claude` нужно, чтобы stdout был терминалом. Если stdout перенаправлен или консоль не является настоящим терминалом, как в PowerShell ISE и некоторых панелях вывода IDE, `claude` вместо этого работает [в неинтерактивном режиме](https://code.claude.com/docs/ru/headless.md). Это тот же режим, что и `claude -p`, которому требуется промпт, поэтому сообщение упоминает `--print`, даже если вы не передавали этот флаг. Передача `-p`/`--print` без промпта и без данных, переданных через stdin, вызывает ту же ошибку в любой среде.

3839 3901 

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

3841Error: Input must be provided either through stdin or as a prompt argument when using --print3903Error: Input must be provided either through stdin or as a prompt argument when using --print


3843 3905 

3844**Что делать:**3906**Что делать:**

3845 3907 

3846* Для интерактивной работы запускайте `claude` в настоящем терминале: в Windows Terminal или консоли PowerShell, а не в ISE, и во встроенном терминале IDE, а не в панели вывода3908* Для интерактивной работы запускайте `claude` в настоящем терминале: в Windows Terminal или консоли PowerShell, а не в ISE, и во встроенном терминале вашей IDE, а не в панели вывода

3847* Для однократного использования передайте промпт: `claude -p "your question"` или передайте его через конвейер: `echo "your question" | claude -p`3909* Для однократного использования передайте промпт: `claude -p "your question"` или передайте его через конвейер с помощью `echo "your question" | claude -p`

3848 3910 

3849### Claude Code не может здесь читать клавиатуру3911### Claude Code can't read the keyboard here

3850 3912 

3851Вы выполнили `claude` без [`-p`](https://code.claude.com/docs/ru/headless), что запускает [интерактивную сессию](https://code.claude.com/docs/ru/interactive-mode.md), но её стандартный ввод не является терминалом. Что-то передало его через конвейер или перенаправило, либо программа, запустившая `claude`, предоставила собственный поток ввода.3913Вы запустили `claude` без [`-p`](https://code.claude.com/docs/ru/headless), что запускает [интерактивную сессию](https://code.claude.com/docs/ru/interactive-mode.md), но его стандартный ввод не является терминалом. Что-то перенаправило его через конвейер или иным способом, либо программа, запустившая `claude`, предоставила собственный поток ввода.

3852 3914 

3853Интерактивной сессии нужен терминал, из которого она читает ваши нажатия клавиш, и то, что Claude Code делает без него, зависит от вашей платформы:3915Интерактивной сессии нужен терминал, из которого она считывает нажатия клавиш, и то, что делает Claude Code без него, зависит от вашей платформы:

3854 3916 

3855* **Windows**: Claude Code выводит сообщение в stderr и завершается с кодом выхода 1 вместо запуска интерфейса3917* **Windows**: Claude Code выводит сообщение в stderr и завершает работу с кодом 1 вместо запуска интерфейса

3856* **macOS и Linux**: Claude Code читает нажатия клавиш из `/dev/tty` и запускает сессию, используя переданный через конвейер текст как первый промпт. Вы видите сообщение, когда `/dev/tty` не удаётся открыть, и его первая строка упоминает `/dev/tty` вместо формулировки для Windows.3918* **macOS и Linux**: Claude Code считывает нажатия клавиш из `/dev/tty` и запускает сессию, используя переданный через конвейер текст в качестве вашего первого промпта. Вы видите сообщение, когда `/dev/tty` не удаётся открыть, и в его первой строке вместо формулировки для Windows упоминается `/dev/tty`.

3857 3919 

3858В Windows сообщение выглядит так:3920В Windows сообщение выглядит так:

3859 3921 


3865 3927 

3866**Что делать:**3928**Что делать:**

3867 3929 

3868* Для интерактивной работы запускайте `claude` непосредственно в терминале, не передавая и не перенаправляя его ввод3930* Чтобы работать интерактивно, запустите `claude` непосредственно в терминале, без конвейера и перенаправления ввода

3869* Чтобы получить ответ без интерактивного интерфейса, например из скрипта, добавьте `-p` и передайте промпт как аргумент или через stdin, например `claude -p "your question"` или `echo "your question" | claude -p`. То же работает с `--continue` и `--resume <session-id>`.3931* Чтобы получить ответ без интерактивного интерфейса, например из скрипта, добавьте `-p` и передайте промпт как аргумент или через stdin, например `claude -p "your question"` или `echo "your question" | claude -p`. То же самое работает с `--continue` и `--resume <session-id>`.

3870 3932 

3871До v2.1.287 Claude Code вместо вывода этого сообщения запускал интерфейс, а затем либо ничего не показывал на экране, либо завершался с ошибкой, содержащей `Raw mode is not supported`.3933До версии v2.1.287 Claude Code вместо вывода этого сообщения запускал интерфейс, а затем либо ничего не показывал на экране, либо завершался с ошибкой, содержащей `Raw mode is not supported`.

3872 3934 

3873Если вы видите `Raw mode is not supported` во время `claude install`, см. [`Raw mode is not supported` во время установки](https://code.claude.com/docs/ru/troubleshoot-install#raw-mode-is-not-supported-during-install).3935Если же вы видите `Raw mode is not supported` во время `claude install`, см. раздел [`Raw mode is not supported` во время установки](https://code.claude.com/docs/ru/troubleshoot-install#raw-mode-is-not-supported-during-install).

3874 3936 

3875### Ввод содержал только пробельные символы3937### Input contained only whitespace

3876 3938 

3877В [неинтерактивном режиме](https://code.claude.com/docs/ru/headless.md) Claude Code отклоняет промпт, состоящий только из пробелов, табуляций или переводов строк, вместо его отправки, поскольку API отклоняет сообщения без видимого текста. Какое сообщение вы увидите, зависит от того, откуда пришёл пустой промпт:3939В [неинтерактивном режиме](https://code.claude.com/docs/ru/headless.md) Claude Code отклоняет промпт, состоящий целиком из пробелов, табуляций или переводов строки, вместо того чтобы отправить его, поскольку API отклоняет сообщения без видимого текста. Какое сообщение вы увидите, зависит от того, откуда пришёл пустой промпт:

3878 3940 

3879* **Аргумент промпта или stdin через конвейер для `claude -p`**: `claude` завершается с `Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print`3941* **Аргумент промпта или stdin через конвейер для `claude -p`**: `claude` завершает работу с сообщением `Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print`

3880* **Сообщение, отправленное в работающую сессию `--input-format stream-json` или [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md)**: Claude Code завершает ход без вызова модели, и сессия остаётся пригодной к использованию. Отказ приходит как информационное сообщение и как текст результата хода: `Blank prompt — the message was only whitespace, so nothing was sent to the model.`3942* **Сообщение, отправленное в работающую сессию `--input-format stream-json` или [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md)**: Claude Code завершает ход без вызова модели, и сессия остаётся пригодной для работы. Отказ приходит как информационное сообщение и как текст результата хода: `Blank prompt — the message was only whitespace, so nothing was sent to the model.`

3881 3943 

3882До v2.1.229 Claude Code отправлял сообщение из одних пробельных символов в API, который отклонял запрос с ошибкой 400.3944До версии v2.1.229 Claude Code отправлял сообщение, состоящее только из пробельных символов, в API, который отклонял запрос с ошибкой 400.

3883 3945 

3884**Что делать:**3946**Что делать:**

3885 3947 

3886* Включите в промпт видимый текст. Если скрипт формирует промпт из переменной или файла, проверьте, что источник не пуст, перед вызовом Claude Code.3948* Включите в промпт видимый текст. Если скрипт формирует промпт из переменной или файла, перед вызовом Claude Code проверьте, что источник не пуст.

3887 3949 

3888### Ввод stream-json содержал более 256M символов без перевода строки3950### stream-json input carried over 256M characters with no newline

3889 3951 

3890Ваша программа отправила более 268 435 456 символов через stdin без перевода строки в запуск `claude -p --input-format stream-json`, поэтому Claude Code выводит эту ошибку в stderr и завершается с кодом выхода 1 вместо буферизации дальнейшего ввода. Сообщение указывает этот лимит как `256M`. До v2.1.257 Claude Code буферизовал такой ввод без ограничений, увеличивая потребление памяти, пока процесс не падал или не завершался принудительно.3952Ваша программа отправила через stdin более 268 435 456 символов без перевода строки в запуск `claude -p --input-format stream-json`, поэтому Claude Code выводит эту ошибку в stderr и завершает работу с кодом 1 вместо того, чтобы буферизовать ввод дальше. В сообщении этот лимит указан как `256M`. До версии v2.1.257 Claude Code буферизовал такой ввод без ограничений, и потребление памяти росло, пока процесс не падал или не завершался принудительно.

3891 3953 

3892```text theme={null}3954```text theme={null}

3893Error: stream-json input carried over 256M characters with no newline. Each stream-json message must be a single newline-terminated JSON line: either the producer is not newline-terminating its messages, or one message exceeded this budget.3955Error: stream-json input carried over 256M characters with no newline. Each stream-json message must be a single newline-terminated JSON line: either the producer is not newline-terminating its messages, or one message exceeded this budget.

3894```3956```

3895 3957 

3896Ввод такой длины без перевода строки обычно означает, что источник вообще не является источником stream-json, например случайно переданный через конвейер двоичный файл или обычный вывод лога. Одно сообщение, превышающее лимит, не проходит ту же проверку.3958Такой длинный ввод без перевода строки обычно означает, что источник вообще не является источником stream-json, например это бинарный файл или обычный вывод лога, случайно переданный через конвейер. Одно сообщение, превышающее лимит, не проходит ту же проверку.

3897 3959 

3898**Что делать:**3960**Что делать:**

3899 3961 

3900* Проверьте, что передаётся в stdin. С [`--input-format stream-json`](https://code.claude.com/docs/ru/cli-reference#cli-flags) каждое сообщение должно быть одной строкой JSON, завершающейся переводом строки3962* Проверьте, что передаётся в stdin. С [`--input-format stream-json`](https://code.claude.com/docs/ru/cli-reference#cli-flags) каждое сообщение должно быть одной строкой JSON, завершающейся переводом строки

3901* Чтобы отправить обычный текст, уберите `--input-format stream-json`; `claude -p` по умолчанию читает из stdin промпт в виде обычного текста3963* Чтобы вместо этого отправить обычный текст, уберите `--input-format stream-json`; по умолчанию `claude -p` считывает промпт в виде обычного текста из stdin

3902 3964 

3903### Unknown command3965### Unknown command

3904 3966 

3905В интерактивной сессии терминала вы отправили имя с `/`, которое не соответствует ни одной команде в этой сессии, поэтому Claude Code сообщает об этом имени, ничего не выполняя:3967В интерактивной сессии терминала вы отправили имя с `/`, которое не соответствует ни одной команде в этой сессии, поэтому Claude Code сообщает об этом имени вместо того, чтобы что-либо выполнить:

3906 3968 

3907```text theme={null}3969```text theme={null}

3908Unknown command: /hepl. Did you mean /help?3970Unknown command: /hepl. Did you mean /help?

3909```3971```

3910 3972 

3911Claude Code предлагает ближайшее имя команды или псевдоним, которые меню показывает в этой сессии. Если ничего близкого нет, сообщение заканчивается после имени. Обычно причина одна из следующих:3973Claude Code предлагает ближайшее имя команды или псевдоним из тех, что меню показывает в этой сессии. Если ничего похожего нет, сообщение заканчивается после имени. Причина обычно одна из следующих:

3912 3974 

3913* Опечатка, например `/hepl` вместо `/help`. В разделе [Как меню команд сопоставляет вводимый текст](https://code.claude.com/docs/ru/commands.md#how-the-command-menu-matches-what-you-type) описано, как выбрать близкое совпадение перед отправкой3975* Опечатка, например `/hepl` вместо `/help`. В разделе [Как меню команд сопоставляет введённый текст](https://code.claude.com/docs/ru/commands.md#how-the-command-menu-matches-what-you-type) описано, как выбрать близкое совпадение перед отправкой

3914* Команда существует, но недоступна в этой сессии, потому что не выполнено требование, например к платформе, тарифу или способу аутентификации. См. разделы для [`/web-setup`](https://code.claude.com/docs/ru/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command), [`/schedule`](https://code.claude.com/docs/ru/routines#schedule-returns-unknown-command) или [`/auto-mode-setup`](https://code.claude.com/docs/ru/auto-mode-config#auto-mode-setup-returns-unknown-command). Некоторые команды отвечают собственным сообщением, когда их отключает политика вашей организации, например [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)3976* Команда существует, но недоступна в этой сессии, потому что не выполнено какое-либо требование, например к платформе, тарифному плану или способу аутентификации. См. раздел для [`/web-setup`](https://code.claude.com/docs/ru/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command), [`/schedule`](https://code.claude.com/docs/ru/routines#schedule-returns-unknown-command) или [`/auto-mode-setup`](https://code.claude.com/docs/ru/auto-mode-config#auto-mode-setup-returns-unknown-command). Некоторые команды отвечают собственным сообщением, когда политика вашей организации их отключает, например [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)

3915* Команда из [плагина](https://code.claude.com/docs/ru/plugins/overview.md) или [MCP-сервера](https://code.claude.com/docs/ru/mcp.md#use-mcp-prompts-as-commands), который не установлен или не подключён в этой сессии3977* Команда из [плагина](https://code.claude.com/docs/ru/plugins/overview.md) или [MCP-сервера](https://code.claude.com/docs/ru/mcp.md#use-mcp-prompts-as-commands), который не установлен или не подключён в этой сессии

3916 3978 

3917Claude Code отвечает так на несовпадающее имя с `/` только в интерактивной сессии терминала. В любой другой сессии он вместо этого отправляет промпт Claude как обычное сообщение с пометкой, что команда не была выполнена, и списком команд, которые Claude может выполнить в сессии. К таким сессиям относятся:3979Claude Code отвечает так на несовпавшее имя с `/` только в интерактивной сессии терминала. Во всех остальных сессиях он вместо этого отправляет промпт Claude как обычное сообщение с пометкой о том, что команда не была выполнена, и списком команд, которые Claude может выполнить в сессии. К таким сессиям относятся:

3918 3980 

3919* запуски с `-p`3981* запуски с `-p`

3920* приложения на [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md)3982* приложения на [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md)

3921* вкладка Code в [приложении Desktop](https://code.claude.com/docs/ru/desktop.md)3983* вкладка Code в [приложении Desktop](https://code.claude.com/docs/ru/desktop.md)

3922* панель чата [расширения VS Code](https://code.claude.com/docs/ru/vs-code.md)3984* панель чата в [расширении VS Code](https://code.claude.com/docs/ru/vs-code.md)

3923* [Облачные сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md) и [облачные запланированные задачи](https://code.claude.com/docs/ru/routines.md)3985* [облачные сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md) и [облачные запланированные задачи](https://code.claude.com/docs/ru/routines.md)

3924 3986 

3925Для встроенной команды, которая не может выполняться в одной из этих сессий, Claude Code по-прежнему отвечает, что команда недоступна, а не отправляет её Claude. До v2.1.274 несовпадающее имя отправляли Claude только облачные сессии и облачные запланированные задачи. До v2.1.273 они тоже отвечали `Unknown command`.3987Для встроенной команды, которую нельзя выполнить в одной из этих сессий, Claude Code по-прежнему отвечает, что команда недоступна, вместо того чтобы отправить её Claude. До версии v2.1.274 несовпавшее имя отправляли Claude только облачные сессии и облачные запланированные задачи. До версии v2.1.273 они тоже отвечали `Unknown command`.

3926 3988 

3927Claude Code не считает командой каждый промпт, начинающийся с `/`. Он отправляет промпт Claude как обычное сообщение, если первое слово после `/` начинается со знака препинания, например `/--`, открывающего doc-комментарий Lean, или является путём, например `/var/log/syslog`.3989Claude Code не считает командой каждый промпт, начинающийся с `/`. Он отправляет промпт Claude как обычное сообщение, когда первое слово после `/` начинается со знака препинания, как `/--`, открывающий doc-комментарий в Lean, или является путём, например `/var/log/syslog`.

3928 3990 

3929До v2.1.236, если вы нажимали `Enter`, пока меню команд показывало близкое совпадение для введённого имени, Claude Code выполнял это совпадение, поэтому опечатка вроде `/hepl` запускала `/help` вместо вывода этого сообщения.3991До версии v2.1.236, если вы нажимали `Enter`, пока меню команд показывало близкое совпадение для введённого имени, Claude Code выполнял это совпадение, поэтому опечатка вроде `/hepl` запускала `/help` вместо вывода этого сообщения.

3930 3992 

3931**Что делать:**3993**Что делать:**

3932 3994 

3933* Выполните предложенное имя или введите `/` и часть имени, чтобы увидеть, что доступно в этой сессии3995* Выполните предложенное имя или введите `/` и часть имени, чтобы увидеть, что доступно в этой сессии

3934* Если Claude Code сообщает, что задокументированная команда неизвестна, проверьте её строку в [справочнике команд](https://code.claude.com/docs/ru/commands.md), где указано требование3996* Если Claude Code сообщает, что документированная команда неизвестна, проверьте её строку в [справочнике команд](https://code.claude.com/docs/ru/commands.md) на предмет указанного там требования

3935 3997 

3936### Diff слишком велик для ultrareview3998### Diff is too large for ultrareview

3937 3999 

3938Diff между вашей веткой и базовой веткой, включая незафиксированные и подготовленные изменения, превышает лимиты размера для [ultrareview](https://code.claude.com/docs/ru/ultrareview.md), поэтому `/code-review ultra` и подкоманда `claude ultrareview` отклоняют ревью до запуска облачной сессии. Отклонённое ревью не расходует бесплатный запуск и не списывает кредиты использования. Сообщение называет действующие лимиты, размер вашего diff и файлы с наибольшим количеством изменённых строк. До v2.1.216 сообщение показывало только необработанную статистику diff.4000Diff между вашей веткой и базовой веткой, включая незакоммиченные и подготовленные (staged) изменения, превышает ограничения по размеру для [ultrareview](https://code.claude.com/docs/ru/ultrareview.md), поэтому `/code-review ultra` и подкоманда `claude ultrareview` отклоняют код-ревью до запуска облачной сессии. Отклонённое код-ревью не расходует бесплатный запуск и не списывает кредиты использования. В сообщении указываются действующие ограничения, размер вашего diff и файлы, в которых больше всего изменённых строк. До версии v2.1.216 сообщение показывало только необработанную статистику diff.

3939 4001 

3940```text theme={null}4002```text theme={null}

3941Diff is too large for ultrareview: 812 files, 96,410 lines changed (limits: 500 files, 8,000 lines). Largest files: package-lock.json (41,904 lines), dist/bundle.js (18,210 lines), src/generated/api.ts (9,876 lines). Pass a closer base branch (`/code-review ultra <branch>`) to narrow the scope, or split the change.4003Diff is too large for ultrareview: 812 files, 96,410 lines changed (limits: 500 files, 8,000 lines). Largest files: package-lock.json (41,904 lines), dist/bundle.js (18,210 lines), src/generated/api.ts (9,876 lines). Pass a closer base branch (`/code-review ultra <branch>`) to narrow the scope, or split the change.

3942```4004```

3943 4005 

3944Для ревью pull request действуют те же лимиты; такая форма сообщения начинается с `PR #<N> is too large for ultrareview` и называет количество файлов и строк PR.4006При код-ревью pull request действуют те же ограничения; в этом случае сообщение начинается с `PR #<N> is too large for ultrareview` и указывает количество файлов и строк PR.

3945 4007 

3946**Что делать:**4008**Что делать:**

3947 4009 

3948* Передайте базовую ветку, более близкую к вашей работе, например `/code-review ultra develop`, чтобы ревью охватывало только diff относительно этой ветки4010* Передайте базовую ветку, более близкую к вашей работе, например `/code-review ultra develop`, чтобы код-ревью охватывало только diff относительно этой ветки

3949* Разделите изменение на меньшие ветки и выполните ревью каждой. Файлы, названные в сообщении, дают больше всего изменённых строк, поэтому начните с переноса их в отдельную ветку.4011* Разделите изменение на меньшие ветки и проведите код-ревью каждой. Файлы, названные в сообщении, дают больше всего изменённых строк, поэтому начните с переноса их в отдельную ветку.

3950 4012 

3951### Не удалось найти merge-base с базовой веткой4013### Could not find merge-base with the base branch

3952 4014 

3953`/code-review ultra` и подкоманда `claude ultrareview` выполняют ревью diff между вашей веткой и базовой веткой, для чего нужен общий для них коммит. Если `git merge-base` его не находит, Claude Code отклоняет ревью до запуска облачной сессии. В клоне, полноту которого Claude Code может проверить и в котором есть хотя бы одна ветка, он вместо отказа переключается на [ревью всех отслеживаемых файлов](https://code.claude.com/docs/ru/ultrareview.md#diff-limits-and-fallbacks). Вы видите этот отказ, когда базовую ветку вообще не удаётся найти, когда Claude Code не может проверить полноту вашего клона или в редком репозитории, где diff всего дерева невозможен, например в формате объектов SHA-256.4015`/code-review ultra` и подкоманда `claude ultrareview` проверяют diff между вашей веткой и базовой веткой, для чего нужен общий для них коммит. Когда `git merge-base` его не находит, Claude Code отклоняет код-ревью до запуска облачной сессии. В клоне, полноту которого Claude Code может проверить и в котором есть хотя бы одна ветка, он вместо отказа переходит к [код-ревью всех отслеживаемых файлов](https://code.claude.com/docs/ru/ultrareview.md#diff-limits-and-fallbacks). Вы видите этот отказ, когда базовая ветка вообще не найдена, когда Claude Code не может проверить полноту вашего клона, или в редком репозитории, где diff всего дерева невозможен, например при формате объектов SHA-256.

3954 4016 

3955```text theme={null}4017```text theme={null}

3956Could not find merge-base with main. Pass the base branch explicitly (e.g. `/code-review ultra develop`) or make sure you're in a git repo with a main branch.4018Could not find merge-base with main. Pass the base branch explicitly (e.g. `/code-review ultra develop`) or make sure you're in a git repo with a main branch.


3958 4020 

3959Подсказка после первого предложения зависит от того, что обнаружил Claude Code:4021Подсказка после первого предложения зависит от того, что обнаружил Claude Code:

3960 4022 

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

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

3963* **Вы передали базовую ветку, которой не было в вашем клоне**: 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`.4025* **Вы передали базовую ветку, которой не было в вашем клоне**: 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`.

3964 4026 

3965**Что делать:**4027**Что делать:**

3966 4028 

3967* Если ваша настоящая базовая ветка другая, передайте её явно: `/code-review ultra <branch>`4029* Если ваша настоящая базовая ветка другая, передайте её явно: `/code-review ultra <branch>`

3968* Если в вашем клоне может не быть полной истории, выполните `git fetch --unshallow origin` и снова запустите ревью4030* Если в вашем клоне может не быть полной истории, выполните `git fetch --unshallow origin` и запустите код-ревью повторно

3969 4031 

3970### В вашем checkout нет веток4032### Your checkout has no branches

3971 4033 

3972В checkout могут быть коммиты, но не быть веток: если выполнить `git init`, затем `git fetch <url>` и `git checkout FETCH_HEAD`, получится отсоединённый HEAD без ссылок. Claude Code упаковывает ваш репозиторий в git bundle, чтобы загрузить его для [ultrareview](https://code.claude.com/docs/ru/ultrareview.md), и не может упаковать репозиторий без веток или других ссылок, поэтому `/code-review ultra` и подкоманда `claude ultrareview` отклоняют ревью до запуска облачной сессии.4034В рабочей копии могут быть коммиты, но не быть веток: если выполнить `git init`, затем `git fetch <url>` и `git checkout FETCH_HEAD`, вы получите detached HEAD без ссылок (refs). Claude Code упаковывает ваш репозиторий в git bundle, чтобы загрузить его для [ultrareview](https://code.claude.com/docs/ru/ultrareview.md), и не может упаковать репозиторий без веток или других ссылок, поэтому `/code-review ultra` и подкоманда `claude ultrareview` отклоняют код-ревью до запуска облачной сессии.

3973 4035 

3974```text theme={null}4036```text theme={null}

3975Your checkout has no branches (detached HEAD only), which cloud review can't bundle. Create one first — `git checkout -b <name>` — then rerun /code-review ultra.4037Your checkout has no branches (detached HEAD only), which cloud review can't bundle. Create one first — `git checkout -b <name>` — then rerun /code-review ultra.

3976```4038```

3977 4039 

3978До v2.1.221 Claude Code пытался выполнить ревью всех отслеживаемых файлов в таком checkout, и загрузка завершалась с ошибкой.4040До версии v2.1.221 Claude Code пытался проверить все отслеживаемые файлы в такой рабочей копии, и загрузка завершалась ошибкой.

3979 4041 

3980**Что делать:**4042**Что делать:**

3981 4043 

3982* Создайте ветку на текущем коммите с помощью `git checkout -b <name>`, затем снова запустите ревью4044* Создайте ветку на текущем коммите с помощью `git checkout -b <name>`, затем запустите код-ревью повторно

3983 4045 

3984### К вашей учётной записи Claude не подключена учётная запись GitHub4046### No GitHub account is connected to your Claude account

3985 4047 

3986Вы выполнили `/code-review ultra <PR#>` или `claude ultrareview <PR#>`, и перед созданием облачной сессии Claude Code спрашивает у сервера, может ли [учётная запись GitHub, подключённая к вашей учётной записи Claude](https://code.claude.com/docs/ru/ultrareview.md#review-a-pull-request), получить доступ к репозиторию PR. Учётная запись не подключена или срок действия подключения истёк, поэтому клонирование в облаке завершилось бы с ошибкой, и Claude Code отклоняет запуск. За отклонённый запуск Claude Code не расходует бесплатный запуск и не списывает кредиты использования.4048Вы выполнили `/code-review ultra <PR#>` или `claude ultrareview <PR#>`, и перед созданием облачной сессии Claude Code спрашивает у сервера, может ли [аккаунт GitHub, подключённый к вашему аккаунту Claude](https://code.claude.com/docs/ru/ultrareview.md#review-a-pull-request), получить доступ к репозиторию PR. Аккаунт не подключён или срок подключения истёк, поэтому клонирование в облаке завершилось бы ошибкой, и Claude Code отклоняет запуск. За отклонённый запуск Claude Code не расходует бесплатный запуск и не списывает кредиты использования.

3987 4049 

3988```text theme={null}4050```text theme={null}

3989Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected (or the connection expired). To fix: run /web-setup to reuse your GitHub CLI login, or connect an account at https://claude.ai/connect-github — then re-run /code-review ultra 1234 (allow a minute after connecting).4051Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected (or the connection expired). To fix: run /web-setup to reuse your GitHub CLI login, or connect an account at https://claude.ai/connect-github — then re-run /code-review ultra 1234 (allow a minute after connecting).

3990```4052```

3991 4053 

3992Если [`/web-setup`](https://code.claude.com/docs/ru/web-quickstart#connect-from-your-terminal) недоступна в вашей сессии, сообщение называет только ссылку на claude.ai.4054Когда [`/web-setup`](https://code.claude.com/docs/ru/web-quickstart#connect-from-your-terminal) недоступна в вашей сессии, сообщение указывает только ссылку на claude.ai.

3993 4055 

3994**Что делать:**4056**Что делать:**

3995 4057 

3996* Выполните `/web-setup`, чтобы подключить вход GitHub CLI к вашей учётной записи Claude, или подключите учётную запись на [claude.ai/connect-github](https://claude.ai/connect-github)4058* Выполните `/web-setup`, чтобы подключить вход в GitHub CLI к вашему аккаунту Claude, или подключите аккаунт на [claude.ai/connect-github](https://claude.ai/connect-github)

3997* Снова запустите ревью через минуту после подключения4059* Запустите код-ревью повторно через минуту после подключения

3998 4060 

3999До v2.1.248 Claude Code не проверял это перед запуском.4061До версии v2.1.248 Claude Code не проверял это перед запуском.

4000 4062 

4001### Подключённая учётная запись GitHub не видит репозиторий4063### Your connected GitHub account can't see the repository

4002 4064 

4003Вы выполнили `/code-review ultra <PR#>` или `claude ultrareview <PR#>`, и [учётная запись GitHub, подключённая к вашей учётной записи Claude](https://code.claude.com/docs/ru/ultrareview.md#review-a-pull-request), не может читать репозиторий PR, поэтому клонирование в облаке завершилось бы с ошибкой, и Claude Code отклоняет запуск. За отклонённый запуск Claude Code не расходует бесплатный запуск и не списывает кредиты использования.4065Вы выполнили `/code-review ultra <PR#>` или `claude ultrareview <PR#>`, и [аккаунт GitHub, подключённый к вашему аккаунту Claude](https://code.claude.com/docs/ru/ultrareview.md#review-a-pull-request), не может прочитать репозиторий PR, поэтому клонирование в облаке завершилось бы ошибкой, и Claude Code отклоняет запуск. За отклонённый запуск Claude Code не расходует бесплатный запуск и не списывает кредиты использования.

4004 4066 

4005```text theme={null}4067```text theme={null}

4006Your connected GitHub account can't see <owner>/<repo> — usually the Claude GitHub app isn't installed on <owner> or wasn't granted this repo (web-connected accounts need it for private repos), or a different GitHub account is connected. To fix: run /web-setup to reuse your GitHub CLI login, or install the app at https://github.com/apps/claude/installations/new — then re-run /code-review ultra 1234.4068Your connected GitHub account can't see <owner>/<repo> — usually the Claude GitHub app isn't installed on <owner> or wasn't granted this repo (web-connected accounts need it for private repos), or a different GitHub account is connected. To fix: run /web-setup to reuse your GitHub CLI login, or install the app at https://github.com/apps/claude/installations/new — then re-run /code-review ultra 1234.

4007```4069```

4008 4070 

4009Если [`/web-setup`](https://code.claude.com/docs/ru/web-quickstart#connect-from-your-terminal) недоступна в вашей сессии, сообщение называет только установку приложения.4071Когда [`/web-setup`](https://code.claude.com/docs/ru/web-quickstart#connect-from-your-terminal) недоступна в вашей сессии, сообщение указывает только установку приложения.

4010 4072 

4011**Что делать:**4073**Что делать:**

4012 4074 

4013* Если ваш локальный CLI `gh` может читать репозиторий, выполните `/web-setup`, чтобы подключить этот вход к вашей учётной записи Claude4075* Если ваш локальный `gh` CLI может прочитать репозиторий, выполните `/web-setup`, чтобы подключить этот вход к вашему аккаунту Claude

4014* Снова запустите ревью после изменения4076* После изменения запустите код-ревью повторно

4015 4077 

4016До v2.1.248 Claude Code не проверял это перед запуском.4078До версии v2.1.248 Claude Code не проверял это перед запуском.

4017 4079 

4018### Предварительная проверка GitHub App временно завершилась с ошибкой4080### The GitHub App preflight failed transiently

4019 4081 

4020Вы запустили [облачную сессию](https://code.claude.com/docs/ru/claude-code-on-the-web.md) из локального репозитория, и одновременно не удались два шага. Claude Code не смог собрать или загрузить bundle вашего репозитория. Перед загрузкой он проверил, может ли облачный сервис клонировать репозиторий из GitHub, и вместо определённого ответа эта проверка завершилась ошибкой, которую может устранить повторная попытка, например сетевой ошибкой, таймаутом или временной ошибкой сервера. Полное сообщение начинается с того, что помешало bundle, например `Could not upload repo bundle (<error>)`, и заканчивается предложением о предварительной проверке:4082Вы запустили [облачную сессию](https://code.claude.com/docs/ru/claude-code-on-the-web.md) из локального репозитория, и одновременно не удались два шага. Claude Code не смог собрать или загрузить bundle вашего репозитория. Перед загрузкой он проверял, может ли облачный сервис клонировать репозиторий из GitHub, и вместо однозначного ответа эта проверка завершилась ошибкой, которую может устранить повторная попытка, например сетевой ошибкой, таймаутом или временной ошибкой сервера. Полное сообщение начинается с того, что помешало созданию bundle, например `Could not upload repo bundle (<error>)`, и заканчивается предложением о предварительной проверке:

4021 4083 

4022```text theme={null}4084```text theme={null}

4023Could not upload repo bundle (<error>). The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead4085Could not upload repo bundle (<error>). The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead


4025 4087 

4026**Что делать:**4088**Что делать:**

4027 4089 

4028* Через некоторое время снова выполните команду. Когда проверка GitHub пройдёт, Claude Code сможет запустить сессию из клона GitHub, и неудачная загрузка больше не будет блокировать запуск4090* Через некоторое время выполните команду снова. Когда проверка GitHub пройдёт, Claude Code сможет запустить сессию из клона GitHub, и неудавшаяся загрузка больше не будет блокировать запуск

4029* Если повторные попытки продолжают завершаться с ошибкой, начало сообщения называет то, что помешало загрузке. Если эту причину можно устранить, устраните её, чтобы сессия могла запуститься из вашего локального репозитория4091* Если повторные попытки по-прежнему не удаются, начало сообщения указывает, что помешало загрузке. Если эту причину можно устранить, устраните её, чтобы сессия могла запуститься из вашего локального репозитория

4030 4092 

4031До v2.1.251 Claude Code завершал сообщение фразой `Please set up GitHub on https://claude.ai/code`, даже если проверка GitHub завершалась с ошибкой лишь временно, а советы по настройке не могут устранить временный сбой.4093До версии v2.1.251 Claude Code заканчивал сообщение фразой `Please set up GitHub on https://claude.ai/code`, даже когда проверка GitHub не удалась лишь временно, а советы по настройке не могут устранить временный сбой.

4032 4094 

4033### Загрузка репозитория не может учесть настройку git4095### Загрузка репозитория не может учесть настройку git

4034 4096 

4035Вы запустили [облачную сессию, которая загружает ваш локальный репозиторий](https://code.claude.com/docs/ru/claude-code-on-the-web.md#send-local-repositories-without-github), или [ultrareview](https://code.claude.com/docs/ru/ultrareview.md) ветки, и загрузка не может учесть одну из настроек git, определяющих, какие правила атрибутов применяются к вашим файлам. Если бы загрузка продолжилась и пропустила правило, файл, который git преобразует перед сохранением, например шифруемый clean-фильтром, мог бы попасть в облако в том виде, в каком он лежит на диске. Вместо этого Claude Code отклоняет загрузку, и ничего не загружается:4097Вы запустили [облачную сессию, которая загружает ваш локальный репозиторий](https://code.claude.com/docs/ru/claude-code-on-the-web.md#send-local-repositories-without-github), или [ultrareview](https://code.claude.com/docs/ru/ultrareview.md) ветки, и загрузка не может учесть одну из настроек git, определяющих, какие правила атрибутов применяются к вашим файлам. Если бы загрузка продолжилась и пропустила правило, файл, который git преобразует перед сохранением, например зашифрованный clean-фильтром, мог бы попасть в облако в том виде, в каком он хранится на диске. Вместо этого Claude Code отклоняет загрузку, и ничего не загружается:

4036 4098 

4037```text theme={null}4099```text theme={null}

4038Not uploading this working tree: core.ignoreCase (which decides whether .gitattributes patterns match file names regardless of letter case) is set in <file>, and the upload cannot follow that setting, so a file git would change before storing it (to encrypt it, for example) could be uploaded as it is on disk. Move the core.ignoreCase line into this repository’s .git/config or directly into your ~/.gitconfig, then retry.4100Not uploading this working tree: core.ignoreCase (which decides whether .gitattributes patterns match file names regardless of letter case) is set in <file>, and the upload cannot follow that setting, so a file git would change before storing it (to encrypt it, for example) could be uploaded as it is on disk. Move the core.ignoreCase line into this repository’s .git/config or directly into your ~/.gitconfig, then retry.

4039```4101```

4040 4102 

4041Сообщение называет настройку и место, где она задана, и заканчивается решением для вашего случая. Такой же отказ появляется для `core.attributesFile` и `attr.tree`, каждый со своим решением.4103Сообщение называет настройку и место, где она задана, и заканчивается способом исправления для вашего случая. Тот же отказ появляется для `core.attributesFile` и `attr.tree`, каждый со своим способом исправления.

4042 4104 

4043Сообщение может называть файл конфигурации, который ваша конфигурация git подключает через директиву `include` или `includeIf`, даже если условие этой директивы не относится к данному репозиторию.4105Сообщение может указывать файл конфигурации, который ваша конфигурация git подключает через директиву `include` или `includeIf`, даже если условие этой директивы не относится к данному репозиторию.

4044 4106 

4045**Что делать:**4107**Что делать:**

4046 4108 

4047* Примените решение из последнего предложения сообщения4109* Примените исправление из последнего предложения сообщения

4048 4110 

4049### GitHub не подключён к вашей учётной записи Claude4111### GitHub isn't connected to your Claude account

4050 4112 

4051Вы запустили [облачную сессию](https://code.claude.com/docs/ru/claude-code-on-the-web.md) из локального репозитория, например с помощью `/autofix-pr`. К вашей учётной записи Claude не подключена учётная запись GitHub или срок действия подключения истёк, поэтому Claude Code отклоняет запуск:4113Вы запустили [облачную сессию](https://code.claude.com/docs/ru/claude-code-on-the-web.md) из вашего локального репозитория, например с помощью `/autofix-pr`. К вашему аккаунту Claude не подключён аккаунт GitHub или срок подключения истёк, поэтому Claude Code отклоняет запуск:

4052 4114 

4053```text theme={null}4115```text theme={null}

4054GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github4116GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github


4058 4120 

4059**Что делать:**4121**Что делать:**

4060 4122 

4061* Выполните `/web-setup`, чтобы подключить вход GitHub CLI к вашей учётной записи Claude, или подключите учётную запись на [claude.ai/connect-github](https://claude.ai/connect-github). Чем различаются эти два способа, описано в разделе [Варианты аутентификации GitHub](https://code.claude.com/docs/ru/claude-code-on-the-web.md#github-authentication-options).4123* Выполните `/web-setup`, чтобы подключить вход в GitHub CLI к вашему аккаунту Claude, или подключите аккаунт на [claude.ai/connect-github](https://claude.ai/connect-github). О различиях этих двух способов см. [Варианты аутентификации GitHub](https://code.claude.com/docs/ru/claude-code-on-the-web.md#github-authentication-options).

4062* Снова выполните команду через минуту после подключения4124* Выполните команду повторно через минуту после подключения

4063 4125 

4064До v2.1.268 Claude Code сообщал об этом как о временном сбое проверки Claude GitHub App и предлагал повторить попытку или установить приложение; ни то, ни другое не подключает учётную запись GitHub.4126До версии v2.1.268 Claude Code сообщал об этом как о временном сбое проверки Claude GitHub App и предлагал повторить попытку или установить приложение; ни то, ни другое не подключает аккаунт GitHub.

4065 4127 

4066### Политика организации GitHub блокирует Claude4128### Политика организации GitHub блокирует Claude

4067 4129 

4068Вы выполнили в промпте Claude Code команду, которая запускает облачную сессию, например [`/autofix-pr`](https://code.claude.com/docs/ru/claude-code-on-the-web#auto-fix-pull-requests). Перед созданием сессии Claude Code проверяет доступ Claude к репозиторию на GitHub, и GitHub отказал, потому что в вашей организации GitHub действует политика, блокирующая Claude. Claude Code на этом останавливается и показывает сообщение с названием политики.4130Вы выполнили в промпте Claude Code команду, которая запускает облачную сессию, например [`/autofix-pr`](https://code.claude.com/docs/ru/claude-code-on-the-web#auto-fix-pull-requests). Перед созданием сессии Claude Code проверяет доступ Claude к репозиторию на GitHub, и GitHub отказал, потому что в вашей организации GitHub действует политика, блокирующая Claude. Claude Code останавливается на этом и показывает сообщение с названием политики.

4069 4131 

4070Если доступ блокирует список разрешённых IP-адресов, сообщение выглядит так:4132Когда доступ блокирует список разрешённых IP-адресов, сообщение выглядит так:

4071 4133 

4072```text theme={null}4134```text theme={null}

4073Your GitHub organization has an IP allowlist that is blocking Claude. Add Claude's IP ranges to your GitHub allowlist.4135Your GitHub organization has an IP allowlist that is blocking Claude. Add Claude's IP ranges to your GitHub allowlist.

4074```4136```

4075 4137 

4076Если доступ блокирует единый вход (single sign-on), сообщение выглядит так:4138Когда его блокирует единый вход (single sign-on), сообщение выглядит так:

4077 4139 

4078```text theme={null}4140```text theme={null}

4079Your GitHub organization requires single sign-on. Disconnect and reconnect GitHub on the Connectors page in Claude on the web, click Authorize next to your organization when GitHub asks, then try again.4141Your GitHub organization requires single sign-on. Disconnect and reconnect GitHub on the Connectors page in Claude on the web, click Authorize next to your organization when GitHub asks, then try again.

4080```4142```

4081 4143 

4082Если доступ блокирует политика условного доступа Microsoft Entra ID, сообщение выглядит так:4144Когда его блокирует политика условного доступа Microsoft Entra ID, сообщение выглядит так:

4083 4145 

4084```text theme={null}4146```text theme={null}

4085Your GitHub organization's identity provider (Microsoft Entra ID) has a Conditional Access policy that is blocking Claude. Ask your GitHub Enterprise or Entra ID admin to allow Claude in that policy.4147Your GitHub organization's identity provider (Microsoft Entra ID) has a Conditional Access policy that is blocking Claude. Ask your GitHub Enterprise or Entra ID admin to allow Claude in that policy.


4087 4149 

4088**Что делать:**4150**Что делать:**

4089 4151 

4090* **Список разрешённых IP-адресов**: попросите владельца вашей организации или предприятия GitHub разрешить исходящие IP-адреса Anthropic. Адреса и настройки GitHub, которые нужно изменить, см. в разделе [Списки разрешённых адресов GitHub и брандмауэры](https://code.claude.com/docs/ru/network-config.md#github-allow-lists-and-firewalls).4152* **Список разрешённых IP-адресов**: попросите владельца вашей организации или корпоративного аккаунта GitHub разрешить исходящие IP-адреса Anthropic. Адреса и настройки GitHub, которые нужно изменить, см. в разделе [Списки разрешённых адресов и брандмауэры GitHub](https://code.claude.com/docs/ru/network-config.md#github-allow-lists-and-firewalls).

4091* **Единый вход**: отключите GitHub на странице [claude.ai/customize/connectors](https://claude.ai/customize/connectors), затем подключите его снова. Когда GitHub спросит, нажмите **Authorize** рядом с вашей организацией, чтобы новое подключение было авторизовано для её единого входа.4153* **Единый вход**: отключите GitHub на [claude.ai/customize/connectors](https://claude.ai/customize/connectors), затем подключите его снова. Когда GitHub запросит, нажмите **Authorize** рядом с вашей организацией, чтобы новое подключение было авторизовано для её единого входа.

4092* **Политика условного доступа**: попросите администратора GitHub Enterprise или Microsoft Entra ID разрешить Claude в этой политике4154* **Политика условного доступа**: попросите администратора GitHub Enterprise или Microsoft Entra ID разрешить Claude в этой политике

4093* После изменения выполните команду снова4155* После изменения выполните команду снова

4094 4156 

4095### Требуется авторизация единого входа4157### Single sign-on authorization needed

4096 4158 

4097Вы выполнили [`/install-github-app`](https://code.claude.com/docs/ru/github-actions#quick-setup) и выбрали репозиторий, организация которого требует единого входа SAML. Перед настройкой Claude Code проверяет ваш доступ к репозиторию с помощью GitHub CLI, и GitHub отклонил эту проверку, потому что ваш токен `gh` ещё не авторизован для организации. Мастер показывает предупреждение с шагами для авторизации:4159Вы выполнили [`/install-github-app`](https://code.claude.com/docs/ru/github-actions#quick-setup) и выбрали репозиторий, организация которого требует единого входа SAML. Перед настройкой Claude Code проверяет ваш доступ к репозиторию с помощью GitHub CLI, и GitHub отклонил эту проверку, потому что ваш токен `gh` ещё не авторизован для организации. Мастер настройки показывает предупреждение с шагами для авторизации:

4098 4160 

4099```text theme={null}4161```text theme={null}

4100Single sign-on authorization needed4162Single sign-on authorization needed


4104**Что делать:**4166**Что делать:**

4105 4167 

4106* Повторно авторизуйте вход в GitHub CLI со scope `repo` и `workflow`, выполнив `gh auth refresh -h github.com -s repo,workflow`, и авторизуйте организацию, когда GitHub запросит единый вход4168* Повторно авторизуйте вход в GitHub CLI со scope `repo` и `workflow`, выполнив `gh auth refresh -h github.com -s repo,workflow`, и авторизуйте организацию, когда GitHub запросит единый вход

4107* Если вы аутентифицируетесь с помощью персонального токена доступа в `GH_TOKEN`, откройте [github.com/settings/tokens](https://github.com/settings/tokens), выберите **Configure SSO** для токена и авторизуйте организацию4169* Если вы проходите аутентификацию с помощью персонального токена доступа в `GH_TOKEN`, откройте [github.com/settings/tokens](https://github.com/settings/tokens), выберите **Configure SSO** для токена и авторизуйте организацию

4108* Снова выполните `/install-github-app`4170* Выполните `/install-github-app` снова

4109 4171 

4110До версии v2.1.273 Claude Code в этой ситуации вместо этого показывал предупреждение `Admin permissions required`.4172До версии v2.1.273 Claude Code в этой ситуации вместо этого показывал предупреждение `Admin permissions required`.

4111 4173 

4112### Не удалось возобновить диалог4174### Failed to resume the conversation

4113 4175 

4114Claude Code не смог прочитать или обработать сохранённый транскрипт сессии, которую вы выбрали в [средстве выбора `claude --resume`](https://code.claude.com/docs/ru/sessions#use-the-session-picker), поэтому он завершает процесс, а не продолжает работу в частично загруженном состоянии. Сообщение содержит команду для повторной попытки:4176Claude Code не смог прочитать или обработать сохранённый транскрипт сессии, выбранной в [средстве выбора `claude --resume`](https://code.claude.com/docs/ru/sessions#use-the-session-picker), поэтому он завершает процесс, а не продолжает работу в частично загруженном состоянии. Сообщение содержит команду для повторной попытки:

4115 4177 

4116```text theme={null}4178```text theme={null}

4117Failed to resume the conversation.4179Failed to resume the conversation.

4118Run claude --resume <session-id> to retry, or claude to start a new session.4180Run claude --resume <session-id> to retry, or claude to start a new session.

4119```4181```

4120 4182 

4121После показа сообщения Claude Code завершается с кодом 1. Средство выбора `/resume` внутри работающей сессии вместо этого сообщает `Failed to resume conversation` в диалоге, и ваша текущая сессия продолжает работать. До версии v2.1.216 неудачное возобновление из средства выбора `claude --resume` бесконечно оставалось на индикаторе `Resuming conversation…` вместо показа этого сообщения.4183После вывода сообщения Claude Code завершает работу с кодом 1. Средство выбора `/resume` внутри работающей сессии вместо этого сообщает `Failed to resume conversation` в диалоге, и ваша текущая сессия продолжает работать. До версии v2.1.216 неудачное возобновление из средства выбора `claude --resume` бесконечно оставалось на индикаторе `Resuming conversation…` вместо вывода этого сообщения.

4122 4184 

4123**Что делать:**4185**Что делать:**

4124 4186 

4125* Выполните `claude --resume <session-id>` с ID сессии из сообщения, чтобы повторить попытку4187* Выполните `claude --resume <session-id>` с ID сессии из сообщения, чтобы повторить попытку

4126* В версиях до v2.1.285, если повторная попытка завершается так же, выполните `claude update` и возобновите сессию снова. Эти версии не могут возобновить сессию, если сохранённый транскрипт содержит запись, которую они не могут прочитать.4188* В версии до v2.1.285, если повторная попытка завершается так же, выполните `claude update` и возобновите сессию снова. Эти версии не могут возобновить сессию, если сохранённый транскрипт содержит запись, которую они не умеют читать.

4127* Если повторная попытка снова не удалась, выполните `claude`, чтобы начать новую сессию4189* Если повторная попытка снова не удалась, выполните `claude`, чтобы начать новую сессию

4128 4190 

4129### Не найден диалог с ID сессии4191### No conversation found with the session ID

4130 4192 

4131Вы передали ID сессии в `claude --resume <session-id>`, и ни один сохранённый транскрипт ему не соответствует:4193Вы передали ID сессии в `claude --resume <session-id>`, и ни один сохранённый транскрипт ему не соответствует:

4132 4194 


4134No conversation found with session ID: <session-id>4196No conversation found with session ID: <session-id>

4135```4197```

4136 4198 

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

4138 4200 

4139Распространённые причины:4201Распространённые причины:

4140 4202 

4141* **Опечатка в ID**: для неинтерактивного запуска ID — это поле `session_id` в [выводе `--output-format json`](https://code.claude.com/docs/ru/headless#get-structured-output)4203* **Опечатка в ID**: для неинтерактивного запуска ID — это поле `session_id` в [выводе `--output-format json`](https://code.claude.com/docs/ru/headless#get-structured-output)

4142* **Удалённый транскрипт**: Claude Code удаляет транскрипты по истечении [срока хранения](https://code.claude.com/docs/ru/sessions.md#where-transcripts-are-stored), по умолчанию 30 дней, в соответствии с [правилами очистки](https://code.claude.com/docs/ru/claude-directory.md#cleaned-up-automatically)4204* **Удалённый транскрипт**: Claude Code удаляет транскрипты по истечении [срока хранения](https://code.claude.com/docs/ru/sessions.md#where-transcripts-are-stored), по умолчанию 30 дней, согласно [правилам очистки при хранении](https://code.claude.com/docs/ru/claude-directory.md#cleaned-up-automatically)

4143* **Другая машина**: Claude Code хранит транскрипты локально, поэтому возобновляйте сессию на той машине, где она выполнялась4205* **Другая машина**: Claude Code хранит транскрипты локально, поэтому возобновляйте сессию на той машине, где она выполнялась

4144* **Дублирующиеся копии**: если вы скопировали каталог проекта в `~/.claude/projects` так, что два транскрипта имеют одинаковый ID, Claude Code выводит это сообщение, а не возобновляет произвольно выбранную копию4206* **Дублирующиеся копии**: если вы скопировали каталог проекта в `~/.claude/projects` и два транскрипта имеют один и тот же ID, Claude Code выводит это сообщение, а не возобновляет произвольную копию

4145 4207 

4146**Что делать:**4208**Что делать:**

4147 4209 

4148* Для интерактивной сессии откройте [средство выбора сессий](https://code.claude.com/docs/ru/sessions.md#use-the-session-picker) с помощью `claude --resume` и нажмите `Ctrl+A`, чтобы расширить его до всех проектов на этой машине, затем выберите сессию4210* Для интерактивной сессии откройте [средство выбора сессий](https://code.claude.com/docs/ru/sessions.md#use-the-session-picker) с помощью `claude --resume` и нажмите `Ctrl+A`, чтобы расширить его на все проекты на этой машине, затем выберите сессию

4149* Сессии, созданные с помощью `claude -p` или [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md), не отображаются в средстве выбора, поэтому перепроверьте ID по значению `session_id`, которое вывел исходный запуск4211* Сессии, созданные с помощью `claude -p` или [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md), не отображаются в средстве выбора, поэтому ещё раз сверьте ID с `session_id`, который вывел ваш исходный запуск

4150 4212 

4151### Windows сообщила об ошибке (EBADF), когда Claude Code читал файл транскрипта этой сессии4213### Windows reported an error (EBADF) when Claude Code read this session's transcript file

4152 4214 

4153Вы возобновили сессию в Windows, её сохранённый [файл транскрипта](https://code.claude.com/docs/ru/sessions.md#where-transcripts-are-stored) открылся нормально, но затем чтение завершилось системной ошибкой EBADF. Системная ошибка не объясняет, почему чтение не удалось, поэтому сообщение предлагает вероятные причины и что можно попробовать:4215Вы возобновили сессию в Windows, её сохранённый [файл транскрипта](https://code.claude.com/docs/ru/sessions.md#where-transcripts-are-stored) открылся нормально, а затем его чтение завершилось системной ошибкой EBADF. Системная ошибка не объясняет, почему чтение не удалось, поэтому сообщение предлагает вероятные причины и то, что можно попробовать:

4154 4216 

4155```text theme={null}4217```text theme={null}

4156Windows reported an error (EBADF) when Claude Code read this session's transcript file, although the file had opened normally. This can happen when other software intercepts file reads — security, encryption or endpoint-management tools, for example. If it keeps happening for this conversation, try excluding the folder that holds Claude Code's session transcripts from such software (the .claude folder in your user profile, unless the app or CLAUDE_CONFIG_DIR points Claude Code elsewhere), or adding Claude Code to its allowed applications, then resume again.4218Windows reported an error (EBADF) when Claude Code read this session's transcript file, although the file had opened normally. This can happen when other software intercepts file reads — security, encryption or endpoint-management tools, for example. If it keeps happening for this conversation, try excluding the folder that holds Claude Code's session transcripts from such software (the .claude folder in your user profile, unless the app or CLAUDE_CONFIG_DIR points Claude Code elsewhere), or adding Claude Code to its allowed applications, then resume again.

4157```4219```

4158 4220 

4159Сообщение следует за собственной строкой ошибки команды, например `Failed to resume session <session-id>`. Команда `claude --resume` или [`claude -p`](https://code.claude.com/docs/ru/headless) после его показа завершается с кодом 1. После `/resume` внутри сессии ваша текущая сессия продолжает работать.4221Сообщение следует за собственной строкой ошибки команды, например `Failed to resume session <session-id>`. Команда `claude --resume` или [`claude -p`](https://code.claude.com/docs/ru/headless) после его вывода завершает работу с кодом 1. После `/resume` внутри сессии ваша текущая сессия продолжает работать.

4160 4222 

4161**Что делать:**4223**Что делать:**

4162 4224 

4163* Исключите папку с транскриптами сессий из обработки программами, которые сканируют или перехватывают чтение файлов, например средствами безопасности, шифрования или управления конечными точками. По умолчанию транскрипты находятся в `%USERPROFILE%\.claude\projects` или в каталоге, указанном в [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ru/env-vars)4225* Исключите папку с транскриптами сессий из программ, которые сканируют или перехватывают чтение файлов, например средств безопасности, шифрования или управления конечными устройствами. По умолчанию транскрипты хранятся в `%USERPROFILE%\.claude\projects` или в каталоге, указанном в [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ru/env-vars)

4164* Если добавить исключение невозможно, добавьте вместо этого Claude Code в список разрешённых приложений этой программы4226* Если добавить исключение невозможно, добавьте вместо этого Claude Code в список разрешённых приложений этой программы

4165* Снова возобновите сессию4227* Снова возобновите сессию

4166 4228 

4167До версии v2.1.282 ошибка не сопровождалась объяснением: `claude --resume <session-id>` завершался на `Failed to resume session <session-id>`, а запуск с `-p` выводил только текст системной ошибки, например `Failed to resume session: EBADF: bad file descriptor, read`.4229До версии v2.1.282 сбой не сопровождался объяснением: `claude --resume <session-id>` заканчивался на `Failed to resume session <session-id>`, а запуск с `-p` выводил только текст системной ошибки, например `Failed to resume session: EBADF: bad file descriptor, read`.

4168 4230 

4169### Невозможно переключить рендерер в этой сессии4231### Cannot switch renderers in this session

4170 4232 

4171При переключении рендерера Claude Code перезапускает свой процесс. Вы выполнили [`/tui`](https://code.claude.com/docs/ru/fullscreen#enable-fullscreen-rendering) в сессии, которую Claude Code отказывается перезапускать, поэтому он не переключается и ничего не сохраняет. Причину можно определить по тому, какое сообщение вы видите:4233Когда вы переключаете рендерер, Claude Code перезапускает свой процесс. Вы выполнили [`/tui`](https://code.claude.com/docs/ru/fullscreen#enable-fullscreen-rendering) в сессии, которую Claude Code отказывается перезапускать, поэтому он не переключается и ничего не сохраняет. Причину можно определить по тому, какое сообщение вы видите:

4172 4234 

4173* `Cannot switch renderers while work is running in the background`: у вас выполняется фоновая работа, которую перезапуск прервал бы, например фоновая оболочка или субагент. Дождитесь завершения работы или остановите её с помощью [`/tasks`](https://code.claude.com/docs/ru/commands), затем снова выполните `/tui fullscreen` или `/tui default`4235* `Cannot switch renderers while work is running in the background`: у вас выполняется фоновая работа, которую перезапуск прервал бы, например фоновая оболочка или субагент. Дождитесь завершения работы или остановите её с помощью [`/tasks`](https://code.claude.com/docs/ru/commands), затем снова выполните `/tui fullscreen` или `/tui default`

4174* `Cannot switch renderers in this session`: у сессии есть ограничения, которые Claude Code не может передать перезапущенному процессу. До версии v2.1.234 Claude Code всё равно выполнял перезапуск, и перезапущенная сессия работала без них4236* `Cannot switch renderers in this session`: у сессии есть ограничения, которые Claude Code не может передать перезапущенному процессу. До версии v2.1.234 Claude Code всё равно выполнял перезапуск, и перезапущенная сессия работала без них

4175 4237 

4176В сообщении об ограничениях часть в скобках называет ограничения, которые обнаружил Claude Code:4238В сообщении об ограничениях часть в скобках называет ограничения, обнаруженные Claude Code:

4177 4239 

4178```text theme={null}4240```text theme={null}

4179Cannot switch renderers in this session — it has restrictions a restart can't carry over (permission rules set for this session only). Nothing was changed. Running /tui fullscreen in a session started without them switches every later session too.4241Cannot switch renderers in this session — it has restrictions a restart can't carry over (permission rules set for this session only). Nothing was changed. Running /tui fullscreen in a session started without them switches every later session too.


4182Каждая причина, которую сообщение может показать в скобках:4244Каждая причина, которую сообщение может показать в скобках:

4183 4245 

4184* `launch flags: a custom system prompt, a tool allowlist, or restricted settings`: вы запустили сессию с флагом, который Claude Code не передаёт обратно перезапущенному процессу. К таким флагам относятся [`--system-prompt`](https://code.claude.com/docs/ru/cli-reference#cli-flags), `--system-prompt-file`, `--append-system-prompt-file`, список разрешённых инструментов [`--tools`](https://code.claude.com/docs/ru/cli-reference#cli-flags), [`--setting-sources`](https://code.claude.com/docs/ru/cli-reference#cli-flags) и [`--permission-prompt-tool`](https://code.claude.com/docs/ru/cli-reference#cli-flags)4246* `launch flags: a custom system prompt, a tool allowlist, or restricted settings`: вы запустили сессию с флагом, который Claude Code не передаёт обратно перезапущенному процессу. К таким флагам относятся [`--system-prompt`](https://code.claude.com/docs/ru/cli-reference#cli-flags), `--system-prompt-file`, `--append-system-prompt-file`, список разрешённых инструментов [`--tools`](https://code.claude.com/docs/ru/cli-reference#cli-flags), [`--setting-sources`](https://code.claude.com/docs/ru/cli-reference#cli-flags) и [`--permission-prompt-tool`](https://code.claude.com/docs/ru/cli-reference#cli-flags)

4185* `permission rules set for this session only`: [обновление разрешений](https://code.claude.com/docs/ru/hooks.md#permission-update-entries) от хука или вызывающей стороны SDK добавило правила запрета или запроса с назначением `session`. Правила разрешения с областью действия сессии не вызывают отказа. Перезапуск их отбрасывает, и Claude Code вместо этого снова запрашивает подтверждение4247* `permission rules set for this session only`: [обновление разрешений](https://code.claude.com/docs/ru/hooks.md#permission-update-entries) от хука или вызывающей стороны SDK добавило правила запрета (deny) или запроса (ask) с назначением `session`. Правила разрешения (allow) уровня сессии не вызывают отказа. Перезапуск их отбрасывает, и Claude Code вместо этого снова запрашивает подтверждение

4186* `ask-before-running rules with no command-line form`: обновление разрешений от хука или вызывающей стороны SDK добавило правила запроса наряду с правилами, которые Claude Code передаёт обратно как `--allowed-tools` и `--disallowed-tools`. Флага для правил запроса не существует4248* `ask-before-running rules with no command-line form`: обновление разрешений от хука или вызывающей стороны SDK добавило правила запроса (ask) наряду с правилами, которые Claude Code передаёт обратно как `--allowed-tools` и `--disallowed-tools`. Для правил запроса флага не существует

4187* `permission rules a command line cannot carry intact` и `added directories a command line cannot carry intact`: обновление разрешений добавило правило или путь к каталогу в ходе сессии. Командная строка перезапущенного процесса не может передать этот текст как то же самое значение4249* `permission rules a command line cannot carry intact` и `added directories a command line cannot carry intact`: обновление разрешений добавило правило или путь к каталогу в середине сессии. Командная строка перезапущенного процесса не может передать этот текст в виде того же значения

4188 4250 

4189**Что делать:**4251**Что делать:**

4190 4252 

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

4192 4254 

4193### Can't restart while work is running or Remote Control is connected4255### Can't restart while work is running or Remote Control is connected

4194 4256 

4195Claude Code не перезапустился, и ваша сессия продолжает работать как прежде. Следуйте исправлению, указанному в сообщении.4257Claude Code не перезапустился, и ваша сессия продолжает работать как прежде. Следуйте указаниям по исправлению из сообщения.

4196 4258 

4197### Claude Code couldn't restart4259### Claude Code couldn't restart

4198 4260 

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

4200 4262 

4201```text theme={null}4263```text theme={null}

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

4203```4265```

4204 4266 

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

4206 4268 

4207**Что делать:**4269**Что делать:**

4208 4270 

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

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

4211 4273 

4212### Не удалось открыть Claude Desktop4274### Couldn't open Claude Desktop

4213 4275 

4214Вы выполнили [`/desktop`](https://code.claude.com/docs/ru/desktop#coming-from-the-cli) или его псевдоним `/app` в сессии либо [`claude --desktop`](https://code.claude.com/docs/ru/cli-reference#cli-flags) в оболочке, и системная команда, которую Claude Code использует для открытия Claude Desktop, завершилась ошибкой. После `/desktop` сессия остаётся в терминале; `claude --desktop` выводит сообщение без префикса `Error:` и завершается со статусом 1.4276Вы выполнили [`/desktop`](https://code.claude.com/docs/ru/desktop#coming-from-the-cli) или её псевдоним `/app` в сессии либо [`claude --desktop`](https://code.claude.com/docs/ru/cli-reference#cli-flags) в оболочке, и системная команда, которую Claude Code использует для открытия Claude Desktop, завершилась ошибкой. После `/desktop` сессия остаётся в терминале; `claude --desktop` выводит сообщение без префикса `Error:` и завершает работу со статусом 1.

4215 4277 

4216Текст в скобках называет команду, завершившуюся ошибкой, с её кодом завершения и первой строкой вывода ошибок, если она их выдала. В macOS это команда `open`, как в этом примере; в Windows — `rundll32`:4278Текст в скобках называет команду, завершившуюся ошибкой, с её кодом выхода и первой строкой вывода ошибок, если она их выдала. В macOS это команда `open`, как в этом примере; в Windows — `rundll32`:

4217 4279 

4218```text theme={null}4280```text theme={null}

4219Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and try again.4281Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and try again.


4222**Что делать:**4284**Что делать:**

4223 4285 

4224* Откройте Claude Desktop самостоятельно, затем снова выполните `/desktop` или `claude --desktop`4286* Откройте Claude Desktop самостоятельно, затем снова выполните `/desktop` или `claude --desktop`

4225* Чтобы прочитать полный вывод ошибок неудавшейся команды, включите отладочное логирование с помощью `/debug` и снова выполните `/desktop` или выполните `claude --desktop --debug-file <path>`, затем проверьте отладочный лог4287* Чтобы прочитать полный вывод ошибок неудавшейся команды, включите отладочное логирование с помощью `/debug` и снова выполните `/desktop` либо выполните `claude --desktop --debug-file <path>`, затем проверьте отладочный лог

4226 4288 

4227До версии v2.1.285 сообщение заканчивалось словами `Open Claude Desktop and run /desktop again.` До версии v2.1.275 оно выглядело как `Failed to open Claude Desktop. Please try opening it manually.` и не сообщало, что именно не удалось.4289До версии v2.1.285 сообщение заканчивалось фразой `Open Claude Desktop and run /desktop again.` До версии v2.1.275 оно выглядело как `Failed to open Claude Desktop. Please try opening it manually.` и не сообщало, что именно не удалось.

4228 4290 

4229### /terminal-setup оставил вашу раскладку клавиш Zed без изменений4291### /terminal-setup оставила ваш keymap Zed без изменений

4230 4292 

4231Вы выполнили [`/terminal-setup`](https://code.claude.com/docs/ru/terminal-config#enter-multiline-prompts) в Zed, и Claude Code не смог завершить обновление вашего файла Zed `keymap.json`, поэтому оставил файл как есть.4293Вы выполнили [`/terminal-setup`](https://code.claude.com/docs/ru/terminal-config#enter-multiline-prompts) в Zed, и Claude Code не смог завершить обновление вашего `keymap.json` для Zed, поэтому оставил файл как есть.

4232 4294 

4233Каждое сообщение указывает путь к вашей раскладке клавиш и заканчивается блоком сочетания клавиш, который нужно добавить самостоятельно:4295Каждое сообщение указывает путь к вашему keymap и заканчивается блоком сочетаний клавиш, который нужно добавить самостоятельно:

4234 4296 

4235```text theme={null}4297```text theme={null}

4236Couldn't update your Zed keymap, so it was left unchanged.4298Couldn't update your Zed keymap, so it was left unchanged.


4241Первая строка сообщения называет причину:4303Первая строка сообщения называет причину:

4242 4304 

4243* `Couldn't read your Zed keymap, so it was left unchanged.`: Claude Code не смог прочитать файл, например из-за прав доступа к файлу4305* `Couldn't read your Zed keymap, so it was left unchanged.`: Claude Code не смог прочитать файл, например из-за прав доступа к файлу

4244* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.`: файл прочитан успешно, но не разбирается как массив блоков сочетаний клавиш, даже с учётом допустимых комментариев `//` и завершающих запятых4306* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.`: файл прочитан, но не разбирается как массив блоков сочетаний клавиш, даже с учётом допустимых комментариев `//` и завершающих запятых

4245* `Couldn't back up your Zed keymap; not modifying it.`: Claude Code не смог скопировать файл в резервную копию `.bak` рядом с ним, поэтому ничего не изменил4307* `Couldn't back up your Zed keymap; not modifying it.`: Claude Code не смог скопировать файл в резервную копию `.bak` рядом с ним, поэтому ничего не изменил

4246* `Couldn't update your Zed keymap, so it was left unchanged.`: объединённый результат не прошёл проверку как корректная раскладка клавиш, содержащая сочетание, поэтому Claude Code отбросил его вместо записи. Причиной может быть блок сочетаний клавиш с повторяющимся ключом4308* `Couldn't update your Zed keymap, so it was left unchanged.`: объединённый результат не прошёл проверку как корректный keymap, содержащий сочетание клавиш, поэтому Claude Code отбросил его вместо записи. Причиной может быть блок сочетаний клавиш с повторяющимся ключом

4247 4309 

4248**Что делать:**4310**Что делать:**

4249 4311 

4250* Скопируйте блок из сообщения в массив верхнего уровня в вашем `keymap.json` по пути, указанному в сообщении4312* Скопируйте блок из сообщения в массив верхнего уровня в вашем `keymap.json` по пути, указанному в сообщении

4251* Для `isn't a readable list of keybindings` исправьте синтаксическую ошибку или сделайте значение верхнего уровня файла массивом, затем снова выполните `/terminal-setup`4313* В случае `isn't a readable list of keybindings` исправьте синтаксическую ошибку или сделайте значение верхнего уровня файла массивом, затем снова выполните `/terminal-setup`

4252 4314 

4253До версии v2.1.247 `/terminal-setup` не мог разобрать раскладку клавиш Zed, в которой использовались комментарии `//` или завершающие запятые, и заменял весь файл только своим сочетанием клавиш, сообщая при этом, что сочетание установлено. Чтобы восстановить раскладку клавиш, заменённую более ранней версией, используйте резервный файл `.bak`, описанный в разделе [Ввод многострочных промптов](https://code.claude.com/docs/ru/terminal-config.md#enter-multiline-prompts).4315До версии v2.1.247 `/terminal-setup` не могла разобрать keymap Zed, в котором использовались комментарии `//` или завершающие запятые, и заменяла весь файл только своим сочетанием клавиш, сообщая при этом, что сочетание установлено. Чтобы восстановить keymap, заменённый более ранней версией, используйте резервную копию `.bak`, описанную в разделе [Ввод многострочных промптов](https://code.claude.com/docs/ru/terminal-config.md#enter-multiline-prompts).

4254 4316 

4255### Отчёты об использовании скиллов недоступны в этом подключении4317### Skill usage reports are not available on this connection

4256 4318 

4257Вы выполнили [`/skill-doctor`](https://code.claude.com/docs/ru/skills#find-unused-skills) через [Remote Control](https://code.claude.com/docs/ru/remote-control.md) с телефона или из браузера. Claude Code не отправляет отчёт об использовании скиллов через Remote Control и вместо этого отвечает таким сообщением:4319Вы выполнили [`/skill-doctor`](https://code.claude.com/docs/ru/skills#find-unused-skills) через [Remote Control](https://code.claude.com/docs/ru/remote-control.md) с телефона или из браузера. Claude Code не отправляет отчёт об использовании скиллов через Remote Control и вместо этого отвечает таким сообщением:

4258 4320 


4264 4326 

4265* Выполните `/skill-doctor` в терминале на машине, где работает сессия, или выполните там `claude -p "/skill-doctor"`4327* Выполните `/skill-doctor` в терминале на машине, где работает сессия, или выполните там `claude -p "/skill-doctor"`

4266 4328 

4267### Пользовательские стили вывода нельзя выбрать через Remote Control4329### Custom output styles can't be selected over Remote Control

4268 4330 

4269Вы выполнили [`/output-style`](https://code.claude.com/docs/ru/output-styles#change-your-output-style) из мобильного приложения или веб-интерфейса через [Remote Control](https://code.claude.com/docs/ru/remote-control.md), либо команда пришла в сообщении, переданном в сессию. Поскольку такой ход может исходить не от владельца учётной записи, Claude Code показывает и позволяет выбрать в нём только [встроенные стили](https://code.claude.com/docs/ru/output-styles.md#built-in-output-styles) и добавляет это уведомление всякий раз, когда команда выводит список стилей или не распознаёт указанное вами имя. На имя [пользовательского стиля](https://code.claude.com/docs/ru/output-styles.md#create-a-custom-output-style) выдаётся тот же ответ, что и на несуществующее имя:4331Вы выполнили [`/output-style`](https://code.claude.com/docs/ru/output-styles#change-your-output-style) из мобильного приложения или веба через [Remote Control](https://code.claude.com/docs/ru/remote-control.md), или команда пришла в сообщении, переданном в сессию. Поскольку такой ход может исходить не от владельца аккаунта, Claude Code показывает и позволяет выбрать в нём только [встроенные стили](https://code.claude.com/docs/ru/output-styles.md#built-in-output-styles) и добавляет это уведомление всякий раз, когда команда выводит список стилей или не распознаёт указанное вами имя. Имя [пользовательского стиля](https://code.claude.com/docs/ru/output-styles.md#create-a-custom-output-style) получает тот же ответ, что и несуществующее имя:

4270 4332 

4271```text theme={null}4333```text theme={null}

4272Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.4334Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.


4277* Выберите встроенный стиль, например `/output-style concise`4339* Выберите встроенный стиль, например `/output-style concise`

4278* Чтобы использовать пользовательский стиль, задайте [`outputStyle`](https://code.claude.com/docs/ru/settings-reference#outputstyle) в файле `.claude/settings.local.json` проекта или выполните `/output-style <style>` в собственном терминале сессии, если он у неё есть4340* Чтобы использовать пользовательский стиль, задайте [`outputStyle`](https://code.claude.com/docs/ru/settings-reference#outputstyle) в файле `.claude/settings.local.json` проекта или выполните `/output-style <style>` в собственном терминале сессии, если он у неё есть

4279 4341 

4280### Стили вывода сохраняются в локальные настройки, которые эта сессия не загружает4342### Output styles are saved to local settings which this session doesn't load

4281 4343 

4282Вы попытались переключить [стиль вывода](https://code.claude.com/docs/ru/output-styles.md) с помощью `/output-style <style>` или `/config outputStyle=<style>` в сессии, источники настроек которой не включают `local`. Примеры — сессия [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/typescript.md), у которой [`settingSources`](https://code.claude.com/docs/ru/agent-sdk/typescript#options) не содержит `"local"`, и сессия CLI, запущенная со значением [`--setting-sources`](https://code.claude.com/docs/ru/cli-reference#cli-flags), не включающим `local`. Обе команды сохраняют стиль в `.claude/settings.local.json` — файл, который такая сессия никогда не читает, поэтому Claude Code отказывается, а не записывает настройку, которая не будет иметь эффекта:4344Вы попытались переключить [стиль вывода](https://code.claude.com/docs/ru/output-styles.md) с помощью `/output-style <style>` или `/config outputStyle=<style>` в сессии, источники настроек которой не включают `local`. Примеры: сессия [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/typescript.md), в [`settingSources`](https://code.claude.com/docs/ru/agent-sdk/typescript#options) которой отсутствует `"local"`, и сессия CLI, запущенная со значением [`--setting-sources`](https://code.claude.com/docs/ru/cli-reference#cli-flags), не включающим `local`. Обе команды сохраняют стиль в `.claude/settings.local.json` — файл, который такая сессия никогда не читает, поэтому Claude Code отказывается, а не записывает настройку, которая не возымела бы действия:

4283 4345 

4284```text theme={null}4346```text theme={null}

4285Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.4347Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.


4288**Что делать:**4350**Что делать:**

4289 4351 

4290* Добавьте `local` в источники настроек сессии и переключите стиль снова4352* Добавьте `local` в источники настроек сессии и переключите стиль снова

4291* Задайте ключ [`outputStyle`](https://code.claude.com/docs/ru/settings-reference#outputstyle) в файле настроек, который сессия загружает, например в `.claude/settings.json` в проекте или в `~/.claude/settings.json`. В TypeScript SDK вместо этого задайте `outputStyle` внутри встроенного объекта `settings`; см. [Активация стиля вывода](https://code.claude.com/docs/ru/agent-sdk/modifying-system-prompts.md#activate-an-output-style)4353* Задайте ключ [`outputStyle`](https://code.claude.com/docs/ru/settings-reference#outputstyle) в файле настроек, который сессия загружает, например в `.claude/settings.json` проекта или в `~/.claude/settings.json`. В TypeScript SDK вместо этого задайте `outputStyle` внутри встроенного объекта `settings`; см. [Активация стиля вывода](https://code.claude.com/docs/ru/agent-sdk/modifying-system-prompts.md#activate-an-output-style)

4292 4354 

4293### /recap выполняется, только когда вы запрашиваете его сами4355### /recap only runs when you ask for it yourself

4294 4356 

4295Запрос [`/recap`](https://code.claude.com/docs/ru/interactive-mode#session-recap) поступил не из вашего собственного ввода. Он пришёл в сообщении, переданном в сессию из ветки Slack, Teams или [проекта](https://code.claude.com/docs/ru/claude-projects.md), либо в промпте, отправленном [облачной запланированной задачей](https://code.claude.com/docs/ru/routines.md) или другой программой.4357Запрос [`/recap`](https://code.claude.com/docs/ru/interactive-mode#session-recap) поступил не из вашего собственного ввода. Он пришёл в сообщении, переданном в сессию из треда Slack, Teams или [проекта](https://code.claude.com/docs/ru/claude-projects.md), либо в промпте, который отправила [облачная запланированная задача](https://code.claude.com/docs/ru/routines.md) или другая программа.

4296 4358 

4297Переданное сообщение получает это уведомление, даже если вы написали его сами. Claude Code не может определить, что переданное или автоматическое сообщение исходит от человека, под чьей учётной записью работает сессия, поэтому вместо сводки отвечает этим уведомлением:4359Переданное сообщение получает это уведомление, даже если его написали вы сами. Claude Code не может определить, что переданное или автоматическое сообщение исходит от человека, чей аккаунт запускает сессию, поэтому вместо сводки отвечает этим уведомлением:

4298 4360 

4299```text theme={null}4361```text theme={null}

4300/recap only runs when you ask for it yourself in this session: from the terminal, the Claude app or claude.ai/code, or over Remote Control. A message relayed from Slack, Teams or a project thread, or sent by a routine or another program, can't request it.4362/recap only runs when you ask for it yourself in this session: from the terminal, the Claude app or claude.ai/code, or over Remote Control. A message relayed from Slack, Teams or a project thread, or sent by a routine or another program, can't request it.


4304 4366 

4305**Что делать:**4367**Что делать:**

4306 4368 

4307* Откройте сессию самостоятельно и выполните `/recap` там: в её терминале, в [приложении Desktop](https://code.claude.com/docs/ru/desktop.md) или [мобильном приложении](https://code.claude.com/docs/ru/mobile.md), на [claude.ai/code](https://claude.ai/code) или через [Remote Control](https://code.claude.com/docs/ru/remote-control.md)4369* Откройте сессию сами и выполните там `/recap`: в её терминале, в [приложении Desktop](https://code.claude.com/docs/ru/desktop.md) или [мобильном приложении](https://code.claude.com/docs/ru/mobile.md), на [claude.ai/code](https://claude.ai/code) или через [Remote Control](https://code.claude.com/docs/ru/remote-control.md)

4308* Если его отправила облачная запланированная задача или другая программа, удалите `/recap` из этого промпта4370* Если её отправила облачная запланированная задача или другая программа, удалите `/recap` из этого промпта

4309 4371 

4310### /feedback is disabled by your organization's policy4372### /feedback is disabled by your organization's policy

4311 4373 

4312Это сообщение означает, что отправка отзывов о продукте отключена, поэтому введённая вами команда не открывает диалоговое окно отзыва. Это сообщение вызывают как политика организации, так и предыдущий отказ:4374Это сообщение означает, что отправка отзывов о продукте отключена, поэтому введённая вами команда не открывает диалоговое окно отзыва. Сообщение возникает как из-за политики организации, так и из-за ранее полученного отказа:

4313 4375 

4314* **Политика организации**: политика вашей организации не разрешает отправлять отзывы о продукте из Claude Code. `/feedback`, `/bug` и `/share` отвечают этим сообщением.4376* **Политика организации**: политика вашей организации не разрешает отправку отзывов о продукте из Claude Code. `/feedback`, `/bug` и `/share` отвечают этим сообщением.

4315* **Предыдущий отказ**: сервис отзывов отклонил отправленный вами отчёт, например с сообщением [`Couldn't send feedback: Feedback has not been enabled for your organization.`](#couldnt-send-feedback) После этого `/feedback` и `/bug` могут отвечать этим сообщением. Оно действует на этом компьютере в течение семи дней с момента отказа. Это относится к любому тарифному плану, включая Pro и Max.4377* **Ранее полученный отказ**: сервис отзывов отклонил отправленный вами отчёт, например с сообщением [`Couldn't send feedback: Feedback has not been enabled for your organization.`](#couldnt-send-feedback) После этого `/feedback` и `/bug` могут отвечать этим сообщением. Это действует семь дней с момента отказа на этой машине. Это касается любого тарифного плана, включая Pro и Max.

4316 4378 

4317Сообщение указывает команду, которую вы ввели в промпте Claude Code:4379Сообщение называет команду, которую вы ввели в промпте Claude Code:

4318 4380 

4319```text wrap theme={null}4381```text wrap theme={null}

4320/feedback is disabled by your organization's policy. To report a bug, open an issue at https://github.com/anthropics/claude-code/issues. Issues are public, so leave out anything confidential.4382/feedback is disabled by your organization's policy. To report a bug, open an issue at https://github.com/anthropics/claude-code/issues. Issues are public, so leave out anything confidential.


4324 4386 

4325**Что делать:**4387**Что делать:**

4326 4388 

4327* Чтобы сообщить об ошибке, создайте issue на [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues). Issues там может прочитать любой, поэтому не включайте код, транскрипты и любую другую конфиденциальную информацию.4389* Чтобы сообщить об ошибке, создайте issue на [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues). Issues там может прочитать кто угодно, поэтому не включайте код, транскрипты и любую другую конфиденциальную информацию.

4328* После предыдущего отказа подождите, пока пройдут семь дней, затем отправьте отчёт снова, чтобы проверить, отклоняет ли его сервис по-прежнему4390* После ранее полученного отказа подождите, пока пройдут семь дней, затем снова отправьте отчёт, чтобы проверить, отклоняет ли его сервис по-прежнему

4329 4391 

4330До v2.1.319 предыдущий отказ не вызывал это сообщение.4392До версии v2.1.319 ранее полученный отказ не приводил к этому сообщению.

4331 4393 

4332До версии v2.1.302 полное сообщение выглядело так: `/feedback is disabled by your organization's policy. Contact your organization admin to enable it.`4394До версии v2.1.302 полное сообщение выглядело так: `/feedback is disabled by your organization's policy. Contact your organization admin to enable it.`

4333 4395 


4490commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory4552commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory

4491```4553```

4492 4554 

4493Сообщение, в котором указан полный путь к одному из собственных файлов плагина из маркетплейса, например `hooks/hooks.json`, означает, что Claude Code пропустил этот файл. Это происходит, когда Claude Code не может подтвердить, что файл находится внутри плагина или, для плагина в [локальном маркетплейсе](https://code.claude.com/docs/ru/plugins/loading.md#in-place-and-copied-plugins), внутри этого маркетплейса. Сообщение указывает каждый из этих файлов под следующим именем компонента:4555Сообщение, в котором указан полный путь к одному из собственных файлов плагина из маркетплейса, например `hooks/hooks.json`, означает, что Claude Code пропустил этот файл. Когда Claude Code не может подтвердить, что файл находится внутри плагина или, для плагина в [локальном маркетплейсе](https://code.claude.com/docs/ru/plugins/loading.md#in-place-and-copied-plugins), внутри его маркетплейса, он пропускает этот файл. Сообщение указывает эти файлы под показанным именем компонента:

4494 4556 

4495* `hooks/hooks.json`: `hooks`4557* `hooks/hooks.json`: `hooks`

4496* `monitors/monitors.json`: `monitors`4558* `monitors/monitors.json`: `monitors`

4497* `settings.json`: `settings`

4498* `SKILL.md` в корне плагина: `skills`4559* `SKILL.md` в корне плагина: `skills`

4499 4560 

4500Например, это сообщение относится к `hooks/hooks.json`, который разрешается за пределы как плагина, так и его локального маркетплейса:4561Например, это сообщение относится к `hooks/hooks.json`, который разрешается за пределы как плагина, так и его локального маркетплейса:


5481Вы открыли [фоновую сессию](https://code.claude.com/docs/ru/agent-view.md), которая завершилась, пока фоновая служба была выключена, и с тех пор [очистка транскриптов](https://code.claude.com/docs/ru/settings-reference.md#cleanupperioddays) удалила её сохранённый диалог, например после того, как компьютер был выключен несколько недель. Открытие такой строки обычно [возобновляет её сохранённый диалог](https://code.claude.com/docs/ru/agent-view.md#sessions-show-as-failed-after-shutdown). Когда возобновлять нечего, Claude Code отказывает, а не выполняет исходный промпт сессии повторно без вашего ведома:5542Вы открыли [фоновую сессию](https://code.claude.com/docs/ru/agent-view.md), которая завершилась, пока фоновая служба была выключена, и с тех пор [очистка транскриптов](https://code.claude.com/docs/ru/settings-reference.md#cleanupperioddays) удалила её сохранённый диалог, например после того, как компьютер был выключен несколько недель. Открытие такой строки обычно [возобновляет её сохранённый диалог](https://code.claude.com/docs/ru/agent-view.md#sessions-show-as-failed-after-shutdown). Когда возобновлять нечего, Claude Code отказывает, а не выполняет исходный промпт сессии повторно без вашего ведома:

5482 5543 

5483```text theme={null}5544```text theme={null}

5484This session's saved conversation is no longer on disk (it ended while the background service was off, and old transcripts are cleaned up), so there is nothing to resume. `claude rm 7c5dcf5d` deletes the row; `claude respawn 7c5dcf5d` runs its original prompt again instead.5545This session's saved conversation is no longer on disk (it ended while the background service was off, and old transcripts are cleaned up), so there is nothing to resume. `claude rm 7c5dcf5d` removes the row; `claude respawn 7c5dcf5d` runs its original prompt again instead.

5485```5546```

5486 5547 

5487`claude attach <id>` выводит этот текст. В представлении агента нижняя строка короче и заканчивается на `ctrl+x deletes the row`.5548`claude attach <id>` выводит этот текст. В представлении агента нижняя строка короче и заканчивается на `ctrl+x removes the row`.

5488 5549 

5489**Что делать:**5550**Что делать:**

5490 5551 


5503 push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef5564 push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef

5504```5565```

5505 5566 

5506Если Claude Code не может составить сводку коммитов, строка с подробностями вместо этого гласит `The worktree has unpushed commits`. В [представлении агента](https://code.claude.com/docs/ru/agent-view.md) строка сессии показывает `not deleted` с той же причиной.5567Если Claude Code не может составить сводку коммитов, строка с подробностями вместо этого гласит `The worktree has unpushed commits`. В [представлении агента](https://code.claude.com/docs/ru/agent-view.md) строка сессии показывает `not removed` с той же причиной.

5507 5568 

5508Коммиты, находящиеся в удалённом репозитории, не блокируют удаление. Не блокируют его и коммиты в локальной копии ветки по умолчанию удалённого репозитория `origin`, если эта ветка извлечена в вашей основной рабочей копии, то есть в самом каталоге репозитория, а не в worktree.5569Коммиты, находящиеся в удалённом репозитории, не блокируют удаление. Не блокируют его и коммиты в локальной копии ветки по умолчанию удалённого репозитория `origin`, если эта ветка извлечена в вашей основной рабочей копии, то есть в самом каталоге репозитория, а не в worktree.

5509 5570 


5780 5841 

5781Эти ошибки исходят от программы, которая запустила Claude Code для вас, такой как расширение IDE или приложение [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md), а не от самого Claude Code.5842Эти ошибки исходят от программы, которая запустила Claude Code для вас, такой как расширение IDE или приложение [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md), а не от самого Claude Code.

5782 5843 

5844### Subprocess initialization did not complete within 60000ms

5845 

5846Эта ошибка означает, что процесс Claude Code, запущенный [расширением VS Code](https://code.claude.com/docs/ru/vs-code.md) или приложением Agent SDK, не сообщил вовремя о своей готовности. После этого расширение или приложение остановило его. В диалоге VS Code ошибка начинается с `Claude Code did not finish starting`, например:

5847 

5848```text theme={null}

5849Claude Code did not finish starting: it did not answer in time. The output logs ("View output logs") show how far it got. Slow plugins, MCP servers, hooks, disks or network can each cause this.

5850```

5851 

5852В выходных логах расширения, на его экране входа и в приложении Agent SDK ошибка выглядит иначе. Она начинается с `Subprocess initialization did not complete within` и ограничения по времени, а затем приводит то, что сообщил Claude Code, например:

5853 

5854```text theme={null}

5855Subprocess initialization did not complete within 60000ms. Claude Code did not answer the initialize request and reported no SessionStart or Setup hook running. Slow plugins, MCP servers, hooks that Claude Code does not report, disks or network can each cause this.

5856```

5857 

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

5859 

5860* Чтобы повторить попытку в VS Code, отправьте сообщение. Если ошибка появилась во время входа, вместо этого снова выберите способ входа.

5861* Чтобы увидеть, насколько далеко продвинулся Claude Code, нажмите **View output logs** под ошибкой в диалоге или выполните **Claude Code: Show Logs** из палитры команд. Приложите записи вокруг строки `Subprocess initialization`, когда будете [сообщать о проблеме](https://github.com/anthropics/claude-code/issues).

5862* Чтобы проверить сеть, см. [Конфигурация сети](https://code.claude.com/docs/ru/network-config.md). Если сообщение предлагает проверить вход или аутентификацию, см. [Вход и аутентификация](https://code.claude.com/docs/ru/troubleshoot-install.md#login-and-authentication).

5863* Если в сообщении сказано, что хуки [SessionStart](https://code.claude.com/docs/ru/hooks.md#sessionstart) или [Setup](https://code.claude.com/docs/ru/hooks.md#setup) не завершились, [проверьте, как долго выполняются ваши хуки](https://code.claude.com/docs/ru/hooks.md#debug-hooks). В VS Code первые 10 минут, в течение которых Claude Code сообщает о выполнении этих хуков, не учитываются в 60-секундном ограничении. Ускорьте завершение медленного хука, уменьшите [`timeout`](https://code.claude.com/docs/ru/hooks#common-fields) неасинхронного хука или [удалите хук](https://code.claude.com/docs/ru/hooks.md#disable-or-remove-hooks).

5864* Если ваше приложение Agent SDK вызывает [`startup()`](https://code.claude.com/docs/ru/agent-sdk/typescript#startup), задайте `initializeTimeoutMs` достаточно большим для всего запуска или оставьте его незаданным, чтобы до 10 минут сообщённого времени работы хуков не учитывались.

5865 

5866До версии расширения VS Code 2.1.304 и версии TypeScript Agent SDK 0.3.304 всё время работы хуков учитывалось в ограничении. При ограничении по умолчанию сообщение содержало `Subprocess initialization did not complete within 60000ms — check authentication and network connectivity`. Если вы видите такую формулировку, обновите расширение или SDK.

5867 

5783### Claude Code process exited with code N5868### Claude Code process exited with code N

5784 5869 

5785Базовый процесс `claude` завершился с ненулевым кодом. Сам код выхода не говорит, что не удалось: реальная ошибка находится в собственном выводе процесса, который обёртка добавляет, если она что-то захватила, в противном случае она хранит это в своих логах.5870Базовый процесс `claude` завершился с ненулевым кодом. Сам код выхода не говорит, что не удалось: реальная ошибка находится в собственном выводе процесса, который обёртка добавляет, если она что-то захватила, в противном случае она хранит это в своих логах.

Details

88 </tr>88 </tr>

89 89 

90 <tr>90 <tr>

91 <td>[Fast mode](https://code.claude.com/docs/ru/fast-mode.md)</td>91 <td>[Быстрый режим](https://code.claude.com/docs/ru/fast-mode.md)</td>

92 <td>✓ ([включено владельцем](https://code.claude.com/docs/ru/fast-mode.md#enable-fast-mode-for-your-organization) для Team и Enterprise)</td>92 <td>✓ ([включено владельцем](https://code.claude.com/docs/ru/fast-mode.md#enable-fast-mode-for-your-organization) для Team и Enterprise)</td>

93 <td>✓ (для Opus 5 и 4.8 требуется подготовленный доступ)</td>93 <td>✓ (для Opus 5 и 4.8 требуется подготовленный доступ)</td>

94 <td>✗</td>94 <td>✗</td>


98 </tr>98 </tr>

99 99 

100 <tr>100 <tr>

101 <td>[Auto mode](https://code.claude.com/docs/ru/auto-mode-config.md)</td>101 <td>[Авторежим](https://code.claude.com/docs/ru/auto-mode-config.md)</td>

102 <td>✓</td>102 <td>✓</td>

103 <td>✓</td>103 <td>✓</td>

104 <td>См. примечание <sup>[2](#fn2)</sup></td>104 <td>См. примечание <sup>[2](#fn2)</sup></td>


117 <td>✗</td>117 <td>✗</td>

118 </tr>118 </tr>

119 119 

120 <tr>

121 <td>[Code Mode](https://code.claude.com/docs/ru/code-mode.md)</td>

122 <td>✓ (экспериментально, [действуют требования](https://code.claude.com/docs/ru/code-mode.md#requirements))</td>

123 <td>✓ (экспериментально, [действуют требования](https://code.claude.com/docs/ru/code-mode.md#requirements))</td>

124 <td>✗</td>

125 <td>✗</td>

126 <td>✗</td>

127 <td>✗</td>

128 </tr>

129 

120 <tr>130 <tr>

121 <td>[Cross-session messaging](https://code.claude.com/docs/ru/cross-session-messaging.md)</td>131 <td>[Cross-session messaging](https://code.claude.com/docs/ru/cross-session-messaging.md)</td>

122 <td>✓ <sup>[5](#fn5)</sup></td>132 <td>✓ <sup>[5](#fn5)</sup></td>


128 </tr>138 </tr>

129 139 

130 <tr>140 <tr>

131 <td>[Channels](https://code.claude.com/docs/ru/channels.md)</td>141 <td>[Каналы](https://code.claude.com/docs/ru/channels.md)</td>

132 <td>✓</td>142 <td>✓</td>

133 <td>✓</td>143 <td>✓</td>

134 <td>✗</td>144 <td>✗</td>


231 241 

232> [tab] Amazon Bedrock242> [tab] Amazon Bedrock

233>243>

234> **Недоступно:** все [функции, требующие подписку Claude](#features-that-require-a-claude-subscription), плюс [веб-поиск](https://code.claude.com/docs/ru/tools-reference.md#websearch-tool-behavior), [fast mode](https://code.claude.com/docs/ru/fast-mode.md), [Advisor](https://code.claude.com/docs/ru/advisor.md), [Channels](https://code.claude.com/docs/ru/channels.md), [панель управления аналитики](https://code.claude.com/docs/ru/analytics.md), [server-managed settings](https://code.claude.com/docs/ru/server-managed-settings.md) и [команды `/design-sync` и `/import`](https://code.claude.com/docs/ru/commands#all-commands).244> **Недоступно:** все [функции, требующие подписку Claude](#features-that-require-a-claude-subscription), плюс [веб-поиск](https://code.claude.com/docs/ru/tools-reference.md#websearch-tool-behavior), [быстрый режим](https://code.claude.com/docs/ru/fast-mode.md), [Advisor](https://code.claude.com/docs/ru/advisor.md), [Каналы](https://code.claude.com/docs/ru/channels.md), [Code Mode](https://code.claude.com/docs/ru/code-mode.md), [панель управления аналитики](https://code.claude.com/docs/ru/analytics.md), [server-managed settings](https://code.claude.com/docs/ru/server-managed-settings.md) и [команды `/design-sync` и `/import`](https://code.claude.com/docs/ru/commands#all-commands).

235>245>

236> **Частичная поддержка:**246> **Частичная поддержка:**

237>247>


244 254 

245> [tab] Claude Platform на AWS255> [tab] Claude Platform на AWS

246>256>

247> **Недоступно:** все [функции, требующие подписку Claude](#features-that-require-a-claude-subscription), плюс [быстрый режим](https://code.claude.com/docs/ru/fast-mode.md), [Channels](https://code.claude.com/docs/ru/channels.md), [GitHub Actions](https://code.claude.com/docs/ru/github-actions.md), [панель управления аналитики](https://code.claude.com/docs/ru/analytics.md), [server-managed settings](https://code.claude.com/docs/ru/server-managed-settings.md) и [команды `/design-sync` и `/import`](https://code.claude.com/docs/ru/commands#all-commands).257> **Недоступно:** все [функции, требующие подписку Claude](#features-that-require-a-claude-subscription), плюс [быстрый режим](https://code.claude.com/docs/ru/fast-mode.md), [Каналы](https://code.claude.com/docs/ru/channels.md), [GitHub Actions](https://code.claude.com/docs/ru/github-actions.md), [Code Mode](https://code.claude.com/docs/ru/code-mode.md), [панель управления аналитики](https://code.claude.com/docs/ru/analytics.md), [server-managed settings](https://code.claude.com/docs/ru/server-managed-settings.md) и [команды `/design-sync` и `/import`](https://code.claude.com/docs/ru/commands#all-commands).

248>258>

249> **Доступно здесь, но не на Amazon Bedrock:** [веб-поиск](https://code.claude.com/docs/ru/tools-reference.md#websearch-tool-behavior), а также [Advisor](https://code.claude.com/docs/ru/advisor.md) в Claude Code v2.1.300 или более поздней версии.259> **Доступно здесь, но не на Amazon Bedrock:** [веб-поиск](https://code.claude.com/docs/ru/tools-reference.md#websearch-tool-behavior), а также [Advisor](https://code.claude.com/docs/ru/advisor.md) в Claude Code v2.1.300 или более поздней версии.

250>260>


256 266 

257> [tab] Google Cloud's Agent Platform267> [tab] Google Cloud's Agent Platform

258>268>

259> **Недоступно:** все [функции, требующие подписку Claude](#features-that-require-a-claude-subscription), плюс [Advisor](https://code.claude.com/docs/ru/advisor.md), [Channels](https://code.claude.com/docs/ru/channels.md), [панель управления аналитики](https://code.claude.com/docs/ru/analytics.md), [server-managed settings](https://code.claude.com/docs/ru/server-managed-settings.md) и [команды `/design-sync` и `/import`](https://code.claude.com/docs/ru/commands#all-commands).269> **Недоступно:** все [функции, требующие подписку Claude](#features-that-require-a-claude-subscription), плюс [Advisor](https://code.claude.com/docs/ru/advisor.md), [Каналы](https://code.claude.com/docs/ru/channels.md), [Code Mode](https://code.claude.com/docs/ru/code-mode.md), [панель управления аналитики](https://code.claude.com/docs/ru/analytics.md), [server-managed settings](https://code.claude.com/docs/ru/server-managed-settings.md) и [команды `/design-sync` и `/import`](https://code.claude.com/docs/ru/commands#all-commands).

260>270>

261> **Частичная поддержка:**271> **Частичная поддержка:**

262>272>


271 281 

272> [tab] Microsoft Foundry282> [tab] Microsoft Foundry

273>283>

274> **Недоступно:** все [функции, требующие подписку Claude](#features-that-require-a-claude-subscription), плюс [fast mode](https://code.claude.com/docs/ru/fast-mode.md), [Advisor](https://code.claude.com/docs/ru/advisor.md), [Channels](https://code.claude.com/docs/ru/channels.md), [GitLab CI/CD](https://code.claude.com/docs/ru/gitlab-ci-cd.md), [панель управления аналитики](https://code.claude.com/docs/ru/analytics.md), [server-managed settings](https://code.claude.com/docs/ru/server-managed-settings.md) и [команды `/design-sync` и `/import`](https://code.claude.com/docs/ru/commands#all-commands).284> **Недоступно:** все [функции, требующие подписку Claude](#features-that-require-a-claude-subscription), плюс [быстрый режим](https://code.claude.com/docs/ru/fast-mode.md), [Advisor](https://code.claude.com/docs/ru/advisor.md), [Каналы](https://code.claude.com/docs/ru/channels.md), [GitLab CI/CD](https://code.claude.com/docs/ru/gitlab-ci-cd.md), [Code Mode](https://code.claude.com/docs/ru/code-mode.md), [панель управления аналитики](https://code.claude.com/docs/ru/analytics.md), [server-managed settings](https://code.claude.com/docs/ru/server-managed-settings.md) и [команды `/design-sync` и `/import`](https://code.claude.com/docs/ru/commands#all-commands).

275>285>

276> **Частичная поддержка:**286> **Частичная поддержка:**

277>287>

gateways.md +1 −1

Details

63* **Телеметрия клиента**: Claude Code отключает свою аналитику, связанную с Anthropic, когда сеанс входит в Claude apps gateway. Чтобы также отключить аналитику запуска перед входом, доставьте [`DISABLE_TELEMETRY`](https://code.claude.com/docs/ru/managed-settings#turn-telemetry-off-for-your-organization) в [управляемых параметрах на стороне клиента](https://code.claude.com/docs/ru/claude-apps-gateway-config.md#client-side-managed-settings) на каждом устройстве.63* **Телеметрия клиента**: Claude Code отключает свою аналитику, связанную с Anthropic, когда сеанс входит в Claude apps gateway. Чтобы также отключить аналитику запуска перед входом, доставьте [`DISABLE_TELEMETRY`](https://code.claude.com/docs/ru/managed-settings#turn-telemetry-off-for-your-organization) в [управляемых параметрах на стороне клиента](https://code.claude.com/docs/ru/claude-apps-gateway-config.md#client-side-managed-settings) на каждом устройстве.

64* **Телеметрия клиента на других шлюзах**: отправляет ли Claude Code дополнительный поток телеметрии клиента, зависит от вашего поставщика, и [таблица стандартных значений телеметрии](https://code.claude.com/docs/ru/data-usage.md#default-behaviors-by-api-provider) охватывает каждый случай.64* **Телеметрия клиента на других шлюзах**: отправляет ли Claude Code дополнительный поток телеметрии клиента, зависит от вашего поставщика, и [таблица стандартных значений телеметрии](https://code.claude.com/docs/ru/data-usage.md#default-behaviors-by-api-provider) охватывает каждый случай.

65* **Назначения телеметрии**: куда Claude Code отправляет телеметрию сеанса шлюза, зависит от того, как сеанс вошел, и [What's enforced on developers](https://code.claude.com/docs/ru/claude-apps-gateway#whats-enforced-on-developers) говорит, куда идут экспорты каждого вида сеанса.65* **Назначения телеметрии**: куда Claude Code отправляет телеметрию сеанса шлюза, зависит от того, как сеанс вошел, и [What's enforced on developers](https://code.claude.com/docs/ru/claude-apps-gateway#whats-enforced-on-developers) говорит, куда идут экспорты каждого вида сеанса.

66* **Корпоративные HTTP прокси**: `HTTPS_PROXY` находится между Claude Code и каждым сервером, с которым он разговаривает, включая шлюз. Если ваша сеть требует его, [настройте прокси](https://code.claude.com/docs/ru/network-config.md) в дополнение к шлюзу. Для Claude apps gateway, который вы размещаете, [вход проверяет, что хост прокси также находится в частной сети](https://code.claude.com/docs/ru/claude-apps-gateway#prerequisites); если это не так, добавьте хост шлюза в `NO_PROXY`, чтобы CLI подключался к нему напрямую.66* **Корпоративные HTTP прокси**: Claude Code отправляет свои запросы, включая запросы к шлюзу, через прокси, указанный в `HTTPS_PROXY`. Если ваша сеть требует прокси, [настройте его](https://code.claude.com/docs/ru/network-config.md). Если прокси применяется к Claude apps gateway, который вы размещаете, для [входа](https://code.claude.com/docs/ru/claude-apps-gateway#prerequisites) требуется, чтобы имя хоста прокси разрешалось в частные адреса, либо чтобы хост шлюза был указан в `NO_PROXY`.

67 67 

68## Next steps68## Next steps

69 69 

Details

129| Administration | Чтение |129| Administration | Чтение |

130| Checks | Чтение и запись |130| Checks | Чтение и запись |

131| Contents | Чтение и запись |131| Contents | Чтение и запись |

132| Dependabot alerts | Чтение |

132| Discussions | Чтение и запись |133| Discussions | Чтение и запись |

133| Issues | Чтение и запись |134| Issues | Чтение и запись |

134| Members | Чтение |135| Members | Чтение |

Details

83>83>

84> Создайте приложение Microsoft Entra с федеративным учетным данием для вашего репозитория, следуя [руководству Microsoft по аутентификации из GitHub Actions](https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure-openid-connect):84> Создайте приложение Microsoft Entra с федеративным учетным данием для вашего репозитория, следуя [руководству Microsoft по аутентификации из GitHub Actions](https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure-openid-connect):

85>85>

86> * Зарегистрируйте приложение Microsoft Entra и добавьте федеративное учетное дание идентификации, которое доверяет токенам, выданным GitHub вашему репозиторию. Управляемое удостоверение, назначенное пользователем, работает вместо приложения. Оба имеют ID клиента, который вы запишите ниже86> * Зарегистрируйте приложение Microsoft Entra и добавьте федеративные учётные данные идентификации, которые доверяют токенам, выданным GitHub вашему репозиторию. Управляемое удостоверение, назначенное пользователем, работает вместо приложения. Оба имеют ID клиента, который вы запишите ниже

87> * Назначьте приложению роль `Azure AI User` на вашем ресурсе Foundry. См. [конфигурацию Azure RBAC](https://code.claude.com/docs/ru/microsoft-foundry.md#azure-rbac-configuration) для более узкой пользовательской роли87> * Назначьте приложению роль `Foundry User` на вашем ресурсе Foundry. См. [конфигурацию Azure RBAC](https://code.claude.com/docs/ru/microsoft-foundry.md#azure-rbac-configuration) для другой встроенной роли и пользовательских ролей

88>88>

89> Запишите ID клиента приложения, ID вашего тенанта и ID вашей подписки. Вы добавляете их как секреты на следующем шаге.89> Запишите ID клиента приложения, ID вашего тенанта и ID вашей подписки. Вы добавляете их как секреты на следующем шаге.

90 90 

Details

228 228 

229### Когда модель отключается во время сессии229### Когда модель отключается во время сессии

230 230 

231Если ваш проект теряет доступ к модели, на которой работает ваша сессия, например потому что администратор отключил её в [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden), Claude Code переключает сессию на другую модель, чтобы каждый запрос не завершался ошибкой, и показывает `Switched to <fallback> because <model> is not available`. Он пробует те же модели, что и при резервном варианте при запуске: сначала более ранние версии того же уровня, а для сессии Opus, когда ни одна версия Opus не доступна, — модель Sonnet по умолчанию.231Когда Agent Platform отклоняет модель вашей сессии как недоступную в вашем проекте или регионе, Claude Code переключает сессию на другую модель, и вы можете продолжать работу. Вы увидите сообщение, которое начинается с `Switched to <fallback> because <model> is not available`. Это происходит, например, когда администратор отключает модель в [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) или она не предоставляется в вашем регионе.

232 232 

233Переключение применяется только к уровню, который вы не закрепили, — то же условие, что и для резервного варианта при запуске. Сессия на выбранной вами конкретной версии сохраняет свою модель, и без цепочки резервных моделей запрос вместо этого завершается ошибкой. В [авторежиме](https://code.claude.com/docs/ru/permission-modes.md#enable-auto-mode-on-bedrock-agent-platform-or-foundry) Claude Code переключается только на модель, которую авторежим поддерживает на Agent Platform. Если ни одна из этих моделей также не доступна, запрос завершается ошибкой.233Если вы настроили [цепочку резервных моделей](https://code.claude.com/docs/ru/model-config.md#fallback-model-chains), Claude Code вместо этого переключается на настроенную вами резервную модель. Без цепочки запрос завершается ошибкой, например в таких случаях:

234 234 

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

236* Ни одна из [моделей, которые пробует Claude Code](#startup-model-checks), не доступна. В [авторежиме](https://code.claude.com/docs/ru/permission-modes.md#enable-auto-mode-on-bedrock-agent-platform-or-foundry) Claude Code переключается только на модель, которую авторежим поддерживает на Agent Platform.

237 

238Чтобы продолжить работу, выполните `/model` в сессии и нажмите `s` на модели, доступной в вашем проекте и регионе; при этом ваша модель по умолчанию не изменится.

239 

240Чтобы отклонённые запросы завершались ошибкой, а не приводили к переключению, установите [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](https://code.claude.com/docs/ru/env-vars). Если вы настроили цепочку резервных моделей, удалите и её, поскольку Claude Code всё равно переключится на эту резервную модель.

236 241 

237## Конфигурация IAM242## Конфигурация IAM

238 243 

hooks.md +22 −7

Details

257Администраторы могут использовать [`allowManagedHooksOnly`](https://code.claude.com/docs/ru/settings-reference#allowmanagedhooksonly) в [управляемых настройках](https://code.claude.com/docs/ru/managed-settings.md), чтобы ограничить, какие хуки запускаются:257Администраторы могут использовать [`allowManagedHooksOnly`](https://code.claude.com/docs/ru/settings-reference#allowmanagedhooksonly) в [управляемых настройках](https://code.claude.com/docs/ru/managed-settings.md), чтобы ограничить, какие хуки запускаются:

258 258 

259* Ваши пользовательские, проектные, локальные хуки и хуки плагинов блокируются. Исключение составляют хуки из плагинов, принудительно включённых в `enabledPlugins` управляемых настроек259* Ваши пользовательские, проектные, локальные хуки и хуки плагинов блокируются. Исключение составляют хуки из плагинов, принудительно включённых в `enabledPlugins` управляемых настроек

260* Claude Code также ограничивает ваши настройки [`statusLine`](https://code.claude.com/docs/ru/statusline), [`fileSuggestion`](https://code.claude.com/docs/ru/settings-reference#filesuggestion) и [`subagentStatusLine`](https://code.claude.com/docs/ru/statusline#subagent-status-lines) управляемыми настройками260* Claude Code также ограничивает ваши настройки [`statusLine`](https://code.claude.com/docs/ru/statusline) и [`fileSuggestion`](https://code.claude.com/docs/ru/settings-reference#filesuggestion) управляемыми настройками

261* Claude Code также отключает плагины с [источником `command`](https://code.claude.com/docs/ru/plugins/marketplace-reference#command-plugin-source), включая плагины, принудительно включённые в `enabledPlugins` управляемых настроек, если только [`disableCommandPluginSources`](https://code.claude.com/docs/ru/settings-reference#disablecommandpluginsources) явно не установлен в `false`. Источники `command` требуют Claude Code v2.1.229 или новее261* Claude Code также отключает плагины с [источником `command`](https://code.claude.com/docs/ru/plugins/marketplace-reference#command-plugin-source), включая плагины, принудительно включённые в `enabledPlugins` управляемых настроек, если только [`disableCommandPluginSources`](https://code.claude.com/docs/ru/settings-reference#disablecommandpluginsources) явно не установлен в `false`. Источники `command` требуют Claude Code v2.1.229 или новее

262* Claude Code также блокирует [команды `headersHelper`](https://code.claude.com/docs/ru/plugins/host-marketplace#authenticate-archive-downloads) маркетплейсов, если только [`disableCommandPluginSources`](https://code.claude.com/docs/ru/settings-reference#disablecommandpluginsources) явно не установлен в `false`, за исключением маркетплейса, который объявлен в самих управляемых настройках262* Claude Code также блокирует [команды `headersHelper`](https://code.claude.com/docs/ru/plugins/host-marketplace#authenticate-archive-downloads) маркетплейсов, если только [`disableCommandPluginSources`](https://code.claude.com/docs/ru/settings-reference#disablecommandpluginsources) явно не установлен в `false`, за исключением маркетплейса, который объявлен в самих управляемых настройках

263 263 


505| `url` | да | URL, на который отправляется POST-запрос |505| `url` | да | URL, на который отправляется POST-запрос |

506| `headers` | нет | Дополнительные HTTP-заголовки в виде пар «ключ-значение». Значения поддерживают подстановку переменных окружения с помощью синтаксиса `$VAR_NAME` или `${VAR_NAME}`. Разрешаются только переменные, перечисленные в `allowedEnvVars` |506| `headers` | нет | Дополнительные HTTP-заголовки в виде пар «ключ-значение». Значения поддерживают подстановку переменных окружения с помощью синтаксиса `$VAR_NAME` или `${VAR_NAME}`. Разрешаются только переменные, перечисленные в `allowedEnvVars` |

507| `allowedEnvVars` | нет | Список имён переменных окружения, которые можно подставлять в значения заголовков. Ссылки на неперечисленные переменные заменяются пустыми строками. Требуется для работы любой подстановки переменных окружения |507| `allowedEnvVars` | нет | Список имён переменных окружения, которые можно подставлять в значения заголовков. Ссылки на неперечисленные переменные заменяются пустыми строками. Требуется для работы любой подстановки переменных окружения |

508| `onFailure` | нет | Что происходит с действием, когда хук завершается сбоем: `"continue"` (по умолчанию) или `"block"`. См. [Блокировка действия при сбое хука](#block-the-action-when-a-hook-fails). Требуется Claude Code v2.1.295 или новее |508| `onFailure` | нет | Выполняется ли действие, вызвавшее хук, если хук завершился сбоем: `"continue"` или `"block"`. О `"block"` и о случае, когда поле не задано, см. [Блокировка действия при сбое хука](#block-the-action-when-a-hook-fails). Требуется Claude Code v2.1.295 или новее |

509 509 

510Claude Code отправляет [входные данные JSON](#hook-input-and-output) хука как тело POST-запроса с `Content-Type: application/json`. Тело ответа использует тот же [формат вывода JSON](#json-output), что и командные хуки.510Claude Code отправляет [входные данные JSON](#hook-input-and-output) хука как тело POST-запроса с `Content-Type: application/json`. Тело ответа использует тот же [формат вывода JSON](#json-output), что и командные хуки.

511 511 


901 901 

902Для `PreToolUse` хук `command`, `http` или `mcp_tool`, превысивший таймаут, не блокирует вызов инструмента, за исключением хуков, [сбой которых блокирует действие](#block-the-action-when-a-hook-fails). Вызов продолжается через обычный [процесс разрешений](https://code.claude.com/docs/ru/permissions.md), поэтому не рассчитывайте, что зависший хук сработает как защитный барьер. Чтобы блокировать вызов при превышении таймаута хуком `command` или `http`, установите [`onFailure: "block"`](#block-the-action-when-a-hook-fails). [Callback-хук Agent SDK](https://code.claude.com/docs/ru/agent-sdk/hooks.md), превысивший свой таймаут, [блокирует вызов инструмента](#pretooluse).902Для `PreToolUse` хук `command`, `http` или `mcp_tool`, превысивший таймаут, не блокирует вызов инструмента, за исключением хуков, [сбой которых блокирует действие](#block-the-action-when-a-hook-fails). Вызов продолжается через обычный [процесс разрешений](https://code.claude.com/docs/ru/permissions.md), поэтому не рассчитывайте, что зависший хук сработает как защитный барьер. Чтобы блокировать вызов при превышении таймаута хуком `command` или `http`, установите [`onFailure: "block"`](#block-the-action-when-a-hook-fails). [Callback-хук Agent SDK](https://code.claude.com/docs/ru/agent-sdk/hooks.md), превысивший свой таймаут, [блокирует вызов инструмента](#pretooluse).

903 903 

904> [!NOTE]

905>

906> Если вы используете Code Mode, таймауты для `PreToolUse` работают иначе. Смотрите [Вызов инструмента отклонён хуком](https://code.claude.com/docs/ru/code-mode.md#tool-call-refused-by-a-hook).

907 

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

905 909 

906Хук может запустить долго работающую программу, например сервер разработки, и оставить её работать, пока сессия продолжается. В скрипте хука или в команде в [форме оболочки](#exec-form-and-shell-form):910Хук может запустить долго работающую программу, например сервер разработки, и оставить её работать, пока сессия продолжается. В скрипте хука или в команде в [форме оболочки](#exec-form-and-shell-form):


981* **Хуки `Stop`, `SubagentStop`, `TaskCompleted` и `TeammateIdle`**: код выхода 2 для этих событий отправляет Claude продолжать работу, а Claude не может исправить хук, который не запускается985* **Хуки `Stop`, `SubagentStop`, `TaskCompleted` и `TeammateIdle`**: код выхода 2 для этих событий отправляет Claude продолжать работу, а Claude не может исправить хук, который не запускается

982* **Фоновые командные хуки**: командные хуки, в которых задано [`async` или `asyncRewake`](#run-hooks-in-the-background)986* **Фоновые командные хуки**: командные хуки, в которых задано [`async` или `asyncRewake`](#run-hooks-in-the-background)

983 987 

988> [!NOTE]

989>

990> Если вы используете Code Mode, сбои для `PreToolUse` обрабатываются иначе. Смотрите [Вызов инструмента отклонён хуком](https://code.claude.com/docs/ru/code-mode.md#tool-call-refused-by-a-hook).

991 

984#### Сбой хуков в Windows без Git Bash992#### Сбой хуков в Windows без Git Bash

985 993 

986Если ошибка заблокированного вызова инструмента содержит этот текст, командный хук `PreToolUse` или `PermissionRequest` завершился сбоем или превысил таймаут и заблокировал вызов:994Если ошибка заблокированного вызова инструмента содержит этот текст, командный хук `PreToolUse` или `PermissionRequest` завершился сбоем или превысил таймаут и заблокировал вызов:


1512* срабатывает [запланированная задача на уровне сессии](https://code.claude.com/docs/ru/scheduled-tasks.md), включая итерацию `/loop`1520* срабатывает [запланированная задача на уровне сессии](https://code.claude.com/docs/ru/scheduled-tasks.md), включая итерацию `/loop`

1513* [Фоновый субагент](https://code.claude.com/docs/ru/sub-agents.md#run-subagents-in-foreground-or-background) отчитывается перед сессией, которая его запустила1521* [Фоновый субагент](https://code.claude.com/docs/ru/sub-agents.md#run-subagents-in-foreground-or-background) отчитывается перед сессией, которая его запустила

1514* [Другая сессия отправляет сообщение](https://code.claude.com/docs/ru/cross-session-messaging.md) в ваш основной диалог1522* [Другая сессия отправляет сообщение](https://code.claude.com/docs/ru/cross-session-messaging.md) в ваш основной диалог

1523* Поступает вывод кода Claude в сессии [Code Mode](https://code.claude.com/docs/ru/code-mode.md#code-output-withheld-by-a-hook) — для хуков `command`, `http` и `mcp_tool`, когда код может выполняться в фоне

1515 1524 

1516Хуки `UserPromptSubmit` имеют таймаут по умолчанию 30 секунд для типов `command`, `http` и `mcp_tool` — меньше, чем 600 секунд по умолчанию для этих типов в большинстве других событий. Поскольку этот хук выполняется перед каждым промптом и блокирует обработку моделью до своего завершения, зависший хук останавливает сессию. Если вашему хуку нужно больше времени, задайте поле `timeout` в записи хука.1525Хуки `UserPromptSubmit` имеют таймаут по умолчанию 30 секунд для типов `command`, `http` и `mcp_tool` — меньше, чем 600 секунд по умолчанию для этих типов в большинстве других событий. Поскольку этот хук выполняется перед каждым промптом и блокирует обработку моделью до своего завершения, зависший хук останавливает сессию. Если вашему хуку нужно больше времени, задайте поле `timeout` в записи хука.

1517 1526 


1560| Поле | Описание |1569| Поле | Описание |

1561| :- | :- |1570| :- | :- |

1562| `decision` | `"block"` останавливает промпт до того, как он дойдёт до Claude. Не указывайте, чтобы разрешить продолжение |1571| `decision` | `"block"` останавливает промпт до того, как он дойдёт до Claude. Не указывайте, чтобы разрешить продолжение |

1563| `reason` | Показывается пользователю, когда `decision` равен `"block"`. Не добавляется в контекст |1572| `reason` | Показывается пользователю, когда `decision` равно `"block"`. Не добавляется в контекст, за исключением случаев, когда хук блокирует [вывод Code Mode](https://code.claude.com/docs/ru/code-mode.md#code-output-withheld-by-a-hook) |

1564| `additionalContext` | Строка, добавляемая в контекст Claude вместе с отправленным промптом. См. [Добавление контекста для Claude](#add-context-for-claude) |1573| `additionalContext` | Строка, добавляемая в контекст Claude вместе с отправленным промптом. См. [Добавление контекста для Claude](#add-context-for-claude) |

1565| `sessionTitle` | Задаёт название сессии. Используйте для автоматического именования сессий на основе содержимого промпта |1574| `sessionTitle` | Задаёт название сессии. Используйте для автоматического именования сессий на основе содержимого промпта |

1566| `suppressOriginalPrompt` | Если `true`, когда хук блокирует промпт, текст промпта не включается в сообщение о блокировке. См. [Что остаётся после заблокированного промпта](#what-a-blocked-prompt-leaves-behind) |1575| `suppressOriginalPrompt` | Если `true`, когда хук блокирует промпт, текст промпта не включается в сообщение о блокировке. См. [Что остаётся после заблокированного промпта](#what-a-blocked-prompt-leaves-behind) |

1567 1576 

1568Хук, который блокирует через выход с кодом 2, обрабатывается так же, как `reason`: сообщение о блокировке показывает пользователю текст stderr, и он не добавляется в контекст.1577Если ваш хук блокирует, завершаясь с кодом 2, текст его stderr обрабатывается так же, как `reason`.

1569 1578 

1570```json theme={null}1579```json theme={null}

1571{1580{


3000 3009 

3001Запускается, когда файл конфигурации изменяется во время сессии. Используйте это для аудита изменений настроек, применения политик безопасности или блокировки несанкционированных изменений файлов конфигурации.3010Запускается, когда файл конфигурации изменяется во время сессии. Используйте это для аудита изменений настроек, применения политик безопасности или блокировки несанкционированных изменений файлов конфигурации.

3002 3011 

3003Claude Code запускает хуки ConfigChange, когда изменяется файл настроек, файл управляемой политики или файл скилла. Для управляемой политики он запускает их, только когда изменяется `managed-settings.json` или файл в `managed-settings.d/`. [Настройки, управляемые сервером](https://code.claude.com/docs/ru/server-managed-settings.md), а также изменения управляемых настроек macOS или политики реестра Windows он применяет без запуска хуков. В WSL с [`wslInheritsWindowsSettings`](https://code.claude.com/docs/ru/settings-reference#wslinheritswindowssettings) он также применяет изменённый файл управляемых настроек на стороне Windows при опросе политики без запуска хуков.3012Claude Code запускает хуки ConfigChange, когда изменяется файл настроек, файл управляемой политики или файл скилла. Для управляемой политики он запускает их, только когда изменяется `managed-settings.json` или файл в `managed-settings.d/`.

3004 3013 

3005Matcher фильтрует по источнику конфигурации:3014Matcher фильтрует по источнику конфигурации:

3006 3015 


3012| `policy_settings` | Изменяется `managed-settings.json` или файл в `managed-settings.d/` |3021| `policy_settings` | Изменяется `managed-settings.json` или файл в `managed-settings.d/` |

3013| `skills` | Изменяется файл скилла в `.claude/skills/` |3022| `skills` | Изменяется файл скилла в `.claude/skills/` |

3014 3023 

3015Этот пример записывает в лог все изменения конфигурации для аудита безопасности:3024Изменения, подобные перечисленным ниже, вступают в силу без запуска хуков:

3025 

3026* Правила и настройки, которые вы сохраняете через **Yes, and don't ask again**, `/permissions` или `/model`, в той сессии, из которой вы их сохранили. Если другая открытая сессия загружает тот же файл, хуки запускаются в ней.

3027* Обновления [настроек, управляемых сервером](https://code.claude.com/docs/ru/server-managed-settings.md), управляемых настроек macOS или политик реестра Windows

3028* В WSL с [`wslInheritsWindowsSettings`](https://code.claude.com/docs/ru/settings-reference#wslinheritswindowssettings) — изменённый файл управляемых настроек на стороне Windows, который Claude Code подхватывает при опросе политик

3029 

3030В этом примере изменения конфигурации записываются в журнал для аудита безопасности:

3016 3031 

3017```json theme={null}3032```json theme={null}

3018{3033{


3335 "hooks": [3350 "hooks": [

3336 {3351 {

3337 "type": "command",3352 "type": "command",

3338 "command": "bash -c 'jq -r .worktree_path | xargs rm -rf'"3353 "command": "bash -c 'p=$(jq -er .worktree_path) && rm -rf -- \"$p\"'"

3339 }3354 }

3340 ]3355 ]

3341 }3356 }

hooks-guide.md +4 −4

Details

50 "PostToolUse": [50 "PostToolUse": [

51 {51 {

52 "matcher": "Edit|Write",52 "matcher": "Edit|Write",

53 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write" }]53 "hooks": [{ "type": "command", "command": "f=$(jq -r '.tool_input.file_path') && npx prettier --write --ignore-unknown \"$f\"" }]

54 }54 }

55 ],55 ],

56 "Notification": [56 "Notification": [


221 "hooks": [221 "hooks": [

222 {222 {

223 "type": "command",223 "type": "command",

224 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"224 "command": "f=$(jq -r '.tool_input.file_path') && npx prettier --write --ignore-unknown \"$f\""

225 }225 }

226 ]226 ]

227 }227 }


336 336 

337Отслеживайте, когда файлы параметров или skills изменяются во время сеанса. Событие `ConfigChange` срабатывает, когда внешний процесс или редактор изменяет файл конфигурации, поэтому вы можете регистрировать изменения для соответствия или блокировать несанкционированные изменения.337Отслеживайте, когда файлы параметров или skills изменяются во время сеанса. Событие `ConfigChange` срабатывает, когда внешний процесс или редактор изменяет файл конфигурации, поэтому вы можете регистрировать изменения для соответствия или блокировать несанкционированные изменения.

338 338 

339Этот пример добавляет каждое изменение в журнал аудита. Добавьте это в `~/.claude/settings.json`:339Этот пример добавляет каждое событие в журнал аудита. Добавьте это в `~/.claude/settings.json`:

340 340 

341```json theme={null}341```json theme={null}

342{342{


925Ваш эндпоинт отвечает телом JSON в том же [формате вывода](https://code.claude.com/docs/ru/hooks.md#json-output), что и командные хуки, а Claude Code также проверяет код состояния ответа:925Ваш эндпоинт отвечает телом JSON в том же [формате вывода](https://code.claude.com/docs/ru/hooks.md#json-output), что и командные хуки, а Claude Code также проверяет код состояния ответа:

926 926 

927* **Код состояния 2xx**: чтобы заблокировать вызов инструмента, верните в теле ответа соответствующие поля `hookSpecificOutput`.927* **Код состояния 2xx**: чтобы заблокировать вызов инструмента, верните в теле ответа соответствующие поля `hookSpecificOutput`.

928* **Любой другой код состояния или сбой запроса**: Claude Code сообщает о [неблокирующей ошибке](https://code.claude.com/docs/ru/hooks.md#exit-code-output) и позволяет действию продолжиться. Чтобы сбой эндпоинта блокировал действие, задайте для хука [`onFailure: "block"`](https://code.claude.com/docs/ru/hooks#block-the-action-when-a-hook-fails).928* **Любой другой код состояния или сбой запроса**: Claude Code сообщает о [неблокирующей ошибке](https://code.claude.com/docs/ru/hooks.md#exit-code-output) и позволяет действию продолжиться, за исключением случаев, когда это хук, [сбой которого блокирует действие](https://code.claude.com/docs/ru/hooks.md#block-the-action-when-a-hook-fails). Чтобы сбой эндпоинта блокировал действие, задайте для хука [`onFailure: "block"`](https://code.claude.com/docs/ru/hooks#block-the-action-when-a-hook-fails).

929 929 

930Значения заголовков поддерживают интерполяцию переменных окружения, используя синтаксис `$VAR_NAME` или `${VAR_NAME}`. Разрешены только переменные, указанные в массиве `allowedEnvVars`; все остальные ссылки `$VAR` остаются пустыми.930Значения заголовков поддерживают интерполяцию переменных окружения, используя синтаксис `$VAR_NAME` или `${VAR_NAME}`. Разрешены только переменные, указанные в массиве `allowedEnvVars`; все остальные ссылки `$VAR` остаются пустыми.

931 931 

Details

36| `Esc` | Прерывание Claude или закрытие диалога | Остановить текущий ответ или вызов инструмента в середине хода, чтобы вы могли перенаправить. Claude сохраняет выполненную работу. Если у вас есть [очередные сообщения](#queue-messages-while-claude-works), Claude Code отправляет их дальше. Когда диалог открыт, `Esc` закрывает диалог. Пока элемент нижнего колонтитула выбран, такой как строка в [панели подагента](https://code.claude.com/docs/ru/sub-agents.md#run-subagents-in-foreground-or-background) ниже подсказки, `Esc` [отменяет его выбор](https://code.claude.com/docs/ru/keybindings.md#footer-actions) вместо прерывания. На подсказке разрешения `Esc` отклоняет действие, то же самое, что [**No** без комментария](https://code.claude.com/docs/ru/permissions.md#add-a-comment-when-you-answer-a-permission-prompt) |36| `Esc` | Прерывание Claude или закрытие диалога | Остановить текущий ответ или вызов инструмента в середине хода, чтобы вы могли перенаправить. Claude сохраняет выполненную работу. Если у вас есть [очередные сообщения](#queue-messages-while-claude-works), Claude Code отправляет их дальше. Когда диалог открыт, `Esc` закрывает диалог. Пока элемент нижнего колонтитула выбран, такой как строка в [панели подагента](https://code.claude.com/docs/ru/sub-agents.md#run-subagents-in-foreground-or-background) ниже подсказки, `Esc` [отменяет его выбор](https://code.claude.com/docs/ru/keybindings.md#footer-actions) вместо прерывания. На подсказке разрешения `Esc` отклоняет действие, то же самое, что [**No** без комментария](https://code.claude.com/docs/ru/permissions.md#add-a-comment-when-you-answer-a-permission-prompt) |

37| `Esc` + `Esc` | Очистить черновик ввода или перемотать | Когда ввод подсказки содержит текст, двойной `Esc` очищает его и сохраняет черновик в историю, чтобы `Up` его вспомнил. Когда ввод пуст, двойной `Esc` открывает [меню перемотки](https://code.claude.com/docs/ru/checkpointing.md) для восстановления или суммирования кода и разговора с предыдущей точки |37| `Esc` + `Esc` | Очистить черновик ввода или перемотать | Когда ввод подсказки содержит текст, двойной `Esc` очищает его и сохраняет черновик в историю, чтобы `Up` его вспомнил. Когда ввод пуст, двойной `Esc` открывает [меню перемотки](https://code.claude.com/docs/ru/checkpointing.md) для восстановления или суммирования кода и разговора с предыдущей точки |

38| `Ctrl+Enter` или `Ctrl+X Ctrl+S` | Отправить очередные сообщения сейчас | Отправляет ваши [очередные сообщения](#queue-messages-while-claude-works) и ваш черновик с ними прямо сейчас. [Когда Claude Code отправляет то, что вы поставили в очередь](#when-claude-code-sends-what-you-queued) охватывает то, что происходит с ходом, над которым работает Claude. В [режиме shell](#shell-mode-with-prefix) клавиша ставит вашу команду в очередь. В терминалах, которые не сообщают о расширенных клавишах, `Ctrl+Enter` приходит как простой `Enter`; `Ctrl+X Ctrl+S` работает в любом терминале. Требует Claude Code v2.1.275 или более поздней версии |38| `Ctrl+Enter` или `Ctrl+X Ctrl+S` | Отправить очередные сообщения сейчас | Отправляет ваши [очередные сообщения](#queue-messages-while-claude-works) и ваш черновик с ними прямо сейчас. [Когда Claude Code отправляет то, что вы поставили в очередь](#when-claude-code-sends-what-you-queued) охватывает то, что происходит с ходом, над которым работает Claude. В [режиме shell](#shell-mode-with-prefix) клавиша ставит вашу команду в очередь. В терминалах, которые не сообщают о расширенных клавишах, `Ctrl+Enter` приходит как простой `Enter`; `Ctrl+X Ctrl+S` работает в любом терминале. Требует Claude Code v2.1.275 или более поздней версии |

39| `Shift+Tab`, или `Alt+M` на Windows, когда среда выполнения Node или Bun не включает режим ввода VT | Циклический переход по режимам разрешений | Циклический переход через `default` (помечено как Manual в индикаторе режима), `acceptEdits`, `plan` и, если доступно, `bypassPermissions` и затем `auto`. Из `auto` первое нажатие переключается на `default`. См. [режимы разрешений](https://code.claude.com/docs/ru/permission-modes.md). На подсказке разрешения файла то же самое ключевое слово закрывает открытое [поле комментария](https://code.claude.com/docs/ru/permissions.md#add-a-comment-when-you-answer-a-permission-prompt). Без открытого поля выбирает параметр, который разрешает действие на остаток сеанса, когда подсказка предлагает этот параметр |39| `Shift+Tab`, или `Alt+M` на Windows, когда среда выполнения Node или Bun не включает режим ввода VT | Циклический переход по режимам разрешений | Циклический переход через `default` (помечен как Manual в индикаторе режима), `acceptEdits` и `plan`, а затем `bypassPermissions` и `auto`, если они доступны. См. [режимы разрешений](https://code.claude.com/docs/ru/permission-modes.md). В запросе разрешения для файла та же клавиша закрывает открытое [поле комментария](https://code.claude.com/docs/ru/permissions.md#add-a-comment-when-you-answer-a-permission-prompt). Если поле не открыто, она выбирает вариант, разрешающий действие до конца сессии, когда запрос предлагает такой вариант. В запросе на утверждение плана она утверждает план |

40| `Option+P` (macOS) или `Alt+P` (Windows/Linux) | Переключение модели | Переключение моделей без очистки подсказки |40| `Option+P` (macOS) или `Alt+P` (Windows/Linux) | Переключение модели | Переключение моделей без очистки подсказки |

41| `Option+T` (macOS) или `Alt+T` (Windows/Linux) | Переключение расширенного мышления | Включение или отключение режима расширенного мышления. Не влияет на Opus 5.5, Sonnet 5.5, Haiku 5.5 или модели Fable, которые всегда используют расширенное мышление. Работает на macOS без настройки Option как Meta |41| `Option+T` (macOS) или `Alt+T` (Windows/Linux) | Переключение расширенного мышления | Включение или отключение режима расширенного мышления. Не влияет на Opus 5.5, Sonnet 5.5, Haiku 5.5 или модели Fable, которые всегда используют расширенное мышление. Работает на macOS без настройки Option как Meta |

42| `Option+O` (macOS) или `Alt+O` (Windows/Linux) | Переключение быстрого режима | Включение или отключение [быстрого режима](https://code.claude.com/docs/ru/fast-mode.md) |42| `Option+O` (macOS) или `Alt+O` (Windows/Linux) | Переключение быстрого режима | Включение или отключение [быстрого режима](https://code.claude.com/docs/ru/fast-mode.md) |


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

82| Быстрый выход | `\` + `Enter` | Работает во всех терминалах |82| Быстрый выход | `\` + `Enter` | Работает во всех терминалах |

83| Клавиша Option | `Option+Enter` | После включения [Option как Meta](https://code.claude.com/docs/ru/terminal-config.md#enable-option-key-shortcuts-on-macos) на macOS |83| Клавиша Option | `Option+Enter` | После включения [Option как Meta](https://code.claude.com/docs/ru/terminal-config.md#enable-option-key-shortcuts-on-macos) на macOS |

84| Shift+Enter | `Shift+Enter` | Встроено в iTerm2, WezTerm, Ghostty, Kitty, Warp, Apple Terminal, Windows Terminal. Для других терминалов см. [Ввод многострочных подсказок](https://code.claude.com/docs/ru/terminal-config.md#enter-multiline-prompts) |84| Shift+Enter | `Shift+Enter` | Встроено в iTerm2, WezTerm, Ghostty, Kitty, Warp, Windows Terminal. Для других терминалов см. [Ввод многострочных промптов](https://code.claude.com/docs/ru/terminal-config.md#enter-multiline-prompts) |

85| Управляющая последовательность | `Ctrl+J` | Работает в любом терминале без конфигурации |85| Управляющая последовательность | `Ctrl+J` | Работает в любом терминале без конфигурации |

86| Режим вставки | Вставить напрямую | Для блоков кода, логов |86| Режим вставки | Вставить напрямую | Для блоков кода, логов |

87 87 


137 137 

138Включите редактирование в стиле vim через `/config` → Editor mode.138Включите редактирование в стиле vim через `/config` → Editor mode.

139 139 

140Claude Code сохраняет ваш режим vim и позицию курсора при переключении [средства просмотра стенограммы](#transcript-viewer) с помощью `Ctrl+O` или при открытии и закрытии панели, такой как `/config`. Если вы оставите приглашение в режиме NORMAL, оно остаётся в режиме NORMAL при возврате, с курсором там, где вы его оставили.

141 

142### Переключение режимов140### Переключение режимов

143 141 

144| Команда | Действие | Из режима |142| Команда | Действие | Из режима |


302 * Нажмите `Ctrl+C` для отмены и восстановления исходного ввода300 * Нажмите `Ctrl+C` для отмены и восстановления исходного ввода

303 * Нажмите `Backspace` при пустом поиске для отмены301 * Нажмите `Backspace` при пустом поиске для отмены

304 302 

305Принятие совпадения или отмена поиска вступают в силу немедленно, даже если Claude Code всё ещё загружает историю.

306 

307Чтобы найти более ранний промпт, когда вы помните только что-то длинное, что вставляли в него, например лог ошибок, нажмите `Ctrl+R` и введите слово из вставленного текста. Требуется Claude Code v2.1.314 или более поздней версии.303Чтобы найти более ранний промпт, когда вы помните только что-то длинное, что вставляли в него, например лог ошибок, нажмите `Ctrl+R` и введите слово из вставленного текста. Требуется Claude Code v2.1.314 или более поздней версии.

308 304 

309## Фоновые команды Bash305## Фоновые команды Bash


600 596 

601### Что Claude Code подчеркивает597### Что Claude Code подчеркивает

602 598 

603Вскоре после того, как вы прекратите ввод, Claude Code подчеркивает слова, которые словарь не знает. Он оставляет слово, которое вы все еще вводите, в покое, пока вы не перейдете дальше, и никогда не изменяет ваш текст. Он также пропускает текст, который выглядит как код:599Вскоре после того, как вы прекратите ввод, Claude Code подчеркивает слова, которые словарь не знает. Он оставляет слово, которое вы все еще вводите, в покое, пока вы не перейдете дальше. Он также пропускает текст, который выглядит как код:

604 600 

605* Команды, такие как `/help`, упоминания `@`, URL-адреса, пути к файлам и флаги, такие как `--verbose`601* Команды, такие как `/help`, упоминания `@`, URL-адреса, пути к файлам и флаги, такие как `--verbose`

606* Слова с цифрами, подчеркиваниями или заглавной буквой после первой, и текст в обратных кавычках602* Слова с цифрами, подчеркиваниями или заглавной буквой после первой, и текст в обратных кавычках

keybindings.md +7 −2

Details

581 581 

582Claude Code привязывает следующие аккорды по умолчанию на префиксе `ctrl+x`, по контекстам:582Claude Code привязывает следующие аккорды по умолчанию на префиксе `ctrl+x`, по контекстам:

583 583 

584* `Chat`: `ctrl+x ctrl+k`, `ctrl+x ctrl+e`, `ctrl+x enter`, `ctrl+x ctrl+a`, `ctrl+x ctrl+s` и `ctrl+x tab`584* `Chat`: `ctrl+x ctrl+k`, `ctrl+x ctrl+e`, `ctrl+x enter`, `ctrl+x ctrl+a`, `ctrl+x ctrl+s`, `ctrl+x tab`, `ctrl+x ctrl+=`, `ctrl+x ctrl+-`, `ctrl+x ctrl+_`, `ctrl+x =` и `ctrl+x -`

585* `Task`: `ctrl+x ctrl+b`585* `Task`: `ctrl+x ctrl+b`

586* `DiffPanel`: `ctrl+x b`586* `DiffPanel`: `ctrl+x b`

587* `Pane`: `ctrl+x left`, `ctrl+x right`, `ctrl+x up`, `ctrl+x down` и `ctrl+x x`587* `Pane`: `ctrl+x left`, `ctrl+x right`, `ctrl+x up`, `ctrl+x down` и `ctrl+x x`


631 "ctrl+x ctrl+a": null,631 "ctrl+x ctrl+a": null,

632 "ctrl+x ctrl+s": null,632 "ctrl+x ctrl+s": null,

633 "ctrl+x tab": null,633 "ctrl+x tab": null,

634 "ctrl+x ctrl+=": null,

635 "ctrl+x ctrl+-": null,

636 "ctrl+x ctrl+_": null,

637 "ctrl+x =": null,

638 "ctrl+x -": null,

634 "ctrl+x": "chat:newline"639 "ctrl+x": "chat:newline"

635 }640 }

636 }641 }


716Claude Code проверяет ваши сочетания клавиш и записывает предупреждение в журнал отладки для:721Claude Code проверяет ваши сочетания клавиш и записывает предупреждение в журнал отладки для:

717 722 

718* Ошибок разбора (неверный JSON или структура)723* Ошибок разбора (неверный JSON или структура)

719* Неправильно написанных модификаторов, таких как `ctl+k`. Claude Code удаляет часть, которую он не распознаёт, и применяет привязку к оставшемуся нажатию клавиши, `k` в этом примере.724* Неправильно написанных модификаторов, таких как `ctl+k`. Claude Code игнорирует всю привязку. Исправьте модификатор, в этом примере на `ctrl+k`.

720* Пробела рядом с `+` в строке клавиш, например `ctrl+ k`. Claude Code читает такую строку как [аккорд](#chords) из `ctrl+`, за которым следует `k`. Никакое нажатие клавиши не соответствует `ctrl+` само по себе, поэтому привязка никогда не срабатывает. Удалите пробел.725* Пробела рядом с `+` в строке клавиш, например `ctrl+ k`. Claude Code читает такую строку как [аккорд](#chords) из `ctrl+`, за которым следует `k`. Никакое нажатие клавиши не соответствует `ctrl+` само по себе, поэтому привязка никогда не срабатывает. Удалите пробел.

721* Неверных имён контекстов726* Неверных имён контекстов

722* Неверных значений действий, таких как действие, которое не является строкой или `null`727* Неверных значений действий, таких как действие, которое не является строкой или `null`

llm-gateway.md +4 −0

Details

43 43 

44Чтобы сделать шлюз, доступный через `ANTHROPIC_BASE_URL`, единственным пунктом назначения, который может использовать управляемая машина, установите [`allowedProviders`](https://code.claude.com/docs/ru/settings-reference#allowedproviders) на `["customEndpoint"]` в том же управляемом файле параметров и поместите `ANTHROPIC_BASE_URL` шлюза в блок `env` этого файла. Claude Code затем отказывает в сеансе, направленном куда-либо еще, включая непосредственно в Anthropic или на собственный прокси разработчика, и принимает `ANTHROPIC_BASE_URL` только со значением, которое вы там установили. Для шлюза, доступного через переменную конечной точки, специфичную для поставщика, такую как `ANTHROPIC_BEDROCK_BASE_URL`, запись `allowedProviders` указывает, какую переменную закрепить. Требуется Claude Code v2.1.285 или более поздняя версия.44Чтобы сделать шлюз, доступный через `ANTHROPIC_BASE_URL`, единственным пунктом назначения, который может использовать управляемая машина, установите [`allowedProviders`](https://code.claude.com/docs/ru/settings-reference#allowedproviders) на `["customEndpoint"]` в том же управляемом файле параметров и поместите `ANTHROPIC_BASE_URL` шлюза в блок `env` этого файла. Claude Code затем отказывает в сеансе, направленном куда-либо еще, включая непосредственно в Anthropic или на собственный прокси разработчика, и принимает `ANTHROPIC_BASE_URL` только со значением, которое вы там установили. Для шлюза, доступного через переменную конечной точки, специфичную для поставщика, такую как `ANTHROPIC_BEDROCK_BASE_URL`, запись `allowedProviders` указывает, какую переменную закрепить. Требуется Claude Code v2.1.285 или более поздняя версия.

45 45 

46> [!NOTE]

47>

48> Когда в Desktop выполнен вход в claude.ai, сессия Cowork на машине пользователя считается [`"anthropic"`](https://code.claude.com/docs/ru/settings-reference#allowedproviders). Если вы не включите это значение в данный список в политике MDM или файле управляемых настроек, такая сессия будет отклонена. Если же включите, то сессии, отправляемые непосредственно в Anthropic, также пройдут проверку по этому списку.

49 

46## Подписки и шлюзы50## Подписки и шлюзы

47 51 

48Пока активна [переменная учетных данных шлюза](https://code.claude.com/docs/ru/llm-gateway-connect.md#set-the-credential-variable) или `apiKeyHelper`, запросы несут эти учетные данные вместо входа подписки claude.ai разработчика, и ограничения использования подписки не применяются к ним. Claude Code сохраняет вход claude.ai на машине, но не отправляет его с этими запросами. Этот трафик выставляется счетом за токен тому, кто владеет учетными данными, которые перенаправляет шлюз, например вашей учетной записи Anthropic Console организации, или вашей учетной записи Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry, когда шлюз маршрутизирует туда.52Пока активна [переменная учетных данных шлюза](https://code.claude.com/docs/ru/llm-gateway-connect.md#set-the-credential-variable) или `apiKeyHelper`, запросы несут эти учетные данные вместо входа подписки claude.ai разработчика, и ограничения использования подписки не применяются к ним. Claude Code сохраняет вход claude.ai на машине, но не отправляет его с этими запросами. Этот трафик выставляется счетом за токен тому, кто владеет учетными данными, которые перенаправляет шлюз, например вашей учетной записи Anthropic Console организации, или вашей учетной записи Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry, когда шлюз маршрутизирует туда.

Details

156 156 

157### Конфликты с существующим входом157### Конфликты с существующим входом

158 158 

159Переменная учётных данных шлюза имеет приоритет над сохранённым входом claude.ai или ключом Console. С `ANTHROPIC_AUTH_TOKEN` переменная имеет приоритет немедленно. С `ANTHROPIC_API_KEY` вам один раз в интерактивном режиме предлагается одобрить ключ, прежде чем он вступит в силу.159Ваши запросы используют переменную учётных данных шлюза, а не сохранённый вход claude.ai. С `ANTHROPIC_AUTH_TOKEN` переменная имеет приоритет немедленно. С `ANTHROPIC_API_KEY` вам один раз в интерактивном режиме предлагается одобрить ключ, прежде чем он вступит в силу.

160 160 

161Запустите `/status`, чтобы подтвердить, какой источник учетных данных активен. Если при запуске показывается предупреждение о конфликте аутентификации, называющее два источника, см. первую строку [таблицы устранения неполадок](#troubleshoot-gateway-errors), чтобы узнать, какой из них отбросить. Чтобы очистить сохраненный вход, чтобы остались только учетные данные шлюза, запустите `/logout`.161Запустите `/status`, чтобы подтвердить, какой источник учетных данных активен. Если при запуске показывается предупреждение о конфликте аутентификации, называющее два источника, см. первую строку [таблицы устранения неполадок](#troubleshoot-gateway-errors), чтобы узнать, какой из них отбросить. Чтобы очистить сохраненный вход, чтобы остались только учетные данные шлюза, запустите `/logout`.

162 162 


506 506 

507| Ошибка | Причина | Исправление |507| Ошибка | Причина | Исправление |

508| :- | :- | :- |508| :- | :- | :- |

509| Предупреждение при запуске, называющее два источника учетных данных и заканчивающееся на `auth may not work as expected`. Более старые версии показывают `Auth conflict: Both a token (SOURCE) and an API key (SOURCE) are set` вместо этого. | Учетные данные шлюза и сохраненный вход оба активны; переменная используется для запросов, но устаревший вход может вызвать неожиданное поведение аутентификации | Отмените установку переменной, чтобы использовать сохраненный вход, или запустите `/logout`, чтобы использовать учетные данные шлюза |509| Предупреждение при запуске, называющее два источника учётных данных и заканчивающееся на `auth may not work as expected`. Более старые версии показывают `Auth conflict: Both a token (SOURCE) and an API key (SOURCE) are set` вместо этого. | Учётные данные шлюза и сохраненный вход активны одновременно | Отмените установку переменной, чтобы использовать сохраненный вход, или запустите `/logout`, чтобы использовать учётные данные шлюза |

510| Ошибки `401`, называющие недействительный или неузнанный токен | Учетные данные не являются теми, которые выдал шлюз, или они находятся в заголовке, который шлюз не читает | Подтвердите, что переменная соответствует вашему типу учетных данных в [таблице учетных данных](#set-the-credential-variable), и перевыпустите ключ на шлюзе, если он был отозван |510| Ошибки `401`, называющие недействительный или неузнанный токен | Учетные данные не являются теми, которые выдал шлюз, или они находятся в заголовке, который шлюз не читает | Подтвердите, что переменная соответствует вашему типу учетных данных в [таблице учетных данных](#set-the-credential-variable), и перевыпустите ключ на шлюзе, если он был отозван |

511| `Your apiKeyHelper script is failing`, или `apiKeyHelper failed:` на stderr в неинтерактивном режиме | Команда в параметре [`apiKeyHelper`](https://code.claude.com/docs/ru/settings-reference#apikeyhelper) не выдала пригодный ключ, поэтому запросы содержат заполнитель ключа | Запустите команду напрямую, чтобы увидеть, почему она не работает, и повторно аутентифицируйтесь у поставщика учетных данных, если он сообщает об истекшем сеансе; см. [справочник по ошибкам](https://code.claude.com/docs/ru/errors.md#your-apikeyhelper-script-is-failing) |511| `Your apiKeyHelper script is failing`, или `apiKeyHelper failed:` на stderr в неинтерактивном режиме | Команда в параметре [`apiKeyHelper`](https://code.claude.com/docs/ru/settings-reference#apikeyhelper) не выдала пригодный ключ, поэтому запросы содержат заполнитель ключа | Запустите команду напрямую, чтобы увидеть, почему она не работает, и повторно аутентифицируйтесь у поставщика учетных данных, если он сообщает об истекшем сеансе; см. [справочник по ошибкам](https://code.claude.com/docs/ru/errors.md#your-apikeyhelper-script-is-failing) |

512| `Connection refused — a firewall or proxy may be blocking it (ConnectionRefused)` когда ничто не отвечает по адресу, или `Can't reach the API server — check your internet or DNS (ENOTFOUND)` когда имя хоста не разрешается, часто после молчаливой паузы, пока Claude Code [повторяет с отступом](https://code.claude.com/docs/ru/errors.md#automatic-retries). Код в скобках варьируется; [Unable to connect to API](https://code.claude.com/docs/ru/errors.md#unable-to-connect-to-api) охватывает варианты кодов и более раннюю формулировку | Ничто не ответило на базовый URL: адрес неправильный, или VPN или брандмауэр блокирует путь к шлюзу | Запустите [тест curl выше](#verify-the-connection), который немедленно не проходит с той же причиной, и подтвердите URL и сетевой путь с командой шлюза |512| `Connection refused — a firewall or proxy may be blocking it (ConnectionRefused)` когда ничто не отвечает по адресу, или `Can't reach the API server — check your internet or DNS (ENOTFOUND)` когда имя хоста не разрешается, часто после молчаливой паузы, пока Claude Code [повторяет с отступом](https://code.claude.com/docs/ru/errors.md#automatic-retries). Код в скобках варьируется; [Unable to connect to API](https://code.claude.com/docs/ru/errors.md#unable-to-connect-to-api) охватывает варианты кодов и более раннюю формулировку | Ничто не ответило на базовый URL: адрес неправильный, или VPN или брандмауэр блокирует путь к шлюзу | Запустите [тест curl выше](#verify-the-connection), который немедленно не проходит с той же причиной, и подтвердите URL и сетевой путь с командой шлюза |


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

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

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

523| `/feedback` сохраняет локальный файл в сессии, которая использует `ANTHROPIC_BASE_URL` | За шлюзом `ANTHROPIC_AUTH_TOKEN` и ключ, не соответствующий формату API-ключа Anthropic, не являются учётными данными Anthropic. Без таких учётных данных Claude Code записывает отчёт в локальный архив в `~/.claude/feedback-bundles/` вместо того, чтобы отправить его | Отправьте файл представителю вашего аккаунта Anthropic или приложите его к запросу в службу поддержки. См. [сервисы телеметрии](https://code.claude.com/docs/ru/data-usage.md#telemetry-services) |

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

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

525| `This machine's managed settings require a first-party login`, или [`Administrator policy requires a Cloud gateway sign-in`](https://code.claude.com/docs/ru/errors#administrator-policy-requires-a-cloud-gateway-sign-in) когда управляемые параметры устанавливают `forceLoginMethod` на `"gateway"` или также устанавливают `forceLoginGatewayUrl` | Управляемые параметры включают `forceLoginMethod` или `forceLoginOrgUUID`, которые не могут сосуществовать с `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper` | Администратор должен удалить `forceLoginMethod`, `forceLoginOrgUUID` и `forceLoginGatewayUrl` из управляемых параметров, чтобы использовать учетные данные шлюза, или удалить учетные данные шлюза и использовать вход, который требуют управляемые параметры. Эти два не могут быть объединены |526| `This machine's managed settings require a first-party login`, или [`Administrator policy requires a Cloud gateway sign-in`](https://code.claude.com/docs/ru/errors#administrator-policy-requires-a-cloud-gateway-sign-in) когда управляемые параметры устанавливают `forceLoginMethod` на `"gateway"` или также устанавливают `forceLoginGatewayUrl` | Управляемые параметры включают `forceLoginMethod` или `forceLoginOrgUUID`, которые не могут сосуществовать с `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper` | Администратор должен удалить `forceLoginMethod`, `forceLoginOrgUUID` и `forceLoginGatewayUrl` из управляемых параметров, чтобы использовать учетные данные шлюза, или удалить учетные данные шлюза и использовать вход, который требуют управляемые параметры. Эти два не могут быть объединены |

Details

142claude -p "Reply with one word: connected"142claude -p "Reply with one word: connected"

143```143```

144 144 

145**Контрольная точка**: подсказка возвращает ответ, и запрос появляется в журнале шлюза как `POST` к пути `/v1/messages` со статусом `200`. Claude Code добавляет строку запроса, такую как `?beta=true`, поэтому сопоставляйте по пути, а не по полному URL. Два сообщения об ошибке указывают в разные стороны:145**Контрольная точка**: промпт возвращает ответ, и запрос появляется в логе шлюза как `POST` к пути `/v1/messages` со статусом `200`. Claude Code добавляет строку запроса, такую как `?beta=true`, поэтому сопоставляйте по пути, а не по полному URL. Проверьте сообщение об ошибке:

146 146 

147* `Not logged in`: проверьте журнал шлюза, чтобы различить две причины. Если он пуст, никакие учетные данные не достигли сеанса и никакой запрос не покинул машину; повторно запустите экспорты в оболочке, которую вы тестируете. Если он показывает отклоненный запрос с `x-api-key` в теле `401`, шлюз ожидает ключи в этом заголовке вместо этого; переключитесь на `ANTHROPIC_API_KEY`147* `Not logged in`: проверьте лог шлюза. Если он пуст, никакие учётные данные не достигли сессии и никакой запрос не покинул машину; повторно запустите экспорты в оболочке, из которой вы тестируете. Если он показывает `401` от шлюза с упоминанием `x-api-key`, шлюз ожидает ключи в этом заголовке; переключитесь на `ANTHROPIC_API_KEY`. Если он показывает `401` от `api.anthropic.com` или эндпоинта вашего поставщика, исправьте учётные данные поставщика, которые держит шлюз

148* `Failed to authenticate. API Error: 401` означает, что учетные данные были отправлены и отклонены, и журнал шлюза говорит где: `401`, называющий `api.anthropic.com` или конечную точку вашего поставщика, означает, что шлюз достиг восходящего потока, но его учетные данные поставщика были отклонены, поэтому ключ разработчика работал и учетные данные поставщика, которые держит шлюз, неправильные или заполнитель148* `Failed to authenticate. API Error: 401` означает, что учетные данные были отправлены и отклонены, и журнал шлюза говорит где: `401`, называющий `api.anthropic.com` или конечную точку вашего поставщика, означает, что шлюз достиг восходящего потока, но его учетные данные поставщика были отклонены, поэтому ключ разработчика работал и учетные данные поставщика, которые держит шлюз, неправильные или заполнитель

149 149 

150Неправильный или недостижимый базовый URL производит другой симптом: Claude Code [повторяет попытку подключения с отступом](https://code.claude.com/docs/ru/errors.md#automatic-retries) и может сидеть без вывода в течение нескольких минут перед сообщением об ошибке. Если команда кажется зависшей, проверьте журнал шлюза вместо ожидания; отсутствие поступающего запроса означает, что `ANTHROPIC_BASE_URL` не указывает на шлюз.150Неправильный или недостижимый базовый URL производит другой симптом: Claude Code [повторяет попытку подключения с отступом](https://code.claude.com/docs/ru/errors.md#automatic-retries) и может сидеть без вывода в течение нескольких минут перед сообщением об ошибке. Если команда кажется зависшей, проверьте журнал шлюза вместо ожидания; отсутствие поступающего запроса означает, что `ANTHROPIC_BASE_URL` не указывает на шлюз.


247 247 

248Вы должны видеть строки `data:`, поступающие постепенно. Весь ответ, поступающий сразу после паузы, означает, что шлюз буферизирует, что замораживает Claude Code; `404` означает, что имя модели не маршрутизируется. Повторите для каждого имени модели.248Вы должны видеть строки `data:`, поступающие постепенно. Весь ответ, поступающий сразу после паузы, означает, что шлюз буферизирует, что замораживает Claude Code; `404` означает, что имя модели не маршрутизируется. Повторите для каждого имени модели.

249 249 

250Затем запустите `claude` и отправьте сообщение. Каждый симптом на этом шаге имеет одну причину:250Затем запустите `claude`, отправьте сообщение и сопоставьте то, что видите:

251 251 

252* Приглашение входа означает пробел в учетных данных. Запустите `/status` и откройте вкладку **Status**: когда строка `Setting sources` не включает управляемые параметры, распределение не достигло машины; когда она включает, учетные данные разработчика не были доставлены, поэтому установите `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper`252* Экран входа или `Not logged in` без новых записей в логе шлюза означает пробел в учётных данных. Запустите `/status` и откройте вкладку **Status**: когда строка `Setting sources` не включает управляемые настройки, распределение не достигло машины; когда включает, учётные данные разработчика не были доставлены, поэтому установите `ANTHROPIC_AUTH_TOKEN` или `apiKeyHelper`

253* Ошибки `Failed to authenticate` означают, что шлюз отклоняет запросы; его журнал говорит, какие учетные данные не прошли. Отклонение, которое сам журнал шлюза регистрирует, называет ключ разработчика, в то время как `401` от `api.anthropic.com` или конечной точки вашего поставщика означает, что учетные данные поставщика, которые держит шлюз, были отклонены253* `Please run /login · API Error: 401`, `Not logged in` или `Invalid API key` с `401` в логе шлюза: проверьте, кто выдал `401`. Исправьте ключ разработчика или его заголовок, если его выдал шлюз, или учётные данные поставщика, которые держит шлюз, если он пришёл от `api.anthropic.com` или эндпоинта вашего поставщика

254* Одноразовый запрос подтверждения для ключа ожидается при первом использовании, когда шлюз ожидает ключи в заголовке `x-api-key`, установленном как `ANTHROPIC_API_KEY`254* Одноразовый запрос подтверждения для ключа ожидается при первом использовании, когда шлюз ожидает ключи в заголовке `x-api-key`, установленном как `ANTHROPIC_API_KEY`

255 255 

256Если ваша организация использует [быстрый режим](https://code.claude.com/docs/ru/fast-mode.md), запустите `/fast` здесь тоже: проверка доступности вызывает `api.anthropic.com` напрямую, а не следует базовому URL шлюза, поэтому сеанс, маршрутизируемый через шлюз, может сообщить быстрый режим как недоступный или отключенный, даже если вывод работает. [Использовать быстрый режим за прокси и LLM шлюзами](https://code.claude.com/docs/ru/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) сопоставляет каждое сообщение с переменной, которая его восстанавливает, распределяемой с [остальной конфигурацией](#distribute-the-configuration).256Если ваша организация использует [быстрый режим](https://code.claude.com/docs/ru/fast-mode.md), запустите `/fast` здесь тоже: проверка доступности вызывает `api.anthropic.com` напрямую, а не следует базовому URL шлюза, поэтому сеанс, маршрутизируемый через шлюз, может сообщить быстрый режим как недоступный или отключенный, даже если вывод работает. [Использовать быстрый режим за прокси и LLM шлюзами](https://code.claude.com/docs/ru/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) сопоставляет каждое сообщение с переменной, которая его восстанавливает, распределяемой с [остальной конфигурацией](#distribute-the-configuration).

mcp.md +0 −2

Details

835 835 

836Сервер, который ваша организация предоставляет через управляемую настройку [`managedMcpServers`](https://code.claude.com/docs/ru/managed-mcp#provide-servers-through-managed-settings), имеет приоритет над всеми перечисленными, поэтому если один из них его дублирует, Claude Code подключает определение организации. Требуется Claude Code v2.1.259 или более поздней версии.836Сервер, который ваша организация предоставляет через управляемую настройку [`managedMcpServers`](https://code.claude.com/docs/ru/managed-mcp#provide-servers-through-managed-settings), имеет приоритет над всеми перечисленными, поэтому если один из них его дублирует, Claude Code подключает определение организации. Требуется Claude Code v2.1.259 или более поздней версии.

837 837 

838Если вы открываете локальную сессию на [вкладке Code в приложении Desktop](https://code.claude.com/docs/ru/desktop.md#mcp-servers-from-the-claude-desktop-chat-app), а stdio-сервер с одинаковым именем есть на верхнем уровне `~/.claude.json` (пользовательская область действия) и в `.mcp.json`, вкладка Code использует определение из `~/.claude.json`.

839 

840### Подстановка переменных окружения в `.mcp.json`838### Подстановка переменных окружения в `.mcp.json`

841 839 

842Claude Code поддерживает подстановку переменных окружения в файлах `.mcp.json`, что позволяет командам совместно использовать конфигурации, сохраняя гибкость для путей, специфичных для конкретной машины, и конфиденциальных значений, таких как API-ключи.840Claude Code поддерживает подстановку переменных окружения в файлах `.mcp.json`, что позволяет командам совместно использовать конфигурации, сохраняя гибкость для путей, специфичных для конкретной машины, и конфиденциальных значений, таких как API-ключи.

Details

147 147 

148## Конфигурация Azure RBAC148## Конфигурация Azure RBAC

149 149 

150Роли по умолчанию `Azure AI User` и `Cognitive Services User` включают все необходимые разрешения для вызова моделей Claude.150Если вы проходите аутентификацию с помощью Microsoft Entra ID или выданного им Bearer-токена, назначьте своему удостоверению роль `Foundry User` или `Cognitive Services User` в вашем ресурсе Foundry. Роль `Foundry User` может по-прежнему отображаться под своим прежним названием — `Azure AI User`.

151 151 

152Для более ограничительных разрешений создайте пользовательскую роль со следующим содержимым:152Если эти роли не соответствуют вашим потребностям, см. [документацию Microsoft Foundry RBAC](https://learn.microsoft.com/en-us/azure/foundry/concepts/rbac-foundry), чтобы узнать о пользовательских ролях.

153 

154```json theme={null}

155{

156 "permissions": [

157 {

158 "dataActions": [

159 "Microsoft.CognitiveServices/accounts/providers/*"

160 ]

161 }

162 ]

163}

164```

165 

166Для получения дополнительной информации см. [документацию Microsoft Foundry RBAC](https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/rbac-azure-ai-foundry).

167 153 

168## Контекстное окно на 1M токенов154## Контекстное окно на 1M токенов

169 155 

model-config.md +5 −3

Details

157 157 

158Когда активная модель при запуске поступает из настроек проекта или управляемых настроек, а не из вашего собственного выбора, заголовок запуска показывает, какой файл настроек её установил. Запустите `/model` для переопределения; настройка проекта или управляемая настройка переприменяется при следующем запуске. На платформах, которые встраивают Claude Code и устанавливают [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/ru/env-vars), конфигурация модели хоста имеет приоритет над управляемыми настройками модели, в то время как управляемый список разрешённых моделей `availableModels` остаётся в силе, если только хост не предоставляет свой собственный; [Exceptions to managed settings precedence](https://code.claude.com/docs/ru/settings.md#exceptions-to-managed-settings-precedence) говорит, какие ключи и переменные переопределяет хост.158Когда активная модель при запуске поступает из настроек проекта или управляемых настроек, а не из вашего собственного выбора, заголовок запуска показывает, какой файл настроек её установил. Запустите `/model` для переопределения; настройка проекта или управляемая настройка переприменяется при следующем запуске. На платформах, которые встраивают Claude Code и устанавливают [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/ru/env-vars), конфигурация модели хоста имеет приоритет над управляемыми настройками модели, в то время как управляемый список разрешённых моделей `availableModels` остаётся в силе, если только хост не предоставляет свой собственный; [Exceptions to managed settings precedence](https://code.claude.com/docs/ru/settings.md#exceptions-to-managed-settings-precedence) говорит, какие ключи и переменные переопределяет хост.

159 159 

160Если вы или ваша организация настроите [хуки PreModelSwitch](https://code.claude.com/docs/ru/hooks.md#premodelswitch), они запускаются перед применением запрошенного переключения и могут его заблокировать или попросить вас подтвердить.160Если вы или ваша организация настроите [хуки PreModelSwitch](https://code.claude.com/docs/ru/hooks.md#premodelswitch), они запускаются перед применением запрошенного переключения и могут его заблокировать или попросить вас подтвердить. Чтобы узнать, почему хук заблокировал переключение и что делать, см. [Model switch was blocked by a PreModelSwitch hook](https://code.claude.com/docs/ru/errors.md#model-switch-was-blocked-by-a-premodelswitch-hook).

161 161 

162Когда Claude Code не может определить, какие хуки PreModelSwitch доставляют [управляемые плагины](https://code.claude.com/docs/ru/settings-reference.md#enabledplugins) вашей организации, например потому что управляемый плагин не загрузился, он отказывает в переключении вместо его применения без проверки, и он проверяет снова при каждой новой попытке. См. [Model switch was blocked by a PreModelSwitch hook](https://code.claude.com/docs/ru/errors.md#model-switch-was-blocked-by-a-premodelswitch-hook) для сообщения и восстановления.162Если [управляемый плагин](https://code.claude.com/docs/ru/settings-reference.md#enabledplugins) или его хуки не загрузились, вы всё равно можете переключать модели. Хуки PreModelSwitch этого плагина не запускаются, поэтому переключение, которое один из них заблокировал бы, может пройти. Другие хуки PreModelSwitch, которые загрузились, по-прежнему запускаются и могут его заблокировать. Если Claude Code версии до 2.1.323 отказывает в переключении с сообщением `so organization-managed PreModelSwitch hooks could not be checked`, обновите Claude Code.

163 

164Чтобы увидеть, что не загрузилось, запустите `/plugin` в вашей сессии и откройте [вкладку **Errors**](https://code.claude.com/docs/ru/plugins/troubleshooting.md#failed-to-load-hooks-from-and-hooks-that-dont-fire). Если там ничего не указано, запустите новую сессию с помощью `claude --debug` из вашей оболочки и переключитесь на другую модель, затем прочитайте [лог отладки](https://code.claude.com/docs/ru/hooks.md#debug-hooks). После того как вы исправите плагин или [обновление плагина](https://code.claude.com/docs/ru/plugins/install.md#keep-plugins-updated) доставит исправление вашего администратора на ваш компьютер, запустите `/reload-plugins` в вашей сессии, чтобы его хуки заработали.

163 165 

164Когда вы переключаете модели через метод [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md) `setModel()`, через приложение, такое как [Desktop app](https://code.claude.com/docs/ru/desktop.md), или с устройства, подключённого через [Remote Control](https://code.claude.com/docs/ru/remote-control.md), Claude Code проверяет значение при переключении:166Когда вы переключаете модели через метод [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md) `setModel()`, через приложение, такое как [Desktop app](https://code.claude.com/docs/ru/desktop.md), или с устройства, подключённого через [Remote Control](https://code.claude.com/docs/ru/remote-control.md), Claude Code проверяет значение при переключении:

165 167 


903 905 

904### Исправление окна для шлюза или пользовательского ID модели906### Исправление окна для шлюза или пользовательского ID модели

905 907 

906Любое из этих предупреждений при запуске означает, что Claude Code не распознаёт ID модели вашей сессии, поэтому не может определить контекстное окно модели и предполагает 200K токенов:908Любое из этих предупреждений означает, что Claude Code не распознаёт ID модели вашей сессии, поэтому не может определить контекстное окно модели и предполагает 200K токенов:

907 909 

908```text theme={null}910```text theme={null}

909⚠ Model "my-gateway-opus" isn't recognized · context assumed to be 200k tokens · ...911⚠ Model "my-gateway-opus" isn't recognized · context assumed to be 200k tokens · ...

Details

110| `CLAUDE_CODE_ENABLE_TELEMETRY` | Включает сбор телеметрии (обязательно) | `1` |110| `CLAUDE_CODE_ENABLE_TELEMETRY` | Включает сбор телеметрии (обязательно) | `1` |

111| `OTEL_METRICS_EXPORTER` | Типы экспортеров метрик, разделённые запятыми. Используйте `none` для отключения | `console`, `otlp`, `prometheus`, `none` |111| `OTEL_METRICS_EXPORTER` | Типы экспортеров метрик, разделённые запятыми. Используйте `none` для отключения | `console`, `otlp`, `prometheus`, `none` |

112| `OTEL_LOGS_EXPORTER` | Типы экспортеров логов/событий, разделённые запятыми. Используйте `none` для отключения | `console`, `otlp`, `none` |112| `OTEL_LOGS_EXPORTER` | Типы экспортеров логов/событий, разделённые запятыми. Используйте `none` для отключения | `console`, `otlp`, `none` |

113| `OTEL_EXPORTER_OTLP_PROTOCOL` | Протокол для экспортера OTLP, применяется ко всем сигналам. Claude Code не имеет протокола по умолчанию, поэтому установите эту переменную или переменную протокола для конкретного сигнала для каждого включённого экспортера `otlp` | `grpc`, `http/json`, `http/protobuf` |113| `OTEL_EXPORTER_OTLP_PROTOCOL` | Протокол для экспортера OTLP, применяется ко всем сигналам. По умолчанию `http/protobuf` для корректного эндпоинта `http://` или `https://`. Для эндпоинта gRPC, такого как `http://localhost:4317`, установите значение `grpc`. Значение по умолчанию требует Claude Code v2.1.323 или более поздней версии | `grpc`, `http/json`, `http/protobuf` |

114| `OTEL_EXPORTER_OTLP_ENDPOINT` | Конечная точка сборщика OTLP для всех сигналов | `http://localhost:4317` |114| `OTEL_EXPORTER_OTLP_ENDPOINT` | Конечная точка сборщика OTLP для всех сигналов | `http://localhost:4317` |

115| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Протокол для метрик, переопределяет общий параметр | `grpc`, `http/json`, `http/protobuf` |115| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Протокол для метрик, переопределяет общий параметр | `grpc`, `http/json`, `http/protobuf` |

116| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | Конечная точка метрик OTLP, переопределяет общий параметр | `http://localhost:4318/v1/metrics` |116| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | Конечная точка метрик OTLP, переопределяет общий параметр | `http://localhost:4318/v1/metrics` |


431> * **Пробелы не допускаются**: значения не могут содержать пробелы. Например, `user.organizationName=My Company` недействительно431> * **Пробелы не допускаются**: значения не могут содержать пробелы. Например, `user.organizationName=My Company` недействительно

432> * **Формат**: должны быть пары ключ=значение, разделённые запятыми: `key1=value1,key2=value2`432> * **Формат**: должны быть пары ключ=значение, разделённые запятыми: `key1=value1,key2=value2`

433> * **Допустимые символы**: только символы US-ASCII, исключая управляющие символы, пробелы, двойные кавычки, запятые, точки с запятой и обратные косые черты433> * **Допустимые символы**: только символы US-ASCII, исключая управляющие символы, пробелы, двойные кавычки, запятые, точки с запятой и обратные косые черты

434> * **Специальные символы**: символы вне допустимого диапазона должны быть процентно-кодированы434> * **Специальные символы**: символы вне допустимого диапазона должны быть закодированы процентным кодированием, а `=` внутри значения должен быть записан как `%3D`

435>435>

436> Для значения, которому нужен пробел, используйте подчёркивания или camelCase вместо этого. Следующие примеры устанавливают `org.name` с каждой формой:436> Для значения, которому нужен пробел, используйте подчёркивания или camelCase вместо этого. Следующие примеры устанавливают `org.name` с каждой формой:

437>437>


475 475 

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

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

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

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

480 480 

481### Примеры конфигураций481### Примеры конфигураций

Details

304claude --permission-mode plan304claude --permission-mode plan

305```305```

306 306 

307Нажмите `Shift+Tab` ещё раз, чтобы выйти из режима планирования, не утверждая план.307Если запрос на утверждение не открыт, нажмите `Shift+Tab` ещё раз, чтобы выйти из режима планирования. В запросе на утверждение сначала нажмите `Esc`, поскольку нажатие `Shift+Tab` там утверждает план.

308 308 

309### Просмотр и утверждение плана309### Просмотр и утверждение плана

310 310 


593> * Когда Claude читает [артефакт, созданный кем-то другим](https://code.claude.com/docs/ru/artifacts.md#read-an-artifact-shared-with-you), применяются случаи подтверждения, перечисленные в том разделе593> * Когда Claude читает [артефакт, созданный кем-то другим](https://code.claude.com/docs/ru/artifacts.md#read-an-artifact-shared-with-you), применяются случаи подтверждения, перечисленные в том разделе

594> * Чтение по [сетевому пути](https://code.claude.com/docs/ru/permissions.md#network-paths) вызывает запрос подтверждения594> * Чтение по [сетевому пути](https://code.claude.com/docs/ru/permissions.md#network-paths) вызывает запрос подтверждения

595> 3. Всё остальное передаётся классификатору, за исключением [удалений критических путей](#critical-paths) при их обработке по умолчанию. Инструменты коннекторов и инструменты MCP с `requiresUserInteraction`, которые на шаге 1 напрямую запрашивают у вас подтверждение, также никогда не попадают к классификатору, поэтому ни подтверждение, требуемое организацией, ни шаг получения согласия не одобряются автоматически595> 3. Всё остальное передаётся классификатору, за исключением [удалений критических путей](#critical-paths) при их обработке по умолчанию. Инструменты коннекторов и инструменты MCP с `requiresUserInteraction`, которые на шаге 1 напрямую запрашивают у вас подтверждение, также никогда не попадают к классификатору, поэтому ни подтверждение, требуемое организацией, ни шаг получения согласия не одобряются автоматически

596> * При включённом [Code Mode](https://code.claude.com/docs/ru/code-mode.md#permission-checks) код Claude передаётся классификатору один раз перед выполнением, а вызовы инструментов внутри него — нет. Вы по-прежнему можете заблокировать вызов правилом `deny` или потребовать запрос подтверждения правилом `ask`, но Claude может выполнять команды Bash в [формах, с которыми правила не совпадают](https://code.claude.com/docs/ru/permissions.md#bash-rule-limits)

596> 4. Если классификатор блокирует действие, Claude получает причину. В большинстве сессий причина указывает правило, которому соответствовал классификатор, например `[Data Exfiltration]`, а не содержит письменное объяснение; см. [Просмотр отказов](https://code.claude.com/docs/ru/auto-mode-config.md#review-denials)597> 4. Если классификатор блокирует действие, Claude получает причину. В большинстве сессий причина указывает правило, которому соответствовал классификатор, например `[Data Exfiltration]`, а не содержит письменное объяснение; см. [Просмотр отказов](https://code.claude.com/docs/ru/auto-mode-config.md#review-denials)

597>598>

598> Установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md), который обрабатывает `tool.check`, также может одобрить действие. О случаях, когда его одобрение не проходит через ваши правила и хуки, см. [Расширение разрешений с помощью хуков](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods).599> Установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md), который обрабатывает `tool.check`, также может одобрить действие. О случаях, когда его одобрение не проходит через ваши правила и хуки, см. [Расширение разрешений с помощью хуков](https://code.claude.com/docs/ru/permissions.md#precedence-among-rules-hooks-and-mods).

permissions.md +1 −1

Details

784* Вне репозитория Claude Code привязывает доверие к каталогу, из которого вы его запустили, и доверие распространяется на любой подкаталог этого каталога, за исключением вложенного в него git-репозитория, например клона. Каждый такой подкаталог затем считается папкой, родителю которой вы доверили.784* Вне репозитория Claude Code привязывает доверие к каталогу, из которого вы его запустили, и доверие распространяется на любой подкаталог этого каталога, за исключением вложенного в него git-репозитория, например клона. Каждый такой подкаталог затем считается папкой, родителю которой вы доверили.

785* Если вы запускаете Claude Code в своём домашнем каталоге, он хранит доверие только для текущей сессии и не записывает его на диск; см. примечание о [дополнительных мерах защиты](https://code.claude.com/docs/ru/security.md#additional-safeguards).785* Если вы запускаете Claude Code в своём домашнем каталоге, он хранит доверие только для текущей сессии и не записывает его на диск; см. примечание о [дополнительных мерах защиты](https://code.claude.com/docs/ru/security.md#additional-safeguards).

786 786 

787Claude Code показывает диалог доверия только в интерактивных сессиях. Запуск `claude -p` или сессия SDK никогда его не показывают, и доверие к родительской папке для этих правил не учитывается, поэтому в разделе [Что выполняется до того, как вы доверите папке](#what-runs-before-you-trust-a-folder) указано, какое содержимое репозитория Claude Code всё же использует в каждой из этих двух ситуаций.787Расширение VS Code запрашивает то же доверие в диалоге с заголовком `Trust this folder in Claude Code?` перед запуском сессии. Claude Code показывает диалог доверия в интерактивных сессиях терминала, но не в сессиях `claude -p` или SDK. Доверие к родительской папке для этих правил не учитывается. В разделе [Что выполняется до того, как вы доверите папке](#what-runs-before-you-trust-a-folder) указано, какое содержимое репозитория Claude Code всё же использует в каждом случае.

788 788 

789Перед запуском или перезапуском [фоновой сессии](https://code.claude.com/docs/ru/agent-view.md) Claude Code также проверяет доверие к рабочему пространству для каталога, в котором выполняется сессия. Если вы запускаете `claude --bg` из терминала в каталоге, которому вы не доверили, сначала появляется диалог доверия, и сессия запускается после того, как вы его примете. Там, где диалог появиться не может, например в скрипте, команда вместо этого завершается с ошибкой [`Workspace not trusted`](https://code.claude.com/docs/ru/errors#workspace-not-trusted-when-dispatching-a-background-session).789Перед запуском или перезапуском [фоновой сессии](https://code.claude.com/docs/ru/agent-view.md) Claude Code также проверяет доверие к рабочему пространству для каталога, в котором выполняется сессия. Если вы запускаете `claude --bg` из терминала в каталоге, которому вы не доверили, сначала появляется диалог доверия, и сессия запускается после того, как вы его примете. Там, где диалог появиться не может, например в скрипте, команда вместо этого завершается с ошибкой [`Workspace not trusted`](https://code.claude.com/docs/ru/errors#workspace-not-trusted-when-dispatching-a-background-session).

790 790 

Details

4 4 

5# Добавление компонентов в плагин5# Добавление компонентов в плагин

6 6 

7> Добавляйте skills, hooks, MCP серверы и все остальные типы компонентов в плагин Claude Code с примерами, которые проходят валидацию для каждого.7> Добавляйте скиллы, хуки, MCP-серверы и другие типы компонентов в плагин Claude Code, с проходящим валидацию примером для каждого.

8 8 

9Плагин Claude Code строится из компонентов, таких как skills, agents, hooks и MCP серверы. Каждый компонент имеет папку по умолчанию в плагине, необязательный ключ манифеста в `.claude-plugin/plugin.json`, который заменяет или добавляет к этой папке, и имя, которое видит пользователь. Для полной таблицы полей каждого ключа см. [справочник манифеста](https://code.claude.com/docs/ru/plugins/manifest-reference.md#fields).9Плагин Claude Code строится из компонентов, таких как skills, agents, hooks и MCP серверы. Каждый компонент имеет папку по умолчанию в плагине, необязательный ключ манифеста в `.claude-plugin/plugin.json`, который заменяет или добавляет к этой папке, и имя, которое видит пользователь. Для полной таблицы полей каждого ключа см. [справочник манифеста](https://code.claude.com/docs/ru/plugins/manifest-reference.md#fields).

10 10 


22 22 

23## Изучите каталог плагинов23## Изучите каталог плагинов

24 24 

25Обозреватель показывает пример плагина `my-plugin`, который содержит по одному компоненту каждого вида в его расположении по умолчанию:25Обозреватель показывает пример плагина `my-plugin`, который содержит следующие компоненты в их расположениях по умолчанию:

26 26 

27* Skill для проверки и команду `about`27* Skill для проверки и команду `about`

28* Subagent для проверки безопасности28* Subagent для проверки безопасности


31* Стиль вывода и цветовую тему31* Стиль вывода и цветовую тему

32* Workflow для аудита маршрутов32* Workflow для аудита маршрутов

33* Исполняемый файл `hello-plugin`33* Исполняемый файл `hello-plugin`

34* Параметры по умолчанию

35* Локальный MCP сервер и языковой сервер Go34* Локальный MCP сервер и языковой сервер Go

36 35 

37Каждый файл — это наименьший допустимый пример своего формата, предназначенный для демонстрации структуры, а не для практического использования: реальный skill или agent содержит полные инструкции и часто вспомогательные файлы, а реальный hook или монитор выполняет реальную работу. Разделы после обозревателя используют те же файлы в качестве примеров и ссылаются на более полные версии. Выберите файл или папку, чтобы прочитать, для чего она нужна, увидеть, что в ней содержится, и найти раздел, который её описывает.36Каждый файл — это наименьший допустимый пример своего формата, предназначенный для демонстрации структуры, а не для практического использования: реальный skill или agent содержит полные инструкции и часто вспомогательные файлы, а реальный hook или монитор выполняет реальную работу. Разделы после обозревателя используют те же файлы в качестве примеров и ссылаются на более полные версии. Выберите файл или папку, чтобы прочитать, для чего она нужна, увидеть, что в ней содержится, и найти раздел, который её описывает.

38 37 

39What goes in a plugin38What goes in a plugin

40 39 

41This example plugin, `my-plugin`, has one of every kind of component, each in its default location. Select a file or folder to read what it’s for and see what goes in it.40This example plugin, `my-plugin`, has the components listed here, each in its default location. Select a file or folder to read what it’s for and see what goes in it.

42 41 

43Plugin directory42Plugin directory

44 43 


178npx prettier --write .177npx prettier --write .

179```178```

180 179 

181`settings.json` в корне плагина содержит [параметры](https://code.claude.com/docs/ru/settings-reference.md), которые применяются, пока плагин включен, поэтому плагин может изменить поведение сеанса и не только добавить компоненты. Только два ключа действуют из плагина, [`agent`](https://code.claude.com/docs/ru/settings-reference#agent) и [`subagentStatusLine`](https://code.claude.com/docs/ru/settings-reference#subagentstatusline); все остальные ключи отбрасываются. См. [Параметры по умолчанию](#default-settings).

182 

183Этот устанавливает `agent`, который запускает основной поток сеанса как собственный agent `security-reviewer` плагина, поэтому системный prompt этого agent, ограничения инструментов и модель применяются ко всему сеансу:

184 

185```json theme={null}

186{

187 "agent": "security-reviewer"

188}

189```

190 

191[MCP сервер](https://code.claude.com/docs/ru/mcp.md) предоставляет Claude инструменты из внешней системы. Объявите его в `.mcp.json` в корне плагина. Этот запускает локальный сервер из скрипта внутри плагина и появляется в `/mcp` как `plugin:my-plugin:db`:180[MCP сервер](https://code.claude.com/docs/ru/mcp.md) предоставляет Claude инструменты из внешней системы. Объявите его в `.mcp.json` в корне плагина. Этот запускает локальный сервер из скрипта внутри плагина и появляется в `/mcp` как `plugin:my-plugin:db`:

192 181 

193```json theme={null}182```json theme={null}


484 473 

485claude.ai и Cowork не устанавливают плагин, который имеет директорию `bin/` верхнего уровня, включая тот, который вы [распространяете через параметры организации claude.ai](https://claude.com/docs/plugins/org-sync#keep-executables-out-of-the-top-level-bin-directory).474claude.ai и Cowork не устанавливают плагин, который имеет директорию `bin/` верхнего уровня, включая тот, который вы [распространяете через параметры организации claude.ai](https://claude.com/docs/plugins/org-sync#keep-executables-out-of-the-top-level-bin-directory).

486 475 

487### Параметры по умолчанию

488 

489Чтобы установить значения по умолчанию, которые применяются, пока плагин включен, добавьте `settings.json` в корень плагина или поместите тот же объект встроенным в ключ манифеста `settings`. Два ключа вступают в силу, `agent` и `subagentStatusLine`, и все остальные ключи отбрасываются.

490 

491Установите `agent` для запуска одного из собственных агентов плагина как основного потока:

492 

493```json settings.json theme={null}

494{

495 "agent": "security-reviewer"

496}

497```

498 

499Загрузите плагин и начните сессию. Claude затем отвечает в основном разговоре с системным prompt и моделью агента `security-reviewer`.

500 

501Для всего, что контролирует ключ, см. [параметр `agent`](https://code.claude.com/docs/ru/settings-reference#agent).

502 

503Когда один и тот же ключ установлен в более чем одном месте, эти правила решают, какое значение применяется:

504 

505* **Файл над манифестом**: когда оба существуют и `settings.json` устанавливает по крайней мере один поддерживаемый ключ, `settings.json` применяется и `settings` манифеста игнорируется

506* **Параметры пользователя над значениями по умолчанию плагина**: во всех источниках параметров значения по умолчанию плагина — это самый низкий уровень, поэтому собственный `agent` пользователя в `~/.claude/settings.json` переопределяет ваш

507* **Два плагина устанавливают один и тот же ключ**: значение из плагина, загруженного последним, применяется, и `claude --debug` логирует `overrides setting`

508 

509Для формы `subagentStatusLine` см. [subagent status lines](https://code.claude.com/docs/ru/statusline.md#subagent-status-lines).

510 

511### Темы и стили вывода476### Темы и стили вывода

512 477 

513Плагин может включать цветовые темы и стили вывода. Оба появляются в тех же выборщиках, что и собственные пользователя. Для любого из них установка ключа манифеста заменяет сканирование папки.478Плагин может включать цветовые темы и стили вывода. Оба появляются в тех же выборщиках, что и собственные пользователя. Для любого из них установка ключа манифеста заменяет сканирование папки.

Details

72* **`version`**: опционально. Установка его сохраняет пользователей на этой версии, пока вы не измените её; [Выпустить новую версию](https://code.claude.com/docs/ru/plugins/host-marketplace.md#release-a-new-version) говорит, когда установить или опустить его.72* **`version`**: опционально. Установка его сохраняет пользователей на этой версии, пока вы не измените её; [Выпустить новую версию](https://code.claude.com/docs/ru/plugins/host-marketplace.md#release-a-new-version) говорит, когда установить или опустить его.

73* **`author`**: кого кредитовать. `name` обязателен внутри него; `email` и `url` опциональны.73* **`author`**: кого кредитовать. `name` обязателен внутри него; `email` и `url` опциональны.

74 74 

75Каждое другое поле находится на [справочнике манифеста](https://code.claude.com/docs/ru/plugins/manifest-reference.md#fields).75Другие поля описаны в [справочнике манифеста](https://code.claude.com/docs/ru/plugins/manifest-reference.md#fields).

76 76 

77Только `plugin.json` находится внутри `.claude-plugin/`. Skill, который вы добавите далее, находится непосредственно под `my-first-plugin/`, рядом с этой папкой.77Только `plugin.json` находится внутри `.claude-plugin/`. Skill, который вы добавите далее, находится непосредственно под `my-first-plugin/`, рядом с этой папкой.

78 78 


344 "PostToolUse": [344 "PostToolUse": [

345 {345 {

346 "matcher": "Write|Edit",346 "matcher": "Write|Edit",

347 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]347 "hooks": [{ "type": "command", "command": "f=$(jq -r '.tool_input.file_path') && npm run lint:fix -- \"$f\"" }]

348 }348 }

349 ]349 ]

350 }350 }

Details

4 4 

5# Справочник манифеста плагина5# Справочник манифеста плагина

6 6 

7> Полный справочник по plugin.json: каждое поле с его типом и значением по умолчанию, принятые формы путей и схемы userConfig и переменных окружения.7> Полный справочник по plugin.json: поля с типами и значениями по умолчанию, принятые формы путей и схемы userConfig и переменных окружения.

8 8 

9Манифест плагина — это файл `plugin.json` в директории `.claude-plugin/` плагина. Он содержит метаданные плагина и значения [`userConfig`](#user-configuration), которые Claude Code запрашивает у пользователя. Он также объявляет любой компонент, который вы определяете встроенным образом или храните вне его [расположения по умолчанию](#standard-layout).9Манифест плагина — это файл `plugin.json` в директории `.claude-plugin/` плагина. Он содержит метаданные плагина и значения [`userConfig`](#user-configuration), которые Claude Code запрашивает у пользователя. Он также объявляет любой компонент, который вы определяете встроенным образом или храните вне его [расположения по умолчанию](#standard-layout).

10 10 


117 117 

118## Поля118## Поля

119 119 

120Таблица перечисляет ключи верхнего уровня в `plugin.json`. `name` — единственный обязательный ключ. Где имя поля является ссылкой, связанный раздел содержит его полные правила.120В таблице перечислены ключи верхнего уровня в `plugin.json`. `name` — единственный обязательный ключ. Если имя поля является ссылкой, в связанном разделе приведены полные правила для него.

121 121 

122Для ключей компонентов, таких как `commands` и `hooks`, [Формы путей компонентов](#component-path-forms) показывает каждую принятую форму с примером, и каждый путь следует [правилам путей](#path-rules) для префикса `./`, расширений и содержания.122Для ключей компонентов, таких как `commands` и `hooks`, [Формы путей компонентов](#component-path-forms) показывает каждую принятую форму с примером, и каждый путь следует [правилам путей](#path-rules) для префикса `./`, расширений и содержания.

123 123 


141| [`termsOfServiceUrl`](#directory-listing-fields) | String | Ссылка на условия использования для страницы плагина в каталоге Anthropic. Claude Code не читает его |141| [`termsOfServiceUrl`](#directory-listing-fields) | String | Ссылка на условия использования для страницы плагина в каталоге Anthropic. Claude Code не читает его |

142| [`defaultEnabled`](#defaultenabled) | Boolean | Включен ли плагин при запуске, когда пользователь не установил его. По умолчанию `true` |142| [`defaultEnabled`](#defaultenabled) | Boolean | Включен ли плагин при запуске, когда пользователь не установил его. По умолчанию `true` |

143| [`dependencies`](#dependencies) | Array of strings or objects | Плагины, которые должны быть включены для работы этого |143| [`dependencies`](#dependencies) | Array of strings or objects | Плагины, которые должны быть включены для работы этого |

144| [`settings`](#settings) | Object | Параметры, которые Claude Code применяет при включении плагина. Действуют только `agent` и `subagentStatusLine` |

145| [`userConfig`](#user-configuration) | Object | Значения, которые Claude Code запрашивает у пользователя при включении плагина |144| [`userConfig`](#user-configuration) | Object | Значения, которые Claude Code запрашивает у пользователя при включении плагина |

146| `types` | Path | Файл `.d.ts`, который объявляет значения `$.state` и существительные `$` [mod](https://code.claude.com/docs/ru/plugins/mods/reference.md#files) |145| `types` | Path | Файл `.d.ts`, который объявляет значения `$.state` и существительные `$` [mod](https://code.claude.com/docs/ru/plugins/mods/reference.md#files) |

147| [`channels`](#channels) | Array of objects | Каналы сообщений, которые предоставляет плагин, каждый привязан к одному из его MCP серверов |146| [`channels`](#channels) | Array of objects | Каналы сообщений, которые предоставляет плагин, каждый привязан к одному из его MCP серверов |


211 210 

212Плагины, которые должны быть включены для работы этого. Каждая запись — это `"name"`, `"name@marketplace"` или `{ "name": "...", "marketplace": "...", "version": "..." }`. Простые имена разрешаются против собственного маркетплейса этого плагина. См. [ограничения зависимостей](https://code.claude.com/docs/ru/plugins/dependencies.md).211Плагины, которые должны быть включены для работы этого. Каждая запись — это `"name"`, `"name@marketplace"` или `{ "name": "...", "marketplace": "...", "version": "..." }`. Простые имена разрешаются против собственного маркетплейса этого плагина. См. [ограничения зависимостей](https://code.claude.com/docs/ru/plugins/dependencies.md).

213 212 

214### `settings`

215 

216Параметры, которые Claude Code применяет при включении плагина. Действуют только `agent` и `subagentStatusLine`; другие ключи удаляются при загрузке. `settings.json` в корне плагина имеет приоритет над этим ключом. См. [Параметры по умолчанию](https://code.claude.com/docs/ru/plugins/components.md#default-settings).

217 

218## Формы путей компонентов213## Формы путей компонентов

219 214 

220Каждый ключ компонента принимает путь относительно корня плагина. `hooks`, `mcpServers`, `lspServers` и `experimental.monitors` также принимают встроенную конфигурацию, `commands` также принимает объект-карту, и `mcpServers` также принимает пути пакетов MCP и URL. Примеры, которые следуют, показывают каждую принятую форму один раз. Для того, что каждый компонент делает во время выполнения, см. [Компоненты плагина](https://code.claude.com/docs/ru/plugins/components.md).215Каждый ключ компонента принимает путь относительно корня плагина. `hooks`, `mcpServers`, `lspServers` и `experimental.monitors` также принимают встроенную конфигурацию, `commands` также принимает объект-карту, и `mcpServers` также принимает пути пакетов MCP и URL. Примеры, которые следуют, показывают каждую принятую форму один раз. Для того, что каждый компонент делает во время выполнения, см. [Компоненты плагина](https://code.claude.com/docs/ru/plugins/components.md).


626| Темы | `themes/` | Файлы темы JSON |621| Темы | `themes/` | Файлы темы JSON |

627| Мониторы | `monitors/monitors.json` | Массив мониторов |622| Мониторы | `monitors/monitors.json` | Массив мониторов |

628| Исполняемые файлы | `bin/` | Файлы здесь находятся на `PATH` инструмента Bash при включении плагина, поэтому Claude запускает их как простые команды. claude.ai и Cowork не устанавливают плагин, который имеет эту директорию, включая тот, который вы [распространяете через параметры организации claude.ai](https://claude.com/docs/plugins/org-sync#keep-executables-out-of-the-top-level-bin-directory) |623| Исполняемые файлы | `bin/` | Файлы здесь находятся на `PATH` инструмента Bash при включении плагина, поэтому Claude запускает их как простые команды. claude.ai и Cowork не устанавливают плагин, который имеет эту директорию, включая тот, который вы [распространяете через параметры организации claude.ai](https://claude.com/docs/plugins/org-sync#keep-executables-out-of-the-top-level-bin-directory) |

629| Параметры | `settings.json` | Значения по умолчанию `agent` и `subagentStatusLine`, применяемые при включении плагина |

630 624 

631Плагин, который использует каждое расположение по умолчанию, плюс папку `scripts/`, которую вызывают его hooks, расположен следующим образом:625Плагин, который использует расположения по умолчанию, плюс папку `scripts/`, которую вызывают его хуки, расположен следующим образом:

632 626 

633```text theme={null}627```text theme={null}

634deploy-tools/628deploy-tools/


655│ └── deploy-tool649│ └── deploy-tool

656├── scripts/650├── scripts/

657│ └── format.sh651│ └── format.sh

658├── settings.json

659├── .mcp.json652├── .mcp.json

660└── .lsp.json653└── .lsp.json

661```654```

Details

61 * Сессия использует [учётные данные `/login`](https://code.claude.com/docs/ru/authentication#authentication-precedence) для плана Team или Enterprise61 * Сессия использует [учётные данные `/login`](https://code.claude.com/docs/ru/authentication#authentication-precedence) для плана Team или Enterprise

62 62 

63 Пользователь с API-ключом или работающий через Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry получает стража только на машине с управляемыми настройками или `managed-mcp.json`. Сессия, работающая на долгоживущем [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/ru/authentication#generate-a-long-lived-token), тоже не считается таким входом, даже если на машине сохранён вход с планом Team или Enterprise.63 Пользователь с API-ключом или работающий через Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry получает стража только на машине с управляемыми настройками или `managed-mcp.json`. Сессия, работающая на долгоживущем [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/ru/authentication#generate-a-long-lived-token), тоже не считается таким входом, даже если на машине сохранён вход с планом Team или Enterprise.

64* **Защита защищает то, что вы управляете.** Мод пользователя не может изменить то, что получают или решают ваши управляемые hooks, системный запрос, ваши управляемые `CLAUDE.md` и другие управляемые инструкции, то, что любой мод читает как параметры, или инструменты и описания ваших управляемых MCP серверов.64* **Страж защищает то, чем вы управляете.** Мод пользователя не может изменить то, что получают или решают ваши управляемые хуки, системный промпт, а также ваш управляемый `CLAUDE.md` и другие управляемые инструкции. Он также не может изменить то, что любой мод читает как настройки, или инструменты и описания ваших управляемых MCP-серверов после их подключения.

65* **За пределами того, чем вы управляете, мод пользователя действует от имени этого пользователя.** Мод сохраняет разрешения этого пользователя: он по-прежнему может читать и записывать файлы, запускать процессы и выполнять сетевые запросы. Он также может переписывать вызовы инструментов и промпты, отклонять вызов инструмента и рисовать в интерфейсе.65* **В v2.1.323 и новее мод пользователя может помешать подключению управляемого MCP-сервера.** В сессии этого пользователя `/mcp` показывает сервер как удерживаемый этим модом. Чтобы это предотвратить, [запретите загрузку модов, установленных пользователями](#stop-user-installed-mods-from-loading).

66* **За пределами того, чем вы управляете, мод пользователя действует от имени этого пользователя.** Мод сохраняет разрешения этого пользователя: он по-прежнему может читать и записывать файлы, запускать процессы и выполнять сетевые запросы. Он также может переписывать вызовы инструментов и промпты, отклонять вызов инструмента, добавлять или удалять инструменты и рисовать в интерфейсе.

66* **Правила разрешений и хуки `PreToolUse` имеют приоритет над модом пользователя.** Когда страж загружен, по умолчанию мод пользователя не может одобрить вызов, который отклоняет правило `deny` или для которого правило `ask` запрашивает подтверждение, независимо от того, в каком файле настроек находится правило. Мод также не может одобрить вызов, заблокированный любым хуком `PreToolUse`.67* **Правила разрешений и хуки `PreToolUse` имеют приоритет над модом пользователя.** Когда страж загружен, по умолчанию мод пользователя не может одобрить вызов, который отклоняет правило `deny` или для которого правило `ask` запрашивает подтверждение, независимо от того, в каком файле настроек находится правило. Мод также не может одобрить вызов, заблокированный любым хуком `PreToolUse`.

67 68 

68 Правила разрешений и хуки `PreToolUse` применяются к вызовам инструментов Claude, а не к [вызовам `$.fs` и `$.process`](https://code.claude.com/docs/ru/plugins/mods/api#reach-files-processes-and-the-network) мода. При запрещённом `Read(.env)` мод всё ещё может прочитать этот файл с помощью `$.fs.read` или запустить программу, которая это сделает. Чтобы ограничить собственные вызовы `$.fs` и `$.process` мода, [запретите загрузку мода](#stop-user-installed-mods-from-loading) или обработайте их в [моде политики](#enforce-a-policy-with-a-mod-of-your-own).69 Правила разрешений и хуки `PreToolUse` применяются к вызовам инструментов Claude, а не к [вызовам `$.fs` и `$.process`](https://code.claude.com/docs/ru/plugins/mods/api#reach-files-processes-and-the-network) мода. При запрещённом `Read(.env)` мод всё ещё может прочитать этот файл с помощью `$.fs.read` или запустить программу, которая это сделает. Чтобы ограничить собственные вызовы `$.fs` и `$.process` мода, [запретите загрузку мода](#stop-user-installed-mods-from-loading) или обработайте их в [моде политики](#enforce-a-policy-with-a-mod-of-your-own).


159Строки `hooks:` и `calls:` в выводе описывают код мода:160Строки `hooks:` и `calls:` в выводе описывают код мода:

160 161 

161```text theme={null}162```text theme={null}

162 ❯ ./register.js hooks: session.start, tool.call, ui.render{component=Pane}163 ❯ ./register.js hooks: session.start, tool.call, ui.render{component=Pane} (default matcher key: plugin)

163 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open164 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open

164```165```

165 166 

166Строка `hooks:` перечисляет события, которые получает мод. Строка `calls:` перечисляет методы API модов, которые вызывает его код. [API модов](https://code.claude.com/docs/ru/plugins/mods/api.md), написанный `$` в коде мода, — это то, как мод достигает файлов, процессов и сети. Claude Code отказывается загружать мод, который использует API модов способом, который эта команда не может прочитать.167* **`hooks:`**: события, которые получает мод. Пометка `default matcher key: plugin` означает, что хук перед ней [пропускает элементы управления и отрисовку других модов](https://code.claude.com/docs/ru/plugins/mods/events.md#hook-other-mods-drawings-and-controls).

168* **`calls:`**: методы API модов, которые вызывает его код

167 169 

168Посмотрите на строку `calls:` для этих:170[API модов](https://code.claude.com/docs/ru/plugins/mods/api.md), обозначаемый `$` в коде мода, — это способ, которым мод получает доступ к файлам, процессам и сети. Claude Code отказывается загружать мод, который использует API модов способом, который эта команда не может прочитать.

171 

172Не одобряйте мод, который не проходит эту команду, потому что некоторые ошибки не препятствуют его загрузке. Запускайте команду в Claude Code v2.1.323 или новее, где длинный список продолжается на следующих строках с той же меткой, и прочитайте каждую строку `hooks:` и `calls:`. В строках `calls:` обращайте внимание на следующее:

169 173 

170| Вызов | Что это означает |174| Вызов | Что это означает |

171| :- | :- |175| :- | :- |


174| `$.http.fetch` | Делает сетевые запросы |178| `$.http.fetch` | Делает сетевые запросы |

175| `$.env.get`, `$.settings.read` | Читает переменные окружения и параметры, которые могут содержать ключи API. Строка `env reads:` в выводе называет каждую переменную. |179| `$.env.get`, `$.settings.read` | Читает переменные окружения и параметры, которые могут содержать ключи API. Строка `env reads:` в выводе называет каждую переменную. |

176| `$.env.set` | Устанавливает переменную окружения для Claude Code и для каждой команды и MCP сервера, который он запускает впоследствии, что может изменить то, что эти программы запускают. Строка `env writes:` называет каждую переменную. |180| `$.env.set` | Устанавливает переменную окружения для Claude Code и для каждой команды и MCP сервера, который он запускает впоследствии, что может изменить то, что эти программы запускают. Строка `env writes:` называет каждую переменную. |

177| `$.mcp.call` | Вызывает инструмент на подключенном MCP сервере в соответствии с правилами разрешений сеанса |181| `$.mcp.call` | Вызывает инструмент на подключенном MCP-сервере без запроса разрешения. Claude Code отклоняет вызов при наличии правила запрета или управляемого правила ask. Он также отклоняет вызов инструмента, помеченного [`requiresUserInteraction`](https://code.claude.com/docs/ru/mcp#require-approval-for-a-specific-tool), или инструмента, который ваша организация [установила в `ask`](https://code.claude.com/docs/ru/mcp#organization-controls-on-connector-tools), если эта настройка распространяется на Claude Code. |

178| `$.model.complete` | Использует план пользователя или ключ API для вызовов модели |182| `$.model.complete` | Использует план пользователя или ключ API для вызовов модели |

179| `$.prompt.submit` | Отправляет запрос и может отправить его как собственные слова пользователя |183| `$.prompt.submit` | Отправляет запрос и может отправить его как собственные слова пользователя |

180| `$.session.send` | Отправляет сообщение, которое читает Claude другой сессии, субагента или [участника команды](https://code.claude.com/docs/ru/agent-teams.md) |184| `$.session.send` | Отправляет сообщение, которое читает Claude другой сессии, субагента или [участника команды](https://code.claude.com/docs/ru/agent-teams.md) |


316 320 

317Claude Code вызывает событие каждый раз, когда он собирается действовать, например запустить инструмент, и передает его каждому моду по очереди. Мод, который считается вашим, [выполняется перед модами пользователей](https://code.claude.com/docs/ru/plugins/mods/events.md#the-order-mods-run-in), даже если вы его нигде не указываете. Чтобы задать его место, укажите его идентификатор в одной из двух настроек. Идентификатор — это имя плагина, `@` и имя маркетплейса, например `acme-guard@acme-tools`.321Claude Code вызывает событие каждый раз, когда он собирается действовать, например запустить инструмент, и передает его каждому моду по очереди. Мод, который считается вашим, [выполняется перед модами пользователей](https://code.claude.com/docs/ru/plugins/mods/events.md#the-order-mods-run-in), даже если вы его нигде не указываете. Чтобы задать его место, укажите его идентификатор в одной из двух настроек. Идентификатор — это имя плагина, `@` и имя маркетплейса, например `acme-guard@acme-tools`.

318 322 

319* **`prependPlugins`**: ваш мод видит каждое событие перед любым модом пользователя и каждый результат после. Он может изменить событие, отказать в нем или пропустить моды пользователей.323* **`prependPlugins`**: ваш мод видит событие раньше любого мода пользователя, а результат события — после них. Он может изменить событие, отказать в нем или пропустить моды пользователей. В v2.1.323 или более поздней версии проверьте, что ваши хуки по-прежнему [достигают элементов управления и отрисовок других модов](https://code.claude.com/docs/ru/plugins/mods/events.md#hook-other-mods-drawings-and-controls).

320* **`appendPlugins`**: ваш мод выполняется после каждого мода пользователя, поэтому он видит только события, которые эти моды передают, в форме, в которой они их передают324* **`appendPlugins`**: ваш мод выполняется после каждого мода пользователя, поэтому он видит только события, которые эти моды передают, в форме, в которой они их передают

321 325 

322Этот пример объявляет маркетплейс `acme-tools` в `/opt/acme/claude-plugins`, включает `acme-guard` из него и запускает этот мод первым, со встроенным стражем после него:326Этот пример объявляет маркетплейс `acme-tools` в `/opt/acme/claude-plugins`, включает `acme-guard` из него и запускает этот мод первым, со встроенным стражем после него:


359 363 

360Каждый раз, когда другой мод собирается загрузиться, ваш мод получает список, который печатает `claude plugin validate`, в событии с именем [`plugin.register`](https://code.claude.com/docs/ru/plugins/mods/reference#other-mods). Мод в `prependPlugins` может прочитать этот список и отказать в загрузке мода. Он также может [обработать любой вызов API модов по имени](https://code.claude.com/docs/ru/plugins/mods/api.md#reach-files-processes-and-the-network), чтобы записать этот вызов или отказать в нем для каждого другого мода. Имя — это метод без `$.`, поэтому хук на `fs.write` видит каждый вызов `$.fs.write`.364Каждый раз, когда другой мод собирается загрузиться, ваш мод получает список, который печатает `claude plugin validate`, в событии с именем [`plugin.register`](https://code.claude.com/docs/ru/plugins/mods/reference#other-mods). Мод в `prependPlugins` может прочитать этот список и отказать в загрузке мода. Он также может [обработать любой вызов API модов по имени](https://code.claude.com/docs/ru/plugins/mods/api.md#reach-files-processes-and-the-network), чтобы записать этот вызов или отказать в нем для каждого другого мода. Имя — это метод без `$.`, поэтому хук на `fs.write` видит каждый вызов `$.fs.write`.

361 365 

366> [!NOTE]

367>

368> В v2.1.323 или более поздней версии хуку `ui.focus` нужен более широкий matcher, чтобы получать вызовы `$.ui.focus` других модов. См. [Хуки на отрисовки и элементы управления других модов](https://code.claude.com/docs/ru/plugins/mods/events.md#hook-other-mods-drawings-and-controls).

369 

362Этот мод политики отказывает любому моду пользователя, чей собственный код вызывает `$.process.run` или `$.process.spawn`. Он также ведет журнал аудита, записывая каждый вызов инструмента и каждый файл, который мод записывает, в лог отладки. Поскольку он выполняется первым, лог записывает то, что было запрошено, перед тем как любой мод пользователя это изменит. Сохраните его как `acme-guard/hooks/register.js`:370Этот мод политики отказывает любому моду пользователя, чей собственный код вызывает `$.process.run` или `$.process.spawn`. Он также ведет журнал аудита, записывая каждый вызов инструмента и каждый файл, который мод записывает, в лог отладки. Поскольку он выполняется первым, лог записывает то, что было запрошено, перед тем как любой мод пользователя это изменит. Сохраните его как `acme-guard/hooks/register.js`:

363 371 

364```javascript acme-guard/hooks/register.js theme={null}372```javascript acme-guard/hooks/register.js theme={null}


403* **`e.tier`**: где будет выполняться мод, один из `prepend`, `user`, `append` или `builtin`. Каждый мод, который устанавливает человек, — это `user`.411* **`e.tier`**: где будет выполняться мод, один из `prepend`, `user`, `append` или `builtin`. Каждый мод, который устанавливает человек, — это `user`.

404* **`e.uses.calls`**: методы API модов, которые вызывает мод, каждый записан как `namespace.method`, например `process.run`, без `$.`, который печатает `claude plugin validate`412* **`e.uses.calls`**: методы API модов, которые вызывает мод, каждый записан как `namespace.method`, например `process.run`, без `$.`, который печатает `claude plugin validate`

405 413 

406Когда пользователь устанавливает мод, который вызывает `$.process.run`, мод не загружается, и в его логе отладки есть строка, которая заканчивается на `refused by acme-guard:` и вашу причину. Отказ также попадает в транскрипт в [сессии, которая выполняет горячую перезагрузку каталога плагина](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing). Чтобы заблокировать вызов без отказа всему моду, верните `{ deny: 'your reason' }` из хука на имя этого вызова.414Когда пользователь устанавливает мод, который вызывает `$.process.run`, мод не загружается, и в его логе отладки есть строка, которая заканчивается на `refused by acme-guard:` и вашу причину. Отказ также попадает в транскрипт в [сессии, которая выполняет горячую перезагрузку каталога плагина](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing).

415 

416Чтобы заблокировать вызов без отказа всему моду, верните `{ deny: 'your reason' }` из хука на имя этого вызова, после того как [проверите, кто сделал вызов](https://code.claude.com/docs/ru/plugins/mods/reference.md#mods-api-calls).

407 417 

408Чтобы отправить строки аудита куда-то, кроме лога отладки, вызовите `$.http.fetch` из тех же хуков.418Чтобы отправить строки аудита куда-то, кроме лога отладки, вызовите `$.http.fetch` из тех же хуков.

409 419 

Details

21 21 

22Опишите нужный вам мод в интерактивном сеансе Claude Code, и Claude напишет его. Claude работает из встроенного [skill](https://code.claude.com/docs/ru/skills.md) с именем `plugin-authoring`, который сообщает ему, где написать мод, какие события и методы есть в вашей версии, и как загружается мод. Claude может загрузить skill, когда вы попросите мод, или вы можете загрузить его сами, выполнив `/plugin-authoring` в приглашении Claude Code.22Опишите нужный вам мод в интерактивном сеансе Claude Code, и Claude напишет его. Claude работает из встроенного [skill](https://code.claude.com/docs/ru/skills.md) с именем `plugin-authoring`, который сообщает ему, где написать мод, какие события и методы есть в вашей версии, и как загружается мод. Claude может загрузить skill, когда вы попросите мод, или вы можете загрузить его сами, выполнив `/plugin-authoring` в приглашении Claude Code.

23 23 

24В [режимах разрешений](https://code.claude.com/docs/ru/permission-modes.md) `auto` и `bypassPermissions` мод может запуститься по завершении хода. В остальных случаях он запускается после того, как вы его одобрите, кроме [сессий, где мод, написанный Claude, не может загрузиться](#sessions-that-skip-the-approval).24В [режимах разрешений](https://code.claude.com/docs/ru/permission-modes.md) `auto` и `bypassPermissions` Claude Code [может загрузить мод, не спрашивая вас](#sessions-that-skip-the-approval). Чтобы сначала получить запрос, запустите новую сессию в режиме `default` или `acceptEdits` либо [переключитесь](https://code.claude.com/docs/ru/permission-modes.md#switch-permission-modes) на любой из этих режимов, прежде чем попросить первый мод в сессии. В [некоторых сессиях](#sessions-that-cant-load) мод не может загрузиться.

25 25 

26**1. Опишите мод**26**1. Опишите мод**

27 27 


33 33 

34**2. Одобрите мод**34**2. Одобрите мод**

35 35 

36Когда Claude сохраняет первый файл, Claude Code спрашивает, следует ли включить горячую перезагрузку для сессии. Горячая перезагрузка запускает моды, написанные Claude в этой сессии, и подхватывает каждое последующее изменение. Если вопрос не появляется, пропустите этот шаг.36Когда Claude сохраняет первый файл, Claude Code спрашивает, следует ли включить горячую перезагрузку для сессии. Горячая перезагрузка запускает моды, написанные Claude в этой сессии, и подхватывает каждое последующее изменение. Вы не увидите этот вопрос в сессии, которая [загружает новые моды, не спрашивая](#sessions-that-skip-the-approval) или [не может их загрузить](#sessions-that-cant-load).

37 37 

38Выберите один из этих ответов:38Выберите один из этих ответов:

39 39 


57* **В сеансе, который вы запускаете**: в вашей оболочке выполните `claude --plugin-dir ~/mods/git-branch`57* **В сеансе, который вы запускаете**: в вашей оболочке выполните `claude --plugin-dir ~/mods/git-branch`

58* **Для других людей**: [добавьте его на маркетплейс](#share-your-mod), чтобы они могли его установить58* **Для других людей**: [добавьте его на маркетплейс](#share-your-mod), чтобы они могли его установить

59 59 

60### Сеансы, где мод, написанный Claude, не может загрузиться60### Сессии, которые загружают мод, не спрашивая

61 61 

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

63 63 

64* **Никого нет, чтобы одобрить**: сессия не может показать вам запрос, как при запуске `claude -p` вне режимов `auto` и `bypassPermissions` или в [режиме `dontAsk`](https://code.claude.com/docs/ru/permission-modes)64Когда вы возобновляете сессию, интерактивно или с `claude -p`, моды, уже находящиеся в её папке модов, [могут загрузиться](#sessions-that-cant-load), не спрашивая. Чтобы мод не загружался при возобновлении, удалите его каталог.

65* **Рабочая область не доверена**: вы не приняли приглашение доверия для каталога65 

66### Сессии, где мод, написанный Claude, не может загрузиться

67 

68Мод, написанный Claude, не загружается в следующих случаях, и Claude Code не спрашивает, загружать ли его:

69 

70* **Никого нет, чтобы одобрить**: сессия находится в [режиме `dontAsk`](https://code.claude.com/docs/ru/permission-modes), или это запуск `claude -p`, который пишет мод, в режиме `default` или `acceptEdits`, который не может показать вам вопрос о горячей перезагрузке.

71* **Интерактивная сессия, где рабочее пространство не доверено**: вы не приняли запрос доверия для каталога

66* **Моды отключены**: вы запустили с `--safe-mode` или `--bare`, вы задали `disableAllHooks`, или [управляемые настройки](https://code.claude.com/docs/ru/plugins/mods/admin.md#choose-how-much-to-allow) вашей организации это блокируют72* **Моды отключены**: вы запустили с `--safe-mode` или `--bare`, вы задали `disableAllHooks`, или [управляемые настройки](https://code.claude.com/docs/ru/plugins/mods/admin.md#choose-how-much-to-allow) вашей организации это блокируют

67 73 

68## Напишите мод сами74## Напишите мод сами


292 298 

293Найдите в строке `hooks:` события, на которые ваш модуль устанавливает хуки, каждое с его фильтром в фигурных скобках, а в строке `calls:` — каждый метод API модов, который он вызывает. Если ваш модуль читает или устанавливает переменные окружения, ищите также строки `env reads:` и `env writes:`, а если он использует [`$.state`](https://code.claude.com/docs/ru/plugins/mods/interface#keep-state) — строки `state reads:` и `state writes:`. Вы также видите по одной строке для каждого хука, который может отклонить действие, например `gating hook without .catch: tool.call`, которая сообщает, есть ли у этого хука [обработчик `.catch`](https://code.claude.com/docs/ru/plugins/mods/events#handle-a-hook-that-fails).299Найдите в строке `hooks:` события, на которые ваш модуль устанавливает хуки, каждое с его фильтром в фигурных скобках, а в строке `calls:` — каждый метод API модов, который он вызывает. Если ваш модуль читает или устанавливает переменные окружения, ищите также строки `env reads:` и `env writes:`, а если он использует [`$.state`](https://code.claude.com/docs/ru/plugins/mods/interface#keep-state) — строки `state reads:` и `state writes:`. Вы также видите по одной строке для каждого хука, который может отклонить действие, например `gating hook without .catch: tool.call`, которая сообщает, есть ли у этого хука [обработчик `.catch`](https://code.claude.com/docs/ru/plugins/mods/events#handle-a-hook-that-fails).

294 300 

295Если событие, которое вы хотели обработать, отсутствует в первой строке, Claude Code также не будет вызывать этот хук. Обычная причина — неправильное написание имени события, которое команда сообщает как ошибку, такую как `"tool.calls" is not an event`.301Если событие, которое вы хотели обработать, отсутствует в строках `hooks:`, Claude Code также не будет вызывать этот хук. Обычная причина — неправильное написание имени события, которое команда сообщает как ошибку, такую как `"tool.calls" is not an event`.

296 302 

297Следуйте этим правилам, чтобы статический анализ мог найти каждый hook и вызов:303Следуйте этим правилам, чтобы статический анализ мог найти каждый hook и вызов:

298 304 

Details

91 91 

92Регистрируйте каждое событие один раз для каждого matcher. Если вы вызовете `on` дважды для `session.start` без matcher, модуль не загружается с ошибкой `on("session.start") is registered twice without a matcher`. Поместите всё, что ваш мод делает при запуске сеанса, в один hook.92Регистрируйте каждое событие один раз для каждого matcher. Если вы вызовете `on` дважды для `session.start` без matcher, модуль не загружается с ошибкой `on("session.start") is registered twice without a matcher`. Поместите всё, что ваш мод делает при запуске сеанса, в один hook.

93 93 

94#### Хуки на отрисовку и элементы управления других модов

95 

96Чтобы повесить хук на элементы управления, панели или строку над промптом другого мода, передайте matcher с `plugin`. Используйте имя мода без его маркетплейса, например `{ plugin: 'other-mod' }`, или `{ plugin: '*' }` для всех модов. Без `plugin` хук на `ui.press`, `ui.input`, `ui.select` или `ui.focus` не запускается для элементов управления других модов, а хук `ui.render` пропускает их панели и их строки над промптом.

97 

98Хук на подстановочный символ без matcher, например `on('*', hook)` или `on('ui.*', hook)`, по-прежнему запускается для каждого мода. Подстановочному символу с matcher тоже нужен `plugin`.

99 

100> [!NOTE]

101>

102> `{ plugin: '*' }` требует Claude Code v2.1.323 или более поздней версии. До v2.1.323 хук без `plugin` запускался для каждого мода, а хук с `{ plugin: '*' }` не запускался. Чтобы совпадать с каждым модом в обеих версиях, используйте `{ plugin: /./ }` для `ui.press`, `ui.input` и `ui.select`. Для `ui.focus` и `ui.render` используйте `on('ui.*', hook)` и проверяйте имя события в `next.event`, например `if (next.event !== 'ui.focus') return next(e)`.

103 

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

95 105 

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

Details

177 177 

178## Выбор места для рисования178## Выбор места для рисования

179 179 

180Хук `ui.render` запускается для каждого сайта рендеринга, если вы не сузите его до того, в котором хотите рисовать. Чтобы выбрать сайт рендеринга, передайте фильтр, называемый [matcher](https://code.claude.com/docs/ru/plugins/mods/events.md#filter-which-events-a-hook-handles), в качестве второго аргумента для `on`. `{ component: 'Pane' }` запускает хук только для панелей. В хуке `e.component` называет сайт, `e.surface` говорит, какое приложение рисует, а `e.props` содержит собственные данные сайта. Для панели `e.requestId` — это `id`, с которым вы ее открыли.180Чтобы выбрать точку отрисовки, в которой рисует хук `ui.render`, передайте фильтр, называемый [matcher](https://code.claude.com/docs/ru/plugins/mods/events.md#filter-which-events-a-hook-handles), в качестве второго аргумента для `on`. `{ component: 'Pane' }` запускает хук только для панелей. В хуке `e.component` называет точку отрисовки, `e.surface` говорит, какое приложение рисует, а `e.props` содержит собственные данные точки отрисовки. Для панели `e.requestId` — это `id`, с которым вы ее открыли.

181 181 

182Панель и полоса пусты, пока мод их не заполнит. Выберите вкладку, чтобы увидеть, что представляет собой каждая из них и как в ней рисовать:182Панель и полоса пусты, пока мод их не заполнит. Выберите вкладку, чтобы увидеть, что представляет собой каждая из них и как в ней рисовать:

183 183 


191 191 

192> [tab] Band above the prompt192> [tab] Band above the prompt

193>193>

194> Полоса — это полоса прямо над полем ввода промпта. Она присутствует всегда, и все моды используют ее совместно.194> Полоса — это полоса прямо над полем ввода промпта. Каждый мод, который рисует в ней, получает собственную строку, и строки располагаются сверху вниз в [порядке запуска модов](https://code.claude.com/docs/ru/plugins/mods/events.md#the-order-mods-run-in).

195>195>

196> Ваш хук возвращает дерево, чтобы показать что-то в полосе, или `next(e)`, чтобы ничего не показывать. Дерево заменяет то, что моды [после вашего](https://code.claude.com/docs/ru/plugins/mods/events.md#the-order-mods-run-in) рисуют там. Чтобы сохранить их вывод, поместите результат `await next(e)` среди дочерних элементов [`Box`](#build-a-tree-from-elements) в вашем дереве.196> Чтобы нарисовать строку вашего мода, отфильтруйте по `{ component: 'AbovePrompt' }` и верните [дерево](#build-a-tree-from-elements). Чтобы ничего не рисовать, верните `next(e)`.

197>197>

198> Чтобы рисовать в полосе, отфильтруйте по `{ component: 'AbovePrompt' }`.198> До v2.1.323 все моды использовали в полосе один общий рисунок, и ваше дерево заменяло то, что рисовали моды после вашего. Чтобы поддерживать и эти версии, поместите результат `await next(e)` среди дочерних элементов [`Box`, который остается корректным](https://code.claude.com/docs/ru/plugins/mods/troubleshoot#another-mods-band-shows-and-yours-doesnt). В v2.1.323 или новее этот дочерний элемент не рисует строки других модов.

199 199 

200Мод также может [поместить собственную строку в транскрипт](#place-a-row-in-the-transcript).200Мод также может [поместить собственную строку в транскрипт](#place-a-row-in-the-transcript).

201 201 


281 281 

282Пока Claude работает, спиннер анимируется как прежде, а под ним появляется `under the spinner`.282Пока Claude работает, спиннер анимируется как прежде, а под ним появляется `under the spinner`.

283 283 

284Запрос разрешения не является сайтом рендеринга, поэтому мод не может изменить то, что он показывает. Диалог вопроса, `AskUserQuestion`, является таким сайтом, поэтому мод может его изменить. Дерево для диалога должно содержать ссылку ровно один раз, а ваши элементы — над ней. В противном случае Claude Code рисует собственный диалог.284Запрос разрешения не является точкой отрисовки, поэтому мод не может изменить то, что он показывает. Диалог вопроса, `AskUserQuestion`, является точкой отрисовки, поэтому мод может изменить этот диалог, когда Claude задает вопрос. Дерево для диалога должно содержать ссылку ровно один раз, а ваши элементы — над ней. В противном случае Claude Code рисует собственный диалог.

285 285 

286### Открытие панели в нужное время286### Открытие панели в нужное время

287 287 

288Панель появляется только тогда, когда ваш мод ее открывает. То, как и когда вы ее открываете, определяет, получает ли она фокус клавиатуры, сколько места она запрашивает и появляется ли она вообще в узком терминале.288Панель появляется только тогда, когда ваш мод ее открывает. То, как и когда вы ее открываете, определяет, получает ли она фокус клавиатуры, сколько места она запрашивает и появляется ли она вообще в узком терминале.

289 289 

290Чтобы открыть панель, вызовите [`$.ui.open`](https://code.claude.com/docs/ru/plugins/mods/reference#mods-api-methods) с `id`, который вы выбираете. `id` — это имя панели: ваш хук `ui.render` проверяет его, и вы передаете его снова, чтобы закрыть панель.290Чтобы открыть панель, вызовите [`$.ui.open`](https://code.claude.com/docs/ru/plugins/mods/reference#mods-api-methods) с `id`, который вы выбираете. `id` — это имя панели: ваш хук `ui.render` проверяет его, и вы передаете его снова, чтобы закрыть панель. Если у другого мода уже открыта панель с этим `id`, вызов завершается отклонением.

291 291 

292```javascript theme={null}292```javascript theme={null}

293await $.ui.open({ id: 'hello-tabs', title: 'Hello tabs', focus: true })293await $.ui.open({ id: 'hello-tabs', title: 'Hello tabs', focus: true })


399 399 

400> [!NOTE]400> [!NOTE]

401>401>

402> `$.theme.set` и `$.theme.clear` заменяют `$.ui.backdrop`, который был удален в Claude Code v2.1.319. Замените `$.ui.backdrop({ id: 'your-backdrop' })` на `$.theme.set({ backdrop: { id: 'your-backdrop' } })`, а `$.ui.backdrop(undefined)` — на `$.theme.clear()`, который удаляет фон любого мода.402> `$.theme.set` и `$.theme.clear` заменяют `$.ui.backdrop`, который был удален в Claude Code v2.1.319. Замените `$.ui.backdrop({ id: 'your-backdrop' })` на вызов `$.theme.set`, подобный вызову в примере этого раздела, а `$.ui.backdrop(undefined)` — на `$.theme.clear()`, который удаляет фон любого мода.

403 403 

404Чтобы разместить фон за диалогом в приложении Desktop или мобильном приложении, вызовите [`$.theme.set`](https://code.claude.com/docs/ru/plugins/mods/reference#mods-api-methods) с `backdrop`, а затем нарисуйте фон в точке отрисовки [`Backdrop`](https://code.claude.com/docs/ru/plugins/mods/reference#render-sites). Чтобы убрать фон, вызовите `$.theme.clear()`. Терминал фон не рисует. `$.theme.set` и `$.theme.clear` требуют Claude Code v2.1.319 или новее.404Чтобы разместить фон за диалогом в приложении Desktop или мобильном приложении, вызовите [`$.theme.set`](https://code.claude.com/docs/ru/plugins/mods/reference#mods-api-methods) с `backdrop`, а затем нарисуйте фон в точке отрисовки [`Backdrop`](https://code.claude.com/docs/ru/plugins/mods/reference#render-sites). Чтобы убрать фон, вызовите `$.theme.clear()`. Терминал фон не рисует. `$.theme.set` и `$.theme.clear` требуют Claude Code v2.1.319 или новее.

405 405 

406Этот мод устанавливает фон при запуске сессии, рисует фон и добавляет команду `/plain`, которая убирает фон:406Этот пример требует Claude Code v2.1.323 или новее, поэтому сначала [проверьте свою версию](https://code.claude.com/docs/ru/plugins/mods/overview.md#turn-mods-on-or-off). Мод устанавливает фон при запуске сессии, рисует фон и добавляет команду `/plain`, которая убирает фон:

407 407 

408```javascript theme={null}408```javascript theme={null}

409export function register(on) {409export function register(on) {

410 // Neither a reload of this mod nor --resume keeps the backdrop, so set it here410 // Neither a reload of this mod nor --resume keeps the backdrop, so set it here

411 on('session.start', async ($, e, next) => {411 on('session.start', async ($, e, next) => {

412 await $.theme.set({ backdrop: { id: 'night-sky', colorScheme: 'dark' } })412 await $.theme.set({ backdrop: { scene: 'night-sky' }, overrideColorScheme: 'dark' })

413 await $.command.register({ name: 'plain', description: 'Take the backdrop off' })413 await $.command.register({ name: 'plain', description: 'Take the backdrop off' })

414 return next(e)414 return next(e)

415 })415 })

416 416 

417 on('ui.render', { component: 'Backdrop' }, async ($, e, next) => {417 on('ui.render', { component: 'Backdrop' }, async ($, e, next) => {

418 // This hook runs for every mod's backdrop, and another mod can use the same id418 // This hook runs for every mod's backdrop, and another mod can use the same scene

419 if (e.props.plugin !== $.plugin.name || e.props.id !== 'night-sky') return next(e)419 if (e.props.plugin !== $.plugin.name || e.props.scene !== 'night-sky') return next(e)

420 const { Box, Text } = $.ui.resolve(e)420 const { Box, Text } = $.ui.resolve(e)

421 return Box({ backgroundColor: 'blue', children: [Text({ children: ['Night sky'] })] })421 return Box({ backgroundColor: 'blue', children: [Text({ children: ['Night sky'] })] })

422 })422 })


428}428}

429```429```

430 430 

431> [!NOTE]

432>

433> До v2.1.323 пишите `id` вместо `scene` в вызове `$.theme.set` и в `e.props`, а `overrideColorScheme` переместите внутрь `backdrop` как `colorScheme`.

434 

431Чтобы попробовать пример, поместите этот код в [мод](https://code.claude.com/docs/ru/plugins/mods/create.md) и запустите сессию в приложении Desktop или мобильном приложении. Чтобы убрать фон, запустите `/plain` в промпте Claude Code. Транскрипт покажет `the theme is cleared` после имени мода, например `night-sky: the theme is cleared` для мода с именем `night-sky`.435Чтобы попробовать пример, поместите этот код в [мод](https://code.claude.com/docs/ru/plugins/mods/create.md) и запустите сессию в приложении Desktop или мобильном приложении. Чтобы убрать фон, запустите `/plain` в промпте Claude Code. Транскрипт покажет `the theme is cleared` после имени мода, например `night-sky: the theme is cleared` для мода с именем `night-sky`.

432 436 

433Проверьте, что принимает `backdrop`, что сообщает вам результат вызова и что могут изменить другие моды:437Проверьте, что принимает `backdrop`, что сообщает вам результат вызова и что могут изменить другие моды:

434 438 

435* **Поля `backdrop`**: `id`, [имя](https://code.claude.com/docs/ru/plugins/mods/reference.md#limits), которое вы выбираете, является обязательным, а остальные поля — необязательными. `colorScheme` имеет значение `'light'` или `'dark'` и указывает, светлый или темный ваш рисунок. О `glass` см. [типы для вашей сборки](https://code.claude.com/docs/ru/plugins/mods/create.md#get-the-types-for-your-build).439* **Поля `backdrop`**: `scene` — это [имя](https://code.claude.com/docs/ru/plugins/mods/reference.md#limits), которое вы выбираете для фона, рисуемого вашим хуком. Об остальных полях и `overrideColorScheme` см. [типы для вашей сборки](https://code.claude.com/docs/ru/plugins/mods/create.md#get-the-types-for-your-build).

436* **Рисуется ли фон**: `$.theme.set` разрешается с `isDrawn: true`, когда приложение Desktop или мобильное приложение, подключенное к сессии, сообщает, что рисует фоны. В противном случае `isDrawn` имеет значение `false`, а `reason` объясняет причину.440* **Рисуется ли фон**: `$.theme.set` разрешается с `isDrawn: true`, когда приложение Desktop или мобильное приложение, подключенное к сессии, сообщает, что рисует фоны. В противном случае `isDrawn` имеет значение `false`, а `reason` объясняет причину.

437* **Один фон на каждую сессию**: вызов `$.theme.set` заменяет фон сессии, а `$.theme.clear()` удаляет этот фон, независимо от того, какой мод его установил. Вызывайте `$.theme.clear()` только тогда, когда об этом просит пользователь.441* **Один фон на каждую сессию**: вызов `$.theme.set` заменяет фон сессии, а `$.theme.clear()` удаляет этот фон, независимо от того, какой мод его установил. Вызывайте `$.theme.clear()` только тогда, когда об этом просит пользователь.

438 442 


510>514>

511> Задайте для `rows` значение 2 или больше, чтобы получить [поле, вмещающее несколько строк](https://code.claude.com/docs/ru/plugins/mods/gallery.md#input).515> Задайте для `rows` значение 2 или больше, чтобы получить [поле, вмещающее несколько строк](https://code.claude.com/docs/ru/plugins/mods/gallery.md#input).

512 516 

513В [галерее интерфейсов](https://code.claude.com/docs/ru/plugins/mods/gallery.md) есть примеры и снимки экрана большинства элементов. Эта таблица перечисляет каждый элемент:517В [галерее интерфейсов](https://code.claude.com/docs/ru/plugins/mods/gallery.md) есть примеры и снимки экрана большинства элементов. В этой таблице перечислены основные элементы:

514 518 

515| Элемент | Что он рисует | Где |519| Элемент | Что он рисует | Где |

516| :- | :- | :- |520| :- | :- | :- |


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

607 611 

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

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

610 614 

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

612 616 

Details

147| [`session.start`](https://code.claude.com/docs/ru/plugins/mods/api#add-a-command-or-a-tool) | Один раз для каждого загруженного мода, перед первым промптом, и снова после перезагрузки этого мода. Не срабатывает после `/clear`, `/resume` или `/branch`. | `next(e)` |147| [`session.start`](https://code.claude.com/docs/ru/plugins/mods/api#add-a-command-or-a-tool) | Один раз для каждого загруженного мода, перед первым промптом, и снова после перезагрузки этого мода. Не срабатывает после `/clear`, `/resume` или `/branch`. | `next(e)` |

148| `session.end` | Сессия завершается или выполняется `/clear`, `/resume` либо `/branch`. `e.reason` — это `clear`, `resume`, `logout`, `prompt_input_exit` или `other`. `/branch` сообщает `resume`. | `next(e)` |148| `session.end` | Сессия завершается или выполняется `/clear`, `/resume` либо `/branch`. `e.reason` — это `clear`, `resume`, `logout`, `prompt_input_exit` или `other`. `/branch` сообщает `resume`. | `next(e)` |

149| `session.compact` | Диалог вот-вот будет сжат | `{ skip: reason }` |149| `session.compact` | Диалог вот-вот будет сжат | `{ skip: reason }` |

150| [`session.receive`](https://code.claude.com/docs/ru/plugins/mods/api#send-and-receive-messages-between-sessions), [`session.send`](https://code.claude.com/docs/ru/plugins/mods/api#send-and-receive-messages-between-sessions) | Сообщение приходит от другого агента или сессии либо вот-вот будет отправлено им. См. [Отправка и получение сообщений между сессиями](https://code.claude.com/docs/ru/plugins/mods/api.md#send-and-receive-messages-between-sessions). | `{ consumed: reason }` для `receive`, `{ isDelivered: false, reason }` для `send` |150| [`session.receive`](https://code.claude.com/docs/ru/plugins/mods/api#send-and-receive-messages-between-sessions), [`session.send`](https://code.claude.com/docs/ru/plugins/mods/api#send-and-receive-messages-between-sessions) | Сообщение приходит от другого агента или сессии либо вот-вот будет отправлено другому агенту или сессии. См. [Отправка и получение сообщений между сессиями](https://code.claude.com/docs/ru/plugins/mods/api.md#send-and-receive-messages-between-sessions). | `{ consumed: reason }` для `receive`, `{ isDelivered: false, reason }` для `send` |

151| `session.append` | Один раз для каждой строки, которую сохраняет диалог, например промпта, блока ответа, результата инструмента или уведомления, перед её сохранением | `next({ ...e, message })` с изменённым `message.content`, чтобы переписать текстовые блоки строки или `content` блока `tool_result` в ней |151| `session.append` | Один раз для каждой строки, которую сохраняет диалог, например промпта, блока ответа, результата инструмента или уведомления, перед её сохранением | `next({ ...e, message })` с изменённым `message.content`, чтобы переписать текстовые блоки строки или `content` блока `tool_result` в ней |

152| `session.attach`, `session.detach` | Другое приложение подключается к сессии или отключается от неё | `next(e)` |152| `session.attach`, `session.detach` | Другое приложение подключается к сессии или отключается от неё | `next(e)` |

153| `session.measure` | После каждого хода, а также когда меняется процент использования лимита тарифа | `next(e)` |153| `session.measure` | После каждого хода, а также когда меняется процент использования лимита тарифа | `next(e)` |


208 208 

209### Вызовы API модов209### Вызовы API модов

210 210 

211Каждый [метод API модов](#mods-api-methods) также является событием, названным по его пространству имён и методу, например `fs.read`, `model.complete` или `ui.open`. Хук на такое событие перехватывает вызовы от модов, которые выполняются после него, и может вернуть `next(e)`, `{ deny: reason }` или `{ value }`.211Каждый [метод API модов](#mods-api-methods) также является событием, названным по его пространству имён и методу, например `fs.read`, `model.complete` или `ui.open`. Хук на такое событие может вернуть `next(e)`, `{ deny: reason }` или `{ value }`.

212 

213Некоторые из этих событий срабатывают и для собственных действий Claude Code, поэтому, прежде чем отклонять такое событие, проверьте, равно ли `next.origin.plugin` значению `engine`.

212 214 

213## Методы API модов215## Методы API модов

214 216 


249| :- | :- | :- | :- |251| :- | :- | :- | :- |

250| [`Pane`](https://code.claude.com/docs/ru/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | `id` панели | Terminal, Desktop, VS Code |252| [`Pane`](https://code.claude.com/docs/ru/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | `id` панели | Terminal, Desktop, VS Code |

251| [`AbovePrompt`](https://code.claude.com/docs/ru/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Один экземпляр | Terminal, Desktop |253| [`AbovePrompt`](https://code.claude.com/docs/ru/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Один экземпляр | Terminal, Desktop |

254| `AbovePromptList`, стопка строк `AbovePrompt` | `rows` — список с одним `{ plugin, tree }` для строки каждого мода, а также пропсы `AbovePrompt` | Один экземпляр | Terminal, Desktop. Требуется Claude Code v2.1.323 или новее. |

252| [`Placed`](https://code.claude.com/docs/ru/plugins/mods/interface#place-a-row-in-the-transcript) | `id`, `plugin`, `onScreen` | `requestId`, который вернул `$.ui.place` | Terminal |255| [`Placed`](https://code.claude.com/docs/ru/plugins/mods/interface#place-a-row-in-the-transcript) | `id`, `plugin`, `onScreen` | `requestId`, который вернул `$.ui.place` | Terminal |

253| [`Backdrop`](https://code.claude.com/docs/ru/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `id`, `plugin`, `glass`, `colorScheme` | `backdrop` | Интерфейсы `desktop` и `mobile`. Ваш хук запускается, когда приложение Desktop или мобильное приложение запрашивает отрисовку фона. |256| [`Backdrop`](https://code.claude.com/docs/ru/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `scene`, `plugin`, `glass`, `overrideColorScheme`. До v2.1.323 `scene` назывался `id`, а `overrideColorScheme` — `colorScheme`. | `backdrop` | Интерфейсы `desktop` и `mobile`. Ваш хук запускается, когда приложение Desktop или мобильное приложение запрашивает отрисовку фона. |

254| `UserMessage` | `text`, `origin`, `isExpanded` и `task` или `from` в зависимости от источника | id отрисованной строки | Terminal, Desktop, VS Code |257| `UserMessage` | `text`, `origin`, `isExpanded` и `task` или `from` в зависимости от источника | id отрисованной строки | Terminal, Desktop, VS Code |

255| `AssistantMessage` | Текст ответа | id отрисованной строки | Terminal, Desktop, VS Code |258| `AssistantMessage` | Текст ответа | id отрисованной строки | Terminal, Desktop, VS Code |

256| `ToolUse`, `ToolResult`, `ToolGroup` | Имя, входные данные и результат инструмента | id вызова инструмента | Terminal, Desktop, VS Code |259| `ToolUse`, `ToolResult`, `ToolGroup` | Имя, входные данные и результат инструмента | id вызова инструмента | Terminal, Desktop, VS Code |


297* **`action`**: указывает одно из собственных [действий сочетаний клавиш](https://code.claude.com/docs/ru/keybindings.md) Claude Code, и сочетание, назначенное пользователем для этого действия, нажимает кнопку, если это аккорд или клавиша с модификатором300* **`action`**: указывает одно из собственных [действий сочетаний клавиш](https://code.claude.com/docs/ru/keybindings.md) Claude Code, и сочетание, назначенное пользователем для этого действия, нажимает кнопку, если это аккорд или клавиша с модификатором

298* **Цифровые горячие клавиши на полосе**: цифровой `hotkey` на кнопке в полосе также срабатывает, когда пользователь вводит только эту цифру в пустой промпт и делает паузу301* **Цифровые горячие клавиши на полосе**: цифровой `hotkey` на кнопке в полосе также срабатывает, когда пользователь вводит только эту цифру в пустой промпт и делает паузу

299* **Свёрнутая полоса**: пока полоса [свёрнута](https://code.claude.com/docs/ru/plugins/mods/interface.md#when-the-user-collapses-the-band), ни привязка `action`, ни горячая клавиша не нажимают кнопку в ней302* **Свёрнутая полоса**: пока полоса [свёрнута](https://code.claude.com/docs/ru/plugins/mods/interface.md#when-the-user-collapses-the-band), ни привязка `action`, ни горячая клавиша не нажимают кнопку в ней

300* **Две кнопки с одной горячей клавишей**: если две кнопки в одной отрисовке указывают один и тот же `hotkey`, он достаётся более поздней303* **Две кнопки с одной горячей клавишей**: если две ваши кнопки в одной отрисовке указывают один и тот же `hotkey`, он достаётся более поздней. О кнопке другого мода с той же клавишей см. [Горячие клавиши не работают](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#hotkeys-do-nothing).

301* **`variant`**: `primary` или `secondary`, любое другое значение вызывает исключение. В терминале кнопка `primary` рисуется акцентным цветом, если она не `plain`.304* **`variant`**: `primary` или `secondary`, любое другое значение вызывает исключение. В терминале кнопка `primary` рисуется акцентным цветом, если она не `plain`.

302* **`role`**: `dismiss` помечает кнопку закрытия, любое другое значение вызывает исключение. Само закрытие выполняйте в своём `onPress`. В полосе, содержащей текст и ряд кнопок, приложение Desktop может нарисовать первую кнопку `dismiss` в ряду как собственный элемент управления закрытием. Терминал рисует кнопку так же, как без `role`.305* **`role`**: `dismiss` помечает кнопку закрытия, любое другое значение вызывает исключение. Само закрытие выполняйте в своём `onPress`. В полосе, содержащей текст и ряд кнопок, приложение Desktop может нарисовать первую кнопку `dismiss` в ряду как собственный элемент управления закрытием. Терминал рисует кнопку так же, как без `role`.

303 306 


401| Глубина вложенности одного дерева | 32 уровня ниже корневого элемента |404| Глубина вложенности одного дерева | 32 уровня ниже корневого элемента |

402| Элементы и текстовые дочерние узлы в одном дереве | 20 000 |405| Элементы и текстовые дочерние узлы в одном дереве | 20 000 |

403| Ячейки `Raster` в одном дереве: `columns` каждого `Raster`, умноженные на его `rows` | 262 144 |406| Ячейки `Raster` в одном дереве: `columns` каждого `Raster`, умноженные на его `rows` | 262 144 |

407| Строки над промптом, расположенные одна над другой | Элементы, ячейки `Raster` и байты `Image` суммируются по всем строкам и сравниваются с ограничениями для одного дерева |

404| Байты PNG или RGBA всех элементов `Image` в одном дереве | 2 МиБ |408| Байты PNG или RGBA всех элементов `Image` в одном дереве | 2 МиБ |

405| `$.store` | 4 МиБ JSON в сумме |409| `$.store` | 4 МиБ JSON в сумме |

406| `$.session.messages()` | Последние 4 096 записей |410| `$.session.messages()` | Последние 4 096 записей |


412| Глубина вложенности изменённого события, переданного в `next`, за пределами [хуков на основе асинхронных генераторов](#events), например хука на `turn.step` | 28 000 уровней. При превышении `next` отклоняется с сообщением, оканчивающимся на `nesting deeper than 28000 levels is not supported`. Требуется Claude Code v2.1.299 или новее. |416| Глубина вложенности изменённого события, переданного в `next`, за пределами [хуков на основе асинхронных генераторов](#events), например хука на `turn.step` | 28 000 уровней. При превышении `next` отклоняется с сообщением, оканчивающимся на `nesting deeper than 28000 levels is not supported`. Требуется Claude Code v2.1.299 или новее. |

413| Глубина вложенности возвращаемого значения хука, за пределами `ui.render`, `ui.resolve` и хуков на основе асинхронных генераторов | 28 000 уровней. При превышении результат хука отклоняется, а [уведомление, сообщающее об этом](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing), содержит `nesting deeper than 28000 levels is not supported`. Требуется Claude Code v2.1.299 или новее. |417| Глубина вложенности возвращаемого значения хука, за пределами `ui.render`, `ui.resolve` и хуков на основе асинхронных генераторов | 28 000 уровней. При превышении результат хука отклоняется, а [уведомление, сообщающее об этом](https://code.claude.com/docs/ru/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing), содержит `nesting deeper than 28000 levels is not supported`. Требуется Claude Code v2.1.299 или новее. |

414| Области видимости, такие как функции, блоки и циклы, вложенные друг в друга в одном файле модуля хуков | 2 000 |418| Области видимости, такие как функции, блоки и циклы, вложенные друг в друга в одном файле модуля хуков | 2 000 |

415| Имена команд, инструментов, типов субагентов и панелей, а также `id` размещённой строки или фона | Буквы, цифры, `_` и `-`, до 64 символов |419| Имена команд, инструментов, типов субагентов и панелей, `id` размещённой строки и `scene` фона | Буквы, цифры, `_` и `-`, до 64 символов |

416| Один тест `claude plugin test` | 5 секунд, если тест не задаёт `timeoutMs` |420| Один тест `claude plugin test` | 5 секунд, если тест не задаёт `timeoutMs` |

417 421 

418## Настройки и переменные окружения422## Настройки и переменные окружения

Details

139 on('ui.render', () => ({ type: 'Text', props: {}, children: ['drawn by Claude Code'] }))139 on('ui.render', () => ({ type: 'Text', props: {}, children: ['drawn by Claude Code'] }))

140 ```140 ```

141 141 

142 С зарегистрированным stub монтирование успешно, и `ui.find({ type: 'Text' })` возвращает этот элемент всякий раз, когда ваш hook возвращал `next(e)`.142 С зарегистрированным stub монтирование успешно, и `ui.find({ type: 'Text' })` возвращает этот элемент всякий раз, когда ваш хук возвращал `next(e)`. В v2.1.323 или новее для полосы (band) передайте имя вашего мода вторым аргументом в `on`, как в `{ plugin: 'my-mod' }`. Без него stub не отвечает на ваш `next(e)`.

143 143 

144* **Stub для `turn.step` — это асинхронный генератор**, и тест читает поток до конца, чтобы получить результат:144* **Stub для `turn.step` — это асинхронный генератор**, и тест читает поток до конца, чтобы получить результат:

145 145 


192| `$.session.id`, `$.agent.list` | `() => ({ value: 'abc123' })`, `() => ({ value: [] })` |192| `$.session.id`, `$.agent.list` | `() => ({ value: 'abc123' })`, `() => ({ value: [] })` |

193| `session.send` | `() => ({ isDelivered: true })`. `e.to` приходит как строка даже когда ваш мод передал `{ sessionId }`. |193| `session.send` | `() => ({ isDelivered: true })`. `e.to` приходит как строка даже когда ваш мод передал `{ sessionId }`. |

194| `session.receive` | `($, e) => ({ text: e.text })`. Вызывайте его с помощью `$.session.receive({ origin: { kind: 'peer-send-message' }, text })`. |194| `session.receive` | `($, e) => ({ text: e.text })`. Вызывайте его с помощью `$.session.receive({ origin: { kind: 'peer-send-message' }, text })`. |

195| `ui.render` | `() => ({ type: 'Text', props: {}, children: ['...'] })` |195| `ui.render` | `() => ({ type: 'Text', props: {}, children: ['...'] })`. Для полосы (band) см. matcher в разделе [Следуйте правилам набора для тестирования](#follow-the-test-kit’s-rules). |

196 196 

197### Проверьте результат с помощью `expect`197### Проверьте результат с помощью `expect`

198 198 

199В наборе есть следующие утверждения, и выбранное вами ставится после проверяемого значения, как в `expect(answer.text).toBe('ok')`:199У `expect` есть собственный набор утверждений, например `toEqual` и `toHaveLength`, которые ставятся после проверяемого значения, как в `expect(answer.text).toBe('ok')`. Полный список можно найти, поискав `type Matchers` в файле `claude-code/index.d.ts` среди [типов для вашей сборки](https://code.claude.com/docs/ru/plugins/mods/create.md#get-the-types-for-your-build). Поставьте `.not` перед утверждением, чтобы проверить обратное. Чтобы проверить, с чем завершается промис, поставьте `.resolves` или `.rejects` сразу после `expect(...)` и используйте `await` для этой строки, как в `await expect(promise).rejects.toThrow()`.

200 

201* **Равенство**: `toBe` для того же значения или объекта, `toEqual` для структуры, `toStrictEqual` для структуры вместе с полями `undefined` и прототипом, и `toMatchObject` для указанных вами полей

202* **Текст**: `toMatch`, который принимает регулярное выражение или подстроку, `toStartWith` и `toEndWith`

203* **Числа**: `toBeGreaterThan`, `toBeGreaterThanOrEqual`, `toBeLessThan`, `toBeLessThanOrEqual`

204* **Содержимое**: `toContain` для подстроки или элемента, `toContainEqual` для элемента, сравниваемого по структуре, `toHaveLength` и `toHaveProperty`

205* **Наличие и тип**: `toBeDefined`, `toBeUndefined`, `toBeNull`, `toBeTruthy`, `toBeFalsy`, `toBeNaN`, `toBeInstanceOf`

206* **Выброс исключений**: `toThrow` — для функции, которую вызывает `expect`, или для промиса, который вы проверяете с помощью `.rejects`

207 

208Поставьте `.not` перед утверждением, чтобы проверить обратное, а `.resolves` или `.rejects` — чтобы проверить, с чем завершается промис.

209 200 

210Когда `expect` не выполняется внутри stub или хука, который вы передали в `on` как обычную функцию, а не как асинхронный генератор, тест не проходит. Движок пропускает этот хук, а вывод ошибки называет его, например `in the test's store.set hook`.201Когда `expect` не выполняется внутри stub или хука, который вы передали в `on` как обычную функцию, а не как асинхронный генератор, тест не проходит. Движок пропускает этот хук, а вывод ошибки называет его, например `in the test's store.set hook`.

211 202 

Details

223 223 

224### Полоса другого мода отображается, а ваша нет224### Полоса другого мода отображается, а ваша нет

225 225 

226Над промптом есть одна полоса, и все моды используют ее совместно. Мод, который выполняется [до вашего](https://code.claude.com/docs/ru/plugins/mods/events.md#the-order-mods-run-in), заменяет вашу полосу, когда возвращает дерево, в котором нет результата `next(e)`. Чтобы показать обе полосы, измените хук этого мода или попросите его автора сделать это:226Каждый мод, который рисует над промптом, получает собственную строку, поэтому если вашей нет, а строка другого мода отображается, проверьте следующие причины:

227 227 

228* **Сохраните полосы после него**: поместите результат `await next(e)` среди дочерних элементов `Box` в его дереве, как на вкладке Band above the prompt в разделе [Выберите, где рисовать](https://code.claude.com/docs/ru/plugins/mods/interface.md#pick-where-to-draw)228* **Ваше дерево не проходит валидацию**: [запишите лог отладки](#read-the-debug-log), найдите в нем [`ui.render hook skipped`](#a-pane-or-band-is-empty) или [`does not validate`](#ui-render-refused) и исправьте то, что названо в строке.

229* **Сохраните дерево валидным**: не задавайте этому `Box` или любому `Box` вокруг него проп `width`, `height`, `minWidth`, `minHeight`, `position`, `top`, `left`, `right`, `bottom`, `display` или `overflow`229* **Строки вместе превышают ограничение**: [запишите лог отладки](#read-the-debug-log) и найдите в нем `past the limits of the band`. Строки [используют общие ограничения одного дерева](https://code.claude.com/docs/ru/plugins/mods/reference.md#limits), поэтому нарисуйте дерево меньшего размера или попросите авторов других модов сделать это.

230* **Другой мод скрывает вашу строку или рисует поверх нее**: если в логе нет ни одной из этих строк, [отключите](https://code.claude.com/docs/ru/plugins/mods/overview.md#turn-mods-on-or-off) другие моды по одному. Если ваша строка вернется, попросите автора этого мода изменить его.

230 231 

231Чтобы найти этот мод, [запишите лог отладки](#read-the-debug-log) и найдите в нем `answered ui.render without next()`. Строка вроде `other-mod (user) answered ui.render without next()` называет мод, который вернул свое дерево, не вызвав `next(e)`. Она не называет [точку отрисовки](https://code.claude.com/docs/ru/plugins/mods/reference.md#render-sites), поэтому в ней может оказаться и мод, который рисует только панель. Для мода, который вызывает `next(e)` и отбрасывает результат, строки нет, поэтому проверьте также хуки, выполняемые до вашего.232До v2.1.323 все моды использовали один общий рисунок в полосе. Мод, который выполнялся [до вашего](https://code.claude.com/docs/ru/plugins/mods/events.md#the-order-mods-run-in), заменял ваш рисунок, когда возвращал дерево, в котором нет результата `next(e)`. Обновите Claude Code или попросите автора этого мода внести следующие изменения:

232 233 

233Полоса мода также отсутствует, когда дерево, которое вернул его собственный хук, не проходит валидацию, а полосы других модов при этом остаются. Чтобы узнать, какой это мод и почему, [запишите лог отладки](#read-the-debug-log) и найдите в нем [`ui.render hook skipped`](#a-pane-or-band-is-empty).234* **Сохраните рисунки модов после него**: поместите результат `await next(e)` среди дочерних элементов `Box` в его дереве

235* **Сохраните дерево валидным**: не задавайте этому `Box` или любому `Box` вокруг него проп `width`, `height`, `minWidth`, `minHeight`, `position`, `top`, `left`, `right`, `bottom`, `display` или `overflow`

234 236 

235### Панель или полоса пуста или показывает обычное содержимое Claude Code237### Панель или полоса пуста или показывает обычное содержимое Claude Code

236 238 


246 248 

247### Строка `ui.render` сообщает `refused`249### Строка `ui.render` сообщает `refused`

248 250 

249`ui.render (<site>) refused:` или `ui.render (<site>): the chain settled on a tree that does not validate` в [логе отладки](#read-the-debug-log) означает, что [дерево](https://code.claude.com/docs/ru/plugins/mods/interface.md#build-a-tree-from-elements) в этой точке превышает [ограничение размера](https://code.claude.com/docs/ru/plugins/mods/reference.md#limits). Любая из этих строк называет [точку отрисовки](https://code.claude.com/docs/ru/plugins/mods/reference.md#render-sites), а затем причину, и причина называет ограничение.251`ui.render (<site>) refused:` или `ui.render (<site>): the chain settled on a tree that does not validate` в [логе отладки](#read-the-debug-log) означает, что [дерево](https://code.claude.com/docs/ru/plugins/mods/interface.md#build-a-tree-from-elements) в этой точке превышает [ограничение размера](https://code.claude.com/docs/ru/plugins/mods/reference.md#limits). Любая из этих строк называет [точку отрисовки](https://code.claude.com/docs/ru/plugins/mods/reference.md#render-sites), а затем причину.

250 252 

251Измените моды, которые рисуют в этой точке, чтобы их хуки [`ui.render`](https://code.claude.com/docs/ru/plugins/mods/reference#interface) возвращали деревья меньшего размера, или попросите их авторов сделать это. Если строка транскрипта начинается с `hooks`, у нескольких загруженных модов есть хук `ui.render` для этой точки, поэтому проверьте дерево каждого из этих модов. Для нескольких модов, чьи полосы над промптом вкладываются в дерево глубиной более 32 уровней, строка выглядит так:253Измените моды, которые рисуют в этой точке, чтобы их хуки [`ui.render`](https://code.claude.com/docs/ru/plugins/mods/reference#interface) возвращали деревья меньшего размера, или попросите их авторов сделать это. Если строка транскрипта начинается с `hooks`, у нескольких загруженных модов есть хук `ui.render` для этой точки, поэтому проверьте дерево каждого из этих модов. Для строк над промптом, которые вместе не укладываются в ограничения полосы, строка выглядит так:

252 254 

253```text theme={null}255```text theme={null}

254hooks: ui.render (AbovePrompt) refused: deeper than 32; nothing was drawn256hooks: ui.render (AbovePrompt) refused: a row past the limits of the band; nothing was drawn

255```257```

256 258 

259Несмотря на такое окончание, строки, которые укладываются в ограничения, все равно отрисовываются.

260 

257До v2.1.307 строка `refused:` для любой точки сообщала о любом дереве, которое не прошло валидацию, а для `Pane` и `AbovePrompt` она заканчивалась на `; the engine drew its own`. В этих выпусках исправьте то, что названо в причине.261До v2.1.307 строка `refused:` для любой точки сообщала о любом дереве, которое не прошло валидацию, а для `Pane` и `AbovePrompt` она заканчивалась на `; the engine drew its own`. В этих выпусках исправьте то, что названо в причине.

258 262 

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


307 311 

308### Горячие клавиши ничего не делают312### Горячие клавиши ничего не делают

309 313 

310Ваша панель или полоса не имеет фокуса клавиатуры, ваша кнопка находится в свернутой полосе, или рисунок находится в расширении VS Code, где у кнопок нет горячих клавиш. Выполните то, что соответствует вашему случаю:314Ваша панель или полоса не имеет фокуса клавиатуры, ваша кнопка находится в свернутой полосе, другой мод использует ту же клавишу, или рисунок находится в расширении VS Code.

311 315 

312* **Нет фокуса клавиатуры**: нажмите Ctrl+X затем Tab или в [полноэкранной отрисовке](https://code.claude.com/docs/ru/fullscreen.md) щелкните панель или полосу. Чтобы панель получала фокус при открытии, откройте ее с `focus: true` из команды.316* **Нет фокуса клавиатуры**: нажмите Ctrl+X затем Tab или в [полноэкранной отрисовке](https://code.claude.com/docs/ru/fullscreen.md) щелкните панель или полосу. Чтобы панель получала фокус при открытии, откройте ее с `focus: true` из команды.

313* **Кнопка находится в свернутой полосе**: полоса показывает одну тусклую строку, начинающуюся с `▸ plugin panel hidden`. Нажмите клавиши, указанные в строке, по умолчанию Ctrl+X, затем Ctrl+A, чтобы [развернуть ее](#plugin-panel-hidden).317* **Кнопка находится в свернутой полосе**: полоса показывает одну тусклую строку, начинающуюся с `▸ plugin panel hidden`. Нажмите клавиши, указанные в строке, по умолчанию Ctrl+X, затем Ctrl+A, чтобы [развернуть ее](#plugin-panel-hidden).

314* **В расширении VS Code**: щелкните кнопку или нажмите Enter на ней, когда она получит фокус318* **Строка другого мода в полосе использует ту же горячую клавишу**: в терминале нажатие клавиши не нажимает ни одну из кнопок. Чтобы проверить это, [отключайте](https://code.claude.com/docs/ru/plugins/mods/overview.md#turn-mods-on-or-off) другие моды, которые рисуют строки, по одному, пока клавиша не заработает. Измените `hotkey` вашей кнопки или попросите автора этого мода изменить свою.

319* **В расширении VS Code, где у кнопок нет горячих клавиш**: щелкните кнопку или нажмите Enter на ней, когда она получит фокус

315 320 

316### Рисунок работает в терминале и не в приложении Desktop или VS Code321### Рисунок работает в терминале и не в приложении Desktop или VS Code

317 322 

Details

36 36 

37![Диаграмма в двух столбцах, соединенных пятью прямыми стрелками. Слева — директория plugin с именем my-plugin, содержащая манифест в .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json и другие компоненты. Справа — то, что каждый файл дает вам в вашем сеансе: манифест устанавливает имя plugin, my-plugin; skill запускается как /my-plugin:review; файл agent — это подагент, которому Claude может делегировать; файл hooks содержит hooks, которые запускаются на событиях жизненного цикла; и .mcp.json добавляет MCP server, который дает Claude инструменты.](https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory.svg?fit=max\&auto=format\&n=2Q_GtOEovg5qaBem\&q=85\&s=f623b64e82713b830e48174f0a922888)37![Диаграмма в двух столбцах, соединенных пятью прямыми стрелками. Слева — директория plugin с именем my-plugin, содержащая манифест в .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json и другие компоненты. Справа — то, что каждый файл дает вам в вашем сеансе: манифест устанавливает имя plugin, my-plugin; skill запускается как /my-plugin:review; файл agent — это подагент, которому Claude может делегировать; файл hooks содержит hooks, которые запускаются на событиях жизненного цикла; и .mcp.json добавляет MCP server, который дает Claude инструменты.](https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory.svg?fit=max\&auto=format\&n=2Q_GtOEovg5qaBem\&q=85\&s=f623b64e82713b830e48174f0a922888)

38 38 

39Для каждого типа компонента, который может содержать plugin, с примером каждого, см. [Plugin components](https://code.claude.com/docs/ru/plugins/components.md). Чтобы увидеть, где находится каждая часть в директории plugin, используйте [plugin explorer](https://code.claude.com/docs/ru/plugins/components.md#explore-the-plugin-directory) на этой странице.39Типы компонентов, которые может содержать плагин, с примером каждого см. в разделе [Компоненты плагинов](https://code.claude.com/docs/ru/plugins/components.md). Чтобы увидеть, где находится каждая часть в директории плагина, используйте [обозреватель плагина](https://code.claude.com/docs/ru/plugins/components.md#explore-the-plugin-directory) на этой странице.

40 40 

41### Решите, нужен ли вам plugin41### Решите, нужен ли вам plugin

42 42 

Details

59 59 

60**5. Заполните метаданные, которые видят пользователи**60**5. Заполните метаданные, которые видят пользователи**

61 61 

62Установите `description`, `author`, `homepage` и `repository` в `plugin.json` и добавьте `README.md` в корень плагина. `homepage` должен анализироваться как URL. [Справочник манифеста](https://code.claude.com/docs/ru/plugins/manifest-reference.md#fields) содержит список каждого поля.62Установите `description`, `author`, `homepage` и `repository` в `plugin.json` и добавьте `README.md` в корень плагина. `homepage` должен анализироваться как URL. Какие значения принимает каждое поле, см. в [справочнике манифеста](https://code.claude.com/docs/ru/plugins/manifest-reference.md#fields).

63 63 

64**6. Запустите свой набор eval**64**6. Запустите свой набор eval**

65 65 

Details

67> | `--capacity <N>` | Максимальное количество одновременных сеансов. По умолчанию 32. Не может использоваться с `--spawn=session`. |67> | `--capacity <N>` | Максимальное количество одновременных сеансов. По умолчанию 32. Не может использоваться с `--spawn=session`. |

68> | `--[no-]create-session-in-dir` | Предварительно создайте один сеанс в текущем каталоге при запуске сервера, чтобы у вас было место для ввода сразу. В режиме `worktree` этот сеанс остается в текущем каталоге, а сеансы по требованию получают изолированные worktrees. Включено по умолчанию. Если вы передадите `--no-create-session-in-dir` для запуска без него, Claude Code архивирует сеансы сервера при его остановке, поэтому нечего [возобновлять](#resume-sessions-after-stopping-the-server). |68> | `--[no-]create-session-in-dir` | Предварительно создайте один сеанс в текущем каталоге при запуске сервера, чтобы у вас было место для ввода сразу. В режиме `worktree` этот сеанс остается в текущем каталоге, а сеансы по требованию получают изолированные worktrees. Включено по умолчанию. Если вы передадите `--no-create-session-in-dir` для запуска без него, Claude Code архивирует сеансы сервера при его остановке, поэтому нечего [возобновлять](#resume-sessions-after-stopping-the-server). |

69> | `--permission-mode <mode>` | Установите начальный [режим разрешений](https://code.claude.com/docs/ru/permission-modes.md) для сеансов сервера, например `acceptEdits`. Принимает `manual` как псевдоним для `default`; неузнанный режим останавливает сервер при запуске и выводит список допустимых режимов. |69> | `--permission-mode <mode>` | Установите начальный [режим разрешений](https://code.claude.com/docs/ru/permission-modes.md) для сеансов сервера, например `acceptEdits`. Принимает `manual` как псевдоним для `default`; неузнанный режим останавливает сервер при запуске и выводит список допустимых режимов. |

70> | `--settings <file>` | Применяет JSON-файл настроек к сессиям сервера с тем же [приоритетом](https://code.claude.com/docs/ru/settings.md#settings-precedence), что и `claude --settings`. Укажите путь к файлу, а не JSON-строку. Требуется Claude Code v2.1.321 или новее. |

70> | `--chrome` / `--no-chrome` | Включите или отключите [интеграцию Chrome](https://code.claude.com/docs/ru/chrome.md) в сеансах, которые создает сервер, чтобы Claude мог использовать Chrome на вашей машине, пока вы работаете с другого устройства. Без любого из флагов сеанс, который сервер предварительно создает, и любой сеанс, который вы запускаете сами с claude.ai/code или приложения Claude, начинаются с отключенным Chrome, даже если вы [включили Chrome по умолчанию](https://code.claude.com/docs/ru/chrome.md#enable-chrome-by-default). Сеанс, который сервер запускает для одного из ваших потоков [проекта](https://code.claude.com/docs/ru/claude-projects.md), следует этому параметру вместо этого, за исключением режима `bypassPermissions`. Требуется Claude Code v2.1.273 или позже. |71> | `--chrome` / `--no-chrome` | Включите или отключите [интеграцию Chrome](https://code.claude.com/docs/ru/chrome.md) в сеансах, которые создает сервер, чтобы Claude мог использовать Chrome на вашей машине, пока вы работаете с другого устройства. Без любого из флагов сеанс, который сервер предварительно создает, и любой сеанс, который вы запускаете сами с claude.ai/code или приложения Claude, начинаются с отключенным Chrome, даже если вы [включили Chrome по умолчанию](https://code.claude.com/docs/ru/chrome.md#enable-chrome-by-default). Сеанс, который сервер запускает для одного из ваших потоков [проекта](https://code.claude.com/docs/ru/claude-projects.md), следует этому параметру вместо этого, за исключением режима `bypassPermissions`. Требуется Claude Code v2.1.273 или позже. |

71> | `-d`, `--debug[=<filter>]` | Включите отладочное логирование для сервера, опционально отфильтрованное по категориям. Передайте фильтр только в форме `=`, например `--debug=api,hooks`. Требуется Claude Code v2.1.282 или позже. |72> | `-d`, `--debug[=<filter>]` | Включите отладочное логирование для сервера, опционально отфильтрованное по категориям. Передайте фильтр только в форме `=`, например `--debug=api,hooks`. Требуется Claude Code v2.1.282 или позже. |

72> | `--debug-file <path>` | Запишите отладочные логи в указанный файл. |73> | `--debug-file <path>` | Запишите отладочные логи в указанный файл. |

73> | `--verbose` | Показывайте подробные логи подключения и сеанса. |74> | `--verbose` | Показывайте подробные логи подключения и сеанса. |

74> | `--sandbox`, `--no-sandbox` | Удалены в v2.1.300. Если вы передадите любой из этих флагов, сервер [завершится с ошибкой](https://code.claude.com/docs/ru/errors.md#sandbox-is-not-supported-by-claude-remote-control) вместо запуска. |75> | `--sandbox`, `--no-sandbox` | Удалены в v2.1.300. Если вы передадите любой из этих флагов, сервер [завершится с ошибкой](https://code.claude.com/docs/ru/errors.md#sandbox-is-not-supported-by-claude-remote-control) вместо запуска. |

75>76>

76> Если вы передадите глобальный флаг `claude` перед `remote-control`, или скрипт-обертка добавит его, Claude Code не переносит флаг в сеансы, которые создает сервер. Claude Code пропускает флаг только когда известно, что его удаление не изменит то, что могут делать эти сеансы, например `--verbose` или `--model`. Для любого другого флага, например `--settings`, Claude Code [отказывается запускаться](https://code.claude.com/docs/ru/errors.md#not-carried-over-to-the-sessions-remote-control-starts) и называет флаг для удаления.77> Если вы передадите глобальный флаг `claude` перед `remote-control` или его добавит скрипт-обертка, Claude Code не переносит этот флаг в сессии, которые создает сервер. С некоторыми флагами, например `--verbose` или `--model`, сервер все равно запускается. С любым другим флагом сервер [не запускается](https://code.claude.com/docs/ru/errors.md#not-carried-over-to-the-sessions-remote-control-starts). Чтобы передать файл настроек, укажите `--settings` после `remote-control`.

77>78>

78> Чтобы изолировать сеансы, которые запускает сервер, включите [изоляцию](https://code.claude.com/docs/ru/sandboxing.md) в файле параметров.79> Чтобы изолировать сеансы, которые запускает сервер, включите [изоляцию](https://code.claude.com/docs/ru/sandboxing.md) в файле параметров.

79>80>


375* **Пересылаемые диалоги истекают**: Claude Code держит запросы разрешений и вопросы `AskUserQuestion` открытыми, пока вы на них не ответите. Когда Claude Code пересылает в удалённую сессию диалог другого типа, например промпт выбора модели, показываемый после отказа по соображениям безопасности, он по умолчанию ждёт пять минут, затем закрывает диалог и продолжает с вариантом диалога по умолчанию, не предполагающим действий. Задайте [`dialogExpiry`](https://code.claude.com/docs/ru/settings-reference#dialogexpiry), чтобы изменить или отключить этот срок. Требуется Claude Code v2.1.224 или новее.376* **Пересылаемые диалоги истекают**: Claude Code держит запросы разрешений и вопросы `AskUserQuestion` открытыми, пока вы на них не ответите. Когда Claude Code пересылает в удалённую сессию диалог другого типа, например промпт выбора модели, показываемый после отказа по соображениям безопасности, он по умолчанию ждёт пять минут, затем закрывает диалог и продолжает с вариантом диалога по умолчанию, не предполагающим действий. Задайте [`dialogExpiry`](https://code.claude.com/docs/ru/settings-reference#dialogexpiry), чтобы изменить или отключить этот срок. Требуется Claude Code v2.1.224 или новее.

376* **Промпт согласия на кредиты использования Fable не пересылается**: Claude Code показывает [промпт согласия на кредиты использования Fable](https://code.claude.com/docs/ru/model-config.md#fable-and-usage-credits) посреди сессии только там, где выполняется сессия, а не на вашем устройстве. Если сессия выполняется в терминале и никто не отвечает там до того, как Claude Code закроет промпт, ход завершается без отправки запроса; см. [The prompt to confirm went unanswered](https://code.claude.com/docs/ru/errors.md#the-prompt-to-confirm-went-unanswered).377* **Промпт согласия на кредиты использования Fable не пересылается**: Claude Code показывает [промпт согласия на кредиты использования Fable](https://code.claude.com/docs/ru/model-config.md#fable-and-usage-credits) посреди сессии только там, где выполняется сессия, а не на вашем устройстве. Если сессия выполняется в терминале и никто не отвечает там до того, как Claude Code закроет промпт, ход завершается без отправки запроса; см. [The prompt to confirm went unanswered](https://code.claude.com/docs/ru/errors.md#the-prompt-to-confirm-went-unanswered).

377* **Некоторые команды доступны только локально**: команды, которые работают только в терминальном интерфейсе, например `/plugin` или `/resume`, работают только из локального CLI, независимо от того, передаёте ли вы аргумент. `/claude-api` также недоступна, если вводить её с мобильного устройства или в вебе. Claude всё же может [загрузить этот скилл самостоятельно](https://code.claude.com/docs/ru/skills.md#work-on-claude-api-projects) и там. С мобильного устройства и в вебе работают следующие команды:378* **Некоторые команды доступны только локально**: команды, которые работают только в терминальном интерфейсе, например `/plugin` или `/resume`, работают только из локального CLI, независимо от того, передаёте ли вы аргумент. `/claude-api` также недоступна, если вводить её с мобильного устройства или в вебе. Claude всё же может [загрузить этот скилл самостоятельно](https://code.claude.com/docs/ru/skills.md#work-on-claude-api-projects) и там. С мобильного устройства и в вебе работают следующие команды:

378 * Команды с текстовым выводом: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap` и `/reload-plugins`. `/usage-credits` выводит URL биллинга вместо открытия браузера. `/reload-plugins` работает, только когда сессия выполняется в интерактивном терминале; сессия без него отклоняет эту команду.379 * Команды с текстовым выводом: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap` и `/reload-plugins`. `/usage-credits` отвечает текстом, например сообщает, где управлять кредитами использования. `/reload-plugins` работает, только когда сессия выполняется в интерактивном терминале; сессия без него отклоняет эту команду.

379 * `/model`, `/effort`, `/fast`, `/color` и `/rename`: передайте значение как аргумент, например `/model sonnet` или `/effort high`. С мобильного устройства и в вебе `/model` и `/effort` принимают аргумент вместо терминального меню выбора или ползунка.380 * `/model`, `/effort`, `/fast`, `/color` и `/rename`: передайте значение как аргумент, например `/model sonnet` или `/effort high`. С мобильного устройства и в вебе `/model` и `/effort` принимают аргумент вместо терминального меню выбора или ползунка.

380 * `/mcp`: в мобильном приложении возвращает текстовую сводку состояния серверов вместо открытия меню выбора. В вебе `/mcp` без аргументов открывает каталог [коннекторов claude.ai](https://code.claude.com/docs/ru/mcp.md#use-mcp-servers-from-claude-ai) вместо возврата сводки. [Подкоманды](https://code.claude.com/docs/ru/commands.md#all-commands) `reconnect`, `enable` и `disable` работают в обоих случаях, когда сессия выполняется в интерактивном терминале. `/mcp reconnect` без имени сервера повторяет попытку для каждого сервера, который дал сбой или требует аутентификации. Чтобы авторизовать коннектор claude.ai без меню выбора, см. [Повторная авторизация коннектора из оболочки](#authorize-a-connector-again-from-your-shell).381 * `/mcp`: в мобильном приложении возвращает текстовую сводку состояния серверов вместо открытия меню выбора. В вебе `/mcp` без аргументов открывает каталог [коннекторов claude.ai](https://code.claude.com/docs/ru/mcp.md#use-mcp-servers-from-claude-ai) вместо возврата сводки. [Подкоманды](https://code.claude.com/docs/ru/commands.md#all-commands) `reconnect`, `enable` и `disable` работают в обоих случаях, когда сессия выполняется в интерактивном терминале. `/mcp reconnect` без имени сервера повторяет попытку для каждого сервера, который дал сбой или требует аутентификации. Чтобы авторизовать коннектор claude.ai без меню выбора, см. [Повторная авторизация коннектора из оболочки](#authorize-a-connector-again-from-your-shell).

381 * `/config`: в мобильном приложении передайте `key=value`, чтобы задать настройку, или выполните команду без аргумента, чтобы вывести список ключей, которые можно задать. В вебе `/config` вместо этого открывает **Settings > Code** или **Settings > Claude Code**.382 * `/config`: в мобильном приложении передайте `key=value`, чтобы задать настройку, или выполните команду без аргумента, чтобы вывести список ключей, которые можно задать. В вебе `/config` вместо этого открывает **Settings > Code** или **Settings > Claude Code**.

routines.md +1 −1

Details

431 431 

432Каждая запланированная задача использует [облачное окружение](https://code.claude.com/docs/ru/cloud-environments.md), которое определяет сетевой доступ, переменные окружения и скрипты настройки. Задача наследует сетевую политику окружения при каждом запуске.432Каждая запланированная задача использует [облачное окружение](https://code.claude.com/docs/ru/cloud-environments.md), которое определяет сетевой доступ, переменные окружения и скрипты настройки. Задача наследует сетевую политику окружения при каждом запуске.

433 433 

434Окружение **Default** использует доступ **Limited** с установленным флажком **Allow package managers**, поэтому его запуски могут обращаться к доменам из [списка разрешённых доменов по умолчанию](https://code.claude.com/docs/ru/cloud-environments.md#default-allowed-domains). Запрос к заблокированному хосту завершается ошибкой `403` с `x-deny-reason: host_not_allowed`. Трафик MCP-коннекторов идёт через серверы Anthropic, поэтому добавленные в задачу коннекторы работают без добавления их хостов в **Allowed domains**. Удалите ненужные коннекторы, как описано в разделе [Коннекторы](#connectors).434Окружение **Default** использует доступ **Limited** с установленным флажком **Allow package managers**, поэтому его запуски могут обращаться к доменам из [списка разрешённых доменов по умолчанию](https://code.claude.com/docs/ru/cloud-environments.md#default-allowed-domains). Запрос к заблокированному хосту завершается [ошибкой, например `403` или `ENOTFOUND`](https://code.claude.com/docs/ru/errors#host-not-allowed-in-a-cloud-session). Трафик MCP-коннекторов идёт через серверы Anthropic, поэтому добавленные в задачу коннекторы работают без добавления их хостов в **Allowed domains**. Удалите ненужные коннекторы, как описано в разделе [Коннекторы](#connectors).

435 435 

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

437 437 

sandboxing.md +5 −3

Details

276 276 

277Эти пути применяются на уровне ОС, поэтому их соблюдают все команды, выполняемые внутри песочницы, включая их дочерние процессы. Это рекомендуемый подход, когда инструменту нужен доступ на запись к определённому расположению, вместо того чтобы полностью исключать инструмент из песочницы с помощью `excludedCommands`.277Эти пути применяются на уровне ОС, поэтому их соблюдают все команды, выполняемые внутри песочницы, включая их дочерние процессы. Это рекомендуемый подход, когда инструменту нужен доступ на запись к определённому расположению, вместо того чтобы полностью исключать инструмент из песочницы с помощью `excludedCommands`.

278 278 

279В Linux и WSL2 запись для пути, который ещё не существует, не действует, поэтому сначала создайте этот путь.

280 

279Если вы определяете один и тот же массив файловой системы в нескольких [областях действия настроек](https://code.claude.com/docs/ru/settings.md#settings-precedence), Claude Code объединяет их, собирая пути из всех областей действия, а не заменяя массив одной области действия массивом другой. Claude Code не включает запись в объединение, если на неё распространяется блокировка из раздела [Запрет разработчикам расширять политику](#keep-developers-from-widening-the-policy).281Если вы определяете один и тот же массив файловой системы в нескольких [областях действия настроек](https://code.claude.com/docs/ru/settings.md#settings-precedence), Claude Code объединяет их, собирая пути из всех областей действия, а не заменяя массив одной области действия массивом другой. Claude Code не включает запись в объединение, если на неё распространяется блокировка из раздела [Запрет разработчикам расширять политику](#keep-developers-from-widening-the-policy).

280 282 

281Если вы исключаете источник с помощью [`--setting-sources`](https://code.claude.com/docs/ru/cli-reference) в CLI или [`settingSources`](https://code.claude.com/docs/ru/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) в Agent SDK, Claude Code игнорирует его записи `sandbox.filesystem`, его правила разрешений `Edit` и его запрещающие правила `Read` при построении конфигурации песочницы. Требуется Claude Code v2.1.246 или новее.283Если вы исключаете источник с помощью [`--setting-sources`](https://code.claude.com/docs/ru/cli-reference) в CLI или [`settingSources`](https://code.claude.com/docs/ru/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) в Agent SDK, Claude Code игнорирует его записи `sandbox.filesystem`, его правила разрешений `Edit` и его запрещающие правила `Read` при построении конфигурации песочницы. Требуется Claude Code v2.1.246 или новее.


376 378 

377Поскольку отключение изоляции файловой системы расширяет возможности команд в песочнице, Claude Code учитывает `filesystem.disabled` только из следующих источников настроек:379Поскольку отключение изоляции файловой системы расширяет возможности команд в песочнице, Claude Code учитывает `filesystem.disabled` только из следующих источников настроек:

378 380 

379* Пользовательские настройки, управляемые настройки и флаг CLI `--settings` могут её задавать. Настройки проекта в `.claude/settings.json` и `.claude/settings.local.json` не могут, поэтому извлечённый проект не может отключить изоляцию файловой системы.381* Пользовательские настройки, управляемые настройки и флаг CLI `--settings` могут её задавать. Настройки проекта в `.claude/settings.json` и `.claude/settings.local.json` не могут её задавать.

380* Если управляемые настройки вообще настраивают `sandbox.filesystem` или содержат какую-либо запись `sandbox.credentials.files` с `"mode": "deny"`, задать этот ключ могут только управляемые настройки. Это не позволяет разработчикам отключить изоляцию файловой системы в таком развёртывании; чтобы отключить её для всех, задайте `"disabled": true` в управляемых настройках.382* Если управляемые настройки вообще настраивают `sandbox.filesystem` или содержат какую-либо запись `sandbox.credentials.files` с `"mode": "deny"`, задать этот ключ могут только управляемые настройки. Чтобы отключить изоляцию файловой системы для всех, задайте `"disabled": true` в управляемых настройках.

381* Если задана [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](https://code.claude.com/docs/ru/env-vars), Claude Code игнорирует `filesystem.disabled` из любого источника, включая управляемые настройки, и оставляет изоляцию файловой системы включённой.383* Если задана [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](https://code.claude.com/docs/ru/env-vars), Claude Code игнорирует `filesystem.disabled` из любого источника, включая управляемые настройки.

382 384 

383[Допустимая](https://code.claude.com/docs/ru/settings-reference.md#invalid-credential-entries-in-managed-settings) запись `mask` не закрепляет этот ключ, даже если Claude Code [переключается для неё на `deny`](#mask-credential-files) при запуске. Путь, который нельзя замаскировать, например каталог с учётными данными, укажите в управляемых настройках как явную запись `deny`, которая закрепляет ключ.385[Допустимая](https://code.claude.com/docs/ru/settings-reference.md#invalid-credential-entries-in-managed-settings) запись `mask` не закрепляет этот ключ, даже если Claude Code [переключается для неё на `deny`](#mask-credential-files) при запуске. Путь, который нельзя замаскировать, например каталог с учётными данными, укажите в управляемых настройках как явную запись `deny`, которая закрепляет ключ.

384 386 

Details

117 117 

118* **Слушатель**: слушатель является forward proxy на `127.0.0.1`. Runner запускает слушатель перед регистрацией в плоскости управления и выходит при запуске, если слушатель не может запуститься.118* **Слушатель**: слушатель является forward proxy на `127.0.0.1`. Runner запускает слушатель перед регистрацией в плоскости управления и выходит при запуске, если слушатель не может запуститься.

119* **Переменные прокси**: runner переписывает любой из `HTTPS_PROXY` и `HTTP_PROXY`, который вы установили, чтобы он указывал на слушатель. Это переписанное значение достигает самого runner, его lifecycle hooks и каждого сеанса, который он запускает.119* **Переменные прокси**: runner переписывает любой из `HTTPS_PROXY` и `HTTP_PROXY`, который вы установили, чтобы он указывал на слушатель. Это переписанное значение достигает самого runner, его lifecycle hooks и каждого сеанса, который он запускает.

120* **Ротация токена**: ротированный токен вступает в силу без перезагрузки. Для каждого соединения, которое слушатель открывает для вашего прокси, runner запускает вашу команду или читает ваш файл снова и добавляет результат как заголовок.120* **Ротация токена**: когда вы ротируете токен, новые соединения используют новый токен без перезапуска runner. Для каждого соединения, которое слушатель открывает к вашему прокси, runner снова запускает вашу команду или читает ваш файл и добавляет результат как заголовок. Уже открытое соединение остаётся пригодным к использованию со старым токеном, пока ваш прокси не закроет его или runner не завершит работу.

121* **Окружение сеанса**: сеанс достигает вашего прокси только через слушатель. В окружении каждого сеанса runner удаляет `ALL_PROXY`, удаляет любое написание `HTTPS_PROXY` или `HTTP_PROXY`, которое вы не установили, и закрепляет `NO_PROXY` на собственное значение runner.121* **Окружение сеанса**: сеанс достигает вашего прокси только через слушатель. В окружении каждого сеанса runner удаляет `ALL_PROXY`, удаляет любое написание `HTTPS_PROXY` или `HTTP_PROXY`, которое вы не установили, и закрепляет `NO_PROXY` на собственное значение runner.

122* **Логи**: runner никогда не регистрирует значение заголовка.122* **Логи**: runner никогда не регистрирует значение заголовка.

123 123 


840 840 

841### Некоторые сеансы не считаются неактивными841### Некоторые сеансы не считаются неактивными

842 842 

843Сессия, удерживающая фоновую задачу, которая продолжает выполняться, не считается неактивной, поэтому `--release-idle-session-min` не освободит слот этой сессии. Сессия, ожидающая подтверждения, запрошенного изнутри выполняющегося вызова инструмента, также не считается неактивной. Задайте вместе с ним `--kill-session-after-min` в качестве жёсткой страховки.843Пока сессия не считается неактивной, она удерживает свой слот дольше лимита `--release-idle-session-min`, поэтому также задайте `--kill-session-after-min`.

844 

845Сессия считается неактивной после завершения её хода или пока её ход ожидает её пользователя, но не в таких случаях, как эти:

846 

847* Её ход завершился, и она не ожидает своего пользователя, но фоновая задача продолжает выполняться

848* Её ход ожидает подтверждения, которое запрашивает инструмент, не относящийся к MCP, во время своего выполнения

849* Её ход ожидает [запроса `elicitation/create`](https://code.claude.com/docs/ru/mcp#respond-to-mcp-elicitation-requests) от MCP-сервера

844 850 

845`--kill-session-after-min` является упором для убегающих сеансов. На runner на v2.1.260 или позже, сеанс, который достигает лимита, не завершается сразу. Runner дает ему окно благодати, 15 минут по умолчанию, которое вы можете изменить с помощью [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](https://code.claude.com/docs/ru/self-hosted-environments-reference#environment-variable-only-settings):851`--kill-session-after-min` является упором для убегающих сеансов. На runner на v2.1.260 или позже, сеанс, который достигает лимита, не завершается сразу. Runner дает ему окно благодати, 15 минут по умолчанию, которое вы можете изменить с помощью [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](https://code.claude.com/docs/ru/self-hosted-environments-reference#environment-variable-only-settings):

846 852 

847* Если сеанс ждет своего пользователя, runner выпускает его. Если его ход закончился и он держит только фоновые задачи, runner ждет до 60 секунд, чтобы эти задачи завершились, а затем выпускает его. Сеанс возобновляется, когда его пользователь отправляет свое следующее сообщение.853* Если сеанс ждет своего пользователя, runner выпускает его. Если его ход закончился и он держит только фоновые задачи, runner ждет до 60 секунд, чтобы эти задачи завершились, а затем выпускает его. Сеанс возобновляется, когда его пользователь отправляет свое следующее сообщение.

848* Если ход все еще работает, runner ждет, пока ход закончится, или пока сеанс не будет ждать своего пользователя, и затем выпускает его.854* Если ход все еще работает, runner ждет, пока ход закончится, или пока сеанс не будет ждать своего пользователя, и затем выпускает его.

849* Если сеанс все еще на runner, когда окно благодати истекает, runner завершает его, и любая работа работающего хода потеряна. Ход, ожидающий одобрения, запрошенного изнутри работающего вызова инструмента, - это один способ, которым сеанс переживает окно.855* Если сессия всё ещё находится на runner, когда льготный период истекает, runner завершает её, и работа любого выполняющегося хода теряется. Например, сессия может оставаться на runner до этого момента, если её ход ожидает подтверждения, которое запрашивает инструмент, не относящийся к MCP, во время своего выполнения. Сессия также может оставаться там, пока её ход ожидает запроса `elicitation/create` от MCP-сервера.

850 856 

851Освобождённая сессия возобновляется из свежего клона, поэтому работа, которую она не отправила, теряется в любом случае; см. [Возобновлённые сессии теряют неотправленную работу](#resumed-sessions-lose-unpushed-work). До v2.1.260 runner завершал каждую сессию по достижении лимита, ожидая завершения выполняющегося хода не дольше льготного периода.857Освобождённая сессия возобновляется из свежего клона, поэтому работа, которую она не отправила, теряется в любом случае; см. [Возобновлённые сессии теряют неотправленную работу](#resumed-sessions-lose-unpushed-work). До v2.1.260 runner завершал каждую сессию по достижении лимита, ожидая завершения выполняющегося хода не дольше льготного периода.

852 858 

Details

252 252 

253Все остальные ключи в кэшированном блоке `env` применяются при запуске. Как только сервер подтвердит данные и вы их одобрите, если они требуют [подтверждения безопасности](#security-approval-dialogs), удержанные переменные применяются до конца сессии.253Все остальные ключи в кэшированном блоке `env` применяются при запуске. Как только сервер подтвердит данные и вы их одобрите, если они требуют [подтверждения безопасности](#security-approval-dialogs), удержанные переменные применяются до конца сессии.

254 254 

255Если вашей организации нужен прокси для доступа к `api.anthropic.com`, удержание затрагивает только сам блок `env`, доставленный сервером: прокси, заданный в [управляемом на уровне конечного устройства](https://code.claude.com/docs/ru/managed-settings.md#delivery-mechanisms) блоке `env` через MDM или `managed-settings.json`, в окружении оболочки или в [пользовательских настройках](https://code.claude.com/docs/ru/settings.md#where-settings-live), используется при получении настроек. Источник, управляемый на уровне конечного устройства, требует Claude Code v2.1.223 или более поздней версии: кэшированное значение прокси, управляемое сервером, удерживается, пока получение его не подтвердит, поэтому значение, управляемое на уровне конечного устройства, подставляется по ключу и используется при самом получении. До v2.1.223 используйте окружение оболочки или пользовательские настройки, чтобы прокси применялся вместе с кэшированными серверными данными. При первом запуске кэша нет, поэтому для начального получения по-прежнему требуется источник, управляемый на уровне конечного устройства, окружение оболочки или пользовательские настройки.255Если для получения нужен прокси, задайте `HTTPS_PROXY` в одном из следующих мест:

256 

257* В блоке `env`, [управляемом на уровне конечного устройства](https://code.claude.com/docs/ru/managed-settings.md#delivery-mechanisms), через MDM или `managed-settings.json`. Этот источник требует Claude Code v2.1.223 или более поздней версии. До v2.1.223 используйте окружение оболочки или пользовательские настройки, чтобы прокси [применялся вместе с кэшированными серверными данными](#per-key-exceptions-across-managed-sources).

258* В окружении оболочки

259* В [пользовательских настройках](https://code.claude.com/docs/ru/settings.md#where-settings-live)

260 

261Задайте `HTTPS_PROXY`, даже если `ALL_PROXY` уже указывает этот прокси.

256 262 

257Claude Code применяет большинство обновлений настроек к работающим сессиям без перезапуска. Некоторые обновления применяются только при следующем запуске, включая конфигурацию экспортера OpenTelemetry, ключ `model` и удаление переменной из блока `env`.263Claude Code применяет большинство обновлений настроек к работающим сессиям без перезапуска. Некоторые обновления применяются только при следующем запуске, включая конфигурацию экспортера OpenTelemetry, ключ `model` и удаление переменной из блока `env`.

258 264 

settings.md +1 −1

Details

177 177 

178Claude Code отслеживает ваши файлы параметров и перезагружает их при изменении, поэтому он применяет большинство изменений к работающему сеансу без перезагрузки, включая изменения `permissions`, `hooks` и помощников учетных данных, таких как `apiKeyHelper`. Claude Code также загружает файл параметров, который вы создаете в середине сеанса, если его папка существовала при запуске сеанса. Для папки `.claude/` проекта он загружает файл даже когда вы создаете папку в том же сеансе.178Claude Code отслеживает ваши файлы параметров и перезагружает их при изменении, поэтому он применяет большинство изменений к работающему сеансу без перезагрузки, включая изменения `permissions`, `hooks` и помощников учетных данных, таких как `apiKeyHelper`. Claude Code также загружает файл параметров, который вы создаете в середине сеанса, если его папка существовала при запуске сеанса. Для папки `.claude/` проекта он загружает файл даже когда вы создаете папку в том же сеансе.

179 179 

180Перезагрузка охватывает параметры пользователя, проекта, локальные и управляемые параметры, и Claude Code запускает hook [`ConfigChange`](https://code.claude.com/docs/ru/hooks#configchange) для каждого изменения файла параметров, которое он обнаруживает, не для управляемых параметров, которые поступают из MDM или консоли claude.ai. Управляемые параметры, которые поступают через MDM или из консоли claude.ai, достигают работающего сеанса по расписанию, а не при сохранении; [таблица доставки](https://code.claude.com/docs/ru/managed-settings.md#choose-a-delivery-mechanism) дает это для каждого источника.180Перезагрузка охватывает пользовательские, проектные, локальные и управляемые настройки. Claude Code запускает [хук `ConfigChange`](https://code.claude.com/docs/ru/hooks#configchange) при непосредственном редактировании файлов настроек, но не для управляемых настроек, поступающих из MDM или консоли claude.ai. Управляемые настройки, поступающие через MDM или из консоли claude.ai, доходят до работающей сессии по расписанию, а не при сохранении; [таблица способов доставки](https://code.claude.com/docs/ru/managed-settings.md#choose-a-delivery-mechanism) приводит его для каждого источника.

181 181 

182Claude Code читает некоторые ключи только один раз при запуске сеанса, поэтому изменение одного из них не достигает работающего сеанса. Ключи на стороне администратора, которые также ждут перезагрузки, такие как `requiredMinimumVersion`, перечислены в [где и когда применяется политика](https://code.claude.com/docs/ru/managed-settings.md#where-and-when-a-policy-applies). Те, которые вы, скорее всего, будете редактировать в середине сеанса:182Claude Code читает некоторые ключи только один раз при запуске сеанса, поэтому изменение одного из них не достигает работающего сеанса. Ключи на стороне администратора, которые также ждут перезагрузки, такие как `requiredMinimumVersion`, перечислены в [где и когда применяется политика](https://code.claude.com/docs/ru/managed-settings.md#where-and-when-a-policy-applies). Те, которые вы, скорее всего, будете редактировать в середине сеанса:

183 183 

Details

235| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | Блокируйте [MCP-серверы](https://code.claude.com/docs/ru/mcp.md) из пользовательских и проектных источников | Plugins and skills | Managed |235| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | Блокируйте [MCP-серверы](https://code.claude.com/docs/ru/mcp.md) из пользовательских и проектных источников | Plugins and skills | Managed |

236| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | Блокируйте [скиллы](https://code.claude.com/docs/ru/skills.md) из пользовательских и проектных источников | Plugins and skills | Managed |236| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | Блокируйте [скиллы](https://code.claude.com/docs/ru/skills.md) из пользовательских и проектных источников | Plugins and skills | Managed |

237| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Выберите [время жизни кэша промптов](https://code.claude.com/docs/ru/prompt-caching.md#cache-lifetime) для субагентов и других запросов вне основного диалога | Model and responses | Any file |237| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Выберите [время жизни кэша промптов](https://code.claude.com/docs/ru/prompt-caching.md#cache-lifetime) для субагентов и других запросов вне основного диалога | Model and responses | Any file |

238| [`subagentStatusLine`](#subagentstatusline) | Переписывайте строки в отображении задач [субагента](https://code.claude.com/docs/ru/sub-agents.md) с помощью вашей собственной команды | Interface and terminal | Any file |

239| [`switchModelsOnFlag`](#switchmodelsonflag) | Переключайте модели автоматически или приостанавливайте работу, когда [классификатор безопасности](https://code.claude.com/docs/ru/model-config.md#ask-before-switching) помечает запрос | Model and responses | Any file |238| [`switchModelsOnFlag`](#switchmodelsonflag) | Переключайте модели автоматически или приостанавливайте работу, когда [классификатор безопасности](https://code.claude.com/docs/ru/model-config.md#ask-before-switching) помечает запрос | Model and responses | Any file |

240| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Прекратите загрузку [плагинов, включённых в вашей учётной записи claude.ai](https://code.claude.com/docs/ru/plugins/loading.md#synced-plugins), и скачивание новых | Plugins and skills | User, local, or managed |239| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Прекратите загрузку [плагинов, включённых в вашей учётной записи claude.ai](https://code.claude.com/docs/ru/plugins/loading.md#synced-plugins), и скачивание новых | Plugins and skills | User, local, or managed |

241| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Прекратите загрузку [скиллов, включённых в вашей учётной записи claude.ai](https://code.claude.com/docs/ru/skills.md#how-synced-skills-behave), и скачивание новых | Plugins and skills | User, local, or managed |240| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Прекратите загрузку [скиллов, включённых в вашей учётной записи claude.ai](https://code.claude.com/docs/ru/skills.md#how-synced-skills-behave), и скачивание новых | Plugins and skills | User, local, or managed |


885}884}

886```885```

887 886 

888См. [Направление всех shell-команд через классификатор](https://code.claude.com/docs/ru/auto-mode-config.md#route-all-shell-commands-through-the-classifier).887В сессии Code Mode этот ключ работает иначе. См. [Направление всех shell-команд через классификатор](https://code.claude.com/docs/ru/auto-mode-config.md#route-all-shell-commands-through-the-classifier).

889 888 

890### `disableAutoMode`889### `disableAutoMode`

891 890 


1533}1532}

1534```1533```

1535 1534 

1535В Linux и WSL2 запись для пути, который ещё не существует, не действует, поэтому сначала создайте путь.

1536 

1536Claude Code объединяет записи `allowWrite` и пути из ваших правил разрешений `Edit(...)` allow во всех областях действия настроек, которые загружает сессия, исключая записи из настроек репозитория, пока включён [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block). [Блокировки репозитория](https://code.claude.com/docs/ru/sandboxing.md#repository-settings-under-an-admin-required-sandbox) тоже могут исключать записи репозитория. Запись `allowWrite` не может снять защиту с [protected path](https://code.claude.com/docs/ru/sandboxing.md#protected-paths).1537Claude Code объединяет записи `allowWrite` и пути из ваших правил разрешений `Edit(...)` allow во всех областях действия настроек, которые загружает сессия, исключая записи из настроек репозитория, пока включён [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block). [Блокировки репозитория](https://code.claude.com/docs/ru/sandboxing.md#repository-settings-under-an-admin-required-sandbox) тоже могут исключать записи репозитория. Запись `allowWrite` не может снять защиту с [protected path](https://code.claude.com/docs/ru/sandboxing.md#protected-paths).

1537 1538 

1538### `sandbox.filesystem.denyWrite`1539### `sandbox.filesystem.denyWrite`


2453 2454 

2454#### Как значения `env` взаимодействуют с вашей оболочкой2455#### Как значения `env` взаимодействуют с вашей оболочкой

2455 2456 

2456* Значение здесь перезаписывает ту же переменную, экспортированную в вашей оболочке, и когда более одного файла параметров устанавливает переменную, применяется [наиболее приоритетный](https://code.claude.com/docs/ru/settings.md#settings-precedence). [Переменные, которые Claude Code игнорирует в `env`](#variables-claude-code-ignores-in-env) перечисляет исключения для параметров проекта и локальных параметров.2457* Значение здесь перезаписывает ту же переменную, экспортированную в вашей оболочке, и когда более одного файла настроек устанавливает переменную, применяется [наиболее приоритетный](https://code.claude.com/docs/ru/settings.md#settings-precedence). [Переменные, которые Claude Code игнорирует в `env`](#variables-claude-code-ignores-in-env) перечисляет исключения.

2457* Когда приложение Claude Desktop или [самостоятельно размещённая среда](https://code.claude.com/docs/ru/self-hosted-environments) запускает сессию, среда запуска, которую оно создаёт, имеет приоритет вместо этого: Claude Code игнорирует значение `env` из любого файла параметров для переменной, которую среда запуска уже устанавливает. [Журнал отладки](https://code.claude.com/docs/ru/debug-your-config.md) называет каждую игнорируемую переменную.2458* Когда приложение Claude Desktop или [самостоятельно размещённая среда](https://code.claude.com/docs/ru/self-hosted-environments) запускает сессию, среда запуска, которую оно создаёт, имеет приоритет вместо этого: Claude Code игнорирует значение `env` из любого файла параметров для переменной, которую среда запуска уже устанавливает. [Журнал отладки](https://code.claude.com/docs/ru/debug-your-config.md) называет каждую игнорируемую переменную.

2458* Чтобы отменить экспорт оболочки, установите переменную на `""`. Claude Code рассматривает пустое значение как не установленное для выбора поставщика, и подпроцессы наследуют пустое значение.2459* Чтобы отменить экспорт оболочки, установите переменную на `""`. Claude Code рассматривает пустое значение как не установленное для выбора поставщика, и подпроцессы наследуют пустое значение.

2459* `NO_COLOR` и `FORCE_COLOR`, установленные здесь, достигают только подпроцессов. Чтобы изменить цвета собственного интерфейса Claude Code, установите их в вашей оболочке перед запуском `claude`.2460* `NO_COLOR` и `FORCE_COLOR`, установленные здесь, достигают только подпроцессов. Чтобы изменить цвета собственного интерфейса Claude Code, установите их в вашей оболочке перед запуском `claude`.


2494 * [`CLAUDE_CODE_DISABLE_FILE_MENTIONS`](https://code.claude.com/docs/ru/env-vars#variables), которая не даёт Claude Code раскрывать упоминания файлов и каталогов через `@`.2495 * [`CLAUDE_CODE_DISABLE_FILE_MENTIONS`](https://code.claude.com/docs/ru/env-vars#variables), которая не даёт Claude Code раскрывать упоминания файлов и каталогов через `@`.

2495 2496 

2496 До v2.1.251 параметры проекта и локальные параметры могли также устанавливать переменные в этом списке, которые выбирают, где Claude Code записывает свои файлы или которые экспортируют содержимое сессии, кроме `HOME` и `XDG_CONFIG_HOME`. До v2.1.290 они также могли устанавливать переменные таймеров диалоговых окон и `CLAUDE_CODE_DISABLE_ATTACHMENTS`.2497 До v2.1.251 параметры проекта и локальные параметры могли также устанавливать переменные в этом списке, которые выбирают, где Claude Code записывает свои файлы или которые экспортируют содержимое сессии, кроме `HOME` и `XDG_CONFIG_HOME`. До v2.1.290 они также могли устанавливать переменные таймеров диалоговых окон и `CLAUDE_CODE_DISABLE_ATTACHMENTS`.

2498* Включить [Code Mode](https://code.claude.com/docs/ru/code-mode.md) с помощью [`CLAUDE_CODE_EXPERIMENTAL_CODE_MODE`](https://code.claude.com/docs/ru/env-vars#variables) можно из оболочки, пользовательских настроек или файла `--settings`, но не из управляемых настроек, настроек проекта или локальных настроек. Если `0` задан в любом из первых трёх источников или в управляемых настройках, Code Mode остаётся отключённым независимо от того, что задано в других местах. Если управляемые настройки содержат `1`, задайте собственное значение `1` в пользовательских настройках, потому что `1` в оболочке игнорируется

2497* Переменные идентификации, которыми владеют среды хостинга Claude Code, такие как `CLAUDE_CODE_REMOTE` и `CLAUDE_CODE_ACCOUNT_UUID`, игнорируются из каждого файла.2499* Переменные идентификации, которыми владеют среды хостинга Claude Code, такие как `CLAUDE_CODE_REMOTE` и `CLAUDE_CODE_ACCOUNT_UUID`, игнорируются из каждого файла.

2498* [`CLAUDE_CODE_MESSAGING_SOCKET` и `CLAUDE_CODE_MESSAGING_TOKEN`](https://code.claude.com/docs/ru/env-vars#variables), которые Claude Code экспортирует сам, игнорируются из каждого файла. Игнорирование переменной сокета требует Claude Code v2.1.224 или позже, а игнорирование токена требует v2.1.228 или позже.2500* [`CLAUDE_CODE_MESSAGING_SOCKET` и `CLAUDE_CODE_MESSAGING_TOKEN`](https://code.claude.com/docs/ru/env-vars#variables), которые Claude Code экспортирует сам, игнорируются из каждого файла. Игнорирование переменной сокета требует Claude Code v2.1.224 или позже, а игнорирование токена требует v2.1.228 или позже.

2499* [`CLAUDE_CODE_PROJECT_DIR_NAME`](https://code.claude.com/docs/ru/sessions#name-the-project-directory-yourself), которую Claude Code читает только из среды запуска, игнорируется из каждого файла; требует v2.1.234 или позже.2501* [`CLAUDE_CODE_PROJECT_DIR_NAME`](https://code.claude.com/docs/ru/sessions#name-the-project-directory-yourself), которую Claude Code читает только из среды запуска, игнорируется из каждого файла; требует v2.1.234 или позже.


3173 3175 

3174Для примера требуется установленный [`jq`](https://jqlang.org/), и он выполняется в оболочке. Аналоги для PowerShell и Git Bash см. в разделе [Настройка в Windows](https://code.claude.com/docs/ru/statusline.md#windows-configuration); полную настройку см. в разделе [Ручная настройка строки состояния](https://code.claude.com/docs/ru/statusline.md#manually-configure-a-status-line).3176Для примера требуется установленный [`jq`](https://jqlang.org/), и он выполняется в оболочке. Аналоги для PowerShell и Git Bash см. в разделе [Настройка в Windows](https://code.claude.com/docs/ru/statusline.md#windows-configuration); полную настройку см. в разделе [Ручная настройка строки состояния](https://code.claude.com/docs/ru/statusline.md#manually-configure-a-status-line).

3175 3177 

3176### `subagentStatusLine`

3177 

3178Когда Claude запускает [субагентов](https://code.claude.com/docs/ru/sub-agents.md), Claude Code перечисляет их в области задач под промптом — по одной строке на субагента в формате `name · description · token count`. Этот ключ позволяет запускать собственную команду, чтобы переписывать эти строки, например чтобы показывать использование контекста каждым субагентом в процентах. При каждом обновлении Claude Code отправляет видимые строки в виде одного JSON-объекта через stdin, с массивом `tasks`, содержащим для каждого субагента `id`, `name`, `status`, `model`, `tokenCount` и другие поля, и заменяет строку для каждого `id`, который вы возвращаете в виде строки `{"id", "content"}`. Строки, которые вы не возвращаете, сохраняют отображение по умолчанию.

3179 

3180* **Область действия**: [`Any file`](#scopes). Когда включён [`allowManagedHooksOnly`](#allowmanagedhooksonly) или [`disableAllHooks`](#disableallhooks) задан вне управляемых настроек, выполняется только значение из управляемых настроек.

3181* **Тип**: объект, где `type` имеет значение `"command"` и есть строка `command`

3182* **По умолчанию**: не задано, поэтому Claude Code отображает строки по умолчанию

3183 

3184```json settings.json theme={null}

3185{

3186 "subagentStatusLine": {

3187 "type": "command",

3188 "command": "jq -c '.tasks[] | {id, content: \"\\(.name): \\(.tokenCount) tokens\"}'"

3189 }

3190}

3191```

3192 

3193См. [Строки состояния субагентов](https://code.claude.com/docs/ru/statusline.md#subagent-status-lines).

3194 

3195### `syntaxHighlightingDisabled`3178### `syntaxHighlightingDisabled`

3196 3179 

3197Claude Code раскрашивает код в соответствии с языком в diff, блоках кода и предпросмотрах файлов, которые он показывает в терминале, с помощью встроенного средства подсветки. Установите этот ключ в `true`, чтобы показывать их как простой текст, например если цвета конфликтуют с темой вашего терминала или замедляют программу экранного доступа.3180Claude Code раскрашивает код в соответствии с языком в diff, блоках кода и предпросмотрах файлов, которые он показывает в терминале, с помощью встроенного средства подсветки. Установите этот ключ в `true`, чтобы показывать их как простой текст, например если цвета конфликтуют с темой вашего терминала или замедляют программу экранного доступа.


3648* **Всё остальное блокируется**: пользовательские, проектные и локальные хуки, хуки и mods из других установленных плагинов, а также хуки, объявленные во frontmatter агента. [Mods, встроенные в Claude Code](https://code.claude.com/docs/ru/plugins/mods/overview.md#mods-built-into-claude-code), продолжают работать. Чтобы блокировать только mods пользователей, установите вместо этого [`allowManagedModsOnly`](https://code.claude.com/docs/ru/plugins/mods/admin#set-options-on-the-built-in-guard).3631* **Всё остальное блокируется**: пользовательские, проектные и локальные хуки, хуки и mods из других установленных плагинов, а также хуки, объявленные во frontmatter агента. [Mods, встроенные в Claude Code](https://code.claude.com/docs/ru/plugins/mods/overview.md#mods-built-into-claude-code), продолжают работать. Чтобы блокировать только mods пользователей, установите вместо этого [`allowManagedModsOnly`](https://code.claude.com/docs/ru/plugins/mods/admin#set-options-on-the-built-in-guard).

3649* **Плагины с источником-командой отключаются**: Claude Code также отключает плагины с [источником `command`](https://code.claude.com/docs/ru/plugins/marketplace-reference#command-plugin-source), включая плагины, принудительно включённые в управляемых `enabledPlugins`, если вы явно не установите [`disableCommandPluginSources`](#disablecommandpluginsources) в `false`3632* **Плагины с источником-командой отключаются**: Claude Code также отключает плагины с [источником `command`](https://code.claude.com/docs/ru/plugins/marketplace-reference#command-plugin-source), включая плагины, принудительно включённые в управляемых `enabledPlugins`, если вы явно не установите [`disableCommandPluginSources`](#disablecommandpluginsources) в `false`

3650* **Команды `headersHelper` маркетплейсов блокируются**: Claude Code также блокирует [команды `headersHelper`](https://code.claude.com/docs/ru/plugins/host-marketplace#authenticate-archive-downloads) маркетплейсов, если [`disableCommandPluginSources`](#disablecommandpluginsources) явно не установлен в `false`, за исключением маркетплейса, который объявлен в самих управляемых настройках. Требуется Claude Code v2.1.238 или новее3633* **Команды `headersHelper` маркетплейсов блокируются**: Claude Code также блокирует [команды `headersHelper`](https://code.claude.com/docs/ru/plugins/host-marketplace#authenticate-archive-downloads) маркетплейсов, если [`disableCommandPluginSources`](#disablecommandpluginsources) явно не установлен в `false`, за исключением маркетплейса, который объявлен в самих управляемых настройках. Требуется Claude Code v2.1.238 или новее

3651* **Строка состояния и предложение файлов ограничиваются управляемыми настройками**: Claude Code читает [`statusLine`](https://code.claude.com/docs/ru/statusline), [`fileSuggestion`](#filesuggestion) и [`subagentStatusLine`](https://code.claude.com/docs/ru/statusline#subagent-status-lines) только из управляемых настроек, следуя [правилам для строки состояния и предложения файлов](#status-line-and-file-suggestion-gates)3634* **Строка состояния и предложение файлов ограничиваются управляемыми настройками**: Claude Code читает [`statusLine`](https://code.claude.com/docs/ru/statusline) и [`fileSuggestion`](#filesuggestion) только из управляемых настроек, следуя [правилам для строки состояния и предложения файлов](#status-line-and-file-suggestion-gates)

3652 3635 

3653Команда [`/goal`](https://code.claude.com/docs/ru/goal) не может запуститься, пока этот ключ установлен, потому что она зависит от хуков.3636Команда [`/goal`](https://code.claude.com/docs/ru/goal) не может запуститься, пока этот ключ установлен, потому что она зависит от хуков.

3654 3637 


3687 3670 

3688#### Правила для строки состояния и предложения файлов3671#### Правила для строки состояния и предложения файлов

3689 3672 

3690Claude Code принимает два решения для `statusLine`, `fileSuggestion` и `subagentStatusLine` в следующем порядке:3673Claude Code принимает два решения для `statusLine` и `fileSuggestion` в следующем порядке:

3691 3674 

3692* **Полностью отключено**: когда управляемые настройки устанавливают `disableAllHooks` или когда папка не является доверенной согласно тому же [правилу доверия рабочему пространству, что и для хуков в файлах настроек](https://code.claude.com/docs/ru/permissions.md#what-runs-before-you-trust-a-folder)3675* **Полностью отключено**: когда управляемые настройки устанавливают `disableAllHooks` или когда папка не является доверенной согласно тому же [правилу доверия рабочему пространству, что и для хуков в файлах настроек](https://code.claude.com/docs/ru/permissions.md#what-runs-before-you-trust-a-folder)

3693* **Ограничено управляемыми настройками**: когда установлен [`allowManagedHooksOnly`](#allowmanagedhooksonly), когда `disableAllHooks` имеет значение `true` вне управляемых настроек после применения [приоритета настроек](https://code.claude.com/docs/ru/hooks.md#disable-or-remove-hooks) или когда вы запускаете Claude Code с `--safe-mode`3676* **Ограничено управляемыми настройками**: когда установлен [`allowManagedHooksOnly`](#allowmanagedhooksonly), когда `disableAllHooks` имеет значение `true` вне управляемых настроек после применения [приоритета настроек](https://code.claude.com/docs/ru/hooks.md#disable-or-remove-hooks) или когда вы запускаете Claude Code с `--safe-mode`


4659 4642 

4660* **Scope**: [`Any file`](#scopes)4643* **Scope**: [`Any file`](#scopes)

4661* **Type**: string, имя встроенного или пользовательского агента4644* **Type**: string, имя встроенного или пользовательского агента

4662* **Default**: не установлено, поэтому основной поток работает как агент Claude Code по умолчанию4645* **Default**: не установлено

4663* **Per-session overrides**: `--agent` имеет приоритет над этим ключом для одной сессии4646* **Per-session overrides**: `--agent` имеет приоритет над этим ключом для одной сессии

4664 4647 

4665```json settings.json theme={null}4648```json settings.json theme={null}


4668}4651}

4669```4652```

4670 4653 

4671Собственный `settings.json` плагина также может предоставить этот ключ; см. [Ship default settings with your plugin](https://code.claude.com/docs/ru/plugins/components.md#default-settings).

4672 

4673### `crossSessionInbound`4654### `crossSessionInbound`

4674 4655 

4675Выберите, что эта сессия делает с [сообщениями, поступающими из ваших других сессий Claude Code](https://code.claude.com/docs/ru/cross-session-messaging.md#control-inbound-messages). Когда ни одно значение не применяется, Claude Code решает для каждого сообщения на основе классов режима разрешений двух сессий.4656Выберите, что эта сессия делает с [сообщениями, поступающими из ваших других сессий Claude Code](https://code.claude.com/docs/ru/cross-session-messaging.md#control-inbound-messages). Когда ни одно значение не применяется, Claude Code решает для каждого сообщения на основе классов режима разрешений двух сессий.


5207 5188 

5208* **Scope**: [`Managed`](#scopes). Список, который устанавливают собственные источники администратора машины, политики MDM и файлы управляемых настроек, продолжает применяться, когда управляемые сервером настройки также предоставляют свой: сессия может тогда использовать только поставщиков из обоих списков, поэтому управляемый сервером список может сузить то, что разрешает машина, но никогда не расширить это. Какой из источников машины с `allowedProviders` учитывается, определяется тем, [как Claude Code объединяет управляемые источники](https://code.claude.com/docs/ru/managed-settings.md#how-claude-code-combines-managed-sources). Список, доставленный только через управляемые сервером настройки, достигает только тех сессий, которые [получают управляемые сервером настройки](https://code.claude.com/docs/ru/server-managed-settings.md#platform-availability).5189* **Scope**: [`Managed`](#scopes). Список, который устанавливают собственные источники администратора машины, политики MDM и файлы управляемых настроек, продолжает применяться, когда управляемые сервером настройки также предоставляют свой: сессия может тогда использовать только поставщиков из обоих списков, поэтому управляемый сервером список может сузить то, что разрешает машина, но никогда не расширить это. Какой из источников машины с `allowedProviders` учитывается, определяется тем, [как Claude Code объединяет управляемые источники](https://code.claude.com/docs/ru/managed-settings.md#how-claude-code-combines-managed-sources). Список, доставленный только через управляемые сервером настройки, достигает только тех сессий, которые [получают управляемые сервером настройки](https://code.claude.com/docs/ru/server-managed-settings.md#platform-availability).

5209* **Type**: массив строк, каждая из которых — одно из следующих значений:5190* **Type**: массив строк, каждая из которых — одно из следующих значений:

5210 * `"anthropic"`: Anthropic API на собственном хосте Anthropic, через вход claude.ai или Console или API-ключ. Объедините это с [`forceLoginMethod`](#forceloginmethod) или [`forceLoginOrgUUID`](#forceloginorguuid), чтобы также ограничить вход5191 * `"anthropic"`: Anthropic API на собственном хосте Anthropic, через вход claude.ai или Console или API-ключ. Объедините это с [`forceLoginMethod`](#forceloginmethod) или [`forceLoginOrgUUID`](#forceloginorguuid), чтобы также ограничить вход. Cowork в Desktop [на машине пользователя](https://code.claude.com/docs/ru/managed-settings.md#where-and-when-a-policy-applies) считается `"anthropic"`, когда выполнен вход в claude.ai, поэтому без этого значения в списке машины Cowork [отклоняется при запуске](https://code.claude.com/docs/ru/errors.md#managed-settings-dont-allow-this-api-provider). Чтобы Cowork мог запускаться, добавьте это значение, что также открывает этот список для прямых сессий Anthropic.

5211 * `"bedrock"`: [Amazon Bedrock](https://code.claude.com/docs/ru/amazon-bedrock.md)5192 * `"bedrock"`: [Amazon Bedrock](https://code.claude.com/docs/ru/amazon-bedrock.md)

5212 * `"vertex"`: [Google Cloud's Agent Platform](https://code.claude.com/docs/ru/google-vertex-ai.md), ранее Vertex AI5193 * `"vertex"`: [Google Cloud's Agent Platform](https://code.claude.com/docs/ru/google-vertex-ai.md), ранее Vertex AI

5213 * `"foundry"`: [Microsoft Foundry](https://code.claude.com/docs/ru/microsoft-foundry.md)5194 * `"foundry"`: [Microsoft Foundry](https://code.claude.com/docs/ru/microsoft-foundry.md)

setup.md +5 −23

Details

141 141 

142### Alpine Linux и дистрибутивы на основе musl142### Alpine Linux и дистрибутивы на основе musl

143 143 

144Установка Claude Code на Alpine и других дистрибутивах на основе musl/uClibc требует `bash` и `curl` для команды установки, а также `libgcc`, `libstdc++` и `ripgrep` во время выполнения. Alpine не включает `bash` или `curl` по умолчанию, поэтому документированная команда установки не работает с ошибкой `not found`, пока вы их не установите. Установите эти пакеты с помощью менеджера пакетов вашего дистрибутива, затем установите `USE_BUILTIN_RIPGREP=0`.144На Alpine и других дистрибутивах на основе musl [команда установки](#install-claude-code) требует `bash` и `curl`, а самому Claude Code требуется `bash` или `zsh`. Alpine не включает `bash` или `curl` по умолчанию, поэтому документированная команда установки завершается ошибкой `not found`, пока вы их не установите.

145 145 

146Этот пример устанавливает необходимые пакеты на Alpine:146Этот пример устанавливает необходимые пакеты на Alpine:

147 147 

148```bash theme={null}148```bash theme={null}

149apk add bash curl libgcc libstdc++ ripgrep149apk add bash curl

150```

151 

152На Alpine `ripgrep` находится в репозитории community. Если `apk` сообщает, что пакет отсутствует, добавьте репозиторий community в `/etc/apk/repositories`, используя вашу версию Alpine:

153 

154```bash theme={null}

155echo "https://dl-cdn.alpinelinux.org/alpine/v3.22/community" >> /etc/apk/repositories

156```

157 

158Выполните `apk update`, чтобы обновить индекс пакетов, и повторите команду `apk add`.

159 

160Затем установите `USE_BUILTIN_RIPGREP` на `0` в вашем файле [`settings.json`](https://code.claude.com/docs/ru/settings-reference#all-settings):

161 

162```json theme={null}

163{

164 "env": {

165 "USE_BUILTIN_RIPGREP": "0"

166 }

167}

168```150```

169 151 

170## Проверка установки152## Проверка установки


443> wget -O /etc/apk/keys/claude-code.rsa.pub \425> wget -O /etc/apk/keys/claude-code.rsa.pub \

444> https://downloads.claude.ai/keys/claude-code.rsa.pub426> https://downloads.claude.ai/keys/claude-code.rsa.pub

445> echo "https://downloads.claude.ai/claude-code/apk/stable" >> /etc/apk/repositories427> echo "https://downloads.claude.ai/claude-code/apk/stable" >> /etc/apk/repositories

446> apk add claude-code428> apk add bash claude-code

447> ```429> ```

448>430>

449> Чтобы переключиться на канал `latest`, удалите строку репозитория `stable` и добавьте репозиторий `latest`:431> Чтобы переключиться на канал `latest`, удалите строку репозитория `stable` и добавьте репозиторий `latest`:


463>445>

464> Если `npm --version` в вашей оболочке выводит версию, начинающуюся с `12`, вместо этого следуйте инструкциям в разделе [Исправление установки npm 12](https://code.claude.com/docs/ru/troubleshoot-install.md#fix-an-npm-12-install). Не выполняйте установку с `sudo`. Claude Code запускает npm без `sudo`, когда обновляет себя, поэтому установка, требующая `sudo`, не может обновляться автоматически.446> Если `npm --version` в вашей оболочке выводит версию, начинающуюся с `12`, вместо этого следуйте инструкциям в разделе [Исправление установки npm 12](https://code.claude.com/docs/ru/troubleshoot-install.md#fix-an-npm-12-install). Не выполняйте установку с `sudo`. Claude Code запускает npm без `sudo`, когда обновляет себя, поэтому установка, требующая `sudo`, не может обновляться автоматически.

465 447 

466Вы также можете установить Claude Code как глобальный пакет npm. Пакет npm требует [Node.js 22 или позже](https://nodejs.org/en/download). На более старой версии Node.js npm выводит предупреждение `EBADENGINE` во время установки, а не отказывает; установка завершается и `claude` все еще работает, так как пакет загружает встроенный двоичный файл, который не использует ваш Node.js во время выполнения.448Вы также можете установить Claude Code как глобальный пакет npm. Пакет npm требует [Node.js 22 или позже](https://nodejs.org/en/download). На более старой версии Node.js npm по умолчанию выводит предупреждение `EBADENGINE` и завершает установку, а не прерывает её с ошибкой. Установленный `claude` всё равно работает, так как пакет загружает встроенный двоичный файл, который не использует ваш Node.js во время выполнения.

467 449 

468```bash theme={null}450```bash theme={null}

469npm install -g @anthropic-ai/claude-code451npm install -g @anthropic-ai/claude-code@latest

470```452```

471 453 

472Пакет npm устанавливает тот же встроенный двоичный файл, что и автономный установщик. npm получает двоичный файл через дополнительную зависимость для каждой платформы, такую как `@anthropic-ai/claude-code-darwin-arm64`, и шаг postinstall связывает его на место. Установленный двоичный файл `claude` сам по себе не вызывает Node.454Пакет npm устанавливает тот же встроенный двоичный файл, что и автономный установщик. npm получает двоичный файл через дополнительную зависимость для каждой платформы, такую как `@anthropic-ai/claude-code-darwin-arm64`, и шаг postinstall связывает его на место. Установленный двоичный файл `claude` сам по себе не вызывает Node.

skills.md +5 −1

Details

787 787 

788Внедрённые команды никогда не запрашивают разрешение во время отображения скилла. Claude Code сначала проверяет каждую из них по вашим [правилам разрешений](https://code.claude.com/docs/ru/permissions.md). Команда, соответствующая правилу запрета, прерывает вызов с ошибкой `Shell command permission check failed for pattern "..."`.788Внедрённые команды никогда не запрашивают разрешение во время отображения скилла. Claude Code сначала проверяет каждую из них по вашим [правилам разрешений](https://code.claude.com/docs/ru/permissions.md). Команда, соответствующая правилу запрета, прерывает вызов с ошибкой `Shell command permission check failed for pattern "..."`.

789 789 

790Вне [авторежима](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode), если проверка разрешений команды возвращает что-либо, кроме разрешения, Claude Code прерывает вызов с той же ошибкой. Это относится и к правилу, которое обычно запросило бы подтверждение у вас. Чтобы несовпадающая команда не прерывала вызов, заранее разрешите её с помощью [`allowed-tools`](#pre-approve-tools-for-a-skill). Если ваша организация ограничивает правила разрешений управляемыми настройками, см. [Когда применяются только управляемые правила разрешений](#when-only-managed-permission-rules-apply). Правила запрета и запроса по-прежнему имеют приоритет над `allowed-tools`. См. [Управление разрешениями](https://code.claude.com/docs/ru/permissions.md#manage-permissions).790Вне [авторежима](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode), если проверка разрешений команды возвращает что-либо, кроме разрешения, Claude Code прерывает вызов. Чтобы несовпадающая команда не прерывала вызов, заранее разрешите её с помощью [`allowed-tools`](#pre-approve-tools-for-a-skill) с учётом следующих ограничений:

791 

792* **Правила запрета и запроса**: команда, соответствующая одному из них, всё равно прерывает вызов. Чтобы найти это правило, см. [Управление разрешениями](https://code.claude.com/docs/ru/permissions.md#manage-permissions).

793* **Только управляемые правила**: если `/status` в сессии показывает скилл в разделе `allowed-tools ignored this session`, см. [Когда применяются только управляемые правила разрешений](#when-only-managed-permission-rules-apply).

794* **Непроверенные папки Git**: там, где файл `HEAD` или `.git` может принадлежать не вам, Claude Code игнорирует `allowed-tools` для команды Bash, которая содержит `git` или которую Claude Code не может разобрать. Если вы доверяете папке, например worktree вашего собственного bare-репозитория, разрешите команду с помощью [`/permissions`](https://code.claude.com/docs/ru/permissions#manage-permissions) в сессии.

791 795 

792В авторежиме команда, которой в противном случае потребовалось бы ваше подтверждение, не прерывает вызов. Скилл загружается с инструкцией, предписывающей Claude сначала выполнить команду, и собственный вызов Claude затем проходит [обычные проверки авторежима](https://code.claude.com/docs/ru/permission-modes.md#how-the-classifier-evaluates-actions). Вызов всё же прерывается в [ответвлённом скилле](#run-skills-in-a-subagent), который задаёт `agent`, а также в сессии, где у Claude нет [инструмента оболочки, выполняющего внедрённые команды](#how-injected-commands-run).796В авторежиме команда, которой в противном случае потребовалось бы ваше подтверждение, не прерывает вызов. Скилл загружается с инструкцией, предписывающей Claude сначала выполнить команду, и собственный вызов Claude затем проходит [обычные проверки авторежима](https://code.claude.com/docs/ru/permission-modes.md#how-the-classifier-evaluates-actions). Вызов всё же прерывается в [ответвлённом скилле](#run-skills-in-a-subagent), который задаёт `agent`, а также в сессии, где у Claude нет [инструмента оболочки, выполняющего внедрённые команды](#how-injected-commands-run).

793 797 

statusline.md +0 −40

Details

1085echo "$dirname [$model]"1085echo "$dirname [$model]"

1086```1086```

1087 1087 

1088## Строки состояния подагентов

1089 

1090Параметр `subagentStatusLine` отображает пользовательское тело строки для каждого [подагента](https://code.claude.com/docs/ru/sub-agents.md), показанного на панели агентов ниже приглашения. Используйте его для замены строки по умолчанию `name · description · token count` на ваше собственное форматирование.

1091 

1092```json theme={null}

1093{

1094 "subagentStatusLine": {

1095 "type": "command",

1096 "command": "~/.claude/subagent-statusline.sh"

1097 }

1098}

1099```

1100 

1101Команда запускается один раз за цикл обновления и получает все видимые строки субагентов как один объект JSON на stdin. Входные данные включают [базовые поля хуков](https://code.claude.com/docs/ru/hooks.md#common-input-fields), поле `columns` с используемой шириной строки и массив `tasks` с одной записью на строку, описанный в разделе [Поля задачи](#task-fields).

1102 

1103Напишите одну строку JSON в stdout для каждой строки, которую вы хотите переопределить, в форме `{"id": "<task id>", "content": "<row body>"}`. Строка `content` отображается как есть, включая цвета ANSI и гиперссылки OSC 8. Пропустите `id` задачи, чтобы сохранить отображение по умолчанию для этой строки; выведите пустую строку `content`, чтобы скрыть её.

1104 

1105Те же ворота доверия, `disableAllHooks` и [`allowManagedHooksOnly`](https://code.claude.com/docs/ru/settings-reference#allowmanagedhooksonly), которые применяются к `statusLine`, применяются здесь. Плагины могут поставлять `subagentStatusLine` по умолчанию в своём [`settings.json`](https://code.claude.com/docs/ru/plugins/manifest-reference#standard-layout), но в отличие от hooks, значения плагинов не запускаются под `allowManagedHooksOnly` даже когда плагин принудительно включен в управляемых параметрах `enabledPlugins`.

1106 

1107### Поля задачи

1108 

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

1110 

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

1112| :- | :- | :- |

1113| `id` | string | Идентификатор задачи. Верните его как `id` в строке, которую вы пишете в ответ для этой строки |

1114| `name` | string, необязательное | Имя, по которому [обращаются](https://code.claude.com/docs/ru/sub-agents.md#subagent-names) к субагенту, если оно есть |

1115| `type` | string | Вид задачи: `local_agent` |

1116| `agentType` | string | Тип субагента, под которым выполняется задача, например встроенный [`Explore`](https://code.claude.com/docs/ru/sub-agents#built-in-subagents) или пользовательский `code-reviewer`. Содержит то же значение, которое хуки получают как [`agent_type`](https://code.claude.com/docs/ru/hooks#subagentstart). Требует Claude Code v2.1.293 или более поздней версии |

1117| `status` | string | Состояние задачи, например `running`, `completed`, `failed` или `killed` |

1118| `description` | string | Краткое описание задачи, например то, которое Claude дал при запуске субагента |

1119| `label` | string | Краткая сводка о ходе выполнения задачи, если она есть у Claude Code, иначе тот же текст, что и в `description` |

1120| `startTime` | number | Время начала задачи в миллисекундах с начала эпохи Unix |

1121| `model` | string, необязательное | ID разрешённой модели, на которой выполняется задача. Опускается, пока модель не разрешена |

1122| `effort` | string или number, необязательное | Уровень усилий рассуждения, установленный для субагента в его [frontmatter определения](https://code.claude.com/docs/ru/sub-agents.md#supported-frontmatter-fields) или при отдельном вызове: `low`, `medium`, `high`, `xhigh`, `max` или числовой бюджет токенов. Это настроенное значение, и усилия, которые применяет Claude Code, могут отличаться, если модель не поддерживает этот уровень. Опускается, когда уровень усилий не задан |

1123| `contextWindowSize` | number, необязательное | Контекстное окно `model` в токенах, вычисляемое так же, как [`context_window.context_window_size`](#context-window-fields) основной строки состояния, поэтому вы можете отобразить процент для каждой строки из `tokenCount`. Опускается, когда опущено `model` |

1124| `tokenCount` | number | Текущее количество токенов субагента — значение, которое показывает строка по умолчанию |

1125| `tokenSamples` | array of numbers | До 16 последних значений `tokenCount`, по одному за цикл обновления, от самого старого к новому, заканчивая текущим |

1126| `cwd` | string | Рабочий каталог субагента: его собственный каталог, если он работает в отдельном каталоге, например в изолированном worktree, иначе рабочий каталог сессии |

1127 

1128## Советы1088## Советы

1129 1089 

1130* **Тестирование с макетными входными данными**: `echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`1090* **Тестирование с макетными входными данными**: `echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`

Details

26 26 

27| Терминал | Shift+Enter для новой строки |27| Терминал | Shift+Enter для новой строки |

28| :- | :- |28| :- | :- |

29| Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal, Windows Terminal | Работает без настройки |29| Ghostty, Kitty, iTerm2, WezTerm, Warp, Windows Terminal | Работает без настройки |

30| Другие терминалы, поддерживающие протокол клавиатуры kitty, такие как foot и Alacritty 0.16 или позже | Работает без настройки. Требуется Claude Code v2.1.269 или позже |30| Другие терминалы, поддерживающие протокол клавиатуры kitty, такие как foot и Alacritty 0.16 или позже | Работает без настройки. Требуется Claude Code v2.1.269 или позже |

31| VS Code, Cursor, Devin Desktop, Alacritty до версии 0.16, Zed | Запустите `/terminal-setup` один раз |31| VS Code, Cursor, Devin Desktop, Alacritty до версии 0.16, Zed | Запустите `/terminal-setup` один раз |

32| gnome-terminal, JetBrains IDEs такие как PyCharm и Android Studio | Недоступно; используйте Ctrl+J или `\` затем Enter |32| gnome-terminal, JetBrains IDEs такие как PyCharm и Android Studio | Недоступно; используйте Ctrl+J или `\` затем Enter |

Details

173 173 

174Чтобы ограничить, какие из этих вариантов развертывания может использовать управляемая машина, установите [`allowedProviders`](https://code.claude.com/docs/ru/settings-reference#allowedproviders) в управляемых параметрах. Например, `["bedrock"]` разрешает Amazon Bedrock и ничего больше; флот Bedrock, который также включает конечную точку Mantle, также указывает `"mantle"`. Запись указывает, какие переменные конечной точки также требуют управляемого закрепления `env`. Требуется Claude Code v2.1.285 или более поздняя версия.174Чтобы ограничить, какие из этих вариантов развертывания может использовать управляемая машина, установите [`allowedProviders`](https://code.claude.com/docs/ru/settings-reference#allowedproviders) в управляемых параметрах. Например, `["bedrock"]` разрешает Amazon Bedrock и ничего больше; флот Bedrock, который также включает конечную точку Mantle, также указывает `"mantle"`. Запись указывает, какие переменные конечной точки также требуют управляемого закрепления `env`. Требуется Claude Code v2.1.285 или более поздняя версия.

175 175 

176> [!NOTE]

177>

178> Если в Desktop выполнен вход в claude.ai, сессия Cowork на компьютере пользователя считается как [`"anthropic"`](https://code.claude.com/docs/ru/settings-reference#allowedproviders). Если вы не включите это значение в список в политике MDM или файле управляемых настроек, такая сессия будет отклонена. Если оно включено, сессии, отправляемые напрямую в Anthropic, также проходят проверку по этому списку.

179 

176### Используйте MCP для интеграций180### Используйте MCP для интеграций

177 181 

178MCP — это отличный способ предоставить Claude Code больше информации, такую как подключение к системам управления тикетами или логам ошибок. Пусть одна центральная команда настроит MCP-серверы и добавит конфигурацию `.mcp.json` в кодовую базу, чтобы все пользователи получали выгоду. [Узнайте больше](https://code.claude.com/docs/ru/mcp.md).182MCP — это отличный способ предоставить Claude Code больше информации, такую как подключение к системам управления тикетами или логам ошибок. Пусть одна центральная команда настроит MCP-серверы и добавит конфигурацию `.mcp.json` в кодовую базу, чтобы все пользователи получали выгоду. [Узнайте больше](https://code.claude.com/docs/ru/mcp.md).

Details

127 127 

128Claude использует `AskUserQuestion` для задания вам вопросов с несколькими вариантами ответов, когда ему требуется решение или уточнение. Ответьте, выбрав вариант, или введите свой текст через строку `Other` или поле примечаний.128Claude использует `AskUserQuestion` для задания вам вопросов с несколькими вариантами ответов, когда ему требуется решение или уточнение. Ответьте, выбрав вариант, или введите свой текст через строку `Other` или поле примечаний.

129 129 

130Когда вы отвечаете, вводя свой собственный текст, Claude Code передает ответ нейтральной формулировкой, чтобы Claude следовал тому, что вы написали, включая запрос подождать или сначала объяснить.

131 

132### Таймаут автоматического продолжения вопроса130### Таймаут автоматического продолжения вопроса

133 131 

134Вопросы остаются открытыми до тех пор, пока вы на них не ответите. Если вы хотите, чтобы оставленный без ответа вопрос в конечном итоге закрылся и позволил Claude продолжить без вас, установите параметр [`askUserQuestionTimeout`](https://code.claude.com/docs/ru/settings-reference#askuserquestiontimeout) на `60s`, `5m` или `10m` либо в вашем пользовательском файле `settings.json`, либо из строки **Question auto-continue timeout** в `/config`.132Вопросы остаются открытыми до тех пор, пока вы на них не ответите. Если вы хотите, чтобы оставленный без ответа вопрос в конечном итоге закрылся и позволил Claude продолжить без вас, установите параметр [`askUserQuestionTimeout`](https://code.claude.com/docs/ru/settings-reference#askuserquestiontimeout) на `60s`, `5m` или `10m` либо в вашем пользовательском файле `settings.json`, либо из строки **Question auto-continue timeout** в `/config`.


525 523 

526## Поведение инструмента Read524## Поведение инструмента Read

527 525 

528Инструмент Read принимает путь к файлу и возвращает его содержимое с номерами строк. Claude инструктирован всегда передавать абсолютные пути.526Инструмент Read принимает путь к файлу и возвращает его содержимое с номерами строк.

529 527 

530Чтение пустого файла возвращает уведомление о том, что файл существует, но его содержимое пусто, а `offset` за последней строкой возвращает уведомление, дающее количество строк файла.528Чтение пустого файла возвращает уведомление о том, что файл существует, но его содержимое пусто, а `offset` за последней строкой возвращает уведомление, дающее количество строк файла.

531 529 

Details

388> Get-Command claude | Select-Object Source388> Get-Command claude | Select-Object Source

389> ```389> ```

390 390 

391На Linux проверьте отсутствующие общие библиотеки. Если `ldd` показывает отсутствующие библиотеки, вам может потребоваться установить системные пакеты. На Alpine Linux и других дистрибутивах на основе musl см. [Alpine Linux setup](https://code.claude.com/docs/ru/setup.md#alpine-linux-and-musl-based-distributions).391На Linux проверьте отсутствующие общие библиотеки. Если `ldd` показывает отсутствующие библиотеки, вам может потребоваться установить системные пакеты. На Alpine Linux и других дистрибутивах на основе musl см. [Несоответствие бинарного файла Linux musl или glibc](#linux-musl-or-glibc-binary-mismatch).

392 392 

393```bash theme={null}393```bash theme={null}

394ldd "$(command -v claude)" | grep "not found"394ldd "$(command -v claude)" | grep "not found"


906 906 

907### Linux musl or glibc binary mismatch907### Linux musl or glibc binary mismatch

908 908 

909Если вы видите ошибки об отсутствующих общих библиотеках вроде `libstdc++.so.6` или `libgcc_s.so.1` после установки, установщик мог загрузить неправильный вариант бинарного файла для вашей системы.909Если вы видите ошибки об отсутствующих общих библиотеках вроде `ld-linux-x86-64.so.2` или `ld-linux-aarch64.so.1` после установки, установщик мог загрузить неправильный вариант бинарного файла для вашей системы.

910 910 

911```text theme={null}911```text theme={null}

912Error loading shared library libstdc++.so.6: No such file or directory912Error loading shared library ld-linux-x86-64.so.2: No such file or directory

913```913```

914 914 

915Это может произойти на системах на основе glibc, в которых установлены пакеты кросс-компиляции musl, из-за чего установщик ошибочно определяет систему как musl.

916 

917**Решения:**915**Решения:**

918 916 

9191. **Проверьте, какой libc использует ваша система**:9171. **Проверьте, какой libc использует ваша система**:


924 922 

9252. **Если вы на glibc, но получили бинарный файл musl**, удалите установку и переустановите. Вы также можете вручную загрузить правильный бинарный файл, используя манифест в `https://downloads.claude.ai/claude-code-releases/{VERSION}/manifest.json`. Создайте [GitHub issue](https://github.com/anthropics/claude-code/issues) с выводом `ldd --version` и `ls /lib/libc.musl*`.9232. **Если вы на glibc, но получили бинарный файл musl**, удалите установку и переустановите. Вы также можете вручную загрузить правильный бинарный файл, используя манифест в `https://downloads.claude.ai/claude-code-releases/{VERSION}/manifest.json`. Создайте [GitHub issue](https://github.com/anthropics/claude-code/issues) с выводом `ldd --version` и `ls /lib/libc.musl*`.

926 924 

9273. **Если вы действительно на musl**, например Alpine Linux, установите требуемые пакеты:9253. **Если вы на musl, но получили бинарный файл glibc**, [удалите установку](https://code.claude.com/docs/ru/setup.md#uninstall-claude-code). На Alpine Linux сначала установите пакеты, перечисленные в разделе [Alpine Linux setup](https://code.claude.com/docs/ru/setup.md#alpine-linux-and-musl-based-distributions). Затем выполните [команду установки](https://code.claude.com/docs/ru/setup.md#install-claude-code), которая установит бинарный файл musl.

928 ```bash theme={null}

929 apk add libgcc libstdc++ ripgrep

930 ```

931 На Alpine `ripgrep` находится в репозитории community. Если `apk` сообщает, что пакет отсутствует, см. [Alpine Linux setup](https://code.claude.com/docs/ru/setup.md#alpine-linux-and-musl-based-distributions).

932 926 

933### `Illegal instruction`927### `Illegal instruction`

934 928 


1001 995 

1002Эти проблемы актуальны, если вы установили Claude Code с помощью `npm install -g` внутри WSL. Если вы использовали [нативный установщик](https://code.claude.com/docs/ru/setup.md), пропустите этот раздел. На npm 12 выполняйте установку так, как описано в разделе [Исправление установки через npm 12](#fix-an-npm-12-install).996Эти проблемы актуальны, если вы установили Claude Code с помощью `npm install -g` внутри WSL. Если вы использовали [нативный установщик](https://code.claude.com/docs/ru/setup.md), пропустите этот раздел. На npm 12 выполняйте установку так, как описано в разделе [Исправление установки через npm 12](#fix-an-npm-12-install).

1003 997 

1004**Проблемы определения ОС или платформы.** Если npm сообщает о несоответствии платформы во время установки, WSL вероятно использует Windows `npm`. Сначала запустите `npm config set os linux`, затем установите с помощью `npm install -g @anthropic-ai/claude-code --force`. Не используйте `sudo`.998**Проблемы определения ОС или платформы.** Если npm сообщает о несоответствии платформы во время установки, сначала запустите `npm config set os linux`, затем установите с помощью `npm install -g @anthropic-ai/claude-code@latest --force`. Не используйте `sudo`.

1005 999 

1006**`exec: node: not found` при запуске `claude`.** Ваша среда WSL вероятно использует установку Node.js для Windows. Проверьте с помощью `which npm` и `which node`: пути, начинающиеся с `/mnt/c/`, — это бинарные файлы Windows, в то время как пути Linux начинаются с `/usr/`. Чтобы исправить это, установите Node через менеджер пакетов вашего дистрибутива Linux или через [`nvm`](https://github.com/nvm-sh/nvm).1000**`exec: node: not found` при запуске `claude`.** Ваша среда WSL вероятно использует установку Node.js для Windows. Проверьте с помощью `which npm` и `which node`: пути, начинающиеся с `/mnt/c/`, — это бинарные файлы Windows, в то время как пути Linux начинаются с `/usr/`. Чтобы исправить это, установите Node через менеджер пакетов вашего дистрибутива Linux или через [`nvm`](https://github.com/nvm-sh/nvm).

1007 1001 


1088 3. Переустановите:1082 3. Переустановите:

1089 1083 

1090 ```bash theme={null}1084 ```bash theme={null}

1091 npm install -g @anthropic-ai/claude-code1085 npm install -g @anthropic-ai/claude-code@latest

1092 ```1086 ```

1093 1087 

1094 Если эта команда или шаг 1 завершается ошибкой `EACCES`, переключитесь на нативный установщик вместо повторного запуска с `sudo`. Claude Code запускает npm без `sudo` при самообновлении, поэтому автоматические обновления завершались бы той же ошибкой.1088 Если эта команда или шаг 1 завершается ошибкой `EACCES`, переключитесь на нативный установщик вместо повторного запуска с `sudo`. Claude Code запускает npm без `sudo` при самообновлении, поэтому автоматические обновления завершались бы той же ошибкой.


1099 1093 

1100### npm `ENOTEMPTY` error during update or reinstall1094### npm `ENOTEMPTY` error during update or reinstall

1101 1095 

1102Когда вы запускаете `npm install -g @anthropic-ai/claude-code` поверх существующей установки, npm может завершиться ошибкой при перемещении старого каталога пакета:1096Когда вы запускаете `npm install -g @anthropic-ai/claude-code@latest` поверх существующей установки, npm может завершиться ошибкой при перемещении старого каталога пакета:

1103 1097 

1104```text theme={null}1098```text theme={null}

1105npm error code ENOTEMPTY1099npm error code ENOTEMPTY


1133Затем переустановите. На npm 12 следуйте инструкциям из раздела [Исправление установки через npm 12](#fix-an-npm-12-install). В противном случае выполните:1127Затем переустановите. На npm 12 следуйте инструкциям из раздела [Исправление установки через npm 12](#fix-an-npm-12-install). В противном случае выполните:

1134 1128 

1135```bash theme={null}1129```bash theme={null}

1136npm install -g @anthropic-ai/claude-code1130npm install -g @anthropic-ai/claude-code@latest

1137```1131```

1138 1132 

1139Проверьте с помощью `claude --version`, который выводит номер версии, такой как `2.1.211 (Claude Code)`.1133Проверьте с помощью `claude --version`, который выводит номер версии, такой как `2.1.211 (Claude Code)`.

Details

152> apk add ripgrep152> apk add ripgrep

153> ```153> ```

154>154>

155> `ripgrep` находится в репозитории community Alpine. Если `apk` сообщает, что пакет отсутствует, смотрите [Alpine Linux setup](https://code.claude.com/docs/ru/setup.md#alpine-linux-and-musl-based-distributions).155> `ripgrep` находится в репозитории community Alpine.

156 156 

157> [tab] Arch157> [tab] Arch

158>158>

vs-code.md +10 −0

Details

202 Уже имеющиеся блоки размышлений остаются пустыми. В ответах после перезагрузки нажмите на блок или нажмите `Ctrl+O`, чтобы развернуть их все.202 Уже имеющиеся блоки размышлений остаются пустыми. В ответах после перезагрузки нажмите на блок или нажмите `Ctrl+O`, чтобы развернуть их все.

203* **Многострочный ввод**: нажмите `Shift+Enter`, чтобы добавить новую строку без отправки. Это также работает в поле свободного ввода «Other» в диалоговых окнах с вопросами.203* **Многострочный ввод**: нажмите `Shift+Enter`, чтобы добавить новую строку без отправки. Это также работает в поле свободного ввода «Other» в диалоговых окнах с вопросами.

204 204 

205### Использование или отключение предлагаемых промптов

206 

207После ответа Claude панель может показывать предлагаемый следующий промпт серым курсивным текстом в пустом поле ввода промпта. Каждое предложение использует [короткий фоновый запрос](https://code.claude.com/docs/ru/interactive-mode.md#prompt-suggestions), который учитывается в лимитах использования вашего тарифа или в расходах на API.

208 

209* **Использовать предложение**: нажмите `Tab`, чтобы превратить его в редактируемый текст, затем отправьте его. Нажатие `Enter` до того, как вы примете предложение, не отправляет его.

210* **Написать собственный промпт**: начните вводить текст, и предложение скроется.

211 

212Чтобы отключить предложения, задайте для [`promptSuggestionEnabled`](https://code.claude.com/docs/ru/settings-reference#promptsuggestionenabled) значение `false` в `~/.claude/settings.json`. Вы перестанете видеть их в новых диалогах, а в открытых — после того, как выполните **Developer: Reload Window** из палитры команд. Если вы задали для [`CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION`](https://code.claude.com/docs/ru/env-vars) значение `true`, измените его на `false` там, где вы его задали, иначе предложения продолжат появляться.

213 

205### Ссылки на файлы и папки214### Ссылки на файлы и папки

206 215 

207Используйте @-упоминания, чтобы дать Claude контекст о конкретных файлах или папках. Когда вы вводите `@`, а затем имя файла или папки, Claude читает это содержимое и может отвечать на вопросы о нём или вносить в него изменения. Claude Code поддерживает нечёткое сопоставление, поэтому можно вводить частичные имена, чтобы найти нужное:216Используйте @-упоминания, чтобы дать Claude контекст о конкретных файлах или папках. Когда вы вводите `@`, а затем имя файла или папки, Claude читает это содержимое и может отвечать на вопросы о нём или вносить в него изменения. Claude Code поддерживает нечёткое сопоставление, поэтому можно вводить частичные имена, чтобы найти нужное:


936| `SSL certificate verification failed` или `Self-signed certificate detected` | [Ошибки SSL-сертификатов](https://code.claude.com/docs/ru/errors.md#ssl-certificate-errors) |945| `SSL certificate verification failed` или `Self-signed certificate detected` | [Ошибки SSL-сертификатов](https://code.claude.com/docs/ru/errors.md#ssl-certificate-errors) |

937| `Dictation error: WebSocket error:`, за которым следует ошибка сертификата, например `unable to get local issuer certificate`, или `Remote server is not connected` на вкладке Web | [Диктовка или вкладка Web не работают за прокси с TLS-инспекцией](#dictation-or-the-web-tab-fails-behind-a-tls-inspecting-proxy) |946| `Dictation error: WebSocket error:`, за которым следует ошибка сертификата, например `unable to get local issuer certificate`, или `Remote server is not connected` на вкладке Web | [Диктовка или вкладка Web не работают за прокси с TLS-инспекцией](#dictation-or-the-web-tab-fails-behind-a-tls-inspecting-proxy) |

938| `Claude Code process exited with code 1` или другой код | [Claude Code process exited with code N](https://code.claude.com/docs/ru/errors.md#claude-code-process-exited-with-code-n) |947| `Claude Code process exited with code 1` или другой код | [Claude Code process exited with code N](https://code.claude.com/docs/ru/errors.md#claude-code-process-exited-with-code-n) |

948| `Claude Code did not finish starting` или `Subprocess initialization did not complete within 60000ms` | [Subprocess initialization did not complete within 60000ms](https://code.claude.com/docs/ru/errors.md#subprocess-initialization-did-not-complete-within-60000ms) |

939| `Could not locate the Claude CLI on PATH` | [Could not locate the Claude CLI on PATH](https://code.claude.com/docs/ru/errors.md#could-not-locate-the-claude-cli-on-path) |949| `Could not locate the Claude CLI on PATH` | [Could not locate the Claude CLI on PATH](https://code.claude.com/docs/ru/errors.md#could-not-locate-the-claude-cli-on-path) |

940| `The connection to Claude Code ended before this message completed` | [The connection to Claude Code ended before this message completed](https://code.claude.com/docs/ru/errors.md#the-connection-to-claude-code-ended-before-this-message-completed) |950| `The connection to Claude Code ended before this message completed` | [The connection to Claude Code ended before this message completed](https://code.claude.com/docs/ru/errors.md#the-connection-to-claude-code-ended-before-this-message-completed) |

941| `The Claude Code program for this computer, the <build> build, could not be found` | [The Claude Code program for this computer could not be found](https://code.claude.com/docs/ru/errors.md#the-claude-code-program-for-this-computer-could-not-be-found) |951| `The Claude Code program for this computer, the <build> build, could not be found` | [The Claude Code program for this computer could not be found](https://code.claude.com/docs/ru/errors.md#the-claude-code-program-for-this-computer-could-not-be-found) |

workflows.md +0 −2

Details

75| :- | :- |75| :- | :- |

76| `/deep-research <question>` | Распределяет веб-поиски по вопросу по нескольким углам, получает и перекрёстно проверяет найденные источники, голосует по каждому утверждению и возвращает цитируемый отчёт с утверждениями, которые не пережили перекрёстную проверку, отфильтрованными. Требует, чтобы инструмент [WebSearch](https://code.claude.com/docs/ru/tools-reference.md#websearch-tool-behavior) был доступен |76| `/deep-research <question>` | Распределяет веб-поиски по вопросу по нескольким углам, получает и перекрёстно проверяет найденные источники, голосует по каждому утверждению и возвращает цитируемый отчёт с утверждениями, которые не пережили перекрёстную проверку, отфильтрованными. Требует, чтобы инструмент [WebSearch](https://code.claude.com/docs/ru/tools-reference.md#websearch-tool-behavior) был доступен |

77 77 

78`/deep-research` запускается только при его вызове.

79 

80[Workflows, которые вы сохраняете](#save-the-workflow-for-reuse) сами, становятся командами таким же образом и появляются в автодополнении `/` рядом с встроенными.78[Workflows, которые вы сохраняете](#save-the-workflow-for-reuse) сами, становятся командами таким же образом и появляются в автодополнении `/` рядом с встроенными.

81 79 

82### Смотреть запуск80### Смотреть запуск