SpyBara
Go Premium

Documentation 2026-10-06 23:59 UTC to 2026-10-07 19:00 UTC

53 files changed +477 −419. View all changes and history on the product overview
2026
Wed 7 20:01 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59

agent-sdk/hooks.md +64 −64

Details

15* **Отслеживать жизненный цикл сеанса** для управления состоянием, очистки ресурсов или отправки уведомлений15* **Отслеживать жизненный цикл сеанса** для управления состоянием, очистки ресурсов или отправки уведомлений

16 16 

17<h2 id="how-hooks-work">17<h2 id="how-hooks-work">

18 Как работают hooks18 Как работают хуки

19</h2>19</h2>

20 20 

21<Steps>21<Steps>

22 <Step title="Срабатывает событие">22 <Step title="Срабатывает событие">

23 Что-то происходит во время выполнения агента, и SDK срабатывает событие: инструмент вот-вот будет вызван (`PreToolUse`), инструмент вернул результат (`PostToolUse`), подагент запустился или остановился, агент неактивен или выполнение завершилось. См. [полный список событий](#available-hooks).23 Во время выполнения агента что-то происходит, и SDK генерирует событие: инструмент вот-вот будет вызван (`PreToolUse`), инструмент вернул результат (`PostToolUse`), субагент запустился или остановился, агент простаивает или выполнение завершилось. См. [полный список событий](#available-hooks).

24 </Step>24 </Step>

25 25 

26 <Step title="SDK собирает зарегистрированные hooks">26 <Step title="SDK собирает зарегистрированные хуки">

27 SDK проверяет наличие hooks, зарегистрированных для этого типа события. Это включает callback hooks, которые вы передаете в `options.hooks`, и hooks команд shell из файлов настроек, когда соответствующая запись [`settingSources`](/docs/ru/agent-sdk/typescript#settingsource) или [`setting_sources`](/docs/ru/agent-sdk/python#settingsource) включена, что она есть для параметров `query()` по умолчанию.27 SDK проверяет наличие хуков, зарегистрированных для этого типа события. Сюда входят callback-хуки, которые вы передаете в `options.hooks`, и хуки shell-команд из файлов настроек, если включена соответствующая запись [`settingSources`](/docs/ru/agent-sdk/typescript#settingsource) или [`setting_sources`](/docs/ru/agent-sdk/python#settingsource), что по умолчанию так и есть для параметров `query()`.

28 </Step>28 </Step>

29 29 

30 <Step title="Matchers фильтруют, какие hooks запускаются">30 <Step title="Фильтрация запускаемых хуков с помощью matcher">

31 Если hook имеет паттерн [`matcher`](#matchers) (например, `"Write|Edit"`), SDK проверяет его против цели события (например, имя инструмента). Hooks без matcher запускаются для каждого события этого типа.31 Если у хука есть паттерн [`matcher`](#matchers) (например, `"Write|Edit"`), SDK проверяет его на соответствие цели события (например, имени инструмента). Хуки без matcher запускаются для каждого события этого типа.

32 </Step>32 </Step>

33 33 

34 <Step title="Выполняются функции обратного вызова">34 <Step title="Выполняются функции обратного вызова">

35 Каждая функция [обратного вызова](#callback-functions) matching hook получает информацию о том, что происходит: имя инструмента, его аргументы, ID сеанса и другие детали, специфичные для события.35 [Функция обратного вызова](#callback-functions) каждого подходящего хука получает информацию о том, что происходит: имя инструмента, его аргументы, ID сессии и другие детали, специфичные для события.

36 </Step>36 </Step>

37 37 

38 <Step title="Ваш callback возвращает решение">38 <Step title="Ваш callback возвращает решение">

39 После выполнения любых операций (логирование, вызовы API, валидация), ваш callback возвращает [объект вывода](#outputs), который говорит агенту, что делать: разрешить операцию, заблокировать ее, изменить входные данные или внедрить контекст в разговор.39 После выполнения любых операций (логирование, вызовы API, валидация) ваш callback возвращает [объект вывода](#outputs), который сообщает агенту, что делать: разрешить операцию, заблокировать ее, изменить входные данные или внедрить контекст в диалог.

40 </Step>40 </Step>

41</Steps>41</Steps>

42 42 

43Следующий пример объединяет эти шаги. Он регистрирует hook `PreToolUse` (шаг 1) с matcher `"Write|Edit"` (шаг 3), поэтому callback срабатывает только для инструментов записи файлов. При срабатывании callback получает входные данные инструмента (шаг 4), проверяет, нацелена ли путь файла на файл `.env`, и возвращает `permissionDecision: "deny"` для блокировки операции (шаг 5):43Следующий пример объединяет эти шаги. Он регистрирует хук `PreToolUse` (шаг 1) с matcher `"Write|Edit"` (шаг 3), поэтому callback срабатывает только для инструментов записи файлов. При срабатывании callback получает входные данные инструмента (шаг 4), проверяет, указывает ли путь файла на файл `.env`, и возвращает `permissionDecision: "deny"` для блокировки операции (шаг 5):

44 44 

45<CodeGroup>45<CodeGroup>

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


140 ```140 ```

141</CodeGroup>141</CodeGroup>

142 142 

143Когда вы запустите любой из скриптов, Claude попытается создать файл `.env`, hook заблокирует вызов инструмента, и финальный ответ Claude объяснит, что он не может создавать файлы `.env`.143Когда вы запустите любой из скриптов, Claude попытается создать файл `.env`, и хук отклонит вызов инструмента.

144 144 

145<h2 id="available-hooks">145<h2 id="available-hooks">

146 Доступные hooks146 Доступные hooks


179| `ConfigChange` | Нет | Да | Файл конфигурации изменился | Динамически перезагрузить настройки |179| `ConfigChange` | Нет | Да | Файл конфигурации изменился | Динамически перезагрузить настройки |

180| `InstructionsLoaded` | Нет | Да | Файл `CLAUDE.md` или файл правил загружается в контекст | Проверять, какие файлы инструкций загружаются |180| `InstructionsLoaded` | Нет | Да | Файл `CLAUDE.md` или файл правил загружается в контекст | Проверять, какие файлы инструкций загружаются |

181| `WorktreeCreate` | Нет | Да | Git worktree создан | Отслеживать изолированные рабочие пространства |181| `WorktreeCreate` | Нет | Да | Git worktree создан | Отслеживать изолированные рабочие пространства |

182| `WorktreeRemove` | Нет | Да | Git worktree удален | Очистить ресурсы рабочего пространства |182| `WorktreeRemove` | Нет | Да | Удаляется worktree, созданный хуком `WorktreeCreate` | Очистить ресурсы рабочего пространства |

183| `CwdChanged` | Нет | Да | Рабочий каталог изменяется во время сеанса | Перезагрузить переменные окружения для каждого каталога |183| `CwdChanged` | Нет | Да | Рабочий каталог изменяется во время сеанса | Перезагрузить переменные окружения для каждого каталога |

184| `FileChanged` | Нет | Да | Отслеживаемый файл изменяется, создаётся или удаляется | Перезагрузить конфигурацию при изменении файлов проекта |184| `FileChanged` | Нет | Да | Отслеживаемый файл изменяется, создаётся или удаляется | Перезагрузить конфигурацию при изменении файлов проекта |

185| `DirectoryAdded` | Нет | Да | Рабочий каталог добавляется во время сеанса | Установить зависимости для репозитория, добавленного во время сеанса |185| `DirectoryAdded` | Нет | Да | Рабочий каталог добавляется во время сеанса | Установить зависимости для репозитория, добавленного во время сеанса |

186 186 

187<h2 id="configure-hooks">187<h2 id="configure-hooks">

188 Настройка hooks188 Настройка хуков

189</h2>189</h2>

190 190 

191Чтобы настроить hook, передайте его в поле `hooks` ваших параметров агента (`ClaudeAgentOptions` в Python, объект `options` в TypeScript). Этот фрагмент предполагает, что вы уже определили callback hook, например `protect_env_files` в Python или `protectEnvFiles` в TypeScript из примера выше:191Чтобы настроить хук, передайте его в поле `hooks` ваших параметров агента (`ClaudeAgentOptions` в Python, объект `options` в TypeScript). Этот фрагмент предполагает, что вы уже определили callback хука, например `protect_env_files` в Python или `protectEnvFiles` в TypeScript из примера выше:

192 192 

193<CodeGroup>193<CodeGroup>

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


218 218 

219Опция `hooks` — это словарь (Python) или объект (TypeScript), где:219Опция `hooks` — это словарь (Python) или объект (TypeScript), где:

220 220 

221* **Ключи**: [имена событий hook](#available-hooks), такие как `'PreToolUse'`, `'PostToolUse'` и `'Stop'`221* **Ключи**: [имена событий хуков](#available-hooks), такие как `'PreToolUse'`, `'PostToolUse'` и `'Stop'`

222* **Значения**: массивы [matchers](#matchers), каждый содержащий необязательный паттерн фильтра и ваши [функции обратного вызова](#callback-functions)222* **Значения**: массивы [matchers](#matchers), каждый содержащий необязательный паттерн фильтра и ваши [функции обратного вызова](#callback-functions)

223 223 

224<h3 id="matchers">224<h3 id="matchers">

225 Matchers225 Matchers

226</h3>226</h3>

227 227 

228Используйте matchers для фильтрации, когда срабатывают ваши callbacks. Поле `matcher` соответствует другому значению в зависимости от типа события hook. Например, hooks на основе инструментов соответствуют имени инструмента, в то время как hooks `Notification` соответствуют типу уведомления.228Используйте matchers для фильтрации, когда срабатывают ваши callbacks. Поле `matcher` сопоставляется с разными значениями в зависимости от типа события хука. Например, хуки на основе инструментов сопоставляются с именем инструмента, в то время как хуки `Notification` сопоставляются с типом уведомления.

229 229 

230SDK matchers следуют тем же правилам, что и [matchers в файлах настроек](/docs/ru/hooks#matcher-patterns). Этот раздел документирует пути оценки точной строки и регулярного выражения, требования к версиям и значения matcher для каждого типа события.230SDK matchers следуют тем же правилам, что и [matchers в файлах настроек](/docs/ru/hooks#matcher-patterns). Этот раздел документирует пути оценки точной строки и регулярного выражения, требования к версиям и значения matcher для каждого типа события.

231 231 

232| Опция | Тип | По умолчанию | Описание |232| Опция | Тип | По умолчанию | Описание |

233| - | - | - | - |233| - | - | - | - |

234| `matcher` | `string` | `undefined` | Паттерн, сопоставляемый с полем фильтра события, следуя [правилам для matchers в файлах настроек](/docs/ru/hooks#matcher-patterns). Для hooks инструментов это имя инструмента. Встроенные инструменты включают `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent` и другие (см. [Tool Input Types](/docs/ru/agent-sdk/typescript#tool-input-types) для полного списка). MCP инструменты используют паттерн `mcp__<server>__<action>`, где `<server>` — это ключ, который вы используете в конфигурации `mcpServers`. |234| `matcher` | `string` | `undefined` | Паттерн, сопоставляемый с полем фильтра события, следуя [правилам для matchers в файлах настроек](/docs/ru/hooks#matcher-patterns). Для хуков инструментов это имя инструмента. Встроенные инструменты включают `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent` и другие (см. [Tool Input Types](/docs/ru/agent-sdk/typescript#tool-input-types) для полного списка). MCP инструменты используют паттерн `mcp__<server>__<action>`, где `<server>` — это ключ, который вы используете в конфигурации `mcpServers`. |

235| `hooks` | `HookCallback[]` | - | Обязательно. Массив функций обратного вызова для выполнения, когда паттерн совпадает |235| `hooks` | `HookCallback[]` | - | Обязательно. Массив функций обратного вызова для выполнения, когда паттерн совпадает |

236| `timeout` | `number` | `undefined` | Timeout в секундах. Если опущен, Claude Code применяет [timeout события по умолчанию](#hook-timeout). Ваши SDK callbacks следуют значениям по умолчанию hook `command` |236| `timeout` | `number` | `undefined` | Таймаут в секундах. Если опущен, Claude Code применяет [таймаут события по умолчанию](#hook-timeout). Ваши SDK callbacks следуют значениям по умолчанию хука `command` |

237 237 

238Используйте паттерн `matcher` для нацеливания на конкретные инструменты, когда это возможно. Matcher с `'Bash'` запускается только для команд Bash, в то время как опущение паттерна запускает ваши callbacks для каждого возникновения события. Опустите его намеренно для логирования каждого вызова инструмента, который делает ваш сеанс.238Используйте паттерн `matcher` для нацеливания на конкретные инструменты, когда это возможно. Matcher с `'Bash'` запускается только для команд Bash, в то время как опущение паттерна запускает ваши callbacks для каждого возникновения события. Опустите его намеренно для логирования каждого вызова инструмента, который делает ваша сессия.

239 239 

240<h3 id="callback-functions">240<h3 id="callback-functions">

241 Функции обратного вызова241 Функции обратного вызова


245 Входные данные245 Входные данные

246</h4>246</h4>

247 247 

248Каждый callback hook получает три аргумента:248Каждый callback хука получает три аргумента:

249 249 

250* **Входные данные:** типизированный объект, содержащий детали события. Каждый тип hook имеет свою форму входных данных. Например, `PreToolUseHookInput` включает `tool_name` и `tool_input`, в то время как `NotificationHookInput` включает `message`. См. полные определения типов в справочниках [TypeScript](/docs/ru/agent-sdk/typescript#hookinput) и [Python](/docs/ru/agent-sdk/python#hookinput) SDK.250* **Входные данные:** типизированный объект, содержащий детали события. Каждый тип хука имеет свою форму входных данных. Например, `PreToolUseHookInput` включает `tool_name` и `tool_input`, в то время как `NotificationHookInput` включает `message`. См. полные определения типов в справочниках [TypeScript](/docs/ru/agent-sdk/typescript#hookinput) и [Python](/docs/ru/agent-sdk/python#hookinput) SDK.

251 * Все входные данные hook содержат `session_id`, `cwd` и `hook_event_name`.251 * Все входные данные хуков содержат `session_id`, `cwd` и `hook_event_name`.

252 * `agent_id` и `agent_type` заполняются, когда hook срабатывает внутри подагента. В TypeScript они находятся на базовом входе hook и доступны для всех типов hook. В Python они являются необязательными полями на `PreToolUse`, `PostToolUse`, `PostToolUseFailure` и `PermissionRequest`, и обязательными полями на `SubagentStart` и `SubagentStop`.252 * `agent_id` и `agent_type` заполняются, когда хук срабатывает внутри субагента. В TypeScript они находятся на базовом входе хука и доступны для всех типов хуков. В Python они являются необязательными полями на `PreToolUse`, `PostToolUse`, `PostToolUseFailure` и `PermissionRequest`, и обязательными полями на `SubagentStart` и `SubagentStop`.

253* **ID использования инструмента** (`str | None` / `string | undefined`): коррелирует события `PreToolUse` и `PostToolUse` для одного и того же вызова инструмента.253* **ID использования инструмента** (`str | None` / `string | undefined`): коррелирует события `PreToolUse` и `PostToolUse` для одного и того же вызова инструмента.

254* **Контекст:** в TypeScript содержит свойство `signal` (`AbortSignal`) для отмены. В Python этот аргумент зарезервирован для будущего использования.254* **Контекст:** в TypeScript содержит свойство `signal` (`AbortSignal`) для отмены. В Python этот аргумент зарезервирован для будущего использования.

255 255 


259 259 

260Ваш callback возвращает объект с двумя категориями полей:260Ваш callback возвращает объект с двумя категориями полей:

261 261 

262* **Поля верхнего уровня** принимаются для каждого события: `systemMessage` показывает сообщение пользователю, и `continue` (`continue_` в Python) определяет, продолжает ли агент работать после этого hook. Некоторые события отбрасывают их или доставляют их в другое место. Раздел каждого [события](/docs/ru/hooks#hook-events) на странице hooks говорит, где они попадают.262* **Поля верхнего уровня** принимаются для каждого события: `systemMessage` показывает сообщение пользователю, и `continue` (`continue_` в Python) определяет, продолжает ли агент работать после этого хука. Некоторые события отбрасывают их или доставляют их в другое место. Раздел каждого [события](/docs/ru/hooks#hook-events) на странице хуков говорит, где они попадают.

263* **`hookSpecificOutput`** контролирует текущую операцию. Поля, которые вы устанавливаете внутри, зависят от типа события хука:263* **`hookSpecificOutput`** контролирует текущую операцию. Поля, которые вы устанавливаете внутри, зависят от типа события хука:

264 * Для хуков `PreToolUse` здесь вы устанавливаете `permissionDecision` (`"allow"`, `"deny"`, `"ask"` или `"defer"`), `permissionDecisionReason` и `updatedInput`. Если вы вернете `"defer"`, ход завершается сообщением с результатом, у которого `stop_reason` равен `"tool_deferred"`, чтобы вы могли [возобновить вызов позже](/docs/ru/hooks#defer-a-tool-call-for-later).264 * Для хуков `PreToolUse` здесь вы устанавливаете `permissionDecision` (`"allow"`, `"deny"`, `"ask"` или `"defer"`), `permissionDecisionReason` и `updatedInput`. Если вы вернете `"defer"`, ход завершается сообщением с результатом, у которого `stop_reason` равен `"tool_deferred"`, чтобы вы могли [возобновить вызов позже](/docs/ru/hooks#defer-a-tool-call-for-later).

265 * Для хуков `PostToolUse` вы можете установить `additionalContext` для добавления информации к результату инструмента. Чтобы заменить выходные данные инструмента перед тем, как Claude их увидит, установите `updatedToolOutput`, который работает для любого инструмента в обоих SDK. Более старое поле `updatedMCPToolOutput` заменяет только выходные данные MCP инструмента и является устаревшим.265 * Для хуков `PostToolUse` вы можете установить `additionalContext` для добавления информации к результату инструмента. Чтобы заменить выходные данные инструмента перед тем, как Claude их увидит, установите `updatedToolOutput`, который работает для любого инструмента в обоих SDK. Более старое поле `updatedMCPToolOutput` заменяет только выходные данные MCP инструмента.

266 * В TypeScript SDK callback `PostToolUse` может также возвращать `classifierContext`, краткую заметку о результате вызова инструмента для классификатора разрешений [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode). Поскольку ваш callback работает в собственном процессе вашего приложения, классификатор может учитывать заявление пользователя, которое вы передаете в заметке, как намерение пользователя. Поле требует TypeScript Agent SDK версии 0.3.236 или позже. В разделе [Аннотирование результата для классификатора авторежима](/docs/ru/hooks#annotate-a-result-for-the-auto-mode-classifier) описаны ограничение по длине, правило только синхронного выполнения и то, что не следует помещать в заметку.266 * В TypeScript SDK callback `PostToolUse` может также возвращать `classifierContext`, краткую заметку о результате вызова инструмента для классификатора разрешений [авторежима](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode). Поскольку ваш callback работает в собственном процессе вашего приложения, классификатор может учитывать заявление пользователя, которое вы передаете в заметке, как намерение пользователя. Поле требует TypeScript Agent SDK версии 0.3.236 или позже. В разделе [Аннотирование результата для классификатора авторежима](/docs/ru/hooks#annotate-a-result-for-the-auto-mode-classifier) описаны ограничение по длине, правило только синхронного выполнения и то, что не следует помещать в заметку.

267 267 

268Возвращайте `{}` для разрешения операции без изменений. SDK callback hooks используют тот же формат вывода JSON, что и [hooks команд shell Claude Code](/docs/ru/hooks#json-output), который документирует каждое поле и опцию, специфичную для события. Для определений типов SDK см. справочники [TypeScript](/docs/ru/agent-sdk/typescript#synchookjsonoutput) и [Python](/docs/ru/agent-sdk/python#synchookjsonoutput) SDK.268Возвращайте `{}` для разрешения операции без изменений. SDK callback-хуки используют тот же формат вывода JSON, что и [хуки shell-команд Claude Code](/docs/ru/hooks#json-output), который документирует каждое поле и опцию, специфичную для события. Для определений типов SDK см. справочники [TypeScript](/docs/ru/agent-sdk/typescript#synchookjsonoutput) и [Python](/docs/ru/agent-sdk/python#synchookjsonoutput) SDK.

269 269 

270<Note>270<Note>

271 Когда применяются несколько hooks или правил разрешений, `deny` имеет приоритет над `defer`, который имеет приоритет над `ask`, который имеет приоритет над `allow`. Если какой-либо hook возвращает `deny`, операция блокируется независимо от других hooks.271 Когда применяются несколько хуков или правил разрешений, `deny` имеет приоритет над `defer`, который имеет приоритет над `ask`, который имеет приоритет над `allow`. Если какой-либо хук возвращает `deny`, операция блокируется независимо от других хуков.

272</Note>272</Note>

273 273 

274<h4 id="asynchronous-output">274<h4 id="asynchronous-output">

275 Асинхронный вывод275 Асинхронный вывод

276</h4>276</h4>

277 277 

278По умолчанию агент ждет, пока ваш hook вернется, прежде чем продолжить. Если ваш hook выполняет побочный эффект, такой как логирование или отправка webhook, и не нужно влиять на поведение агента, вы можете вернуть асинхронный вывод вместо этого. Это говорит агенту продолжить немедленно без ожидания завершения hook. В этом фрагменте `send_to_logging_service` в Python и `sendToLoggingService` в TypeScript служат заменой для любой функции логирования, которую вы определяете:278По умолчанию агент ждет, пока ваш хук вернется, прежде чем продолжить. Если ваш хук выполняет побочный эффект, такой как логирование или отправка webhook, и ему не нужно влиять на поведение агента, вы можете вернуть асинхронный вывод вместо этого. Это говорит агенту продолжить немедленно без ожидания завершения хука. В этом фрагменте `send_to_logging_service` в Python и `sendToLoggingService` в TypeScript служат заменой для любой функции логирования, которую вы определяете:

279 279 

280<CodeGroup>280<CodeGroup>

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


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

298| - | - | - |298| - | - | - |

299| `async` | `true` | Сигнализирует асинхронный режим. Агент продолжает без ожидания. В Python используйте `async_` для избежания зарезервированного ключевого слова. |299| `async` | `true` | Сигнализирует асинхронный режим. Агент продолжает без ожидания. В Python используйте `async_` для избежания зарезервированного ключевого слова. |

300| `asyncTimeout` | `number` | Необязательный timeout в миллисекундах для фоновой операции |300| `asyncTimeout` | `number` | Необязательный таймаут в миллисекундах для фоновой операции |

301 301 

302<Note>302<Note>

303 Асинхронные выходы не могут блокировать, изменять или внедрять контекст в операцию, так как агент уже продолжил. Используйте их только для побочных эффектов, таких как логирование, метрики или уведомления.303 Асинхронные выходы не могут блокировать, изменять или внедрять контекст в операцию, так как агент уже продолжил. Используйте их только для побочных эффектов, таких как логирование, метрики или уведомления.


798</h2>798</h2>

799 799 

800<h3 id="hook-not-firing">800<h3 id="hook-not-firing">

801 Hook не срабатывает801 Хук не срабатывает

802</h3>802</h3>

803 803 

804* Проверьте, что имя события hook правильное и чувствительно к регистру (`PreToolUse`, а не `preToolUse`)804* Проверьте, что имя события хука правильное и чувствительно к регистру (`PreToolUse`, а не `preToolUse`)

805* Проверьте, что ваш паттерн matcher точно совпадает с именем инструмента805* Проверьте, что ваш паттерн matcher точно совпадает с именем инструмента

806* Убедитесь, что hook находится под правильным типом события в `options.hooks`806* Убедитесь, что хук находится под правильным типом события в `options.hooks`

807* Для non-tool hooks, которые поддерживают matchers, таких как `Notification` и `SubagentStop`, matchers соответствуют разным полям, и `Stop` полностью игнорирует matchers (см. [matcher patterns](/docs/ru/hooks#matcher-patterns))807* Для хуков, не связанных с инструментами, которые поддерживают matcher, таких как `Notification` и `SubagentStop`, matcher сопоставляется с другими полями, а `Stop` полностью игнорирует matcher (см. [паттерны matcher](/docs/ru/hooks#matcher-patterns))

808* Hooks могут не срабатывать, когда агент достигает лимита [`max_turns`](/docs/ru/agent-sdk/python#claudeagentoptions), потому что сеанс заканчивается перед тем, как hooks смогут выполниться808* Хуки могут не срабатывать, когда агент достигает лимита [`max_turns`](/docs/ru/agent-sdk/python#claudeagentoptions), потому что сессия заканчивается до того, как хуки смогут выполниться

809 809 

810<h3 id="matcher-not-filtering-as-expected">810<h3 id="matcher-not-filtering-as-expected">

811 Matcher не фильтрует как ожидается811 Matcher не фильтрует как ожидается

812</h3>812</h3>

813 813 

814Matchers соответствуют только имени инструмента, а не путям файлов или другим аргументам. Для фильтрации по пути файла проверьте `tool_input.file_path` внутри вашего hook:814Matcher сопоставляется только с именами инструментов, а не с путями файлов или другими аргументами. Для фильтрации по пути файла проверьте `tool_input.file_path` внутри вашего хука:

815 815 

816```typescript theme={null}816```typescript theme={null}

817const myHook: HookCallback = async (input, toolUseID, { signal }) => {817const myHook: HookCallback = async (input, toolUseID, { signal }) => {


825```825```

826 826 

827<h3 id="hook-timeout">827<h3 id="hook-timeout">

828 Hook timeout828 Таймаут хука

829</h3>829</h3>

830 830 

831Claude Code запускает каждый callback с timeout, который вы устанавливаете в секундах с помощью поля `timeout` на его `HookMatcher`. Когда вы не устанавливаете его, Claude Code использует значение по умолчанию для события: 600 секунд для большинства событий, 30 секунд для `UserPromptSubmit`, `PreModelSwitch` и `PostModelSwitch`, и 10 секунд для `MessageDisplay`. Claude Code запускает callbacks `SessionEnd` во время завершения работы под более коротким [бюджетом timeout SessionEnd](/docs/ru/hooks#sessionend-input), 1,5 секунды по умолчанию.831Claude Code запускает каждый callback с таймаутом, который вы устанавливаете в секундах с помощью поля `timeout` в его `HookMatcher`. Если вы его не устанавливаете, Claude Code использует значение по умолчанию для события: 600 секунд для большинства событий, 30 секунд для `UserPromptSubmit`, `PreModelSwitch` и `PostModelSwitch` и 10 секунд для `MessageDisplay`. Claude Code запускает callbacks `SessionEnd` во время завершения работы в рамках более короткого [бюджета таймаута SessionEnd](/docs/ru/hooks#sessionend-input), по умолчанию 1,5 секунды.

832 832 

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

834 834 

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

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

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

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

839* `SessionStart`: истекший по времени callback считается возвращающим отсутствие выходных данных, и сеанс продолжается с выходными данными ваших других hooks `SessionStart`.839* `SessionStart`: callback с истекшим таймаутом считается не вернувшим выходных данных, и сессия продолжается с выходными данными ваших других хуков `SessionStart`.

840* `PreModelSwitch`: Claude Code блокирует переключение модели. Hook, который не отвечает, не одобрил переключение.840* `PreModelSwitch`: Claude Code блокирует переключение модели. Хук, который не отвечает, не одобрил переключение.

841* Другие события, такие как `Notification`, `PreCompact` и `PostModelSwitch`: Claude Code логирует сбой и продолжает.841* Другие события, такие как `Notification`, `PreCompact` и `PostModelSwitch`: Claude Code записывает сбой в лог и продолжает работу.

842 842 

843Первый раз, когда callback `Stop` или `SessionStart` истекает по времени в основном сеансе, Claude Code также добавляет [`SDKInformationalMessage`](/docs/ru/agent-sdk/typescript#sdkinformationalmessage) в поток сообщений, говоря, что приложение, управляющее сеансом, не ответило. Более поздние timeout не повторяют это сообщение, пока ваше приложение остается неответчивым.843Когда у callback `Stop` или `SessionStart` впервые истекает таймаут в основной сессии, Claude Code также добавляет в поток сообщений [`SDKInformationalMessage`](/docs/ru/agent-sdk/typescript#sdkinformationalmessage) о том, что приложение, управляющее сессией, не ответило. Последующие таймауты не повторяют это сообщение, пока ваше приложение остается неотвечающим.

844 844 

845Если вы прерываете запрос во время ожидания callback, Claude Code отменяет ожидающий вызов инструмента. До версии 2.1.208 вызов инструмента мог все еще продолжиться, если вы прервали во время ожидания callback `PreToolUse`.845Если вы прерываете запрос во время ожидания callback, Claude Code отменяет ожидающий вызов инструмента. До версии 2.1.208 вызов инструмента мог все же выполниться, если вы прерывали запрос во время ожидания callback `PreToolUse`.

846 846 

847Если вашему callback нужно больше времени, установите более высокий `timeout` на его `HookMatcher`. В TypeScript используйте `AbortSignal` из третьего аргумента callback для корректной обработки отмены, когда истекает timeout.847Если вашему callback нужно больше времени, установите более высокий `timeout` в его `HookMatcher`. В TypeScript используйте `AbortSignal` из третьего аргумента callback для корректной обработки отмены при срабатывании таймаута.

848 848 

849<h3 id="tool-blocked-unexpectedly">849<h3 id="tool-blocked-unexpectedly">

850 Инструмент заблокирован неожиданно850 Инструмент заблокирован неожиданно

851</h3>851</h3>

852 852 

853* Проверьте все hooks `PreToolUse` на возвращение `permissionDecision: 'deny'`853* Проверьте все хуки `PreToolUse` на возвращение `permissionDecision: 'deny'`

854* Добавьте логирование в ваши hooks, чтобы увидеть, какие `permissionDecisionReason` они возвращают854* Добавьте логирование в ваши хуки, чтобы увидеть, какие `permissionDecisionReason` они возвращают

855* Проверьте, что паттерны matcher не слишком широкие: пустой matcher соответствует всем инструментам855* Проверьте, что паттерны matcher не слишком широкие: пустой matcher соответствует всем инструментам

856 856 

857<h3 id="modified-input-not-applied">857<h3 id="modified-input-not-applied">

858 Измененный входной сигнал не применяется858 Измененные входные данные не применяются

859</h3>859</h3>

860 860 

861* Убедитесь, что `updatedInput` находится внутри `hookSpecificOutput`, а не на верхнем уровне:861* Убедитесь, что `updatedInput` находится внутри `hookSpecificOutput`, а не на верхнем уровне:


870 };870 };

871 ```871 ```

872 872 

873* Не объединяйте `updatedInput` с `permissionDecision: 'defer'`, который отбрасывает измененный входной сигнал. Опущение `permissionDecision` допустимо: измененный входной сигнал все еще применяется через обычную оценку разрешений. Вы также можете вернуть `'allow'` для автоматического одобрения измененного входного сигнала или `'ask'` для отображения его пользователю на утверждение873* Не объединяйте `updatedInput` с `permissionDecision: 'defer'`, так как это отбрасывает измененные входные данные. Опускать `permissionDecision` допустимо: измененные входные данные все равно применяются через обычную оценку разрешений. Вы также можете вернуть `'allow'` для автоматического одобрения измененных входных данных или `'ask'`, чтобы показать их пользователю для подтверждения

874 874 

875* Включите `hookEventName` в `hookSpecificOutput` для идентификации типа hook, для которого предназначен вывод875* Включите `hookEventName` в `hookSpecificOutput`, чтобы указать, к какому типу хука относится вывод

876 876 

877<h3 id="session-hooks-not-available-in-python">877<h3 id="session-hooks-not-available-in-python">

878 Hooks сеанса недоступны в Python878 Хуки сессии недоступны в Python

879</h3>879</h3>

880 880 

881`SessionStart` и `SessionEnd` могут быть зарегистрированы как SDK callback hooks в TypeScript, но недоступны в Python SDK, потому что его тип `HookEvent` их опускает. В Python они доступны только как [shell command hooks](/docs/ru/hooks#hook-events), определенные в файлах настроек, таких как `.claude/settings.json`. Для загрузки shell command hooks из вашего приложения SDK включите соответствующий источник настроек с [`setting_sources`](/docs/ru/agent-sdk/python#settingsource) или [`settingSources`](/docs/ru/agent-sdk/typescript#settingsource):881`SessionStart` и `SessionEnd` можно зарегистрировать как callback-хуки SDK в TypeScript, но они недоступны в Python SDK, потому что его тип `HookEvent` их не включает. В Python они доступны только как [хуки shell-команд](/docs/ru/hooks#hook-events), определенные в файлах настроек, таких как `.claude/settings.json`. То, какие файлы настроек загружает ваше приложение SDK, зависит от [`setting_sources`](/docs/ru/agent-sdk/python#settingsource) или [`settingSources`](/docs/ru/agent-sdk/typescript#settingsource). Если вы задаете этот параметр, включите источник, который содержит хуки:

882 882 

883<CodeGroup>883<CodeGroup>

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


894 ```894 ```

895</CodeGroup>895</CodeGroup>

896 896 

897Для запуска логики инициализации как Python SDK callback вместо этого используйте первое сообщение из `client.receive_response()` как ваш триггер.897Чтобы вместо этого запускать логику инициализации как callback Python SDK, используйте первое сообщение из `client.receive_response()` в качестве триггера.

898 898 

899<h3 id="subagent-permission-prompts-multiplying">899<h3 id="subagent-permission-prompts-multiplying">

900 Запросы разрешений подагента умножаются900 Запросы разрешений субагентов множатся

901</h3>901</h3>

902 902 

903При порождении нескольких подагентов каждый может запросить разрешения отдельно для своих собственных вызовов инструментов. Чтобы избежать повторных запросов, используйте hooks `PreToolUse` для автоматического одобрения конкретных инструментов или настройте правила разрешений, которые подагенты [наследуют от родительского разговора](/docs/ru/sub-agents#permission-modes).903При порождении нескольких субагентов каждый из них может запрашивать разрешения отдельно для своих собственных вызовов инструментов. Чтобы избежать повторных запросов, используйте хуки `PreToolUse` для автоматического одобрения конкретных инструментов или настройте правила разрешений, которые субагенты [наследуют от родительского диалога](/docs/ru/sub-agents#permission-modes).

904 904 

905<h3 id="recursive-hook-loops-with-subagents">905<h3 id="recursive-hook-loops-with-subagents">

906 Рекурсивные циклы hook с подагентами906 Рекурсивные циклы хуков с субагентами

907</h3>907</h3>

908 908 

909Hook `UserPromptSubmit`, который порождает подагентов, может создать бесконечные циклы, если эти подагенты срабатывают тот же hook. Чтобы предотвратить это:909Хук `UserPromptSubmit`, который порождает субагентов, может создать бесконечные циклы, если эти субагенты вызывают срабатывание того же хука. Чтобы предотвратить это:

910 910 

911* Используйте общую переменную или состояние сеанса для отслеживания, находитесь ли вы уже внутри подагента911* Используйте общую переменную или состояние сессии для отслеживания того, находитесь ли вы уже внутри субагента

912* Ограничьте область действия hooks, чтобы они запускались только для сеанса агента верхнего уровня912* Ограничьте хуки, чтобы они запускались только для сессии агента верхнего уровня

913 913 

914<h3 id="systemmessage-not-appearing-in-output">914<h3 id="systemmessage-not-appearing-in-output">

915 systemMessage не появляется в выводе915 systemMessage не появляется в выводе

916</h3>916</h3>

917 917 

918Поле `systemMessage` показывает сообщение пользователю, а не модели. На Claude Code версии 2.1.227 или позже, `systemMessage` hook может появиться в потоке сообщений как [`SDKInformationalMessage`](/docs/ru/agent-sdk/typescript#sdkinformationalmessage). Появляется ли оно, зависит от события. Каждый [раздел события](/docs/ru/hooks#hook-events) на странице hooks говорит, как выводится результат. Для передачи контекста модели вместо этого верните [`additionalContext`](/docs/ru/hooks#add-context-for-claude).918Поле `systemMessage` показывает сообщение пользователю, а не модели. В Claude Code версии 2.1.227 или новее `systemMessage` хука может появиться в потоке сообщений как [`SDKInformationalMessage`](/docs/ru/agent-sdk/typescript#sdkinformationalmessage). Появится ли оно, зависит от события. В [разделе каждого события](/docs/ru/hooks#hook-events) на странице хуков описано, как выводится результат. Чтобы вместо этого передать контекст модели, верните [`additionalContext`](/docs/ru/hooks#add-context-for-claude).

919 919 

920До версии 2.1.227 SDK выводил выходные данные hook в поток сообщений только для hooks `SessionStart` и `Setup`. Для любого другого события выходные данные появлялись только в событиях жизненного цикла, которые добавляет [`includeHookEvents`](/docs/ru/agent-sdk/typescript#options) (`include_hook_events` в Python). Запись этого параметра охватывает, какие события жизненного цикла производит каждое событие hook.920До версии 2.1.227 SDK выводил выходные данные хука в поток сообщений только для хуков `SessionStart` и `Setup`. Для любого другого события выходные данные появлялись только в событиях жизненного цикла, которые добавляет [`includeHookEvents`](/docs/ru/agent-sdk/typescript#options) (`include_hook_events` в Python). В описании этого параметра указано, какие события жизненного цикла порождает каждое событие хука.

921 921 

922Если вам нужно надежно вывести решения hook в ваше приложение, логируйте их отдельно или используйте выделенный канал вывода.922Если вам нужно надежно передавать решения хуков в ваше приложение, логируйте их отдельно или используйте выделенный канал вывода.

923 923 

924<h2 id="related-resources">924<h2 id="related-resources">

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

Details

194 `ToolAnnotations`194 `ToolAnnotations`

195</h4>195</h4>

196 196 

197Подсказки поведения для инструмента, передаваемые как аргумент `annotations` функции [`tool()`](#tool). `ToolAnnotations` расширяет `mcp.types.ToolAnnotations` SDK MCP с полем `maxResultSizeChars`, и вы можете писать каждую подсказку в camelCase или snake\_case: `ToolAnnotations(readOnlyHint=True)` и `ToolAnnotations(read_only_hint=True)` эквивалентны. Вы также можете передать простой `mcp.types.ToolAnnotations` везде, где SDK принимает аннотации.197Подсказки поведения для инструмента, передаваемые как аргумент `annotations` функции [`tool()`](#tool). `ToolAnnotations` расширяет `mcp.types.ToolAnnotations` SDK MCP с полем `maxResultSizeChars`, и вы можете писать каждую подсказку в camelCase или snake\_case: `ToolAnnotations(readOnlyHint=True)` и `ToolAnnotations(read_only_hint=True)` эквивалентны. Чтобы прочитать подсказку обратно из объекта, используйте написание, объявленное в установленном у вас пакете `mcp`: `.readOnlyHint` в `mcp` 1.x и `.read_only_hint` в 2.x, тогда как `.maxResultSizeChars` работает в обоих. Вы также можете передать простой `mcp.types.ToolAnnotations` везде, где SDK принимает аннотации.

198 198 

199Имена snake\_case и типизированное поле `maxResultSizeChars` требуют Python Agent SDK 0.2.140 или позже. Версии 0.1.31 по 0.2.139 переэкспортируют `mcp.types.ToolAnnotations` без изменений. В версиях 0.1.55 по 0.2.139 вы все еще можете передать `maxResultSizeChars` как аргумент ключевого слова: класс MCP принимает дополнительные поля, и SDK пересылает значение в Claude Code.199Имена snake\_case и типизированное поле `maxResultSizeChars` требуют Python Agent SDK 0.2.140 или позже. Версии 0.1.31 по 0.2.139 переэкспортируют `mcp.types.ToolAnnotations` без изменений. В версиях 0.1.55 по 0.2.139 вы все еще можете передать `maxResultSizeChars` как аргумент ключевого слова: класс MCP принимает дополнительные поля, и SDK пересылает значение в Claude Code.

200 200 


1465| `enabled` | `type`, `budget_tokens`, `display` | Включить thinking с определённым бюджетом токенов |1465| `enabled` | `type`, `budget_tokens`, `display` | Включить thinking с определённым бюджетом токенов |

1466| `disabled` | `type` | Отключить thinking |1466| `disabled` | `type` | Отключить thinking |

1467 1467 

1468Дополнительное поле `display` контролирует, возвращается ли текст thinking `"summarized"` или `"omitted"`. На Claude Opus 4.7 и позже, по умолчанию API — `"omitted"`, поэтому установите `"summarized"` для получения содержимого thinking в выходах [`ThinkingBlock`](#thinkingblock). Claude Code не отправляет `display` на Amazon Bedrock или Google Cloud's Agent Platform, поэтому на этих поставщиках Opus 4.7 и позже возвращают пустые выходы `ThinkingBlock` даже когда вы установили `display` на `"summarized"`.1468Необязательное поле `display` определяет, возвращается ли текст размышлений в виде `"summarized"` или `"omitted"`. В Claude Opus 4.7 и новее значение API по умолчанию — `"omitted"`, поэтому установите `"summarized"`, чтобы получать содержимое размышлений в выходных данных [`ThinkingBlock`](#thinkingblock). Claude Code не включает `display` в запросы к некоторым поставщикам, таким как Amazon Bedrock и Google Cloud's Agent Platform. У этих поставщиков Opus 4.7 и новее возвращают пустые выходные данные `ThinkingBlock`, даже если вы установили `display` в `"summarized"`.

1469 1469 

1470Поскольку это классы `TypedDict`, они являются простыми dicts во время выполнения. Либо конструируйте их как dict-литералы, либо вызывайте класс как конструктор; оба создают `dict`. Получайте доступ к полям с `config["budget_tokens"]`, а не `config.budget_tokens`:1470Поскольку это классы `TypedDict`, они являются простыми dicts во время выполнения. Либо конструируйте их как dict-литералы, либо вызывайте класс как конструктор; оба создают `dict`. Получайте доступ к полям с `config["budget_tokens"]`, а не `config.budget_tokens`:

1471 1471 


1875| `maxOutputTokens` | `int` | Максимальный лимит выходных токенов для этой модели. |1875| `maxOutputTokens` | `int` | Максимальный лимит выходных токенов для этой модели. |

1876| `canonicalModel` | `str` | Канонический ID модели, используемый для поиска цены. Может отличаться от необработанной строки модели, по которой индексируется запись, такой как ID или псевдоним, специфичный для поставщика. Не всегда присутствует. |1876| `canonicalModel` | `str` | Канонический ID модели, используемый для поиска цены. Может отличаться от необработанной строки модели, по которой индексируется запись, такой как ID или псевдоним, специфичный для поставщика. Не всегда присутствует. |

1877| `provider` | `str` | Поставщик API, который обслуживал эту модель, такой как `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle` или `gateway`. Не всегда присутствует. |1877| `provider` | `str` | Поставщик API, который обслуживал эту модель, такой как `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle` или `gateway`. Не всегда присутствует. |

1878| `costBasis` | `str` | Таблица цен, по которой была рассчитана стоимость последнего запроса этой модели: `list` для прейскурантной цены, `managed` для таблицы [`modelPricing`](/docs/ru/settings-reference#modelpricing) или `unknown`, если ни одна из них не соответствует ID модели. Не всегда присутствует и не объявлено в TypedDict, поэтому читайте его с помощью `.get()`. Требуется Claude Code v2.1.246 или позже. |

1878 1879 

1879<h3 id="streamevent">1880<h3 id="streamevent">

1880 `StreamEvent`1881 `StreamEvent`


2166 """Base error for Claude SDK."""2167 """Base error for Claude SDK."""

2167```2168```

2168 2169 

2169Когда одноразовый `query()` заканчивается результатом ошибки, например ошибкой превышения лимита ходов, SDK вызывает [`ResultError`](#resulterror) после выдачи финального сообщения результата. Версии Python Agent SDK до 0.2.140 вызывали простое `Exception`, которое не было подклассом `ClaudeSDKError`.2170Когда одноразовый `query()` заканчивается результатом ошибки, например ошибкой превышения лимита ходов, SDK вызывает [`ResultError`](#resulterror).

2170 2171 

2171<h3 id="clinotfounderror">2172<h3 id="clinotfounderror">

2172 `CLINotFoundError`2173 `CLINotFoundError`


2216 `ResultError`2217 `ResultError`

2217</h3>2218</h3>

2218 2219 

2219Вызывается после финального [`ResultMessage`](#resultmessage), когда процесс Claude Code завершается, потому что запуск закончился результатом ошибки, таким как ошибка превышения лимита ходов или ошибка API. `ResultError` является подклассом `ProcessError`, поэтому существующий обработчик `except ProcessError` также его перехватывает. Его атрибуты содержат поля этого сообщения результата, поэтому вы можете разветвляться в зависимости от причины сбоя запуска без анализа текста сообщения. Требуется Python Agent SDK версии 0.2.140 или позже.2220Вызывается, когда процесс Claude Code завершается, потому что запуск закончился [сообщением результата](#resultmessage) с ошибкой, таким как ошибка превышения лимита ходов или ошибка API. `ResultError` является подклассом `ProcessError`, поэтому существующий обработчик `except ProcessError` также его перехватывает. Его атрибуты содержат поля этого сообщения результата, поэтому вы можете разветвляться в зависимости от причины сбоя запуска без анализа текста сообщения. Требуется Python Agent SDK версии 0.2.140 или позже.

2220 2221 

2221```python theme={null}2222```python theme={null}

2222class ResultError(ProcessError):2223class ResultError(ProcessError):


2649 hookEventName: Literal["PostToolUse"]2650 hookEventName: Literal["PostToolUse"]

2650 additionalContext: NotRequired[str]2651 additionalContext: NotRequired[str]

2651 updatedToolOutput: NotRequired[Any]2652 updatedToolOutput: NotRequired[Any]

2652 updatedMCPToolOutput: NotRequired[Any] # Deprecated: use updatedToolOutput, which works for all tools2653 updatedMCPToolOutput: NotRequired[Any] # MCP tools only. Prefer updatedToolOutput, which works for all tools

2653 2654 

2654 2655 

2655class PostToolUseFailureHookSpecificOutput(TypedDict):2656class PostToolUseFailureHookSpecificOutput(TypedDict):


2767 Типы ввода/вывода инструментов2768 Типы ввода/вывода инструментов

2768</h2>2769</h2>

2769 2770 

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

2771 2772 

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

2773 2774 

Details

60 60 

61Чтобы использовать структурированные выводы, определите [JSON Schema](https://json-schema.org/understanding-json-schema/about), описывающую форму данных, которые вы хотите, затем передайте его в `query()` через опцию `outputFormat` (TypeScript) или `output_format` (Python). Когда агент завершит работу, сообщение результата включает поле `structured_output` с валидированными данными, соответствующими вашей схеме.61Чтобы использовать структурированные выводы, определите [JSON Schema](https://json-schema.org/understanding-json-schema/about), описывающую форму данных, которые вы хотите, затем передайте его в `query()` через опцию `outputFormat` (TypeScript) или `output_format` (Python). Когда агент завершит работу, сообщение результата включает поле `structured_output` с валидированными данными, соответствующими вашей схеме.

62 62 

63Пример ниже просит агента исследовать Anthropic и вернуть название компании, год основания и штаб-квартиру как структурированный вывод.63Прежде чем запускать примеры на этой странице, установите Claude Agent SDK, следуя руководству [быстрый старт](/docs/ru/agent-sdk/quickstart#setup). Пример ниже просит агента исследовать Anthropic и вернуть название компании, год основания и штаб-квартиру как структурированный вывод.

64 64 

65<CodeGroup>65<CodeGroup>

66 ```typescript TypeScript theme={null}66 ```typescript TypeScript theme={null}


390 Обработка ошибок390 Обработка ошибок

391</h2>391</h2>

392 392 

393Генерация структурированного вывода может не удаться, когда агент не может создать валидный JSON, соответствующий вашей схеме. Это обычно происходит, когда схема слишком сложна для задачи, сама задача неоднозначна или агент достигает лимита повторных попыток при попытке исправить ошибки валидации. Это также может произойти без каких-либо ошибок валидации: [откат модели](/docs/ru/model-config#automatic-model-fallback) может отменить уже завершённый вывод в середине потока, и если никакая повторная попытка его не заменит, выполнение завершится с той же ошибкой. Проверьте список `errors` в сообщении результата, чтобы различить две причины перед отладкой вашей схемы.393Генерация структурированного вывода может не удаться, когда агент не может создать валидный JSON, соответствующий вашей схеме. Это обычно происходит, когда схема слишком сложна для задачи, сама задача неоднозначна или агент достигает лимита повторных попыток при попытке исправить ошибки валидации. Это также может произойти без каких-либо ошибок валидации: [переключение на резервную модель](/docs/ru/model-config#automatic-model-fallback) может отменить уже завершённый вывод в середине потока, и если никакая повторная попытка его не заменит, выполнение завершится с той же ошибкой. Проверьте список `errors` в сообщении результата с ошибкой, чтобы различить две причины перед отладкой вашей схемы.

394 394 

395Когда происходит ошибка, сообщение результата имеет `subtype`, указывающий, что пошло не так:395Когда происходит ошибка, сообщение результата имеет `subtype`, указывающий, что пошло не так:

396 396 

397| Subtype | Значение |397| Subtype | Значение |

398| - | - |398| - | - |

399| `success` | Вывод был успешно сгенерирован и валидирован |399| `success` | Вывод был успешно сгенерирован и валидирован |

400| `error_max_structured_output_retries` | Ни один валидный вывод не пережил несколько попыток (ошибки валидации или откат модели без успешной повторной попытки) |400| `error_max_structured_output_retries` | После нескольких попыток не осталось валидного вывода (ошибки валидации или отмена вывода при переключении на резервную модель без успешной повторной попытки) |

401 401 

402Результат также может завершиться с subtype `success`, но без значения `structured_output`, например, когда выполнение завершается без того, чтобы агент создал структурированный вывод. Рассматривайте этот случай как ошибку. Запись по устранению неполадок [structured\_output is None but the result says success](/docs/ru/agent-sdk/troubleshooting#structured_output-is-none-but-the-result-says-success) охватывает этот случай. Пример ниже рассматривает результат как успешный только когда `subtype` равен `success` и `structured_output` присутствует, и обрабатывает все остальные результаты как ошибку:402Результат также может завершиться с subtype `success`, но без значения `structured_output`, например, когда выполнение завершается без того, чтобы агент создал структурированный вывод. Этот случай также рассматривайте как ошибку. Запись по устранению неполадок [structured\_output is None but the result says success](/docs/ru/agent-sdk/troubleshooting#structured_output-is-none-but-the-result-says-success) охватывает этот случай. Пример ниже рассматривает результат как успешный только когда `subtype` равен `success` и `structured_output` присутствует, и обрабатывает все остальные результаты как ошибку:

403 403 

404<CodeGroup>404<CodeGroup>

405 ```typescript TypeScript theme={null}405 ```typescript TypeScript theme={null}


488 488 

489* **Держите схемы сосредоточенными.** Глубоко вложенные схемы со многими обязательными полями сложнее удовлетворить. Начните с простого и добавляйте сложность по мере необходимости.489* **Держите схемы сосредоточенными.** Глубоко вложенные схемы со многими обязательными полями сложнее удовлетворить. Начните с простого и добавляйте сложность по мере необходимости.

490* **Соответствуйте схему задаче.** Если задача может не иметь всю информацию, которую требует ваша схема, сделайте эти поля необязательными.490* **Соответствуйте схему задаче.** Если задача может не иметь всю информацию, которую требует ваша схема, сделайте эти поля необязательными.

491* **Используйте четкие приглашения.** Неоднозначные приглашения затрудняют для агента понимание того, какой вывод создавать.491* **Используйте четкие промпты.** Неоднозначные промпты затрудняют для агента понимание того, какой вывод создавать.

492 492 

493<h2 id="related-resources">493<h2 id="related-resources">

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

Details

186 console.error("Claim failed:", error.message);186 console.error("Claim failed:", error.message);

187});187});

188 188 

189for await (const message of claimedQuery) {189try {

190 for await (const message of claimedQuery) {

190 console.log(message);191 console.log(message);

192 }

193} catch (error) {

194 // После отклонённого требования затребованный запрос выбрасывает исключение, как только выдаст результат с ошибкой

195 console.error(`Session ended with an error: ${error}`);

191}196}

192```197```

193 198 


566| `includePartialMessages` | `boolean` | `false` | Включить события частичных сообщений |571| `includePartialMessages` | `boolean` | `false` | Включить события частичных сообщений |

567| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Тайм-аут в миллисекундах для каждого вызова `sessionStore.load()` и `sessionStore.listSubkeys()` во время материализации возобновления. Если адаптер не разрешится в этом окне, запрос не удается вместо зависания. Игнорируется, когда `sessionStore` не установлен |572| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Тайм-аут в миллисекундах для каждого вызова `sessionStore.load()` и `sessionStore.listSubkeys()` во время материализации возобновления. Если адаптер не разрешится в этом окне, запрос не удается вместо зависания. Игнорируется, когда `sessionStore` не установлен |

568| `managedSettings` | `Settings` | `undefined` | Параметры уровня политики, которые ваш хост-процесс предоставляет порожденному сеансу. На машинах с развернутыми администратором управляемыми параметрами Claude Code игнорирует их, если только источник управляемых параметров администратора с наивысшим приоритетом не установит `parentSettingsBehavior: 'merge'`, и никогда не объединяет их, пока [`policyHelper`](/docs/ru/settings-reference#policyhelper) предоставляет управляемые параметры. Объединенные значения проходят через фильтр только для ограничений; [Ограничить параметры родителя](/docs/ru/claude-apps-gateway#restrict-parent-settings) охватывает то, что допускает фильтр и блокировки `allowManaged*Only`. Хост, который устанавливает [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/ru/env-vars), имеет три ключа, прочитанные прямо из этого полезного груза: его [конфигурация модели](/docs/ru/model-config#restrict-model-selection) на Claude Code v2.1.222 или позже, [`modelPricing`](/docs/ru/settings-reference#modelpricing) когда ни один управляемый источник не устанавливает его на v2.1.246 или позже, и его запись `ENABLE_TOOL_SEARCH` env на v2.1.247 или позже |573| `managedSettings` | `Settings` | `undefined` | Параметры уровня политики, которые ваш хост-процесс предоставляет порожденному сеансу. На машинах с развернутыми администратором управляемыми параметрами Claude Code игнорирует их, если только источник управляемых параметров администратора с наивысшим приоритетом не установит `parentSettingsBehavior: 'merge'`, и никогда не объединяет их, пока [`policyHelper`](/docs/ru/settings-reference#policyhelper) предоставляет управляемые параметры. Объединенные значения проходят через фильтр только для ограничений; [Ограничить параметры родителя](/docs/ru/claude-apps-gateway#restrict-parent-settings) охватывает то, что допускает фильтр и блокировки `allowManaged*Only`. Хост, который устанавливает [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/ru/env-vars), имеет три ключа, прочитанные прямо из этого полезного груза: его [конфигурация модели](/docs/ru/model-config#restrict-model-selection) на Claude Code v2.1.222 или позже, [`modelPricing`](/docs/ru/settings-reference#modelpricing) когда ни один управляемый источник не устанавливает его на v2.1.246 или позже, и его запись `ENABLE_TOOL_SEARCH` env на v2.1.247 или позже |

569| `maxBudgetUsd` | `number` | `undefined` | Остановить запрос, когда оценка стоимости на стороне клиента достигает этого значения в USD. Сравнивается с той же оценкой, что и `total_cost_usd`. Для предостережений точности и поведения сброса см. [Отслеживание стоимости и использования](/docs/ru/agent-sdk/cost-tracking) |574| `maxBudgetUsd` | `number` | `undefined` | Остановить запрос, когда оценка стоимости на стороне клиента достигает этого значения в USD. Учитывает только расходы самого вызова; итоги, восстановленные из возобновленного сеанса, не учитываются. Для предостережений точности и поведения сброса см. [Отслеживание стоимости и использования](/docs/ru/agent-sdk/cost-tracking) |

570| `maxThinkingTokens` | `number` | `undefined` | *Устарело:* Используйте `thinking` вместо этого. Максимальные токены для процесса мышления |575| `maxThinkingTokens` | `number` | `undefined` | *Устарело:* Используйте `thinking` вместо этого. Максимальные токены для процесса мышления |

571| `maxTurns` | `number` | `undefined` | Максимальное количество агентивных ходов (раунды использования инструментов) |576| `maxTurns` | `number` | `undefined` | Максимальное количество агентивных ходов (раунды использования инструментов) |

572| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Конфигурации MCP сервера |577| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Конфигурации MCP сервера |


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

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

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

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

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

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

723| `stopTask(taskId)` | Остановить работающую фоновую задачу по ID |728| `stopTask(taskId)` | Остановить работающую фоновую задачу по ID |


844 849 

845`options.cwd` требуется. Заявка также может установить `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, наложение параметров флага в `settings`, `appendSystemPrompt`, `title`, `agents` и токены для каждого сеанса в `env`.850`options.cwd` требуется. Заявка также может установить `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, наложение параметров флага в `settings`, `appendSystemPrompt`, `title`, `agents` и токены для каждого сеанса в `env`.

846 851 

847Claude Code может отказать в заявке, например, для папки, которая не существует, или той, чьи параметры проекта устанавливают `env`, `agent` или `model`. Когда `claimed` отклоняется с сообщением, которое начинается с `option_not_applied`, сеанс работает без `model` или `maxThinkingTokens`, которые вы запросили. После любого другого отказа ваша подсказка не запустилась, поэтому запустите сеанс с `query()` вместо этого.852Claude Code может отказать в занятии, например для несуществующей папки или папки, настройки проекта которой задают `env`, `agent` или `model`. После отказа промпт, уже отправленный `claim()`, получает результат с ошибкой, текст которого начинается с `not_claimed`, после чего возвращённый запрос выбрасывает исключение. Оберните цикл запроса в блок try, чтобы продолжить работу после исключения. Когда `claimed` отклоняется с сообщением, начинающимся с `option_not_applied`, сессия работает без запрошенных вами `model` или `maxThinkingTokens`. После любого другого отклонения ваш промпт не был выполнен, поэтому начните сессию через `query()`.

848 853 

849<h3 id="sdkcontrolinitializeresponse">854<h3 id="sdkcontrolinitializeresponse">

850 `SDKControlInitializeResponse`855 `SDKControlInitializeResponse`


1337| `mcpServer` | `{ name: string; source: string }` | Для инструмента `mcp__*`, MCP сервер, который его обслуживает, и откуда определение этого сервера пришло, с полями [`McpServerProvenance`](#mcpserverprovenance). Отсутствует для других инструментов. Требует Agent SDK v0.3.274 или позже |1342| `mcpServer` | `{ name: string; source: string }` | Для инструмента `mcp__*`, MCP сервер, который его обслуживает, и откуда определение этого сервера пришло, с полями [`McpServerProvenance`](#mcpserverprovenance). Отсутствует для других инструментов. Требует Agent SDK v0.3.274 или позже |

1338| `decisionReason` | `string` | Объясняет, почему был вызван этот запрос разрешения |1343| `decisionReason` | `string` | Объясняет, почему был вызван этот запрос разрешения |

1339| `defaultToNo` | `boolean` | Когда `true`, одиночный случайный нажатие клавиши не должно одобрить этот запрос: откройте вашу подсказку на его опции отклонения, не предварительно выбирайте одобрение и не предлагайте ярлык одобрения одной клавишей. Требует Agent SDK v0.3.268 или позже |1344| `defaultToNo` | `boolean` | Когда `true`, одиночный случайный нажатие клавиши не должно одобрить этот запрос: откройте вашу подсказку на его опции отклонения, не предварительно выбирайте одобрение и не предлагайте ярлык одобрения одной клавишей. Требует Agent SDK v0.3.268 или позже |

1340| `suppressAlwaysAllowRule` | `boolean` | Когда `true`, не предлагайте постоянный выбор всегда разрешить для этого запроса, потому что правило, которое он напишет, предоставляет больше, чем действие самого запроса. Требует Agent SDK v0.3.268 или позже |1345| `suppressAlwaysAllowRule` | `boolean` | Если `true`, не предлагайте для этого запроса постоянный вариант «всегда разрешать». Требуется Agent SDK v0.3.268 или новее |

1341| `toolUseID` | `string` | Уникальный идентификатор для этого конкретного вызова инструмента в сообщении помощника |1346| `toolUseID` | `string` | Уникальный идентификатор для этого конкретного вызова инструмента в сообщении помощника |

1342| `agentID` | `string` | Если работает в подагенте, ID подагента |1347| `agentID` | `string` | Если работает в подагенте, ID подагента |

1343| `requestId` | `string` | `request_id` оболочки `control_request`. `control_response`, которую ваше приложение отправляет вне SDK, такую как подписанный HTTP POST, должна повторить это значение, чтобы процесс Claude Code мог сопоставить ответ с запросом |1348| `requestId` | `string` | `request_id` оболочки `control_request`. `control_response`, которую ваше приложение отправляет вне SDK, такую как подписанный HTTP POST, должна повторить это значение, чтобы процесс Claude Code мог сопоставить ответ с запросом |


3788};3793};

3789```3794```

3790 3795 

3791Сообщает о результатах проверки кода как структурированный список, чтобы Claude Code мог их отобразить вместо вывода их как текст. `level` — это уровень усилий, на котором выполнялась проверка. Результаты упорядочены от наиболее серьёзных, максимум 32 на вызов, и массив пуст, когда ничего не выжило. Требует Claude Code v2.1.196 или позже.3796Сообщает о результатах код-ревью как структурированный список, чтобы Claude Code мог их отобразить вместо вывода их как текст. Результаты упорядочены от наиболее серьёзных, максимум 32 на вызов, и массив пуст, когда ничего не выжило. Требует Claude Code v2.1.196 или позже.

3797 

3798`level` опционален и содержит уровень effort, который Claude сообщает для ревью. Claude Code не сравнивает его с уровнем, на котором фактически выполнялось ревью, поэтому они могут различаться.

3792 3799 

3793Каждый результат содержит эти поля:3800Каждый результат содержит эти поля:

3794 3801 


4838};4845};

4839```4846```

4840 4847 

4841Возвращает количество сообщённых находок, уровень effort, с которым выполнялась проверка, и находки, возвращённые обратно для тела результата. Требуется Claude Code v2.1.196 или новее. Для возвращаемого поля `short_summary` требуется Claude Code v2.1.212 или новее.4848Возвращает количество сообщённых находок, значение `level`, переданное Claude, и находки, возвращённые обратно для тела результата. Требуется Claude Code v2.1.196 или новее. Для возвращаемого поля `short_summary` требуется Claude Code v2.1.212 или новее.

4842 4849 

4843<h3 id="artifact-2">4850<h3 id="artifact-2">

4844 Artifact4851 Artifact


5459 | { type: "disabled" }; // Без расширенного мышления5466 | { type: "disabled" }; // Без расширенного мышления

5460```5467```

5461 5468 

5462Необязательное поле `display` управляет тем, возвращается ли текст размышлений как `"summarized"` или `"omitted"`. На Claude Opus 4.7 и более поздних версиях значение API по умолчанию — `"omitted"`, поэтому установите `"summarized"`, чтобы получать содержимое размышлений в блоках `thinking`. Claude Code не отправляет `display` в Amazon Bedrock или Google Cloud's Agent Platform, поэтому у этих провайдеров Opus 4.7 и более поздние версии возвращают пустые блоки `thinking`, даже если вы установите `display` в `"summarized"`.5469Необязательное поле `display` управляет тем, возвращается ли текст размышлений как `"summarized"` или `"omitted"`. На Claude Opus 4.7 и более поздних версиях значение API по умолчанию — `"omitted"`, поэтому установите `"summarized"`, чтобы получать содержимое размышлений в блоках `thinking`. Claude Code не включает `display` в запросы к некоторым провайдерам, например Amazon Bedrock и Google Cloud's Agent Platform. У этих провайдеров Opus 4.7 и более поздние версии возвращают пустые блоки `thinking`, даже если вы установите `display` в `"summarized"`.

5463 5470 

5464<h3 id="spawnedprocess">5471<h3 id="spawnedprocess">

5465 `SpawnedProcess`5472 `SpawnedProcess`


5530 5537 

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

5532 5539 

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

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

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

5536 5543 

5537Промис разрешается после того, как вновь добавленные stdio-, HTTP- и SSE-серверы подключатся или не смогут подключиться, поэтому инструменты подключившихся серверов доступны на следующем ходу.5544Промис разрешается после того, как вновь добавленные stdio-, HTTP- и SSE-серверы подключатся или не смогут подключиться, поэтому инструменты подключившихся серверов доступны на следующем ходу.

agent-view.md +1 −0

Details

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

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

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

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

822| `claude daemon stop --any` | Остановить процесс supervisor и фоновые сессии, которые он размещает. Передайте `--keep-workers`, чтобы оставить фоновые сессии работающими, чтобы следующий supervisor переподключился к ним. Следующий `claude agents` или `claude --bg` запускает новый supervisor |823| `claude daemon stop --any` | Остановить процесс supervisor и фоновые сессии, которые он размещает. Передайте `--keep-workers`, чтобы оставить фоновые сессии работающими, чтобы следующий supervisor переподключился к ним. Следующий `claude agents` или `claude --bg` запускает новый supervisor |

823 824 

824`claude attach` и `claude logs` могут принимать часть имени работающей сессии вместо ID, например `claude logs "auth refactor"`. Для передачи имени требуется Claude Code v2.1.290 или позже.825`claude attach` и `claude logs` могут принимать часть имени работающей сессии вместо ID, например `claude logs "auth refactor"`. Для передачи имени требуется Claude Code v2.1.290 или позже.

agents.md +1 −1

Details

20 20 

21Три дополнительных инструмента поддерживают эту работу, не являясь способом запуска агентов:21Три дополнительных инструмента поддерживают эту работу, не являясь способом запуска агентов:

22 22 

23* [Worktrees](/docs/ru/worktrees) дают каждому сеансу отдельный git checkout, поэтому параллельные сеансы никогда не редактируют одни и те же файлы. Используйте их для сеансов, которые вы запускаете сами. Сеанс, который вы отправляете из agent view, [переходит в свой собственный worktree перед редактированием файлов](/docs/ru/agent-view#how-file-edits-are-isolated), и подагенты, которых вы порождаете, могут получить свой собственный.23* [Worktrees](/docs/ru/worktrees) дают каждой сессии отдельный git checkout, поэтому параллельные сессии редактируют каждая свою копию файлов. Используйте их для сессий, которые вы запускаете сами. Сессия, которую вы отправляете из agent view, [переходит в свой собственный worktree перед редактированием файлов](/docs/ru/agent-view#how-file-edits-are-isolated), и субагенты, которых вы порождаете, тоже могут получить каждый свой.

24* [Cross-session messaging](/docs/ru/cross-session-messaging) позволяет Claude перечислять и отправлять сообщения вашим другим сеансам Claude Code на этой машине, на другой машине или [в облаке](/docs/ru/claude-code-on-the-web), поэтому сеансы, которые вы запускаете сами, могут передавать результаты и статус между собой.24* [Cross-session messaging](/docs/ru/cross-session-messaging) позволяет Claude перечислять и отправлять сообщения вашим другим сеансам Claude Code на этой машине, на другой машине или [в облаке](/docs/ru/claude-code-on-the-web), поэтому сеансы, которые вы запускаете сами, могут передавать результаты и статус между собой.

25* [`/batch`](/docs/ru/commands) — это [skill](/docs/ru/skills), который заставляет Claude разделить одно большое изменение на 5–30 worktree-изолированных подагентов. Это упакованное использование подагентов и worktrees, а не отдельный стиль координации.25* [`/batch`](/docs/ru/commands) — это [skill](/docs/ru/skills), который заставляет Claude разделить одно большое изменение на 5–30 worktree-изолированных подагентов. Это упакованное использование подагентов и worktrees, а не отдельный стиль координации.

26 26 

Details

681 681 

682Amazon Bedrock передает ответы `InvokeModelWithResponseStream` в двоичном формате event-stream с заголовком `Content-Type: application/vnd.amazon.eventstream`. Шлюз или прокси между Claude Code и Amazon Bedrock должны передавать тело ответа и его заголовки, включая `Content-Type`, так как их отправил Amazon Bedrock.682Amazon Bedrock передает ответы `InvokeModelWithResponseStream` в двоичном формате event-stream с заголовком `Content-Type: application/vnd.amazon.eventstream`. Шлюз или прокси между Claude Code и Amazon Bedrock должны передавать тело ответа и его заголовки, включая `Content-Type`, так как их отправил Amazon Bedrock.

683 683 

684Если шлюз переписывает `Content-Type` на другое значение, Claude Code отклоняет ответ с ошибкой, которая начинается с `Bedrock streaming response has content-type`, указывая полученное значение. Обычная переписка — это `text/event-stream` из интеграции, которая повторно передает поток как события, отправляемые сервером.684Если шлюз переписывает `Content-Type` на другое значение, Claude Code отклоняет ответ с ошибкой, которая начинается с `Bedrock streaming response has content-type`, указывая полученное значение. Чаще всего значение переписывается на `text/event-stream` интеграцией, которая повторно передает поток как события, отправляемые сервером. О переменной `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD`, которую называет сообщение об ошибке, см. [Bedrock streaming response has an unexpected content-type](/docs/ru/errors#bedrock-streaming-response-has-an-unexpected-content-type).

685 685 

686Если шлюз удаляет или очищает заголовок, Claude Code предполагает, что тело — это поток событий Amazon Bedrock и декодирует его, поэтому тело, которое шлюз передал без изменений, продолжает передаваться потоком.686Если шлюз удаляет или очищает заголовок, Claude Code предполагает, что тело — это поток событий Amazon Bedrock и декодирует его, поэтому тело, которое шлюз передал без изменений, продолжает передаваться потоком.

687 687 

authentication.md +16 −16

Details

12 Вход в Claude Code12 Вход в Claude Code

13</h2>13</h2>

14 14 

15После [установки Claude Code](/docs/ru/setup#install-claude-code) запустите `claude` в вашем терминале. При первом запуске Claude Code откроет окно браузера для входа. Если вы установили переменную окружения `ANTHROPIC_API_KEY`, Claude Code пропустит приглашение входа и вместо этого попросит вас одобрить ключ.15После [установки Claude Code](/docs/ru/setup#install-claude-code) выполните `claude` в терминале. При первом запуске Claude Code открывает окно браузера для входа. Если вы задали переменную окружения `ANTHROPIC_API_KEY` и одобрили этот ключ, когда Claude Code спросит, использовать ли его, Claude Code пропускает запрос на вход.

16 16 

17Если браузер не откроется автоматически, нажмите `c`, чтобы скопировать URL входа в буфер обмена, а затем вставьте его в браузер.17Если браузер не открывается автоматически, нажмите `c`, чтобы скопировать URL для входа в буфер обмена, а затем вставьте его в браузер.

18 18 

19Если ваш браузер показывает код входа вместо перенаправления после входа, вставьте его в терминал в приглашение `Paste code here if prompted`. Это происходит, когда браузер не может достичь локального сервера обратного вызова Claude Code, что часто встречается в WSL2, сеансах SSH и контейнерах.19Если после входа браузер показывает код входа вместо перенаправления обратно, вставьте его в терминал в ответ на запрос `Paste code here if prompted`. Это происходит, когда браузер не может связаться с локальным callback-сервером Claude Code, что часто бывает в WSL2, SSH-сессиях и контейнерах.

20 20 

21Когда вход завершится, терминал отобразит `Login successful` и предложит вам нажать `Enter` для продолжения.21Когда вход завершится, терминал покажет `Login successful` и предложит нажать `Enter`, чтобы продолжить.

22 22 

23Вы можете аутентифицироваться с помощью любого из этих типов учетных записей:23Вы можете пройти аутентификацию с любым из следующих типов учётных записей:

24 24 

25* **Подписка Claude Pro или Max**: войдите с помощью вашей учетной записи claude.ai. Подпишитесь на [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max).25* **Подписка Claude Pro или Max**: войдите с помощью своей учётной записи claude.ai. Оформить подписку можно на [claude.com/pricing](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_pro_max).

26* **Claude for Teams или Enterprise**: войдите с помощью учетной записи claude.ai, на которую вас пригласил администратор вашей команды.26* **Claude for Teams или Enterprise**: войдите с помощью учётной записи claude.ai, на которую вас пригласил администратор вашей команды.

27* **Claude Console**: войдите с помощью ваших учетных данных Console. Ваш администратор должен был [пригласить вас](#claude-console-authentication) предварительно. Вы можете войти с или без [создания API ключа](#sign-in-without-an-api-key).27* **Claude Console**: войдите с помощью своих учётных данных Console. Сначала администратор должен [пригласить вас](#claude-console-authentication). Вы можете войти как с [созданием API-ключа](#sign-in-without-an-api-key), так и без него.

28* **Облачные провайдеры**: если ваша организация использует [Amazon Bedrock](/docs/ru/amazon-bedrock), [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai) или [Microsoft Foundry](/docs/ru/microsoft-foundry), установите необходимые переменные окружения перед запуском `claude`, или выберите **3rd-party platform** в приглашении входа, которое запускает интерактивный мастер настройки для Bedrock и Vertex AI. Вход через браузер не требуется.28* **Облачные провайдеры**: если ваша организация использует [Amazon Bedrock](/docs/ru/amazon-bedrock), [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai) или [Microsoft Foundry](/docs/ru/microsoft-foundry), задайте необходимые переменные окружения перед запуском `claude` или выберите **3rd-party platform** в запросе на вход — это запустит интерактивный мастер настройки для Bedrock и Vertex AI. Вход через браузер не требуется.

29* **Облачный шлюз**: если ваша организация запускает самостоятельно размещенный [шлюз приложений Claude](/docs/ru/claude-apps-gateway), войдите с помощью корпоративного SSO через `/login`. Токен, выданный шлюзом, является единственным учетным данием сеанса.29* **Облачный шлюз**: если ваша организация использует собственный [шлюз приложений Claude](/docs/ru/claude-apps-gateway), войдите через корпоративный SSO с помощью `/login`. Токен, выданный шлюзом, является единственными учётными данными сессии.

30 30 

31Администраторы могут указать, какой метод входа используют разработчики, и требовать, чтобы входы claude.ai принадлежали определенной организации; см. [Ограничение входа для вашей организации](#restrict-login-to-your-organization).31Администраторы могут определять, какой способ входа используют разработчики, и требовать, чтобы входы через claude.ai принадлежали определённой организации; см. [Ограничение входа вашей организацией](#restrict-login-to-your-organization).

32 32 

33Чтобы выйти и повторно аутентифицироваться, введите `/logout` в приглашение Claude Code. Выход также сбрасывает состояние первоначальной настройки, поэтому при следующем запуске `claude` вас проведут через вход и настройку снова.33Чтобы выйти и пройти аутентификацию заново, введите `/logout` в промпте Claude Code. Выход также сбрасывает состояние первоначальной настройки, поэтому при следующем запуске `claude` вы снова пройдёте через вход и настройку.

34 34 

35Если у вас возникли проблемы с входом, см. [устранение неполадок аутентификации](/docs/ru/troubleshoot-install#login-and-authentication).35Если у вас возникли проблемы со входом, см. [устранение неполадок аутентификации](/docs/ru/troubleshoot-install#login-and-authentication).

36 36 

37<h3 id="log-in-with-multiple-accounts">37<h3 id="log-in-with-multiple-accounts">

38 Вход с несколькими учетными записями38 Вход с несколькими учётными записями

39</h3>39</h3>

40 40 

41Чтобы оставаться в системе с несколькими учетными записями одновременно, например с рабочей и личной учетными записями, дайте каждой учетной записи свой собственный каталог конфигурации. Когда вы запускаете `claude`, установите переменную окружения [`CLAUDE_CONFIG_DIR`](/docs/ru/env-vars#variables) в каталог для учетной записи, которую вы хотите использовать. Каждый каталог имеет свои собственные параметры, историю сеансов и вход claude.ai или API ключ. Например, в Bash или Zsh добавьте этот псевдоним в `~/.bashrc` или `~/.zshrc`, чтобы `claude-work` использовал вашу рабочую учетную запись, а `claude` сохранял вашу личную:41Чтобы оставаться в системе одновременно в нескольких учётных записях, например рабочей и личной, выделите каждой учётной записи собственный каталог конфигурации. При запуске `claude` задайте переменную окружения [`CLAUDE_CONFIG_DIR`](/docs/ru/env-vars#variables), указав каталог нужной учётной записи. У каждого каталога свои настройки, история сессий и вход claude.ai или API-ключ. Например, в Bash или Zsh добавьте этот псевдоним в `~/.bashrc` или `~/.zshrc`, чтобы `claude-work` использовал вашу рабочую учётную запись, а `claude` — личную:

42 42 

43```bash theme={null}43```bash theme={null}

44alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'44alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'

45```45```

46 46 

47После открытия нового терминала и первого запуска `claude-work` Claude Code проведет вас через вход и настройку для нового каталога. Отдельные каталоги не разделяют две учетные записи Claude Console [без API ключа](#sign-in-without-an-api-key), потому что Claude Code хранит этот тип входа вне каталога конфигурации.47Когда вы откроете новый терминал и впервые выполните `claude-work`, Claude Code проведёт вас через вход и настройку для нового каталога. Отдельные каталоги не разграничивают два входа в Claude Console [без API-ключа](#sign-in-without-an-api-key): такие входы не остаются независимыми друг от друга, поскольку Claude Code хранит этот тип входа вне каталога конфигурации.

48 48 

49<h2 id="set-up-team-authentication">49<h2 id="set-up-team-authentication">

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

Details

351}351}

352```352```

353 353 

354Получите отзыв ИИ о ваших пользовательских правилах `allow`, `soft_deny` и `hard_deny`:354Получите отзыв ИИ о ваших пользовательских записях `allow`, `soft_deny`, `hard_deny` и `environment`:

355 355 

356```bash theme={null}356```bash theme={null}

357claude auto-mode critique357claude auto-mode critique

chrome.md +1 −1

Details

343 343 

344| Ошибка | Причина | Решение |344| Ошибка | Причина | Решение |

345| - | - | - |345| - | - | - |

346| "Browser extension is not connected" | Хост собственного обмена сообщениями не может достичь расширения, или список разрешённых IP-адресов вашей организации отклоняет подключение к `bridge.claudeusercontent.com` | Перезагрузите Chrome и Claude Code, затем выполните `/chrome` для переподключения. Если ваша организация использует список разрешённых IP-адресов и ошибка сохраняется, см. [Списки разрешённых IP-адресов организации и исходящий трафик через прокси](/docs/ru/network-config#organization-ip-allowlists-and-proxy-egress) |346| "Browser extension is not connected" | Хост собственного обмена сообщениями не может достичь расширения, или список разрешённых IP-адресов вашей организации отклоняет подключение к `bridge.claudeusercontent.com` | Убедитесь, что в расширении выполнен вход в ту же учётную запись claude.ai, что и в Claude Code, перезагрузите Chrome и Claude Code, затем выполните `/chrome` для переподключения. Если ваша организация использует список разрешённых IP-адресов и ошибка сохраняется, см. [Списки разрешённых IP-адресов организации и исходящий трафик через прокси](/docs/ru/network-config#organization-ip-allowlists-and-proxy-egress) |

347| Расширение отображается как "Not detected" в `/chrome` | Расширение Chrome не установлено или отключено | Установите или включите расширение в `chrome://extensions` |347| Расширение отображается как "Not detected" в `/chrome` | Расширение Chrome не установлено или отключено | Установите или включите расширение в `chrome://extensions` |

348| "No tab available" | Claude попытался действовать до того, как вкладка была готова | Попросите Claude создать новую вкладку и повторить попытку |348| "No tab available" | Claude попытался действовать до того, как вкладка была готова | Попросите Claude создать новую вкладку и повторить попытку |

349| "Receiving end does not exist" | Service worker расширения перешёл в режим ожидания | Выполните `/chrome` и выберите "Reconnect extension" |349| "Receiving end does not exist" | Service worker расширения перешёл в режим ожидания | Выполните `/chrome` и выберите "Reconnect extension" |

Details

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

76| Claude Code v2.1.195 или позже | Подкоманда `claude gateway` и поток входа шлюза поставляются в v2.1.195. Более ранние общедоступные сборки их не включают. Как машина, запускающая сервер шлюза, так и машина каждого разработчика должны быть на v2.1.195 или позже; запустите `claude update`, чтобы получить последний выпуск. [Claude Platform on AWS upstream](/docs/ru/claude-apps-gateway-config#claude-platform-on-aws) требует Claude Code v2.1.198 или позже на сервере шлюза. |76| Claude Code v2.1.195 или позже | Подкоманда `claude gateway` и поток входа шлюза поставляются в v2.1.195. Более ранние общедоступные сборки их не включают. Как машина, запускающая сервер шлюза, так и машина каждого разработчика должны быть на v2.1.195 или позже; запустите `claude update`, чтобы получить последний выпуск. [Claude Platform on AWS upstream](/docs/ru/claude-apps-gateway-config#claude-platform-on-aws) требует Claude Code v2.1.198 или позже на сервере шлюза. |

77| Поставщик удостоверений OpenID Connect (OIDC) | Okta, Microsoft Entra ID, Google Workspace, Keycloak или Dex, или любой другой совместимый с OIDC IdP, такой как PingFederate. Шлюз запускает стандартное обнаружение OIDC и поток кода авторизации против него. SAML и LDAP не поддерживаются. |77| Поставщик удостоверений OpenID Connect (OIDC) | Okta, Microsoft Entra ID, Google Workspace, Keycloak или Dex, или любой другой совместимый с OIDC IdP, такой как PingFederate. Шлюз запускает стандартное обнаружение OIDC и поток кода авторизации против него. SAML и LDAP не поддерживаются. |

78| PostgreSQL 14 или позже | Поддерживает поток входа устройства, где обратный вызов браузера пишет, а опрашивающий CLI читает, плюс счётчики ограничения скорости. Любой управляемый Postgres работает, включая самый маленький уровень. Без настроенных ограничений расходов шлюз хранит несколько КБ краткосрочного состояния аутентификации; с [ограничениями расходов](/docs/ru/claude-apps-gateway-spend-limits) он также содержит долговечные таблицы расходов, аудита и идентификации, которые должны быть скопированы. TLS через `?sslmode=require` рекомендуется. |78| PostgreSQL 11 или позже | Обеспечивает работу потока входа устройства и счётчиков ограничения частоты запросов. Подойдёт управляемый сервис PostgreSQL, включая самый маленький уровень; см. [какие базы данных поддерживаются](/docs/ru/claude-apps-gateway-deploy#postgres). С [ограничениями расходов](/docs/ru/claude-apps-gateway-spend-limits) он также содержит долговечные таблицы расходов, аудита и идентификации, для которых следует создавать резервные копии. TLS через `?sslmode=require` рекомендуется. PostgreSQL 11, 12 и 13 требуют Claude Code v2.1.290 или позже на сервере шлюза. Проект PostgreSQL больше не поддерживает эти версии, поэтому по возможности используйте более новую. |

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

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

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


91 </Step>91 </Step>

92 92 

93 <Step title="Подготовьте базу данных PostgreSQL">93 <Step title="Подготовьте базу данных PostgreSQL">

94 Любой Postgres 14 или позже работает, включая самый маленький управляемый уровень. Шлюз запускает свои собственные миграции схемы при загрузке, поэтому пользователю базы данных нужны права для создания и изменения таблиц; см. [`store`](/docs/ru/claude-apps-gateway-config#store).94 Используйте PostgreSQL 11 или позже. Самого маленького управляемого уровня достаточно. Шлюз запускает свои собственные миграции схемы при загрузке, поэтому роли базы данных нужны права для создания и изменения таблиц; см. [`store`](/docs/ru/claude-apps-gateway-config#store).

95 </Step>95 </Step>

96 96 

97 <Step title="Напишите gateway.yaml">97 <Step title="Напишите gateway.yaml">

Details

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

159 159 

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

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

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

163 163 

164<h4 id="idp-requests-through-a-forward-proxy">164<h4 id="idp-requests-through-a-forward-proxy">

165 Запросы к IdP через прямой прокси165 Запросы к IdP через прямой прокси


227 227 

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

229| - | - | - |229| - | - | - |

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

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

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

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

Details

249 Postgres249 Postgres

250</h3>250</h3>

251 251 

252Шлюз хранит своё состояние в базе данных PostgreSQL:

253 

254* **База данных**: сам PostgreSQL, размещённый самостоятельно или управляемый, [минимальной версии](/docs/ru/claude-apps-gateway#prerequisites) или новее. Базы данных, которые лишь реализуют протокол Postgres, например распределённые SQL-базы данных, не поддерживаются.

255* **Адрес**: `store.postgres_url` принимает один хост. Если у базы данных несколько узлов, используйте адрес, стоящий перед ними, например эндпоинт вашего управляемого сервиса, балансировщик нагрузки или виртуальный IP. Установите [период благодати готовности](#readiness-grace-period) длиннее, чем занимает переключение при отказе.

256 

252Шлюз содержит пять таблиц данных плюс таблицу `_migrations`, все созданные его миграциями при загрузке:257Шлюз содержит пять таблиц данных плюс таблицу `_migrations`, все созданные его миграциями при загрузке:

253 258 

254| Таблица | Содержимое | Удержание |259| Таблица | Содержимое | Удержание |


396| CLI `/login`: `Could not resolve the configured HTTP proxy` | Имя хоста в `HTTPS_PROXY` или `HTTP_PROXY` не разрешается с машины разработчика, обычно потому что она не подключена к корпоративной сети | Попросите разработчика подключиться к вашей сети или VPN и повторить попытку, или исправьте URL прокси |401| CLI `/login`: `Could not resolve the configured HTTP proxy` | Имя хоста в `HTTPS_PROXY` или `HTTP_PROXY` не разрешается с машины разработчика, обычно потому что она не подключена к корпоративной сети | Попросите разработчика подключиться к вашей сети или VPN и повторить попытку, или исправьте URL прокси |

397| CLI `/login`: `Could not resolve gateway host <host>` | Машина не может разрешить внутреннее DNS-имя шлюза, обычно потому что она не в корпоративной сети | Попросите разработчика подключиться к вашей сети или VPN, затем повторите попытку `/login` |402| CLI `/login`: `Could not resolve gateway host <host>` | Машина не может разрешить внутреннее DNS-имя шлюза, обычно потому что она не в корпоративной сети | Попросите разработчика подключиться к вашей сети или VPN, затем повторите попытку `/login` |

398| Загрузка выходит с ошибкой валидации конфигурации, называющей `store.postgres_url` | Postgres не настроен; шлюз требует Postgres | Установите `store.postgres_url`. Для локальной разработки используйте одноразовый контейнер: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |403| Загрузка выходит с ошибкой валидации конфигурации, называющей `store.postgres_url` | Postgres не настроен; шлюз требует Postgres | Установите `store.postgres_url`. Для локальной разработки используйте одноразовый контейнер: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |

404| Загрузка выходит: `store.postgres_url in <path> is not a URL the gateway can read` или, в версиях до v2.1.290, просто `Invalid URL` или `URI error` | URL не удаётся разобрать, например потому что в нём указано более одного хоста или пароль содержит незакодированные `/`, `?`, `#` или `%` | Укажите [один хост](#postgres) и перенесите пароль в [`store.password`](/docs/ru/claude-apps-gateway-config#store) |

399| Загрузка выходит: `requires the native binary` | Запуск под Node вместо нативного бинарного файла | Установите Claude Code одним из [методов автономной установки](/docs/ru/setup) |405| Загрузка выходит: `requires the native binary` | Запуск под Node вместо нативного бинарного файла | Установите Claude Code одним из [методов автономной установки](/docs/ru/setup) |

400| Загрузка выходит с ошибкой обнаружения OIDC после `config.load` | `oidc.issuer` недоступен или цепочке TLS нет доверия | Проверьте, что издатель доступен из pod и обслуживает `/.well-known/openid-configuration`. Установите `ca_cert_pem` для приватной PKI. Если pod достигает IdP только через forward proxy, установите [`oidc.use_proxy: true`](/docs/ru/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); на версиях до v2.1.227 вместо этого предоставьте pod прямой маршрут к каждому эндпоинту IdP. Если pod также не может разрешить имя хоста IdP или прокси отказывает в `CONNECT` на IP-адрес, см. [Proxy-only egress](/docs/ru/claude-apps-gateway-config#proxy-only-egress), что требует v2.1.277 или позже. |406| Загрузка выходит с ошибкой обнаружения OIDC после `config.load` | `oidc.issuer` недоступен или цепочке TLS нет доверия | Проверьте, что издатель доступен из pod и обслуживает `/.well-known/openid-configuration`. Установите `ca_cert_pem` для приватной PKI. Если pod достигает IdP только через forward proxy, установите [`oidc.use_proxy: true`](/docs/ru/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); на версиях до v2.1.227 вместо этого предоставьте pod прямой маршрут к каждому эндпоинту IdP. Если pod также не может разрешить имя хоста IdP или прокси отказывает в `CONNECT` на IP-адрес, см. [Proxy-only egress](/docs/ru/claude-apps-gateway-config#proxy-only-egress), что требует v2.1.277 или позже. |

401| Загрузка выходит с ошибкой прав доступа Postgres | Роль базы данных не имеет прав DDL на своей схеме | Предоставьте роли `CREATE` на схему шлюза, чтобы она могла создавать и изменять свои таблицы при загрузке |407| Загрузка выходит с ошибкой прав доступа Postgres | Роль базы данных не имеет прав DDL на своей схеме | Предоставьте роли `CREATE` на схему шлюза, чтобы она могла создавать и изменять свои таблицы при загрузке |

402| Лог: `could not connect to Postgres at boot, attempt 1 of 3` | База данных ещё не была доступна, когда шлюз запустился, например на холодном экземпляре, чья сеть всё ещё поднимается | Если шлюз затем завершает загрузку, никаких действий не требуется. Когда база данных недоступна, шлюз пытается подключиться три раза, с интервалом в две секунды, перед выходом. Если он выходит с `could not connect to Postgres`, проверьте `store.postgres_url` и сетевой путь к базе данных. Если попытки завершаются по таймауту, а не отклоняются, поднимите [`store.connect_timeout_seconds`](/docs/ru/claude-apps-gateway-config#store), чтобы дать каждой больше времени. |408| Лог: `could not connect to Postgres at boot, attempt 1 of 3` | База данных ещё не была доступна, когда шлюз запустился, например на холодном экземпляре, чья сеть всё ещё поднимается | Если шлюз затем завершает загрузку, никаких действий не требуется. Когда база данных недоступна, шлюз пытается подключиться три раза, с интервалом в две секунды, перед выходом. Если он выходит с `could not connect to Postgres`, проверьте `store.postgres_url`, в том числе что в нём указан один хост, и сетевой путь к базе данных. Если попытки завершаются по таймауту, а не отклоняются, поднимите [`store.connect_timeout_seconds`](/docs/ru/claude-apps-gateway-config#store), чтобы дать каждой больше времени. |

403| `/oauth/callback` показывает "Sign-in could not be completed" | Домен email отклонён, валидация id\_token не удалась или `email_verified` явно `false`, что шлюз всегда отклоняет без возможности переопределения | Проверьте `allowed_email_domains` и что IdP возвращает проверенное утверждение `email`. Для `email_verified: false` исправьте проверку на стороне IdP. Если ваш IdP выдаёт email под другим именем утверждения, установите `oidc.email_claim`. |409| `/oauth/callback` показывает "Sign-in could not be completed" | Домен email отклонён, валидация id\_token не удалась или `email_verified` явно `false`, что шлюз всегда отклоняет без возможности переопределения | Проверьте `allowed_email_domains` и что IdP возвращает проверенное утверждение `email`. Для `email_verified: false` исправьте проверку на стороне IdP. Если ваш IdP выдаёт email под другим именем утверждения, установите `oidc.email_claim`. |

404| Лог: `token exchange failed request_id=<id>: id_token missing email claim` | IdP не включает `email` в id\_token по умолчанию. Это отклонение срабатывает только когда установлен `allowed_email_domains`; без него отсутствующий email создаёт сессию без email | Настройте IdP для выдачи `email` в id\_token. Okta: добавьте `email` к утверждениям ID-токена пользовательского сервера авторизации. Entra: добавьте `email` как опциональное утверждение в регистрации приложения. PingFederate: включите политику OpenID Connect, которая выдаёт `email`. Если IdP обслуживает `email` из эндпоинта userinfo, но не включает его в id\_token, как, например, сервер авторизации организации Okta, установите `oidc.userinfo_fallback: true`. |410| Лог: `token exchange failed request_id=<id>: id_token missing email claim` | IdP не включает `email` в id\_token по умолчанию. Это отклонение срабатывает только когда установлен `allowed_email_domains`; без него отсутствующий email создаёт сессию без email | Настройте IdP для выдачи `email` в id\_token. Okta: добавьте `email` к утверждениям ID-токена пользовательского сервера авторизации. Entra: добавьте `email` как опциональное утверждение в регистрации приложения. PingFederate: включите политику OpenID Connect, которая выдаёт `email`. Если IdP обслуживает `email` из эндпоинта userinfo, но не включает его в id\_token, как, например, сервер авторизации организации Okta, установите `oidc.userinfo_fallback: true`. |

405| Лог: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, и разработчики видят `Cloud gateway session expired` каждые `session.ttl_hours` | IdP принял refresh token, но не вернул вместе с ним id\_token, поэтому шлюз запросил утверждения пользователя у эндпоинта userinfo IdP. IdP отклонил там обновлённый access token. Шлюз отвечает `temporarily_unavailable`, поэтому Claude Code сохраняет refresh token, но не может обновить сессию. Версии шлюза до v2.1.260 логируют ту же строку без деталей `(at …)`. | Установите [`oidc.scope_on_refresh: true`](/docs/ru/claude-apps-gateway-config#oidc), доступно в шлюзе v2.1.260 или позже, чтобы запрос refresh снова запрашивал `openid`. Некоторые IdP, такие как Okta, возвращают id\_token при refresh только при явном запросе. На PingFederate вместо этого включите **Return ID Token On Refresh Grant** в разделе **Applications > OAuth > OpenID Connect Policy Management**. Ключ не изменяет поведение PingFederate. Для других IdP, которые всё ещё его опускают, проверьте, принимает ли эндпоинт userinfo access tokens, выданные при refresh. В качестве временного решения поднимите [`session.ttl_hours`](/docs/ru/claude-apps-gateway-config#session). См. [Identity provider setup](#identity-provider-setup) о компромиссе при deprovisioning. |411| Лог: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, и разработчики видят `Cloud gateway session expired` каждые `session.ttl_hours` | IdP принял refresh token, но не вернул вместе с ним id\_token, поэтому шлюз запросил утверждения пользователя у эндпоинта userinfo IdP. IdP отклонил там обновлённый access token. Шлюз отвечает `temporarily_unavailable`, поэтому Claude Code сохраняет refresh token, но не может обновить сессию. Версии шлюза до v2.1.260 логируют ту же строку без деталей `(at …)`. | Установите [`oidc.scope_on_refresh: true`](/docs/ru/claude-apps-gateway-config#oidc), доступно в шлюзе v2.1.260 или позже, чтобы запрос refresh снова запрашивал `openid`. Некоторые IdP, такие как Okta, возвращают id\_token при refresh только при явном запросе. На PingFederate вместо этого включите **Return ID Token On Refresh Grant** в разделе **Applications > OAuth > OpenID Connect Policy Management**. Ключ не изменяет поведение PingFederate. Для других IdP, которые всё ещё его опускают, проверьте, принимает ли эндпоинт userinfo access tokens, выданные при refresh. В качестве временного решения поднимите [`session.ttl_hours`](/docs/ru/claude-apps-gateway-config#session). См. [Identity provider setup](#identity-provider-setup) о компромиссе при deprovisioning. |

Details

161 --policy-name read-gateway-secrets --policy-document file://secrets-read.json161 --policy-name read-gateway-secrets --policy-document file://secrets-read.json

162 ```162 ```

163 163 

164 Политика называет один ARN на секрет, а не простой подстановочный знак `gateway-*`, который в общей учётной записи также совпадал бы с несвязанными секретами; конечный `-??????` совпадает ровно с случайным суффиксом из шести символов, который Secrets Manager добавляет к ARN каждого секрета. Конечный `-*` был бы простым глобусом префикса и также совпадал бы с более длинными именами, такими как `gateway-postgres-url-prod`.164 Политика называет один ARN на секрет, а не простой подстановочный знак `gateway-*`, который в общей учётной записи также совпадал бы с несвязанными секретами; конечный `-??????` совпадает ровно с случайным суффиксом из шести символов, который Secrets Manager добавляет к ARN каждого секрета. Конечный `-*` был бы простым глобом префикса и также совпадал бы с более длинными именами, такими как `gateway-postgres-url-prod`.

165 165 

166 Политика IAM предоставляет gateway разрешение на вызов Bedrock, и Bedrock включает доступ к модели по умолчанию в коммерческих регионах. Оставшиеся ворота на уровне учётной записи — это одноразовая форма использования Anthropic: если никто в вашей учётной записи её не отправил, откройте [консоль Amazon Bedrock](https://console.aws.amazon.com/bedrock/), выберите модель Anthropic из каталога моделей и заполните форму. Доступ предоставляется сразу после отправки; см. [Claude Code на Amazon Bedrock](/docs/ru/amazon-bedrock#1-submit-use-case-details) для формы AWS Organizations и разрешений IAM, которые нужны отправителю.166 Политика IAM предоставляет gateway разрешение на вызов Bedrock, и Bedrock включает доступ к модели по умолчанию в коммерческих регионах. Оставшиеся ворота на уровне учётной записи — это одноразовая форма использования Anthropic: если никто в вашей учётной записи её не отправил, откройте [консоль Amazon Bedrock](https://console.aws.amazon.com/bedrock/), выберите модель Anthropic из каталога моделей и заполните форму. Доступ предоставляется сразу после отправки; см. [Claude Code на Amazon Bedrock](/docs/ru/amazon-bedrock#1-submit-use-case-details) для формы AWS Organizations и разрешений IAM, которые нужны отправителю.

167 167 


169 </Step>169 </Step>

170 170 

171 <Step title="Подготовьте Amazon RDS для PostgreSQL">171 <Step title="Подготовьте Amazon RDS для PostgreSQL">

172 Экземпляр работает в приватных подсетях без публичного адреса и с включённым шифрованием хранилища. Версия движка закреплена на Postgres 16, что удовлетворяет поддерживаемому минимуму gateway PostgreSQL 14 и гарантирует, что семейство группы параметров ниже совпадает с экземпляром.172 Экземпляр работает на Postgres 16 в приватных подсетях без публичного адреса и с включённым шифрованием хранилища.

173 173 

174 Сначала создайте группу подсетей, которая размещает базу данных в приватных подсетях, и группу параметров с `rds.force_ssl=1`, чтобы сервер отклонял открытые соединения. Версия движка закреплена один раз, потому что семейство группы параметров должно совпадать с основной версией движка, которую запускает экземпляр:174 Сначала создайте группу подсетей, которая размещает базу данных в приватных подсетях, и группу параметров с `rds.force_ssl=1`, чтобы сервер отклонял открытые соединения. Версия движка закреплена один раз, потому что семейство группы параметров должно совпадать с основной версией движка, которую запускает экземпляр:

175 175 


203 203 

204 Буквальный аргумент `--master-user-password` виден в таблице процессов и в журналах аудита/EDR во время выполнения команды, то же самое воздействие, которое охватывает примечание шага секретов. На общем или контролируемом хосте передайте пароль через `--cli-input-json` из файла `0600` вместо этого, так же как это делает `setup.sh` пакета.204 Буквальный аргумент `--master-user-password` виден в таблице процессов и в журналах аудита/EDR во время выполнения команды, то же самое воздействие, которое охватывает примечание шага секретов. На общем или контролируемом хосте передайте пароль через `--cli-input-json` из файла `0600` вместо этого, так же как это делает `setup.sh` пакета.

205 205 

206 Дождитесь, пока экземпляр запустится, что может занять несколько минут, затем прочитайте его приватную конечную точку и соберите строку подключения, которую будет использовать gateway:206 Дождитесь, пока экземпляр запустится, что может занять несколько минут, затем прочитайте его приватный эндпоинт и соберите строку подключения, которую будет использовать gateway:

207 207 

208 ```bash theme={null}208 ```bash theme={null}

209 aws rds wait db-instance-available --db-instance-identifier claude-gateway-db209 aws rds wait db-instance-available --db-instance-identifier claude-gateway-db


214 214 

215 `sslmode=verify-full` заставляет gateway проверять цепь сертификата сервера RDS и имя хоста, а не только шифровать. Якорь доверия — это [пакет сертификатов AWS RDS](https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem), который шаг сборки образа ниже копирует в `/etc/claude/rds-global-bundle.pem` и доверяет через `NODE_EXTRA_CA_CERTS`. Не добавляйте параметр `sslrootcert=` в стиле libpq к URL: драйвер gateway читает только `sslmode` из строки запроса и передал бы `sslrootcert` Postgres как параметр запуска, который сервер отклоняет.215 `sslmode=verify-full` заставляет gateway проверять цепь сертификата сервера RDS и имя хоста, а не только шифровать. Якорь доверия — это [пакет сертификатов AWS RDS](https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem), который шаг сборки образа ниже копирует в `/etc/claude/rds-global-bundle.pem` и доверяет через `NODE_EXTRA_CA_CERTS`. Не добавляйте параметр `sslrootcert=` в стиле libpq к URL: драйвер gateway читает только `sslmode` из строки запроса и передал бы `sslrootcert` Postgres как параметр запуска, который сервер отклоняет.

216 216 

217 Сервис ECS или поды EKS должны работать в этом VPC, чтобы они могли достичь приватной конечной точки экземпляра, и группа безопасности `claude-gateway-db` допускает только группу безопасности gateway.217 Сервис ECS или поды EKS должны работать в этом VPC, чтобы они могли достичь приватного эндпоинта экземпляра, и группа безопасности `claude-gateway-db` допускает только группу безопасности gateway.

218 </Step>218 </Step>

219 219 

220 <Step title="Напишите gateway.yaml">220 <Step title="Напишите gateway.yaml">


223 Два поля `listen` описывают, что находится перед gateway:223 Два поля `listen` описывают, что находится перед gateway:

224 224 

225 * `public_url`: внешний источник `https://`, требуется для любого привязывания, отличного от loopback; см. [справочник `listen`](/docs/ru/claude-apps-gateway-config#listen). Gateway строит `redirect_uri` IdP и его документ обнаружения только из этого значения, никогда из заголовков `X-Forwarded-*`.225 * `public_url`: внешний источник `https://`, требуется для любого привязывания, отличного от loopback; см. [справочник `listen`](/docs/ru/claude-apps-gateway-config#listen). Gateway строит `redirect_uri` IdP и его документ обнаружения только из этого значения, никогда из заголовков `X-Forwarded-*`.

226 * `trusted_proxies`: диапазоны источников фронтенда. Gateway соблюдает `X-Forwarded-For` только когда TCP-пир находится в этом списке, затем проходит цепь мимо доверенных переходов, поэтому ограничения скорости входа на IP и события аудита записывают IP разработчиков вместо load balancer.226 * `trusted_proxies`: диапазоны источников фронтенда. Gateway соблюдает `X-Forwarded-For` только когда TCP-пир находится в этом списке, затем проходит цепь мимо доверенных переходов, поэтому ограничения частоты запросов на вход по IP и события аудита записывают IP разработчиков вместо load balancer.

227 227 

228 На обоих треках фронтенд — это внутренний ALB, создан ли он напрямую или AWS Load Balancer Controller, и узлы ALB берут адреса из подсетей, к которым он присоединён, поэтому установите `trusted_proxies` на CIDR этих подсетей. Это доверяет каждому хосту в этих подсетях как прокси. Не допускайте, чтобы источник входа ALB, ваша корпоративная CIDR, перекрывался с ними, и не делитесь подсетями с ненадёжными рабочими нагрузками, которые могли бы подделать IP клиентов через `X-Forwarded-For`.228 На обоих треках фронтенд — это внутренний ALB, создан ли он напрямую или AWS Load Balancer Controller, и узлы ALB берут адреса из подсетей, к которым он присоединён, поэтому установите `trusted_proxies` на CIDR этих подсетей. Это доверяет каждому хосту в этих подсетях как прокси. Не допускайте, чтобы источник входа ALB, ваша корпоративная CIDR, перекрывался с ними, и не делитесь подсетями с ненадёжными рабочими нагрузками, которые могли бы подделать IP клиентов через `X-Forwarded-For`.

229 229 

230 Атрибут сохранения клиентского порта ALB, `routing.http.xff_client_port.enabled`, может остаться в любом параметре: с ним включённым, ALB записывает клиента как `203.0.113.7:54321` или `[2001:db8::1]:54321`, и gateway читает оба с опущенным портом.230 Атрибут сохранения клиентского порта ALB, `routing.http.xff_client_port.enabled`, может остаться в любой настройке: с ним включённым, ALB записывает клиента как `203.0.113.7:54321` или `[2001:db8::1]:54321`, и gateway читает оба с опущенным портом.

231 231 

232 ```yaml gateway.yaml theme={null}232 ```yaml gateway.yaml theme={null}

233 listen:233 listen:


244 # Сервер авторизации организации Okta возвращает тонкий id_token, который опускает244 # Сервер авторизации организации Okta возвращает тонкий id_token, который опускает

245 # email и groups; gateway заполняет их из /userinfo.245 # email и groups; gateway заполняет их из /userinfo.

246 userinfo_fallback: true246 userinfo_fallback: true

247 # Okta выдаёт groups только когда запрашивается область `groups` и247 # Okta выдаёт groups только когда запрашивается scope `groups` и

248 # фильтр утверждения groups приложения их позволяет.248 # фильтр утверждения groups приложения их позволяет.

249 scopes: [openid, profile, email, offline_access, groups]249 scopes: [openid, profile, email, offline_access, groups]

250 250 


267 ```267 ```

268 268 

269 <Note>269 <Note>

270 Только блок `oidc` специфичен для Okta. Чтобы использовать Microsoft Entra ID вместо этого, установите `issuer` на `https://login.microsoftonline.com/<tenant-id>/v2.0`, удалите `userinfo_fallback` и область `groups`, и обратите внимание, что Entra выдаёт Object ID группы, а не имена, поэтому [`managed.policies`](/docs/ru/claude-apps-gateway-config#managed) должны совпадать на GUID, или на App Roles с `oidc.groups_claim: roles`. См. [Настройка поставщика идентификации](/docs/ru/claude-apps-gateway-deploy#identity-provider-setup).270 Только блок `oidc` специфичен для Okta. Чтобы использовать Microsoft Entra ID вместо этого, установите `issuer` на `https://login.microsoftonline.com/<tenant-id>/v2.0`, удалите `userinfo_fallback` и scope `groups`, и обратите внимание, что Entra выдаёт Object ID группы, а не имена, поэтому [`managed.policies`](/docs/ru/claude-apps-gateway-config#managed) должны совпадать на GUID, или на App Roles с `oidc.groups_claim: roles`. См. [Настройка поставщика идентификации](/docs/ru/claude-apps-gateway-deploy#identity-provider-setup).

271 </Note>271 </Note>

272 </Step>272 </Step>

273 273 


289 Буквальные аргументы `--secret-string` видны в таблице процессов и в журналах аудита/EDR во время выполнения каждой команды. На общем или контролируемом хосте поместите значение в файл `0600` и передайте `--secret-string file://<path>` вместо этого. `setup.sh` пакета держит значения секретов вне argv процесса так же, передавая временные файлы `0600` в `--cli-input-json`.289 Буквальные аргументы `--secret-string` видны в таблице процессов и в журналах аудита/EDR во время выполнения каждой команды. На общем или контролируемом хосте поместите значение в файл `0600` и передайте `--secret-string file://<path>` вместо этого. `setup.sh` пакета держит значения секретов вне argv процесса так же, передавая временные файлы `0600` в `--cli-input-json`.

290 </Note>290 </Note>

291 291 

292 В отличие от секретов, сам `gateway.yaml` не содержит значений секретов, потому что каждое учётное данные разрешается при загрузке через [`${VAR}` или `${file:...}` расширение](/docs/ru/claude-apps-gateway-config#secret-expansion). Как всё достигает контейнера, отличается по треку:292 В отличие от секретов, сам `gateway.yaml` не содержит значений секретов, потому что все учётные данные разрешаются при загрузке через [`${VAR}` или `${file:...}` расширение](/docs/ru/claude-apps-gateway-config#secret-expansion). Как всё достигает контейнера, отличается по треку:

293 293 

294 * На ECS, сборка следующего шага копирует `gateway.yaml` в образ в `/etc/claude/gateway.yaml`, и определение задачи внедряет три секрета как переменные окружения через его поле `secrets`, поэтому YAML ссылается на `${GATEWAY_JWT_SECRET}`, `${OIDC_CLIENT_SECRET}` и `${GATEWAY_POSTGRES_URL}`.294 * На ECS, сборка следующего шага копирует `gateway.yaml` в образ в `/etc/claude/gateway.yaml`, и определение задачи внедряет три секрета как переменные окружения через его поле `secrets`, поэтому YAML ссылается на `${GATEWAY_JWT_SECRET}`, `${OIDC_CLIENT_SECRET}` и `${GATEWAY_POSTGRES_URL}`.

295 * На EKS, смонтируйте `gateway.yaml` из ConfigMap и секреты как файлы в `/secrets`, на которые ссылаются как `${file:/secrets/...}`. Получите Kubernetes Secrets из Secrets Manager с External Secrets Operator или поставщиком AWS драйвера Secrets Store CSI, или создайте их напрямую с помощью `kubectl`.295 * На EKS, смонтируйте `gateway.yaml` из ConfigMap и секреты как файлы в `/secrets`, на которые ссылаются как `${file:/secrets/...}`. Получите Kubernetes Secrets из Secrets Manager с External Secrets Operator или поставщиком AWS драйвера Secrets Store CSI, или создайте их напрямую с помощью `kubectl`.


298 <Step title="Соберите и отправьте образ в Amazon ECR">298 <Step title="Соберите и отправьте образ в Amazon ECR">

299 Соберите образ согласно [требованиям образа контейнера](/docs/ru/claude-apps-gateway-deploy#container-image), разместив двоичный файл `linux-x64` glibc в `./claude` в контексте сборки. Напишите свой собственный Dockerfile согласно этим требованиям или начните с [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/examples/gateway/aws/Dockerfile) пакета, который копирует заполненный `gateway.yaml` из предыдущих шагов в образ в `/etc/claude/gateway.yaml`. На ECS эта встроенная копия — это то, как конфигурация достигает контейнера, поэтому сборка идёт после написания файла. Трек EKS вместо этого монтирует `gateway.yaml` из ConfigMap при развёртывании, поэтому встроенная копия там не используется.299 Соберите образ согласно [требованиям образа контейнера](/docs/ru/claude-apps-gateway-deploy#container-image), разместив двоичный файл `linux-x64` glibc в `./claude` в контексте сборки. Напишите свой собственный Dockerfile согласно этим требованиям или начните с [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/examples/gateway/aws/Dockerfile) пакета, который копирует заполненный `gateway.yaml` из предыдущих шагов в образ в `/etc/claude/gateway.yaml`. На ECS эта встроенная копия — это то, как конфигурация достигает контейнера, поэтому сборка идёт после написания файла. Трек EKS вместо этого монтирует `gateway.yaml` из ConfigMap при развёртывании, поэтому встроенная копия там не используется.

300 300 

301 Образ также содержит пакет сертификатов AWS RDS как якорь доверия для `sslmode=verify-full` строки подключения, поэтому загрузите его в контекст сборки сначала. AWS ротирует пакет (новые региональные CA добавляются), поэтому загружайте его при каждой сборке, а не закрепляйте контрольную сумму или фиксируйте её:301 Образ также содержит пакет сертификатов AWS RDS как якорь доверия для `sslmode=verify-full` строки подключения, поэтому загрузите его в контекст сборки сначала. AWS ротирует пакет (новые региональные CA добавляются), поэтому загружайте его при каждой сборке, а не закрепляйте контрольную сумму или фиксируйте его:

302 302 

303 ```bash theme={null}303 ```bash theme={null}

304 curl -fL --proto '=https' -o rds-global-bundle.pem \304 curl -fL --proto '=https' -o rds-global-bundle.pem \

305 https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem305 https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem

306 ```306 ```

307 307 

308 Требования образа контейнера не охватывают пакет, поэтому если вы напишете свой собственный Dockerfile, добавьте две строки, которые копируют и доверяют ему; `Dockerfile` пакета уже включает оба:308 Требования образа контейнера не охватывают пакет, поэтому если вы напишете свой собственный Dockerfile, добавьте две строки, которые копируют и доверяют ему; `Dockerfile` пакета уже включает обе:

309 309 

310 ```dockerfile theme={null}310 ```dockerfile theme={null}

311 COPY rds-global-bundle.pem /etc/claude/rds-global-bundle.pem311 COPY rds-global-bundle.pem /etc/claude/rds-global-bundle.pem

312 ENV NODE_EXTRA_CA_CERTS=/etc/claude/rds-global-bundle.pem312 ENV NODE_EXTRA_CA_CERTS=/etc/claude/rds-global-bundle.pem

313 ```313 ```

314 314 

315 Создайте репозиторий ECR и подпишите Docker в него. Неизменяемые теги означают, что тег `<version>`, который закрепляет шаг развёртывания, не может позже молча переуказываться на другой образ:315 Создайте репозиторий ECR и выполните вход Docker в него. Неизменяемые теги означают, что тег `<version>`, который закрепляет шаг развёртывания, не может позже молча переуказываться на другой образ:

316 316 

317 ```bash theme={null}317 ```bash theme={null}

318 aws ecr create-repository --repository-name claude-gateway \318 aws ecr create-repository --repository-name claude-gateway \


401 401 

402 Добавьте слушатель HTTPS. `--ssl-policy` закрепляет современный минимум TLS, так как его опущение возвращается к устаревшему значению по умолчанию `ELBSecurityPolicy-2016-08`, которое всё ещё принимает TLS 1.0/1.1.402 Добавьте слушатель HTTPS. `--ssl-policy` закрепляет современный минимум TLS, так как его опущение возвращается к устаревшему значению по умолчанию `ELBSecurityPolicy-2016-08`, которое всё ещё принимает TLS 1.0/1.1.

403 403 

404 ALB закрывает соединение после 60 секунд без данных по умолчанию. Keepalive пинги gateway держат потоки внутри этого значения по умолчанию, поэтому повышение времени ожидания добавляет запас выше кадра пинга; строка [Troubleshooting](#troubleshooting) на разорванных потоках охватывает механизм и более старые gateway. Команды ниже добавляют слушатель и повышают время ожидания:404 ALB закрывает соединение после 60 секунд без данных по умолчанию. Keepalive пинги gateway держат потоки внутри этого значения по умолчанию, поэтому повышение таймаута добавляет запас выше частоты пингов; строка [Устранение неполадок](#troubleshooting) о разорванных потоках охватывает механизм и более старые gateway. Команды ниже добавляют слушатель и повышают таймаут:

405 405 

406 ```bash theme={null}406 ```bash theme={null}

407 aws elbv2 create-listener --load-balancer-arn "$ALB_ARN" \407 aws elbv2 create-listener --load-balancer-arn "$ALB_ARN" \


414 --attributes Key=idle_timeout.timeout_seconds,Value=3600414 --attributes Key=idle_timeout.timeout_seconds,Value=3600

415 ```415 ```

416 416 

417 Создайте сервис. Выключатель развёртывания откатывает развёртывание, чьи задачи продолжают отказывать, из-за плохого образа или неустойчивой конфигурации, обратно к последнему стабильному состоянию вместо перезапуска отказывающих задач вечно:417 Создайте сервис. Выключатель развёртывания откатывает развёртывание, чьи задачи продолжают отказывать, из-за плохого образа или незагружаемой конфигурации, обратно к последнему стабильному состоянию вместо перезапуска отказывающих задач вечно:

418 418 

419 ```bash theme={null}419 ```bash theme={null}

420 aws ecs create-service --cluster claude-gateway --service-name claude-gateway \420 aws ecs create-service --cluster claude-gateway --service-name claude-gateway \


425 --load-balancers "targetGroupArn=$TG_ARN,containerName=gateway,containerPort=8080"425 --load-balancers "targetGroupArn=$TG_ARN,containerName=gateway,containerPort=8080"

426 ```426 ```

427 427 

428 Период благодати в 60 секунд даёт холодной задаче время на извлечение образа, подключение к хранилищу и ответ на первую проверку здоровья перед тем, как ECS начнёт считать отказы против развёртывания. Проверка здоровья целевой группы на `GET /readyz` проверяет, что хранилище доступно, поэтому задача, которая не может достичь Postgres, никогда не входит в ротацию. Чтобы держать задачи проходящими проверку через короткий сбой базы данных, такой как отказ RDS, установите `store.readiness_grace_seconds`, как описано в [Поведение при сбое](/docs/ru/claude-apps-gateway-deploy#outage-behavior), которое также охватывает альтернативу `/healthz`.428 Период благодати в 60 секунд даёт холодной задаче время на извлечение образа, подключение к хранилищу и ответ на первую проверку здоровья перед тем, как ECS начнёт считать отказы против развёртывания.

429 429 

430 Задачи работают в приватных подсетях без публичного IP, поэтому весь исходящий трафик (в Bedrock, ваш IdP, Secrets Manager, ECR и CloudWatch Logs) проходит через NAT gateway. Чтобы держать трафик Bedrock вне публичного пути, создайте интерфейсную конечную точку VPC `bedrock-runtime` и укажите `base_url` upstream на неё, как показано в [справочнике upstream Bedrock](/docs/ru/claude-apps-gateway-config#amazon-bedrock); IdP всё ещё нуждается в исходящем доступе в интернет.430 Проверка здоровья целевой группы на `GET /readyz` проверяет, что хранилище доступно, поэтому задача, которая не может достичь Postgres, никогда не входит в ротацию. Чтобы держать задачи проходящими проверку через короткий сбой базы данных, такой как отказ RDS, установите `store.readiness_grace_seconds`, как описано в [Поведение при сбое](/docs/ru/claude-apps-gateway-deploy#outage-behavior), которое также охватывает альтернативу `/healthz`.

431 

432 Задачи работают в приватных подсетях без публичного IP, поэтому весь исходящий трафик (в Bedrock, ваш IdP, Secrets Manager, ECR и CloudWatch Logs) проходит через NAT gateway. Чтобы держать трафик Bedrock вне публичного пути, создайте интерфейсный эндпоинт VPC `bedrock-runtime` и укажите `base_url` upstream на него, как показано в [справочнике upstream Bedrock](/docs/ru/claude-apps-gateway-config#amazon-bedrock); IdP всё ещё нуждается в исходящем доступе в интернет.

431 433 

432 Завершите, дав разработчикам приватно разрешаемое имя хоста: в приватной зоне Route 53 создайте псевдоним внутреннего имени DNS gateway на ALB и установите `listen.public_url` на это имя хоста. Собственное имя `*.elb.amazonaws.com` ALB разрешается на приватные адреса на внутреннем ALB, но оно не может нести ваш сертификат ACM, поэтому используйте своё имя.434 Завершите, дав разработчикам приватно разрешаемое имя хоста: в приватной зоне Route 53 создайте псевдоним внутреннего имени DNS gateway на ALB и установите `listen.public_url` на это имя хоста. Собственное имя `*.elb.amazonaws.com` ALB разрешается на приватные адреса на внутреннем ALB, но оно не может нести ваш сертификат ACM, поэтому используйте своё имя.

433 435 

434 Обновите URI перенаправления авторизованного клиента OAuth на `<public_url>/oauth/callback` перед первым входом. После изменения `public_url`, пересоберите и отправьте образ под новым тегом, зарегистрируйте новую редакцию определения задачи и переразвёртывайте. На ECS параметр живёт в встроенном `gateway.yaml` образа, и gateway строит свой публичный источник только из этого параметра, игнорируя `X-Forwarded-Host` и `X-Forwarded-Proto`. `X-Forwarded-For` соблюдается для IP клиентов только когда установлен `listen.trusted_proxies`.436 Обновите URI перенаправления авторизованного клиента OAuth на `<public_url>/oauth/callback` перед первым входом. После изменения `public_url`, пересоберите и отправьте образ под новым тегом, зарегистрируйте новую редакцию определения задачи и переразвёртывайте. На ECS настройка живёт во встроенном `gateway.yaml` образа, и gateway строит свой публичный источник только из этой настройки, игнорируя `X-Forwarded-Host` и `X-Forwarded-Proto`. `X-Forwarded-For` соблюдается для IP клиентов только когда установлен `listen.trusted_proxies`.

435 </Tab>437 </Tab>

436 438 

437 <Tab title="EKS">439 <Tab title="EKS">

438 Этот трек нуждается в установленных `kubectl` и `eksctl` локально, и существующем кластере EKS с поставщиком IAM OIDC и установленным AWS Load Balancer Controller. Кластер должен быть на `$VPC_ID`, чтобы поды могли достичь приватной конечной точки RDS, и группа безопасности `claude-gateway-db` должна допускать группу безопасности пода или узла кластера вместо `$GW_SG`.440 Этот трек нуждается в установленных `kubectl` и `eksctl` локально, и существующем кластере EKS с поставщиком IAM OIDC и установленным AWS Load Balancer Controller. Кластер должен быть на `$VPC_ID`, чтобы поды могли достичь приватного эндпоинта RDS, и группа безопасности `claude-gateway-db` должна допускать группу безопасности пода или узла кластера вместо `$GW_SG`.

439 441 

440 На EKS gateway получает свои учётные данные Bedrock через IRSA, а не роли ECS. Политика доверия `ecs-tasks.amazonaws.com` из шага IAM не применяется здесь; IRSA нуждается в роли, чья политика доверия федерирует на поставщика OIDC кластера, ограниченном `system:serviceaccount:claude-gateway:gateway`. `eksctl create iamserviceaccount` создаёт эту роль, присоединяет политики и аннотирует учётную запись сервиса Kubernetes с ARN роли в один шаг. Превратите два документа политики из шага IAM в управляемые политики, которые он может присоединить:442 На EKS gateway получает свои учётные данные Bedrock через IRSA, а не роли ECS. Политика доверия `ecs-tasks.amazonaws.com` из шага IAM не применяется здесь; IRSA нуждается в роли, чья политика доверия федерирует на поставщика OIDC кластера, ограниченной `system:serviceaccount:claude-gateway:gateway`. `eksctl create iamserviceaccount` создаёт эту роль, присоединяет политики и аннотирует учётную запись сервиса Kubernetes с ARN роли в один шаг. Превратите два документа политики из шага IAM в управляемые политики, которые он может присоединить:

441 443 

442 ```bash theme={null}444 ```bash theme={null}

443 BEDROCK_POLICY_ARN="$(aws iam create-policy --policy-name claude-gateway-bedrock-invoke \445 BEDROCK_POLICY_ARN="$(aws iam create-policy --policy-name claude-gateway-bedrock-invoke \


464 Для фронтенда, Ingress, управляемый AWS Load Balancer Controller, предусматривает внутренний ALB. Аннотируйте его с:466 Для фронтенда, Ingress, управляемый AWS Load Balancer Controller, предусматривает внутренний ALB. Аннотируйте его с:

465 467 

466 * `alb.ingress.kubernetes.io/scheme: internal` и `alb.ingress.kubernetes.io/target-type: ip`468 * `alb.ingress.kubernetes.io/scheme: internal` и `alb.ingress.kubernetes.io/target-type: ip`

467 * `alb.ingress.kubernetes.io/ip-address-type: ipv4`, поэтому записи AAAA общественного диапазона не публикуются для проверки приватной сети `/login` [private-network check](/docs/ru/claude-apps-gateway#prerequisites) отклонить469 * `alb.ingress.kubernetes.io/ip-address-type: ipv4`, чтобы не публиковались записи AAAA общественного диапазона, которые [проверка приватной сети](/docs/ru/claude-apps-gateway#prerequisites) `/login` отклонила бы

468 * `alb.ingress.kubernetes.io/inbound-cidrs: <your-corporate-cidr>`, поэтому контроллер-управляемая группа безопасности фронтенда допускает только вашу корпоративную сеть вместо значения по умолчанию `0.0.0.0/0`470 * `alb.ingress.kubernetes.io/inbound-cidrs: <your-corporate-cidr>`, поэтому контроллер-управляемая группа безопасности фронтенда допускает только вашу корпоративную сеть вместо значения по умолчанию `0.0.0.0/0`

469 * `alb.ingress.kubernetes.io/certificate-arn` с сертификатом ACM471 * `alb.ingress.kubernetes.io/certificate-arn` с сертификатом ACM

470 * `alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06`, поэтому слушатель не возвращается к устаревшей политике по умолчанию, которая принимает TLS 1.0 и 1.1472 * `alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06`, поэтому слушатель не возвращается к устаревшей политике по умолчанию, которая принимает TLS 1.0 и 1.1

471 * `alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds=3600`, запас выше keepalive потоков gateway; см. [Troubleshooting](#troubleshooting)473 * `alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds=3600`, запас выше keepalive потоковой передачи gateway; см. [Устранение неполадок](#troubleshooting)

472 474 

473 С IRSA, AWS SDK читает спроецированный токен учётной записи сервиса и обменивает его с AWS STS, поэтому под никогда не нуждается в сервисе метаданных экземпляра EC2; NetworkPolicy исходящего трафика может блокировать `169.254.169.254` для подов gateway. Проблема с лимитом переходов узла в [Troubleshooting](#troubleshooting) ниже применяется только к кластерам, которые пропускают IRSA и полагаются на роли экземпляра узла.475 С IRSA, AWS SDK читает спроецированный токен учётной записи сервиса и обменивает его с AWS STS, поэтому под никогда не нуждается в сервисе метаданных экземпляра EC2; NetworkPolicy исходящего трафика может блокировать `169.254.169.254` для подов gateway. Проблема с лимитом переходов узла в разделе [Устранение неполадок](#troubleshooting) ниже применяется только к кластерам, которые пропускают IRSA и полагаются на роли экземпляра узла.

474 </Tab>476 </Tab>

475 </Tabs>477 </Tabs>

476 </Step>478 </Step>

477 479 

478 <Step title="Отправьте URL gateway на машины разработчиков">480 <Step title="Отправьте URL gateway на машины разработчиков">

479 Gateway теперь работает, но разработчики не могут достичь его из `/login` до тех пор, пока URL gateway не будет на их машинах. Установите `forceLoginMethod` и `forceLoginGatewayUrl` в [файле управляемых параметров](/docs/ru/claude-apps-gateway#set-the-gateway-url), который вы развёртываете на каждом устройстве через MDM. Нет опции gateway в средстве выбора входа для разработчика, чтобы выбрать вручную.481 Gateway теперь работает, но разработчики не могут достичь его из `/login` до тех пор, пока URL gateway не будет на их машинах. Установите `forceLoginMethod` и `forceLoginGatewayUrl` в [файле управляемых настроек](/docs/ru/claude-apps-gateway#set-the-gateway-url), который вы развёртываете на каждом устройстве через MDM. Нет опции gateway в средстве выбора входа для разработчика, чтобы выбрать вручную.

480 </Step>482 </Step>

481</Steps>483</Steps>

482 484 

Details

416* **Изолированные виртуальные машины**: каждая сессия запускается в изолированной, управляемой Anthropic виртуальной машине. Сессии, которые ваша организация маршрутизирует в [самостоятельно размещённое окружение](/docs/ru/self-hosted-environments), запускаются на вашей собственной инфраструктуре вместо этого, где изоляция — это ответственность вашего развёртывания416* **Изолированные виртуальные машины**: каждая сессия запускается в изолированной, управляемой Anthropic виртуальной машине. Сессии, которые ваша организация маршрутизирует в [самостоятельно размещённое окружение](/docs/ru/self-hosted-environments), запускаются на вашей собственной инфраструктуре вместо этого, где изоляция — это ответственность вашего развёртывания

417* <span id="default-allowed-domains" />**Элементы управления сетевым доступом**: в окружениях, размещённых Anthropic, сетевой доступ ограничен по умолчанию и может быть отключен. См. [Сетевой доступ](/docs/ru/cloud-environments#network-access) для уровней доступа, [доменов, разрешённых по умолчанию](/docs/ru/cloud-environments#default-allowed-domains), и трафика, который не проходит через список разрешений. В самостоятельно размещённом окружении вы ограничиваете исходящий трафик сессии на вашей собственной границе сети. При запуске с отключённым сетевым доступом Claude Code всё ещё может общаться с API Anthropic, что может позволить данным выйти из виртуальной машины.417* <span id="default-allowed-domains" />**Элементы управления сетевым доступом**: в окружениях, размещённых Anthropic, сетевой доступ ограничен по умолчанию и может быть отключен. См. [Сетевой доступ](/docs/ru/cloud-environments#network-access) для уровней доступа, [доменов, разрешённых по умолчанию](/docs/ru/cloud-environments#default-allowed-domains), и трафика, который не проходит через список разрешений. В самостоятельно размещённом окружении вы ограничиваете исходящий трафик сессии на вашей собственной границе сети. При запуске с отключённым сетевым доступом Claude Code всё ещё может общаться с API Anthropic, что может позволить данным выйти из виртуальной машины.

418* **Защита учётных данных**: в окружениях, размещённых Anthropic, учётные данные git и ключи подписи остаются вне песочницы, и прокси аутентифицирует от имени сессии с ограниченными учётными данными. В самостоятельно размещённом окружении ваше развёртывание предоставляет учётные данные git; см. [Configure git](/docs/ru/self-hosted-environments-deploy#configure-git)418* **Защита учётных данных**: в окружениях, размещённых Anthropic, учётные данные git и ключи подписи остаются вне песочницы, и прокси аутентифицирует от имени сессии с ограниченными учётными данными. В самостоятельно размещённом окружении ваше развёртывание предоставляет учётные данные git; см. [Configure git](/docs/ru/self-hosted-environments-deploy#configure-git)

419* **API учётные данные**: в окружениях, размещённых Anthropic, на планах Pro и Max, ключи, которые вы [добавляете в облачное окружение](/docs/ru/cloud-environments#add-api-credentials), остаются вне песочницы так же, прикреплённые к совпадающим запросам после того, как они покидают сессию. Самостоятельно размещённое окружение не имеет API учётных данных, и планы Team и Enterprise их ещё не имеют419* **Сетевые секреты**: в окружениях, размещённых Anthropic, на планах Pro и Max, ключи, которые вы [добавляете в облачное окружение](/docs/ru/cloud-environments#add-api-credentials), остаются вне песочницы так же, прикреплённые к совпадающим запросам после того, как они покидают сессию. Самостоятельно размещённое окружение не имеет сетевых секретов, и планы Team и Enterprise их ещё не имеют

420* **Безопасный анализ**: код анализируется и изменяется в изолированной среде сессии перед созданием PR420* **Безопасный анализ**: код анализируется и изменяется в изолированной среде сессии перед созданием PR

421 421 

422<h2 id="troubleshooting">422<h2 id="troubleshooting">


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

443 443 

444* `Unable to get organization UUID`444* `Unable to get organization UUID`

445* Сообщение о том, что аутентификации с помощью API-ключа недостаточно445* ``Cloud sessions need a claude.ai sign-in. Run `claude auth login` (or /login in a local session), then try again.``

446* `Error loading Claude Code sessions` в окне выбора сессии, если вы запускаете `claude --teleport` без ID сессии446* `Error loading Claude Code sessions` в окне выбора сессии, если вы запускаете `claude --teleport` без ID сессии

447 447 

448Запустите `/login` для входа с вашим аккаунтом claude.ai, затем повторите команду. Если вместо этого в ошибке указан ваш поставщик, см. [таблицу ошибок](#errors-when-sending-to-a-cloud-session): облачные сессии недоступны через сторонних поставщиков.448Запустите [`claude auth login`](/docs/ru/cli-reference#cli-commands) в оболочке, чтобы войти с вашим аккаунтом claude.ai, затем повторите команду. Внутри запущенной сессии то же самое делает `/login`. Если вместо этого в ошибке указан ваш поставщик, см. [таблицу ошибок](#errors-when-sending-to-a-cloud-session): облачные сессии недоступны через сторонних поставщиков.

449 

450В версиях с v2.1.274 по v2.1.289 сообщение о входе было таким: `Claude Code cloud sessions require authentication with a Claude.ai account. API key authentication is not sufficient. Please run /login to authenticate, or check your authentication status with /status.`

449 451 

450<h3 id="remote-control-session-expired-or-access-denied">452<h3 id="remote-control-session-expired-or-access-denied">

451 Remote Control session expired or access denied453 Remote Control session expired or access denied

Details

34 oneLiner: 'Project instructions Claude reads every session',34 oneLiner: 'Project instructions Claude reads every session',

35 when: 'Loaded into context at the start of every session',35 when: 'Loaded into context at the start of every session',

36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',

37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> on its own or alongside CLAUDE.md</>],37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> in place of a <C>CLAUDE.md</C></>],

38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',

39 example: `# Project conventions39 example: `# Project conventions

40 40 


164 icon: 'folder',164 icon: 'folder',

165 color: '#9B7BC4',165 color: '#9B7BC4',

166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',

167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when Claude reads, writes, or edits a matching file</>,

168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads, writes, or edits a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/docs/en/hooks">hooks</A> or <A href="/docs/en/permissions">permissions</A>.</>],168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads, writes, or edits a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/docs/en/hooks">hooks</A> or <A href="/docs/en/permissions">permissions</A>.</>],

169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],

170 docsLink: '/en/memory#organize-rules-with-claude/rules/',170 docsLink: '/en/memory#organize-rules-with-claude/rules/',


176 color: '#9B7BC4',176 color: '#9B7BC4',

177 badge: 'committed',177 badge: 'committed',

178 oneLiner: 'Test conventions scoped to test files',178 oneLiner: 'Test conventions scoped to test files',

179 when: <>Loaded when Claude reads a file matching the <C>paths:</C> globs below</>,179 when: <>Loaded when Claude reads, writes, or edits a file matching the <C>paths:</C> globs below</>,

180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,

181 example: `---181 example: `---

182paths:182paths:


197 color: '#9B7BC4',197 color: '#9B7BC4',

198 badge: 'committed',198 badge: 'committed',

199 oneLiner: 'API conventions scoped to backend code',199 oneLiner: 'API conventions scoped to backend code',

200 when: <>Loaded when Claude reads a file matching the <C>paths:</C> glob below</>,200 when: <>Loaded when Claude reads, writes, or edits a file matching the <C>paths:</C> glob below</>,

201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is editing API routes.</>,201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is working on API routes.</>,

202 example: `---202 example: `---

203paths:203paths:

204 - "src/api/**/*.ts"204 - "src/api/**/*.ts"


605 icon: 'folder',605 icon: 'folder',

606 color: '#9B7BC4',606 color: '#9B7BC4',

607 oneLiner: 'User-level rules that apply to every project',607 oneLiner: 'User-level rules that apply to every project',

608 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,608 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when Claude reads, writes, or edits a matching file</>,

609 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',609 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',

610 docsLink: '/en/memory#organize-rules-with-claude/rules/',610 docsLink: '/en/memory#organize-rules-with-claude/rules/',

611 children: []611 children: []


1434 1434 

1435На Windows `~/.claude` разрешается в `%USERPROFILE%\.claude`. Если вы установите [`CLAUDE_CONFIG_DIR`](/docs/ru/env-vars), каждый путь `~/.claude` на этой странице будет находиться в этой директории вместо этого.1435На Windows `~/.claude` разрешается в `%USERPROFILE%\.claude`. Если вы установите [`CLAUDE_CONFIG_DIR`](/docs/ru/env-vars), каждый путь `~/.claude` на этой странице будет находиться в этой директории вместо этого.

1436 1436 

1437Большинство пользователей редактируют только `CLAUDE.md` и `settings.json`. Если ваш репозиторий уже содержит `AGENTS.md` для других агентов кодирования, Claude Code [может читать это](/docs/ru/memory#agents-md) самостоятельно или вместе с `CLAUDE.md`. Остальная часть директории опциональна: добавляйте skills, rules или subagents по мере необходимости.1437Большинство пользователей редактируют только `CLAUDE.md` и `settings.json`. Если ваш репозиторий уже содержит `AGENTS.md` для других агентов кодирования, Claude Code [может читать его](/docs/ru/memory#agents-md) вместо `CLAUDE.md`. Остальная часть директории опциональна: добавляйте skills, rules или subagents по мере необходимости.

1438 1438 

1439<h2 id="explore-the-directory">1439<h2 id="explore-the-directory">

1440 Изучите директорию1440 Изучите директорию


1454| - | - | - |1454| - | - | - |

1455| `managed-settings.json` | Уровень системы, варьируется в зависимости от ОС | Параметры, установленные предприятием, которые вы не можете переопределить, за исключением [узких исключений](/docs/ru/settings#security-keys-where-the-stricter-value-applies). См. [где сохранить файл](/docs/ru/managed-settings#deploy-a-managed-settings-file) и [какой управляемый источник использует Claude Code](/docs/ru/managed-settings#precedence-within-the-managed-tier). |1455| `managed-settings.json` | Уровень системы, варьируется в зависимости от ОС | Параметры, установленные предприятием, которые вы не можете переопределить, за исключением [узких исключений](/docs/ru/settings#security-keys-where-the-stricter-value-applies). См. [где сохранить файл](/docs/ru/managed-settings#deploy-a-managed-settings-file) и [какой управляемый источник использует Claude Code](/docs/ru/managed-settings#precedence-within-the-managed-tier). |

1456| `CLAUDE.local.md` | Корень проекта | Ваши личные предпочтения для этого проекта, загружаемые вместе с CLAUDE.md. Создайте его вручную и добавьте в `.gitignore`. |1456| `CLAUDE.local.md` | Корень проекта | Ваши личные предпочтения для этого проекта, загружаемые вместе с CLAUDE.md. Создайте его вручную и добавьте в `.gitignore`. |

1457| `AGENTS.md` | Корень проекта, `.claude/` или любой каталог | Инструкции проекта, которые вы пишете для агентов AI кодирования. Claude Code может [загрузить его](/docs/ru/memory#agents-md) самостоятельно или вместе с `CLAUDE.md`. |1457| `AGENTS.md` | Корень проекта, `.claude/` или любой каталог | Инструкции проекта, которые вы пишете для агентов AI кодирования. Claude Code может [загрузить его](/docs/ru/memory#agents-md) вместо `CLAUDE.md`. |

1458| Установленные плагины | `~/.claude/plugins` | Клонированные маркетплейсы, установленные версии плагинов, запись установки `installed_plugins.json` и данные для каждого плагина, управляемые командами `claude plugin`. Плагины, [синхронизированные с вашей учётной записью claude.ai](/docs/ru/plugins/loading#synced-plugins), загружаются в `~/.claude/plugins/synced/`. Для плагина, установленного из маркетплейса с источником [`command`](/docs/ru/plugins/marketplace-reference#command-plugin-source) в режиме ссылки, Claude Code хранит здесь ссылки вместо копии, и файлы плагина остаются в каталоге, который выводит команда. Источник `command` требует Claude Code v2.1.229 или позже. Плагин, указанный относительным путём в маркетплейсе, который вы добавили из локального пути, также [загружается на месте](/docs/ru/plugins/loading#find-plugins-on-disk) из своего исходного каталога, а не из копии в кэше. См. [кэширование плагинов](/docs/ru/plugins/loading#find-plugins-on-disk), чтобы узнать, как очищаются заброшенные версии. |1458| Установленные плагины | `~/.claude/plugins` | Клонированные маркетплейсы, установленные версии плагинов, запись установки `installed_plugins.json` и данные для каждого плагина, управляемые командами `claude plugin`. Плагины, [синхронизированные с вашей учётной записью claude.ai](/docs/ru/plugins/loading#synced-plugins), загружаются в `~/.claude/plugins/synced/`. Для плагина, установленного из маркетплейса с источником [`command`](/docs/ru/plugins/marketplace-reference#command-plugin-source) в режиме ссылки, Claude Code хранит здесь ссылки вместо копии, и файлы плагина остаются в каталоге, который выводит команда. Источник `command` требует Claude Code v2.1.229 или позже. Плагин, указанный относительным путём в маркетплейсе, который вы добавили из локального пути, также [загружается на месте](/docs/ru/plugins/loading#find-plugins-on-disk) из своего исходного каталога, а не из копии в кэше. См. [кэширование плагинов](/docs/ru/plugins/loading#find-plugins-on-disk), чтобы узнать, как очищаются заброшенные версии. |

1459 1459 

1460`~/.claude` также содержит данные, которые Claude Code записывает во время работы: стенограммы, историю подсказок, снимки файлов, кэши и журналы. См. [данные приложения](#application-data) ниже.1460`~/.claude` также содержит данные, которые Claude Code записывает во время работы: стенограммы, историю подсказок, снимки файлов, кэши и журналы. См. [данные приложения](#application-data) ниже.

claude-projects.md +18 −18

Details

49Проект использует те же лимиты плана, что и другие сеансы Claude Code, и использует их быстрее. [Использование и стоимость](#usage-and-cost) охватывает то, что использует ваш план и как его снизить.49Проект использует те же лимиты плана, что и другие сеансы Claude Code, и использует их быстрее. [Использование и стоимость](#usage-and-cost) охватывает то, что использует ваш план и как его снизить.

50 50 

51<h2 id="how-a-project-is-organized">51<h2 id="how-a-project-is-organized">

52 Как организован проект52 Как устроен проект

53</h2>53</h2>

54 54 

55Проект — это один координирующий разговор с Claude плюс потоки, которые он запускает для выполнения работы. Вот его части:55Проект — это один координирующий диалог с Claude плюс потоки, которые он запускает для выполнения работы. Вот его составные части:

56 56 

57* **Разговор проекта**: один долгоживущий сеанс, где Claude действует как координатор. Он берет то, что вы отправляете, решает, что становится потоком, и отслеживает каждый запущенный поток. Он видит, что потоки сообщают обратно, а не каждый шаг, который они предпринимают.57* **Диалог проекта**: одна долгоживущая сессия, в которой Claude выступает координатором. Он принимает то, что вы отправляете, решает, что станет потоком, и отслеживает каждый запущенный им поток. Он видит то, о чём потоки отчитываются, а не каждый их шаг.

58* **Потоки**: рабочие. Каждый — это отдельный сеанс с собственным контекстным окном, который выполняет одну часть работы и сообщает обратно в разговор, когда завершается. Облачный поток работает на собственной ветке и открывает pull request, когда работа это требует.58* **Потоки**: исполнители. Каждый из них — отдельная сессия со своим собственным контекстным окном, которая выполняет одну часть работы и отчитывается перед диалогом по завершении. Облачный поток работает в своей собственной ветке и открывает pull request, когда этого требует работа.

59* **С чего начинает каждый облачный поток**:59* **С чем начинает каждый облачный поток**:

60 * Репозитории и файлы проекта, плюс его [инструкции и память](#give-a-project-standing-context)60 * Репозитории и файлы проекта, а также его [инструкции и память](#give-a-project-standing-context)

61 * `CLAUDE.md` и skills в [каждом из репозиториев проекта](#what-threads-pick-up-from-your-repositories), и в проекте с одним репозиторием также правила разрешений и hooks этого репозитория61 * `CLAUDE.md` и скиллы в [каждом из репозиториев проекта](#what-threads-pick-up-from-your-repositories), а в проекте с одним репозиторием — также правила разрешений и хуки этого репозитория

62 * [Connectors](#get-skills-plugins-connectors-and-tools-into-threads) на вашем аккаунте claude.ai62 * [Коннекторы](#get-skills-plugins-connectors-and-tools-into-threads) в вашей учётной записи claude.ai

63 * [Облачная среда](#choose-an-environment-for-threads), которая устанавливает его сетевой доступ, переменные окружения, учетные данные API и установленные инструменты63 * [Облачное окружение](#choose-an-environment-for-threads), которое задаёт сетевой доступ, переменные окружения, сетевые секреты и установленные инструменты

64* **Панель Overview**: где вы [видите все потоки сразу](#see-what-needs-you-in-overview) и какие из них вам нужны. Его другие вкладки — **Library** для добавленных вами файлов и файлов, созданных потоками, **Pull requests** для открытых потоками, и **Routines** для запланированной работы в проекте.64* **Панель Overview**: здесь вы [видите все потоки сразу](#see-what-needs-you-in-overview), а также какие из них требуют вашего участия. Другие её вкладки: **Library** для добавленных вами файлов и файлов, созданных потоками, **Pull requests** для pull request, открытых потоками, и **Routines** для запланированной работы в проекте.

65 65 

66Облачные потоки не берут ничего из настройки Claude Code на вашей машине. [Получить skills, plugins, connectors и инструменты в потоки](#get-skills-plugins-connectors-and-tools-into-threads) охватывает, как дать им то, что им иначе не хватает.66Облачные потоки ничего не берут из настроек Claude Code на вашем собственном компьютере. В разделе [Передача скиллов, плагинов, коннекторов и инструментов в потоки](#get-skills-plugins-connectors-and-tools-into-threads) описано, как предоставить им то, чего им иначе не хватало бы.

67 67 

68Вот как эти части соединяются, от вас через разговор к потокам, выполняющим работу, с **Overview**, отслеживающим их состояние:68Вот как связаны эти части — от вас через диалог к потокам, выполняющим работу, а **Overview** отслеживает их состояние:

69 69 

70<Frame>70<Frame>

71 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=dbf446f69f0bbdb9961d21af207cb93b" className="dark:hidden" alt="Диаграмма проекта. Вы пишете в разговор проекта, где Claude отвечает или запускает поток. Каждый облачный поток работает на собственной ветке и открывает pull request. Панель Overview перечисляет потоки по состоянию, например готовы к проверке, ожидают вас и работают." width="600" height="250" data-path="images/claude-projects-overview.svg" />71 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=dbf446f69f0bbdb9961d21af207cb93b" className="dark:hidden" alt="Схема проекта. Вы пишете в диалоге проекта, где Claude отвечает или запускает поток. Каждый облачный поток работает в своей собственной ветке и pull request. Панель Overview перечисляет потоки по состоянию, например готов к проверке, ожидает вас и в работе." width="600" height="250" data-path="images/claude-projects-overview.svg" />

72 72 

73 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview-dark.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=549a5ba9fea8433729babc37a1f6e9c8" className="hidden dark:block" alt="Диаграмма проекта. Вы пишете в разговор проекта, где Claude отвечает или запускает поток. Каждый облачный поток работает на собственной ветке и открывает pull request. Панель Overview перечисляет потоки по состоянию, например готовы к проверке, ожидают вас и работают." width="600" height="250" data-path="images/claude-projects-overview-dark.svg" />73 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview-dark.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=549a5ba9fea8433729babc37a1f6e9c8" className="hidden dark:block" alt="Схема проекта. Вы пишете в диалоге проекта, где Claude отвечает или запускает поток. Каждый облачный поток работает в своей собственной ветке и pull request. Панель Overview перечисляет потоки по состоянию, например готов к проверке, ожидает вас и в работе." width="600" height="250" data-path="images/claude-projects-overview-dark.svg" />

74</Frame>74</Frame>

75 75 

76<h2 id="create-a-project">76<h2 id="create-a-project">


92 92 

93* **План**: вы на Pro или Max и **Projects** отображается на вашей боковой панели.93* **План**: вы на Pro или Max и **Projects** отображается на вашей боковой панели.

94* **GitHub, если проект будет работать с кодом**: ваш код находится на github.com, а не на GitHub Enterprise Server, GitLab или Bitbucket, ваш подключенный аккаунт GitHub имеет доступ на push к нему, и Claude GitHub App установлено на нем. Если вы подключили GitHub с помощью [`/web-setup`](/docs/ru/web-quickstart#connect-from-your-terminal), этот токен позволяет вашим другим облачным сеансам достичь репозитория, но недостаточно для облачных потоков проекта, которым нужно Claude GitHub App. [Настройка доступа GitHub](#set-up-github-access) содержит шаги.94* **GitHub, если проект будет работать с кодом**: ваш код находится на github.com, а не на GitHub Enterprise Server, GitLab или Bitbucket, ваш подключенный аккаунт GitHub имеет доступ на push к нему, и Claude GitHub App установлено на нем. Если вы подключили GitHub с помощью [`/web-setup`](/docs/ru/web-quickstart#connect-from-your-terminal), этот токен позволяет вашим другим облачным сеансам достичь репозитория, но недостаточно для облачных потоков проекта, которым нужно Claude GitHub App. [Настройка доступа GitHub](#set-up-github-access) содержит шаги.

95* **Сеть, учетные данные и инструменты**: для облачных потоков они поступают из [облачной среды](#choose-an-environment-for-threads) проекта. Среда по умолчанию уже достигает [общих реестров пакетов](/docs/ru/cloud-environments#default-allowed-domains), поэтому проверьте это только если работе нужны другие домены, секрет или инструмент, который не предустановлен. Если работе нужен MCP server, проверьте, что он отображается как подключенный в ваших [claude.ai connectors](https://claude.ai/customize/connectors).95* **Сеть, секреты и инструменты**: для облачных потоков они поступают из [облачной среды](#choose-an-environment-for-threads) проекта. Среда по умолчанию уже имеет доступ к [распространенным реестрам пакетов](/docs/ru/cloud-environments#default-allowed-domains), поэтому проверяйте это, только если работе нужны другие домены, секрет или инструмент, который не предустановлен. Если работе нужен MCP-сервер, проверьте, что он отображается как подключенный в ваших [коннекторах claude.ai](https://claude.ai/customize/connectors).

96 96 

97<h3 id="start-a-new-project-from-scratch">97<h3 id="start-a-new-project-from-scratch">

98 Запуск нового проекта с нуля98 Запуск нового проекта с нуля


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

397</h3>397</h3>

398 398 

399Каждый новый облачный поток начинается в [облачной среде](/docs/ru/cloud-environments) проекта. Среда устанавливает, какие домены могут достичь потоки, какие переменные окружения они имеют, какие учетные данные API добавляются в их запросы и что скрипт настройки устанавливает перед началом Claude. Облачные потоки используют среду по умолчанию, размещенную Anthropic, пока вы не выберете одну в **Project settings > Environment**.399Каждый новый облачный поток начинается в [облачной среде](/docs/ru/cloud-environments) проекта. Среда определяет, к каким доменам могут обращаться потоки, какие переменные окружения у них есть, какие сетевые секреты добавляются в их запросы и что устанавливает скрипт настройки до запуска Claude. Облачные потоки используют среду по умолчанию, размещенную Anthropic, пока вы не выберете другую в **Project settings > Environment**.

400 400 

401Если облачным потокам нужно достичь внутреннего API или приватного реестра пакетов, или нужен токен, который ваша машина обычно держит, измените среду, а не проект: см. [Сетевой доступ](/docs/ru/cloud-environments#network-access), [Добавить учетные данные API](/docs/ru/cloud-environments#add-api-credentials) и [Скрипты настройки](/docs/ru/cloud-environments#setup-scripts).401Если облачным потокам нужно обращаться к внутреннему API или приватному реестру пакетов либо нужен токен, который обычно хранится на вашей машине, измените среду, а не проект: см. [Сетевой доступ](/docs/ru/cloud-environments#network-access), [Добавление сетевых секретов](/docs/ru/cloud-environments#add-api-credentials) и [Скрипты настройки](/docs/ru/cloud-environments#setup-scripts).

402 402 

403<h3 id="get-skills-plugins-connectors-and-tools-into-threads">403<h3 id="get-skills-plugins-connectors-and-tools-into-threads">

404 Получить skills, plugins, connectors и инструменты в потоки404 Получить skills, plugins, connectors и инструменты в потоки


590</h2>590</h2>

591 591 

592* [Используйте Claude Code в облаке](/docs/ru/claude-code-on-the-web): как работают облачные сеансы за каждым потоком, включая варианты доступа GitHub и auto-fix на pull request592* [Используйте Claude Code в облаке](/docs/ru/claude-code-on-the-web): как работают облачные сеансы за каждым потоком, включая варианты доступа GitHub и auto-fix на pull request

593* [Настройте облачные среды](/docs/ru/cloud-environments): измените, что потоки могут достичь в сети, дайте им переменные окружения и учетные данные API и установите инструменты со скриптом настройки593* [Настройте облачные среды](/docs/ru/cloud-environments): измените, что облачные потоки могут достичь в сети, дайте им переменные окружения и сетевые секреты и установите инструменты со скриптом настройки

594* [Автоматизируйте работу с routines](/docs/ru/routines): расписания, триггеры и управление для routines, включая те, которые Claude создает из проекта594* [Автоматизируйте работу с routines](/docs/ru/routines): расписания, триггеры и управление для routines, включая те, которые Claude создает из проекта

595* [Управляйте несколькими агентами с agent view](/docs/ru/agent-view): запускайте и отслеживайте несколько сеансов на вашей собственной машине, когда работе требуются инструменты или сервисы, которые может достичь только ваша машина595* [Управляйте несколькими агентами с agent view](/docs/ru/agent-view): запускайте и отслеживайте несколько сеансов на вашей собственной машине, когда работе требуются инструменты или сервисы, которые может достичь только ваша машина

596* [Projects redesigned: from folder to conversation](https://claude.com/blog/projects-redesigned): объявление о запуске с объяснением идеи превращения проекта в беседу с Claude596* [Projects redesigned: from folder to conversation](https://claude.com/blog/projects-redesigned): объявление о запуске с объяснением идеи превращения проекта в беседу с Claude

Details

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

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

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

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

35| `claude daemon run` | Запустить [супервизор](/docs/ru/agent-view#the-supervisor-process) фоновых сессий на переднем плане этого терминала с выводом его лога | `claude daemon run` |

34| `claude daemon status` | Вывести состояние [супервизора](/docs/ru/agent-view#the-supervisor-process) фоновых сессий, версию, каталог сокетов и количество рабочих процессов для диагностики. Завершается с кодом 1, если супервизор не запущен | `claude daemon status` |36| `claude daemon status` | Вывести состояние [супервизора](/docs/ru/agent-view#the-supervisor-process) фоновых сессий, версию, каталог сокетов и количество рабочих процессов для диагностики. Завершается с кодом 1, если супервизор не запущен | `claude daemon status` |

35| `claude daemon stop --any` | Остановить [супервизор](/docs/ru/agent-view#the-supervisor-process) фоновых сессий и размещённые им сессии. Передайте `--keep-workers`, чтобы оставить фоновые сессии работающими, и следующий супервизор переподключится к ним. `--any` подтверждает остановку супервизора по требованию, который используется по умолчанию. Используйте это для восстановления после [неотвечающего супервизора](/docs/ru/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |37| `claude daemon stop --any` | Остановить [супервизор](/docs/ru/agent-view#the-supervisor-process) фоновых сессий и размещённые им сессии. Передайте `--keep-workers`, чтобы оставить фоновые сессии работающими, и следующий супервизор переподключится к ним. `--any` подтверждает остановку супервизора по требованию, который используется по умолчанию. Используйте это для восстановления после [неотвечающего супервизора](/docs/ru/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |

36| `claude doctor` | Вывести диагностику установки и настроек (только для чтения) из терминала без запуска сессии, включая состояние установки, ошибки валидации файлов настроек и доступность Remote Control. Для проверки настройки внутри сессии, которая также может применять исправления, запустите [`/doctor`](/docs/ru/commands#all-commands) | `claude doctor` |38| `claude doctor` | Вывести диагностику установки и настроек (только для чтения) из терминала без запуска сессии, включая состояние установки, ошибки валидации файлов настроек и доступность Remote Control. Для проверки настройки внутри сессии, которая также может применять исправления, запустите [`/doctor`](/docs/ru/commands#all-commands) | `claude doctor` |

Details

10 Облачные среды применяются к [облачным сеансам](/docs/ru/claude-code-on-the-web), которые доступны на планах Pro, Max и Team, а также для пользователей Enterprise с [премиум-местами или местами Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).10 Облачные среды применяются к [облачным сеансам](/docs/ru/claude-code-on-the-web), которые доступны на планах Pro, Max и Team, а также для пользователей Enterprise с [премиум-местами или местами Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).

11</Note>11</Note>

12 12 

13Каждый [облачный сеанс](/docs/ru/claude-code-on-the-web) выполняется в облачной среде. Вы можете настроить среду, чтобы разрешить или запретить [доступ в сеть](#access-levels), [установить переменные окружения](#set-environment-variables) для сеанса, на планах Pro и Max сохранять [учётные данные API](#add-api-credentials), которые сеансы используют без их просмотра, и запустить [скрипт настройки](#setup-scripts) перед тем, как Claude начнёт работу.13Каждая [облачная сессия](/docs/ru/claude-code-on-the-web) выполняется в облачной среде. Вы можете настроить среду, чтобы разрешить или запретить [доступ в сеть](#access-levels), [установить переменные окружения](#set-environment-variables) для сессии, на планах Pro и Max сохранять [сетевые секреты](#add-api-credentials), которые сессии используют, не видя их, и запускать [скрипт настройки](#setup-scripts) перед тем, как Claude начнёт работу.

14 14 

15Одни и те же среды применяются везде, где вы запускаете облачный сеанс: [приложение Desktop](/docs/ru/desktop), [мобильное приложение Claude](/docs/ru/mobile), ваш браузер на [claude.ai/code](https://claude.ai/code), терминал с [`claude --cloud`](/docs/ru/claude-code-on-the-web#from-terminal-to-cloud), [процедуры](/docs/ru/routines) и [Claude Tag](https://claude.com/docs/claude-tag/overview). Каждая из этих поверхностей также может маршрутизировать в [самостоятельно размещённую среду](/docs/ru/self-hosted-environments). [Доступность и ограничения](/docs/ru/self-hosted-environments#availability-and-limitations) охватывает то, что Claude ещё не может использовать, когда сеанс Claude Tag работает в одной.15Одни и те же среды применяются везде, где вы запускаете облачный сеанс: [приложение Desktop](/docs/ru/desktop), [мобильное приложение Claude](/docs/ru/mobile), ваш браузер на [claude.ai/code](https://claude.ai/code), терминал с [`claude --cloud`](/docs/ru/claude-code-on-the-web#from-terminal-to-cloud), [процедуры](/docs/ru/routines) и [Claude Tag](https://claude.com/docs/claude-tag/overview). Каждая из этих поверхностей также может маршрутизировать в [самостоятельно размещённую среду](/docs/ru/self-hosted-environments). [Доступность и ограничения](/docs/ru/self-hosted-environments#availability-and-limitations) охватывает то, что Claude ещё не может использовать, когда сеанс Claude Tag работает в одной.

16 16 


58 <Step title="Добавьте или отредактируйте среду">58 <Step title="Добавьте или отредактируйте среду">

59 Выберите **Cloud** для отображения ваших сред. Затем выберите **Add cloud environment** или наведите на существующую среду и выберите значок параметров, который появляется справа.59 Выберите **Cloud** для отображения ваших сред. Затем выберите **Add cloud environment** или наведите на существующую среду и выберите значок параметров, который появляется справа.

60 60 

61 Диалог включает имя, уровень сетевого доступа, переменные окружения и скрипт установки. Когда вы редактируете существующую облачную среду на плане Pro или Max, диалог также включает [учётные данные API](#add-api-credentials).61 Диалог включает имя, уровень сетевого доступа, переменные окружения и скрипт установки. Когда вы редактируете существующую облачную среду на плане Pro или Max, диалог также включает [сетевые секреты](#add-api-credentials).

62 62 

63 <Frame>63 <Frame>

64 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="Диалог New cloud environment. Поле Name с заполнителем Default, селектор Network access установлен на Trusted со ссылками на политику сети и уровни доступа, поле Environment variables, показывающее текст-заполнитель в формате .env с примечанием, что значения видны всем, кто использует среду, поле Setup script, описанное как скрипт Bash, который запускается при запуске нового сеанса перед запуском Claude Code, и кнопки Cancel и Create environment." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />64 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="Диалог New cloud environment. Поле Name с заполнителем Default, селектор Network access установлен на Trusted со ссылками на политику сети и уровни доступа, поле Environment variables, показывающее текст-заполнитель в формате .env с примечанием, что значения видны всем, кто использует среду, поле Setup script, описанное как скрипт Bash, который запускается при запуске нового сеанса перед запуском Claude Code, и кнопки Cancel и Create environment." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />


91 91 

92Облачный сеанс также устанавливает некоторые переменные сам, когда запускается. Для [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/ru/claude-code-on-the-web#manage-context) значение, которое устанавливает сеанс, переопределяет то, которое вы добавляете здесь, поэтому добавление этого ключа здесь не имеет эффекта.92Облачный сеанс также устанавливает некоторые переменные сам, когда запускается. Для [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/ru/claude-code-on-the-web#manage-context) значение, которое устанавливает сеанс, переопределяет то, которое вы добавляете здесь, поэтому добавление этого ключа здесь не имеет эффекта.

93 93 

94Любой, кто использует среду, может читать значения. На планах Pro и Max используйте [учётные данные API](#add-api-credentials) вместо этого для ключа, который прокси агента может прикрепить к запросу. [Запросы, которые никогда не получают учётные данные](#requests-that-never-get-the-credential), перечислены там.94Любой, кто использует среду, может читать значения. На планах Pro и Max вместо этого используйте [сетевой секрет](#add-api-credentials) для ключа, который прокси агента может прикрепить к запросу. [Запросы, которые никогда не получают секрет](#requests-that-never-get-the-credential), перечислены там.

95 95 

96<h3 id="add-api-credentials">96<h3 id="add-api-credentials">

97 Добавление учётных данных API97 Добавление сетевых секретов

98</h3>98</h3>

99 99 

100Учётные данные API — это ключ API или токен, который вы сохраняете в облачной среде, чтобы Claude мог вызывать этот API из любого сеанса в среде без просмотра ключа. Прокси агента Anthropic добавляет ключ к запросам для хостов, которые вы перечисляете, после того как каждый запрос покидает виртуальную машину сеанса. Ключ никогда не достигает Claude, команд, которые он запускает, или переменных окружения сеанса.100Сетевой секрет — это API-ключ или токен, который вы сохраняете в облачной среде, чтобы Claude мог вызывать этот API из любой сессии в среде, не видя ключа. Прокси агента Anthropic добавляет ключ к запросам для перечисленных вами хостов после того, как каждый запрос покидает виртуальную машину сессии. Ключ никогда не достигает Claude, запускаемых им команд или переменных окружения сессии.

101 101 

102Учётные данные API доступны на планах Pro и Max. Они недоступны на планах Team или Enterprise пока, поэтому раздел **API credentials** не появляется в диалоге среды на этих планах.102Сетевые секреты доступны на планах Pro и Max. На планах Team и Enterprise они пока недоступны, поэтому раздел **Network secrets** не появляется в диалоге среды на этих планах.

103 103 

104<h4 id="requirements">104<h4 id="requirements">

105 Требования105 Требования

106</h4>106</h4>

107 107 

108Два из них решают, можете ли вы добавить учётные данные, и два решают, может ли прокси агента использовать их после добавления:108Два из них определяют, можете ли вы добавить секрет, а два — может ли прокси агента использовать его после добавления:

109 109 

110* **Роль**: роль администратора организации в вашей организации claude.ai110* **Роль**: роль администратора организации в вашей организации claude.ai

111 * На Team и Enterprise её держат владельцы, а администраторы нет111 * На Team и Enterprise её держат владельцы, а администраторы нет

112 * На Pro и Max вы её держите в своей собственной организации112 * На Pro и Max вы её держите в своей собственной организации

113* **Тип среды**: облачная среда, размещённая Anthropic, которая уже существует. [Самостоятельно размещённая среда](/docs/ru/self-hosted-environments) не имеет учётных данных API113* **Тип среды**: облачная среда, размещённая Anthropic, которая уже существует. У [самостоятельно размещённой среды](/docs/ru/self-hosted-environments) нет сетевых секретов

114* **Доступность API**: API принимает соединения из интернета, потому что запросы выходят из сети Anthropic114* **Доступность API**: API принимает соединения из интернета, потому что запросы выходят из сети Anthropic

115* **Ключи шифрования**: если ваша организация использует управляемые клиентом ключи шифрования, вы не можете сохранять учётные данные115* **Ключи шифрования**: если ваша организация использует управляемые клиентом ключи шифрования, вы не можете сохранять сетевые секреты

116 116 

117<h4 id="add-a-credential">117<h4 id="add-a-credential">

118 Добавление учётных данных118 Добавление секрета

119</h4>119</h4>

120 120 

121Вы добавляете учётные данные по одному и не можете редактировать их после добавления. Чтобы изменить хосты или значение учётных данных, удалите их и добавьте снова.121Вы добавляете секреты по одному и не можете редактировать секрет после добавления. Чтобы изменить хосты или значение секрета, удалите его и добавьте снова.

122 122 

123<Steps>123<Steps>

124 <Step title="Откройте учётные данные API среды">124 <Step title="Откройте сетевые секреты среды">

125 [Откройте среду для редактирования](#configure-your-environment) на [claude.ai/code](https://claude.ai/code). В диалоге **Edit environment** найдите раздел **API credentials**. Вы видите учётные данные, уже находящиеся в среде, каждые с хостами, к которым они применяются.125 [Откройте среду для редактирования](#configure-your-environment) на [claude.ai/code](https://claude.ai/code). В диалоге **Edit environment** найдите раздел **Network secrets**. Вы увидите секреты, уже добавленные в среду, каждый с хостами, к которым он применяется.

126 </Step>126 </Step>

127 127 

128 <Step title="Добавьте учётные данные">128 <Step title="Добавьте секрет">

129 Выберите **Add credential** и заполните форму. Оставьте **Credential type** по умолчанию, **Bearer**, для API-ключа, который передаётся в заголовке запроса, и заполните эти поля:129 Выберите **Add secret** и заполните форму. Оставьте **Credential type** по умолчанию, **Bearer**, для API-ключа, который передаётся в заголовке запроса, и заполните эти поля:

130 130 

131 * **Name**: метка для учётных данных, такая как `Internal billing API`131 * **Name**: метка для секрета, например `Internal billing API`

132 * **Allowed websites**: хосты API, такие как `api.example.com`. Ведущий `*.` соответствует каждому поддомену132 * **Allowed websites**: хосты API, например `api.example.com`. Префикс `*.` соответствует любому поддомену

133 * **Custom headers**: одна строка для заголовка, который несёт ключ. Строка начинается с `Authorization` как **Name** заголовка и `Bearer` как его **Prefix**; вставьте сам ключ как **Value**. Для заголовка, такого как `X-Api-Key`, который принимает голое значение, измените имя и очистите префикс133 * **Custom headers**: одна строка для заголовка, который несёт ключ. Строка начинается с `Authorization` в качестве **Name** заголовка и `Bearer` в качестве его **Prefix**; вставьте сам ключ в качестве **Value**. Для заголовка вроде `X-Api-Key`, который принимает значение без префикса, измените имя и очистите префикс

134 134 

135 Для API, который аутентифицируется другим способом, выберите другой **Credential type**. Список — это тот же, который [Claude Tag](https://claude.com/docs/claude-tag/overview), интеграция Slack для планов Team и Enterprise, предлагает для [соединений](https://claude.com/docs/claude-tag/admins/add-connections).135 Для API, который использует другой способ аутентификации, выберите другой **Credential type**. Это тот же список, который [Claude Tag](https://claude.com/docs/claude-tag/overview), интеграция со Slack для планов Team и Enterprise, предлагает для [соединений](https://claude.com/docs/claude-tag/admins/add-connections).

136 </Step>136 </Step>

137 137 

138 <Step title="Сохраните учётные данные">138 <Step title="Сохраните секрет">

139 Выберите **Connect**. Учётные данные появляются в списке с его хостами, сохранённые без кнопки **Save changes** диалога. Вы не можете просмотреть значение снова после сохранения.139 Выберите **Connect**. Секрет появляется в списке со своими хостами и сохраняется без кнопки **Save changes** диалога. После сохранения просмотреть значение снова нельзя.

140 </Step>140 </Step>

141</Steps>141</Steps>

142 142 

143Чтобы подтвердить, что учётные данные работают, запустите сеанс в среде и попросите Claude вызвать API, например с помощью `curl`. API отвечает так, как если бы ключ был в запросе, и ключ не появляется в переменных окружения сеанса или в любом файле. Если список отмечает учётные данные **Not sent** вместо этого, примечание под ним говорит почему и что делать. Два учётных данных, чьи хосты перекрываются без точного совпадения, не получают маркер, и прокси агента отправляет только один из них.143Чтобы убедиться, что секрет работает, запустите сессию в среде и попросите Claude вызвать API, например с помощью `curl`. API отвечает так, как если бы ключ был в запросе, а ключ не появляется ни в переменных окружения сессии, ни в каком-либо файле. Если вместо этого список помечает секрет как **Not sent**, примечание под ним объясняет причину и что делать. Два секрета, хосты которых пересекаются без точного совпадения, не получают отметки, и прокси агента отправляет только один из них.

144 144 

145<h4 id="which-requests-get-the-credential">145<h4 id="which-requests-get-the-credential">

146 Какие запросы получают учётные данные146 Какие запросы получают секрет

147</h4>147</h4>

148 148 

149Прокси агента прикрепляет учётные данные к запросу, когда хост запроса соответствует одному, который вы перечислили на этих учётных данных. Сеансы могут достичь этих хостов, даже когда [уровень доступа в сеть](#access-levels) среды иначе их не разрешал бы, кроме [хостов, которые никогда не получают учётные данные](#requests-that-never-get-the-credential). Учётные данные применяются в каждом сеансе, который работает в среде, кто бы его ни запустил, пока вы их не удалите.149Прокси агента прикрепляет секрет к запросу, когда хост запроса совпадает с одним из хостов, которые вы указали для этого секрета. Сессии могут обращаться к этим хостам, даже если [уровень сетевого доступа](#access-levels) среды иначе бы их не разрешал, за исключением [хостов, которые никогда не получают секрет](#requests-that-never-get-the-credential). Секрет применяется в каждой сессии, работающей в среде, кто бы её ни запустил, пока вы его не удалите.

150 150 

151<h4 id="requests-that-never-get-the-credential">151<h4 id="requests-that-never-get-the-credential">

152 Запросы, которые никогда не получают учётные данные152 Запросы, которые никогда не получают секрет

153</h4>153</h4>

154 154 

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

156 156 

157* **GitHub**: [прокси GitHub](#github-proxy) аутентифицирует запросы к GitHub вместо этого, поэтому вам не нужны учётные данные API для этого157* **GitHub**: запросы к GitHub вместо этого аутентифицирует [прокси GitHub](#github-proxy), поэтому сетевой секрет для него не нужен

158* **API Anthropic и общедоступные реестры пакетов**: `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io` и `proxy.golang.org`158* **API Anthropic и общедоступные реестры пакетов**: `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io` и `proxy.golang.org`

159* **Запросы скрипта установки**: Claude Code подключается к прокси агента, когда он запускается, после того как [скрипт установки](#setup-scripts) запустился159* **Запросы скрипта установки**: Claude Code подключается к прокси агента, когда он запускается, после того как [скрипт установки](#setup-scripts) запустился

160* **Экспорт телеметрии Claude Code**: Claude Code отправляет свой [экспорт телеметрии](/docs/ru/monitoring-usage#telemetry-from-cloud-sessions-and-claude-tag) сам, а не через команду, которую он запускает, и этот запрос не проходит через прокси агента160* **Экспорт телеметрии Claude Code**: Claude Code отправляет свой [экспорт телеметрии](/docs/ru/monitoring-usage#telemetry-from-cloud-sessions-and-claude-tag) сам, а не через команду, которую он запускает, и этот запрос не проходит через прокси агента


179 179 

180* Сеансы, которые уже работают в среде, продолжают работать.180* Сеансы, которые уже работают в среде, продолжают работать.

181* Среда исчезает из селектора и из `/remote-env`, поэтому вы не можете выбрать её для новых сеансов.181* Среда исчезает из селектора и из `/remote-env`, поэтому вы не можете выбрать её для новых сеансов.

182* Учётные данные API в среде остаются прикреплены в её работающих сеансах. Удалите те, которые вам больше не нужны, перед архивированием.182* Сетевые секреты среды остаются прикреплёнными в её работающих сессиях. Перед архивированием удалите те, которые вам больше не нужны.

183* Ни один новый сеанс не может запуститься в архивированной среде на любой поверхности. Если среда была вашим сохранённым [значением по умолчанию CLI](#select-an-environment-from-the-cli), Claude Code запускает облачные сеансы CLI в среде, размещённой Anthropic, когда ваш список имеет одну, и в противном случае в первой среде в вашем списке, которая не является [мостовой средой Remote Control](#the-default-environment). Всё, что явно настроено с помощью среды, такое как [процедура](/docs/ru/routines#environments-and-network-access), не может запустить новые сеансы в ней. Укажите её на другую среду.183* Ни один новый сеанс не может запуститься в архивированной среде на любой поверхности. Если среда была вашим сохранённым [значением по умолчанию CLI](#select-an-environment-from-the-cli), Claude Code запускает облачные сеансы CLI в среде, размещённой Anthropic, когда ваш список имеет одну, и в противном случае в первой среде в вашем списке, которая не является [мостовой средой Remote Control](#the-default-environment). Всё, что явно настроено с помощью среды, такое как [процедура](/docs/ru/routines#environments-and-network-access), не может запустить новые сеансы в ней. Укажите её на другую среду.

184 184 

185<h3 id="organization-shared-environments">185<h3 id="organization-shared-environments">


197 197 

198Владельцы выбирают [среду по умолчанию](#the-default-environment) организации отдельно на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).198Владельцы выбирают [среду по умолчанию](#the-default-environment) организации отдельно на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

199 199 

200Каждый сеанс члена в общей среде читает её переменные, поэтому не включайте секреты в них. [Учётные данные API](#add-api-credentials), которые дают сеансам ключ, который они не могут читать, недоступны на планах Team или Enterprise пока.200Сессии каждого участника в общей среде считывают её переменные, поэтому не включайте в них секреты. [Сетевые секреты](#add-api-credentials), которые дают сессиям ключ, недоступный им для чтения, пока недоступны на планах Team и Enterprise.

201 201 

202<h3 id="set-the-environment-a-claude-tag-channel-uses">202<h3 id="set-the-environment-a-claude-tag-channel-uses">

203 Установка среды, которую использует канал Claude Tag203 Установка среды, которую использует канал Claude Tag


239 239 

240* GitHub, через его [отдельный прокси](#github-proxy)240* GitHub, через его [отдельный прокси](#github-proxy)

241* [Соединители MCP](#network-access), которые вы включаете, трафик которых проходит через серверы Anthropic241* [Соединители MCP](#network-access), которые вы включаете, трафик которых проходит через серверы Anthropic

242* Хосты, которые вы указали в [учётных данных API](#add-api-credentials) среды, кроме [хостов, которые никогда не получают учётные данные](#requests-that-never-get-the-credential)242* Хосты, которые вы указали в [сетевых секретах](#add-api-credentials) среды, кроме [хостов, которые никогда не получают секрет](#requests-that-never-get-the-credential)

243* API Anthropic, для собственных запросов Claude Code, даже при **None**, как отмечено в разделе [Безопасность и изоляция](/docs/ru/claude-code-on-the-web#security-and-isolation)243* API Anthropic, для собственных запросов Claude Code, даже при **None**, как отмечено в разделе [Безопасность и изоляция](/docs/ru/claude-code-on-the-web#security-and-isolation)

244 244 

245<h3 id="allow-specific-domains">245<h3 id="allow-specific-domains">


254registry.example.com254registry.example.com

255```255```

256 256 

257Сеансы в этой среде теперь могут достичь `api.example.com`, любого поддомена `internal.example.com` и `registry.example.com`, и никаких других доменов через сеть сеанса. [Трафик GitHub](#github-proxy), [трафик соединителя MCP](#network-access) и запросы к хостам [учётных данных API](#add-api-credentials) среды, кроме [хостов, которые никогда не получают учётные данные](#requests-that-never-get-the-credential), не проходят через этот список разрешённых. Ведущий `*.` соответствует каждому поддомену. Чтобы сохранить [домены Trusted](#default-allowed-domains) также, установите флажок **Also include default list of common package managers**; оставьте его без флажка, чтобы разрешить только то, что вы указали.257Теперь сессии в этой среде могут обращаться к `api.example.com`, любому поддомену `internal.example.com` и `registry.example.com` и ни к каким другим доменам через сеть сессии. [Трафик GitHub](#github-proxy), [трафик коннекторов MCP](#network-access) и запросы к хостам [сетевых секретов](#add-api-credentials) среды, кроме [хостов, которые никогда не получают секрет](#requests-that-never-get-the-credential), не проходят через этот список разрешённых доменов. Ведущий `*.` соответствует любому поддомену. Чтобы также сохранить [домены Trusted](#default-allowed-domains), установите флажок **Also include default list of common package managers**; оставьте его снятым, чтобы разрешить только то, что вы указали.

258 258 

259Если ваша организация использует [артефакты](/docs/ru/artifacts#availability), вам не нужно добавлять `*.frame.claudeusercontent.com` в список, чтобы сеансы могли их читать. Когда список исключает этот хост, Claude Code читает содержимое артефакта через соединение сеанса с Anthropic. Сохраняйте хост в списке разрешённых в двух ситуациях:259Если ваша организация использует [артефакты](/docs/ru/artifacts#availability), вам не нужно добавлять `*.frame.claudeusercontent.com` в список, чтобы сеансы могли их читать. Когда список исключает этот хост, Claude Code читает содержимое артефакта через соединение сеанса с Anthropic. Сохраняйте хост в списке разрешённых в двух ситуациях:

260 260 


289* Журнал аудита на уровне DNS запрошенных имён хостов289* Журнал аудита на уровне DNS запрошенных имён хостов

290 290 

291<h2 id="what’s-available-in-cloud-sessions">291<h2 id="what’s-available-in-cloud-sessions">

292 Что доступно в облачных сеансах292 Что доступно в облачных сессиях

293</h2>293</h2>

294 294 

295В среде, размещённой Anthropic, каждый сеанс получает свежую виртуальную машину (VM) под управлением Ubuntu 24.04 на x86\_64, независимо от вашей собственной операционной системы и архитектуры CPU, с клонированным репозиторием и предустановленными общими цепочками инструментов. Когда зависимость предоставляет предкомпилированные двоичные файлы, такие как Ruby gems с собственными расширениями или предварительно построенные колёса Python, используйте его сборку x86\_64 Linux, чтобы соответствовать VM. Этот раздел охватывает значения по умолчанию, размещённые Anthropic, встроенные инструменты GitHub, как [запускать тесты и сервисы](#run-tests-start-services-and-add-packages), [ограничения ресурсов](#resource-limits), которые получает каждая VM, и [ограничения времени](#time-limits) на долгоживущую работу.295В среде, размещённой Anthropic, каждая сессия получает свежую виртуальную машину (VM) под управлением Ubuntu 24.04 на x86\_64, независимо от вашей собственной операционной системы и архитектуры CPU, с клонированным репозиторием и предустановленными распространёнными цепочками инструментов. Когда зависимость предоставляет предкомпилированные двоичные файлы, такие как Ruby gems с нативными расширениями или предварительно собранные колёса Python, используйте её сборку для x86\_64 Linux, чтобы она соответствовала VM. Этот раздел охватывает значения по умолчанию в среде, размещённой Anthropic, встроенные инструменты GitHub, то, как [запускать тесты и сервисы](#run-tests-start-services-and-add-packages), [ограничения ресурсов](#resource-limits), которые получает каждая VM, и [ограничения времени](#time-limits) для длительной работы.

296 296 

297<Note>297<Note>

298 Сеансы, которые ваша организация маршрутизирует в [самостоятельно размещённую среду](/docs/ru/self-hosted-environments), работают на ваших собственных runners вместо этого, с инструментами, которые предоставляет образ вашего runner.298 Сессии, которые ваша организация направляет в [самостоятельно размещённую среду](/docs/ru/self-hosted-environments), вместо этого работают на ваших собственных runners, с инструментами, которые предоставляет образ вашего runner.

299</Note>299</Note>

300 300 

301<h3 id="what-carries-over-from-your-setup">301<h3 id="what-carries-over-from-your-setup">

302 Что переносится из вашей установки302 Что переносится из вашей конфигурации

303</h3>303</h3>

304 304 

305Облачные сеансы начинаются со свежего клона вашего репозитория. Всё, что вы зафиксировали в репозитории, доступно. Всё, что вы установили или настроили только на своей собственной машине, недоступно в сеансе. Политика вашей организации поступает отдельно через [параметры, управляемые сервером](/docs/ru/server-managed-settings).305Облачные сессии начинаются со свежего клона вашего репозитория. Всё, что вы закоммитили в репозиторий, доступно. Всё, что вы установили или настроили только на своей собственной машине, в сессии недоступно. Политика вашей организации поступает отдельно через [настройки, управляемые сервером](/docs/ru/server-managed-settings).

306 306 

307| | Доступно в облачных сеансах | Почему |307| | Доступно в облачных сессиях | Почему |

308| :- | :- | :- |308| :- | :- | :- |

309| Ваш репозитория `CLAUDE.md` | Да | Часть клона |309| `CLAUDE.md` вашего репозитория | Да | Часть клона |

310| Ваши репозитория `.claude/settings.json` hooks и правила разрешений | Да, в сеансе с одним репозиторием | Часть клона. Сеанс с несколькими репозиториями, включая поток [проекта](/docs/ru/claude-projects#what-threads-pick-up-from-your-repositories), начинается выше клонов и не читает их |310| Хуки и правила разрешений в `.claude/settings.json` вашего репозитория | Да, в сессии с одним репозиторием | Часть клона. Сессия с несколькими репозиториями, включая поток [проекта](/docs/ru/claude-projects#what-threads-pick-up-from-your-repositories), начинается уровнем выше клонов и не читает их |

311| Ваши репозитория `.mcp.json` MCP серверы | Да, в сеансе с одним репозиторием | Часть клона, найденная из рабочего каталога сеанса |311| MCP-серверы в `.mcp.json` вашего репозитория | Да, в сессии с одним репозиторием | Часть клона, находится из рабочего каталога сессии |

312| Ваши репозитория `.claude/rules/` | Да | Часть клона |312| `.claude/rules/` вашего репозитория | Да | Часть клона |

313| Ваши репозитория `.claude/skills/`, `.claude/agents/`, `.claude/commands/` | Да | Часть клона |313| `.claude/skills/`, `.claude/agents/`, `.claude/commands/` вашего репозитория | Да | Часть клона |

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

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

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

317| Ваши пользовательские `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` | Нет | Находятся на вашей машине, не в репозитории. Зафиксируйте их в каталоге `.claude/` репозитория вместо этого. Облачные сеансы автоматически загружают skills, которые вы включаете на claude.ai |317| Ваши пользовательские `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` | Нет | Находятся на вашей машине, а не в репозитории. Вместо этого закоммитьте их в каталог `.claude/` репозитория. Облачные сессии автоматически загружают скиллы, которые вы включили на claude.ai |

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

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

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

321| Ключи API и токены для сервисов, которые Claude вызывает | На планах Pro и Max, как [учётные данные API](#add-api-credentials) | Вы добавляете ключ один раз в среду и прокси агента прикрепляет его к запросам для хостов, которые вы перечисляете. Ключ, который прокси агента [не может прикрепить](#requests-that-never-get-the-credential), или любой ключ на плане Team или Enterprise, остаётся в переменной окружения |321| API-ключи и токены для сервисов, которые вызывает Claude | На планах Pro и Max, как [сетевые секреты](#add-api-credentials) | Вы добавляете ключ один раз в среду, и прокси агента прикрепляет его к запросам к перечисленным вами хостам. Ключ, который прокси агента [не может прикрепить](#requests-that-never-get-the-credential), или любой ключ на плане Team или Enterprise остаётся в переменной окружения |

322| Интерактивная аутентификация, такая как AWS SSO | Нет | Не поддерживается. SSO требует вход на основе браузера, который не может работать в облачном сеансе |322| Интерактивная аутентификация, такая как AWS SSO | Нет | Не поддерживается. SSO требует входа через браузер, который невозможен в облачной сессии |

323 323 

324Чтобы сделать вашу собственную конфигурацию доступной в облачных сеансах, зафиксируйте её в репозитории.324Чтобы сделать вашу собственную конфигурацию доступной в облачных сессиях, закоммитьте её в репозиторий.

325 325 

326Любой, кто использует среду, может читать её переменные окружения и скрипт установки. Примечание диалога под **Environment variables** говорит об этом и предупреждает против добавления секретов там. На планах Pro и Max сохраняйте ключ, который прокси агента может прикрепить, как [учётные данные API](#add-api-credentials) вместо этого.326Любой, кто использует среду, может читать её переменные окружения и скрипт настройки. Об этом говорит примечание в диалоге под **Environment variables**, которое также предупреждает не размещать там секреты. На планах Pro и Max вместо этого храните ключ, который прокси агента может прикрепить, как [сетевой секрет](#add-api-credentials).

327 

328<h4 id="add-personal-preferences-without-committing-to-the-repo">

329 Добавление личных предпочтений без коммита в репозиторий

330</h4>

331 

332В среде, размещённой Anthropic, добавьте [скрипт настройки](#setup-scripts), который записывает `~/.claude/CLAUDE.md`, для предпочтений, которые вы не хотите помещать в общий репозиторий. Claude Code загружает этот файл в сессии как [пользовательские инструкции](/docs/ru/memory#choose-where-to-put-claude-md-files). Этот пример задаёт предпочтение для сообщений коммитов:

333 

334```bash theme={null}

335#!/bin/bash

336mkdir -p ~/.claude

337cat > ~/.claude/CLAUDE.md <<'EOF'

338Use conventional commit messages.

339EOF

340```

341 

342Поместите скрипт в одну из своих собственных сред, а не в [общую](#organization-shared-environments).

343 

344Выполните `/context` в следующей облачной сессии и убедитесь, что `/root/.claude/CLAUDE.md` отображается в разделе **Memory files**.

327 345 

328<h3 id="installed-tools">346<h3 id="installed-tools">

329 Установленные инструменты347 Установленные инструменты

330</h3>348</h3>

331 349 

332Облачные сеансы поставляются с предустановленными общими рантаймами языков, инструментами сборки и базами данных. Таблица ниже суммирует, что включено по категориям.350Облачные сессии поставляются с предустановленными распространёнными средами выполнения языков, инструментами сборки и базами данных. В таблице ниже приведено, что включено, по категориям.

333 351 

334| Категория | Включено |352| Категория | Включено |

335| :- | :- |353| :- | :- |


345| **Базы данных** | PostgreSQL 16, Redis 7.0 |363| **Базы данных** | PostgreSQL 16, Redis 7.0 |

346| **Утилиты** | git, gh, jq, yq, ripgrep, tmux, vim, nano |364| **Утилиты** | git, gh, jq, yq, ripgrep, tmux, vim, nano |

347 365 

348¹ Bun установлен, но имеет известные [проблемы совместимости с прокси](#install-dependencies-with-a-sessionstart-hook) для получения пакетов.366¹ Bun установлен, но имеет известные [проблемы совместимости с прокси](#install-dependencies-with-a-sessionstart-hook) при загрузке пакетов.

349 367 

350Чтобы получить версии большинства инструментов в этой таблице, попросите Claude запустить `check-tools` в облачном сеансе. Это команда оболочки, установленная на виртуальной машине сеанса, а не команда, которую вы вводите с `/`; вы просите Claude, потому что [Claude запускает все команды виртуальной машины для вас](#run-tests-start-services-and-add-packages). Для инструмента, который он не сообщает, такого как Ruby, PHP, bun, PostgreSQL или Redis, попросите Claude запустить команду версии самого инструмента, например `psql --version`.368Чтобы узнать версии большинства инструментов из этой таблицы, попросите Claude выполнить `check-tools` в облачной сессии. Это shell-команда, установленная на виртуальной машине сессии, а не команда, которую вы вводите с `/`; вы просите Claude, потому что [Claude выполняет все команды на виртуальной машине за вас](#run-tests-start-services-and-add-packages). Для инструмента, о котором она не сообщает, например Ruby, PHP, bun, PostgreSQL или Redis, попросите Claude выполнить собственную команду вывода версии этого инструмента, например `psql --version`.

351 369 

352Версии Node.js установлены в `/opt/node20`, `/opt/node21` и `/opt/node22`, с 22 на `PATH` по умолчанию. Чтобы работать с другой версией, попросите Claude добавить в начало каталог `bin` этой версии, такой как `/opt/node20/bin`, к `PATH`.370Версии Node.js установлены в `/opt/node20`, `/opt/node21` и `/opt/node22`, при этом по умолчанию в `PATH` находится 22. Чтобы работать с другой версией, попросите Claude добавить каталог `bin` этой версии, например `/opt/node20/bin`, в начало `PATH`.

353 371 

354Цепочки инструментов вне этого списка, такие как .NET SDK, не предустановлены, даже когда их реестры пакетов находятся в [списке разрешений по умолчанию](#default-allowed-domains). Установите их с помощью [скрипта установки](#setup-scripts).372Цепочки инструментов, не входящие в этот список, такие как .NET SDK, не предустановлены, даже если их реестры пакетов находятся в [списке разрешённых доменов по умолчанию](#default-allowed-domains). Установите их с помощью [скрипта настройки](#setup-scripts).

355 373 

356<h3 id="work-with-github-issues-and-pull-requests">374<h3 id="work-with-github-issues-and-pull-requests">

357 Работа с проблемами GitHub и запросами на слияние375 Работа с issues и pull requests GitHub

358</h3>376</h3>

359 377 

360Облачные сеансы включают встроенные инструменты GitHub, которые позволяют Claude читать проблемы, перечислять запросы на слияние, получать различия и публиковать комментарии без какой-либо установки. Эти инструменты аутентифицируются через [GitHub прокси](#github-proxy), используя любой метод, который вы настроили в [параметрах аутентификации GitHub](/docs/ru/claude-code-on-the-web#github-authentication-options), поэтому ваш токен никогда не входит в контейнер.378Облачные сессии включают встроенные инструменты GitHub, которые позволяют Claude читать issues, просматривать список pull requests, получать diff и публиковать комментарии без какой-либо настройки. Эти инструменты проходят аутентификацию через [прокси GitHub](#github-proxy), используя тот метод, который вы настроили в разделе [Варианты аутентификации GitHub](/docs/ru/claude-code-on-the-web#github-authentication-options), поэтому ваш токен никогда не попадает в контейнер.

361 379 

362Вы можете установить `GH_TOKEN` или `GITHUB_TOKEN` сами в [параметрах среды](#set-environment-variables), или оставить оба неустановленными и позволить [GitHub прокси](#github-proxy) аутентифицировать вас:380Вы можете сами задать `GH_TOKEN` или `GITHUB_TOKEN` в [настройках среды](#set-environment-variables) или оставить обе переменные незаданными и позволить [прокси GitHub](#github-proxy) выполнять аутентификацию за вас:

363 381 

364* Если вы установите токен, он проходит в контейнер без изменений, поэтому ваши скрипты и GitHub [`gh` CLI](https://cli.github.com) используют его напрямую.382* Если вы задали токен, он передаётся в контейнер без изменений, поэтому ваши скрипты и [`gh` CLI](https://cli.github.com) от GitHub используют его напрямую.

365* Если вы не установите ни один и [GitHub прокси](#github-proxy) обрабатывает аутентификацию для вашего сеанса, обе переменные читаются как строка заполнителя `proxy-injected` в командах, которые запускает Claude, и прокси подставляет ваши реальные учётные данные в исходящих запросах GitHub. `gh` работает без вашего собственного токена, но скрипт, который читает `GITHUB_TOKEN` напрямую, получает заполнитель, а не используемый токен.383* Если вы не задали ни одну из переменных и аутентификацию для вашей сессии выполняет [прокси GitHub](#github-proxy), обе переменные в командах, которые выполняет Claude, содержат строку-заполнитель `proxy-injected`, а прокси подставляет ваши реальные учётные данные в исходящие запросы к GitHub. `gh` работает без вашего собственного токена, но скрипт, который читает `GITHUB_TOKEN` напрямую, получает заполнитель, а не пригодный для использования токен.

366 384 

367Токен, который вы установили, является обычной переменной окружения, поэтому любой, кто использует среду, может его читать; путь прокси держит учётные данные вне конфигурации среды и виртуальной машины сеанса.385Заданный вами токен является обычной переменной окружения, поэтому любой, кто использует среду, может его прочитать; при использовании прокси учётные данные не попадают ни в конфигурацию среды, ни на виртуальную машину сессии.

368 386 

369Чтобы проверить, какой случай применяется к вашему сеансу, попросите Claude запустить `echo $GH_TOKEN`.387Чтобы проверить, какой вариант применяется к вашей сессии, попросите Claude выполнить `echo $GH_TOKEN`.

370 388 

371GitHub [`gh` CLI](https://cli.github.com) предустановлен. Если вам нужна команда `gh`, которую встроенные инструменты не охватывают, такая как `gh release` или `gh workflow run`, попросите Claude запустить её. `gh` читает `GH_TOKEN` автоматически, поэтому вам не нужно запускать `gh auth login`.389[`gh` CLI](https://cli.github.com) от GitHub предустановлен. Если вам нужна команда `gh`, которую не охватывают встроенные инструменты, например `gh release` или `gh workflow run`, попросите Claude выполнить её. `gh` автоматически читает `GH_TOKEN`, поэтому вам не нужно выполнять `gh auth login`.

372 390 

373<h3 id="link-output-back-to-the-session">391<h3 id="link-output-back-to-the-session">

374 Связь вывода обратно с сеансом392 Связь результатов с сессией

375</h3>393</h3>

376 394 

377Каждый облачный сеанс имеет URL стенограммы на claude.ai, и сеанс может читать свой собственный ID из переменной окружения `CLAUDE_CODE_REMOTE_SESSION_ID`. Используйте это, чтобы поместить отслеживаемую ссылку в тела PR, сообщения коммитов, посты Slack или созданные отчёты, чтобы рецензент мог открыть запуск, который их произвёл.395У каждой облачной сессии есть URL транскрипта на claude.ai, и сессия может прочитать свой собственный ID из переменной окружения `CLAUDE_CODE_REMOTE_SESSION_ID`. Используйте это, чтобы добавлять отслеживаемую ссылку в описания PR, сообщения коммитов, публикации в Slack или сгенерированные отчёты, чтобы рецензент мог открыть запуск, который их создал.

378 396 

379Коммиты, которые Claude создаёт в облачном сеансе, включают трейлер git `Claude-Session: <url>`, и тела PR включают URL сеанса на отдельной строке. Чтобы опустить трейлер и ссылку в теле PR, установите [`attribution.sessionUrl`](/docs/ru/settings-reference#attribution-sessionurl) на `false`.397Коммиты, которые Claude создаёт в облачной сессии, содержат git-трейлер `Claude-Session: <url>`, а описания PR содержат URL сессии на отдельной строке. Чтобы не добавлять трейлер и ссылку в описании PR, установите [`attribution.sessionUrl`](/docs/ru/settings-reference#attribution-sessionurl) в значение `false`.

380 398 

381Чтобы включить ссылку сеанса в что-то другое, чем коммит или PR, такое как сообщение Slack, которое публикует Claude, или файл отчёта, который он пишет, попросите Claude запустить следующую команду и использовать её вывод. Команда преобразует префикс `cse_` в значении переменной окружения в префикс `session_`, который ожидает URL стенограммы:399Чтобы добавить ссылку на сессию во что-то, кроме коммита или PR, например в сообщение Slack, которое публикует Claude, или в файл отчёта, который он записывает, попросите Claude выполнить следующую команду и использовать её вывод. Команда заменяет префикс `cse_` в значении переменной окружения на префикс `session_`, который ожидает URL транскрипта:

382 400 

383```bash theme={null}401```bash theme={null}

384echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID/#cse_/session_}"402echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID/#cse_/session_}"


388 Запуск тестов, запуск сервисов и добавление пакетов406 Запуск тестов, запуск сервисов и добавление пакетов

389</h3>407</h3>

390 408 

391Вы не получаете оболочку в виртуальную машину сеанса. Claude запускает каждую команду для вас, поэтому сформулируйте задачи в этом разделе как запросы в вашем приглашении.409Вы не получаете доступ к оболочке на виртуальной машине сессии. Claude выполняет каждую команду за вас, поэтому формулируйте задачи из этого раздела как просьбы в вашем промпте.

392 410 

393<h4 id="run-tests">411<h4 id="run-tests">

394 Запуск тестов412 Запуск тестов

395</h4>413</h4>

396 414 

397Claude запускает тесты как часть работы над задачей. Попросите это в вашем приглашении, например "исправьте неудачные тесты в `tests/`" или "запустите pytest после каждого изменения." Средства запуска тестов, которые поставляются с [предустановленными цепочками инструментов](#installed-tools), такие как pytest и cargo test, работают без дополнительной установки. Средство запуска, которое ваш проект объявляет как зависимость, такое как jest, устанавливается с вашими зависимостями.415Claude запускает тесты в ходе работы над задачей. Попросите об этом в промпте, например «исправь падающие тесты в `tests/`» или «запускай pytest после каждого изменения». Средства запуска тестов, поставляемые с [предустановленными цепочками инструментов](#installed-tools), такие как pytest и cargo test, работают без дополнительной настройки. Средство запуска, которое ваш проект объявляет как зависимость, например jest, устанавливается вместе с вашими зависимостями.

398 416 

399<h4 id="start-services">417<h4 id="start-services">

400 Запуск сервисов418 Запуск сервисов

401</h4>419</h4>

402 420 

403PostgreSQL и Redis предустановлены, но не работают по умолчанию. Попросите Claude запустить тот, который вам нужен; команды, которые он запускает:421PostgreSQL и Redis предустановлены, но по умолчанию не запущены. Попросите Claude запустить нужный вам сервис; он выполняет следующие команды:

404 422 

405```bash theme={null}423```bash theme={null}

406service postgresql start424service postgresql start


410service redis-server start428service redis-server start

411```429```

412 430 

413Docker доступен для запуска контейнеризованных сервисов. Попросите Claude запустить `docker compose up`, чтобы запустить сервисы вашего проекта. Сетевой доступ для получения образов следует [уровню доступа](#access-levels) вашей среды, и [доверенные значения по умолчанию](#default-allowed-domains) включают Docker Hub и другие общие реестры.431Docker доступен для запуска контейнеризованных сервисов. Попросите Claude выполнить `docker compose up`, чтобы запустить сервисы вашего проекта. Сетевой доступ для загрузки образов определяется [уровнем доступа](#access-levels) вашей среды, а [доверенные значения по умолчанию](#default-allowed-domains) включают Docker Hub и другие распространённые реестры.

414 432 

415Если ваши образы большие или медленно получаются, добавьте `docker compose pull` или `docker compose build` в ваш [скрипт установки](#setup-scripts). [Кэш среды](#environment-caching) сохраняет полученные образы, поэтому каждый новый сеанс имеет их на диске. Кэш хранит только файлы, а не работающие процессы, поэтому Claude всё ещё запускает контейнеры каждый сеанс.433Если ваши образы большие или загружаются медленно, добавьте `docker compose pull` или `docker compose build` в ваш [скрипт настройки](#setup-scripts). [Кэш среды](#environment-caching) сохраняет загруженные образы, поэтому в каждой новой сессии они уже есть на диске. Кэш хранит только файлы, а не запущенные процессы, поэтому Claude по-прежнему запускает контейнеры в каждой сессии.

416 434 

417<h4 id="add-packages">435<h4 id="add-packages">

418 Добавление пакетов436 Добавление пакетов

419</h4>437</h4>

420 438 

421Чтобы добавить пакеты, которые не предустановлены, используйте [скрипт установки](#setup-scripts). [Кэш среды](#environment-caching) сохраняет то, что устанавливает скрипт, поэтому пакеты, которые вы устанавливаете там, доступны в начале каждого сеанса без переустановки каждый раз. Вы также можете попросить Claude установить пакеты в середине сеанса, но эти установки не переносятся в другие сеансы.439Чтобы добавить пакеты, которые не предустановлены, используйте [скрипт настройки](#setup-scripts). [Кэш среды](#environment-caching) сохраняет то, что устанавливает скрипт, поэтому установленные там пакеты доступны в начале каждой сессии без повторной установки. Вы также можете попросить Claude установить пакеты посреди сессии, но такие установки не переносятся в другие сессии.

422 440 

423<h3 id="resource-limits">441<h3 id="resource-limits">

424 Ограничения ресурсов442 Ограничения ресурсов

425</h3>443</h3>

426 444 

427Облачные сеансы в среде, размещённой Anthropic, работают с приблизительными потолками ресурсов, которые могут меняться со временем:445Облачные сессии в среде, размещённой Anthropic, работают с приблизительными лимитами ресурсов, которые могут меняться со временем:

428 446 

429* 4 vCPU447* 4 vCPU

430* 16 ГБ ОЗУ448* 16 ГБ оперативной памяти

431* 30 ГБ диска449* 30 ГБ дискового пространства

432 450 

433Виртуальная машина может остановить задачи, которые требуют значительно больше памяти, такие как большие работы сборки или тесты, требующие много памяти. Для рабочих нагрузок, превышающих эти ограничения, используйте [Remote Control](/docs/ru/remote-control), чтобы запустить Claude Code на вашем собственном оборудовании, или запустите облачные сеансы в [самостоятельно размещённой среде](/docs/ru/self-hosted-environments) на вычислениях, которые работает ваша организация.451Виртуальная машина может останавливать задачи, которым требуется значительно больше памяти, например крупные задания сборки или тесты, интенсивно использующие память. Для рабочих нагрузок, превышающих эти ограничения, используйте [Remote Control](/docs/ru/remote-control), чтобы запускать Claude Code на собственном оборудовании, или запускайте облачные сессии в [самостоятельно размещённой среде](/docs/ru/self-hosted-environments) на вычислительных ресурсах, которыми управляет ваша организация.

434 452 

435<h3 id="time-limits">453<h3 id="time-limits">

436 Ограничения времени454 Ограничения времени

437</h3>455</h3>

438 456 

439В среде, размещённой Anthropic, эти ограничения времени применяются к долгоживущей работе в облачном сеансе, такой как сборка, установка или запуск теста. Каждая запись ссылается на раздел, который определяет ограничение.457В среде, размещённой Anthropic, следующие ограничения времени применяются к длительной работе в облачной сессии, такой как сборка, установка или прогон тестов. Каждый пункт ссылается на раздел, в котором определено ограничение.

440 458 

441* **Команды, которые запускает Claude**: облачная среда не устанавливает свой собственный timeout команды, поэтому применяются значения по умолчанию инструмента Bash. Claude ждёт 2 минуты для команды переднего плана по умолчанию и может запросить до 10 минут.459* **Команды, которые выполняет Claude**: облачная среда не задаёт собственный таймаут команд, поэтому применяются значения по умолчанию инструмента Bash. По умолчанию Claude ждёт команду переднего плана 2 минуты и может запросить до 10 минут.

442 460 

443 Когда команда достигает своего [timeout](/docs/ru/tools-reference#timeout-and-output-limits), Claude Code [перемещает её в фон](/docs/ru/tools-reference#foreground-commands-that-move-to-the-background) вместо того, чтобы остановить её, если только команда не начинается с `sleep`. Команда, перемещённая таким образом, может продолжать работать до 30 дополнительных минут, прежде чем Claude Code остановит её в её [ограничении времени фона](/docs/ru/tools-reference#time-limit-for-background-commands). Установка `BASH_DEFAULT_TIMEOUT_MS` выше `1800000` миллисекунд удлиняет это ограничение, а также значение по умолчанию переднего плана.461 Когда команда достигает своего [таймаута](/docs/ru/tools-reference#timeout-and-output-limits), Claude Code [переводит её в фоновый режим](/docs/ru/tools-reference#foreground-commands-that-move-to-the-background), а не останавливает, если только команда не начинается с `sleep`. Команда, переведённая таким образом, может продолжать работать ещё до 30 минут, после чего Claude Code останавливает её по достижении [ограничения времени для фоновых команд](/docs/ru/tools-reference#time-limit-for-background-commands). Установка `BASH_DEFAULT_TIMEOUT_MS` выше `1800000` миллисекунд увеличивает это ограничение, а также значение по умолчанию для команд переднего плана.

444* **SessionStart hooks**: Claude Code отменяет hook `command` после 600 секунд, если вы не установите [`timeout`](/docs/ru/hooks#common-fields), в секундах, на запись hook. Claude Code не применяет timeout на hook, который вы запускаете с [`async: true`](/docs/ru/hooks#run-hooks-in-the-background).462* **Хуки SessionStart**: Claude Code отменяет хук `command` через 600 секунд, если вы не задали [`timeout`](/docs/ru/hooks#common-fields) в секундах в записи хука. Claude Code не применяет таймаут к хуку, который вы запускаете с [`async: true`](/docs/ru/hooks#run-hooks-in-the-background).

445* **Setup script**: скрипт, который занимает больше примерно пяти минут, не кэшируется. [Требования скрипта](#script-requirements) охватывает, как оставаться ниже этого.463* **Скрипт настройки**: скрипт, выполнение которого занимает больше примерно пяти минут, не кэшируется. О том, как уложиться в это время, рассказывается в разделе [Требования к скрипту](#script-requirements).

446* **Idle sessions**: после нескольких минут без активности, VM сеанса приостанавливается с сохранёнными файлами, и приостановленная VM может позже быть восстановлена. [Установка переменных среды](#set-environment-variables) описывает, что сеанс подхватывает в каждом случае, и [Environment expired](/docs/ru/claude-code-on-the-web#environment-expired) охватывает, как повторно открыть сеанс, чей VM был восстановлен.464* **Неактивные сессии**: после нескольких минут без активности виртуальная машина сессии приостанавливается с сохранением файлов, а приостановленная виртуальная машина позже может быть освобождена. В разделе [Установка переменных окружения](#set-environment-variables) описано, что сессия подхватывает в каждом случае, а в разделе [Environment expired](/docs/ru/claude-code-on-the-web#environment-expired) — как заново открыть сессию, виртуальная машина которой была освобождена.

447 465 

448Чтобы повысить timeouts команд для сеансов среды, добавьте [`BASH_DEFAULT_TIMEOUT_MS` и `BASH_MAX_TIMEOUT_MS`](/docs/ru/env-vars#variables) в её [переменные среды](#set-environment-variables). Оба принимают миллисекунды. Например, `BASH_DEFAULT_TIMEOUT_MS=600000` делает 10 минут значением по умолчанию.466Чтобы увеличить таймауты команд для сессий среды, добавьте [`BASH_DEFAULT_TIMEOUT_MS` и `BASH_MAX_TIMEOUT_MS`](/docs/ru/env-vars#variables) в её [переменные окружения](#set-environment-variables). Обе переменные принимают значения в миллисекундах. Например, `BASH_DEFAULT_TIMEOUT_MS=600000` устанавливает 10 минут в качестве значения по умолчанию.

449 467 

450<h2 id="setup-scripts">468<h2 id="setup-scripts">

451 Скрипты установки469 Скрипты установки

Details

1586 1586 

1587Сеанс проходит через реалистичный поток с репрезентативными подсчётами токенов:1587Сеанс проходит через реалистичный поток с репрезентативными подсчётами токенов:

1588 1588 

1589* **Перед тем, как вы что-либо введёте**: CLAUDE.md, автоматическая память, имена инструментов MCP и описания skills загружаются в контекст. [Файлы AGENTS.md](/docs/ru/memory#agents-md) также могут загружаться, самостоятельно или вместе с CLAUDE.md. Ваша собственная настройка может добавить больше здесь, например [стиль вывода](/docs/ru/output-styles) или текст из [`--append-system-prompt`](/docs/ru/cli-reference).1589* **Перед тем, как вы что-либо введёте**: CLAUDE.md, автоматическая память, имена инструментов MCP и описания скиллов загружаются в контекст. [Файлы AGENTS.md](/docs/ru/memory#agents-md) могут загружаться вместо CLAUDE.md. Ваша собственная настройка может добавить больше здесь, например [стиль вывода](/docs/ru/output-styles) или текст из [`--append-system-prompt`](/docs/ru/cli-reference).

1590* **Во время работы Claude**: каждое чтение файла добавляется в контекст, [правила с областью действия пути](/docs/ru/memory#path-specific-rules) загружаются автоматически вместе с соответствующими файлами, и [hook PostToolUse](/docs/ru/hooks-guide) срабатывает после каждого редактирования.1590* **Во время работы Claude**: каждое чтение файла добавляется в контекст, [правила с областью действия пути](/docs/ru/memory#path-specific-rules) загружаются автоматически вместе с соответствующими файлами, и [hook PostToolUse](/docs/ru/hooks-guide) срабатывает после каждого редактирования.

1591* **Последующий prompt**: [subagent](/docs/ru/sub-agents) обрабатывает исследование в своём собственном отдельном контекстном окне, поэтому большие чтения файлов остаются вне вашего. Только резюме и небольшой трейлер метаданных возвращаются.1591* **Последующий prompt**: [subagent](/docs/ru/sub-agents) обрабатывает исследование в своём собственном отдельном контекстном окне, поэтому большие чтения файлов остаются вне вашего. Только резюме и небольшой трейлер метаданных возвращаются.

1592* **В конце прохождения**: вы запускаете `/compact`, который заменяет историю разговора структурированным резюме. Большая часть содержимого при запуске перезагружается автоматически; таблица ниже показывает, что происходит с каждым механизмом.1592* **В конце прохождения**: вы запускаете `/compact`, который заменяет историю разговора структурированным резюме. Большая часть содержимого при запуске перезагружается автоматически; таблица ниже показывает, что происходит с каждым механизмом.

costs.md +1 −1

Details

394* **Используйте plan mode для сложных задач**: Нажмите Shift+Tab для входа в [plan mode](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode) перед реализацией. Claude исследует кодовую базу и предлагает подход для вашего одобрения, предотвращая дорогостоящую переделку, когда первоначальное направление неправильно.394* **Используйте plan mode для сложных задач**: Нажмите Shift+Tab для входа в [plan mode](/docs/ru/permission-modes#analyze-before-you-edit-with-plan-mode) перед реализацией. Claude исследует кодовую базу и предлагает подход для вашего одобрения, предотвращая дорогостоящую переделку, когда первоначальное направление неправильно.

395* **Корректируйте курс рано**: Если Claude начинает идти в неправильном направлении, нажмите Escape для немедленной остановки. Используйте `/rewind` или двойное нажатие Escape для восстановления разговора и кода к предыдущей контрольной точке.395* **Корректируйте курс рано**: Если Claude начинает идти в неправильном направлении, нажмите Escape для немедленной остановки. Используйте `/rewind` или двойное нажатие Escape для восстановления разговора и кода к предыдущей контрольной точке.

396* **Дайте цели проверки**: Включите тестовые случаи, вставьте скриншоты или определите ожидаемый вывод в вашем prompt. Когда Claude может проверить свою собственную работу, он ловит проблемы перед тем, как вам нужно запросить исправления.396* **Дайте цели проверки**: Включите тестовые случаи, вставьте скриншоты или определите ожидаемый вывод в вашем prompt. Когда Claude может проверить свою собственную работу, он ловит проблемы перед тем, как вам нужно запросить исправления.

397* **Тестируйте постепенно**: Напишите один файл, протестируйте его, затем продолжайте. Это ловит проблемы рано, когда они дешевы в исправлении.397* **Тестируйте постепенно**: Напишите один файл, протестируйте его, затем продолжайте. Это позволяет выявить проблемы рано.

398 398 

399<h2 id="background-token-usage">399<h2 id="background-token-usage">

400 Использование токенов в фоновом режиме400 Использование токенов в фоновом режиме

desktop.md +1 −1

Details

1092Чтобы увидеть, какую версию приложения desktop вы запускаете:1092Чтобы увидеть, какую версию приложения desktop вы запускаете:

1093 1093 

1094* **macOS**: нажмите **Claude** в строке меню, затем **About Claude**1094* **macOS**: нажмите **Claude** в строке меню, затем **About Claude**

1095* **Windows**: нажмите **Help**, затем **About**1095* **Windows**: нажмите **Help**, затем **About Claude**

1096 1096 

1097Нажмите на номер версии, чтобы скопировать его в буфер обмена.1097Нажмите на номер версии, чтобы скопировать его в буфер обмена.

1098 1098 

Details

92* Сохранить снимок экрана с помощью **Cmd+S** или запись экрана с помощью **Cmd+R**, используя кнопки захвата панели или сочетания клавиш; файлы сохраняются на ваш Desktop92* Сохранить снимок экрана с помощью **Cmd+S** или запись экрана с помощью **Cmd+R**, используя кнопки захвата панели или сочетания клавиш; файлы сохраняются на ваш Desktop

93* Остановить трансляцию устройства без его выключения, нажав **Detach simulator**, что вернёт панель в состояние **Attach simulator**93* Остановить трансляцию устройства без его выключения, нажав **Detach simulator**, что вернёт панель в состояние **Attach simulator**

94 94 

95Чтобы настроить видеопоток от симулятора, откройте меню **Display** панели. Снизьте **Frame rate** или **Resolution**, если панель перегружает ваш Mac. Обе настройки изменяют способ отображения устройства панелью, а не способ работы приложения.95Если на панели отображается меню **Display**, используйте его, чтобы настроить видеопоток от симулятора. Снизьте **Frame rate** или **Resolution**, если панель перегружает ваш Mac. Обе настройки изменяют способ отображения устройства панелью, а не способ работы приложения.

96 96 

97Вы и Claude управляете одним и тем же устройством, поэтому ваши касания изменяют состояние приложения, которое видит Claude. Чтобы Claude проверил конкретный экран, перейдите к нему, касаясь, затем попросите. Пока Claude управляет устройством, панель показывает значок **Claude is using this device** над экраном; воздержитесь от касания до тех пор, пока значок не исчезнет, чтобы результат отражал приложение, а не ваш ввод.97Вы и Claude управляете одним и тем же устройством, поэтому ваши касания изменяют состояние приложения, которое видит Claude. Чтобы Claude проверил конкретный экран, перейдите к нему, касаясь, затем попросите. Пока Claude управляет устройством, панель показывает значок **Claude is using this device** над экраном; воздержитесь от касания до тех пор, пока значок не исчезнет, чтобы результат отражал приложение, а не ваш ввод.

98 98 

env-vars.md +1 −0

Details

354| `CLAUDE_CODE_PERFORCE_MODE` | Установите `1`, чтобы включить защиту от записи с учётом Perforce. Если переменная задана, Edit, Write и NotebookEdit завершаются неудачей с подсказкой `p4 edit <file>`, когда у целевого файла отсутствует бит записи для владельца, который Perforce снимает у синхронизированных файлов, пока `p4 edit` не откроет их. Это не позволяет Claude Code обходить отслеживание изменений Perforce |354| `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` |355| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Переопределяет корневой каталог плагинов. Несмотря на название, задаёт родительский каталог, а не сам кэш: маркетплейсы и кэш плагинов находятся в подкаталогах по этому пути. По умолчанию `~/.claude/plugins` |

356| `CLAUDE_CODE_PLUGIN_DIRS` | Каталоги плагинов для загрузки в сессию; каждый загружается так же, как его загружает флаг [`--plugin-dir`](/docs/ru/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Разделяйте несколько путей символом `:` в Unix или `;` в Windows. Указывайте каждый путь как абсолютный или начинайте его с `~`, поскольку Claude Code пропускает относительные пути. Требуется Claude Code v2.1.280 или новее. См. [Загрузка плагина для одной сессии](/docs/ru/plugins/create#load-a-directory-or-archive-for-one-session) |356| `CLAUDE_CODE_PLUGIN_DIRS` | Каталоги плагинов для загрузки в сессию; каждый загружается так же, как его загружает флаг [`--plugin-dir`](/docs/ru/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Разделяйте несколько путей символом `:` в Unix или `;` в Windows. Указывайте каждый путь как абсолютный или начинайте его с `~`, поскольку Claude Code пропускает относительные пути. Требуется Claude Code v2.1.280 или новее. См. [Загрузка плагина для одной сессии](/docs/ru/plugins/create#load-a-directory-or-archive-for-one-session) |

357| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Управляет тем, перезагружает ли Claude Code [мод](/docs/ru/plugins/mods/overview) при изменении файлов мода. Перезагрузка применяется к моду, который вы загружаете из каталога с помощью `--plugin-dir`, и по умолчанию включена в интерактивных сессиях. Установите `1`, чтобы включить её также в неинтерактивных сессиях, или `0`, чтобы отключить её во всех сессиях. Требуется Claude Code v2.1.287 или новее. См. [настройки и переменные окружения мода](/docs/ru/plugins/mods/reference#settings-and-environment-variables) |

357| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Таймаут в миллисекундах для клонирования или обновления маркетплейса плагинов (по умолчанию: 120000). Увеличьте это значение для больших репозиториев или медленных сетевых подключений. См. [Git clone timed out](/docs/ru/plugins/troubleshooting#git-clone-timed-out-after-120s) |358| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Таймаут в миллисекундах для клонирования или обновления маркетплейса плагинов (по умолчанию: 120000). Увеличьте это значение для больших репозиториев или медленных сетевых подключений. См. [Git clone timed out](/docs/ru/plugins/troubleshooting#git-clone-timed-out-after-120s) |

358| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Установите `1`, чтобы пропустить попытку повторного клонирования и продолжить использовать существующую копию маркетплейса, когда при обновлении маркетплейса не удаётся связаться с удалённым репозиторием или пройти аутентификацию. Полезно в автономных или изолированных средах, где повторное клонирование завершилось бы такой же ошибкой. См. [Обновления маркетплейса не выполняются в автономных средах](/docs/ru/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |359| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Установите `1`, чтобы пропустить попытку повторного клонирования и продолжить использовать существующую копию маркетплейса, когда при обновлении маркетплейса не удаётся связаться с удалённым репозиторием или пройти аутентификацию. Полезно в автономных или изолированных средах, где повторное клонирование завершилось бы такой же ошибкой. См. [Обновления маркетплейса не выполняются в автономных средах](/docs/ru/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |

359| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Установите `1`, чтобы клонировать источники GitHub в сокращённой форме `owner/repo` по HTTPS вместо SSH. Применяется к установке и обновлению плагинов, а также к `/plugin marketplace add` и `update`. Полезно в CI-раннерах, контейнерах или любых средах без настроенного SSH-ключа для `github.com` |360| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Установите `1`, чтобы клонировать источники GitHub в сокращённой форме `owner/repo` по HTTPS вместо SSH. Применяется к установке и обновлению плагинов, а также к `/plugin marketplace add` и `update`. Полезно в CI-раннерах, контейнерах или любых средах без настроенного SSH-ключа для `github.com` |

errors.md +3 −4

Details

197| `Cloud sessions cannot be created from a --restricted session` | [Command-line errors](#cloud-sessions-cannot-be-created-from-a-restricted-session) |197| `Cloud sessions cannot be created from a --restricted session` | [Command-line errors](#cloud-sessions-cannot-be-created-from-a-restricted-session) |

198| `Cloud sessions are disabled by your organization's policy` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |198| `Cloud sessions are disabled by your organization's policy` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |

199| `Couldn't verify your organization's policy for cloud sessions` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |199| `Couldn't verify your organization's policy for cloud sessions` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |

200| `Cloud sessions need a claude.ai sign-in` | [Unable to get organization UUID](/docs/ru/claude-code-on-the-web#unable-to-get-organization-uuid) |

200| `Error: --json-schema is not a valid JSON Schema` | [Command-line errors](#the-json-schema-value-is-not-a-valid-json-schema) |201| `Error: --json-schema is not a valid JSON Schema` | [Command-line errors](#the-json-schema-value-is-not-a-valid-json-schema) |

201| `Error: Invalid --agents configuration:` | [Command-line errors](#invalid-agents-configuration) |202| `Error: Invalid --agents configuration:` | [Command-line errors](#invalid-agents-configuration) |

202| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Command-line errors](#invalid-agents-configuration) |203| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Command-line errors](#invalid-agents-configuration) |


387* Соединение, которое, как обнаружил Claude Code, было разорвано тем, что ваш компьютер перешёл в режим сна в середине запроса. Claude Code считает это разорванным соединением в соответствии с приведёнными выше правилами; как только метка повторной попытки назовёт конкретную причину, она будет читаться как `Connection lost while your computer was asleep`, и если ход завершается после того, как Claude завершил размышления, но до любого текста или вызова инструмента, сообщение читается как `Your computer went to sleep before a response was produced`.388* Соединение, которое, как обнаружил Claude Code, было разорвано тем, что ваш компьютер перешёл в режим сна в середине запроса. Claude Code считает это разорванным соединением в соответствии с приведёнными выше правилами; как только метка повторной попытки назовёт конкретную причину, она будет читаться как `Connection lost while your computer was asleep`, и если ход завершается после того, как Claude завершил размышления, но до любого текста или вызова инструмента, сообщение читается как `Your computer went to sleep before a response was produced`.

388* Застопорившийся поток ответа, когда заголовки ответа прибыли, но ни одна часть ответа Claude не прибыла, или когда Claude завершил размышления, но не начал какой-либо текст или вызов инструмента: Claude Code прерывает застопорившееся соединение и повторно отправляет запрос максимум один раз, вне бюджета из 10 попыток выше. Если ответ застопорится во второй раз после того, как Claude завершил размышления, но до любого текста или вызова инструмента, Claude Code завершает ход с `The response stalled before a response was produced`.389* Застопорившийся поток ответа, когда заголовки ответа прибыли, но ни одна часть ответа Claude не прибыла, или когда Claude завершил размышления, но не начал какой-либо текст или вызов инструмента: Claude Code прерывает застопорившееся соединение и повторно отправляет запрос максимум один раз, вне бюджета из 10 попыток выше. Если ответ застопорится во второй раз после того, как Claude завершил размышления, но до любого текста или вызова инструмента, Claude Code завершает ход с `The response stalled before a response was produced`.

389* Потоковый запрос, на который API никогда не отвечает заголовками ответа, на соединении, где [действует дедлайн первого байта](/docs/ru/network-config#streaming-idle-watchdogs): Claude Code прерывает его по истечении дедлайна и повторно отправляет его максимум один раз за запрос модели, в пределах бюджета повторных попыток, затем завершает ход с [No response from API](#no-response-from-api), если эта попытка также остаётся без ответа. На других соединениях запрос ждёт `API_TIMEOUT_MS`. Когда вы устанавливаете `CLAUDE_CODE_RETRY_WATCHDOG`, ограничение на одну повторную попытку не применяется.390* Потоковый запрос, на который API никогда не отвечает заголовками ответа, на соединении, где [действует дедлайн первого байта](/docs/ru/network-config#streaming-idle-watchdogs): Claude Code прерывает его по истечении дедлайна и повторно отправляет его максимум один раз за запрос модели, в пределах бюджета повторных попыток, затем завершает ход с [No response from API](#no-response-from-api), если эта попытка также остаётся без ответа. На других соединениях запрос ждёт `API_TIMEOUT_MS`. Когда вы устанавливаете `CLAUDE_CODE_RETRY_WATCHDOG`, ограничение на одну повторную попытку не применяется.

391* Потоковый ответ, который выходной фильтр содержимого API останавливает до того, как Claude либо завершил размышления, либо начал какой-либо текст или вызов инструмента. Claude Code повторно отправляет запрос один раз, в пределах бюджета повторных попыток, и показывает [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy), если фильтр останавливает и второй ответ.

390* Временные дроссели 429, но не `429` лимита расходов шлюза, который не является дросселем; см. [Spend limit reached](#spend-limit-reached).392* Временные дроссели 429, но не `429` лимита расходов шлюза, который не является дросселем; см. [Spend limit reached](#spend-limit-reached).

391 * Когда вы вошли с подпиской claude.ai, это включает дроссели 429, которые не содержат заголовков квоты вашего плана. До v2.1.199 Claude Code повторял эти дроссели только при входе с API-ключом и через Enterprise.393 * Когда вы вошли с подпиской claude.ai, это включает дроссели 429, которые не содержат заголовков квоты вашего плана. До v2.1.199 Claude Code повторял эти дроссели только при входе с API-ключом и через Enterprise.

392* Запрос отклонён, потому что входные данные плюс `max_tokens` превышают лимит контекста. Повторная отправка его без изменений приведёт к тому же результату, поэтому Claude Code повторяет с уменьшенным `max_tokens` и прекращает повторные попытки и вместо этого выполняет компактирование в двух случаях:394* Запрос отклонён, потому что входные данные плюс `max_tokens` превышают лимит контекста. Повторная отправка его без изменений приведёт к тому же результату, поэтому Claude Code повторяет с уменьшенным `max_tokens` и прекращает повторные попытки и вместо этого выполняет компактирование в двух случаях:


405* [Amazon Bedrock streaming response with an unexpected content-type](#bedrock-streaming-response-has-an-unexpected-content-type), потому что шлюз или прокси, переписывающие ответ, переписали бы повторную попытку таким же образом. Требуется Claude Code v2.1.208 или позже.407* [Amazon Bedrock streaming response with an unexpected content-type](#bedrock-streaming-response-has-an-unexpected-content-type), потому что шлюз или прокси, переписывающие ответ, переписали бы повторную попытку таким же образом. Требуется Claude Code v2.1.208 или позже.

406* Непотоковая повторная попытка неудавшегося потокового запроса, которая получает статус успеха, но [no Claude API message in the body](#api-returned-an-empty-or-malformed-response). Claude Code завершает ход с этой ошибкой.408* Непотоковая повторная попытка неудавшегося потокового запроса, которая получает статус успеха, но [no Claude API message in the body](#api-returned-an-empty-or-malformed-response). Claude Code завершает ход с этой ошибкой.

407* Запрос, который проверка политики вашей организации отклонила, который отображается как строка `API Error:`, содержащая сообщение об отказе. Администраторы вашей организации настроили проверку с помощью [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), функции Claude Enterprise, и сообщение заканчивается инструкциями, которые они настроили, или по умолчанию говорит вам связаться с ними. Claude Code не отправляет отклонённый запрос повторно на ту же модель или на [резервную модель](/docs/ru/model-config#fallback-model-chains), потому что отказ касается содержимого запроса, а не модели. До v2.1.239 Claude Code мог повторно отправить отклонённый запрос без потоковой передачи или на настроенную резервную модель перед отображением отказа.409* Запрос, который проверка политики вашей организации отклонила, который отображается как строка `API Error:`, содержащая сообщение об отказе. Администраторы вашей организации настроили проверку с помощью [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), функции Claude Enterprise, и сообщение заканчивается инструкциями, которые они настроили, или по умолчанию говорит вам связаться с ними. Claude Code не отправляет отклонённый запрос повторно на ту же модель или на [резервную модель](/docs/ru/model-config#fallback-model-chains), потому что отказ касается содержимого запроса, а не модели. До v2.1.239 Claude Code мог повторно отправить отклонённый запрос без потоковой передачи или на настроенную резервную модель перед отображением отказа.

408* Ответ, который заблокировал выходной фильтр содержимого API. Claude Code сразу показывает [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) и не повторяет и не отправляет этот запрос повторно.

409 410 

410<h3 id="what-you-see-while-claude-code-retries-or-waits">411<h3 id="what-you-see-while-claude-code-retries-or-waits">

411 Что вы видите, пока Claude Code повторяет или ждёт412 Что вы видите, пока Claude Code повторяет или ждёт


2299 2300 

2300**Что делать:**2301**Что делать:**

2301 2302 

2302* Уменьшите изображение перед вставкой. API принимает изображения размером до 8000 пикселей по длинной стороне для одного изображения или до 2000 пикселей, когда в контексте много изображений.2303* Уменьшите изображение перед вставкой. API принимает изображения размером до 8000 пикселей по длинной стороне для одного изображения или до 3000 пикселей, когда в контексте более 20 изображений.

2303* Сделайте снимок только нужной области вместо всего экрана2304* Сделайте снимок только нужной области вместо всего экрана

2304 2305 

2305<h3 id="unable-to-resize-image">2306<h3 id="unable-to-resize-image">


2905API Error: Output blocked by content filtering policy2906API Error: Output blocked by content filtering policy

2906```2907```

2907 2908 

2908Claude Code показывает ошибку сразу после получения блокировки и на этом завершает запрос. Он не повторяет запрос, не отправляет его повторно без потоковой передачи и не переключается на [резервную модель](/docs/ru/model-config#fallback-model-chains). До версии 2.1.285 Claude Code мог повторно отправлять заблокированный запрос и повторять попытки, иногда в течение нескольких минут, прежде чем показать ошибку.

2909 

2910**Что делать:**2909**Что делать:**

2911 2910 

2912* Переформулируйте последнее сообщение или выберите другой подход2911* Переформулируйте последнее сообщение или выберите другой подход

fast-mode.md +1 −1

Details

88 88 

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

90 90 

91Первый раз, когда вы включаете быстрый режим в разговоре, вы платите полную цену быстрого режима без кэша за входные токены для всего контекста разговора. Чем глубже вы находитесь в разговоре, тем больше это стоит, поэтому включение быстрого режима с самого начала дешевле. Стоимость применяется один раз за разговор, поэтому отключение и повторное включение быстрого режима позже не повторяет её. Для механизма см. [как быстрый режим взаимодействует с кэшем подсказок](/docs/ru/prompt-caching#turning-on-fast-mode).91Когда вы впервые включаете быстрый режим в диалоге, вы платите полную цену быстрого режима за некэшированные входные токены для всего контекста диалога. Чем дальше вы продвинулись в диалоге, тем дороже это обходится, поэтому плата минимальна, если включить быстрый режим в самом начале. Эта стоимость взимается один раз за диалог, поэтому если позже отключить и снова включить быстрый режим, она не повторится. Описание механизма см. в разделе [как быстрый режим взаимодействует с кэшем промптов](/docs/ru/prompt-caching#turning-on-fast-mode).

92 92 

93<h3 id="see-where-fast-mode-spend-appears">93<h3 id="see-where-fast-mode-spend-appears">

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

glossary.md +1 −1

Details

130 130 

131Файл markdown с постоянными инструкциями, которые вы пишете для Claude, загружаемый в начале каждого сеанса как пользовательское сообщение после системного prompt. Поместите сюда соглашения проекта, заметки об архитектуре и правила "всегда делай X". CLAUDE.md в корне проекта сохраняется при [compaction](#compaction) и перечитывается свежим с диска после этого.131Файл markdown с постоянными инструкциями, которые вы пишете для Claude, загружаемый в начале каждого сеанса как пользовательское сообщение после системного prompt. Поместите сюда соглашения проекта, заметки об архитектуре и правила "всегда делай X". CLAUDE.md в корне проекта сохраняется при [compaction](#compaction) и перечитывается свежим с диска после этого.

132 132 

133Вы можете разместить CLAUDE.md в области проекта в `./CLAUDE.md` или `./.claude/CLAUDE.md`, в области пользователя в `~/.claude/CLAUDE.md` или как [managed policy](#managed-settings) для вашей организации. Все обнаруженные файлы объединяются в контекст, а не переопределяют друг друга, упорядочены от самой широкой области к наиболее специфичной. Claude Code также может загружать файлы [AGENTS.md](#agents-md) проекта, отдельно или вместе с CLAUDE.md.133Вы можете разместить CLAUDE.md на уровне проекта в `./CLAUDE.md` или `./.claude/CLAUDE.md`, на уровне пользователя в `~/.claude/CLAUDE.md` или как [управляемую политику](#managed-settings) для вашей организации. Все обнаруженные файлы объединяются в контексте, а не переопределяют друг друга, и упорядочиваются от самой широкой области действия к наиболее конкретной. Claude Code также может загружать файлы [AGENTS.md](#agents-md) проекта вместо CLAUDE.md.

134 134 

135Подробнее: [CLAUDE.md files](/docs/ru/memory#claude-md-files)135Подробнее: [CLAUDE.md files](/docs/ru/memory#claude-md-files)

136 136 

Details

210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1

211```211```

212 212 

213Большинство версий моделей имеют соответствующую переменную `VERTEX_REGION_CLAUDE_*`. Полный список см. в [справочнике переменных окружения](/docs/ru/env-vars). Проверьте [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden), чтобы определить, какие модели поддерживают глобальные конечные точки в сравнении с региональными только.213Большинство версий моделей имеют соответствующую переменную `VERTEX_REGION_CLAUDE_*`. Полный список см. в [справочнике переменных окружения](/docs/ru/env-vars#variables). Проверьте [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden), чтобы определить, какие модели поддерживают глобальные эндпоинты, а какие только региональные.

214 214 

215Если значение региона не похоже на имя региона или местоположения, Claude Code рассматривает его как неустановленное. Например, Claude Code рассматривает значение, содержащее косую черту, точку или пробел, как неустановленное. Claude Code откатывается на другой источник для каждой переменной:215Если значение региона не похоже на имя региона или местоположения, Claude Code рассматривает его как неустановленное. Например, Claude Code рассматривает значение, содержащее косую черту, точку или пробел, как неустановленное. Claude Code откатывается на другой источник для каждой переменной:

216 216 


364 364 

365* Подтвердите, что модель включена в [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)365* Подтвердите, что модель включена в [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)

366* Проверьте, что модель доступна в указанном вами местоположении. Некоторые модели предлагаются только на `global` или многорегиональных местоположениях, таких как `eu` и `us`, а не в конкретных регионах366* Проверьте, что модель доступна в указанном вами местоположении. Некоторые модели предлагаются только на `global` или многорегиональных местоположениях, таких как `eu` и `us`, а не в конкретных регионах

367* Если вы используете `CLOUD_ML_REGION=global`, проверьте, что ваши модели поддерживают глобальные конечные точки в [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) в разделе "Supported features". Для моделей, которые не поддерживают глобальные конечные точки, либо:367* Если вы используете `CLOUD_ML_REGION=global`, проверьте, что ваши модели поддерживают глобальные эндпоинты в [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) в разделе "Supported features". Для моделей, которые не поддерживают глобальные эндпоинты, либо:

368 * Укажите поддерживаемую модель через `ANTHROPIC_MODEL` или `ANTHROPIC_DEFAULT_HAIKU_MODEL`, либо368 * Укажите поддерживаемую модель через `ANTHROPIC_MODEL` или `ANTHROPIC_DEFAULT_HAIKU_MODEL`, либо

369 * Установите регион или многорегиональное местоположение, используя переменные окружения `VERTEX_REGION_<MODEL_NAME>`369 * Установите регион или многорегиональное местоположение с помощью переменной `VERTEX_REGION_CLAUDE_*` для соответствующей модели, указанной в [справочнике по переменным окружения](/docs/ru/env-vars#variables)

370 370 

371Если вы столкнулись с ошибками 429:371Если вы столкнулись с ошибками 429:

372 372 

hooks.md +4 −5

Details

63| `DirectoryAdded` | Когда рабочий каталог добавляется в середине сеанса через `/add-dir` или запрос управления SDK `register_repo_root` |63| `DirectoryAdded` | Когда рабочий каталог добавляется в середине сеанса через `/add-dir` или запрос управления SDK `register_repo_root` |

64| `FileChanged` | Когда наблюдаемый файл изменяется на диске. Поле `matcher` указывает, какие имена файлов отслеживать |64| `FileChanged` | Когда наблюдаемый файл изменяется на диске. Поле `matcher` указывает, какие имена файлов отслеживать |

65| `WorktreeCreate` | Когда worktree создаётся через `--worktree`, `isolation: "worktree"`, или для фонового сеанса. Заменяет поведение git по умолчанию |65| `WorktreeCreate` | Когда worktree создаётся через `--worktree`, `isolation: "worktree"`, или для фонового сеанса. Заменяет поведение git по умолчанию |

66| `WorktreeRemove` | Когда worktree удаляется при выходе из сеанса, когда подагент завершает работу, или когда вы удаляете фоновый сеанс |66| `WorktreeRemove` | Когда удаляется worktree, созданный хуком `WorktreeCreate` |

67| `PreCompact` | Перед компактизацией контекста |67| `PreCompact` | Перед компактизацией контекста |

68| `PostCompact` | После завершения компактизации контекста |68| `PostCompact` | После завершения компактизации контекста |

69| `PreModelSwitch` | Перед тем как Claude Code применяет переключение модели, которое вы или клиент запросили. Может заблокировать переключение |69| `PreModelSwitch` | Перед тем как Claude Code применяет переключение модели, которое вы или клиент запросили. Может заблокировать переключение |


3274 WorktreeRemove3274 WorktreeRemove

3275</h3>3275</h3>

3276 3276 

3277Выполняется при удалении worktree. Это парный хук очистки для [WorktreeCreate](#worktreecreate). Событие срабатывает, когда:3277Выполняется, когда Claude Code удаляет worktree, созданный вашим хуком [`WorktreeCreate`](#worktreecreate). Событие срабатывает, когда:

3278 3278 

3279* вы выходите из сессии `--worktree` и выбираете её удаление3279* Вы выходите из сессии `--worktree` и выбираете удаление worktree

3280* завершается субагент с `isolation: "worktree"`3280* Вы удаляете [фоновую сессию](/docs/ru/agent-view#what-deleting-a-session-removes), которая работает в этом worktree

3281* вы удаляете [фоновую сессию](/docs/ru/agent-view#what-deleting-a-session-removes), worktree которой создал хук

3282 3281 

3283Для worktree на основе git Claude Code выполняет очистку автоматически с помощью `git worktree remove`. Если вы настроили хук WorktreeCreate, добавьте к нему хук WorktreeRemove, чтобы управлять очисткой создаваемых им worktree:3282Для worktree на основе git Claude Code выполняет очистку автоматически с помощью `git worktree remove`. Если вы настроили хук WorktreeCreate, добавьте к нему хук WorktreeRemove, чтобы управлять очисткой создаваемых им worktree:

3284 3283 

hooks-guide.md +1 −1

Details

526| `DirectoryAdded` | Когда рабочий каталог добавляется в середине сеанса через `/add-dir` или запрос управления SDK `register_repo_root` |526| `DirectoryAdded` | Когда рабочий каталог добавляется в середине сеанса через `/add-dir` или запрос управления SDK `register_repo_root` |

527| `FileChanged` | Когда наблюдаемый файл изменяется на диске. Поле `matcher` указывает, какие имена файлов отслеживать |527| `FileChanged` | Когда наблюдаемый файл изменяется на диске. Поле `matcher` указывает, какие имена файлов отслеживать |

528| `WorktreeCreate` | Когда worktree создаётся через `--worktree`, `isolation: "worktree"`, или для фонового сеанса. Заменяет поведение git по умолчанию |528| `WorktreeCreate` | Когда worktree создаётся через `--worktree`, `isolation: "worktree"`, или для фонового сеанса. Заменяет поведение git по умолчанию |

529| `WorktreeRemove` | Когда worktree удаляется при выходе из сеанса, когда подагент завершает работу, или когда вы удаляете фоновый сеанс |529| `WorktreeRemove` | Когда удаляется worktree, созданный хуком `WorktreeCreate` |

530| `PreCompact` | Перед компактизацией контекста |530| `PreCompact` | Перед компактизацией контекста |

531| `PostCompact` | После завершения компактизации контекста |531| `PostCompact` | После завершения компактизации контекста |

532| `PreModelSwitch` | Перед тем как Claude Code применяет переключение модели, которое вы или клиент запросили. Может заблокировать переключение |532| `PreModelSwitch` | Перед тем как Claude Code применяет переключение модели, которое вы или клиент запросили. Может заблокировать переключение |

Details

76* **Вашему проекту.** Файлы в вашем каталоге и подкаталогах, а также файлы в других местах с вашего разрешения.76* **Вашему проекту.** Файлы в вашем каталоге и подкаталогах, а также файлы в других местах с вашего разрешения.

77* **Вашему терминалу.** Любой команде, которую вы можете запустить: инструменты сборки, git, менеджеры пакетов, системные утилиты, скрипты. Если вы можете это сделать из командной строки, Claude тоже может.77* **Вашему терминалу.** Любой команде, которую вы можете запустить: инструменты сборки, git, менеджеры пакетов, системные утилиты, скрипты. Если вы можете это сделать из командной строки, Claude тоже может.

78* **Вашему состоянию git.** Текущей ветке, незафиксированным изменениям и истории недавних коммитов.78* **Вашему состоянию git.** Текущей ветке, незафиксированным изменениям и истории недавних коммитов.

79* **Вашему [CLAUDE.md](/docs/ru/memory).** Файл markdown, где вы храните инструкции, специфичные для проекта, соглашения и контекст, который Claude должен знать в каждом сеансе. Если ваш репозиторий содержит AGENTS.md для других агентов кодирования, Claude [может прочитать это](/docs/ru/memory#agents-md) самостоятельно или вместе с CLAUDE.md.79* **Вашему [CLAUDE.md](/docs/ru/memory).** Файл markdown, где вы храните инструкции, специфичные для проекта, соглашения и контекст, который Claude должен знать в каждой сессии. Если ваш репозиторий содержит AGENTS.md для других агентов кодирования, Claude [может прочитать его](/docs/ru/memory#agents-md) вместо CLAUDE.md.

80* **[Автоматической памяти](/docs/ru/memory#auto-memory).** Обучение, которое Claude сохраняет автоматически по мере работы, например ваши предпочтения. Первые 200 строк или 25 КБ MEMORY.md, в зависимости от того, что меньше, загружаются в начале каждого сеанса.80* **[Автоматической памяти](/docs/ru/memory#auto-memory).** Обучение, которое Claude сохраняет автоматически по мере работы, например ваши предпочтения. Первые 200 строк или 25 КБ MEMORY.md, в зависимости от того, что меньше, загружаются в начале каждого сеанса.

81* **Расширениям, которые вы настраиваете.** [MCP servers](/docs/ru/mcp) для внешних сервисов, [skills](/docs/ru/skills) для рабочих процессов, [subagents](/docs/ru/sub-agents) для делегированной работы и [Claude в Chrome](/docs/ru/chrome) для взаимодействия с браузером.81* **Расширениям, которые вы настраиваете.** [MCP servers](/docs/ru/mcp) для внешних сервисов, [skills](/docs/ru/skills) для рабочих процессов, [subagents](/docs/ru/sub-agents) для делегированной работы и [Claude в Chrome](/docs/ru/chrome) для взаимодействия с браузером.

82 82 

keybindings.md +3 −2

Details

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

300| `footer:next` | Right | Следующий элемент нижнего колонтитула |300| `footer:next` | Right | Следующий элемент нижнего колонтитула |

301| `footer:previous` | Left | Предыдущий элемент нижнего колонтитула |301| `footer:previous` | Left | Предыдущий элемент нижнего колонтитула |

302| `footer:up` | Up | Навигация вверх в нижнем колонтитуле (отмена выбора в верхней части) |302| `footer:up` | Up, Ctrl+P | Навигация вверх в нижнем колонтитуле (отмена выбора в верхней части) |

303| `footer:down` | Down | Навигация вниз в нижнем колонтитуле |303| `footer:down` | Down, Ctrl+N | Навигация вниз в нижнем колонтитуле |

304| `footer:openSelected` | Enter | Открыть выбранный элемент нижнего колонтитула |304| `footer:openSelected` | Enter | Открыть выбранный элемент нижнего колонтитула |

305| `footer:clearSelection` | Escape | Очистить выбор нижнего колонтитула |305| `footer:clearSelection` | Escape | Очистить выбор нижнего колонтитула |

306| `footer:close` | x | Остановить выбранного [агента](/docs/ru/sub-agents#observe-and-steer-running-forks) или выбранный [рабочий процесс](/docs/ru/workflows#manage-runs) либо скрыть его строку, если он больше не выполняется |

306| `footer:dismiss` | (не привязано) | Привязка клавиши к этому действию не имеет эффекта, и `keybindings.json`, который называет его, остаётся действительным. До v2.1.281 Backspace и Delete были привязаны к нему и удаляли выбранную ссылку артефакта из нижнего колонтитула. |307| `footer:dismiss` | (не привязано) | Привязка клавиши к этому действию не имеет эффекта, и `keybindings.json`, который называет его, остаётся действительным. До v2.1.281 Backspace и Delete были привязаны к нему и удаляли выбранную ссылку артефакта из нижнего колонтитула. |

307 308 

308Пока элемент нижнего колонтитула выбран, например строка в панели агента ниже подсказки, `Enter` открывает его даже если вы переназначили `Enter` в контексте `Chat` на `chat:queueSubmit` или `chat:newline`.309Пока элемент нижнего колонтитула выбран, например строка в панели агента ниже подсказки, `Enter` открывает его даже если вы переназначили `Enter` в контексте `Chat` на `chat:queueSubmit` или `chat:newline`.

Details

216* **Распределено администратором**: если ваша организация [развернула конфигурацию](/docs/ru/llm-gateway-rollout#distribute-through-managed-settings), настольное приложение маршрутизирует через шлюз без каких-либо действий с вашей стороны216* **Распределено администратором**: если ваша организация [развернула конфигурацию](/docs/ru/llm-gateway-rollout#distribute-through-managed-settings), настольное приложение маршрутизирует через шлюз без каких-либо действий с вашей стороны

217* **Настроено локально**: для устройств без распределенной администратором конфигурации откройте Help → Troubleshooting → Включить режим разработчика, который перезагружает приложение с меню Developer. Затем откройте Developer → Configure Third-Party Inference и введите базовый URL вашего шлюза. Распределенная администратором конфигурация имеет приоритет и делает эту форму доступной только для чтения217* **Настроено локально**: для устройств без распределенной администратором конфигурации откройте Help → Troubleshooting → Включить режим разработчика, который перезагружает приложение с меню Developer. Затем откройте Developer → Configure Third-Party Inference и введите базовый URL вашего шлюза. Распределенная администратором конфигурация имеет приоритет и делает эту форму доступной только для чтения

218 218 

219При активной конфигурации шлюза настольное приложение запускает сеансы только на вашем локальном компьютере: средство выбора окружения не предлагает сеансы SSH или размещенные в облаке окружения Anthropic, и [Remote Control](/docs/ru/remote-control) недоступен. Чтобы использовать Claude Code на удаленном хосте через шлюз, запустите CLI на этом хосте с установленными [`ANTHROPIC_BASE_URL` и учетными данными шлюза](#set-the-base-url-and-credential).219При активной конфигурации шлюза средство выбора окружения не предлагает размещённые в облаке окружения Anthropic, и [Remote Control](/docs/ru/remote-control) недоступен.

220 

221Сессии SSH с конфигурацией шлюза находятся в бета-версии и требуют Claude Desktop v1.40609.0 или новее. Перед подключением проверьте список разрешённых хостов и адрес шлюза:

222 

223* **Разрешённые хосты**: сессии SSH по умолчанию отключены. Чтобы включить их, вы или ваш администратор указываете разрешённые хосты в ключе [`sshHostAllowlist`](https://claude.com/docs/third-party/claude-desktop/configuration#sshhostallowlist) конфигурации сторонних поставщиков

224* **Адрес шлюза**: удалённый компьютер подключается к шлюзу самостоятельно, поэтому шлюз по адресу `localhost` на вашем компьютере не работает для сессий SSH

225 

226См. [Удалённые сессии SSH в Claude Desktop со сторонними поставщиками](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions). Вы также можете запустить CLI на удалённом хосте, установив там [`ANTHROPIC_BASE_URL` и учётные данные шлюза](#set-the-base-url-and-credential).

220 227 

221Если настольное приложение показывает `Gateway was unreachable`, приложение не смогло достичь настроенный базовый URL при запуске; проверьте URL и сетевой путь с помощью [теста curl выше](#verify-the-connection).228Если настольное приложение показывает `Gateway was unreachable`, приложение не смогло достичь настроенный базовый URL при запуске; проверьте URL и сетевой путь с помощью [теста curl выше](#verify-the-connection).

222 229 

managed-mcp.md +17 −5

Details

347 Как сопоставляются записи `serverUrl`347 Как сопоставляются записи `serverUrl`

348</h4>348</h4>

349 349 

350URL поддерживают подстановочные знаки `*` в любом месте шаблона, включая схему. Сопоставление имени хоста не учитывает регистр и игнорирует завершающую точку FQDN, поэтому `https://Mcp.Example.com/*` совпадает с `https://mcp.example.com/api`. Пути остаются чувствительными к регистру.350URL поддерживают подстановочные знаки `*`, включая `*` в качестве всей схемы. Сопоставление имени хоста не учитывает регистр и игнорирует завершающую точку FQDN, поэтому `https://Mcp.Example.com/*` совпадает с `https://mcp.example.com/api`. Пути остаются чувствительными к регистру. Если порт не указан, от того, как записано имя хоста, зависит, совпадает ли шаблон только с портом схемы по умолчанию или с любым портом:

351 

352* **Имя хоста записано полностью**: только порт по умолчанию, 443 для `https` и 80 для `http`

353* **Имя хоста содержит `*`**: любой порт

351 354 

352В таблице показано, что разрешают распространённые шаблоны:355В таблице показано, что разрешают распространённые шаблоны:

353 356 

354| Шаблон | Разрешает |357| Шаблон | Разрешает |

355| :- | :- |358| :- | :- |

356| `https://mcp.example.com/*` | Все пути на определенном домене |359| `https://mcp.example.com/*` | Все пути на определенном домене, только на порту 443 |

357| `https://mcp.example.com` | Также все пути на этом домене. Шаблон без пути совпадает с любым путем |360| `https://mcp.example.com` | Также все пути на этом домене, только на порту 443. Шаблон без пути совпадает с любым путем |

358| `https://*.example.com/*` | Любой поддомен `example.com` |361| `https://mcp.example.com:8443/*` | Все пути на этом домене, только на порту 8443 |

362| `https://mcp.example.com:*/*` | Все пути на этом домене, на любом порту, включая 443 |

363| `https://*.example.com/*` | Любой поддомен `example.com`, на любом порту |

359| `http://localhost:*/*` | Любой порт на localhost |364| `http://localhost:*/*` | Любой порт на localhost |

360| `*://mcp.example.com/*` | Любая схема к определенному домену |365| `*://mcp.example.com/*` | Любая схема к определенному домену, каждая схема только на своём порту по умолчанию |

366 

367Записи в `deniedMcpServers` сопоставляются с портами так же, поэтому выбирайте запись для `staging.example.com` в зависимости от портов и схем, которые нужно заблокировать:

368 

369* `https://staging.example.com/*`: блокирует серверы `https` на этом хосте только на порту 443, поэтому не блокирует сервер по адресу `https://staging.example.com:8443/api`

370* `https://staging.example.com:*/*`: блокирует серверы `https` на этом хосте на всех портах

371* `*://staging.example.com:*/*`: блокирует этот хост по любой схеме и на любом порту

361 372 

362<h4 id="how-policy-entries-expand">373<h4 id="how-policy-entries-expand">

363 Переменные окружения в записях `serverCommand` и `serverUrl`374 Переменные окружения в записях `serverCommand` и `serverUrl`


529 | :- | :- |540 | :- | :- |

530 | HTTP сервер в `https://mcp.example.com/api` | Разрешен: совпадает с шаблоном URL списка разрешений, нет совпадения списка запретов |541 | HTTP сервер в `https://mcp.example.com/api` | Разрешен: совпадает с шаблоном URL списка разрешений, нет совпадения списка запретов |

531 | HTTP сервер в `https://staging.example.com/api` | Заблокирован: совпадает с обоими, но список запретов имеет приоритет |542 | HTTP сервер в `https://staging.example.com/api` | Заблокирован: совпадает с обоими, но список запретов имеет приоритет |

543 | HTTP сервер в `https://staging.example.com:8443/api` | Разрешен: совпадает с шаблоном URL списка разрешённых серверов, [нет совпадения со списком запрещённых на этом порту](#how-serverurl-entries-match) |

532 | HTTP сервер в `https://other.com/mcp` | Заблокирован: не совпадает со списком разрешений |544 | HTTP сервер в `https://other.com/mcp` | Заблокирован: не совпадает со списком разрешений |

533</Accordion>545</Accordion>

534 546 

memory.md +2 −2

Details

8 8 

9Каждый сеанс Claude Code начинается со свежего context window. Два механизма переносят знания между сеансами:9Каждый сеанс Claude Code начинается со свежего context window. Два механизма переносят знания между сеансами:

10 10 

11* **Файлы CLAUDE.md**: инструкции, которые вы пишете, чтобы дать Claude постоянный контекст. Claude также может читать файлы [`AGENTS.md`](#agents-md) репозитория отдельно или вместе с CLAUDE.md11* **Файлы CLAUDE.md**: инструкции, которые вы пишете, чтобы дать Claude постоянный контекст. Claude также может читать файлы [`AGENTS.md`](#agents-md) репозитория вместо CLAUDE.md

12* **Auto memory**: заметки, которые Claude пишет сам на основе ваших исправлений и предпочтений12* **Auto memory**: заметки, которые Claude пишет сам на основе ваших исправлений и предпочтений

13 13 

14На этой странице рассматривается, как:14На этой странице рассматривается, как:

15 15 

16* [Писать и организовывать файлы CLAUDE.md](#claude-md-files)16* [Писать и организовывать файлы CLAUDE.md](#claude-md-files)

17* [Использовать существующий AGENTS.md](#agents-md) как инструкции вашего проекта отдельно или вместе с CLAUDE.md17* [Использовать существующий AGENTS.md](#agents-md) как инструкции вашего проекта

18* [Ограничивать правила определёнными типами файлов](#organize-rules-with-claude/rules/) с помощью `.claude/rules/`18* [Ограничивать правила определёнными типами файлов](#organize-rules-with-claude/rules/) с помощью `.claude/rules/`

19* [Настраивать auto memory](#auto-memory) так, чтобы Claude автоматически делал заметки19* [Настраивать auto memory](#auto-memory) так, чтобы Claude автоматически делал заметки

20* [Устранять неполадки](#troubleshoot-memory-issues) когда инструкции не соблюдаются20* [Устранять неполадки](#troubleshoot-memory-issues) когда инструкции не соблюдаются

Details

551* **Параметры, управляемые сервером**: добавьте их в блок `env` [параметров, управляемых сервером](/docs/ru/server-managed-settings) вашей организации. Claude Code получает эти параметры при запуске везде, где [применяются параметры, управляемые сервером](/docs/ru/model-config#surface-coverage), что включает машины ваших пользователей и облачные сеансы, кроме сеансов канала Claude Tag. Сеансы Claude Tag не получают ваши параметры, управляемые сервером, поэтому этот способ их не настраивает.551* **Параметры, управляемые сервером**: добавьте их в блок `env` [параметров, управляемых сервером](/docs/ru/server-managed-settings) вашей организации. Claude Code получает эти параметры при запуске везде, где [применяются параметры, управляемые сервером](/docs/ru/model-config#surface-coverage), что включает машины ваших пользователей и облачные сеансы, кроме сеансов канала Claude Tag. Сеансы Claude Tag не получают ваши параметры, управляемые сервером, поэтому этот способ их не настраивает.

552* **Переменные окружения**: добавьте их в [переменные окружения](/docs/ru/cloud-environments#set-environment-variables) облачного окружения, чтобы настроить только сеансы, работающие в этом окружении. Это способ, который достигает сеансов Claude Tag.552* **Переменные окружения**: добавьте их в [переменные окружения](/docs/ru/cloud-environments#set-environment-variables) облачного окружения, чтобы настроить только сеансы, работающие в этом окружении. Это способ, который достигает сеансов Claude Tag.

553 553 

554Любой, кто использует окружение, может читать его переменные, поэтому не помещайте туда учётные данные, такие как токен сборщика в `OTEL_EXPORTER_OTLP_HEADERS`. [Учётные данные API](/docs/ru/cloud-environments#add-api-credentials) в окружении тоже не помогут, потому что собственный экспорт телеметрии Claude Code — это один из [запросов, которые никогда не получают учётные данные](/docs/ru/cloud-environments#requests-that-never-get-the-credential). Если ваш сборщик требует учётные данные, настройте весь экспорт через параметры, управляемые сервером, вместо этого, потому что когда вы устанавливаете учётные данные там, [Claude Code удаляет переменные конечной точки, установленные вне управляемых параметров](#how-managed-settings-lock-the-otlp-destination).554Любой, кто использует окружение, может читать его переменные, поэтому не помещайте туда учётные данные, например токен сборщика в `OTEL_EXPORTER_OTLP_HEADERS`. [Сетевой секрет](/docs/ru/cloud-environments#add-api-credentials) в окружении тоже не поможет, потому что собственный экспорт телеметрии Claude Code — это один из [запросов, которые никогда не получают секрет](/docs/ru/cloud-environments#requests-that-never-get-the-credential). Если ваш сборщик требует учётные данные, вместо этого настройте весь экспорт через настройки, управляемые сервером, потому что когда вы задаёте учётные данные там, [Claude Code удаляет переменные эндпоинта, заданные вне управляемых настроек](#how-managed-settings-lock-the-otlp-destination).

555 555 

556Помните об этих ограничениях при настройке телеметрии для облачных сеансов:556Помните об этих ограничениях при настройке телеметрии для облачных сеансов:

557 557 

overview.md +9 −7

Details

28 curl -fsSL https://claude.ai/install.sh | bash28 curl -fsSL https://claude.ai/install.sh | bash

29 ```29 ```

30 30 

31 В Windows приглашение командной строки показывает `PS C:\`, когда вы находитесь в PowerShell, и `C:\` без `PS`, когда вы находитесь в CMD.

32 

31 **Windows PowerShell:**33 **Windows PowerShell:**

32 34 

33 ```powershell theme={null}35 ```powershell theme={null}


42 44 

43 Когда установщик завершит работу, откройте новое окно терминала и выполните `claude --version`. Работающая установка выводит номер версии. Если ваша оболочка говорит, что `claude` не найден или не распознан, каталог установки еще не находится в вашем PATH: см. [Исправьте ваш PATH](/docs/ru/troubleshoot-install#command-not-found-claude-after-installation).45 Когда установщик завершит работу, откройте новое окно терминала и выполните `claude --version`. Работающая установка выводит номер версии. Если ваша оболочка говорит, что `claude` не найден или не распознан, каталог установки еще не находится в вашем PATH: см. [Исправьте ваш PATH](/docs/ru/troubleshoot-install#command-not-found-claude-after-installation).

44 46 

45 Если вы видите `The token '&&' is not a valid statement separator`, вы находитесь в PowerShell, а не в CMD. Если вы видите `'irm' is not recognized as an internal or external command`, вы находитесь в CMD, а не в PowerShell. Ваша подсказка показывает `PS C:\` когда вы находитесь в PowerShell и `C:\` без `PS` когда вы находитесь в CMD.47 Если вы видите `The token '&&' is not a valid statement separator`, вы находитесь в PowerShell, а не в CMD. Если вы видите `'irm' is not recognized as an internal or external command`, вы находитесь в CMD, а не в PowerShell.

46 48 

47 Если команда установки завершается с ошибкой `syntax error near unexpected token '<'`, `403` или другой ошибкой curl, см. [Устранение неполадок при установке](/docs/ru/troubleshoot-install#find-your-error) чтобы сопоставить ошибку с исправлением и для альтернативных методов установки.49 Если команда установки завершается с ошибкой `syntax error near unexpected token '<'`, `403` или любой другой ошибкой, см. [Устранение неполадок при установке](/docs/ru/troubleshoot-install#find-your-error), чтобы сопоставить ошибку с исправлением и для альтернативных методов установки.

48 50 

49 [Git for Windows](https://git-scm.com/downloads/win) рекомендуется на встроенной Windows, чтобы Claude Code мог использовать инструмент Bash. Если Git for Windows не установлен, Claude Code использует PowerShell в качестве инструмента оболочки. Установки WSL не требуют Git for Windows.51 [Git for Windows](https://git-scm.com/downloads/win) рекомендуется на встроенной Windows, чтобы Claude Code мог использовать инструмент Bash. Если Git for Windows не установлен, Claude Code использует PowerShell в качестве инструмента оболочки. Установки WSL не требуют Git for Windows.

50 52 


85 claude87 claude

86 ```88 ```

87 89 

88 При первом использовании вам будет предложено войти. Если вы установили переменную окружения `ANTHROPIC_API_KEY`, Claude Code пропустит приглашение входа и попросит вас одобрить ключ вместо этого. Вот и все! [Продолжите с Quickstart →](/docs/ru/quickstart)90 При первом использовании Claude Code предложит вам войти. Если вы установили переменную окружения `ANTHROPIC_API_KEY` и одобрите ключ, когда Claude Code спросит, использовать ли его, Claude Code пропустит запрос на вход. [Перейти к быстрому старту →](/docs/ru/quickstart)

89 91 

90 <Tip>92 <Tip>

91 Смотрите [расширенную настройку](/docs/ru/setup) для опций установки, ручных обновлений или инструкций по удалению. Посетите [troubleshooting установки](/docs/ru/troubleshoot-install), если у вас возникли проблемы.93 Смотрите [расширенную настройку](/docs/ru/setup) для опций установки, ручных обновлений или инструкций по удалению. Посетите [troubleshooting установки](/docs/ru/troubleshoot-install), если у вас возникли проблемы.


163 claude "commit my changes with a descriptive message"165 claude "commit my changes with a descriptive message"

164 ```166 ```

165 167 

166 В CI вы можете автоматизировать проверку кода и сортировку проблем с помощью [GitHub Actions](/docs/ru/github-actions) или [GitLab CI/CD](/docs/ru/gitlab-ci-cd).168 В CI вы можете автоматизировать код-ревью и сортировку проблем с помощью [GitHub Actions](/docs/ru/github-actions) или [GitLab CI/CD](/docs/ru/gitlab-ci-cd).

167 </Accordion>169 </Accordion>

168 170 

169 <Accordion title="Подключите свои инструменты с помощью MCP" icon="plug">171 <Accordion title="Подключите свои инструменты с помощью MCP" icon="plug">

170 [Model Context Protocol (MCP)](/docs/ru/mcp) — это открытый стандарт для подключения инструментов AI к внешним источникам данных. С помощью MCP Claude Code может читать ваши документы дизайна в Google Drive, обновлять задачи в Jira, извлекать данные из Slack или использовать ваши собственные пользовательские инструменты. [MCP quickstart](/docs/ru/mcp-quickstart) подключает ваш первый сервер от начала до конца.172 [Model Context Protocol (MCP)](/docs/ru/mcp) — это открытый стандарт для подключения инструментов AI к внешним источникам данных. С помощью MCP Claude Code может читать ваши документы дизайна в Google Drive, обновлять задачи в Jira, извлекать данные из Slack или использовать ваши собственные пользовательские инструменты. [Быстрый старт MCP](/docs/ru/mcp-quickstart) подключает ваш первый сервер от начала до конца.

171 </Accordion>173 </Accordion>

172 174 

173 <Accordion title="Настройте с помощью инструкций, skills и hooks" icon="sliders">175 <Accordion title="Настройте с помощью инструкций, скиллов и хуков" icon="sliders">

174 [`CLAUDE.md`](/docs/ru/memory) — это файл markdown, который вы добавляете в корень вашего проекта, и Claude Code читает его в начале каждого сеанса. Используйте его для установки стандартов кодирования, архитектурных решений, предпочитаемых библиотек и контрольных списков проверки. Если ваш репозиторий уже имеет `AGENTS.md` для других агентов кодирования, Claude Code [может читать это](/docs/ru/memory#agents-md) самостоятельно или вместе с `CLAUDE.md`. Claude также создает [auto memory](/docs/ru/memory#auto-memory) по мере работы, сохраняя знания в разных сеансах без необходимости что-либо писать.176 [`CLAUDE.md`](/docs/ru/memory) — это файл markdown, который вы добавляете в корень вашего проекта, и Claude Code читает его в начале каждой сессии. Используйте его для установки стандартов кодирования, архитектурных решений, предпочитаемых библиотек и контрольных списков проверки. Если в вашем репозитории уже есть `AGENTS.md` для других агентов кодирования, Claude Code [может читать его](/docs/ru/memory#agents-md) вместо `CLAUDE.md`. Claude также создает [автоматическую память](/docs/ru/memory#auto-memory) по мере работы, сохраняя знания между сессиями без необходимости что-либо писать.

175 177 

176 Создавайте [skills](/docs/ru/skills) для упаковки повторяемых рабочих процессов, которые ваша команда может использовать, например `/review-pr` или `/deploy-staging`.178 Создавайте [skills](/docs/ru/skills) для упаковки повторяемых рабочих процессов, которые ваша команда может использовать, например `/review-pr` или `/deploy-staging`.

177 179 

plugin-evals.md +21 −17

Details

63 Создайте свой первый eval suite63 Создайте свой первый eval suite

64</h2>64</h2>

65 65 

66Это пошаговое руководство написания одного кейса для вашего собственного plugin, его запуска и чтения результата. Перед началом убедитесь, что у вас есть:66Это пошаговое руководство по написанию одного кейса для вашего собственного плагина, его запуску и чтению результата. Перед началом убедитесь, что у вас есть:

67 67 

68* Claude Code v2.1.269 или позже и другие [требования](#requirements)68* Claude Code v2.1.269 или новее и другие [требования](#requirements)

69* Терминал, открытый в корневой директории вашего plugin, той, которая содержит `plugin.json` или `.claude-plugin/plugin.json`69* Терминал, открытый в корневой директории вашего плагина, той, которая содержит `plugin.json` или `.claude-plugin/plugin.json`

70* Один skill в plugin, который вы хотите протестировать, и запрос, который пользователь должен напечатать, чтобы его запустить70* Один скилл в плагине, который вы хотите протестировать, и просьба, которую ввел бы пользователь и которая должна его вызвать

71 71 

72<Steps>72<Steps>

73 <Step title="Создайте кейсы">73 <Step title="Создайте кейсы">

74 Из корня plugin запустите:74 Из корня плагина запустите:

75 75 

76 ```bash theme={null}76 ```bash theme={null}

77 claude plugin eval init77 claude plugin eval init

78 ```78 ```

79 79 

80 Если Claude Code еще не доверяет этой директории, он сначала спрашивает `Trust this plugin directory?`; ответьте `y`. Затем открывается интерактивная Claude Code сессия. Claude читает ваш plugin и спрашивает вас, как должен выглядеть хороший результат, предлагает prompts, которые должны и не должны запускать plugin, разрабатывает graders для каждого, пилотирует их один раз, чтобы проверить их поведение, и записывает одну директорию кейса на prompt под `evals/`, каждую названную в честь своего prompt. Когда Claude скажет вам, что suite готов, выйдите из этой сессии с `/exit` или Ctrl+D, чтобы вернуться в shell.80 Если Claude Code еще не доверяет этой директории, он сначала спрашивает `Trust this plugin directory?`; ответьте `y`.

81 81 

82 Если у вас уже есть Claude Code сессия, открытая в корне plugin, вы можете вместо этого попросить Claude там запустить `claude plugin eval init`. Claude запускает команду и затем задает вам те же вопросы в этом разговоре.82 Затем открывается интерактивная сессия Claude Code. Claude читает ваш плагин и спрашивает вас, как должен выглядеть хороший результат, предлагает промпты, которые должны и не должны вызывать плагин, разрабатывает graders для каждого, один раз пробно запускает их, чтобы проверить их поведение, и записывает одну директорию кейса на каждый промпт в `evals/`, каждую названную по своему промпту.

83 83 

84 Если вы предпочитаете написать кейс самостоятельно, чтобы увидеть ровно то, что содержат файлы, следуйте [Write a case manually](#write-a-case-manually) и вернитесь сюда, чтобы запустить его.84 Когда Claude сообщит вам, что suite готов, выйдите из этой сессии с помощью `/exit` или Ctrl+D, чтобы вернуться в оболочку.

85 

86 Если у вас уже есть сессия Claude Code, открытая в корне плагина, вы можете вместо этого попросить Claude там запустить `claude plugin eval init`. Claude запускает команду и затем задает вам те же вопросы в этом диалоге.

87 

88 Если вы предпочитаете написать кейс самостоятельно, чтобы увидеть, что именно содержат файлы, следуйте разделу [Написание кейса вручную](#write-a-case-manually) и вернитесь сюда, чтобы запустить его.

85 </Step>89 </Step>

86 90 

87 <Step title="Запустите suite">91 <Step title="Запустите suite">

88 Вернитесь в shell в корне plugin и запустите каждый кейс под `evals/`:92 Вернитесь в оболочку в корне плагина и запустите каждый кейс в `evals/`:

89 93 

90 ```bash theme={null}94 ```bash theme={null}

91 claude plugin eval .95 claude plugin eval .

92 ```96 ```

93 97 

94 Вы уже доверяли этой директории на шаге 1, поэтому запуск начинается немедленно. Если вы написали кейс вручную, запуск сначала спрашивает `Trust this plugin directory? [y/N]`; ответьте `y`. [What a run can access](#security) объясняет, на что вы соглашаетесь.98 Вы уже доверились этой директории на шаге 1, поэтому запуск начинается немедленно. Если вы вместо этого написали кейс вручную, запуск сначала спрашивает `Trust this plugin directory? [y/N]`; ответьте `y`. Раздел [К чему имеет доступ запуск](#security) объясняет, на что вы соглашаетесь.

95 99 

96 Каждый кейс запускается три раза с вашим plugin и три раза без него, поэтому один кейс — это шесть запусков. Строка прогресса печатается по мере завершения каждого запуска с оценкой этого запуска и вердиктом каждого grader.100 Каждый кейс запускается три раза с вашим плагином и три раза без него, поэтому один кейс — это шесть запусков. По мере завершения каждого запуска печатается строка прогресса с оценкой этого запуска и вердиктом каждого grader.

97 </Step>101 </Step>

98 102 

99 <Step title="Прочитайте сводку">103 <Step title="Прочитайте сводку">

100 Когда suite завершится, вы увидите таблицу сводки, за которой следует, где был записан отчет:104 Когда suite завершится, вы увидите таблицу сводки, за которой следует информация о том, куда был записан отчет:

101 105 

102 ```text theme={null}106 ```text theme={null}

103 CASE WITH W/OUT Δ RUNS COST NOTES107 CASE WITH W/OUT Δ RUNS COST NOTES


108 Published: https://claude.ai/... · keep local next time with --no-publish112 Published: https://claude.ai/... · keep local next time with --no-publish

109 ```113 ```

110 114 

111 `WITH` — это оценка кейса с загруженным вашим plugin, `W/OUT` — это оценка без него, и положительное `Δ` означает, что plugin повысил оценку. `COST` — это оценка по прейскуранту вызовов модели, и `NOTES` показывает объяснение самого высокого веса неудачного grader или ошибку запуска из with-arm.115 `WITH` — это оценка кейса с загруженным вашим плагином, `W/OUT` — это оценка без него, а положительное `Δ` означает, что плагин повысил оценку. `COST` — это оценка стоимости вызовов модели по прейскуранту, а `NOTES` показывает объяснение неудачного grader с наибольшим весом или ошибку запуска из with-arm.

112 </Step>116 </Step>

113 117 

114 <Step title="Откройте отчет и повторяйте">118 <Step title="Откройте отчет и повторяйте">

115 Откройте URL `Published:` или путь `Report:`, когда нет строки `Published:`, чтобы увидеть вердикт каждого grader и объяснение для каждого запуска, и для `llm` graders голоса judge и отрывок, который он оценивал. Строка `Published:` появляется только, когда ваш аккаунт может [публиковать отчеты](#html-report).119 Откройте URL `Published:` или путь `Report:`, если строки `Published:` нет, чтобы увидеть вердикт и объяснение каждого grader для каждого запуска, а для `llm` graders — голоса judge и отрывок, который он оценивал. Строка `Published:` появляется, только когда ваш аккаунт может [публиковать отчеты](#html-report).

116 120 

117 Наиболее частое первое открытие — это `Δ` близко к нулю с неудачным grader `tool_used: Skill` кейса, что означает, что Claude не выбирает ваш skill при естественной формулировке. Отрегулируйте [`description`](/docs/ru/skills#frontmatter-reference) skill, запустите `claude plugin eval .` снова и сравните.121 Наиболее частое первое открытие — это `Δ` близко к нулю с неудачным grader `tool_used: Skill` кейса, что означает, что Claude не выбирает ваш скилл при естественной формулировке. Отрегулируйте [`description`](/docs/ru/skills#frontmatter-reference) скилла, снова запустите `claude plugin eval .` и сравните.

118 122 

119 Чтобы повторять один кейс дешево, запустите один arm один раз. Один запуск шумный, поэтому подтвердите любое изменение при трех запусках по умолчанию, прежде чем доверять ему. С одним arm таблица показывает столбцы `SCORE` и `PASS%` вместо `WITH`, `W/OUT` и `Δ`:123 Чтобы повторять итерации по одному кейсу с меньшим числом запусков, запустите один arm один раз. Один запуск шумный, поэтому подтвердите любое изменение при трех запусках по умолчанию, прежде чем доверять ему. С одним arm таблица показывает столбцы `SCORE` и `PASS%` вместо `WITH`, `W/OUT` и `Δ`:

120 124 

121 ```bash theme={null}125 ```bash theme={null}

122 claude plugin eval . --case <case-name> --runs 1 --ablation none126 claude plugin eval . --case <case-name> --runs 1 --ablation none

123 ```127 ```

124 128 

125 Замените `<case-name>` на одно из имен директорий под `evals/`.129 Замените `<case-name>` на одно из имен директорий в `evals/`.

126 </Step>130 </Step>

127</Steps>131</Steps>

128 132 

Details

733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.

734```734```

735 735 

736Этот агент назван `my-plugin:security-reviewer`, и пользователь может [вызвать его явно](/docs/ru/sub-agents#invoke-subagents-explicitly) с помощью `@agent-my-plugin:security-reviewer`. Форма имени — `<plugin>:<name>`, где `<name>` берётся из frontmatter или из имени файла, когда его нет.736Этот агент называется `my-plugin:security-reviewer`, и пользователь может [вызвать его явно](/docs/ru/sub-agents#invoke-subagents-explicitly) с помощью `@agent-my-plugin:security-reviewer`. Форма имени — `<plugin>:<name>`, где `<name>` берётся из поля `name` во frontmatter или из имени файла, если это поле отсутствует.

737 737 

738Ключ `agents` манифеста заменяет сканирование `agents/`.738Ключ `agents` манифеста заменяет сканирование `agents/`.

739 739 

Details

428 428 

429| Элемент | Что он рисует | Где |429| Элемент | Что он рисует | Где |

430| :- | :- | :- |430| :- | :- | :- |

431| `Box` | Контейнер flex. Принимает свойства макета, такие как `flexDirection`, `columnGap`, `padding`, `borderStyle` и `width`. | Везде |431| `Box` | Контейнер flex. Принимает пропсы макета, такие как `flexDirection`, `columnGap`, `padding`, [`borderStyle`](/docs/ru/plugins/mods/reference#box-border-styles) и `width`. | Везде |

432| `Text` | Стилизованный текст. Принимает `color`, `bold`, `dimColor`, `italic` и `wrap`. `color` — это ключ темы или цвет, такой как `'red'`. `wrap` — это `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'` или `'truncate-end'`. | Везде |432| `Text` | Стилизованный текст. Принимает `color`, `bold`, `dimColor`, `italic` и `wrap`. `color` — это ключ темы или цвет, такой как `'red'`. `wrap` — это `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'` или `'truncate-end'`. | Везде |

433| `Button` | Элемент управления, который вызывает `onPress` | Везде |433| `Button` | Элемент управления, который вызывает `onPress` | Везде |

434| `Link`, `Code`, `Markdown` | Ссылка с `href` и необязательной `label`, блок кода и текст, отформатированный так, как ответы Claude. `Markdown` принимает свое содержимое в свойстве `text`, а не в `children`, и нуждается в `key`, когда вы передаете `onLinkPress`. | Везде |434| `Link`, `Code`, `Markdown` | Ссылка с `href` и необязательной `label`, блок кода и текст, отформатированный так, как ответы Claude. `Markdown` принимает свое содержимое в свойстве `text`, а не в `children`, и нуждается в `key`, когда вы передаете `onLinkPress`. | Везде |


563Многие панели — это текстовое поле со списком под ним. Пример в этом разделе — панель заметок: вы вводите заметку и нажимаете Enter, чтобы добавить ее, и каждая заметка имеет кнопку `x`, которая удаляет ее. С двумя добавленными заметками терминал рисует панель таким образом:563Многие панели — это текстовое поле со списком под ним. Пример в этом разделе — панель заметок: вы вводите заметку и нажимаете Enter, чтобы добавить ее, и каждая заметка имеет кнопку `x`, которая удаляет ее. С двумя добавленными заметками терминал рисует панель таким образом:

564 564 

565```text theme={null}565```text theme={null}

566╭──────────────────────────────────────────────────────────╮566╭────────────────────────────────────────────────────────✕─╮

567│ Note: Type a note and press Enter ⏎ add ✕ │567│ Note: Type a note and press Enter ⏎ add │

568│ x buy milk │568│ x buy milk │

569│ x call bob │569│ x call bob │

570╰──────────────────────────────────────────────────────────╯570╰──────────────────────────────────────────────────────────╯

571```571```

572 572 

573`✕` на верхней границе — это собственная отметка Claude Code для закрытия панели.

574 

573Пример использует следующие техники:575Пример использует следующие техники:

574 576 

575* **Получение введенного текста**: `Input` вызывает `onSubmit(value)` с текстом поля, когда пользователь нажимает Enter, и `onInput(value)` при каждом изменении577* **Получение введенного текста**: `Input` вызывает `onSubmit(value)` с текстом поля, когда пользователь нажимает Enter, и `onInput(value)` при каждом изменении

Details

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

243 243 

244* **Ширина `Pane` или полосы**: рисуйте по `e.props.bodyColumns`244* **Ширина `Pane` или полосы**: рисуйте по `e.props.bodyColumns`

245* **Высота `Pane` рядом с транскриптом**: когда `e.props.placement` равно `'dock'`, `e.props.scroll.bodyRows` — это число строк панели245* **Высота `Pane` рядом с транскриптом**: когда `e.props.placement` равно `'dock'`, `e.props.scroll.bodyRows` — это число строк, которые панель отводит под ваше дерево

246* **Высота `Pane` над промптом**: когда `e.props.placement` равно `'inline'`, панель растёт вместе с вашим деревом до предела, а `bodyRows` — это этот предел. [Поле `rows` в `$.ui.open`](/docs/ru/plugins/mods/interface#open-a-pane-at-the-right-time) запрашивает другой предел.246* **Высота `Pane` над промптом**: когда `e.props.placement` равно `'inline'`, панель растёт вместе с вашим деревом до предела, а `bodyRows` — это этот предел. [Поле `rows` в `$.ui.open`](/docs/ru/plugins/mods/interface#open-a-pane-at-the-right-time) запрашивает другой предел.

247 247 

248Дерево, которое выше панели, прокручивается целиком.248Дерево, которое выше панели, прокручивается целиком.


255 255 

256| Элемент | Основные пропсы | Terminal | Desktop |256| Элемент | Основные пропсы | Terminal | Desktop |

257| :- | :- | :-: | :-: |257| :- | :- | :-: | :-: |

258| [`Box`](/docs/ru/plugins/mods/interface#build-a-tree-from-elements) | `key`, flex-раскладка, `gap`, `padding`, `margin`, `width`, `height`, `borderStyle`, `backgroundColor`, `position`, `hover` | ✓ | ✓ |258| [`Box`](/docs/ru/plugins/mods/interface#build-a-tree-from-elements) | `key`, flex-раскладка, `gap`, `padding`, `margin`, `width`, `height`, [`borderStyle`](#box-border-styles), `backgroundColor`, `position`, `hover` | ✓ | ✓ |

259| [`Text`](/docs/ru/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |259| [`Text`](/docs/ru/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |

260| [`Button`](/docs/ru/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |260| [`Button`](/docs/ru/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |

261| `Link` | `href`, `label` | ✓ | ✓ |261| `Link` | `href`, `label` | ✓ | ✓ |


270 270 

271Дополнительные правила для `Button`: `action` указывает одно из собственных [действий сочетаний клавиш](/docs/ru/keybindings) Claude Code, и сочетание, назначенное пользователем для этого действия, нажимает кнопку, если это аккорд или клавиша с модификатором. Цифровой `hotkey` на кнопке в полосе также срабатывает, когда пользователь вводит только эту цифру в пустой промпт и делает паузу. Если две кнопки в одной отрисовке указывают один и тот же `hotkey`, он достаётся более поздней. `autoFocus` на любом элементе управления принимает только `true`, поэтому, чтобы отключить его, опустите этот проп.271Дополнительные правила для `Button`: `action` указывает одно из собственных [действий сочетаний клавиш](/docs/ru/keybindings) Claude Code, и сочетание, назначенное пользователем для этого действия, нажимает кнопку, если это аккорд или клавиша с модификатором. Цифровой `hotkey` на кнопке в полосе также срабатывает, когда пользователь вводит только эту цифру в пустой промпт и делает паузу. Если две кнопки в одной отрисовке указывают один и тот же `hotkey`, он достаётся более поздней. `autoFocus` на любом элементе управления принимает только `true`, поэтому, чтобы отключить его, опустите этот проп.

272 272 

273<h3 id="box-border-styles">

274 Стили рамки `Box`

275</h3>

276 

277Чтобы нарисовать рамку вокруг `Box`, задайте для его `borderStyle` одно из этих имён, например `borderStyle: 'round'`. В каждой строке указано, что терминал рисует для этого имени, и показан верхний край рамки.

278 

279| `borderStyle` | Что рисует терминал | Верхний край |

280| :- | :- | :- |

281| `'single'` | Тонкие линии с прямыми углами | `┌──┐` |

282| `'double'` | Двойные линии | `╔══╗` |

283| `'round'` | Тонкие линии со скруглёнными углами | `╭──╮` |

284| `'bold'` | Толстые линии | `┏━━┓` |

285| `'singleDouble'` | Тонкие линии сверху и снизу, двойные линии по бокам | `╓──╖` |

286| `'doubleSingle'` | Двойные линии сверху и снизу, тонкие линии по бокам | `╒══╕` |

287| `'classic'` | ASCII-символы `+`, `-` и `\|` | `+--+` |

288| `'arrow'` | Стрелки, указывающие внутрь `Box` | `↘↓↓↙` |

289| `'dashed'` | Пунктирные линии с пустыми углами | `╌╌` |

290| `'quote'` | Полоса `▎` вдоль левой стороны и пустые ячейки на остальных трёх сторонах | Пусто |

291 

292`Box`, у которого `borderStyle` указывает любое другое имя, например `'rounded'`, рисуется без рамки.

293 

273<h2 id="limits">294<h2 id="limits">

274 Ограничения295 Ограничения

275</h2>296</h2>

Details

15<Note>15<Note>

16 Эти случаи рассматриваются на других страницах:16 Эти случаи рассматриваются на других страницах:

17 17 

18 * **Почему области видимости, кэш и приоритет ведут себя так, как они себя ведут**: прочитайте [Справочник по загрузке плагинов](/docs/ru/plugins/loading)18 * **Почему области действия, кэш и приоритет ведут себя так, как они себя ведут**: прочитайте [Справочник по загрузке плагинов](/docs/ru/plugins/loading)

19 * **Поиск флага, поля или команды**: используйте [справочник команд плагинов](/docs/ru/plugins/cli-reference), [справочник манифеста](/docs/ru/plugins/manifest-reference) или [справочник маркетплейса](/docs/ru/plugins/marketplace-reference)19 * **Поиск флага, поля или команды**: используйте [справочник команд плагинов](/docs/ru/plugins/cli-reference), [справочник манифеста](/docs/ru/plugins/manifest-reference) или [справочник маркетплейса](/docs/ru/plugins/marketplace-reference)

20 * **Сообщение `hooks module not loaded` или `hooks module did not load`**: плагин является [модом](/docs/ru/plugins/mods/overview), поэтому прочитайте [Мод не загружается](/docs/ru/plugins/mods/troubleshoot#the-mod-doesn’t-load)

20</Note>21</Note>

21 22 

22Найдите точное сообщение, которое вы видели. Каждое сообщение указано под этапом, который его создаёт, что не всегда совпадает с командой, которую вы запустили. Например, установка может завершиться ошибкой, потому что маркетплейс отсутствует, поэтому это сообщение находится в разделе [Добавить маркетплейс](#add-a-marketplace).23Найдите точное сообщение, которое вы видели. Каждое сообщение указано под этапом, который его создаёт, что не всегда совпадает с командой, которую вы запустили. Например, установка может завершиться ошибкой, потому что маркетплейс отсутствует, поэтому это сообщение находится в разделе [Добавить маркетплейс](#add-a-marketplace).

Details

310 310 

311В плане Pro или Max, когда вы возобновляете большую сессию после длительного перерыва, Claude Code [предлагает возобновить работу из сводки](/docs/ru/sessions#resume-from-a-summary), чтобы последующие запросы не несли полную историю.311В плане Pro или Max, когда вы возобновляете большую сессию после длительного перерыва, Claude Code [предлагает возобновить работу из сводки](/docs/ru/sessions#resume-from-a-summary), чтобы последующие запросы не несли полную историю.

312 312 

313Время жизни (TTL) контролирует, как долго кэш может пережить перерыв. API предлагает два варианта: пятиминутный TTL и [одночасовой TTL](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#1-hour-cache-duration), который поддерживает кэш в активном состоянии во время более длительных перерывов, но [выставляет счета за записи в кэш по более высокому тарифу](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing). Более длительный TTL помогает, когда вы оставляете сессию неактивной и возвращаетесь к ней, потому что вы избегаете переобработки, которая стоит истекшему префиксу. Это стоит дороже при коротких всплесках работы, которые никогда не простаивают более пяти минут, где применяется более высокий тариф записи и более длительное время жизни кэша остаётся неиспользованным.313Время жизни (TTL) контролирует, как долго кэш может пережить перерыв. API предлагает два варианта: пятиминутный TTL и [одночасовой TTL](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#1-hour-cache-duration), который поддерживает кэш в активном состоянии во время более длительных перерывов, но [тарифицирует записи в кэш по более высокой ставке](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing). Более длительный TTL помогает, когда вы оставляете сессию неактивной и возвращаетесь к ней, потому что вы избегаете переобработки, которой стоит истекший префикс. Это стоит дороже при коротких всплесках работы, которые никогда не простаивают более пяти минут, где применяется более высокий тариф записи и более длительное время жизни кэша остаётся неиспользованным.

314 314 

315<h3 id="which-ttl-each-request-gets">315<h3 id="which-ttl-each-request-gets">

316 Какой TTL получает каждый запрос316 Какой TTL получает каждый запрос


328| Основной разговор | Один час | Пять минут |328| Основной разговор | Один час | Пять минут |

329| Всё остальное | Пять минут, кроме контролируемых сервером вспомогательных запросов, которые получают один час | Пять минут |329| Всё остальное | Пять минут, кроме контролируемых сервером вспомогательных запросов, которые получают один час | Пять минут |

330 330 

331Как только вы превышаете лимит использования вашего плана и Claude Code использует [кредиты использования](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), вам выставляется счёт за это использование, поэтому Claude Code переводит основной разговор на более дешёвый пятиминутный TTL. Чтобы сохранить одночасовой TTL там, [выберите TTL самостоятельно](#choose-the-ttl-yourself).331Как только вы превышаете лимит использования вашего плана и Claude Code использует [кредиты использования](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), это использование оплачивается, поэтому Claude Code переводит основной диалог на пятиминутный TTL, при котором записи в кэш тарифицируются по более низкой ставке. Чтобы сохранить одночасовой TTL там, [выберите TTL самостоятельно](#choose-the-ttl-yourself).

332 332 

333<h3 id="choose-the-ttl-yourself">333<h3 id="choose-the-ttl-yourself">

334 Выберите TTL самостоятельно334 Выберите TTL самостоятельно

quickstart.md +54 −88

Details

4 4 

5# Быстрый старт5# Быстрый старт

6 6 

7> Добро пожаловать в Claude Code!7> Установите Claude Code в терминале, войдите в систему и используйте CLI, чтобы изучить кодовую базу и внести первое изменение в код.

8 8 

9Это руководство по быстрому старту позволит вам использовать AI-powered кодирование всего за несколько минут. К концу вы поймёте, как использовать Claude Code для типичных задач разработки.9Это руководство по быстрому старту посвящено Claude Code в терминале: установке CLI, входу в систему в первой сессии и использованию инструмента для типичных задач разработки в вашем собственном проекте.

10 10 

11<h2 id="before-you-begin">11<h2 id="before-you-begin">

12 Перед началом12 Перед началом


15Убедитесь, что у вас есть:15Убедитесь, что у вас есть:

16 16 

17* Открытый терминал или командная строка17* Открытый терминал или командная строка

18 * Если вы никогда раньше не использовали терминал, ознакомьтесь с [руководством по терминалу](/docs/ru/terminal-guide)

19* Проект кода для работы18* Проект кода для работы

20* [Подписка Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Team или Enterprise), учётная запись [Claude Console](https://platform.claude.com/) или доступ через [поддерживаемого облачного провайдера](/docs/ru/third-party-integrations)19* [Подписка Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Team или Enterprise), учётная запись [Claude Console](https://platform.claude.com/) или доступ через [поддерживаемого облачного провайдера](/docs/ru/third-party-integrations)

21 20 

22<Note>21<Note>

23 Это руководство охватывает CLI терминала. Claude Code также доступен в [веб-версии](https://claude.ai/code), как [настольное приложение](/docs/ru/desktop), в [VS Code](/docs/ru/vs-code) и [JetBrains IDEs](/docs/ru/jetbrains), в [Slack](/docs/ru/slack) и в CI/CD с [GitHub Actions](/docs/ru/github-actions) и [GitLab](/docs/ru/gitlab-ci-cd). Смотрите [все интерфейсы](/docs/ru/overview#use-claude-code-everywhere).22 Эти случаи рассматриваются на других страницах:

23 

24 * **Вы никогда раньше не использовали терминал**: начните с [руководства по терминалу](/docs/ru/terminal-guide)

25 * **Вы хотите использовать Claude Code не в терминале**: Claude Code также доступен в [веб-версии](https://claude.ai/code), как [настольное приложение](/docs/ru/desktop), в [VS Code](/docs/ru/vs-code) и [JetBrains IDEs](/docs/ru/jetbrains), в [Slack](/docs/ru/slack) и в CI/CD с [GitHub Actions](/docs/ru/github-actions) и [GitLab](/docs/ru/gitlab-ci-cd). Смотрите [все интерфейсы](/docs/ru/overview#use-claude-code-everywhere).

24</Note>26</Note>

25 27 

26<h2 id="step-1-install-claude-code">28<h2 id="step-1-install-claude-code">


33 <Tab title="Встроенная установка (рекомендуется)">35 <Tab title="Встроенная установка (рекомендуется)">

34 **macOS, Linux, WSL:**36 **macOS, Linux, WSL:**

35 37 

36 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}38 ```bash theme={null}

37 curl -fsSL https://claude.ai/install.sh | bash39 curl -fsSL https://claude.ai/install.sh | bash

38 ```40 ```

39 41 

42 В Windows приглашение командной строки показывает `PS C:\`, когда вы находитесь в PowerShell, и `C:\` без `PS`, когда вы находитесь в CMD.

43 

40 **Windows PowerShell:**44 **Windows PowerShell:**

41 45 

42 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}46 ```powershell theme={null}

43 irm https://claude.ai/install.ps1 | iex47 irm https://claude.ai/install.ps1 | iex

44 ```48 ```

45 49 

46 **Windows CMD:**50 **Windows CMD:**

47 51 

48 ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}52 ```batch theme={null}

49 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd53 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

50 ```54 ```

51 55 

52 Когда установщик завершит работу, откройте новое окно терминала и выполните `claude --version`. Работающая установка выводит номер версии. Если ваша оболочка говорит, что `claude` не найден или не распознан, каталог установки еще не находится в вашем PATH: см. [Исправьте ваш PATH](/docs/ru/troubleshoot-install#command-not-found-claude-after-installation).56 Когда установщик завершит работу, откройте новое окно терминала и выполните `claude --version`. Работающая установка выводит номер версии. Если ваша оболочка говорит, что `claude` не найден или не распознан, каталог установки еще не находится в вашем PATH: см. [Исправьте ваш PATH](/docs/ru/troubleshoot-install#command-not-found-claude-after-installation).

53 57 

54 Если вы видите `The token '&&' is not a valid statement separator`, вы находитесь в PowerShell, а не в CMD. Если вы видите `'irm' is not recognized as an internal or external command`, вы находитесь в CMD, а не в PowerShell. Ваша подсказка показывает `PS C:\` когда вы находитесь в PowerShell и `C:\` без `PS` когда вы находитесь в CMD.58 Если вы видите `The token '&&' is not a valid statement separator`, вы находитесь в PowerShell, а не в CMD. Если вы видите `'irm' is not recognized as an internal or external command`, вы находитесь в CMD, а не в PowerShell.

55 59 

56 Если команда установки завершается с ошибкой `syntax error near unexpected token '<'`, `403` или другой ошибкой curl, см. [Устранение неполадок при установке](/docs/ru/troubleshoot-install#find-your-error) чтобы сопоставить ошибку с исправлением и для альтернативных методов установки.60 Если команда установки завершается с ошибкой `syntax error near unexpected token '<'`, `403` или любой другой ошибкой, см. [Устранение неполадок при установке](/docs/ru/troubleshoot-install#find-your-error), чтобы сопоставить ошибку с исправлением и для альтернативных методов установки.

57 61 

58 [Git for Windows](https://git-scm.com/downloads/win) рекомендуется на встроенной Windows, чтобы Claude Code мог использовать инструмент Bash. Если Git for Windows не установлен, Claude Code использует PowerShell в качестве инструмента оболочки. Установки WSL не требуют Git for Windows.62 [Git for Windows](https://git-scm.com/downloads/win) рекомендуется на встроенной Windows, чтобы Claude Code мог использовать инструмент Bash. Если Git for Windows не установлен, Claude Code использует PowerShell в качестве инструмента оболочки. Установки WSL не требуют Git for Windows.

59 63 


63 </Tab>67 </Tab>

64 68 

65 <Tab title="Homebrew">69 <Tab title="Homebrew">

66 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}70 ```bash theme={null}

67 brew install --cask claude-code71 brew install --cask claude-code

68 ```72 ```

69 73 


75 </Tab>79 </Tab>

76 80 

77 <Tab title="WinGet">81 <Tab title="WinGet">

78 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}82 ```powershell theme={null}

79 winget install Anthropic.ClaudeCode83 winget install Anthropic.ClaudeCode

80 ```84 ```

81 85 


95 99 

96Команда выводит номер версии, за которым следует `(Claude Code)`.100Команда выводит номер версии, за которым следует `(Claude Code)`.

97 101 

98<h2 id="step-2-log-in-to-your-account">102<h2 id="step-2-start-your-first-session">

99 Шаг 2: Войдите в свою учётную запись103 Шаг 2: Начните свою первую сессию

100</h2>104</h2>

101 105 

102Claude Code требует учётную запись для использования. Начните интерактивный сеанс с командой `claude`, и при первом использовании вам будет предложено войти:106Откройте терминал в любом каталоге проекта и запустите Claude Code:

103 107 

104```bash theme={null}108```bash theme={null}

109cd /path/to/your/project

105claude110claude

106```111```

107 112 

108Для учётных записей Claude подписки или Console следуйте подсказкам для завершения аутентификации в вашем браузере. Если вы установили переменную окружения `ANTHROPIC_API_KEY`, Claude Code пропускает приглашение входа и вместо этого просит вас одобрить ключ. Чтобы позже переключиться на другую учётную запись или повторно пройти аутентификацию, введите `/login` в работающем сеансе:113Замените `/path/to/your/project` на путь к проекту, над которым вы хотите работать.

109 114 

110```text wrap theme={null}115При первом использовании Claude Code предложит вам войти в систему. Для подписки Claude или учётных записей Console следуйте инструкциям, чтобы завершить аутентификацию в браузере. Если вы задали переменную окружения `ANTHROPIC_API_KEY` и подтвердили использование ключа, когда Claude Code спросит об этом, Claude Code пропустит запрос на вход.

111/login

112```

113 116 

114Вы можете войти, используя любой из этих типов учётных записей:117Вы можете войти, используя любой из следующих типов учётных записей:

115 118 

116* [Claude Pro, Max, Team или Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (рекомендуется)119* [Claude Pro, Max, Team или Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (рекомендуется)

117* [Claude Console](https://platform.claude.com/) (доступ к API с предоплаченными кредитами). При первом входе рабочее пространство "Claude Code" автоматически создаётся в Console для централизованного отслеживания затрат.120* [Claude Console](https://platform.claude.com/) (доступ к API с предоплаченными кредитами). При первом входе в Console автоматически создаётся рабочее пространство «Claude Code» для централизованного отслеживания расходов.

118* [Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry](/docs/ru/third-party-integrations) (облачные провайдеры для предприятий)121* [Amazon Bedrock, Google Cloud's Agent Platform или Microsoft Foundry](/docs/ru/third-party-integrations) (корпоративные облачные провайдеры)

119* Самостоятельно размещённый [шлюз приложений Claude](/docs/ru/claude-apps-gateway), если ваша организация его использует: ваш администратор предварительно настраивает URL шлюза, и `/login` открывает экран **Cloud gateway** для входа с корпоративным SSO122* Самостоятельно размещённый [шлюз приложений Claude](/docs/ru/claude-apps-gateway), если ваша организация его использует: администратор заранее настраивает URL шлюза, и `/login` сразу открывается на экране **Cloud gateway**, где вы можете войти с помощью корпоративного SSO

120 

121После входа ваши учётные данные сохраняются, и вам не нужно будет входить снова. Узнайте больше в разделе [Управление учётными данными](/docs/ru/authentication#credential-management).

122 

123<h2 id="step-3-start-your-first-session">

124 Шаг 3: Начните свой первый сеанс

125</h2>

126 

127Откройте терминал в любом каталоге проекта и запустите Claude Code:

128 

129```bash theme={null}

130cd /path/to/your/project

131claude

132```

133 123 

134Замените `/path/to/your/project` на путь к проекту, над которым вы хотите работать.124После входа ваши учётные данные сохраняются, и вам не придётся входить повторно. Подробнее читайте в разделе [Управление учётными данными](/docs/ru/authentication#credential-management).

135 125 

136Вы увидите приглашение Claude Code с версией, текущей моделью и рабочим каталогом, показанными выше. Введите `/help` для доступных команд или `/resume` для продолжения предыдущего разговора.126Появится промпт Claude Code, над которым отображаются версия, текущая модель и рабочий каталог. Введите `/help`, чтобы увидеть доступные команды, или `/resume`, чтобы продолжить предыдущий диалог. Чтобы позже сменить учётную запись или пройти аутентификацию повторно, введите `/login` внутри запущенной сессии.

137 127 

138<h2 id="step-4-ask-your-first-question">128<h2 id="step-3-ask-your-first-question">

139 Шаг 4: Задайте свой первый вопрос129 Шаг 3: Задайте свой первый вопрос

140</h2>130</h2>

141 131 

142Давайте начнём с понимания вашей кодовой базы. Попробуйте одну из этих команд:132Попробуйте одну из этих команд:

143 133 

144```text wrap theme={null}134```text wrap theme={null}

145what does this project do?135what does this project do?

146```136```

147 137 

148Claude проанализирует ваши файлы и предоставит резюме. Вы также можете задать более конкретные вопросы:138Claude проанализирует ваши файлы и предоставит краткое описание. Вы также можете задавать более конкретные вопросы:

149 139 

150```text wrap theme={null}140```text wrap theme={null}

151what technologies does this project use?141what technologies does this project use?


177 Claude Code читает файлы вашего проекта по мере необходимости. Вам не нужно вручную добавлять контекст.167 Claude Code читает файлы вашего проекта по мере необходимости. Вам не нужно вручную добавлять контекст.

178</Note>168</Note>

179 169 

180<h2 id="step-5-make-your-first-code-change">170<h2 id="step-4-make-your-first-code-change">

181 Шаг 5: Внесите первое изменение в код171 Шаг 4: Внесите первое изменение в код

182</h2>172</h2>

183 173 

184Теперь давайте заставим Claude Code выполнить реальное кодирование. Попробуйте простую задачу:174Попробуйте выполнить небольшую задачу:

185 175 

186```text wrap theme={null}176```text wrap theme={null}

187add a hello world function to the main file177add a hello world function to the main file

188```178```

189 179 

190Claude Code находит подходящий файл и показывает вам изменение. Если он просит разрешение перед внесением изменения, выберите **Yes** для одобрения.180Claude Code найдёт подходящий файл и покажет вам изменение. Если он запросит подтверждение перед внесением изменения, выберите **Yes**, чтобы одобрить его.

191 181 

192В Claude Code v2.1.283 и более поздних версиях автоматический режим является [встроенным режимом разрешений по умолчанию](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) для интерактивных сеансов терминала: классификатор проверяет действия вместо вас, и Claude редактирует большинство файлов и выполняет большинство команд без запроса. В более ранних версиях автоматический режим является встроенным режимом разрешений по умолчанию только для планов Pro, Max и Team. Для сеанса, который вы запустите сразу после установки, см. [First session after an install or upgrade](/docs/ru/env-vars#first-session-after-an-install-or-upgrade).182[Режим разрешений](/docs/ru/permission-modes) сессии определяет, какие действия Claude может выполнять, не спрашивая вас заранее. Нажмите `Shift+Tab` в любой момент, чтобы переключить режим разрешений текущей сессии.

193 183 

194<Note>184<h2 id="step-5-use-git-with-claude-code">

195 Ваши параметры или ваша организация могут установить другой режим разрешений по умолчанию. [В каком режиме разрешений начинается сеанс](/docs/ru/permission-modes#which-mode-a-session-starts-in) указывает, что это определяет. Нажмите `Shift+Tab` в любой момент, чтобы переключить режим разрешений сеанса, в котором вы находитесь.185 Шаг 5: Используйте Git с Claude Code

196</Note>

197 

198<h2 id="step-6-use-git-with-claude-code">

199 Шаг 6: Используйте Git с Claude Code

200</h2>186</h2>

201 187 

202Claude Code делает операции Git разговорными:188Claude Code превращает операции Git в диалог:

203 189 

204```text wrap theme={null}190```text wrap theme={null}

205what files have I changed?191what files have I changed?


209commit my changes with a descriptive message195commit my changes with a descriptive message

210```196```

211 197 

212Вы также можете запросить более сложные операции Git:198Вы также можете использовать промпты для более сложных операций Git:

213 199 

214```text wrap theme={null}200```text wrap theme={null}

215create a new branch called feature/quickstart201create a new branch called feature/quickstart


223help me resolve merge conflicts209help me resolve merge conflicts

224```210```

225 211 

226<h2 id="step-7-fix-a-bug-or-add-a-feature">212<h2 id="step-6-fix-a-bug-or-add-a-feature">

227 Шаг 7: Исправьте ошибку или добавьте функцию213 Шаг 6: Исправьте ошибку или добавьте функцию

228</h2>214</h2>

229 215 

230Claude хорошо справляется с отладкой и реализацией функций.216Опишите, что вы хотите, на естественном языке:

231 

232Опишите то, что вы хотите, на естественном языке:

233 217 

234```text wrap theme={null}218```text wrap theme={null}

235add input validation to the user registration form219add input validation to the user registration form


241there's a bug where users can submit empty forms - fix it225there's a bug where users can submit empty forms - fix it

242```226```

243 227 

244Claude Code будет:228<h2 id="step-7-test-out-other-common-workflows">

245 229 Шаг 7: Попробуйте другие распространённые рабочие процессы

246* Найти соответствующий код

247* Понять контекст

248* Реализовать решение

249* Запустить тесты, если они доступны

250 

251<h2 id="step-8-test-out-other-common-workflows">

252 Шаг 8: Попробуйте другие типичные рабочие процессы

253</h2>230</h2>

254 231 

255Есть несколько способов работать с Claude:232Существует несколько способов работы с Claude:

256 233 

257**Рефакторинг кода**234**Рефакторинг кода**

258 235 


272update the README with installation instructions249update the README with installation instructions

273```250```

274 251 

275**Проверка кода**252**Код-ревью**

276 253 

277```text wrap theme={null}254```text wrap theme={null}

278review my changes and suggest improvements255review my changes and suggest improvements

279```256```

280 257 

281<Tip>258<Tip>

282 Разговаривайте с Claude как с полезным коллегой. Опишите, чего вы хотите достичь, и он поможет вам это сделать.259 Общайтесь с Claude так же, как с отзывчивым коллегой. Опишите, чего вы хотите достичь, и Claude поможет вам в этом.

283</Tip>260</Tip>

284 261 

285<h2 id="essential-commands">262<h2 id="essential-commands">


357 334 

358Теперь, когда вы изучили основы, исследуйте более продвинутые функции:335Теперь, когда вы изучили основы, исследуйте более продвинутые функции:

359 336 

360<CardGroup cols={2}>337* [Как работает Claude Code](/docs/ru/how-claude-code-works): поймите агентный цикл, встроенные инструменты и то, как Claude Code взаимодействует с вашим проектом

361 <Card title="Как работает Claude Code" icon="microchip" href="/docs/ru/how-claude-code-works">338* [Лучшие практики](/docs/ru/best-practices): получайте лучшие результаты с эффективными запросами и настройкой проекта

362 Поймите агентский цикл, встроенные инструменты и то, как Claude Code взаимодействует с вашим проектом339* [Типичные рабочие процессы](/docs/ru/common-workflows): пошаговые руководства для типичных задач

363 </Card>340* [Расширьте Claude Code](/docs/ru/features-overview): настройте с помощью CLAUDE.md, скиллов, хуков, MCP и многого другого

364 

365 <Card title="Лучшие практики" icon="star" href="/docs/ru/best-practices">

366 Получайте лучшие результаты с эффективным запросом и настройкой проекта

367 </Card>

368 

369 <Card title="Типичные рабочие процессы" icon="graduation-cap" href="/docs/ru/common-workflows">

370 Пошаговые руководства для типичных задач

371 </Card>

372 341 

373 <Card title="Расширьте Claude Code" icon="puzzle-piece" href="/docs/ru/features-overview">342См. [расширенную настройку](/docs/ru/setup), чтобы узнать о вариантах установки, ручном обновлении или инструкциях по удалению.

374 Настройте с помощью CLAUDE.md, skills, hooks, MCP и многого другого

375 </Card>

376</CardGroup>

377 343 

378<h2 id="getting-help">344<h2 id="getting-help">

379 Получение помощи345 Получение помощи

380</h2>346</h2>

381 347 

382* **В Claude Code**: Введите `/help` или спросите "how do I" вопрос348* **В Claude Code**: Введите `/help` или спросите "how do I" вопрос

383* **Документация**: Вы здесь! Просмотрите другие руководства349* **Документация**: Просмотрите другие руководства на этом сайте

384* **Курсы**: Пройдите [Claude Code 101](https://academy.claude.com/courses/claude-code-101) и другие бесплатные самостоятельные курсы на [Claude Academy](https://academy.claude.com/)350* **Курсы**: Пройдите [Claude Code 101](https://academy.claude.com/courses/claude-code-101) и другие бесплатные самостоятельные курсы на [Claude Academy](https://academy.claude.com/)

385* **Сообщество**: Присоединитесь к [серверу Discord](https://www.anthropic.com/discord) для советов и поддержки351* **Сообщество**: Присоединитесь к [серверу Discord](https://www.anthropic.com/discord) для советов и поддержки

Details

365</h2>365</h2>

366 366 

367* **Одна удалённая сессия на интерактивный процесс**: вне режима сервера каждый экземпляр Claude Code поддерживает одну удалённую сессию одновременно. Используйте [режим сервера](#start-a-remote-control-session) для запуска нескольких одновременных сессий из одного процесса.367* **Одна удалённая сессия на интерактивный процесс**: вне режима сервера каждый экземпляр Claude Code поддерживает одну удалённую сессию одновременно. Используйте [режим сервера](#start-a-remote-control-session) для запуска нескольких одновременных сессий из одного процесса.

368* **Локальный процесс должен продолжать работу**: Remote Control работает как локальный процесс. Если вы закроете терминал, выйдете из Desktop-приложения или VS Code или иным образом остановите процесс `claude`, сессия перейдёт в автономный режим до тех пор, пока вы не [восстановите её](#resume-sessions-after-stopping-the-server). Чтобы сессия продолжала работать на удалённой машине после отключения от SSH, запустите её внутри `tmux` или `screen`.368* **Локальный процесс должен продолжать работу**: Remote Control работает как локальный процесс. Если вы закроете терминал, выйдете из Desktop-приложения или VS Code или иным образом остановите процесс `claude`, сессия перейдёт в автономный режим до тех пор, пока вы не [восстановите её](#resume-sessions-after-stopping-the-server). Если вы запускаете `claude` из терминала на удалённой машине, запустите его внутри `tmux` или `screen`, чтобы сессия продолжала работать после отключения от SSH.

369* **Сбойные сессии в режиме сервера**: если сессия, обслуживаемая `claude remote-control`, даёт сбой, отправьте ей сообщение с подключённого устройства. Claude Code снова начнёт её обслуживать. Вам не нужно перезапускать сервер. Требуется Claude Code v2.1.238 или позже.369* **Сбойные сессии в режиме сервера**: если сессия, обслуживаемая `claude remote-control`, даёт сбой, отправьте ей сообщение с подключённого устройства. Claude Code снова начнёт её обслуживать. Вам не нужно перезапускать сервер. Требуется Claude Code v2.1.238 или позже.

370* **Отказы HTTP 403 в подключённой сессии**: после подключения интерактивной сессии Claude Code продолжает повторять попытки в течение до трёх минут, когда что-то между вашей машиной и серверами Anthropic отвечает с HTTP 403, что может произойти после изменения VPN или сети. Если отказы продолжаются дольше, Claude Code отключается, и в причине указывается, что именно отказало: граница сети или прокси, VPN или брандмауэр в вашей собственной сети.370* **Отказы HTTP 403 в подключённой сессии**: после подключения интерактивной сессии Claude Code продолжает повторять попытки в течение до трёх минут, когда что-то между вашей машиной и серверами Anthropic отвечает с HTTP 403, что может произойти после изменения VPN или сети. Если отказы продолжаются дольше, Claude Code отключается, и в причине указывается, что именно отказало: граница сети или прокси, VPN или брандмауэр в вашей собственной сети.

371* **Продолжительный сбой сети**: если ваша машина включена, но не может подключиться к сети, то, что вы делаете дальше, зависит от режима:371* **Продолжительный сбой сети**: если ваша машина включена, но не может подключиться к сети, то, что вы делаете дальше, зависит от режима:

routines.md +1 −1

Details

93 Выберите [облачное окружение](/docs/ru/cloud-environments) для рутины. Окружения контролируют, к чему имеет доступ облачный сеанс:93 Выберите [облачное окружение](/docs/ru/cloud-environments) для рутины. Окружения контролируют, к чему имеет доступ облачный сеанс:

94 94 

95 * **Network access**: установите уровень доступа в Интернет, доступный во время каждого запуска95 * **Network access**: установите уровень доступа в Интернет, доступный во время каждого запуска

96 * **Environment variables**: предоставьте значения, которые может использовать Claude во время каждого запуска. Они [видны всем, кто использует окружение](/docs/ru/cloud-environments#what-carries-over-from-your-setup), поэтому в планах Pro и Max сохраняйте ключи для API, которые Claude вызывает во время запуска, как [API credentials](/docs/ru/cloud-environments#add-api-credentials) вместо этого. Этот раздел также содержит список запросов, которые никогда не получают учетные данные96 * **Environment variables**: предоставьте значения, которые Claude может использовать во время каждого запуска. Они [видны всем, кто использует окружение](/docs/ru/cloud-environments#what-carries-over-from-your-setup), поэтому в планах Pro и Max храните ключи для API, которые Claude вызывает во время запуска, в виде [сетевых секретов](/docs/ru/cloud-environments#add-api-credentials). В этом разделе также перечислены запросы, которые никогда не получают секрет

97 * **Setup script**: установите зависимости и инструменты, которые нужны рутине. Результат [кэшируется](/docs/ru/cloud-environments#environment-caching), поэтому скрипт не переустанавливается при каждом сеансе97 * **Setup script**: установите зависимости и инструменты, которые нужны рутине. Результат [кэшируется](/docs/ru/cloud-environments#environment-caching), поэтому скрипт не переустанавливается при каждом сеансе

98 98 

99 Предоставляется окружение **Default** с доступом в сеть **Trusted**, который позволяет только [набор по умолчанию](/docs/ru/cloud-environments#default-allowed-domains) реестров пакетов, API облачных провайдеров, реестров контейнеров и распространенных доменов разработки через сеть сеанса. Коннекторы, которые вы добавляете к рутине, достигают своих сервисов через серверы Anthropic, поэтому им не нужны изменения списка разрешений. Если вашей рутине нужно достичь ваших собственных сервисов напрямую или домена вне этого списка, отредактируйте [сетевой доступ](/docs/ru/cloud-environments#network-access) окружения перед запуском. Чтобы использовать отдельное окружение, [создайте его](/docs/ru/cloud-environments#configure-your-environment) сначала.99 Предоставляется окружение **Default** с доступом в сеть **Trusted**, который позволяет только [набор по умолчанию](/docs/ru/cloud-environments#default-allowed-domains) реестров пакетов, API облачных провайдеров, реестров контейнеров и распространенных доменов разработки через сеть сеанса. Коннекторы, которые вы добавляете к рутине, достигают своих сервисов через серверы Anthropic, поэтому им не нужны изменения списка разрешений. Если вашей рутине нужно достичь ваших собственных сервисов напрямую или домена вне этого списка, отредактируйте [сетевой доступ](/docs/ru/cloud-environments#network-access) окружения перед запуском. Чтобы использовать отдельное окружение, [создайте его](/docs/ru/cloud-environments#configure-your-environment) сначала.

Details

104 Пример скрипта104 Пример скрипта

105</h2>105</h2>

106 106 

107Скрипт ниже запускает полный цикл против `$CLAUDE_TEST_ENVIRONMENT_ID`, ID `ccpool_...` вашего тестового окружения, показанный в диалоговом окне деталей окружения на странице администратора или возвращённый вызовом [create-environment](#create-a-dedicated-test-environment), и проверяет наличие фразы-маркера в каждом ответе. Запустите его из git-репозитория, который вы хотите, чтобы сеанс работал, после запуска runner на этом хосте с установленным hook захвата и экспортированным `E2E_REPLY_DIR`.107Скрипт ниже запускает полный цикл против `$CLAUDE_TEST_ENVIRONMENT_ID`, ID `ccpool_...` вашего тестового окружения, показанный в диалоговом окне деталей окружения на странице администратора или возвращённый вызовом [create-environment](#create-a-dedicated-test-environment), и проверяет наличие фразы-маркера в каждом ответе. Запускайте его из git-клона репозитория, в котором должна работать сессия, после запуска runner на этом хосте с установленным хуком захвата и экспортированной переменной `E2E_REPLY_DIR`. Сначала войдите с учётной записью claude.ai на машине, на которой запускается скрипт, как описано в разделе [Аутентификация из CI](#authenticate-from-ci). Без этого входа первая отправка завершится ошибкой, например `Unable to get organization UUID for cloud session creation`.

108 108 

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

110#!/usr/bin/env bash110#!/usr/bin/env bash

Details

43 <Step title="Откройте консоль администратора">43 <Step title="Откройте консоль администратора">

44 В консоли claude.ai перейдите в [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code).44 В консоли claude.ai перейдите в [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code).

45 45 

46 Если ссылка перенаправляет вас на другую страницу Organization settings вместо страницы Claude Code, ваша учетная запись не имеет требуемой роли. Роль Admin и другие роли, отличные от Owner, не могут просматривать или редактировать управляемые настройки, поэтому попросите Owner или Primary Owner в вашей организации внести изменение. См. [Контроль доступа](#access-control).46 Если в организации Team или Enterprise на странице указано, что у вас нет доступа, попросите [Owner или Primary Owner](#access-control) внести изменение.

47 </Step>47 </Step>

48 48 

49 <Step title="Определите ваши настройки">49 <Step title="Определите ваши настройки">

sessions.md +3 −3

Details

83* Терминал: `claude --continue`, `claude --resume <session-id>` или `claude --resume <name>`, когда имя соответствует одному сеансу, без `-p`. Claude Code восстанавливает режим разрешений, в котором находился сеанс, за исключением случаев в таблице. Передайте `--permission-mode` или `--dangerously-skip-permissions`, чтобы переопределить восстановленный режим.83* Терминал: `claude --continue`, `claude --resume <session-id>` или `claude --resume <name>`, когда имя соответствует одному сеансу, без `-p`. Claude Code восстанавливает режим разрешений, в котором находился сеанс, за исключением случаев в таблице. Передайте `--permission-mode` или `--dangerously-skip-permissions`, чтобы переопределить восстановленный режим.

84* Неинтерактивный: `claude -p --resume` или `claude -p --continue`. Claude Code запускает выполнение в режиме разрешений, в котором запустился бы новый запуск `claude -p`, за исключением того, что сеанс, который завершился в режиме Plan Mode, возобновляется в режиме Plan Mode при [условиях ниже](#resume-in-plan-mode-with-p).84* Неинтерактивный: `claude -p --resume` или `claude -p --continue`. Claude Code запускает выполнение в режиме разрешений, в котором запустился бы новый запуск `claude -p`, за исключением того, что сеанс, который завершился в режиме Plan Mode, возобновляется в режиме Plan Mode при [условиях ниже](#resume-in-plan-mode-with-p).

85* VS Code: панель диалога расширения. Таблица охватывает только диалог, который завершился в режиме Plan Mode; для остального см. [возобновление прошлых диалогов](/docs/ru/vs-code#resume-past-conversations).85* VS Code: панель диалога расширения. Таблица охватывает только диалог, который завершился в режиме Plan Mode; для остального см. [возобновление прошлых диалогов](/docs/ru/vs-code#resume-past-conversations).

86* Средство выбора сеансов при запуске: сеанс, который вы выбираете из [средства выбора сеансов](#use-the-session-picker), независимо от того, открыли ли вы его с помощью `claude --resume` отдельно, `claude --from-pr` или имени, которое соответствует более чем одному сеансу. Claude Code не восстанавливает сохранённый режим разрешений. Он запускает сеанс в режиме разрешений, в котором он запустил бы новый сеанс из той же командной строки.86* Средство выбора сессий при запуске: сессия, которую вы выбираете в [средстве выбора сессий](#use-the-session-picker), независимо от того, открыли ли вы его с помощью одного `claude --resume`, `claude --from-pr` или имени, соответствующего нескольким сессиям. Claude Code запускает сессию в том режиме разрешений, в котором запустил бы новую сессию из той же командной строки, за исключением того, что сессия, завершившаяся в режиме планирования, возобновляется в режиме планирования, если вы не передали `--permission-mode`, `--dangerously-skip-permissions` или `--fork-session`. Никакой другой сохранённый режим разрешений не восстанавливается.

87* `/resume` внутри сеанса, с аргументом или без: Claude Code не восстанавливает сохранённый режим разрешений. Диалог, на который вы переключаетесь, продолжается в режиме разрешений, в котором находится ваш текущий сеанс.87* `/resume` внутри сессии, с аргументом или без: диалог, на который вы переключаетесь, продолжается в режиме разрешений вашей текущей сессии, за исключением того, что диалог, завершившийся в режиме планирования, возобновляется в режиме планирования, даже если вы запустили Claude Code с `--permission-mode` или `--dangerously-skip-permissions`. Если этот диалог уже открывался ранее в текущем запуске Claude Code, например диалог, с которого вы начали, или диалог, который вы покинули с помощью `/clear` или `/resume`, он вместо этого продолжается в вашем текущем режиме разрешений.

88 88 

89Восстановление режима Plan Mode на неинтерактивном пути и пути VS Code требует Claude Code v2.1.246 или более поздней версии. Каждая строка называет режим разрешений, в котором завершился сеанс, какой из путей терминала, неинтерактивного и VS Code вы его возобновляете, и режим разрешений, в котором Claude Code запускает возобновлённый сеанс.89Восстановление режима Plan Mode на неинтерактивном пути и пути VS Code требует Claude Code v2.1.246 или более поздней версии. Каждая строка называет режим разрешений, в котором завершился сеанс, какой из путей терминала, неинтерактивного и VS Code вы его возобновляете, и режим разрешений, в котором Claude Code запускает возобновлённый сеанс.

90 90 

91| Сеанс завершился в | Как вы возобновляете | Режим разрешений после возобновления |91| Сеанс завершился в | Как вы возобновляете | Режим разрешений после возобновления |

92| :- | :- | :- |92| :- | :- | :- |

93| `bypassPermissions` | Терминал | Режим разрешений, в котором запустился бы новый сеанс. Чтобы [пропустить разрешения](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) снова, включите его при запуске с одним из его флагов запуска или `permissions.defaultMode: "bypassPermissions"` в [пользовательских, `--settings` или управляемых параметрах](/docs/ru/settings-reference#permissions-defaultmode) |93| `bypassPermissions` | Терминал | Режим разрешений, в котором запустился бы новый сеанс. Чтобы [пропустить разрешения](/docs/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) снова, включите его при запуске с одним из его флагов запуска или `permissions.defaultMode: "bypassPermissions"` в [пользовательских, `--settings` или управляемых параметрах](/docs/ru/settings-reference#permissions-defaultmode) |

94| `plan` | Терминал | Режим разрешений, в котором запустился бы новый сеанс |94| `plan` | Терминал | Режим планирования. С `--fork-session` — режим разрешений, в котором запустилась бы новая сессия |

95| `auto` | Терминал | `auto`, только когда ваша учётная запись всё ещё соответствует [требованиям режима auto](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) |95| `auto` | Терминал | `auto`, только когда ваша учётная запись всё ещё соответствует [требованиям режима auto](/docs/ru/permission-modes#eliminate-prompts-with-auto-mode) |

96| Manual | Терминал | Manual, когда новый сеанс запустился бы в режиме auto из [встроенного значения по умолчанию](/docs/ru/permission-modes#which-mode-a-session-starts-in). Когда `defaultMode` из файла параметров [вступает в силу](/docs/ru/permission-modes#which-mode-a-session-starts-in), Claude Code запускает возобновлённый сеанс в этом режиме вместо этого |96| Manual | Терминал | Manual, когда новый сеанс запустился бы в режиме auto из [встроенного значения по умолчанию](/docs/ru/permission-modes#which-mode-a-session-starts-in). Когда `defaultMode` из файла параметров [вступает в силу](/docs/ru/permission-modes#which-mode-a-session-starts-in), Claude Code запускает возобновлённый сеанс в этом режиме вместо этого |

97| `plan` | Неинтерактивный, при [условиях ниже](#resume-in-plan-mode-with-p) | Режим Plan Mode |97| `plan` | Неинтерактивный, при [условиях ниже](#resume-in-plan-mode-with-p) | Режим Plan Mode |

setup.md +5 −3

Details

49 curl -fsSL https://claude.ai/install.sh | bash49 curl -fsSL https://claude.ai/install.sh | bash

50 ```50 ```

51 51 

52 В Windows приглашение командной строки показывает `PS C:\`, когда вы находитесь в PowerShell, и `C:\` без `PS`, когда вы находитесь в CMD.

53 

52 **Windows PowerShell:**54 **Windows PowerShell:**

53 55 

54 ```powershell theme={null}56 ```powershell theme={null}


63 65 

64 Когда установщик завершит работу, откройте новое окно терминала и выполните `claude --version`. Работающая установка выводит номер версии. Если ваша оболочка говорит, что `claude` не найден или не распознан, каталог установки еще не находится в вашем PATH: см. [Исправьте ваш PATH](/docs/ru/troubleshoot-install#command-not-found-claude-after-installation).66 Когда установщик завершит работу, откройте новое окно терминала и выполните `claude --version`. Работающая установка выводит номер версии. Если ваша оболочка говорит, что `claude` не найден или не распознан, каталог установки еще не находится в вашем PATH: см. [Исправьте ваш PATH](/docs/ru/troubleshoot-install#command-not-found-claude-after-installation).

65 67 

66 Если вы видите `The token '&&' is not a valid statement separator`, вы находитесь в PowerShell, а не в CMD. Если вы видите `'irm' is not recognized as an internal or external command`, вы находитесь в CMD, а не в PowerShell. Ваша подсказка показывает `PS C:\` когда вы находитесь в PowerShell и `C:\` без `PS` когда вы находитесь в CMD.68 Если вы видите `The token '&&' is not a valid statement separator`, вы находитесь в PowerShell, а не в CMD. Если вы видите `'irm' is not recognized as an internal or external command`, вы находитесь в CMD, а не в PowerShell.

67 69 

68 Если команда установки завершается с ошибкой `syntax error near unexpected token '<'`, `403` или другой ошибкой curl, см. [Устранение неполадок при установке](/docs/ru/troubleshoot-install#find-your-error) чтобы сопоставить ошибку с исправлением и для альтернативных методов установки.70 Если команда установки завершается с ошибкой `syntax error near unexpected token '<'`, `403` или любой другой ошибкой, см. [Устранение неполадок при установке](/docs/ru/troubleshoot-install#find-your-error), чтобы сопоставить ошибку с исправлением и для альтернативных методов установки.

69 71 

70 [Git for Windows](https://git-scm.com/downloads/win) рекомендуется на встроенной Windows, чтобы Claude Code мог использовать инструмент Bash. Если Git for Windows не установлен, Claude Code использует PowerShell в качестве инструмента оболочки. Установки WSL не требуют Git for Windows.72 [Git for Windows](https://git-scm.com/downloads/win) рекомендуется на встроенной Windows, чтобы Claude Code мог использовать инструмент Bash. Если Git for Windows не установлен, Claude Code использует PowerShell в качестве инструмента оболочки. Установки WSL не требуют Git for Windows.

71 73 


204 206 

205Claude Code требует учетную запись Pro, Max, Team, Enterprise или Console. Бесплатный план claude.ai не включает доступ к Claude Code. Вы также можете использовать Claude Code с поставщиком API третьей стороны, таким как [Amazon Bedrock](/docs/ru/amazon-bedrock), [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai) или [Microsoft Foundry](/docs/ru/microsoft-foundry).207Claude Code требует учетную запись Pro, Max, Team, Enterprise или Console. Бесплатный план claude.ai не включает доступ к Claude Code. Вы также можете использовать Claude Code с поставщиком API третьей стороны, таким как [Amazon Bedrock](/docs/ru/amazon-bedrock), [Google Cloud's Agent Platform](/docs/ru/google-vertex-ai) или [Microsoft Foundry](/docs/ru/microsoft-foundry).

206 208 

207После установки войдите, выполнив `claude` и следуя подсказкам браузера. Если установлена переменная окружения `ANTHROPIC_API_KEY`, Claude Code попросит вас один раз одобрить ключ вместо открытия браузера. См. [Аутентификация](/docs/ru/authentication) для всех типов учетных записей и параметров настройки команды.209После установки войдите, выполнив `claude` и следуя инструкциям в браузере. Если вы установили переменную окружения `ANTHROPIC_API_KEY` и одобрите ключ, когда Claude Code спросит, использовать ли его, Claude Code пропустит запрос на вход. См. [Аутентификация](/docs/ru/authentication) для всех типов учетных записей и параметров настройки команды.

208 210 

209<h2 id="update-claude-code">211<h2 id="update-claude-code">

210 Обновление Claude Code212 Обновление Claude Code

sub-agents.md +3 −3

Details

310 310 

311| Field | Требуется | Description |311| Field | Требуется | Description |

312| :- | :- | :- |312| :- | :- | :- |

313| `name` | Да | Уникальный идентификатор, такой как `code-reviewer` или `reviewer-v2`. [Hooks](/docs/ru/hooks#subagentstart) получают это значение как `agent_type`. Имя файла не должно совпадать. Имена не могут содержать `:`, который зарезервирован для [plugin-scoped identifiers](/docs/ru/plugins/overview) таких как `my-plugin:reviewer`. Claude Code не загружает файл, чьё имя содержит один, и регистрирует ошибку в журнал отладки. До версии 2.1.218 такие имена были приняты |313| `name` | Да | Уникальный идентификатор длиной не более 256 символов, например `code-reviewer` или `reviewer-v2`. [Хуки](/docs/ru/hooks#subagentstart) получают это значение как `agent_type`. Имя файла не обязано совпадать. Имена не могут содержать `:`, который зарезервирован для [идентификаторов с областью действия плагина](/docs/ru/plugins/overview), таких как `my-plugin:reviewer` |

314| `description` | Да | Когда Claude должен делегировать этому subagent |314| `description` | Да | Когда Claude должен делегировать этому subagent |

315| `tools` | Нет | [Инструменты](#available-tools), которые может использовать subagent, как строка, разделённая запятыми, такая как `Read, Grep, Bash` или список YAML. Наследует каждый инструмент, доступный для subagents, если опущено. Если ни один элемент в списке не разрешается в инструмент, subagent обычно [не запускается](/docs/ru/errors#agent-would-be-spawned-with-zero-tools) с ошибкой, называющей элементы. Чтобы предварительно загрузить Skills в контекст, используйте поле `skills` вместо перечисления `Skill` здесь |315| `tools` | Нет | [Инструменты](#available-tools), которые может использовать subagent, как строка, разделённая запятыми, такая как `Read, Grep, Bash` или список YAML. Наследует каждый инструмент, доступный для subagents, если опущено. Если ни один элемент в списке не разрешается в инструмент, subagent обычно [не запускается](/docs/ru/errors#agent-would-be-spawned-with-zero-tools) с ошибкой, называющей элементы. Чтобы предварительно загрузить Skills в контекст, используйте поле `skills` вместо перечисления `Skill` здесь |

316| `disallowedTools` | Нет | Инструменты для запрета, удалённые из унаследованного или указанного списка. Тот же формат, что и `tools`. Запись со спецификатором, такая как `Bash(git push *)`, по-прежнему [удаляет весь инструмент](#available-tools) |316| `disallowedTools` | Нет | Инструменты для запрета, удалённые из унаследованного или указанного списка. Тот же формат, что и `tools`. Запись со спецификатором, такая как `Bash(git push *)`, по-прежнему [удаляет весь инструмент](#available-tools) |


348 348 

349* **Нет `name`**: Claude Code рассматривает файл как документацию, хранящуюся рядом с вашими агентами.349* **Нет `name`**: Claude Code рассматривает файл как документацию, хранящуюся рядом с вашими агентами.

350* **Открывающий `---`, который не является первой строкой файла**: Claude Code читает файл как не имеющий frontmatter и рассматривает его как документацию.350* **Открывающий `---`, который не является первой строкой файла**: Claude Code читает файл как не имеющий frontmatter и рассматривает его как документацию.

351* **`name`, который начинается с `-` или содержит `:`**: Claude Code пропускает файл и записывает ошибку в журнал отладки. См. строку `name` в таблице выше.351* **`name` начинается с `-`, содержит `:` или длиннее 256 символов**: Claude Code пропускает файл и записывает ошибку в лог отладки.

352* **`name`, но нет `description`**: Claude Code пропускает файл и записывает причину в журнал отладки.352* **`name`, но нет `description`**: Claude Code пропускает файл и записывает причину в журнал отладки.

353* **YAML, который не парсится**: Claude Code не читает никакие поля из файла, пропускает его и записывает ошибку парсинга в журнал отладки.353* **YAML, который не парсится**: Claude Code не читает никакие поля из файла, пропускает его и записывает ошибку парсинга в журнал отладки.

354 354 


1279| Permissions | Запросы выводятся в вашем терминале | [Запросы выводятся в вашей основной сессии](#run-subagents-in-foreground-or-background) при запуске в фоне |1279| Permissions | Запросы выводятся в вашем терминале | [Запросы выводятся в вашей основной сессии](#run-subagents-in-foreground-or-background) при запуске в фоне |

1280| Prompt cache | Общий с основной сессией | Отдельный кэш |1280| Prompt cache | Общий с основной сессией | Отдельный кэш |

1281 1281 

1282Поскольку системное приглашение fork и определения инструментов идентичны родителю, его первый запрос повторно использует кэш приглашений родителя [prompt cache](/docs/ru/prompt-caching#subagents-and-the-cache). Это делает forking дешевле, чем порождение свежего subagent для задач, которые нуждаются в том же контексте.1282Поскольку системный промпт и определения инструментов fork идентичны родительским, его первый запрос повторно использует [кэш промптов](/docs/ru/prompt-caching#subagents-and-the-cache) родителя. Благодаря этому повторному использованию fork обходится дешевле, чем новый субагент, для задач, которым нужен тот же контекст.

1283 1283 

1284Когда Claude порождает fork через инструмент Agent, он может передать `isolation: "worktree"`, чтобы редактирования файлов fork были написаны в отдельный git worktree вместо вашего checkout. Fork не может порождать дальнейшие forks.1284Когда Claude порождает fork через инструмент Agent, он может передать `isolation: "worktree"`, чтобы редактирования файлов fork были написаны в отдельный git worktree вместо вашего checkout. Fork не может порождать дальнейшие forks.

1285 1285 

vs-code.md +1 −1

Details

606| `environmentVariables` | `[]` | Установить переменные окружения для процесса Claude. Используйте параметры Claude Code вместо этого для общей конфигурации. Запись [`CLAUDE_CONFIG_DIR`](/docs/ru/env-vars) применяется только в том случае, если её значение является абсолютным путём; расширение не раскрывает `~` и игнорирует относительное значение. |606| `environmentVariables` | `[]` | Установить переменные окружения для процесса Claude. Используйте параметры Claude Code вместо этого для общей конфигурации. Запись [`CLAUDE_CONFIG_DIR`](/docs/ru/env-vars) применяется только в том случае, если её значение является абсолютным путём; расширение не раскрывает `~` и игнорирует относительное значение. |

607| `disableLoginPrompt` | `false` | Пропустить запросы аутентификации (для настроек сторонних поставщиков) |607| `disableLoginPrompt` | `false` | Пропустить запросы аутентификации (для настроек сторонних поставщиков) |

608| `allowDangerouslySkipPermissions` | `false` | Добавляет Bypass permissions в селектор режима. Используйте только в песочницах без доступа в интернет. |608| `allowDangerouslySkipPermissions` | `false` | Добавляет Bypass permissions в селектор режима. Используйте только в песочницах без доступа в интернет. |

609| `claudeProcessWrapper` | - | Исполняемый файл, используемый для запуска процесса Claude. Путь к встроенному двоичному файлу передаётся в качестве аргумента при наличии. Установите это на отдельно установленный двоичный файл `claude`, если сборка расширения не включает его для вашей платформы. В обёрнутой установке беседы начинаются в режиме Manual, если вы не установили `initialPermissionMode` или не выбрали Manual, Edit automatically или Auto в более ранней беседе, потому что расширение пропускает параметры и встроенные шаги по умолчанию там; см. [Switch permission modes](/docs/ru/permission-modes#switch-permission-modes). Ошибка "Unsupported platform" при активации означает, что для вашей платформы не встроен двоичный файл; см. [какие платформы имеют предварительно собранные двоичные файлы](/docs/ru/troubleshoot-install#native-binary-not-found-after-npm-install). |609| `claudeProcessWrapper` | - | Исполняемый файл, используемый для запуска процесса Claude. Путь к встроенному двоичному файлу передаётся в качестве аргумента при наличии. Установите это на отдельно установленный двоичный файл `claude`, если сборка расширения не включает его для вашей платформы. |

610 610 

611<h2 id="use-a-screen-reader">611<h2 id="use-a-screen-reader">

612 Использование программы чтения с экрана612 Использование программы чтения с экрана

worktrees.md +3 −1

Details

6 6 

7> Изолируйте параллельные сеансы Claude Code в отдельных git worktrees, чтобы изменения не конфликтовали. Охватывает флаг `--worktree`, изоляцию subagent, `.worktreeinclude`, очистку и hooks для не-git VCS.7> Изолируйте параллельные сеансы Claude Code в отдельных git worktrees, чтобы изменения не конфликтовали. Охватывает флаг `--worktree`, изоляцию subagent, `.worktreeinclude`, очистку и hooks для не-git VCS.

8 8 

9[git worktree](https://git-scm.com/docs/git-worktree) — это отдельный рабочий каталог с собственными файлами и веткой, использующий ту же историю репозитория и удалённый сервер, что и ваша основная копия. Запуск каждого сеанса Claude Code в собственном worktree означает, что правки в одном сеансе никогда не затрагивают файлы в другом, поэтому один сеанс может создавать функцию, а второй исправлять ошибку.9[git worktree](https://git-scm.com/docs/git-worktree) — это отдельный рабочий каталог с собственными файлами и веткой, использующий ту же историю репозитория и удалённый сервер, что и ваша основная копия. Запуск каждой сессии Claude Code в собственном worktree даёт ей отдельную копию файлов для редактирования, поэтому одна сессия может создавать функцию, а вторая исправлять ошибку.

10 10 

11<Note>11<Note>

12 Worktrees требуют git-репозитория; для других систем контроля версий [настройте hooks для замены логики git](#non-git-version-control). В [десктопном приложении](/docs/ru/desktop#work-in-parallel-with-sessions) выберите опцию **worktree** при запуске сеанса, чтобы дать ему собственный worktree.12 Worktrees требуют git-репозитория; для других систем контроля версий [настройте hooks для замены логики git](#non-git-version-control). В [десктопном приложении](/docs/ru/desktop#work-in-parallel-with-sessions) выберите опцию **worktree** при запуске сеанса, чтобы дать ему собственный worktree.


104* **Перенаправления git**: Claude Code блокирует команду Bash или Monitor, которая перенаправляет git в основную копию. Перенаправление может поступать через `git -C`, `--git-dir`, переменную `GIT_DIR` или `GIT_WORK_TREE` или `cd` в основную копию перед запуском git.104* **Перенаправления git**: Claude Code блокирует команду Bash или Monitor, которая перенаправляет git в основную копию. Перенаправление может поступать через `git -C`, `--git-dir`, переменную `GIT_DIR` или `GIT_WORK_TREE` или `cd` в основную копию перед запуском git.

105* **Форма команды**: Claude Code блокирует команду Bash или Monitor, когда он не может проверить из текста команды, что любой git, который запускает команда, остаётся внутри worktree. Это происходит, например, когда имя команды вычисляется во время выполнения, когда синтаксис не может быть проанализирован, или когда расширение, такое как `${!name}` или `${ command; }`, может запустить команду, которую текст не указывает явно. Claude Code сообщает Claude, как переписать отказанную команду, например разделив её на простые отдельные команды. Вы не можете отключить эту проверку.105* **Форма команды**: Claude Code блокирует команду Bash или Monitor, когда он не может проверить из текста команды, что любой git, который запускает команда, остаётся внутри worktree. Это происходит, например, когда имя команды вычисляется во время выполнения, когда синтаксис не может быть проанализирован, или когда расширение, такое как `${!name}` или `${ command; }`, может запустить команду, которую текст не указывает явно. Claude Code сообщает Claude, как переписать отказанную команду, например разделив её на простые отдельные команды. Вы не можете отключить эту проверку.

106 106 

107Эти проверки считывают путь, на который нацелена правка, каталог, в котором выполняется команда, и текст команды. Ни одна из них не отслеживает, какие файлы записывает shell-команда, поэтому команда, которая записывает в основную копию, не запуская там git, например `cp` или перенаправление оболочки, ими не отклоняется. Claude Code обрабатывает такую команду как любую другую shell-команду, поэтому будет ли она выполнена или запросит у вас подтверждение, зависит от вашего [режима разрешений](/docs/ru/permission-modes) и правил.

108 

107Проверки применяются к репозиторию, из которого вы запустили Claude Code. Они также охватывают основную копию, на которую ссылается связанный worktree. Для команд PowerShell Claude Code применяет только проверку рабочего каталога.109Проверки применяются к репозиторию, из которого вы запустили Claude Code. Они также охватывают основную копию, на которую ссылается связанный worktree. Для команд PowerShell Claude Code применяет только проверку рабочего каталога.

108 110 

109Claude видит каждый отказ как ошибку инструмента, которая называет worktree и говорит, как продолжить. Для отказанной команды см. [что означает сообщение об отказе и как его очистить](/docs/ru/errors#command-blocked-by-the-worktree-isolation-checks).111Claude видит каждый отказ как ошибку инструмента, которая называет worktree и говорит, как продолжить. Для отказанной команды см. [что означает сообщение об отказе и как его очистить](/docs/ru/errors#command-blocked-by-the-worktree-isolation-checks).