SpyBara
Go Premium

Documentation 2026-05-02 18:14 UTC to 2026-05-04 22:58 UTC

99 files changed +47,204 −0. View all changes and history on the product overview
2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

admin-setup.md +132 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Настройка Claude Code для вашей организации

6 

7> Карта решений для администраторов, развертывающих Claude Code, охватывающая поставщиков API, управляемые параметры, принудительное применение политики, мониторинг использования и обработку данных.

8 

9Claude Code обеспечивает соблюдение политики организации через управляемые параметры, которые имеют приоритет над локальной конфигурацией разработчика. Вы доставляете эти параметры из консоли администратора Claude, вашей системы управления мобильными устройствами (MDM) или файла на диске. Параметры контролируют, какие инструменты, команды, серверы и сетевые назначения может достичь Claude.

10 

11На этой странице рассматриваются решения по развертыванию по порядку. Каждая строка ссылается на раздел ниже и на справочную страницу для этой области.

12 

13<Note>

14 SSO, подготовка SCIM и назначение мест настраиваются на уровне учетной записи Claude. См. [Руководство администратора Claude Enterprise](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide) и [назначение мест](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan) для этих шагов.

15</Note>

16 

17| Решение | Что вы выбираете | Справка |

18| :------------------------------------------------------------------------------ | :-------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

19| [Выберите поставщика API](#choose-your-api-provider) | Где Claude Code аутентифицируется и как это выставляется счетом | [Authentication](/ru/authentication), [Bedrock](/ru/amazon-bedrock), [Vertex AI](/ru/google-vertex-ai), [Foundry](/ru/microsoft-foundry) |

20| [Решите, как параметры достигают устройств](#decide-how-settings-reach-devices) | Как управляемая политика достигает машин разработчиков | [Server-managed settings](/ru/server-managed-settings), [Settings files](/ru/settings#settings-files) |

21| [Решите, что принудительно применять](#decide-what-to-enforce) | Какие инструменты, команды и интеграции разрешены | [Permissions](/ru/permissions), [Sandboxing](/ru/sandboxing) |

22| [Настройте видимость использования](#set-up-usage-visibility) | Как вы отслеживаете расходы и внедрение | [Analytics](/ru/analytics), [Monitoring](/ru/monitoring-usage), [Costs](/ru/costs) |

23| [Проверьте обработку данных](#review-data-handling) | Хранение данных и статус соответствия | [Data usage](/ru/data-usage), [Security](/ru/security) |

24 

25## Выберите поставщика API

26 

27Claude Code подключается к Claude через одного из нескольких поставщиков API. Ваш выбор влияет на выставление счетов, аутентификацию и какой статус соответствия вы наследуете.

28 

29| Поставщик | Выберите это, когда |

30| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

31| Claude for Teams / Enterprise | Вы хотите Claude Code и claude.ai в одной подписке на одного пользователя без инфраструктуры для запуска. Это рекомендация по умолчанию. |

32| Claude Console | Вы ориентированы на API или хотите выставление счетов по мере использования |

33| Amazon Bedrock | Вы хотите наследовать существующие элементы управления соответствием AWS и выставление счетов |

34| Google Vertex AI | Вы хотите наследовать существующие элементы управления соответствием GCP и выставление счетов |

35| Microsoft Foundry | Вы хотите наследовать существующие элементы управления соответствием Azure и выставление счетов |

36 

37Для полного сравнения поставщиков, охватывающего аутентификацию, регионы и паритет функций, см. [обзор развертывания предприятия](/ru/third-party-integrations). Настройка аутентификации каждого поставщика находится в [Authentication](/ru/authentication).

38 

39Требования прокси и брандмауэра в [Network configuration](/ru/network-config) применяются независимо от поставщика. Если вы хотите единую конечную точку перед несколькими поставщиками или централизованное логирование запросов, см. [LLM gateway](/ru/llm-gateway).

40 

41## Решите, как параметры достигают устройств

42 

43Управляемые параметры определяют политику, которая имеет приоритет над локальной конфигурацией разработчика. Claude Code ищет их в четырех местах и использует первый найденный на данном устройстве.

44 

45| Механизм | Доставка | Приоритет | Платформы |

46| :---------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- | :------------- |

47| Server-managed | Консоль администратора Claude.ai | Наивысший | Все |

48| plist / registry policy | macOS: `com.anthropic.claudecode` plist<br />Windows: `HKLM\SOFTWARE\Policies\ClaudeCode` | Высокий | macOS, Windows |

49| File-based managed | macOS: `/Library/Application Support/ClaudeCode/managed-settings.json`<br />Linux и WSL: `/etc/claude-code/managed-settings.json`<br />Windows: `C:\Program Files\ClaudeCode\managed-settings.json` | Средний | Все |

50| Windows user registry | `HKCU\SOFTWARE\Policies\ClaudeCode` | Наименьший | Только Windows |

51 

52Server-managed параметры достигают устройств во время аутентификации и обновляются каждый час во время активных сеансов без инфраструктуры конечной точки. Они требуют плана Claude for Teams или Enterprise, поэтому развертывания на других поставщиках вместо этого нуждаются в одном из механизмов на основе файлов или уровня ОС.

53 

54Если ваша организация смешивает поставщиков, настройте [server-managed settings](/ru/server-managed-settings) для пользователей Claude.ai плюс [резервный вариант на основе файлов или plist/registry](/ru/settings#settings-files), чтобы другие пользователи по-прежнему получали управляемую политику.

55 

56Расположения plist и HKLM registry работают с любым поставщиком и устойчивы к несанкционированному доступу, потому что требуют привилегий администратора для записи. Реестр пользователя Windows в HKCU доступен для записи без повышения прав, поэтому рассматривайте его как удобный вариант по умолчанию, а не как канал принудительного применения.

57 

58По умолчанию WSL читает только путь Linux в `/etc/claude-code`. Чтобы расширить вашу политику реестра Windows и `C:\Program Files\ClaudeCode` на WSL на одной машине, установите [`wslInheritsWindowsSettings: true`](/ru/settings#available-settings) в одном из этих источников, доступных только администратору Windows.

59 

60Какой бы механизм вы ни выбрали, управляемые значения имеют приоритет над параметрами пользователя и проекта. Параметры массива, такие как `permissions.allow` и `permissions.deny`, объединяют записи из всех источников, поэтому разработчики могут расширять управляемые списки, но не удалять из них.

61 

62См. [Server-managed settings](/ru/server-managed-settings) и [Settings files and precedence](/ru/settings#settings-files).

63 

64## Решите, что принудительно применять

65 

66Управляемые параметры могут заблокировать инструменты, изоляцию песочницы, ограничить серверы MCP и источники плагинов, а также контролировать, какие hooks запускаются. Каждая строка — это поверхность управления с ключами параметров, которые ее управляют.

67 

68| Управление | Что оно делает | Ключевые параметры |

69| :------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- |

70| [Permission rules](/ru/permissions) | Разрешить, спросить или запретить определенные инструменты и команды | `permissions.allow`, `permissions.deny` |

71| [Permission lockdown](/ru/permissions#managed-only-settings) | Применяются только управляемые правила разрешений; отключить `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`, `permissions.disableBypassPermissionsMode` |

72| [Sandboxing](/ru/sandboxing) | Изоляция файловой системы и сети на уровне ОС с разрешенными списками доменов | `sandbox.enabled`, `sandbox.network.allowedDomains` |

73| [Managed policy CLAUDE.md](/ru/memory#deploy-organization-wide-claude-md) | Инструкции на уровне организации, загруженные в каждый сеанс, не могут быть исключены | Файл по пути управляемой политики |

74| [MCP server control](/ru/mcp#managed-mcp-configuration) | Ограничить, какие серверы MCP пользователи могут добавлять или подключать | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly` |

75| [Plugin marketplace control](/ru/plugin-marketplaces#managed-marketplace-restrictions) | Ограничить, какие источники маркетплейса пользователи могут добавлять и устанавливать | `strictKnownMarketplaces`, `blockedMarketplaces` |

76| [Hook restrictions](/ru/settings#hook-configuration) | Загружаются только управляемые hooks; ограничить URL-адреса HTTP hook | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

77| [Version floor](/ru/settings) | Предотвратить автоматическое обновление от установки ниже минимума на уровне организации | `minimumVersion` |

78 

79Правила разрешений и песочница охватывают разные слои. Запрет WebFetch блокирует инструмент fetch Claude, но если Bash разрешен, `curl` и `wget` все еще могут достичь любого URL-адреса. Песочница закрывает этот пробел с разрешенным списком сетевых доменов, принудительно применяемым на уровне ОС.

80 

81Для модели угроз, которую защищают эти элементы управления, см. [Security](/ru/security).

82 

83## Настройте видимость использования

84 

85Выберите мониторинг на основе того, что вам нужно сообщить.

86 

87| Возможность | Что вы получаете | Доступность | С чего начать |

88| :------------------ | :--------------------------------------------------------------------- | :--------------- | :--------------------------------------- |

89| Usage monitoring | Экспорт OpenTelemetry сеансов, инструментов и токенов | Все поставщики | [Monitoring usage](/ru/monitoring-usage) |

90| Analytics dashboard | Метрики для каждого пользователя, отслеживание вклада, таблица лидеров | Только Anthropic | [Analytics](/ru/analytics) |

91| Cost tracking | Ограничения расходов, ограничения скорости и атрибуция использования | Только Anthropic | [Costs](/ru/costs) |

92 

93Облачные поставщики раскрывают расходы через AWS Cost Explorer, GCP Billing или Azure Cost Management. Планы Claude for Teams и Enterprise включают панель использования на [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code).

94 

95## Проверьте обработку данных

96 

97На планах Team, Enterprise, Claude API и облачных поставщиков Anthropic не обучает модели на вашем коде или подсказках. Ваш поставщик API определяет хранение и статус соответствия.

98 

99| Тема | Что нужно знать | С чего начать |

100| :------------------------ | :--------------------------------------------------------------------------------------- | :--------------------------------------------- |

101| Data usage policy | Что собирает Anthropic, как долго это хранится, что никогда не используется для обучения | [Data usage](/ru/data-usage) |

102| Zero Data Retention (ZDR) | Ничего не хранится после завершения запроса. Доступно на Claude for Enterprise | [Zero data retention](/ru/zero-data-retention) |

103| Security architecture | Сетевая модель, шифрование, аутентификация, журнал аудита | [Security](/ru/security) |

104 

105Если вам нужно логирование аудита на уровне запроса или маршрутизация трафика по чувствительности данных, поместите [LLM gateway](/ru/llm-gateway) между разработчиками и вашим поставщиком. Для нормативных требований и сертификаций см. [Legal and compliance](/ru/legal-and-compliance).

106 

107## Проверьте и подключите

108 

109После настройки управляемых параметров попросите разработчика запустить `/status` внутри Claude Code. Вывод включает строку, начинающуюся с `Enterprise managed settings`, за которой следует источник в скобках, один из `(remote)`, `(plist)`, `(HKLM)`, `(HKCU)` или `(file)`. См. [Verify active settings](/ru/settings#verify-active-settings).

110 

111Поделитесь этими ресурсами, чтобы помочь разработчикам начать работу:

112 

113* [Quickstart](/ru/quickstart): пошаговое руководство первого сеанса от установки до работы с проектом

114* [Common workflows](/ru/common-workflows): шаблоны для повседневных задач, таких как проверка кода, рефакторинг и отладка

115* [Claude 101](https://anthropic.skilljar.com/claude-101) и [Claude Code in Action](https://anthropic.skilljar.com/claude-code-in-action): самостоятельные курсы Anthropic Academy

116 

117Для проблем с входом направьте разработчиков на [authentication troubleshooting](/ru/troubleshoot-install#login-and-authentication). Наиболее распространенные исправления:

118 

119* Запустите `/logout`, а затем `/login` для переключения учетных записей

120* Запустите `claude update`, если отсутствует опция аутентификации предприятия

121* Перезагрузите терминал после обновления

122 

123Если разработчик видит "You haven't been added to your organization yet," его место не включает доступ к Claude Code и должно быть обновлено в консоли администратора.

124 

125## Следующие шаги

126 

127После выбора поставщика и механизма доставки переходите к подробной конфигурации:

128 

129* [Server-managed settings](/ru/server-managed-settings): доставка управляемой политики из консоли администратора Claude

130* [Settings reference](/ru/settings): каждый ключ параметра, расположение файла и правило приоритета

131* [Amazon Bedrock](/ru/amazon-bedrock), [Google Vertex AI](/ru/google-vertex-ai), [Microsoft Foundry](/ru/microsoft-foundry): развертывание для конкретного поставщика

132* [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide): SSO, SCIM, управление местами и сценарий развертывания

Details

1> ## Documentation Index

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

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

4 

5# Использование функций Claude Code в SDK

6 

7> Загружайте инструкции проекта, skills, hooks и другие функции Claude Code в ваши SDK-агентов.

8 

9Agent SDK построен на той же основе, что и Claude Code, что означает, что ваши SDK-агенты имеют доступ к тем же функциям на основе файловой системы: инструкции проекта (`CLAUDE.md` и правила), skills, hooks и многое другое.

10 

11Когда вы опускаете `settingSources`, `query()` читает те же параметры файловой системы, что и Claude Code CLI: пользовательские, проектные и локальные параметры, файлы `CLAUDE.md` и skills, агенты и команды в `.claude/`. Чтобы запустить без них, передайте `settingSources: []`, что ограничивает агента только тем, что вы настраиваете программно. Параметры управляемой политики и глобальная конфигурация `~/.claude.json` читаются независимо от этого параметра. См. [Что settingSources не контролирует](#what-settingsources-does-not-control).

12 

13Для концептуального обзора того, что делает каждая функция и когда её использовать, см. [Расширение Claude Code](/ru/features-overview).

14 

15## Управление параметрами файловой системы с помощью settingSources

16 

17Параметр источников параметров ([`setting_sources`](/ru/agent-sdk/python#claude-agent-options) в Python, [`settingSources`](/ru/agent-sdk/typescript#setting-source) в TypeScript) контролирует, какие параметры на основе файловой системы загружает SDK. Передайте явный список для включения определённых источников или передайте пустой массив для отключения пользовательских, проектных и локальных параметров.

18 

19Этот пример загружает как пользовательские, так и проектные параметры, устанавливая `settingSources` на `["user", "project"]`:

20 

21<CodeGroup>

22 ```python Python theme={null}

23 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage

24 

25 async for message in query(

26 prompt="Help me refactor the auth module",

27 options=ClaudeAgentOptions(

28 # "user" loads from ~/.claude/, "project" loads from ./.claude/ in cwd.

29 # Together they give the agent access to CLAUDE.md, skills, hooks, and

30 # permissions from both locations.

31 setting_sources=["user", "project"],

32 allowed_tools=["Read", "Edit", "Bash"],

33 ),

34 ):

35 if isinstance(message, AssistantMessage):

36 for block in message.content:

37 if hasattr(block, "text"):

38 print(block.text)

39 if isinstance(message, ResultMessage) and message.subtype == "success":

40 print(f"\nResult: {message.result}")

41 ```

42 

43 ```typescript TypeScript theme={null}

44 import { query } from "@anthropic-ai/claude-agent-sdk";

45 

46 for await (const message of query({

47 prompt: "Help me refactor the auth module",

48 options: {

49 // "user" loads from ~/.claude/, "project" loads from ./.claude/ in cwd.

50 // Together they give the agent access to CLAUDE.md, skills, hooks, and

51 // permissions from both locations.

52 settingSources: ["user", "project"],

53 allowedTools: ["Read", "Edit", "Bash"]

54 }

55 })) {

56 if (message.type === "assistant") {

57 for (const block of message.message.content) {

58 if (block.type === "text") console.log(block.text);

59 }

60 }

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

62 console.log(`\nResult: ${message.result}`);

63 }

64 }

65 ```

66</CodeGroup>

67 

68Каждый источник загружает параметры из определённого местоположения, где `<cwd>` — это рабочий каталог, который вы передаёте через параметр `cwd` (или текущий каталог процесса, если не установлен). Для полного определения типа см. [`SettingSource`](/ru/agent-sdk/typescript#setting-source) (TypeScript) или [`SettingSource`](/ru/agent-sdk/python#setting-source) (Python).

69 

70| Источник | Что он загружает | Местоположение |

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

72| `"project"` | Project CLAUDE.md, `.claude/rules/*.md`, project skills, project hooks, project `settings.json` | `<cwd>/.claude/` и каждый родительский каталог вверх до корня файловой системы (остановка при обнаружении `.claude/` или отсутствии дополнительных родителей) |

73| `"user"` | User CLAUDE.md, `~/.claude/rules/*.md`, user skills, user settings | `~/.claude/` |

74| `"local"` | CLAUDE.local.md (gitignored), `.claude/settings.local.json` | `<cwd>/` |

75 

76Опускание `settingSources` эквивалентно `["user", "project", "local"]`.

77 

78Параметр `cwd` определяет, где SDK ищет параметры проекта. Если ни `cwd`, ни какой-либо из его родительских каталогов не содержит папку `.claude/`, функции уровня проекта не будут загружены.

79 

80### Что settingSources не контролирует

81 

82`settingSources` охватывает пользовательские, проектные и локальные параметры. Несколько входов читаются независимо от его значения:

83 

84| Вход | Поведение | Для отключения |

85| :------------------------------------------------------------- | :------------------------------------------ | :------------------------------------------------------------------------------------------------- |

86| Параметры управляемой политики | Всегда загружаются при наличии на хосте | Удалите файл управляемых параметров |

87| `~/.claude.json` глобальная конфигурация | Всегда читается | Переместите с помощью `CLAUDE_CONFIG_DIR` в `env` |

88| Автоматическая память в `~/.claude/projects/<project>/memory/` | Загружается по умолчанию в системный запрос | Установите `autoMemoryEnabled: false` в параметрах или `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` в `env` |

89 

90<Warning>

91 Не полагайтесь на параметры `query()` по умолчанию для изоляции в многопользовательской среде. Поскольку входы выше читаются независимо от `settingSources`, процесс SDK может подхватить конфигурацию уровня хоста и память для каждого каталога. Для развёртываний в многопользовательской среде запустите каждого пользователя в собственной файловой системе и установите `settingSources: []` плюс `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` в `env`. См. [Безопасное развёртывание](/ru/agent-sdk/secure-deployment).

92</Warning>

93 

94## Инструкции проекта (CLAUDE.md и правила)

95 

96Файлы `CLAUDE.md` и файлы `.claude/rules/*.md` дают вашему агенту постоянный контекст о вашем проекте: соглашения кодирования, команды сборки, архитектурные решения и инструкции. Когда `settingSources` включает `"project"` (как в примере выше), SDK загружает эти файлы в контекст при запуске сеанса. Затем агент следует вашим соглашениям проекта без необходимости повторять их в каждом запросе.

97 

98### Местоположения загрузки CLAUDE.md

99 

100| Уровень | Местоположение | Когда загружается |

101| :-------------------- | :---------------------------------------------- | :--------------------------------------------------------------------------------------------------------- |

102| Project (root) | `<cwd>/CLAUDE.md` или `<cwd>/.claude/CLAUDE.md` | `settingSources` включает `"project"` |

103| Project rules | `<cwd>/.claude/rules/*.md` | `settingSources` включает `"project"` |

104| Project (parent dirs) | Файлы `CLAUDE.md` в каталогах выше `cwd` | `settingSources` включает `"project"`, загружается при запуске сеанса |

105| Project (child dirs) | Файлы `CLAUDE.md` в подкаталогах `cwd` | `settingSources` включает `"project"`, загружается по требованию, когда агент читает файл в этом поддереве |

106| Local (gitignored) | `<cwd>/CLAUDE.local.md` | `settingSources` включает `"local"` |

107| User | `~/.claude/CLAUDE.md` | `settingSources` включает `"user"` |

108| User rules | `~/.claude/rules/*.md` | `settingSources` включает `"user"` |

109 

110Все уровни являются аддитивными: если существуют как проектные, так и пользовательские файлы `CLAUDE.md`, агент видит оба. Между уровнями нет жёсткого правила приоритета; если инструкции конфликтуют, результат зависит от того, как Claude их интерпретирует. Напишите неконфликтующие правила или явно укажите приоритет в более специфичном файле («Эти инструкции проекта переопределяют любые конфликтующие пользовательские значения по умолчанию»).

111 

112<Tip>

113 Вы также можете внедрить контекст непосредственно через `systemPrompt` без использования файлов `CLAUDE.md`. См. [Изменение системных запросов](/ru/agent-sdk/modifying-system-prompts). Используйте `CLAUDE.md`, когда вы хотите, чтобы один и тот же контекст был общим между интерактивными сеансами Claude Code и вашими SDK-агентами.

114</Tip>

115 

116О том, как структурировать и организовать содержимое `CLAUDE.md`, см. [Управление памятью Claude](/ru/memory).

117 

118## Skills

119 

120Skills — это файлы markdown, которые дают вашему агенту специализированные знания и вызываемые рабочие процессы. В отличие от `CLAUDE.md` (который загружается каждый сеанс), skills загружаются по требованию. Агент получает описания skills при запуске и загружает полное содержимое при необходимости.

121 

122Skills обнаруживаются из файловой системы через `settingSources`. С параметрами по умолчанию пользовательские и проектные skills загружаются автоматически. Инструмент `Skill` включен по умолчанию, когда вы не указываете `allowedTools`. Если вы используете список разрешений `allowedTools`, включите `"Skill"` явно.

123 

124<CodeGroup>

125 ```python Python theme={null}

126 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

127 

128 # Skills in .claude/skills/ are discovered automatically

129 # when settingSources includes "project"

130 async for message in query(

131 prompt="Review this PR using our code review checklist",

132 options=ClaudeAgentOptions(

133 setting_sources=["user", "project"],

134 allowed_tools=["Skill", "Read", "Grep", "Glob"],

135 ),

136 ):

137 if isinstance(message, ResultMessage) and message.subtype == "success":

138 print(message.result)

139 ```

140 

141 ```typescript TypeScript theme={null}

142 import { query } from "@anthropic-ai/claude-agent-sdk";

143 

144 // Skills in .claude/skills/ are discovered automatically

145 // when settingSources includes "project"

146 for await (const message of query({

147 prompt: "Review this PR using our code review checklist",

148 options: {

149 settingSources: ["user", "project"],

150 allowedTools: ["Skill", "Read", "Grep", "Glob"]

151 }

152 })) {

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

154 console.log(message.result);

155 }

156 }

157 ```

158</CodeGroup>

159 

160<Note>

161 Skills должны быть созданы как артефакты файловой системы (`.claude/skills/<name>/SKILL.md`). SDK не имеет программного API для регистрации skills. См. [Agent Skills в SDK](/ru/agent-sdk/skills) для полных деталей.

162</Note>

163 

164Дополнительную информацию о создании и использовании skills см. в разделе [Agent Skills в SDK](/ru/agent-sdk/skills).

165 

166## Hooks

167 

168SDK поддерживает два способа определения hooks, и они работают рядом:

169 

170* **Filesystem hooks:** команды оболочки, определённые в `settings.json`, загружаются, когда `settingSources` включает соответствующий источник. Это те же hooks, которые вы бы настроили для [интерактивных сеансов Claude Code](/ru/hooks-guide).

171* **Programmatic hooks:** функции обратного вызова, передаваемые непосредственно в `query()`. Они выполняются в процессе вашего приложения и могут возвращать структурированные решения. См. [Управление выполнением с помощью hooks](/ru/agent-sdk/hooks).

172 

173Оба типа выполняются во время одного и того же жизненного цикла hook. Если у вас уже есть hooks в файле `.claude/settings.json` вашего проекта и вы установили `settingSources: ["project"]`, эти hooks автоматически запускаются в SDK без дополнительной конфигурации.

174 

175Обратные вызовы Hook получают входные данные инструмента и возвращают словарь решения. Возврат `{}` (пустого словаря) означает разрешить инструменту продолжить. Возврат `{"decision": "block", "reason": "..."}` предотвращает выполнение, и причина отправляется Claude как результат инструмента. См. [руководство hooks](/ru/agent-sdk/hooks) для полной сигнатуры обратного вызова и типов возврата.

176 

177<CodeGroup>

178 ```python Python theme={null}

179 from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher, ResultMessage

180 

181 

182 # PreToolUse hook callback. Positional args:

183 # input_data: HookInput dict with tool_name, tool_input, hook_event_name

184 # tool_use_id: str | None, the ID of the tool call being intercepted

185 # context: HookContext, carries session metadata

186 async def audit_bash(input_data, tool_use_id, context):

187 command = input_data.get("tool_input", {}).get("command", "")

188 if "rm -rf" in command:

189 return {"decision": "block", "reason": "Destructive command blocked"}

190 return {} # Empty dict: allow the tool to proceed

191 

192 

193 # Filesystem hooks from .claude/settings.json run automatically

194 # when settingSources loads them. You can also add programmatic hooks:

195 async for message in query(

196 prompt="Refactor the auth module",

197 options=ClaudeAgentOptions(

198 setting_sources=["project"], # Loads hooks from .claude/settings.json

199 hooks={

200 "PreToolUse": [

201 HookMatcher(matcher="Bash", hooks=[audit_bash]),

202 ]

203 },

204 ),

205 ):

206 if isinstance(message, ResultMessage) and message.subtype == "success":

207 print(message.result)

208 ```

209 

210 ```typescript TypeScript theme={null}

211 import { query, type HookInput, type HookJSONOutput } from "@anthropic-ai/claude-agent-sdk";

212 

213 // PreToolUse hook callback. HookInput is a discriminated union on

214 // hook_event_name, so narrowing on it gives TypeScript the right

215 // tool_input shape for this event.

216 const auditBash = async (input: HookInput): Promise<HookJSONOutput> => {

217 if (input.hook_event_name !== "PreToolUse") return {};

218 const toolInput = input.tool_input as { command?: string };

219 if (toolInput.command?.includes("rm -rf")) {

220 return { decision: "block", reason: "Destructive command blocked" };

221 }

222 return {}; // Empty object: allow the tool to proceed

223 };

224 

225 // Filesystem hooks from .claude/settings.json run automatically

226 // when settingSources loads them. You can also add programmatic hooks:

227 for await (const message of query({

228 prompt: "Refactor the auth module",

229 options: {

230 settingSources: ["project"], // Loads hooks from .claude/settings.json

231 hooks: {

232 PreToolUse: [{ matcher: "Bash", hooks: [auditBash] }]

233 }

234 }

235 })) {

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

237 console.log(message.result);

238 }

239 }

240 ```

241</CodeGroup>

242 

243### Когда использовать какой тип hook

244 

245| Тип hook | Лучше всего для |

246| :--------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

247| **Filesystem** (`settings.json`) | Совместное использование hooks между сеансами CLI и SDK. Поддерживает `"command"` (shell-скрипты), `"http"` (POST на конечную точку), `"mcp_tool"` (вызов инструмента подключённого MCP-сервера), `"prompt"` (LLM оценивает запрос) и `"agent"` (порождает агента-верификатора). Они срабатывают в основном агенте и любых подагентах, которые он порождает. |

248| **Programmatic** (обратные вызовы в `query()`) | Логика, специфичная для приложения; возврат структурированных решений; интеграция в процессе. Ограничено только основным сеансом. |

249 

250<Note>

251 TypeScript SDK поддерживает дополнительные события hook помимо Python, включая `SessionStart`, `SessionEnd`, `TeammateIdle` и `TaskCompleted`. См. [руководство hooks](/ru/agent-sdk/hooks) для полной таблицы совместимости событий.

252</Note>

253 

254Для полных деталей о programmatic hooks см. [Управление выполнением с помощью hooks](/ru/agent-sdk/hooks). Для синтаксиса filesystem hook см. [Hooks](/ru/hooks).

255 

256## Выбор правильной функции

257 

258Agent SDK предоставляет вам доступ к нескольким способам расширения поведения вашего агента. Если вы не уверены, какой использовать, эта таблица отображает общие цели на правильный подход.

259 

260| Вы хотите... | Используйте | Поверхность SDK |

261| :------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

262| Установить соглашения проекта, которые ваш агент всегда соблюдает | [CLAUDE.md](/ru/memory) | `settingSources: ["project"]` загружает его автоматически |

263| Дать агенту справочный материал, который он загружает при необходимости | [Skills](/ru/agent-sdk/skills) | `settingSources` + `allowedTools: ["Skill"]` |

264| Запустить повторно используемый рабочий процесс (развёртывание, проверка, выпуск) | [User-invocable skills](/ru/agent-sdk/skills) | `settingSources` + `allowedTools: ["Skill"]` |

265| Делегировать изолированную подзадачу свежему контексту (исследование, проверка) | [Subagents](/ru/agent-sdk/subagents) | параметр `agents` + `allowedTools: ["Agent"]` |

266| Координировать несколько экземпляров Claude Code с общими списками задач и прямой передачей сообщений между агентами | [Agent teams](/ru/agent-teams) | Не настраивается напрямую через параметры SDK. Agent teams — это функция CLI, где один сеанс действует как лидер команды, координируя работу независимых товарищей по команде |

267| Запустить детерминированную логику на вызовах инструментов (аудит, блокировка, преобразование) | [Hooks](/ru/agent-sdk/hooks) | параметр `hooks` с обратными вызовами или shell-скрипты, загруженные через `settingSources` |

268| Дать Claude структурированный доступ к инструменту для внешнего сервиса | [MCP](/ru/agent-sdk/mcp) | параметр `mcpServers` |

269 

270<Tip>

271 **Subagents против agent teams:** Subagents являются эфемерными и изолированными: свежий разговор, одна задача, резюме возвращается родителю. Agent teams координируют несколько независимых экземпляров Claude Code, которые совместно используют список задач и обмениваются сообщениями напрямую. Agent teams — это функция CLI. См. [Что наследуют subagents](/ru/agent-sdk/subagents#what-subagents-inherit) и [сравнение agent teams](/ru/agent-teams#compare-with-subagents) для деталей.

272</Tip>

273 

274Каждая функция, которую вы включаете, добавляет к контекстному окну вашего агента. Для затрат на функцию и того, как эти функции слоятся вместе, см. [Расширение Claude Code](/ru/features-overview#understand-context-costs).

275 

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

277 

278* [Расширение Claude Code](/ru/features-overview): Концептуальный обзор всех функций расширения с таблицами сравнения и анализом затрат контекста

279* [Skills в SDK](/ru/agent-sdk/skills): Полное руководство по использованию skills программно

280* [Subagents](/ru/agent-sdk/subagents): Определение и вызов subagents для изолированных подзадач

281* [Hooks](/ru/agent-sdk/hooks): Перехват и управление поведением агента в ключевых точках выполнения

282* [Permissions](/ru/agent-sdk/permissions): Управление доступом к инструментам с помощью режимов, правил и обратных вызовов

283* [System prompts](/ru/agent-sdk/modifying-system-prompts): Внедрение контекста без файлов CLAUDE.md

agent-sdk/cost-tracking.md +263 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Отслеживание затрат и использования

6 

7> Узнайте, как отслеживать использование токенов, оценивать затраты и настраивать кэширование подсказок с помощью Claude Agent SDK.

8 

9Claude Agent SDK предоставляет подробную информацию об использовании токенов для каждого взаимодействия с Claude. Это руководство объясняет, как правильно отслеживать использование и понимать отчёты о затратах, особенно при работе с параллельными использованиями инструментов и многошаговыми диалогами.

10 

11Полную документацию API см. в [справочнике TypeScript SDK](/ru/agent-sdk/typescript) и [справочнике Python SDK](/ru/agent-sdk/python).

12 

13<Warning>

14 Поля `total_cost_usd` и `costUSD` являются оценками на стороне клиента, а не авторитетными данными для выставления счётов. SDK вычисляет их локально из таблицы цен, встроенной во время сборки, поэтому они могут отличаться от того, что вам фактически выставляется в счёт, когда:

15 

16 * изменяются цены

17 * установленная версия SDK не распознаёт модель

18 * применяются правила выставления счётов, которые клиент не может смоделировать

19 

20 Используйте эти поля для получения информации о разработке и приблизительного бюджетирования. Для авторитетного выставления счётов используйте [API использования и затрат](https://platform.claude.com/docs/en/build-with-claude/usage-cost-api) или страницу использования в [Claude Console](https://platform.claude.com/usage). Не выставляйте счета конечным пользователям и не принимайте финансовые решения на основе этих полей.

21</Warning>

22 

23## Понимание использования токенов

24 

25SDK TypeScript и Python предоставляют одни и те же данные об использовании с разными названиями полей:

26 

27* **TypeScript** предоставляет разбивку токенов по шагам для каждого сообщения помощника (`message.message.id`, `message.message.usage`), стоимость для каждой модели через `modelUsage` в результирующем сообщении и совокупный итог в результирующем сообщении.

28* **Python** предоставляет разбивку токенов по шагам для каждого сообщения помощника (`message.usage`, `message.message_id`), стоимость для каждой модели через `model_usage` в результирующем сообщении и накопленный итог в результирующем сообщении (`total_cost_usd` и словарь `usage`).

29 

30Оба SDK используют одну и ту же базовую модель затрат и предоставляют одинаковую детализацию. Разница заключается в названии полей и в том, где вложено использование по шагам.

31 

32Отслеживание затрат зависит от понимания того, как SDK определяет область действия данных об использовании:

33 

34* **Вызов `query()`:** одно вызывание функции `query()` SDK. Один вызов может включать несколько шагов (Claude отвечает, использует инструменты, получает результаты, отвечает снова). Каждый вызов создаёт одно сообщение [`result`](/ru/agent-sdk/typescript#sdk-result-message) в конце.

35* **Шаг:** один цикл запроса/ответа в пределах вызова `query()`. Каждый шаг создаёт сообщения помощника с использованием токенов.

36* **Сессия:** серия вызовов `query()`, связанных идентификатором сессии (с использованием опции `resume`). Каждый вызов `query()` в пределах сессии сообщает о своих затратах независимо.

37 

38На следующей диаграмме показан поток сообщений от одного вызова `query()` с использованием токенов, сообщаемым на каждом шаге и совокупной оценкой в конце:

39 

40<img src="https://mintcdn.com/claude-code/Dujg43sxTkuhSELI/images/agent-sdk/message-usage-flow.svg?fit=max&auto=format&n=Dujg43sxTkuhSELI&q=85&s=c542f51ff58547ef9c0e57b16d03f33c" alt="Диаграмма, показывающая запрос, создающий два шага сообщений. Шаг 1 имеет четыре сообщения помощника с одинаковым ID и использованием (считать один раз), Шаг 2 имеет одно сообщение помощника с новым ID, и финальное результирующее сообщение показывает предполагаемый total_cost_usd." width="760" height="520" data-path="images/agent-sdk/message-usage-flow.svg" />

41 

42<Steps>

43 <Step title="Каждый шаг создаёт сообщения помощника">

44 Когда Claude отвечает, он отправляет одно или несколько сообщений помощника. В TypeScript каждое сообщение помощника содержит вложенное `BetaMessage` (доступное через `message.message`) с `id` и объектом [`usage`](https://platform.claude.com/docs/en/api/messages) с подсчётом токенов (`input_tokens`, `output_tokens`). В Python класс данных `AssistantMessage` предоставляет одни и те же данные непосредственно через `message.usage` и `message.message_id`. Когда Claude использует несколько инструментов в одном ходу, все сообщения в этом ходу имеют одинаковый ID, поэтому дедублируйте по ID, чтобы избежать двойного подсчёта.

45 </Step>

46 

47 <Step title="Результирующее сообщение предоставляет совокупную оценку">

48 Когда вызов `query()` завершается, SDK выдаёт результирующее сообщение с `total_cost_usd` и совокупным `usage`. Это доступно как в TypeScript ([`SDKResultMessage`](/ru/agent-sdk/typescript#sdk-result-message)), так и в Python ([`ResultMessage`](/ru/agent-sdk/python#result-message)). Если вы делаете несколько вызовов `query()` (например, в многошаговой сессии), каждый результат отражает только стоимость этого отдельного вызова. Если вам нужна только предполагаемая сумма, вы можете игнорировать использование по шагам и прочитать это единственное значение.

49 </Step>

50</Steps>

51 

52## Получение общей стоимости запроса

53 

54Результирующее сообщение ([TypeScript](/ru/agent-sdk/typescript#sdk-result-message), [Python](/ru/agent-sdk/python#result-message)) отмечает конец цикла агента для вызова `query()`. Оно включает `total_cost_usd`, совокупную предполагаемую стоимость всех шагов в этом вызове. Это работает как для успешных, так и для ошибочных результатов. Если вы используете сессии для создания нескольких вызовов `query()`, каждый результат отражает только стоимость этого отдельного вызова.

55 

56Следующие примеры перебирают поток сообщений из вызова `query()` и выводят общую стоимость при поступлении сообщения `result`:

57 

58<CodeGroup>

59 ```typescript TypeScript theme={null}

60 import { query } from "@anthropic-ai/claude-agent-sdk";

61 

62 for await (const message of query({ prompt: "Summarize this project" })) {

63 if (message.type === "result") {

64 console.log(`Total cost: $${message.total_cost_usd}`);

65 }

66 }

67 ```

68 

69 ```python Python theme={null}

70 from claude_agent_sdk import query, ResultMessage

71 import asyncio

72 

73 

74 async def main():

75 async for message in query(prompt="Summarize this project"):

76 if isinstance(message, ResultMessage):

77 print(f"Total cost: ${message.total_cost_usd or 0}")

78 

79 

80 asyncio.run(main())

81 ```

82</CodeGroup>

83 

84## Отслеживание использования по шагам и по моделям

85 

86Примеры в этом разделе используют названия полей TypeScript. В Python эквивалентные поля — это [`AssistantMessage.usage`](/ru/agent-sdk/python#assistant-message) и `AssistantMessage.message_id` для использования по шагам, и [`ResultMessage.model_usage`](/ru/agent-sdk/python#result-message) для разбивки по моделям.

87 

88### Отслеживание использования по шагам

89 

90Каждое сообщение помощника содержит вложенное `BetaMessage` (доступное через `message.message`) с `id` и объектом `usage` с подсчётом токенов. Когда Claude использует инструменты параллельно, несколько сообщений имеют одинаковый `id` с идентичными данными об использовании. Отслеживайте, какие ID вы уже подсчитали, и пропускайте дубликаты, чтобы избежать завышенных итогов.

91 

92<Warning>

93 Параллельные вызовы инструментов создают несколько сообщений помощника, чьё вложенное `BetaMessage` имеет одинаковый `id` и идентичное использование. Всегда дедублируйте по ID, чтобы получить точные подсчёты токенов по шагам.

94</Warning>

95 

96Следующий пример накапливает входные и выходные токены на всех шагах, считая каждый уникальный ID сообщения только один раз:

97 

98```typescript theme={null}

99import { query } from "@anthropic-ai/claude-agent-sdk";

100 

101const seenIds = new Set<string>();

102let totalInputTokens = 0;

103let totalOutputTokens = 0;

104 

105for await (const message of query({ prompt: "Summarize this project" })) {

106 if (message.type === "assistant") {

107 const msgId = message.message.id;

108 

109 // Parallel tool calls share the same ID, only count once

110 if (!seenIds.has(msgId)) {

111 seenIds.add(msgId);

112 totalInputTokens += message.message.usage.input_tokens;

113 totalOutputTokens += message.message.usage.output_tokens;

114 }

115 }

116}

117 

118console.log(`Steps: ${seenIds.size}`);

119console.log(`Input tokens: ${totalInputTokens}`);

120console.log(`Output tokens: ${totalOutputTokens}`);

121```

122 

123### Разбивка использования по моделям

124 

125Результирующее сообщение включает [`modelUsage`](/ru/agent-sdk/typescript#model-usage), карту имени модели на подсчёты токенов и стоимость для каждой модели. Это полезно, когда вы запускаете несколько моделей (например, Haiku для подагентов и Opus для основного агента) и хотите увидеть, куда идут токены.

126 

127Следующий пример запускает запрос и выводит разбивку стоимости и токенов для каждой используемой модели:

128 

129```typescript theme={null}

130import { query } from "@anthropic-ai/claude-agent-sdk";

131 

132for await (const message of query({ prompt: "Summarize this project" })) {

133 if (message.type !== "result") continue;

134 

135 for (const [modelName, usage] of Object.entries(message.modelUsage)) {

136 console.log(`${modelName}: $${usage.costUSD.toFixed(4)}`);

137 console.log(` Input tokens: ${usage.inputTokens}`);

138 console.log(` Output tokens: ${usage.outputTokens}`);

139 console.log(` Cache read: ${usage.cacheReadInputTokens}`);

140 console.log(` Cache creation: ${usage.cacheCreationInputTokens}`);

141 }

142}

143```

144 

145## Накопление затрат на несколько вызовов

146 

147Каждый вызов `query()` возвращает свой собственный `total_cost_usd`. SDK не предоставляет итог на уровне сессии, поэтому если ваше приложение делает несколько вызовов `query()` (например, в многошаговой сессии или для разных пользователей), накапливайте итоги самостоятельно.

148 

149Следующие примеры запускают два вызова `query()` последовательно, добавляют `total_cost_usd` каждого вызова к текущему итогу и выводят как стоимость за вызов, так и совокупную стоимость:

150 

151<CodeGroup>

152 ```typescript TypeScript theme={null}

153 import { query } from "@anthropic-ai/claude-agent-sdk";

154 

155 // Track cumulative cost across multiple query() calls

156 let totalSpend = 0;

157 

158 const prompts = [

159 "Read the files in src/ and summarize the architecture",

160 "List all exported functions in src/auth.ts"

161 ];

162 

163 for (const prompt of prompts) {

164 for await (const message of query({ prompt })) {

165 if (message.type === "result") {

166 totalSpend += message.total_cost_usd;

167 console.log(`This call: $${message.total_cost_usd}`);

168 }

169 }

170 }

171 

172 console.log(`Total spend: $${totalSpend.toFixed(4)}`);

173 ```

174 

175 ```python Python theme={null}

176 from claude_agent_sdk import query, ResultMessage

177 import asyncio

178 

179 

180 async def main():

181 # Track cumulative cost across multiple query() calls

182 total_spend = 0.0

183 

184 prompts = [

185 "Read the files in src/ and summarize the architecture",

186 "List all exported functions in src/auth.ts",

187 ]

188 

189 for prompt in prompts:

190 async for message in query(prompt=prompt):

191 if isinstance(message, ResultMessage):

192 cost = message.total_cost_usd or 0

193 total_spend += cost

194 print(f"This call: ${cost}")

195 

196 print(f"Total spend: ${total_spend:.4f}")

197 

198 

199 asyncio.run(main())

200 ```

201</CodeGroup>

202 

203## Обработка ошибок, кэширования и расхождений в токенах

204 

205Для точного отслеживания затрат учитывайте неудачные диалоги, цены на кэшированные токены и случайные несоответствия в отчётах.

206 

207### Разрешение расхождений в выходных токенах

208 

209В редких случаях вы можете заметить разные значения `output_tokens` для сообщений с одинаковым ID. Когда это происходит:

210 

2111. **Используйте наибольшее значение:** финальное сообщение в группе обычно содержит точный итог.

2122. **Предпочитайте результирующее сообщение:** `total_cost_usd` в результирующем сообщении отражает накопленную оценку SDK на всех шагах, поэтому оно более надёжно, чем суммирование значений по шагам самостоятельно. Это всё ещё оценка и может отличаться от вашего фактического счёта.

2133. **Сообщайте о несоответствиях:** подавайте проблемы в [репозитории Claude Code на GitHub](https://github.com/anthropics/claude-code/issues).

214 

215### Отслеживание затрат на неудачные диалоги

216 

217Как успешные, так и ошибочные результирующие сообщения включают `usage` и `total_cost_usd`. Если диалог завершится неудачей на полпути, вы всё равно потребили токены до момента отказа. Всегда читайте данные о затратах из результирующего сообщения независимо от его `subtype`.

218 

219### Отслеживание кэшированных токенов

220 

221Agent SDK автоматически использует [кэширование подсказок](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) для снижения затрат на повторяющееся содержимое. Вам не нужно самостоятельно настраивать кэширование. Объект использования включает два дополнительных поля для отслеживания кэша:

222 

223* `cache_creation_input_tokens`: токены, используемые для создания новых записей кэша (взимаются по более высокой ставке, чем стандартные входные токены).

224* `cache_read_input_tokens`: токены, прочитанные из существующих записей кэша (взимаются по сниженной ставке).

225 

226Отслеживайте их отдельно от `input_tokens`, чтобы понять экономию от кэширования. В TypeScript эти поля типизированы на объекте [`Usage`](/ru/agent-sdk/typescript#usage). В Python они появляются как ключи в словаре [`ResultMessage.usage`](/ru/agent-sdk/python#result-message) (например, `message.usage.get("cache_read_input_tokens", 0)`).

227 

228### Расширение TTL кэша подсказок до одного часа

229 

230Записи кэша, написанные SDK, используют TTL в 5 минут по умолчанию, когда вы аутентифицируетесь с помощью ключа API или запускаете на Amazon Bedrock, Google Cloud Vertex AI или Microsoft Foundry. Если ваша рабочая нагрузка запускает много коротких сессий против одной и той же системной подсказки и контекста с промежутками более 5 минут между ними, кэш истекает между сессиями и каждая новая сессия платит полную входную цену.

231 

232Чтобы запросить TTL в 1 час на записи кэша, установите переменную окружения [`ENABLE_PROMPT_CACHING_1H`](/ru/env-vars). Вы можете экспортировать её в окружение вашей оболочки или контейнера, или передать её через `options.env`.

233 

234Следующий пример включает TTL в 1 час для агента, работающего на Bedrock:

235 

236<CodeGroup>

237 ```python Python theme={null}

238 options = ClaudeAgentOptions(

239 env={

240 "CLAUDE_CODE_USE_BEDROCK": "1",

241 "ENABLE_PROMPT_CACHING_1H": "1",

242 },

243 )

244 ```

245 

246 ```typescript TypeScript theme={null}

247 const options = {

248 env: {

249 ...process.env,

250 CLAUDE_CODE_USE_BEDROCK: "1",

251 ENABLE_PROMPT_CACHING_1H: "1",

252 },

253 };

254 ```

255</CodeGroup>

256 

257Записи кэша с TTL в 1 час взимаются по более высокой ставке, чем записи в 5 минут, поэтому включение этого обменивает более высокую стоимость записи на больше чтений из кэша. Подробности см. в [ценах на кэширование подсказок](https://platform.claude.com/docs/en/build-with-claude/prompt-caching). Пользователи подписки Claude уже получают TTL в 1 час автоматически и не нужно устанавливать эту переменную.

258 

259## Связанная документация

260 

261* [Справочник TypeScript SDK](/ru/agent-sdk/typescript) - Полная документация API

262* [Обзор SDK](/ru/agent-sdk/overview) - Начало работы с SDK

263* [Разрешения SDK](/ru/agent-sdk/permissions) - Управление разрешениями инструментов

agent-sdk/hooks.md +819 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Перехватывайте и контролируйте поведение агента с помощью hooks

6 

7> Перехватывайте и настраивайте поведение агента в ключевых точках выполнения с помощью hooks

8 

9Hooks — это функции обратного вызова, которые выполняют ваш код в ответ на события агента, такие как вызов инструмента, начало сеанса или остановка выполнения. С помощью hooks вы можете:

10 

11* **Блокировать опасные операции** перед их выполнением, такие как деструктивные команды shell или несанкционированный доступ к файлам

12* **Логировать и аудировать** каждый вызов инструмента для соответствия требованиям, отладки или аналитики

13* **Преобразовывать входные и выходные данные** для санитизации данных, внедрения учетных данных или перенаправления путей файлов

14* **Требовать одобрение человека** для чувствительных действий, таких как запись в базу данных или вызовы API

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

16 

17Это руководство охватывает, как работают hooks, как их настроить, и предоставляет примеры для распространенных паттернов, таких как блокировка инструментов, изменение входных данных и перенаправление уведомлений.

18 

19## Как работают hooks

20 

21<Steps>

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

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

24 </Step>

25 

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

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

28 </Step>

29 

30 <Step title="Matchers фильтруют, какие hooks запускаются">

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

32 </Step>

33 

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

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

36 </Step>

37 

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

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

40 </Step>

41</Steps>

42 

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

44 

45<CodeGroup>

46 ```python Python theme={null}

47 import asyncio

48 from claude_agent_sdk import (

49 AssistantMessage,

50 ClaudeSDKClient,

51 ClaudeAgentOptions,

52 HookMatcher,

53 ResultMessage,

54 )

55 

56 

57 # Define a hook callback that receives tool call details

58 async def protect_env_files(input_data, tool_use_id, context):

59 # Extract the file path from the tool's input arguments

60 file_path = input_data["tool_input"].get("file_path", "")

61 file_name = file_path.split("/")[-1]

62 

63 # Block the operation if targeting a .env file

64 if file_name == ".env":

65 return {

66 "hookSpecificOutput": {

67 "hookEventName": input_data["hook_event_name"],

68 "permissionDecision": "deny",

69 "permissionDecisionReason": "Cannot modify .env files",

70 }

71 }

72 

73 # Return empty object to allow the operation

74 return {}

75 

76 

77 async def main():

78 options = ClaudeAgentOptions(

79 hooks={

80 # Register the hook for PreToolUse events

81 # The matcher filters to only Write and Edit tool calls

82 "PreToolUse": [HookMatcher(matcher="Write|Edit", hooks=[protect_env_files])]

83 }

84 )

85 

86 async with ClaudeSDKClient(options=options) as client:

87 await client.query("Update the database configuration")

88 async for message in client.receive_response():

89 # Filter for assistant and result messages

90 if isinstance(message, (AssistantMessage, ResultMessage)):

91 print(message)

92 

93 

94 asyncio.run(main())

95 ```

96 

97 ```typescript TypeScript theme={null}

98 import { query, HookCallback, PreToolUseHookInput } from "@anthropic-ai/claude-agent-sdk";

99 

100 // Define a hook callback with the HookCallback type

101 const protectEnvFiles: HookCallback = async (input, toolUseID, { signal }) => {

102 // Cast input to the specific hook type for type safety

103 const preInput = input as PreToolUseHookInput;

104 

105 // Cast tool_input to access its properties (typed as unknown in the SDK)

106 const toolInput = preInput.tool_input as Record<string, unknown>;

107 const filePath = toolInput?.file_path as string;

108 const fileName = filePath?.split("/").pop();

109 

110 // Block the operation if targeting a .env file

111 if (fileName === ".env") {

112 return {

113 hookSpecificOutput: {

114 hookEventName: preInput.hook_event_name,

115 permissionDecision: "deny",

116 permissionDecisionReason: "Cannot modify .env files"

117 }

118 };

119 }

120 

121 // Return empty object to allow the operation

122 return {};

123 };

124 

125 for await (const message of query({

126 prompt: "Update the database configuration",

127 options: {

128 hooks: {

129 // Register the hook for PreToolUse events

130 // The matcher filters to only Write and Edit tool calls

131 PreToolUse: [{ matcher: "Write|Edit", hooks: [protectEnvFiles] }]

132 }

133 }

134 })) {

135 // Filter for assistant and result messages

136 if (message.type === "assistant" || message.type === "result") {

137 console.log(message);

138 }

139 }

140 ```

141</CodeGroup>

142 

143## Доступные hooks

144 

145SDK предоставляет hooks для различных этапов выполнения агента. Некоторые hooks доступны в обоих SDK, в то время как другие доступны только в TypeScript.

146 

147| Hook Event | Python SDK | TypeScript SDK | Что его срабатывает | Пример использования |

148| -------------------- | ---------- | -------------- | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------- |

149| `PreToolUse` | Да | Да | Запрос вызова инструмента (может блокировать или изменять) | Блокировать опасные команды shell |

150| `PostToolUse` | Да | Да | Результат выполнения инструмента | Логировать все изменения файлов в журнал аудита |

151| `PostToolUseFailure` | Да | Да | Ошибка выполнения инструмента | Обработать или логировать ошибки инструмента |

152| `PostToolBatch` | Нет | Да | Полный пакет вызовов инструментов разрешается, один раз за пакет перед следующим вызовом модели | Внедрить соглашения один раз для всего пакета |

153| `UserPromptSubmit` | Да | Да | Отправка пользовательского приглашения | Внедрить дополнительный контекст в приглашения |

154| `Stop` | Да | Да | Остановка выполнения агента | Сохранить состояние сеанса перед выходом |

155| `SubagentStart` | Да | Да | Инициализация подагента | Отслеживать порождение параллельных задач |

156| `SubagentStop` | Да | Да | Завершение подагента | Агрегировать результаты из параллельных задач |

157| `PreCompact` | Да | Да | Запрос сжатия разговора | Архивировать полную стенограмму перед суммированием |

158| `PermissionRequest` | Да | Да | Диалог разрешения будет отображен | Пользовательская обработка разрешений |

159| `SessionStart` | Нет | Да | Инициализация сеанса | Инициализировать логирование и телеметрию |

160| `SessionEnd` | Нет | Да | Завершение сеанса | Очистить временные ресурсы |

161| `Notification` | Да | Да | Сообщения о статусе агента | Отправить обновления статуса агента в Slack или PagerDuty |

162| `Setup` | Нет | Да | Настройка/обслуживание сеанса | Запустить задачи инициализации |

163| `TeammateIdle` | Нет | Да | Товарищ по команде становится неактивным | Переназначить работу или уведомить |

164| `TaskCompleted` | Нет | Да | Фоновая задача завершена | Агрегировать результаты из параллельных задач |

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

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

167| `WorktreeRemove` | Нет | Да | Git worktree удален | Очистить ресурсы рабочего пространства |

168 

169## Настройка hooks

170 

171Чтобы настроить hook, передайте его в поле `hooks` ваших параметров агента (`ClaudeAgentOptions` в Python, объект `options` в TypeScript):

172 

173<CodeGroup>

174 ```python Python theme={null}

175 options = ClaudeAgentOptions(

176 hooks={"PreToolUse": [HookMatcher(matcher="Bash", hooks=[my_callback])]}

177 )

178 

179 async with ClaudeSDKClient(options=options) as client:

180 await client.query("Your prompt")

181 async for message in client.receive_response():

182 print(message)

183 ```

184 

185 ```typescript TypeScript theme={null}

186 for await (const message of query({

187 prompt: "Your prompt",

188 options: {

189 hooks: {

190 PreToolUse: [{ matcher: "Bash", hooks: [myCallback] }]

191 }

192 }

193 })) {

194 console.log(message);

195 }

196 ```

197</CodeGroup>

198 

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

200 

201* **Ключи** — это [имена событий hook](#available-hooks) (например, `'PreToolUse'`, `'PostToolUse'`, `'Stop'`)

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

203 

204### Matchers

205 

206Используйте matchers для фильтрации, когда срабатывают ваши callbacks. Поле `matcher` — это строка regex, которая соответствует другому значению в зависимости от типа события hook. Например, hooks на основе инструментов соответствуют имени инструмента, в то время как hooks `Notification` соответствуют типу уведомления. См. [справочник hooks Claude Code](/ru/hooks#matcher-patterns) для полного списка значений matcher для каждого типа события.

207 

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

209| --------- | ---------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

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

212| `timeout` | `number` | `60` | Timeout в секундах |

213 

214Используйте паттерн `matcher` для нацеливания на конкретные инструменты, когда это возможно. Matcher с `'Bash'` запускается только для команд Bash, в то время как опущение паттерна запускает ваши callbacks для каждого возникновения события. Обратите внимание, что для hooks на основе инструментов, matchers фильтруют только по **имени инструмента**, а не по путям файлов или другим аргументам. Для фильтрации по пути файла проверьте `tool_input.file_path` внутри вашего callback.

215 

216<Tip>

217 **Обнаружение имен инструментов:** См. [Tool Input Types](/ru/agent-sdk/typescript#tool-input-types) для полного списка встроенных имен инструментов, или добавьте hook без matcher для логирования всех вызовов инструментов, которые делает ваш сеанс.

218 

219 **Именование MCP инструментов:** MCP инструменты всегда начинаются с `mcp__`, за которым следует имя сервера и действие: `mcp__<server>__<action>`. Например, если вы настроите сервер с именем `playwright`, его инструменты будут названы `mcp__playwright__browser_screenshot`, `mcp__playwright__browser_click` и т. д. Имя сервера берется из ключа, который вы используете в конфигурации `mcpServers`.

220</Tip>

221 

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

223 

224#### Входные данные

225 

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

227 

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

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

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

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

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

233 

234#### Выходные данные

235 

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

237 

238* **Поля верхнего уровня** контролируют разговор: `systemMessage` внедряет сообщение в разговор, видимое модели, и `continue` (`continue_` в Python) определяет, продолжает ли агент работать после этого hook.

239* **`hookSpecificOutput`** контролирует текущую операцию. Поля внутри зависят от типа события hook. Для hooks `PreToolUse` здесь вы устанавливаете `permissionDecision` (`"allow"`, `"deny"` или `"ask"`), `permissionDecisionReason` и `updatedInput`. В TypeScript SDK `permissionDecision` также принимает `"defer"` для завершения запроса и [возобновления позже](/ru/hooks#defer-a-tool-call-for-later); это значение недоступно в Python SDK. Для hooks `PostToolUse` вы можете установить `additionalContext` для добавления информации к результату инструмента.

240 

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

242 

243<Note>

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

245</Note>

246 

247#### Асинхронный вывод

248 

249По умолчанию агент ждет, пока ваш hook вернется, прежде чем продолжить. Если ваш hook выполняет побочный эффект (логирование, отправка webhook) и не нужно влиять на поведение агента, вы можете вернуть асинхронный вывод вместо этого. Это говорит агенту продолжить немедленно без ожидания завершения hook:

250 

251<CodeGroup>

252 ```python Python theme={null}

253 async def async_hook(input_data, tool_use_id, context):

254 # Start a background task, then return immediately

255 asyncio.create_task(send_to_logging_service(input_data))

256 return {"async_": True, "asyncTimeout": 30000}

257 ```

258 

259 ```typescript TypeScript theme={null}

260 const asyncHook: HookCallback = async (input, toolUseID, { signal }) => {

261 // Start a background task, then return immediately

262 sendToLoggingService(input).catch(console.error);

263 return { async: true, asyncTimeout: 30000 };

264 };

265 ```

266</CodeGroup>

267 

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

269| -------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |

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

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

272 

273<Note>

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

275</Note>

276 

277## Примеры

278 

279### Изменение входных данных инструмента

280 

281Этот пример перехватывает вызовы инструмента Write и переписывает аргумент `file_path` для добавления префикса `/sandbox`, перенаправляя все записи файлов в изолированный каталог. Callback возвращает `updatedInput` с измененным путем и `permissionDecision: 'allow'` для автоматического одобрения переписанной операции:

282 

283<CodeGroup>

284 ```python Python theme={null}

285 async def redirect_to_sandbox(input_data, tool_use_id, context):

286 if input_data["hook_event_name"] != "PreToolUse":

287 return {}

288 

289 if input_data["tool_name"] == "Write":

290 original_path = input_data["tool_input"].get("file_path", "")

291 return {

292 "hookSpecificOutput": {

293 "hookEventName": input_data["hook_event_name"],

294 "permissionDecision": "allow",

295 "updatedInput": {

296 **input_data["tool_input"],

297 "file_path": f"/sandbox{original_path}",

298 },

299 }

300 }

301 return {}

302 ```

303 

304 ```typescript TypeScript theme={null}

305 const redirectToSandbox: HookCallback = async (input, toolUseID, { signal }) => {

306 if (input.hook_event_name !== "PreToolUse") return {};

307 

308 const preInput = input as PreToolUseHookInput;

309 const toolInput = preInput.tool_input as Record<string, unknown>;

310 if (preInput.tool_name === "Write") {

311 const originalPath = toolInput.file_path as string;

312 return {

313 hookSpecificOutput: {

314 hookEventName: preInput.hook_event_name,

315 permissionDecision: "allow",

316 updatedInput: {

317 ...toolInput,

318 file_path: `/sandbox${originalPath}`

319 }

320 }

321 };

322 }

323 return {};

324 };

325 ```

326</CodeGroup>

327 

328<Note>

329 При использовании `updatedInput` вы также должны включить `permissionDecision: 'allow'`. Всегда возвращайте новый объект вместо мутирования оригинального `tool_input`.

330</Note>

331 

332### Добавление контекста и блокировка инструмента

333 

334Этот пример блокирует любую попытку записи в каталог `/etc` и использует два поля вывода вместе: `permissionDecision: 'deny'` останавливает вызов инструмента, в то время как `systemMessage` внедряет напоминание в разговор, чтобы агент получил контекст о том, почему операция была заблокирована, и избежал повторной попытки:

335 

336<CodeGroup>

337 ```python Python theme={null}

338 async def block_etc_writes(input_data, tool_use_id, context):

339 file_path = input_data["tool_input"].get("file_path", "")

340 

341 if file_path.startswith("/etc"):

342 return {

343 # Top-level field: inject guidance into the conversation

344 "systemMessage": "Remember: system directories like /etc are protected.",

345 # hookSpecificOutput: block the operation

346 "hookSpecificOutput": {

347 "hookEventName": input_data["hook_event_name"],

348 "permissionDecision": "deny",

349 "permissionDecisionReason": "Writing to /etc is not allowed",

350 },

351 }

352 return {}

353 ```

354 

355 ```typescript TypeScript theme={null}

356 const blockEtcWrites: HookCallback = async (input, toolUseID, { signal }) => {

357 const preInput = input as PreToolUseHookInput;

358 const toolInput = preInput.tool_input as Record<string, unknown>;

359 const filePath = toolInput?.file_path as string;

360 

361 if (filePath?.startsWith("/etc")) {

362 return {

363 // Top-level field: inject guidance into the conversation

364 systemMessage: "Remember: system directories like /etc are protected.",

365 // hookSpecificOutput: block the operation

366 hookSpecificOutput: {

367 hookEventName: preInput.hook_event_name,

368 permissionDecision: "deny",

369 permissionDecisionReason: "Writing to /etc is not allowed"

370 }

371 };

372 }

373 return {};

374 };

375 ```

376</CodeGroup>

377 

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

379 

380По умолчанию агент может запросить разрешение перед использованием определенных инструментов. Этот пример автоматически одобряет инструменты файловой системы только для чтения (Read, Glob, Grep), возвращая `permissionDecision: 'allow'`, позволяя им запускаться без подтверждения пользователя, в то время как оставляя все остальные инструменты подлежащими обычным проверкам разрешений:

381 

382<CodeGroup>

383 ```python Python theme={null}

384 async def auto_approve_read_only(input_data, tool_use_id, context):

385 if input_data["hook_event_name"] != "PreToolUse":

386 return {}

387 

388 read_only_tools = ["Read", "Glob", "Grep"]

389 if input_data["tool_name"] in read_only_tools:

390 return {

391 "hookSpecificOutput": {

392 "hookEventName": input_data["hook_event_name"],

393 "permissionDecision": "allow",

394 "permissionDecisionReason": "Read-only tool auto-approved",

395 }

396 }

397 return {}

398 ```

399 

400 ```typescript TypeScript theme={null}

401 const autoApproveReadOnly: HookCallback = async (input, toolUseID, { signal }) => {

402 if (input.hook_event_name !== "PreToolUse") return {};

403 

404 const preInput = input as PreToolUseHookInput;

405 const readOnlyTools = ["Read", "Glob", "Grep"];

406 if (readOnlyTools.includes(preInput.tool_name)) {

407 return {

408 hookSpecificOutput: {

409 hookEventName: preInput.hook_event_name,

410 permissionDecision: "allow",

411 permissionDecisionReason: "Read-only tool auto-approved"

412 }

413 };

414 }

415 return {};

416 };

417 ```

418</CodeGroup>

419 

420### Цепочка нескольких hooks

421 

422Hooks выполняются в порядке, в котором они появляются в массиве. Держите каждый hook сосредоточенным на одной ответственности и цепляйте несколько hooks для сложной логики:

423 

424<CodeGroup>

425 ```python Python theme={null}

426 options = ClaudeAgentOptions(

427 hooks={

428 "PreToolUse": [

429 HookMatcher(hooks=[rate_limiter]), # First: check rate limits

430 HookMatcher(hooks=[authorization_check]), # Second: verify permissions

431 HookMatcher(hooks=[input_sanitizer]), # Third: sanitize inputs

432 HookMatcher(hooks=[audit_logger]), # Last: log the action

433 ]

434 }

435 )

436 ```

437 

438 ```typescript TypeScript theme={null}

439 const options = {

440 hooks: {

441 PreToolUse: [

442 { hooks: [rateLimiter] }, // First: check rate limits

443 { hooks: [authorizationCheck] }, // Second: verify permissions

444 { hooks: [inputSanitizer] }, // Third: sanitize inputs

445 { hooks: [auditLogger] } // Last: log the action

446 ]

447 }

448 };

449 ```

450</CodeGroup>

451 

452### Фильтрация с помощью regex matchers

453 

454Используйте regex паттерны для соответствия нескольким инструментам. Этот пример регистрирует три matcher с разными областями: первый срабатывает `file_security_hook` только для инструментов модификации файлов, второй срабатывает `mcp_audit_hook` для любого MCP инструмента (инструменты, имена которых начинаются с `mcp__`), и третий срабатывает `global_logger` для каждого вызова инструмента независимо от имени:

455 

456<CodeGroup>

457 ```python Python theme={null}

458 options = ClaudeAgentOptions(

459 hooks={

460 "PreToolUse": [

461 # Match file modification tools

462 HookMatcher(matcher="Write|Edit|Delete", hooks=[file_security_hook]),

463 # Match all MCP tools

464 HookMatcher(matcher="^mcp__", hooks=[mcp_audit_hook]),

465 # Match everything (no matcher)

466 HookMatcher(hooks=[global_logger]),

467 ]

468 }

469 )

470 ```

471 

472 ```typescript TypeScript theme={null}

473 const options = {

474 hooks: {

475 PreToolUse: [

476 // Match file modification tools

477 { matcher: "Write|Edit|Delete", hooks: [fileSecurityHook] },

478 

479 // Match all MCP tools

480 { matcher: "^mcp__", hooks: [mcpAuditHook] },

481 

482 // Match everything (no matcher)

483 { hooks: [globalLogger] }

484 ]

485 }

486 };

487 ```

488</CodeGroup>

489 

490### Отслеживание активности подагента

491 

492Используйте hooks `SubagentStop` для мониторинга, когда подагенты завершают свою работу. См. полный тип входных данных в справочниках [TypeScript](/ru/agent-sdk/typescript#hook-input) и [Python](/ru/agent-sdk/python#hook-input) SDK. Этот пример логирует сводку каждый раз, когда подагент завершается:

493 

494<CodeGroup>

495 ```python Python theme={null}

496 async def subagent_tracker(input_data, tool_use_id, context):

497 # Log subagent details when it finishes

498 print(f"[SUBAGENT] Completed: {input_data['agent_id']}")

499 print(f" Transcript: {input_data['agent_transcript_path']}")

500 print(f" Tool use ID: {tool_use_id}")

501 print(f" Stop hook active: {input_data.get('stop_hook_active')}")

502 return {}

503 

504 

505 options = ClaudeAgentOptions(

506 hooks={"SubagentStop": [HookMatcher(hooks=[subagent_tracker])]}

507 )

508 ```

509 

510 ```typescript TypeScript theme={null}

511 import { HookCallback, SubagentStopHookInput } from "@anthropic-ai/claude-agent-sdk";

512 

513 const subagentTracker: HookCallback = async (input, toolUseID, { signal }) => {

514 // Cast to SubagentStopHookInput to access subagent-specific fields

515 const subInput = input as SubagentStopHookInput;

516 

517 // Log subagent details when it finishes

518 console.log(`[SUBAGENT] Completed: ${subInput.agent_id}`);

519 console.log(` Transcript: ${subInput.agent_transcript_path}`);

520 console.log(` Tool use ID: ${toolUseID}`);

521 console.log(` Stop hook active: ${subInput.stop_hook_active}`);

522 return {};

523 };

524 

525 const options = {

526 hooks: {

527 SubagentStop: [{ hooks: [subagentTracker] }]

528 }

529 };

530 ```

531</CodeGroup>

532 

533### Выполнение HTTP запросов из hooks

534 

535Hooks могут выполнять асинхронные операции, такие как HTTP запросы. Ловите ошибки внутри вашего hook вместо того, чтобы позволить им распространяться, так как необработанное исключение может прервать агента.

536 

537Этот пример отправляет webhook после завершения каждого инструмента, логируя, какой инструмент запустился и когда. Hook ловит ошибки, чтобы неудачный webhook не прерывал агента:

538 

539<CodeGroup>

540 ```python Python theme={null}

541 import asyncio

542 import json

543 import urllib.request

544 from datetime import datetime

545 

546 

547 def _send_webhook(tool_name):

548 """Synchronous helper that POSTs tool usage data to an external webhook."""

549 data = json.dumps(

550 {

551 "tool": tool_name,

552 "timestamp": datetime.now().isoformat(),

553 }

554 ).encode()

555 req = urllib.request.Request(

556 "https://api.example.com/webhook",

557 data=data,

558 headers={"Content-Type": "application/json"},

559 method="POST",

560 )

561 urllib.request.urlopen(req)

562 

563 

564 async def webhook_notifier(input_data, tool_use_id, context):

565 # Only fire after a tool completes (PostToolUse), not before

566 if input_data["hook_event_name"] != "PostToolUse":

567 return {}

568 

569 try:

570 # Run the blocking HTTP call in a thread to avoid blocking the event loop

571 await asyncio.to_thread(_send_webhook, input_data["tool_name"])

572 except Exception as e:

573 # Log the error but don't raise. A failed webhook shouldn't stop the agent

574 print(f"Webhook request failed: {e}")

575 

576 return {}

577 ```

578 

579 ```typescript TypeScript theme={null}

580 import { query, HookCallback, PostToolUseHookInput } from "@anthropic-ai/claude-agent-sdk";

581 

582 const webhookNotifier: HookCallback = async (input, toolUseID, { signal }) => {

583 // Only fire after a tool completes (PostToolUse), not before

584 if (input.hook_event_name !== "PostToolUse") return {};

585 

586 try {

587 await fetch("https://api.example.com/webhook", {

588 method: "POST",

589 headers: { "Content-Type": "application/json" },

590 body: JSON.stringify({

591 tool: (input as PostToolUseHookInput).tool_name,

592 timestamp: new Date().toISOString()

593 }),

594 // Pass signal so the request cancels if the hook times out

595 signal

596 });

597 } catch (error) {

598 // Handle cancellation separately from other errors

599 if (error instanceof Error && error.name === "AbortError") {

600 console.log("Webhook request cancelled");

601 }

602 // Don't re-throw. A failed webhook shouldn't stop the agent

603 }

604 

605 return {};

606 };

607 

608 // Register as a PostToolUse hook

609 for await (const message of query({

610 prompt: "Refactor the auth module",

611 options: {

612 hooks: {

613 PostToolUse: [{ hooks: [webhookNotifier] }]

614 }

615 }

616 })) {

617 console.log(message);

618 }

619 ```

620</CodeGroup>

621 

622### Перенаправление уведомлений в Slack

623 

624Используйте hooks `Notification` для получения системных уведомлений от агента и перенаправления их во внешние сервисы. Уведомления срабатывают для конкретных типов событий: `permission_prompt` (Claude нужно разрешение), `idle_prompt` (Claude ждет ввода), `auth_success` (аутентификация завершена) и `elicitation_dialog` (Claude запрашивает пользователя). Каждое уведомление включает поле `message` с описанием, понятным человеку, и опционально `title`.

625 

626Этот пример перенаправляет каждое уведомление в канал Slack. Требуется [URL входящего webhook Slack](https://api.slack.com/messaging/webhooks), который вы создаете, добавляя приложение в ваше рабочее пространство Slack и включая входящие webhooks:

627 

628<CodeGroup>

629 ```python Python theme={null}

630 import asyncio

631 import json

632 import urllib.request

633 

634 from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, HookMatcher

635 

636 

637 def _send_slack_notification(message):

638 """Synchronous helper that sends a message to Slack via incoming webhook."""

639 data = json.dumps({"text": f"Agent status: {message}"}).encode()

640 req = urllib.request.Request(

641 "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",

642 data=data,

643 headers={"Content-Type": "application/json"},

644 method="POST",

645 )

646 urllib.request.urlopen(req)

647 

648 

649 async def notification_handler(input_data, tool_use_id, context):

650 try:

651 # Run the blocking HTTP call in a thread to avoid blocking the event loop

652 await asyncio.to_thread(_send_slack_notification, input_data.get("message", ""))

653 except Exception as e:

654 print(f"Failed to send notification: {e}")

655 

656 # Return empty object. Notification hooks don't modify agent behavior

657 return {}

658 

659 

660 async def main():

661 options = ClaudeAgentOptions(

662 hooks={

663 # Register the hook for Notification events (no matcher needed)

664 "Notification": [HookMatcher(hooks=[notification_handler])],

665 },

666 )

667 

668 async with ClaudeSDKClient(options=options) as client:

669 await client.query("Analyze this codebase")

670 async for message in client.receive_response():

671 print(message)

672 

673 

674 asyncio.run(main())

675 ```

676 

677 ```typescript TypeScript theme={null}

678 import { query, HookCallback, NotificationHookInput } from "@anthropic-ai/claude-agent-sdk";

679 

680 // Define a hook callback that sends notifications to Slack

681 const notificationHandler: HookCallback = async (input, toolUseID, { signal }) => {

682 // Cast to NotificationHookInput to access the message field

683 const notification = input as NotificationHookInput;

684 

685 try {

686 // POST the notification message to a Slack incoming webhook

687 await fetch("https://hooks.slack.com/services/YOUR/WEBHOOK/URL", {

688 method: "POST",

689 headers: { "Content-Type": "application/json" },

690 body: JSON.stringify({

691 text: `Agent status: ${notification.message}`

692 }),

693 // Pass signal so the request cancels if the hook times out

694 signal

695 });

696 } catch (error) {

697 if (error instanceof Error && error.name === "AbortError") {

698 console.log("Notification cancelled");

699 } else {

700 console.error("Failed to send notification:", error);

701 }

702 }

703 

704 // Return empty object. Notification hooks don't modify agent behavior

705 return {};

706 };

707 

708 // Register the hook for Notification events (no matcher needed)

709 for await (const message of query({

710 prompt: "Analyze this codebase",

711 options: {

712 hooks: {

713 Notification: [{ hooks: [notificationHandler] }]

714 }

715 }

716 })) {

717 console.log(message);

718 }

719 ```

720</CodeGroup>

721 

722## Исправление распространенных проблем

723 

724### Hook не срабатывает

725 

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

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

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

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

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

731 

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

733 

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

735 

736```typescript theme={null}

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

738 const preInput = input as PreToolUseHookInput;

739 const toolInput = preInput.tool_input as Record<string, unknown>;

740 const filePath = toolInput?.file_path as string;

741 if (!filePath?.endsWith(".md")) return {}; // Skip non-markdown files

742 // Process markdown files...

743 return {};

744};

745```

746 

747### Hook timeout

748 

749* Увеличьте значение `timeout` в конфигурации `HookMatcher`

750* Используйте `AbortSignal` из третьего аргумента callback для корректной обработки отмены в TypeScript

751 

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

753 

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

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

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

757 

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

759 

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

761 

762 ```typescript theme={null}

763 return {

764 hookSpecificOutput: {

765 hookEventName: "PreToolUse",

766 permissionDecision: "allow",

767 updatedInput: { command: "new command" }

768 }

769 };

770 ```

771 

772* Вы также должны вернуть `permissionDecision: 'allow'` для того, чтобы изменение входных данных вступило в силу

773 

774* Включите `hookEventName` в `hookSpecificOutput` для идентификации типа hook, для которого предназначен вывод

775 

776### Hooks сеанса недоступны в Python

777 

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

779 

780<CodeGroup>

781 ```python Python theme={null}

782 options = ClaudeAgentOptions(

783 setting_sources=["project"], # Loads .claude/settings.json including hooks

784 )

785 ```

786 

787 ```typescript TypeScript theme={null}

788 const options = {

789 settingSources: ["project"] // Loads .claude/settings.json including hooks

790 };

791 ```

792</CodeGroup>

793 

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

795 

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

797 

798При порождении нескольких подагентов каждый может запросить разрешения отдельно. Подагенты не автоматически наследуют разрешения родительского агента. Чтобы избежать повторных запросов, используйте hooks `PreToolUse` для автоматического одобрения конкретных инструментов или настройте правила разрешений, которые применяются к сеансам подагента.

799 

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

801 

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

803 

804* Проверьте индикатор подагента во входных данных hook перед порождением

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

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

807 

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

809 

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

811 

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

813 

814* [Справочник hooks Claude Code](/ru/hooks): полные схемы входных/выходных данных JSON, документация событий и паттерны matcher

815* [Руководство hooks Claude Code](/ru/hooks-guide): примеры hooks команд shell и пошаговые инструкции

816* [Справочник TypeScript SDK](/ru/agent-sdk/typescript): типы hooks, определения входных/выходных данных и параметры конфигурации

817* [Справочник Python SDK](/ru/agent-sdk/python): типы hooks, определения входных/выходных данных и параметры конфигурации

818* [Разрешения](/ru/agent-sdk/permissions): контролируйте, что может делать ваш агент

819* [Пользовательские инструменты](/ru/agent-sdk/custom-tools): создавайте инструменты для расширения возможностей агента

agent-sdk/hosting.md +142 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Размещение Agent SDK

6 

7> Развертывание и размещение Claude Agent SDK в производственных средах

8 

9Claude Agent SDK отличается от традиционных stateless API LLM тем, что он поддерживает состояние диалога и выполняет команды в постоянной среде. Это руководство охватывает архитектуру, соображения по размещению и лучшие практики развертывания агентов на основе SDK в производстве.

10 

11<Info>

12 Для усиления безопасности сверх базового sandboxing (включая сетевые элементы управления, управление учетными данными и варианты изоляции), см. [Безопасное развертывание](/ru/agent-sdk/secure-deployment).

13</Info>

14 

15## Требования к размещению

16 

17### Sandboxing на основе контейнеров

18 

19Для безопасности и изоляции SDK должен работать внутри sandboxed контейнерной среды. Это обеспечивает изоляцию процессов, ограничение ресурсов, сетевое управление и эфемерные файловые системы.

20 

21SDK также поддерживает [программную конфигурацию sandbox](/ru/agent-sdk/typescript#sandbox-settings) для выполнения команд.

22 

23### Системные требования

24 

25Каждый экземпляр SDK требует:

26 

27* **Зависимости среды выполнения**

28 * Python 3.10+ для Python SDK или Node.js 18+ для TypeScript SDK

29 * Оба пакета SDK включают собственный двоичный файл Claude Code для платформы хоста, поэтому отдельная установка Claude Code или Node.js не требуется для порожденного CLI

30 

31* **Выделение ресурсов**

32 * Рекомендуется: 1 ГБ ОЗУ, 5 ГБ диска и 1 ЦП (варьируйте это в зависимости от вашей задачи по мере необходимости)

33 

34* **Сетевой доступ**

35 * Исходящий HTTPS к `api.anthropic.com`

36 * Опционально: доступ к MCP серверам или внешним инструментам

37 

38## Понимание архитектуры SDK

39 

40В отличие от stateless вызовов API, Claude Agent SDK работает как **долгоживущий процесс**, который:

41 

42* **Выполняет команды** в постоянной среде shell

43* **Управляет файловыми операциями** в рабочем каталоге

44* **Обрабатывает выполнение инструментов** с контекстом из предыдущих взаимодействий

45 

46## Варианты поставщиков Sandbox

47 

48Несколько поставщиков специализируются на безопасных контейнерных средах для выполнения кода AI:

49 

50* **[Modal Sandbox](https://modal.com/docs/guide/sandbox)** - [демонстрационная реализация](https://modal.com/docs/examples/claude-slack-gif-creator)

51* **[Cloudflare Sandboxes](https://github.com/cloudflare/sandbox-sdk)**

52* **[Daytona](https://www.daytona.io/)**

53* **[E2B](https://e2b.dev/)**

54* **[Fly Machines](https://fly.io/docs/machines/)**

55* **[Vercel Sandbox](https://vercel.com/docs/functions/sandbox)**

56 

57Для самостоятельно размещаемых вариантов (Docker, gVisor, Firecracker) и подробной конфигурации изоляции см. [Технологии изоляции](/ru/agent-sdk/secure-deployment#isolation-technologies).

58 

59## Шаблоны развертывания в производстве

60 

61### Шаблон 1: Эфемерные сеансы

62 

63Создайте новый контейнер для каждой задачи пользователя, затем уничтожьте его по завершении.

64 

65Лучше всего для одноразовых задач, пользователь может по-прежнему взаимодействовать с AI во время выполнения задачи, но после завершения контейнер уничтожается.

66 

67**Примеры:**

68 

69* Исследование и исправление ошибок: отладка и разрешение конкретной проблемы с соответствующим контекстом

70* Обработка счетов: извлечение и структурирование данных из квитанций/счетов для систем бухгалтерского учета

71* Задачи перевода: перевод документов или пакетов контента между языками

72* Обработка изображений/видео: применение преобразований, оптимизаций или извлечение метаданных из медиафайлов

73 

74### Шаблон 2: Долгоживущие сеансы

75 

76Поддерживайте постоянные экземпляры контейнеров для долгоживущих задач. Часто внутри контейнера работают *несколько* процессов Claude Agent на основе спроса.

77 

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

79 

80**Примеры:**

81 

82* Email Agent: отслеживает входящие письма и автономно сортирует, отвечает или предпринимает действия на основе содержимого

83* Site Builder: размещает пользовательские веб-сайты для каждого пользователя с возможностью живого редактирования, обслуживаемые через порты контейнера

84* High-Frequency Chat Bots: обрабатывает непрерывные потоки сообщений с платформ, таких как Slack, где критичны быстрые времена отклика

85 

86### Шаблон 3: Гибридные сеансы

87 

88Эфемерные контейнеры, которые заполняются историей и состоянием, возможно, из базы данных или из функций возобновления сеанса SDK.

89 

90Лучше всего для контейнеров с прерывистым взаимодействием пользователя, которое запускает работу и завершается при завершении работы, но может быть продолжено.

91 

92**Примеры:**

93 

94* Personal Project Manager: помогает управлять текущими проектами с прерывистыми проверками, поддерживает контекст задач, решений и прогресса

95* Deep Research: проводит многочасовые исследовательские задачи, сохраняет результаты и возобновляет исследование при возвращении пользователя

96* Customer Support Agent: обрабатывает билеты поддержки, охватывающие несколько взаимодействий, загружает историю билетов и контекст клиента

97 

98### Шаблон 4: Одиночные контейнеры

99 

100Запустите несколько процессов Claude Agent SDK в одном глобальном контейнере.

101 

102Лучше всего для агентов, которые должны тесно сотрудничать. Это, вероятно, наименее популярный шаблон, потому что вам придется предотвращать перезапись агентами друг друга.

103 

104**Примеры:**

105 

106* **Симуляции**: агенты, которые взаимодействуют друг с другом в симуляциях, таких как видеоигры.

107 

108## Часто задаваемые вопросы

109 

110### Как мне общаться с моими sandboxes?

111 

112При размещении в контейнерах откройте порты для связи с экземплярами SDK. Ваше приложение может открывать HTTP/WebSocket конечные точки для внешних клиентов, пока SDK работает внутри контейнера.

113 

114### Какова стоимость размещения контейнера?

115 

116Доминирующей стоимостью обслуживания агентов являются токены; контейнеры варьируются в зависимости от того, что вы предоставляете, но минимальная стоимость составляет примерно 5 центов в час работы.

117 

118### Когда мне следует выключать неактивные контейнеры в сравнении с их сохранением в горячем состоянии?

119 

120Это, вероятно, зависит от поставщика, разные поставщики sandbox позволят вам установить разные критерии для тайм-аутов неактивности, после которых sandbox может выключиться.

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

122 

123### Как часто мне следует обновлять Claude Code CLI?

124 

125Claude Code CLI версионируется с помощью semver, поэтому любые критические изменения будут версионированы.

126 

127### Как мне отслеживать здоровье контейнера и производительность агента?

128 

129Поскольку контейнеры - это просто серверы, та же инфраструктура логирования, которую вы используете для backend, будет работать для контейнеров.

130 

131### Как долго может работать сеанс агента перед истечением времени ожидания?

132 

133Сеанс агента не будет истекать, но рассмотрите возможность установки свойства 'maxTurns' для предотвращения зависания Claude в цикле.

134 

135## Следующие шаги

136 

137* [Безопасное развертывание](/ru/agent-sdk/secure-deployment) - сетевые элементы управления, управление учетными данными и усиление изоляции

138* [TypeScript SDK - Sandbox Settings](/ru/agent-sdk/typescript#sandbox-settings) - программная конфигурация sandbox

139* [Руководство по сеансам](/ru/agent-sdk/sessions) - узнайте об управлении сеансами

140* [Разрешения](/ru/agent-sdk/permissions) - конфигурация разрешений инструментов

141* [Отслеживание затрат](/ru/agent-sdk/cost-tracking) - мониторинг использования API

142* [MCP Integration](/ru/agent-sdk/mcp) - расширение с помощью пользовательских инструментов

agent-sdk/overview.md +607 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Обзор Agent SDK

6 

7> Создавайте производственные AI-агентов с Claude Code как библиотеку

8 

9<Note>

10 Claude Code SDK был переименован в Claude Agent SDK. Если вы переходите со старого SDK, см. [Руководство по миграции](/ru/agent-sdk/migration-guide).

11</Note>

12 

13Создавайте AI-агентов, которые автономно читают файлы, запускают команды, ищут в интернете, редактируют код и многое другое. Agent SDK предоставляет вам те же инструменты, цикл агента и управление контекстом, которые питают Claude Code, программируемые на Python и TypeScript.

14 

15<Note>

16 Opus 4.7 (`claude-opus-4-7`) требует Agent SDK v0.2.111 или позже. Если вы видите ошибку API `thinking.type.enabled`, см. [Troubleshooting](/ru/agent-sdk/quickstart#troubleshooting).

17</Note>

18 

19<CodeGroup>

20 ```python Python theme={null}

21 import asyncio

22 from claude_agent_sdk import query, ClaudeAgentOptions

23 

24 

25 async def main():

26 async for message in query(

27 prompt="Find and fix the bug in auth.py",

28 options=ClaudeAgentOptions(allowed_tools=["Read", "Edit", "Bash"]),

29 ):

30 print(message) # Claude reads the file, finds the bug, edits it

31 

32 

33 asyncio.run(main())

34 ```

35 

36 ```typescript TypeScript theme={null}

37 import { query } from "@anthropic-ai/claude-agent-sdk";

38 

39 for await (const message of query({

40 prompt: "Find and fix the bug in auth.ts",

41 options: { allowedTools: ["Read", "Edit", "Bash"] }

42 })) {

43 console.log(message); // Claude reads the file, finds the bug, edits it

44 }

45 ```

46</CodeGroup>

47 

48Agent SDK включает встроенные инструменты для чтения файлов, запуска команд и редактирования кода, поэтому ваш агент может начать работу немедленно без необходимости реализации выполнения инструментов. Погрузитесь в быстрый старт или изучите реальных агентов, созданных с помощью SDK:

49 

50<CardGroup cols={2}>

51 <Card title="Быстрый старт" icon="play" href="/ru/agent-sdk/quickstart">

52 Создайте агента по исправлению ошибок за несколько минут

53 </Card>

54 

55 <Card title="Примеры агентов" icon="star" href="https://github.com/anthropics/claude-agent-sdk-demos">

56 Помощник по электронной почте, исследовательский агент и многое другое

57 </Card>

58</CardGroup>

59 

60## Начало работы

61 

62<Steps>

63 <Step title="Установите SDK">

64 <Tabs>

65 <Tab title="TypeScript">

66 ```bash theme={null}

67 npm install @anthropic-ai/claude-agent-sdk

68 ```

69 </Tab>

70 

71 <Tab title="Python">

72 ```bash theme={null}

73 pip install claude-agent-sdk

74 ```

75 </Tab>

76 </Tabs>

77 

78 <Note>

79 TypeScript SDK поставляется с собственным бинарным файлом Claude Code для вашей платформы в качестве дополнительной зависимости, поэтому вам не нужно устанавливать Claude Code отдельно.

80 </Note>

81 </Step>

82 

83 <Step title="Установите ваш API ключ">

84 Получите API ключ из [Console](https://platform.claude.com/), затем установите его как переменную окружения:

85 

86 ```bash theme={null}

87 export ANTHROPIC_API_KEY=your-api-key

88 ```

89 

90 SDK также поддерживает аутентификацию через сторонних поставщиков API:

91 

92 * **Amazon Bedrock**: установите переменную окружения `CLAUDE_CODE_USE_BEDROCK=1` и настройте учетные данные AWS

93 * **Google Vertex AI**: установите переменную окружения `CLAUDE_CODE_USE_VERTEX=1` и настройте учетные данные Google Cloud

94 * **Microsoft Azure**: установите переменную окружения `CLAUDE_CODE_USE_FOUNDRY=1` и настройте учетные данные Azure

95 

96 См. руководства по настройке для [Bedrock](/ru/amazon-bedrock), [Vertex AI](/ru/google-vertex-ai) или [Azure AI Foundry](/ru/microsoft-foundry) для получения подробной информации.

97 

98 <Note>

99 Если не одобрено ранее, Anthropic не разрешает сторонним разработчикам предлагать вход в claude.ai или ограничения скорости для своих продуктов, включая агентов, созданных на Claude Agent SDK. Вместо этого используйте методы аутентификации по API ключу, описанные в этом документе.

100 </Note>

101 </Step>

102 

103 <Step title="Запустите вашего первого агента">

104 Этот пример создает агента, который перечисляет файлы в вашем текущем каталоге, используя встроенные инструменты.

105 

106 <CodeGroup>

107 ```python Python theme={null}

108 import asyncio

109 from claude_agent_sdk import query, ClaudeAgentOptions

110 

111 

112 async def main():

113 async for message in query(

114 prompt="What files are in this directory?",

115 options=ClaudeAgentOptions(allowed_tools=["Bash", "Glob"]),

116 ):

117 if hasattr(message, "result"):

118 print(message.result)

119 

120 

121 asyncio.run(main())

122 ```

123 

124 ```typescript TypeScript theme={null}

125 import { query } from "@anthropic-ai/claude-agent-sdk";

126 

127 for await (const message of query({

128 prompt: "What files are in this directory?",

129 options: { allowedTools: ["Bash", "Glob"] }

130 })) {

131 if ("result" in message) console.log(message.result);

132 }

133 ```

134 </CodeGroup>

135 </Step>

136</Steps>

137 

138**Готовы к разработке?** Следуйте [Быстрому старту](/ru/agent-sdk/quickstart), чтобы создать агента, который находит и исправляет ошибки за несколько минут.

139 

140## Возможности

141 

142Все, что делает Claude Code мощным, доступно в SDK:

143 

144<Tabs>

145 <Tab title="Встроенные инструменты">

146 Ваш агент может читать файлы, запускать команды и искать в кодовых базах из коробки. Ключевые инструменты включают:

147 

148 | Инструмент | Что он делает |

149 | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |

150 | **Read** | Читать любой файл в рабочем каталоге |

151 | **Write** | Создавать новые файлы |

152 | **Edit** | Делать точные правки в существующих файлах |

153 | **Bash** | Запускать команды терминала, скрипты, операции git |

154 | **Monitor** | Наблюдать фоновый скрипт и реагировать на каждую строку вывода как на событие |

155 | **Glob** | Находить файлы по шаблону (`**/*.ts`, `src/**/*.py`) |

156 | **Grep** | Искать содержимое файлов с помощью regex |

157 | **WebSearch** | Искать в интернете текущую информацию |

158 | **WebFetch** | Получать и анализировать содержимое веб-страниц |

159 | **[AskUserQuestion](/ru/agent-sdk/user-input#handle-clarifying-questions)** | Задавать пользователю уточняющие вопросы с вариантами множественного выбора |

160 

161 Этот пример создает агента, который ищет в вашей кодовой базе комментарии TODO:

162 

163 <CodeGroup>

164 ```python Python theme={null}

165 import asyncio

166 from claude_agent_sdk import query, ClaudeAgentOptions

167 

168 

169 async def main():

170 async for message in query(

171 prompt="Find all TODO comments and create a summary",

172 options=ClaudeAgentOptions(allowed_tools=["Read", "Glob", "Grep"]),

173 ):

174 if hasattr(message, "result"):

175 print(message.result)

176 

177 

178 asyncio.run(main())

179 ```

180 

181 ```typescript TypeScript theme={null}

182 import { query } from "@anthropic-ai/claude-agent-sdk";

183 

184 for await (const message of query({

185 prompt: "Find all TODO comments and create a summary",

186 options: { allowedTools: ["Read", "Glob", "Grep"] }

187 })) {

188 if ("result" in message) console.log(message.result);

189 }

190 ```

191 </CodeGroup>

192 </Tab>

193 

194 <Tab title="hooks">

195 Запускайте пользовательский код в ключевых точках жизненного цикла агента. SDK hooks используют функции обратного вызова для проверки, логирования, блокирования или преобразования поведения агента.

196 

197 **Доступные hooks:** `PreToolUse`, `PostToolUse`, `Stop`, `SessionStart`, `SessionEnd`, `UserPromptSubmit` и другие.

198 

199 Этот пример логирует все изменения файлов в файл аудита:

200 

201 <CodeGroup>

202 ```python Python theme={null}

203 import asyncio

204 from datetime import datetime

205 from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher

206 

207 

208 async def log_file_change(input_data, tool_use_id, context):

209 file_path = input_data.get("tool_input", {}).get("file_path", "unknown")

210 with open("./audit.log", "a") as f:

211 f.write(f"{datetime.now()}: modified {file_path}\n")

212 return {}

213 

214 

215 async def main():

216 async for message in query(

217 prompt="Refactor utils.py to improve readability",

218 options=ClaudeAgentOptions(

219 permission_mode="acceptEdits",

220 hooks={

221 "PostToolUse": [

222 HookMatcher(matcher="Edit|Write", hooks=[log_file_change])

223 ]

224 },

225 ),

226 ):

227 if hasattr(message, "result"):

228 print(message.result)

229 

230 

231 asyncio.run(main())

232 ```

233 

234 ```typescript TypeScript theme={null}

235 import { query, HookCallback } from "@anthropic-ai/claude-agent-sdk";

236 import { appendFile } from "fs/promises";

237 

238 const logFileChange: HookCallback = async (input) => {

239 const filePath = (input as any).tool_input?.file_path ?? "unknown";

240 await appendFile("./audit.log", `${new Date().toISOString()}: modified ${filePath}\n`);

241 return {};

242 };

243 

244 for await (const message of query({

245 prompt: "Refactor utils.py to improve readability",

246 options: {

247 permissionMode: "acceptEdits",

248 hooks: {

249 PostToolUse: [{ matcher: "Edit|Write", hooks: [logFileChange] }]

250 }

251 }

252 })) {

253 if ("result" in message) console.log(message.result);

254 }

255 ```

256 </CodeGroup>

257 

258 [Узнайте больше о hooks →](/ru/agent-sdk/hooks)

259 </Tab>

260 

261 <Tab title="Subagents">

262 Создавайте специализированных агентов для обработки сосредоточенных подзадач. Ваш основной агент делегирует работу, а подагенты сообщают результаты.

263 

264 Определите пользовательских агентов со специализированными инструкциями. Включите `Agent` в `allowedTools`, так как подагенты вызываются через инструмент Agent:

265 

266 <CodeGroup>

267 ```python Python theme={null}

268 import asyncio

269 from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition

270 

271 

272 async def main():

273 async for message in query(

274 prompt="Use the code-reviewer agent to review this codebase",

275 options=ClaudeAgentOptions(

276 allowed_tools=["Read", "Glob", "Grep", "Agent"],

277 agents={

278 "code-reviewer": AgentDefinition(

279 description="Expert code reviewer for quality and security reviews.",

280 prompt="Analyze code quality and suggest improvements.",

281 tools=["Read", "Glob", "Grep"],

282 )

283 },

284 ),

285 ):

286 if hasattr(message, "result"):

287 print(message.result)

288 

289 

290 asyncio.run(main())

291 ```

292 

293 ```typescript TypeScript theme={null}

294 import { query } from "@anthropic-ai/claude-agent-sdk";

295 

296 for await (const message of query({

297 prompt: "Use the code-reviewer agent to review this codebase",

298 options: {

299 allowedTools: ["Read", "Glob", "Grep", "Agent"],

300 agents: {

301 "code-reviewer": {

302 description: "Expert code reviewer for quality and security reviews.",

303 prompt: "Analyze code quality and suggest improvements.",

304 tools: ["Read", "Glob", "Grep"]

305 }

306 }

307 }

308 })) {

309 if ("result" in message) console.log(message.result);

310 }

311 ```

312 </CodeGroup>

313 

314 Сообщения из контекста подагента включают поле `parent_tool_use_id`, позволяющее отследить, какие сообщения принадлежат какому выполнению подагента.

315 

316 [Узнайте больше о subagents →](/ru/agent-sdk/subagents)

317 </Tab>

318 

319 <Tab title="MCP">

320 Подключайтесь к внешним системам через Model Context Protocol: базы данных, браузеры, API и [сотни других](https://github.com/modelcontextprotocol/servers).

321 

322 Этот пример подключает [Playwright MCP server](https://github.com/microsoft/playwright-mcp), чтобы дать вашему агенту возможности автоматизации браузера:

323 

324 <CodeGroup>

325 ```python Python theme={null}

326 import asyncio

327 from claude_agent_sdk import query, ClaudeAgentOptions

328 

329 

330 async def main():

331 async for message in query(

332 prompt="Open example.com and describe what you see",

333 options=ClaudeAgentOptions(

334 mcp_servers={

335 "playwright": {"command": "npx", "args": ["@playwright/mcp@latest"]}

336 }

337 ),

338 ):

339 if hasattr(message, "result"):

340 print(message.result)

341 

342 

343 asyncio.run(main())

344 ```

345 

346 ```typescript TypeScript theme={null}

347 import { query } from "@anthropic-ai/claude-agent-sdk";

348 

349 for await (const message of query({

350 prompt: "Open example.com and describe what you see",

351 options: {

352 mcpServers: {

353 playwright: { command: "npx", args: ["@playwright/mcp@latest"] }

354 }

355 }

356 })) {

357 if ("result" in message) console.log(message.result);

358 }

359 ```

360 </CodeGroup>

361 

362 [Узнайте больше о MCP →](/ru/agent-sdk/mcp)

363 </Tab>

364 

365 <Tab title="Permissions">

366 Контролируйте точно, какие инструменты может использовать ваш агент. Разрешите безопасные операции, заблокируйте опасные или требуйте одобрения для чувствительных действий.

367 

368 <Note>

369 Для интерактивных подсказок одобрения и инструмента `AskUserQuestion`, см. [Обработка одобрений и ввода пользователя](/ru/agent-sdk/user-input).

370 </Note>

371 

372 Этот пример создает агента только для чтения, который может анализировать, но не изменять код. `allowed_tools` предварительно одобряет `Read`, `Glob` и `Grep`.

373 

374 <CodeGroup>

375 ```python Python theme={null}

376 import asyncio

377 from claude_agent_sdk import query, ClaudeAgentOptions

378 

379 

380 async def main():

381 async for message in query(

382 prompt="Review this code for best practices",

383 options=ClaudeAgentOptions(

384 allowed_tools=["Read", "Glob", "Grep"],

385 ),

386 ):

387 if hasattr(message, "result"):

388 print(message.result)

389 

390 

391 asyncio.run(main())

392 ```

393 

394 ```typescript TypeScript theme={null}

395 import { query } from "@anthropic-ai/claude-agent-sdk";

396 

397 for await (const message of query({

398 prompt: "Review this code for best practices",

399 options: {

400 allowedTools: ["Read", "Glob", "Grep"]

401 }

402 })) {

403 if ("result" in message) console.log(message.result);

404 }

405 ```

406 </CodeGroup>

407 

408 [Узнайте больше о permissions →](/ru/agent-sdk/permissions)

409 </Tab>

410 

411 <Tab title="Sessions">

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

413 

414 Этот пример захватывает ID сеанса из первого запроса, затем возобновляет работу с полным контекстом:

415 

416 <CodeGroup>

417 ```python Python theme={null}

418 import asyncio

419 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage, ResultMessage

420 

421 

422 async def main():

423 session_id = None

424 

425 # First query: capture the session ID

426 async for message in query(

427 prompt="Read the authentication module",

428 options=ClaudeAgentOptions(allowed_tools=["Read", "Glob"]),

429 ):

430 if isinstance(message, SystemMessage) and message.subtype == "init":

431 session_id = message.data["session_id"]

432 

433 # Resume with full context from the first query

434 async for message in query(

435 prompt="Now find all places that call it", # "it" = auth module

436 options=ClaudeAgentOptions(resume=session_id),

437 ):

438 if isinstance(message, ResultMessage):

439 print(message.result)

440 

441 

442 asyncio.run(main())

443 ```

444 

445 ```typescript TypeScript theme={null}

446 import { query } from "@anthropic-ai/claude-agent-sdk";

447 

448 let sessionId: string | undefined;

449 

450 // First query: capture the session ID

451 for await (const message of query({

452 prompt: "Read the authentication module",

453 options: { allowedTools: ["Read", "Glob"] }

454 })) {

455 if (message.type === "system" && message.subtype === "init") {

456 sessionId = message.session_id;

457 }

458 }

459 

460 // Resume with full context from the first query

461 for await (const message of query({

462 prompt: "Now find all places that call it", // "it" = auth module

463 options: { resume: sessionId }

464 })) {

465 if ("result" in message) console.log(message.result);

466 }

467 ```

468 </CodeGroup>

469 

470 [Узнайте больше о sessions →](/ru/agent-sdk/sessions)

471 </Tab>

472</Tabs>

473 

474### Функции Claude Code

475 

476SDK также поддерживает конфигурацию на основе файловой системы Claude Code. С параметрами по умолчанию SDK загружает их из `.claude/` в вашем рабочем каталоге и `~/.claude/`. Чтобы ограничить, какие источники загружаются, установите `setting_sources` (Python) или `settingSources` (TypeScript) в ваших параметрах.

477 

478| Функция | Описание | Местоположение |

479| ------------------------------------------------ | ---------------------------------------------------------------- | ----------------------------------- |

480| [Skills](/ru/agent-sdk/skills) | Специализированные возможности, определенные в Markdown | `.claude/skills/*/SKILL.md` |

481| [Slash commands](/ru/agent-sdk/slash-commands) | Пользовательские команды для общих задач | `.claude/commands/*.md` |

482| [Memory](/ru/agent-sdk/modifying-system-prompts) | Контекст проекта и инструкции | `CLAUDE.md` или `.claude/CLAUDE.md` |

483| [Plugins](/ru/agent-sdk/plugins) | Расширяйте пользовательскими командами, агентами и MCP серверами | Программно через опцию `plugins` |

484 

485## Сравнение Agent SDK с другими инструментами Claude

486 

487Claude Platform предлагает несколько способов разработки с Claude. Вот как Agent SDK вписывается:

488 

489<Tabs>

490 <Tab title="Agent SDK vs Client SDK">

491 [Anthropic Client SDK](https://platform.claude.com/docs/ru/api/client-sdks) дает вам прямой доступ к API: вы отправляете подсказки и реализуете выполнение инструментов самостоятельно. **Agent SDK** дает вам Claude со встроенным выполнением инструментов.

492 

493 С Client SDK вы реализуете цикл инструментов. С Agent SDK Claude обрабатывает это:

494 

495 <CodeGroup>

496 ```python Python theme={null}

497 # Client SDK: You implement the tool loop

498 response = client.messages.create(...)

499 while response.stop_reason == "tool_use":

500 result = your_tool_executor(response.tool_use)

501 response = client.messages.create(tool_result=result, **params)

502 

503 # Agent SDK: Claude handles tools autonomously

504 async for message in query(prompt="Fix the bug in auth.py"):

505 print(message)

506 ```

507 

508 ```typescript TypeScript theme={null}

509 // Client SDK: You implement the tool loop

510 let response = await client.messages.create({ ...params });

511 while (response.stop_reason === "tool_use") {

512 const result = yourToolExecutor(response.tool_use);

513 response = await client.messages.create({ tool_result: result, ...params });

514 }

515 

516 // Agent SDK: Claude handles tools autonomously

517 for await (const message of query({ prompt: "Fix the bug in auth.ts" })) {

518 console.log(message);

519 }

520 ```

521 </CodeGroup>

522 </Tab>

523 

524 <Tab title="Agent SDK vs Claude Code CLI">

525 Те же возможности, другой интерфейс:

526 

527 | Вариант использования | Лучший выбор |

528 | ------------------------------ | ------------ |

529 | Интерактивная разработка | CLI |

530 | CI/CD конвейеры | SDK |

531 | Пользовательские приложения | SDK |

532 | Одноразовые задачи | CLI |

533 | Производственная автоматизация | SDK |

534 

535 Многие команды используют оба: CLI для ежедневной разработки, SDK для производства. Рабочие процессы напрямую переводятся между ними.

536 </Tab>

537 

538 <Tab title="Agent SDK vs Managed Agents">

539 [Managed Agents](https://platform.claude.com/docs/ru/managed-agents/overview) — это размещенный REST API: Anthropic запускает агента и песочницу, а ваше приложение отправляет события и получает результаты потоком. **Agent SDK** — это библиотека, которая запускает цикл агента внутри вашего собственного процесса.

540 

541 | | Agent SDK | Managed Agents |

542 | -------------------------------- | ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |

543 | **Запускается в** | Ваш процесс, ваша инфраструктура | Инфраструктура, управляемая Anthropic |

544 | **Интерфейс** | Библиотека Python или TypeScript | REST API |

545 | **Агент работает с** | Файлами в вашей инфраструктуре | Управляемой песочницей на сеанс |

546 | **Состояние сеанса** | JSONL в вашей файловой системе | Журнал событий, размещенный в Anthropic |

547 | **Пользовательские инструменты** | Функции Python или TypeScript в процессе | Claude запускает инструмент; вы выполняете и возвращаете результаты |

548 | **Лучше всего подходит для** | Локальное прототипирование, агенты, которые работают непосредственно с вашей файловой системой и сервисами | Производственные агенты без необходимости управления песочницей или инфраструктурой сеанса, долгоживущие и асинхронные сеансы |

549 

550 Обычный путь — прототипирование с Agent SDK локально, а затем переход на Managed Agents для производства.

551 </Tab>

552</Tabs>

553 

554## Журнал изменений

555 

556Просмотрите полный журнал изменений для обновлений SDK, исправлений ошибок и новых функций:

557 

558* **TypeScript SDK**: [просмотреть CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md)

559* **Python SDK**: [просмотреть CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md)

560 

561## Сообщение об ошибках

562 

563Если вы столкнулись с ошибками или проблемами с Agent SDK:

564 

565* **TypeScript SDK**: [сообщить об ошибках на GitHub](https://github.com/anthropics/claude-agent-sdk-typescript/issues)

566* **Python SDK**: [сообщить об ошибках на GitHub](https://github.com/anthropics/claude-agent-sdk-python/issues)

567 

568## Рекомендации по брендингу

569 

570Для партнеров, интегрирующих Claude Agent SDK, использование брендинга Claude является необязательным. При ссылке на Claude в вашем продукте:

571 

572**Разрешено:**

573 

574* "Claude Agent" (предпочтительно для раскрывающихся меню)

575* "Claude" (когда находится в меню, уже помеченном как "Agents")

576* "{YourAgentName} Powered by Claude" (если у вас есть существующее имя агента)

577 

578**Не разрешено:**

579 

580* "Claude Code" или "Claude Code Agent"

581* ASCII-арт с брендингом Claude Code или визуальные элементы, которые имитируют Claude Code

582 

583Ваш продукт должен сохранять свой собственный брендинг и не должен выглядеть как Claude Code или любой продукт Anthropic. Для вопросов о соответствии брендингу свяжитесь с командой Anthropic [sales team](https://www.anthropic.com/contact-sales).

584 

585## Лицензия и условия

586 

587Использование Claude Agent SDK регулируется [Коммерческими условиями обслуживания Anthropic](https://www.anthropic.com/legal/commercial-terms), включая случаи, когда вы используете его для питания продуктов и услуг, которые вы предоставляете своим собственным клиентам и конечным пользователям, за исключением случаев, когда конкретный компонент или зависимость покрыты другой лицензией, как указано в файле LICENSE этого компонента.

588 

589## Следующие шаги

590 

591<CardGroup cols={2}>

592 <Card title="Быстрый старт" icon="play" href="/ru/agent-sdk/quickstart">

593 Создайте агента, который находит и исправляет ошибки за несколько минут

594 </Card>

595 

596 <Card title="Примеры агентов" icon="star" href="https://github.com/anthropics/claude-agent-sdk-demos">

597 Помощник по электронной почте, исследовательский агент и многое другое

598 </Card>

599 

600 <Card title="TypeScript SDK" icon="code" href="/ru/agent-sdk/typescript">

601 Полная справка API TypeScript и примеры

602 </Card>

603 

604 <Card title="Python SDK" icon="code" href="/ru/agent-sdk/python">

605 Полная справка API Python и примеры

606 </Card>

607</CardGroup>

agent-sdk/plugins.md +342 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Plugins в SDK

6 

7> Загружайте пользовательские plugins для расширения Claude Code с помощью команд, agents, skills и hooks через Agent SDK

8 

9Plugins позволяют расширить Claude Code пользовательской функциональностью, которая может быть общей для нескольких проектов. Через Agent SDK вы можете программно загружать plugins из локальных директорий, чтобы добавить пользовательские slash commands, agents, skills, hooks и MCP серверы к сеансам вашего agent.

10 

11## Что такое plugins?

12 

13Plugins — это пакеты расширений Claude Code, которые могут включать:

14 

15* **Skills**: Возможности, вызываемые моделью, которые Claude использует автономно (также могут быть вызваны с помощью `/skill-name`)

16* **Agents**: Специализированные подагенты для конкретных задач

17* **Hooks**: Обработчики событий, которые реагируют на использование инструментов и другие события

18* **MCP серверы**: Интеграции внешних инструментов через Model Context Protocol

19 

20<Note>

21 Директория `commands/` — это устаревший формат. Используйте `skills/` для новых plugins. Claude Code продолжает поддерживать оба формата для обратной совместимости.

22</Note>

23 

24Для полной информации о структуре plugin и способах создания plugins см. [Plugins](/ru/plugins).

25 

26## Загрузка plugins

27 

28Загружайте plugins, предоставляя пути их локальной файловой системы в конфигурации параметров. Поле `type` должно быть `"local"`, это единственное значение, которое принимает SDK. Чтобы использовать plugin, распространяемый через [marketplace](/ru/plugin-marketplaces) или удаленный репозиторий, сначала загрузите его и предоставьте путь локальной директории. SDK поддерживает загрузку нескольких plugins из разных мест.

29 

30<CodeGroup>

31 ```typescript TypeScript theme={null}

32 import { query } from "@anthropic-ai/claude-agent-sdk";

33 

34 for await (const message of query({

35 prompt: "Hello",

36 options: {

37 plugins: [

38 { type: "local", path: "./my-plugin" },

39 { type: "local", path: "/absolute/path/to/another-plugin" }

40 ]

41 }

42 })) {

43 // Plugin commands, agents, and other features are now available

44 }

45 ```

46 

47 ```python Python theme={null}

48 import asyncio

49 from claude_agent_sdk import query

50 

51 

52 async def main():

53 async for message in query(

54 prompt="Hello",

55 options={

56 "plugins": [

57 {"type": "local", "path": "./my-plugin"},

58 {"type": "local", "path": "/absolute/path/to/another-plugin"},

59 ]

60 },

61 ):

62 # Plugin commands, agents, and other features are now available

63 pass

64 

65 

66 asyncio.run(main())

67 ```

68</CodeGroup>

69 

70### Спецификации путей

71 

72Пути plugins могут быть:

73 

74* **Относительные пути**: Разрешаются относительно вашей текущей рабочей директории (например, `"./plugins/my-plugin"`)

75* **Абсолютные пути**: Полные пути файловой системы (например, `"/home/user/plugins/my-plugin"`)

76 

77<Note>

78 Путь должен указывать на корневую директорию plugin (директорию, содержащую `.claude-plugin/plugin.json`).

79</Note>

80 

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

82 

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

84 

85<CodeGroup>

86 ```typescript TypeScript theme={null}

87 import { query } from "@anthropic-ai/claude-agent-sdk";

88 

89 for await (const message of query({

90 prompt: "Hello",

91 options: {

92 plugins: [{ type: "local", path: "./my-plugin" }]

93 }

94 })) {

95 if (message.type === "system" && message.subtype === "init") {

96 // Check loaded plugins

97 console.log("Plugins:", message.plugins);

98 // Example: [{ name: "my-plugin", path: "./my-plugin" }]

99 

100 // Check available commands from plugins

101 console.log("Commands:", message.slash_commands);

102 // Example: ["/help", "/compact", "my-plugin:custom-command"]

103 }

104 }

105 ```

106 

107 ```python Python theme={null}

108 import asyncio

109 from claude_agent_sdk import query

110 

111 

112 async def main():

113 async for message in query(

114 prompt="Hello", options={"plugins": [{"type": "local", "path": "./my-plugin"}]}

115 ):

116 if message.type == "system" and message.subtype == "init":

117 # Check loaded plugins

118 print("Plugins:", message.data.get("plugins"))

119 # Example: [{"name": "my-plugin", "path": "./my-plugin"}]

120 

121 # Check available commands from plugins

122 print("Commands:", message.data.get("slash_commands"))

123 # Example: ["/help", "/compact", "my-plugin:custom-command"]

124 

125 

126 asyncio.run(main())

127 ```

128</CodeGroup>

129 

130## Использование plugin skills

131 

132Skills из plugins автоматически получают пространство имен с именем plugin, чтобы избежать конфликтов. При вызове как slash commands формат — `plugin-name:skill-name`.

133 

134<CodeGroup>

135 ```typescript TypeScript theme={null}

136 import { query } from "@anthropic-ai/claude-agent-sdk";

137 

138 // Load a plugin with a custom /greet skill

139 for await (const message of query({

140 prompt: "/my-plugin:greet", // Use plugin skill with namespace

141 options: {

142 plugins: [{ type: "local", path: "./my-plugin" }]

143 }

144 })) {

145 // Claude executes the custom greeting skill from the plugin

146 if (message.type === "assistant") {

147 console.log(message.message.content);

148 }

149 }

150 ```

151 

152 ```python Python theme={null}

153 import asyncio

154 from claude_agent_sdk import query, AssistantMessage, TextBlock

155 

156 

157 async def main():

158 # Load a plugin with a custom /greet skill

159 async for message in query(

160 prompt="/demo-plugin:greet", # Use plugin skill with namespace

161 options={"plugins": [{"type": "local", "path": "./plugins/demo-plugin"}]},

162 ):

163 # Claude executes the custom greeting skill from the plugin

164 if isinstance(message, AssistantMessage):

165 for block in message.content:

166 if isinstance(block, TextBlock):

167 print(f"Claude: {block.text}")

168 

169 

170 asyncio.run(main())

171 ```

172</CodeGroup>

173 

174<Note>

175 Если вы установили plugin через CLI (например, `/plugin install my-plugin@marketplace`), вы все еще можете использовать его в SDK, предоставив путь его установки. Проверьте `~/.claude/plugins/` для plugins, установленных через CLI.

176</Note>

177 

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

179 

180Вот полный пример, демонстрирующий загрузку и использование plugin:

181 

182<CodeGroup>

183 ```typescript TypeScript theme={null}

184 import { query } from "@anthropic-ai/claude-agent-sdk";

185 import * as path from "path";

186 

187 async function runWithPlugin() {

188 const pluginPath = path.join(__dirname, "plugins", "my-plugin");

189 

190 console.log("Loading plugin from:", pluginPath);

191 

192 for await (const message of query({

193 prompt: "What custom commands do you have available?",

194 options: {

195 plugins: [{ type: "local", path: pluginPath }],

196 maxTurns: 3

197 }

198 })) {

199 if (message.type === "system" && message.subtype === "init") {

200 console.log("Loaded plugins:", message.plugins);

201 console.log("Available commands:", message.slash_commands);

202 }

203 

204 if (message.type === "assistant") {

205 console.log("Assistant:", message.message.content);

206 }

207 }

208 }

209 

210 runWithPlugin().catch(console.error);

211 ```

212 

213 ```python Python theme={null}

214 #!/usr/bin/env python3

215 """Example demonstrating how to use plugins with the Agent SDK."""

216 

217 from pathlib import Path

218 import anyio

219 from claude_agent_sdk import (

220 AssistantMessage,

221 ClaudeAgentOptions,

222 TextBlock,

223 query,

224 )

225 

226 

227 async def run_with_plugin():

228 """Example using a custom plugin."""

229 plugin_path = Path(__file__).parent / "plugins" / "demo-plugin"

230 

231 print(f"Loading plugin from: {plugin_path}")

232 

233 options = ClaudeAgentOptions(

234 plugins=[{"type": "local", "path": str(plugin_path)}],

235 max_turns=3,

236 )

237 

238 async for message in query(

239 prompt="What custom commands do you have available?", options=options

240 ):

241 if message.type == "system" and message.subtype == "init":

242 print(f"Loaded plugins: {message.data.get('plugins')}")

243 print(f"Available commands: {message.data.get('slash_commands')}")

244 

245 if isinstance(message, AssistantMessage):

246 for block in message.content:

247 if isinstance(block, TextBlock):

248 print(f"Assistant: {block.text}")

249 

250 

251 if __name__ == "__main__":

252 anyio.run(run_with_plugin)

253 ```

254</CodeGroup>

255 

256## Справочник структуры plugin

257 

258Директория plugin должна содержать файл манифеста `.claude-plugin/plugin.json`. Она может опционально включать:

259 

260```text theme={null}

261my-plugin/

262├── .claude-plugin/

263│ └── plugin.json # Required: plugin manifest

264├── skills/ # Agent Skills (invoked autonomously or via /skill-name)

265│ └── my-skill/

266│ └── SKILL.md

267├── commands/ # Legacy: use skills/ instead

268│ └── custom-cmd.md

269├── agents/ # Custom agents

270│ └── specialist.md

271├── hooks/ # Event handlers

272│ └── hooks.json

273└── .mcp.json # MCP server definitions

274```

275 

276Для подробной информации о создании plugins см.:

277 

278* [Plugins](/ru/plugins) — Полное руководство по разработке plugin

279* [Plugins reference](/ru/plugins-reference) — Технические спецификации и схемы

280 

281## Распространенные варианты использования

282 

283### Разработка и тестирование

284 

285Загружайте plugins во время разработки без их глобальной установки:

286 

287```typescript theme={null}

288plugins: [{ type: "local", path: "./dev-plugins/my-plugin" }];

289```

290 

291### Расширения, специфичные для проекта

292 

293Включайте plugins в репозиторий вашего проекта для согласованности в команде:

294 

295```typescript theme={null}

296plugins: [{ type: "local", path: "./project-plugins/team-workflows" }];

297```

298 

299### Несколько источников plugins

300 

301Объединяйте plugins из разных мест:

302 

303```typescript theme={null}

304plugins: [

305 { type: "local", path: "./local-plugin" },

306 { type: "local", path: "~/.claude/custom-plugins/shared-plugin" }

307];

308```

309 

310## Troubleshooting

311 

312### Plugin не загружается

313 

314Если ваш plugin не появляется в сообщении инициализации:

315 

3161. **Проверьте путь**: Убедитесь, что путь указывает на корневую директорию plugin (содержащую `.claude-plugin/`)

3172. **Проверьте plugin.json**: Убедитесь, что ваш файл манифеста имеет корректный синтаксис JSON

3183. **Проверьте разрешения файлов**: Убедитесь, что директория plugin доступна для чтения

319 

320### Skills не появляются

321 

322Если plugin skills не работают:

323 

3241. **Используйте пространство имен**: Plugin skills требуют формат `plugin-name:skill-name` при вызове как slash commands

3252. **Проверьте сообщение инициализации**: Убедитесь, что skill появляется в `slash_commands` с правильным пространством имен

3263. **Проверьте файлы skill**: Убедитесь, что каждый skill имеет файл `SKILL.md` в собственной поддиректории под `skills/` (например, `skills/my-skill/SKILL.md`)

327 

328### Проблемы с разрешением пути

329 

330Если относительные пути не работают:

331 

3321. **Проверьте рабочую директорию**: Относительные пути разрешаются из вашей текущей рабочей директории

3332. **Используйте абсолютные пути**: Для надежности рассмотрите использование абсолютных путей

3343. **Нормализуйте пути**: Используйте утилиты пути для правильного построения путей

335 

336## См. также

337 

338* [Plugins](/ru/plugins) — Полное руководство по разработке plugin

339* [Plugins reference](/ru/plugins-reference) — Технические спецификации

340* [Slash Commands](/ru/agent-sdk/slash-commands) — Использование slash commands в SDK

341* [Subagents](/ru/agent-sdk/subagents) — Работа со специализированными agents

342* [Skills](/ru/agent-sdk/skills) — Использование Agent Skills

agent-sdk/python.md +3274 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Справочник Agent SDK - Python

6 

7> Полный справочник API для Python Agent SDK, включая все функции, типы и классы.

8 

9## Установка

10 

11```bash theme={null}

12pip install claude-agent-sdk

13```

14 

15## Выбор между `query()` и `ClaudeSDKClient`

16 

17Python SDK предоставляет два способа взаимодействия с Claude Code:

18 

19### Быстрое сравнение

20 

21| Функция | `query()` | `ClaudeSDKClient` |

22| :------------------------------- | :----------------------------- | :-------------------------------------- |

23| **Сеанс** | Создает новый сеанс каждый раз | Повторно использует один и тот же сеанс |

24| **Разговор** | Один обмен | Несколько обменов в одном контексте |

25| **Соединение** | Управляется автоматически | Ручное управление |

26| **Потоковый ввод** | ✅ Поддерживается | ✅ Поддерживается |

27| **Прерывания** | ❌ Не поддерживается | ✅ Поддерживается |

28| **Hooks** | ✅ Поддерживается | ✅ Поддерживается |

29| **Пользовательские инструменты** | ✅ Поддерживается | ✅ Поддерживается |

30| **Продолжить чат** | ❌ Новый сеанс каждый раз | ✅ Сохраняет разговор |

31| **Вариант использования** | Одноразовые задачи | Непрерывные разговоры |

32 

33### Когда использовать `query()` (новый сеанс каждый раз)

34 

35**Лучше всего для:**

36 

37* Одноразовых вопросов, когда вам не нужна история разговора

38* Независимых задач, которые не требуют контекста из предыдущих обменов

39* Простых скриптов автоматизации

40* Когда вы хотите начать с чистого листа каждый раз

41 

42### Когда использовать `ClaudeSDKClient` (непрерывный разговор)

43 

44**Лучше всего для:**

45 

46* **Продолжения разговоров** - Когда вам нужно, чтобы Claude помнил контекст

47* **Уточняющих вопросов** - Построение на основе предыдущих ответов

48* **Интерактивных приложений** - Интерфейсы чата, REPL

49* **Логики, управляемой ответом** - Когда следующее действие зависит от ответа Claude

50* **Управления сеансом** - Явное управление жизненным циклом разговора

51 

52## Функции

53 

54### `query()`

55 

56Создает новый сеанс для каждого взаимодействия с Claude Code. Возвращает асинхронный итератор, который выдает сообщения по мере их поступления. Каждый вызов `query()` начинается с нуля без памяти о предыдущих взаимодействиях.

57 

58```python theme={null}

59async def query(

60 *,

61 prompt: str | AsyncIterable[dict[str, Any]],

62 options: ClaudeAgentOptions | None = None,

63 transport: Transport | None = None

64) -> AsyncIterator[Message]

65```

66 

67#### Параметры

68 

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

70| :---------- | :--------------------------- | :--------------------------------------------------------------------------------------- |

71| `prompt` | `str \| AsyncIterable[dict]` | Входная подсказка в виде строки или асинхронного итератора для режима потоковой передачи |

72| `options` | `ClaudeAgentOptions \| None` | Объект дополнительной конфигурации (по умолчанию `ClaudeAgentOptions()`, если None) |

73| `transport` | `Transport \| None` | Дополнительный пользовательский транспорт для связи с процессом CLI |

74 

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

76 

77Возвращает `AsyncIterator[Message]`, который выдает сообщения из разговора.

78 

79#### Пример - С параметрами

80 

81```python theme={null}

82import asyncio

83from claude_agent_sdk import query, ClaudeAgentOptions

84 

85 

86async def main():

87 options = ClaudeAgentOptions(

88 system_prompt="You are an expert Python developer",

89 permission_mode="acceptEdits",

90 cwd="/home/user/project",

91 )

92 

93 async for message in query(prompt="Create a Python web server", options=options):

94 print(message)

95 

96 

97asyncio.run(main())

98```

99 

100### `tool()`

101 

102Декоратор для определения MCP tools с проверкой типов.

103 

104```python theme={null}

105def tool(

106 name: str,

107 description: str,

108 input_schema: type | dict[str, Any],

109 annotations: ToolAnnotations | None = None

110) -> Callable[[Callable[[Any], Awaitable[dict[str, Any]]]], SdkMcpTool[Any]]

111```

112 

113#### Параметры

114 

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

116| :------------- | :----------------------------------------------- | :------------------------------------------------------------------------------ |

117| `name` | `str` | Уникальный идентификатор инструмента |

118| `description` | `str` | Понятное описание того, что делает инструмент |

119| `input_schema` | `type \| dict[str, Any]` | Схема, определяющая входные параметры инструмента (см. ниже) |

120| `annotations` | [`ToolAnnotations`](#tool-annotations)` \| None` | Дополнительные аннотации MCP tool, предоставляющие подсказки поведения клиентам |

121 

122#### Варианты схемы ввода

123 

1241. **Простое сопоставление типов** (рекомендуется):

125 

126 ```python theme={null}

127 {"text": str, "count": int, "enabled": bool}

128 ```

129 

1302. **Формат JSON Schema** (для сложной валидации):

131 ```python theme={null}

132 {

133 "type": "object",

134 "properties": {

135 "text": {"type": "string"},

136 "count": {"type": "integer", "minimum": 0},

137 },

138 "required": ["text"],

139 }

140 ```

141 

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

143 

144Функция-декоратор, которая оборачивает реализацию инструмента и возвращает экземпляр `SdkMcpTool`.

145 

146#### Пример

147 

148```python theme={null}

149from claude_agent_sdk import tool

150from typing import Any

151 

152 

153@tool("greet", "Greet a user", {"name": str})

154async def greet(args: dict[str, Any]) -> dict[str, Any]:

155 return {"content": [{"type": "text", "text": f"Hello, {args['name']}!"}]}

156```

157 

158#### `ToolAnnotations`

159 

160Переэкспортировано из `mcp.types` (также доступно как `from claude_agent_sdk import ToolAnnotations`). Все поля являются дополнительными подсказками; клиенты не должны полагаться на них для решений безопасности.

161 

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

163| :---------------- | :------------- | :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |

164| `title` | `str \| None` | `None` | Понятное название инструмента |

165| `readOnlyHint` | `bool \| None` | `False` | Если `True`, инструмент не изменяет свою среду |

166| `destructiveHint` | `bool \| None` | `True` | Если `True`, инструмент может выполнять деструктивные обновления (имеет смысл только когда `readOnlyHint` равен `False`) |

167| `idempotentHint` | `bool \| None` | `False` | Если `True`, повторные вызовы с одинаковыми аргументами не имеют дополнительного эффекта (имеет смысл только когда `readOnlyHint` равен `False`) |

168| `openWorldHint` | `bool \| None` | `True` | Если `True`, инструмент взаимодействует с внешними сущностями (например, веб-поиск). Если `False`, область инструмента закрыта (например, инструмент памяти) |

169 

170```python theme={null}

171from claude_agent_sdk import tool, ToolAnnotations

172from typing import Any

173 

174 

175@tool(

176 "search",

177 "Search the web",

178 {"query": str},

179 annotations=ToolAnnotations(readOnlyHint=True, openWorldHint=True),

180)

181async def search(args: dict[str, Any]) -> dict[str, Any]:

182 return {"content": [{"type": "text", "text": f"Results for: {args['query']}"}]}

183```

184 

185### `create_sdk_mcp_server()`

186 

187Создайте встроенный MCP server, который работает в вашем приложении Python.

188 

189```python theme={null}

190def create_sdk_mcp_server(

191 name: str,

192 version: str = "1.0.0",

193 tools: list[SdkMcpTool[Any]] | None = None

194) -> McpSdkServerConfig

195```

196 

197#### Параметры

198 

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

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

201| `name` | `str` | - | Уникальный идентификатор сервера |

202| `version` | `str` | `"1.0.0"` | Строка версии сервера |

203| `tools` | `list[SdkMcpTool[Any]] \| None` | `None` | Список функций инструментов, созданных с помощью декоратора `@tool` |

204 

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

206 

207Возвращает объект `McpSdkServerConfig`, который можно передать в `ClaudeAgentOptions.mcp_servers`.

208 

209#### Пример

210 

211```python theme={null}

212from claude_agent_sdk import tool, create_sdk_mcp_server

213 

214 

215@tool("add", "Add two numbers", {"a": float, "b": float})

216async def add(args):

217 return {"content": [{"type": "text", "text": f"Sum: {args['a'] + args['b']}"}]}

218 

219 

220@tool("multiply", "Multiply two numbers", {"a": float, "b": float})

221async def multiply(args):

222 return {"content": [{"type": "text", "text": f"Product: {args['a'] * args['b']}"}]}

223 

224 

225calculator = create_sdk_mcp_server(

226 name="calculator",

227 version="2.0.0",

228 tools=[add, multiply], # Pass decorated functions

229)

230 

231# Use with Claude

232options = ClaudeAgentOptions(

233 mcp_servers={"calc": calculator},

234 allowed_tools=["mcp__calc__add", "mcp__calc__multiply"],

235)

236```

237 

238### `list_sessions()`

239 

240Выводит список прошлых сеансов с метаданными. Фильтруйте по каталогу проекта или выводите сеансы во всех проектах. Синхронно; возвращается немедленно.

241 

242```python theme={null}

243def list_sessions(

244 directory: str | None = None,

245 limit: int | None = None,

246 include_worktrees: bool = True

247) -> list[SDKSessionInfo]

248```

249 

250#### Параметры

251 

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

253| :------------------ | :------------ | :----------- | :------------------------------------------------------------------------------------------ |

254| `directory` | `str \| None` | `None` | Каталог для вывода сеансов. Если опущено, возвращает сеансы во всех проектах |

255| `limit` | `int \| None` | `None` | Максимальное количество возвращаемых сеансов |

256| `include_worktrees` | `bool` | `True` | Когда `directory` находится внутри репозитория git, включайте сеансы из всех путей worktree |

257 

258#### Тип возвращаемого значения: `SDKSessionInfo`

259 

260| Свойство | Тип | Описание |

261| :-------------- | :------------ | :---------------------------------------------------------------------------------------------------- |

262| `session_id` | `str` | Уникальный идентификатор сеанса |

263| `summary` | `str` | Отображаемое название: пользовательское название, автоматически созданное резюме или первая подсказка |

264| `last_modified` | `int` | Время последнего изменения в миллисекундах с начала эпохи |

265| `file_size` | `int \| None` | Размер файла сеанса в байтах (`None` для удаленных хранилищ) |

266| `custom_title` | `str \| None` | Название сеанса, установленное пользователем |

267| `first_prompt` | `str \| None` | Первая значимая подсказка пользователя в сеансе |

268| `git_branch` | `str \| None` | Ветка Git в конце сеанса |

269| `cwd` | `str \| None` | Рабочий каталог для сеанса |

270| `tag` | `str \| None` | Тег сеанса, установленный пользователем (см. [`tag_session()`](#tag-session)) |

271| `created_at` | `int \| None` | Время создания сеанса в миллисекундах с начала эпохи |

272 

273#### Пример

274 

275Выведите 10 самых последних сеансов для проекта. Результаты отсортированы по `last_modified` в убывающем порядке, поэтому первый элемент - самый новый. Опустите `directory`, чтобы искать во всех проектах.

276 

277```python theme={null}

278from claude_agent_sdk import list_sessions

279 

280for session in list_sessions(directory="/path/to/project", limit=10):

281 print(f"{session.summary} ({session.session_id})")

282```

283 

284### `get_session_messages()`

285 

286Извлекает сообщения из прошлого сеанса. Синхронно; возвращается немедленно.

287 

288```python theme={null}

289def get_session_messages(

290 session_id: str,

291 directory: str | None = None,

292 limit: int | None = None,

293 offset: int = 0

294) -> list[SessionMessage]

295```

296 

297#### Параметры

298 

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

300| :----------- | :------------ | :----------- | :-------------------------------------------------------------- |

301| `session_id` | `str` | обязательно | ID сеанса для извлечения сообщений |

302| `directory` | `str \| None` | `None` | Каталог проекта для поиска. Если опущено, ищет во всех проектах |

303| `limit` | `int \| None` | `None` | Максимальное количество возвращаемых сообщений |

304| `offset` | `int` | `0` | Количество сообщений для пропуска с начала |

305 

306#### Тип возвращаемого значения: `SessionMessage`

307 

308| Свойство | Тип | Описание |

309| :------------------- | :----------------------------- | :----------------------------------------- |

310| `type` | `Literal["user", "assistant"]` | Роль сообщения |

311| `uuid` | `str` | Уникальный идентификатор сообщения |

312| `session_id` | `str` | Идентификатор сеанса |

313| `message` | `Any` | Необработанное содержимое сообщения |

314| `parent_tool_use_id` | `None` | Зарезервировано для будущего использования |

315 

316#### Пример

317 

318```python theme={null}

319from claude_agent_sdk import list_sessions, get_session_messages

320 

321sessions = list_sessions(limit=1)

322if sessions:

323 messages = get_session_messages(sessions[0].session_id)

324 for msg in messages:

325 print(f"[{msg.type}] {msg.uuid}")

326```

327 

328### `get_session_info()`

329 

330Читает метаданные для одного сеанса по ID без сканирования полного каталога проекта. Синхронно; возвращается немедленно.

331 

332```python theme={null}

333def get_session_info(

334 session_id: str,

335 directory: str | None = None,

336) -> SDKSessionInfo | None

337```

338 

339#### Параметры

340 

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

342| :----------- | :------------ | :----------- | :------------------------------------------------------------------- |

343| `session_id` | `str` | обязательно | UUID сеанса для поиска |

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

345 

346Возвращает [`SDKSessionInfo`](#return-type-sdk-session-info) или `None`, если сеанс не найден.

347 

348#### Пример

349 

350Найдите метаданные одного сеанса без сканирования каталога проекта. Полезно, когда у вас уже есть ID сеанса из предыдущего запуска.

351 

352```python theme={null}

353from claude_agent_sdk import get_session_info

354 

355info = get_session_info("550e8400-e29b-41d4-a716-446655440000")

356if info:

357 print(f"{info.summary} (branch: {info.git_branch}, tag: {info.tag})")

358```

359 

360### `rename_session()`

361 

362Переименовывает сеанс, добавляя запись с пользовательским названием. Повторные вызовы безопасны; побеждает самое последнее название. Синхронно.

363 

364```python theme={null}

365def rename_session(

366 session_id: str,

367 title: str,

368 directory: str | None = None,

369) -> None

370```

371 

372#### Параметры

373 

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

375| :----------- | :------------ | :----------- | :------------------------------------------------------------------- |

376| `session_id` | `str` | обязательно | UUID сеанса для переименования |

377| `title` | `str` | обязательно | Новое название. Должно быть непустым после удаления пробелов |

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

379 

380Вызывает `ValueError`, если `session_id` не является допустимым UUID или `title` пуст; `FileNotFoundError`, если сеанс не найден.

381 

382#### Пример

383 

384Переименуйте самый последний сеанс, чтобы его было легче найти позже. Новое название появляется в [`SDKSessionInfo.custom_title`](#return-type-sdk-session-info) при последующих чтениях.

385 

386```python theme={null}

387from claude_agent_sdk import list_sessions, rename_session

388 

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

390if sessions:

391 rename_session(sessions[0].session_id, "Refactor auth module")

392```

393 

394### `tag_session()`

395 

396Помечает сеанс. Передайте `None` для очистки тега. Повторные вызовы безопасны; побеждает самый последний тег. Синхронно.

397 

398```python theme={null}

399def tag_session(

400 session_id: str,

401 tag: str | None,

402 directory: str | None = None,

403) -> None

404```

405 

406#### Параметры

407 

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

409| :----------- | :------------ | :----------- | :------------------------------------------------------------------------- |

410| `session_id` | `str` | обязательно | UUID сеанса для пометки |

411| `tag` | `str \| None` | обязательно | Строка тега или `None` для очистки. Очищается от Unicode перед сохранением |

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

413 

414Вызывает `ValueError`, если `session_id` не является допустимым UUID или `tag` пуст после очистки; `FileNotFoundError`, если сеанс не найден.

415 

416#### Пример

417 

418Пометьте сеанс, затем отфильтруйте по этому тегу при последующем чтении. Передайте `None` для очистки существующего тега.

419 

420```python theme={null}

421from claude_agent_sdk import list_sessions, tag_session

422 

423# Tag a session

424tag_session("550e8400-e29b-41d4-a716-446655440000", "needs-review")

425 

426# Later: find all sessions with that tag

427for session in list_sessions(directory="/path/to/project"):

428 if session.tag == "needs-review":

429 print(session.summary)

430```

431 

432## Классы

433 

434### `ClaudeSDKClient`

435 

436**Поддерживает сеанс разговора через несколько обменов.** Это эквивалент Python того, как функция `query()` TypeScript SDK работает внутри - она создает объект клиента, который может продолжать разговоры.

437 

438#### Ключевые особенности

439 

440* **Непрерывность сеанса**: Поддерживает контекст разговора через несколько вызовов `query()`

441* **Один разговор**: Сеанс сохраняет предыдущие сообщения

442* **Поддержка прерываний**: Может остановить выполнение в середине задачи

443* **Явный жизненный цикл**: Вы контролируете, когда сеанс начинается и заканчивается

444* **Поток, управляемый ответом**: Может реагировать на ответы и отправлять дополнения

445* **Пользовательские инструменты и hooks**: Поддерживает пользовательские инструменты (созданные с помощью декоратора `@tool`) и hooks

446 

447```python theme={null}

448class ClaudeSDKClient:

449 def __init__(self, options: ClaudeAgentOptions | None = None, transport: Transport | None = None)

450 async def connect(self, prompt: str | AsyncIterable[dict] | None = None) -> None

451 async def query(self, prompt: str | AsyncIterable[dict], session_id: str = "default") -> None

452 async def receive_messages(self) -> AsyncIterator[Message]

453 async def receive_response(self) -> AsyncIterator[Message]

454 async def interrupt(self) -> None

455 async def set_permission_mode(self, mode: str) -> None

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

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

458 async def get_mcp_status(self) -> McpStatusResponse

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

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

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

462 async def get_server_info(self) -> dict[str, Any] | None

463 async def disconnect(self) -> None

464```

465 

466#### Методы

467 

468| Метод | Описание |

469| :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

470| `__init__(options)` | Инициализируйте клиент с дополнительной конфигурацией |

471| `connect(prompt)` | Подключитесь к Claude с дополнительной начальной подсказкой или потоком сообщений |

472| `query(prompt, session_id)` | Отправьте новый запрос в режиме потоковой передачи |

473| `receive_messages()` | Получайте все сообщения от Claude как асинхронный итератор |

474| `receive_response()` | Получайте сообщения до и включая ResultMessage |

475| `interrupt()` | Отправьте сигнал прерывания (работает только в режиме потоковой передачи) |

476| `set_permission_mode(mode)` | Измените режим разрешений для текущего сеанса |

477| `set_model(model)` | Измените модель для текущего сеанса. Передайте `None` для сброса на значение по умолчанию |

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

479| `get_mcp_status()` | Получите статус всех настроенных MCP servers. Возвращает [`McpStatusResponse`](#mcp-status-response) |

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

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

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

483| `get_server_info()` | Получите информацию о сервере, включая ID сеанса и возможности |

484| `disconnect()` | Отключитесь от Claude |

485 

486#### Поддержка менеджера контекста

487 

488Клиент можно использовать как асинхронный менеджер контекста для автоматического управления соединением:

489 

490```python theme={null}

491async with ClaudeSDKClient() as client:

492 await client.query("Hello Claude")

493 async for message in client.receive_response():

494 print(message)

495```

496 

497> **Важно:** При итерации по сообщениям избегайте использования `break` для раннего выхода, так как это может вызвать проблемы с очисткой asyncio. Вместо этого позвольте итерации завершиться естественным образом или используйте флаги для отслеживания, когда вы нашли то, что вам нужно.

498 

499#### Пример - Продолжение разговора

500 

501```python theme={null}

502import asyncio

503from claude_agent_sdk import ClaudeSDKClient, AssistantMessage, TextBlock, ResultMessage

504 

505 

506async def main():

507 async with ClaudeSDKClient() as client:

508 # First question

509 await client.query("What's the capital of France?")

510 

511 # Process response

512 async for message in client.receive_response():

513 if isinstance(message, AssistantMessage):

514 for block in message.content:

515 if isinstance(block, TextBlock):

516 print(f"Claude: {block.text}")

517 

518 # Follow-up question - the session retains the previous context

519 await client.query("What's the population of that city?")

520 

521 async for message in client.receive_response():

522 if isinstance(message, AssistantMessage):

523 for block in message.content:

524 if isinstance(block, TextBlock):

525 print(f"Claude: {block.text}")

526 

527 # Another follow-up - still in the same conversation

528 await client.query("What are some famous landmarks there?")

529 

530 async for message in client.receive_response():

531 if isinstance(message, AssistantMessage):

532 for block in message.content:

533 if isinstance(block, TextBlock):

534 print(f"Claude: {block.text}")

535 

536 

537asyncio.run(main())

538```

539 

540#### Пример - Потоковый ввод с ClaudeSDKClient

541 

542```python theme={null}

543import asyncio

544from claude_agent_sdk import ClaudeSDKClient

545 

546 

547async def message_stream():

548 """Generate messages dynamically."""

549 yield {

550 "type": "user",

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

552 }

553 await asyncio.sleep(0.5)

554 yield {

555 "type": "user",

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

557 }

558 await asyncio.sleep(0.5)

559 yield {

560 "type": "user",

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

562 }

563 

564 

565async def main():

566 async with ClaudeSDKClient() as client:

567 # Stream input to Claude

568 await client.query(message_stream())

569 

570 # Process response

571 async for message in client.receive_response():

572 print(message)

573 

574 # Follow-up in same session

575 await client.query("Should we be concerned about these readings?")

576 

577 async for message in client.receive_response():

578 print(message)

579 

580 

581asyncio.run(main())

582```

583 

584#### Пример - Использование прерываний

585 

586```python theme={null}

587import asyncio

588from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, ResultMessage

589 

590 

591async def interruptible_task():

592 options = ClaudeAgentOptions(allowed_tools=["Bash"], permission_mode="acceptEdits")

593 

594 async with ClaudeSDKClient(options=options) as client:

595 # Start a long-running task

596 await client.query("Count from 1 to 100 slowly, using the bash sleep command")

597 

598 # Let it run for a bit

599 await asyncio.sleep(2)

600 

601 # Interrupt the task

602 await client.interrupt()

603 print("Task interrupted!")

604 

605 # Drain the interrupted task's messages (including its ResultMessage)

606 async for message in client.receive_response():

607 if isinstance(message, ResultMessage):

608 print(f"Interrupted task finished with subtype={message.subtype!r}")

609 # subtype is "error_during_execution" for interrupted tasks

610 

611 # Send a new command

612 await client.query("Just say hello instead")

613 

614 # Now receive the new response

615 async for message in client.receive_response():

616 if isinstance(message, ResultMessage) and message.subtype == "success":

617 print(f"New result: {message.result}")

618 

619 

620asyncio.run(interruptible_task())

621```

622 

623<Note>

624 **Поведение буфера после прерывания:** `interrupt()` отправляет сигнал остановки, но не очищает буфер сообщений. Сообщения, уже созданные прерванной задачей, включая ее `ResultMessage` (с `subtype="error_during_execution"`), остаются в потоке. Вы должны слить их с помощью `receive_response()` перед чтением ответа на новый запрос. Если вы отправите новый запрос сразу после `interrupt()` и вызовете `receive_response()` только один раз, вы получите сообщения прерванной задачи, а не ответ на новый запрос.

625</Note>

626 

627#### Пример - Расширенное управление разрешениями

628 

629```python theme={null}

630from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

631from claude_agent_sdk.types import (

632 PermissionResultAllow,

633 PermissionResultDeny,

634 ToolPermissionContext,

635)

636 

637 

638async def custom_permission_handler(

639 tool_name: str, input_data: dict, context: ToolPermissionContext

640) -> PermissionResultAllow | PermissionResultDeny:

641 """Custom logic for tool permissions."""

642 

643 # Block writes to system directories

644 if tool_name == "Write" and input_data.get("file_path", "").startswith("/system/"):

645 return PermissionResultDeny(

646 message="System directory write not allowed", interrupt=True

647 )

648 

649 # Redirect sensitive file operations

650 if tool_name in ["Write", "Edit"] and "config" in input_data.get("file_path", ""):

651 safe_path = f"./sandbox/{input_data['file_path']}"

652 return PermissionResultAllow(

653 updated_input={**input_data, "file_path": safe_path}

654 )

655 

656 # Allow everything else

657 return PermissionResultAllow(updated_input=input_data)

658 

659 

660async def main():

661 options = ClaudeAgentOptions(

662 can_use_tool=custom_permission_handler, allowed_tools=["Read", "Write", "Edit"]

663 )

664 

665 async with ClaudeSDKClient(options=options) as client:

666 await client.query("Update the system config file")

667 

668 async for message in client.receive_response():

669 # Will use sandbox path instead

670 print(message)

671 

672 

673asyncio.run(main())

674```

675 

676## Типы

677 

678<Note>

679 **`@dataclass` vs `TypedDict`:** Этот SDK использует два вида типов. Классы, украшенные `@dataclass` (такие как `ResultMessage`, `AgentDefinition`, `TextBlock`), являются экземплярами объектов во время выполнения и поддерживают доступ к атрибутам: `msg.result`. Классы, определенные с помощью `TypedDict` (такие как `ThinkingConfigEnabled`, `McpStdioServerConfig`, `SyncHookJSONOutput`), являются **простыми словарями во время выполнения** и требуют доступа к ключам: `config["budget_tokens"]`, а не `config.budget_tokens`. Синтаксис вызова `ClassName(field=value)` работает для обоих, но только dataclasses создают объекты с атрибутами.

680</Note>

681 

682### `SdkMcpTool`

683 

684Определение для SDK MCP tool, созданного с помощью декоратора `@tool`.

685 

686```python theme={null}

687@dataclass

688class SdkMcpTool(Generic[T]):

689 name: str

690 description: str

691 input_schema: type[T] | dict[str, Any]

692 handler: Callable[[T], Awaitable[dict[str, Any]]]

693 annotations: ToolAnnotations | None = None

694```

695 

696| Свойство | Тип | Описание |

697| :------------- | :----------------------------------------- | :--------------------------------------------------------------------------------------------------------------- |

698| `name` | `str` | Уникальный идентификатор инструмента |

699| `description` | `str` | Понятное описание |

700| `input_schema` | `type[T] \| dict[str, Any]` | Схема для валидации ввода |

701| `handler` | `Callable[[T], Awaitable[dict[str, Any]]]` | Асинхронная функция, которая обрабатывает выполнение инструмента |

702| `annotations` | `ToolAnnotations \| None` | Дополнительные аннотации MCP tool (например, `readOnlyHint`, `destructiveHint`, `openWorldHint`). Из `mcp.types` |

703 

704### `Transport`

705 

706Абстрактный базовый класс для пользовательских реализаций транспорта. Используйте это для связи с процессом Claude через пользовательский канал (например, удаленное соединение вместо локального подпроцесса).

707 

708<Warning>

709 Это низкоуровневый внутренний API. Интерфейс может измениться в будущих выпусках. Пользовательские реализации должны быть обновлены в соответствии с любыми изменениями интерфейса.

710</Warning>

711 

712```python theme={null}

713from abc import ABC, abstractmethod

714from collections.abc import AsyncIterator

715from typing import Any

716 

717 

718class Transport(ABC):

719 @abstractmethod

720 async def connect(self) -> None: ...

721 

722 @abstractmethod

723 async def write(self, data: str) -> None: ...

724 

725 @abstractmethod

726 def read_messages(self) -> AsyncIterator[dict[str, Any]]: ...

727 

728 @abstractmethod

729 async def close(self) -> None: ...

730 

731 @abstractmethod

732 def is_ready(self) -> bool: ...

733 

734 @abstractmethod

735 async def end_input(self) -> None: ...

736```

737 

738| Метод | Описание |

739| :---------------- | :---------------------------------------------------------------------------- |

740| `connect()` | Подключите транспорт и подготовьте к связи |

741| `write(data)` | Напишите необработанные данные (JSON + новая строка) в транспорт |

742| `read_messages()` | Асинхронный итератор, который выдает разобранные JSON сообщения |

743| `close()` | Закройте соединение и очистите ресурсы |

744| `is_ready()` | Возвращает `True`, если транспорт может отправлять и получать |

745| `end_input()` | Закройте входной поток (например, закройте stdin для транспортов подпроцесса) |

746 

747Импорт: `from claude_agent_sdk import Transport`

748 

749### `ClaudeAgentOptions`

750 

751Dataclass конфигурации для запросов Claude Code.

752 

753```python theme={null}

754@dataclass

755class ClaudeAgentOptions:

756 tools: list[str] | ToolsPreset | None = None

757 allowed_tools: list[str] = field(default_factory=list)

758 system_prompt: str | SystemPromptPreset | None = None

759 mcp_servers: dict[str, McpServerConfig] | str | Path = field(default_factory=dict)

760 permission_mode: PermissionMode | None = None

761 continue_conversation: bool = False

762 resume: str | None = None

763 max_turns: int | None = None

764 max_budget_usd: float | None = None

765 disallowed_tools: list[str] = field(default_factory=list)

766 model: str | None = None

767 fallback_model: str | None = None

768 betas: list[SdkBeta] = field(default_factory=list)

769 output_format: dict[str, Any] | None = None

770 permission_prompt_tool_name: str | None = None

771 cwd: str | Path | None = None

772 cli_path: str | Path | None = None

773 settings: str | None = None

774 add_dirs: list[str | Path] = field(default_factory=list)

775 env: dict[str, str] = field(default_factory=dict)

776 extra_args: dict[str, str | None] = field(default_factory=dict)

777 max_buffer_size: int | None = None

778 debug_stderr: Any = sys.stderr # Deprecated

779 stderr: Callable[[str], None] | None = None

780 can_use_tool: CanUseTool | None = None

781 hooks: dict[HookEvent, list[HookMatcher]] | None = None

782 user: str | None = None

783 include_partial_messages: bool = False

784 fork_session: bool = False

785 agents: dict[str, AgentDefinition] | None = None

786 setting_sources: list[SettingSource] | None = None

787 sandbox: SandboxSettings | None = None

788 plugins: list[SdkPluginConfig] = field(default_factory=list)

789 max_thinking_tokens: int | None = None # Deprecated: use thinking instead

790 thinking: ThinkingConfig | None = None

791 effort: Literal["low", "medium", "high", "max"] | None = None

792 enable_file_checkpointing: bool = False

793 session_store: SessionStore | None = None

794```

795 

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

797| :---------------------------- | :------------------------------------------------------------------------------------- | :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

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

799| `allowed_tools` | `list[str]` | `[]` | Инструменты для автоматического одобрения без запроса. Это не ограничивает Claude только этими инструментами; неуказанные инструменты переходят к `permission_mode` и `can_use_tool`. Используйте `disallowed_tools` для блокировки инструментов. См. [Permissions](/ru/agent-sdk/permissions#allow-and-deny-rules) |

800| `system_prompt` | `str \| SystemPromptPreset \| None` | `None` | Конфигурация системной подсказки. Передайте строку для пользовательской подсказки или используйте `{"type": "preset", "preset": "claude_code"}` для системной подсказки Claude Code. Добавьте `"append"` для расширения предустановки |

801| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Конфигурации MCP server или путь к файлу конфигурации |

802| `permission_mode` | `PermissionMode \| None` | `None` | Режим разрешений для использования инструментов |

803| `continue_conversation` | `bool` | `False` | Продолжить самый последний разговор |

804| `resume` | `str \| None` | `None` | ID сеанса для возобновления |

805| `max_turns` | `int \| None` | `None` | Максимальное количество агентских ходов (раунды использования инструментов) |

806| `max_budget_usd` | `float \| None` | `None` | Остановите запрос, когда оценка стоимости на стороне клиента достигнет этого значения USD. Сравнивается с той же оценкой, что и `total_cost_usd`; см. [Track cost and usage](/ru/agent-sdk/cost-tracking) для предостережений точности |

807| `disallowed_tools` | `list[str]` | `[]` | Инструменты для всегда отклонения. Правила отклонения проверяются первыми и переопределяют `allowed_tools` и `permission_mode` (включая `bypassPermissions`) |

808| `enable_file_checkpointing` | `bool` | `False` | Включить отслеживание изменений файлов для перемотки. См. [File checkpointing](/ru/agent-sdk/file-checkpointing) |

809| `model` | `str \| None` | `None` | Модель Claude для использования |

810| `fallback_model` | `str \| None` | `None` | Резервная модель для использования, если основная модель не работает |

811| `betas` | `list[SdkBeta]` | `[]` | Функции бета-версии для включения. См. [`SdkBeta`](#sdk-beta) для доступных опций |

812| `output_format` | `dict[str, Any] \| None` | `None` | Формат вывода для структурированных ответов (например, `{"type": "json_schema", "schema": {...}}`). См. [Structured outputs](/ru/agent-sdk/structured-outputs) для деталей |

813| `permission_prompt_tool_name` | `str \| None` | `None` | Имя MCP tool для подсказок разрешений |

814| `cwd` | `str \| Path \| None` | `None` | Текущий рабочий каталог |

815| `cli_path` | `str \| Path \| None` | `None` | Пользовательский путь к исполняемому файлу Claude Code CLI |

816| `settings` | `str \| None` | `None` | Путь к файлу параметров |

817| `add_dirs` | `list[str \| Path]` | `[]` | Дополнительные каталоги, к которым Claude может получить доступ |

818| `env` | `dict[str, str]` | `{}` | Переменные окружения, объединенные поверх унаследованного окружения процесса. См. [Environment variables](/ru/env-vars) для переменных, которые читает базовый CLI |

819| `extra_args` | `dict[str, str \| None]` | `{}` | Дополнительные аргументы CLI для прямой передачи в CLI |

820| `max_buffer_size` | `int \| None` | `None` | Максимальные байты при буферизации stdout CLI |

821| `debug_stderr` | `Any` | `sys.stderr` | *Устарело* - Объект, подобный файлу, для вывода отладки. Вместо этого используйте обратный вызов `stderr` |

822| `stderr` | `Callable[[str], None] \| None` | `None` | Функция обратного вызова для вывода stderr из CLI |

823| `can_use_tool` | [`CanUseTool`](#can-use-tool) ` \| None` | `None` | Функция обратного вызова разрешения инструмента. См. [Permission types](#can-use-tool) для деталей |

824| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Конфигурации hooks для перехвата событий |

825| `user` | `str \| None` | `None` | Идентификатор пользователя |

826| `include_partial_messages` | `bool` | `False` | Включить события потоковой передачи частичных сообщений. Когда включено, выдаются сообщения [`StreamEvent`](#stream-event) |

827| `fork_session` | `bool` | `False` | При возобновлении с `resume` разветвитесь на новый ID сеанса вместо продолжения исходного сеанса |

828| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Программно определенные подагенты |

829| `plugins` | `list[SdkPluginConfig]` | `[]` | Загрузите пользовательские plugins из локальных путей. См. [Plugins](/ru/agent-sdk/plugins) для деталей |

830| `sandbox` | [`SandboxSettings`](#sandbox-settings) ` \| None` | `None` | Программно настройте поведение sandbox. См. [Sandbox settings](#sandbox-settings) для деталей |

831| `setting_sources` | `list[SettingSource] \| None` | `None` (CLI defaults: all sources) | Контролируйте, какие параметры файловой системы загружать. Передайте `[]` для отключения пользовательских, проектных и локальных параметров. Управляемые параметры политики загружаются независимо. См. [Use Claude Code features](/ru/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

832| `max_thinking_tokens` | `int \| None` | `None` | *Устарело* - Максимальные токены для блоков мышления. Вместо этого используйте `thinking` |

833| `thinking` | [`ThinkingConfig`](#thinking-config) ` \| None` | `None` | Управляет поведением расширенного мышления. Имеет приоритет над `max_thinking_tokens` |

834| `effort` | `Literal["low", "medium", "high", "max"] \| None` | `None` | Уровень усилий для глубины мышления |

835| `session_store` | [`SessionStore`](/ru/agent-sdk/session-storage#the-session-store-interface) ` \| None` | `None` | Зеркалируйте стенограммы сеансов во внешний бэкэнд, чтобы любой хост мог их возобновить. См. [Persist sessions to external storage](/ru/agent-sdk/session-storage) |

836 

837### `OutputFormat`

838 

839Конфигурация для валидации структурированного вывода. Передайте это как `dict` в поле `output_format` на `ClaudeAgentOptions`:

840 

841```python theme={null}

842# Expected dict shape for output_format

843{

844 "type": "json_schema",

845 "schema": {...}, # Your JSON Schema definition

846}

847```

848 

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

850| :------- | :---------- | :---------------------------------------------------- |

851| `type` | Да | Должно быть `"json_schema"` для валидации JSON Schema |

852| `schema` | Да | Определение JSON Schema для валидации вывода |

853 

854### `SystemPromptPreset`

855 

856Конфигурация для использования предустановленной системной подсказки Claude Code с дополнительными добавлениями.

857 

858```python theme={null}

859class SystemPromptPreset(TypedDict):

860 type: Literal["preset"]

861 preset: Literal["claude_code"]

862 append: NotRequired[str]

863 exclude_dynamic_sections: NotRequired[bool]

864```

865 

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

867| :------------------------- | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

868| `type` | Да | Должно быть `"preset"` для использования предустановленной системной подсказки |

869| `preset` | Да | Должно быть `"claude_code"` для использования системной подсказки Claude Code |

870| `append` | Нет | Дополнительные инструкции для добавления к предустановленной системной подсказке |

871| `exclude_dynamic_sections` | Нет | Переместите контекст для каждого сеанса, такой как рабочий каталог, статус git и пути памяти, из системной подсказки в первое пользовательское сообщение. Улучшает повторное использование кэша подсказок между пользователями и машинами. См. [Modify system prompts](/ru/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

872 

873### `SettingSource`

874 

875Управляет тем, какие источники конфигурации на основе файловой системы загружает SDK.

876 

877```python theme={null}

878SettingSource = Literal["user", "project", "local"]

879```

880 

881| Значение | Описание | Местоположение |

882| :---------- | :----------------------------------------------- | :---------------------------- |

883| `"user"` | Глобальные параметры пользователя | `~/.claude/settings.json` |

884| `"project"` | Общие параметры проекта (контролируемые версией) | `.claude/settings.json` |

885| `"local"` | Локальные параметры проекта (gitignored) | `.claude/settings.local.json` |

886 

887#### Поведение по умолчанию

888 

889Когда `setting_sources` опущено или `None`, `query()` загружает те же параметры файловой системы, что и Claude Code CLI: пользовательские, проектные и локальные. Управляемые параметры политики загружаются во всех случаях. См. [What settingSources does not control](/ru/agent-sdk/claude-code-features#what-settingsources-does-not-control) для входов, которые читаются независимо от этой опции, и как их отключить.

890 

891#### Почему использовать setting\_sources

892 

893**Отключить параметры файловой системы:**

894 

895```python theme={null}

896# Do not load user, project, or local settings from disk

897from claude_agent_sdk import query, ClaudeAgentOptions

898 

899async for message in query(

900 prompt="Analyze this code",

901 options=ClaudeAgentOptions(

902 setting_sources=[]

903 ),

904):

905 print(message)

906```

907 

908<Note>

909 В Python SDK 0.1.59 и более ранних версиях пустой список рассматривался так же, как опущение опции, поэтому `setting_sources=[]` не отключал параметры файловой системы. Обновитесь до более новой версии, если вам нужно, чтобы пустой список вступил в силу. TypeScript SDK не затронут.

910</Note>

911 

912**Загрузить все параметры файловой системы явно:**

913 

914```python theme={null}

915from claude_agent_sdk import query, ClaudeAgentOptions

916 

917async for message in query(

918 prompt="Analyze this code",

919 options=ClaudeAgentOptions(

920 setting_sources=["user", "project", "local"]

921 ),

922):

923 print(message)

924```

925 

926**Загрузить только определенные источники параметров:**

927 

928```python theme={null}

929# Load only project settings, ignore user and local

930async for message in query(

931 prompt="Run CI checks",

932 options=ClaudeAgentOptions(

933 setting_sources=["project"] # Only .claude/settings.json

934 ),

935):

936 print(message)

937```

938 

939**Тестирование и окружения CI:**

940 

941```python theme={null}

942# Ensure consistent behavior in CI by excluding local settings

943async for message in query(

944 prompt="Run tests",

945 options=ClaudeAgentOptions(

946 setting_sources=["project"], # Only team-shared settings

947 permission_mode="bypassPermissions",

948 ),

949):

950 print(message)

951```

952 

953**Приложения только SDK:**

954 

955```python theme={null}

956# Define everything programmatically.

957# Pass [] to opt out of filesystem setting sources.

958async for message in query(

959 prompt="Review this PR",

960 options=ClaudeAgentOptions(

961 setting_sources=[],

962 agents={...},

963 mcp_servers={...},

964 allowed_tools=["Read", "Grep", "Glob"],

965 ),

966):

967 print(message)

968```

969 

970**Загрузка инструкций проекта CLAUDE.md:**

971 

972```python theme={null}

973# Load project settings to include CLAUDE.md files

974async for message in query(

975 prompt="Add a new feature following project conventions",

976 options=ClaudeAgentOptions(

977 system_prompt={

978 "type": "preset",

979 "preset": "claude_code", # Use Claude Code's system prompt

980 },

981 setting_sources=["project"], # Loads CLAUDE.md from project

982 allowed_tools=["Read", "Write", "Edit"],

983 ),

984):

985 print(message)

986```

987 

988#### Приоритет параметров

989 

990Когда загружаются несколько источников, параметры объединяются с этим приоритетом (от наивысшего к наименьшему):

991 

9921. Локальные параметры (`.claude/settings.local.json`)

9932. Параметры проекта (`.claude/settings.json`)

9943. Параметры пользователя (`~/.claude/settings.json`)

995 

996Программные опции, такие как `agents` и `allowed_tools`, переопределяют параметры пользователя, проекта и локальной файловой системы. Управляемые параметры политики имеют приоритет над программными опциями.

997 

998### `AgentDefinition`

999 

1000Конфигурация для подагента, определенного программно.

1001 

1002```python theme={null}

1003@dataclass

1004class AgentDefinition:

1005 description: str

1006 prompt: str

1007 tools: list[str] | None = None

1008 disallowedTools: list[str] | None = None

1009 model: str | None = None

1010 skills: list[str] | None = None

1011 memory: Literal["user", "project", "local"] | None = None

1012 mcpServers: list[str | dict[str, Any]] | None = None

1013 initialPrompt: str | None = None

1014 maxTurns: int | None = None

1015 background: bool | None = None

1016 effort: Literal["low", "medium", "high", "max"] | int | None = None

1017 permissionMode: PermissionMode | None = None

1018```

1019 

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

1021| :---------------- | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1022| `description` | Да | Описание на естественном языке, когда использовать этого агента |

1023| `prompt` | Да | Системная подсказка агента |

1024| `tools` | Нет | Массив разрешенных имен инструментов. Если опущено, наследует все инструменты |

1025| `disallowedTools` | Нет | Массив имен инструментов для удаления из набора инструментов агента |

1026| `model` | Нет | Переопределение модели для этого агента. Принимает псевдоним, такой как `"sonnet"`, `"opus"`, `"haiku"` или `"inherit"`, или полный ID модели. Если опущено, использует основную модель |

1027| `skills` | Нет | Список имен skills, доступных этому агенту |

1028| `memory` | Нет | Источник памяти для этого агента: `"user"`, `"project"` или `"local"` |

1029| `mcpServers` | Нет | MCP servers, доступные этому агенту. Каждая запись - это имя сервера или встроенный словарь `{name: config}` |

1030| `initialPrompt` | Нет | Автоматически отправляется как первый ход пользователя, когда этот агент работает как основной агент потока |

1031| `maxTurns` | Нет | Максимальное количество агентских ходов перед остановкой агента |

1032| `background` | Нет | Запустите этого агента как неблокирующую фоновую задачу при вызове |

1033| `effort` | Нет | Уровень усилий рассуждения для этого агента. Принимает именованный уровень или целое число |

1034| `permissionMode` | Нет | Режим разрешений для выполнения инструментов в этом агенте. См. [`PermissionMode`](#permission-mode) |

1035 

1036<Note>

1037 Имена полей `AgentDefinition` используют camelCase, такие как `disallowedTools`, `permissionMode` и `maxTurns`. Эти имена напрямую соответствуют формату проводки, общему с TypeScript SDK. Это отличается от `ClaudeAgentOptions`, который использует Python snake\_case для эквивалентных полей верхнего уровня, таких как `disallowed_tools` и `permission_mode`. Поскольку `AgentDefinition` является dataclass, передача ключевого слова snake\_case вызывает `TypeError` во время конструирования.

1038</Note>

1039 

1040### `PermissionMode`

1041 

1042Режимы разрешений для управления выполнением инструментов.

1043 

1044```python theme={null}

1045PermissionMode = Literal[

1046 "default", # Standard permission behavior

1047 "acceptEdits", # Auto-accept file edits

1048 "plan", # Planning mode - no execution

1049 "dontAsk", # Deny anything not pre-approved instead of prompting

1050 "bypassPermissions", # Bypass all permission checks (use with caution)

1051]

1052```

1053 

1054### `CanUseTool`

1055 

1056Псевдоним типа для функций обратного вызова разрешения инструмента.

1057 

1058```python theme={null}

1059CanUseTool = Callable[

1060 [str, dict[str, Any], ToolPermissionContext], Awaitable[PermissionResult]

1061]

1062```

1063 

1064Обратный вызов получает:

1065 

1066* `tool_name`: Имя вызываемого инструмента

1067* `input_data`: Входные параметры инструмента

1068* `context`: `ToolPermissionContext` с дополнительной информацией

1069 

1070Возвращает `PermissionResult` (либо `PermissionResultAllow`, либо `PermissionResultDeny`).

1071 

1072### `ToolPermissionContext`

1073 

1074Информация контекста, передаваемая в обратные вызовы разрешения инструмента.

1075 

1076```python theme={null}

1077@dataclass

1078class ToolPermissionContext:

1079 signal: Any | None = None # Future: abort signal support

1080 suggestions: list[PermissionUpdate] = field(default_factory=list)

1081```

1082 

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

1084| :------------ | :----------------------- | :------------------------------------------------------- |

1085| `signal` | `Any \| None` | Зарезервировано для будущей поддержки сигнала прерывания |

1086| `suggestions` | `list[PermissionUpdate]` | Предложения обновления разрешений из CLI |

1087 

1088### `PermissionResult`

1089 

1090Тип объединения для результатов обратного вызова разрешения.

1091 

1092```python theme={null}

1093PermissionResult = PermissionResultAllow | PermissionResultDeny

1094```

1095 

1096### `PermissionResultAllow`

1097 

1098Результат, указывающий, что вызов инструмента должен быть разрешен.

1099 

1100```python theme={null}

1101@dataclass

1102class PermissionResultAllow:

1103 behavior: Literal["allow"] = "allow"

1104 updated_input: dict[str, Any] | None = None

1105 updated_permissions: list[PermissionUpdate] | None = None

1106```

1107 

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

1109| :-------------------- | :------------------------------- | :----------- | :------------------------------------------------- |

1110| `behavior` | `Literal["allow"]` | `"allow"` | Должно быть "allow" |

1111| `updated_input` | `dict[str, Any] \| None` | `None` | Измененный ввод для использования вместо оригинала |

1112| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | Обновления разрешений для применения |

1113 

1114### `PermissionResultDeny`

1115 

1116Результат, указывающий, что вызов инструмента должен быть отклонен.

1117 

1118```python theme={null}

1119@dataclass

1120class PermissionResultDeny:

1121 behavior: Literal["deny"] = "deny"

1122 message: str = ""

1123 interrupt: bool = False

1124```

1125 

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

1127| :---------- | :---------------- | :----------- | :----------------------------------------------------- |

1128| `behavior` | `Literal["deny"]` | `"deny"` | Должно быть "deny" |

1129| `message` | `str` | `""` | Сообщение, объясняющее, почему инструмент был отклонен |

1130| `interrupt` | `bool` | `False` | Следует ли прерывать текущее выполнение |

1131 

1132### `PermissionUpdate`

1133 

1134Конфигурация для программного обновления разрешений.

1135 

1136```python theme={null}

1137@dataclass

1138class PermissionUpdate:

1139 type: Literal[

1140 "addRules",

1141 "replaceRules",

1142 "removeRules",

1143 "setMode",

1144 "addDirectories",

1145 "removeDirectories",

1146 ]

1147 rules: list[PermissionRuleValue] | None = None

1148 behavior: Literal["allow", "deny", "ask"] | None = None

1149 mode: PermissionMode | None = None

1150 directories: list[str] | None = None

1151 destination: (

1152 Literal["userSettings", "projectSettings", "localSettings", "session"] | None

1153 ) = None

1154```

1155 

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

1157| :------------ | :---------------------------------------- | :------------------------------------------------- |

1158| `type` | `Literal[...]` | Тип операции обновления разрешений |

1159| `rules` | `list[PermissionRuleValue] \| None` | Правила для операций добавления/замены/удаления |

1160| `behavior` | `Literal["allow", "deny", "ask"] \| None` | Поведение для операций на основе правил |

1161| `mode` | `PermissionMode \| None` | Режим для операции setMode |

1162| `directories` | `list[str] \| None` | Каталоги для операций добавления/удаления каталога |

1163| `destination` | `Literal[...] \| None` | Где применить обновление разрешений |

1164 

1165### `PermissionRuleValue`

1166 

1167Правило для добавления, замены или удаления в обновлении разрешений.

1168 

1169```python theme={null}

1170@dataclass

1171class PermissionRuleValue:

1172 tool_name: str

1173 rule_content: str | None = None

1174```

1175 

1176### `ToolsPreset`

1177 

1178Конфигурация предустановленных инструментов для использования набора инструментов Claude Code по умолчанию.

1179 

1180```python theme={null}

1181class ToolsPreset(TypedDict):

1182 type: Literal["preset"]

1183 preset: Literal["claude_code"]

1184```

1185 

1186### `ThinkingConfig`

1187 

1188Управляет поведением расширенного мышления. Объединение трех конфигураций:

1189 

1190```python theme={null}

1191class ThinkingConfigAdaptive(TypedDict):

1192 type: Literal["adaptive"]

1193 

1194 

1195class ThinkingConfigEnabled(TypedDict):

1196 type: Literal["enabled"]

1197 budget_tokens: int

1198 

1199 

1200class ThinkingConfigDisabled(TypedDict):

1201 type: Literal["disabled"]

1202 

1203 

1204ThinkingConfig = ThinkingConfigAdaptive | ThinkingConfigEnabled | ThinkingConfigDisabled

1205```

1206 

1207| Вариант | Поля | Описание |

1208| :--------- | :---------------------- | :------------------------------------------------ |

1209| `adaptive` | `type` | Claude адаптивно решает, когда думать |

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

1211| `disabled` | `type` | Отключить мышление |

1212 

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

1214 

1215```python theme={null}

1216from claude_agent_sdk import ClaudeAgentOptions, ThinkingConfigEnabled

1217 

1218# Option 1: dict literal (recommended, no import needed)

1219options = ClaudeAgentOptions(thinking={"type": "enabled", "budget_tokens": 20000})

1220 

1221# Option 2: constructor-style (returns a plain dict)

1222config = ThinkingConfigEnabled(type="enabled", budget_tokens=20000)

1223print(config["budget_tokens"]) # 20000

1224# config.budget_tokens would raise AttributeError

1225```

1226 

1227### `SdkBeta`

1228 

1229Тип Literal для функций бета-версии SDK.

1230 

1231```python theme={null}

1232SdkBeta = Literal["context-1m-2025-08-07"]

1233```

1234 

1235Используйте с полем `betas` в `ClaudeAgentOptions` для включения функций бета-версии.

1236 

1237<Warning>

1238 Бета-версия `context-1m-2025-08-07` снята с производства по состоянию на 30 апреля 2026 года. Передача этого заголовка с Claude Sonnet 4.5 или Sonnet 4 не имеет эффекта, и запросы, превышающие стандартное окно контекста 200k-токенов, возвращают ошибку. Чтобы использовать окно контекста 1M-токенов, перейдите на [Claude Sonnet 4.6, Claude Opus 4.6 или Claude Opus 4.7](https://platform.claude.com/docs/en/about-claude/models/overview), которые включают контекст 1M по стандартной цене без требования заголовка бета-версии.

1239</Warning>

1240 

1241### `McpSdkServerConfig`

1242 

1243Конфигурация для SDK MCP servers, созданных с помощью `create_sdk_mcp_server()`.

1244 

1245```python theme={null}

1246class McpSdkServerConfig(TypedDict):

1247 type: Literal["sdk"]

1248 name: str

1249 instance: Any # MCP Server instance

1250```

1251 

1252### `McpServerConfig`

1253 

1254Тип объединения для конфигураций MCP server.

1255 

1256```python theme={null}

1257McpServerConfig = (

1258 McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig

1259)

1260```

1261 

1262#### `McpStdioServerConfig`

1263 

1264```python theme={null}

1265class McpStdioServerConfig(TypedDict):

1266 type: NotRequired[Literal["stdio"]] # Optional for backwards compatibility

1267 command: str

1268 args: NotRequired[list[str]]

1269 env: NotRequired[dict[str, str]]

1270```

1271 

1272#### `McpSSEServerConfig`

1273 

1274```python theme={null}

1275class McpSSEServerConfig(TypedDict):

1276 type: Literal["sse"]

1277 url: str

1278 headers: NotRequired[dict[str, str]]

1279```

1280 

1281#### `McpHttpServerConfig`

1282 

1283```python theme={null}

1284class McpHttpServerConfig(TypedDict):

1285 type: Literal["http"]

1286 url: str

1287 headers: NotRequired[dict[str, str]]

1288```

1289 

1290### `McpServerStatusConfig`

1291 

1292Конфигурация MCP server, как сообщается [`get_mcp_status()`](#methods). Это объединение всех вариантов транспорта [`McpServerConfig`](#mcp-server-config) плюс вариант `claudeai-proxy` только для вывода для servers, проксированных через claude.ai.

1293 

1294```python theme={null}

1295McpServerStatusConfig = (

1296 McpStdioServerConfig

1297 | McpSSEServerConfig

1298 | McpHttpServerConfig

1299 | McpSdkServerConfigStatus

1300 | McpClaudeAIProxyServerConfig

1301)

1302```

1303 

1304`McpSdkServerConfigStatus` - это сериализуемая форма [`McpSdkServerConfig`](#mcp-sdk-server-config) с только полями `type` (`"sdk"`) и `name` (`str`); встроенный `instance` опущен. `McpClaudeAIProxyServerConfig` имеет поля `type` (`"claudeai-proxy"`), `url` (`str`) и `id` (`str`).

1305 

1306### `McpStatusResponse`

1307 

1308Ответ от [`ClaudeSDKClient.get_mcp_status()`](#methods). Оборачивает список статусов сервера под ключом `mcpServers`.

1309 

1310```python theme={null}

1311class McpStatusResponse(TypedDict):

1312 mcpServers: list[McpServerStatus]

1313```

1314 

1315### `McpServerStatus`

1316 

1317Статус подключенного MCP server, содержащийся в [`McpStatusResponse`](#mcp-status-response).

1318 

1319```python theme={null}

1320class McpServerStatus(TypedDict):

1321 name: str

1322 status: McpServerConnectionStatus # "connected" | "failed" | "needs-auth" | "pending" | "disabled"

1323 serverInfo: NotRequired[McpServerInfo]

1324 error: NotRequired[str]

1325 config: NotRequired[McpServerStatusConfig]

1326 scope: NotRequired[str]

1327 tools: NotRequired[list[McpToolInfo]]

1328```

1329 

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

1331| :----------- | :----------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1332| `name` | `str` | Имя сервера |

1333| `status` | `str` | Один из `"connected"`, `"failed"`, `"needs-auth"`, `"pending"` или `"disabled"` |

1334| `serverInfo` | `dict` (опционально) | Имя и версия сервера (`{"name": str, "version": str}`) |

1335| `error` | `str` (опционально) | Сообщение об ошибке, если серверу не удалось подключиться |

1336| `config` | [`McpServerStatusConfig`](#mcp-server-status-config) (опционально) | Конфигурация сервера. Та же форма, что и [`McpServerConfig`](#mcp-server-config) (stdio, SSE, HTTP или SDK), плюс вариант `claudeai-proxy` для servers, подключенных через claude.ai |

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

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

1339 

1340### `SdkPluginConfig`

1341 

1342Конфигурация для загрузки plugins в SDK.

1343 

1344```python theme={null}

1345class SdkPluginConfig(TypedDict):

1346 type: Literal["local"]

1347 path: str

1348```

1349 

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

1351| :----- | :----------------- | :-------------------------------------------------------------------------------- |

1352| `type` | `Literal["local"]` | Должно быть `"local"` (в настоящее время поддерживаются только локальные plugins) |

1353| `path` | `str` | Абсолютный или относительный путь к каталогу plugin |

1354 

1355**Пример:**

1356 

1357```python theme={null}

1358plugins = [

1359 {"type": "local", "path": "./my-plugin"},

1360 {"type": "local", "path": "/absolute/path/to/plugin"},

1361]

1362```

1363 

1364Для полной информации о создании и использовании plugins см. [Plugins](/ru/agent-sdk/plugins).

1365 

1366## Типы сообщений

1367 

1368### `Message`

1369 

1370Тип объединения всех возможных сообщений.

1371 

1372```python theme={null}

1373Message = (

1374 UserMessage

1375 | AssistantMessage

1376 | SystemMessage

1377 | ResultMessage

1378 | StreamEvent

1379 | RateLimitEvent

1380)

1381```

1382 

1383### `UserMessage`

1384 

1385Сообщение пользовательского ввода.

1386 

1387```python theme={null}

1388@dataclass

1389class UserMessage:

1390 content: str | list[ContentBlock]

1391 uuid: str | None = None

1392 parent_tool_use_id: str | None = None

1393 tool_use_result: dict[str, Any] | None = None

1394```

1395 

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

1397| :------------------- | :-------------------------- | :--------------------------------------------------------------------------------------- |

1398| `content` | `str \| list[ContentBlock]` | Содержимое сообщения как текст или блоки содержимого |

1399| `uuid` | `str \| None` | Уникальный идентификатор сообщения |

1400| `parent_tool_use_id` | `str \| None` | ID использования инструмента, если это сообщение является ответом результата инструмента |

1401| `tool_use_result` | `dict[str, Any] \| None` | Данные результата инструмента, если применимо |

1402 

1403### `AssistantMessage`

1404 

1405Сообщение ответа помощника с блоками содержимого.

1406 

1407```python theme={null}

1408@dataclass

1409class AssistantMessage:

1410 content: list[ContentBlock]

1411 model: str

1412 parent_tool_use_id: str | None = None

1413 error: AssistantMessageError | None = None

1414 usage: dict[str, Any] | None = None

1415 message_id: str | None = None

1416```

1417 

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

1419| :------------------- | :------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------- |

1420| `content` | `list[ContentBlock]` | Список блоков содержимого в ответе |

1421| `model` | `str` | Модель, которая создала ответ |

1422| `parent_tool_use_id` | `str \| None` | ID использования инструмента, если это вложенный ответ |

1423| `error` | [`AssistantMessageError`](#assistant-message-error) ` \| None` | Тип ошибки, если ответ столкнулся с ошибкой |

1424| `usage` | `dict[str, Any] \| None` | Использование токенов для каждого сообщения (те же ключи, что и [`ResultMessage.usage`](#result-message)) |

1425| `message_id` | `str \| None` | ID сообщения API. Несколько сообщений из одного хода имеют одинаковый ID |

1426 

1427### `AssistantMessageError`

1428 

1429Возможные типы ошибок для сообщений помощника.

1430 

1431```python theme={null}

1432AssistantMessageError = Literal[

1433 "authentication_failed",

1434 "billing_error",

1435 "rate_limit",

1436 "invalid_request",

1437 "server_error",

1438 "max_output_tokens",

1439 "unknown",

1440]

1441```

1442 

1443### `SystemMessage`

1444 

1445Системное сообщение с метаданными.

1446 

1447```python theme={null}

1448@dataclass

1449class SystemMessage:

1450 subtype: str

1451 data: dict[str, Any]

1452```

1453 

1454### `ResultMessage`

1455 

1456Финальное сообщение результата с информацией о стоимости и использовании.

1457 

1458```python theme={null}

1459@dataclass

1460class ResultMessage:

1461 subtype: str

1462 duration_ms: int

1463 duration_api_ms: int

1464 is_error: bool

1465 num_turns: int

1466 session_id: str

1467 total_cost_usd: float | None = None

1468 usage: dict[str, Any] | None = None

1469 result: str | None = None

1470 stop_reason: str | None = None

1471 structured_output: Any = None

1472 model_usage: dict[str, Any] | None = None

1473```

1474 

1475Словарь `usage` содержит следующие ключи, если они присутствуют:

1476 

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

1478| ----------------------------- | ----- | ----------------------------------------------------- |

1479| `input_tokens` | `int` | Всего потреблено входных токенов. |

1480| `output_tokens` | `int` | Всего создано выходных токенов. |

1481| `cache_creation_input_tokens` | `int` | Токены, используемые для создания новых записей кэша. |

1482| `cache_read_input_tokens` | `int` | Токены, прочитанные из существующих записей кэша. |

1483 

1484Словарь `model_usage` отображает имена моделей на использование для каждой модели. Внутренние ключи словаря используют camelCase, потому что значение передается без изменений из базового процесса CLI, соответствуя типу TypeScript [`ModelUsage`](/ru/agent-sdk/typescript#model-usage):

1485 

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

1487| -------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1488| `inputTokens` | `int` | Входные токены для этой модели. |

1489| `outputTokens` | `int` | Выходные токены для этой модели. |

1490| `cacheReadInputTokens` | `int` | Токены чтения кэша для этой модели. |

1491| `cacheCreationInputTokens` | `int` | Токены создания кэша для этой модели. |

1492| `webSearchRequests` | `int` | Запросы веб-поиска, сделанные этой моделью. |

1493| `costUSD` | `float` | Предполагаемая стоимость в USD для этой модели, вычисленная на стороне клиента. См. [Track cost and usage](/ru/agent-sdk/cost-tracking) для предостережений выставления счетов. |

1494| `contextWindow` | `int` | Размер окна контекста для этой модели. |

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

1496 

1497### `StreamEvent`

1498 

1499Событие потока для частичных обновлений сообщений во время потоковой передачи. Получается только когда `include_partial_messages=True` в `ClaudeAgentOptions`. Импортируйте через `from claude_agent_sdk.types import StreamEvent`.

1500 

1501```python theme={null}

1502@dataclass

1503class StreamEvent:

1504 uuid: str

1505 session_id: str

1506 event: dict[str, Any] # The raw Claude API stream event

1507 parent_tool_use_id: str | None = None

1508```

1509 

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

1511| :------------------- | :--------------- | :------------------------------------------------------------------------ |

1512| `uuid` | `str` | Уникальный идентификатор для этого события |

1513| `session_id` | `str` | Идентификатор сеанса |

1514| `event` | `dict[str, Any]` | Необработанные данные события потока Claude API |

1515| `parent_tool_use_id` | `str \| None` | ID использования родительского инструмента, если это событие из подагента |

1516 

1517### `RateLimitEvent`

1518 

1519Выдается при изменении статуса ограничения скорости (например, с `"allowed"` на `"allowed_warning"`). Используйте это для предупреждения пользователей перед достижением жесткого лимита или для отката, когда статус `"rejected"`.

1520 

1521```python theme={null}

1522@dataclass

1523class RateLimitEvent:

1524 rate_limit_info: RateLimitInfo

1525 uuid: str

1526 session_id: str

1527```

1528 

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

1530| :---------------- | :---------------------------------- | :------------------------------------- |

1531| `rate_limit_info` | [`RateLimitInfo`](#rate-limit-info) | Текущее состояние ограничения скорости |

1532| `uuid` | `str` | Уникальный идентификатор события |

1533| `session_id` | `str` | Идентификатор сеанса |

1534 

1535### `RateLimitInfo`

1536 

1537Состояние ограничения скорости, переносимое [`RateLimitEvent`](#rate-limit-event).

1538 

1539```python theme={null}

1540RateLimitStatus = Literal["allowed", "allowed_warning", "rejected"]

1541RateLimitType = Literal[

1542 "five_hour", "seven_day", "seven_day_opus", "seven_day_sonnet", "overage"

1543]

1544 

1545 

1546@dataclass

1547class RateLimitInfo:

1548 status: RateLimitStatus

1549 resets_at: int | None = None

1550 rate_limit_type: RateLimitType | None = None

1551 utilization: float | None = None

1552 overage_status: RateLimitStatus | None = None

1553 overage_resets_at: int | None = None

1554 overage_disabled_reason: str | None = None

1555 raw: dict[str, Any] = field(default_factory=dict)

1556```

1557 

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

1559| :------------------------ | :------------------------ | :---------------------------------------------------------------------------------------------------------------- |

1560| `status` | `RateLimitStatus` | Текущий статус. `"allowed_warning"` означает приближение к лимиту; `"rejected"` означает, что лимит был достигнут |

1561| `resets_at` | `int \| None` | Временная метка Unix, когда окно ограничения скорости сбрасывается |

1562| `rate_limit_type` | `RateLimitType \| None` | Какое окно ограничения скорости применяется |

1563| `utilization` | `float \| None` | Доля потребленного ограничения скорости (0,0 до 1,0) |

1564| `overage_status` | `RateLimitStatus \| None` | Статус использования переплаты по мере использования, если применимо |

1565| `overage_resets_at` | `int \| None` | Временная метка Unix, когда окно переплаты сбрасывается |

1566| `overage_disabled_reason` | `str \| None` | Почему переплата недоступна, если статус `"rejected"` |

1567| `raw` | `dict[str, Any]` | Полный необработанный словарь из CLI, включая поля, не смоделированные выше |

1568 

1569### `TaskStartedMessage`

1570 

1571Выдается при запуске фоновой задачи. Фоновая задача - это все, что отслеживается вне основного хода: фоновая команда Bash, наблюдение Monitor, подагент, порожденный через инструмент Agent, или удаленный агент. Поле `task_type` говорит вам, какой. Это именование не связано с переименованием инструмента `Task` на `Agent`.

1572 

1573```python theme={null}

1574@dataclass

1575class TaskStartedMessage(SystemMessage):

1576 task_id: str

1577 description: str

1578 uuid: str

1579 session_id: str

1580 tool_use_id: str | None = None

1581 task_type: str | None = None

1582```

1583 

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

1585| :------------ | :------------ | :-------------------------------------------------------------------------------------------------------------------- |

1586| `task_id` | `str` | Уникальный идентификатор для задачи |

1587| `description` | `str` | Описание задачи |

1588| `uuid` | `str` | Уникальный идентификатор сообщения |

1589| `session_id` | `str` | Идентификатор сеанса |

1590| `tool_use_id` | `str \| None` | Связанный ID использования инструмента |

1591| `task_type` | `str \| None` | Какой вид фоновой задачи: `"local_bash"` для фонового Bash и наблюдений Monitor, `"local_agent"` или `"remote_agent"` |

1592 

1593### `TaskUsage`

1594 

1595Данные токенов и времени для фоновой задачи.

1596 

1597```python theme={null}

1598class TaskUsage(TypedDict):

1599 total_tokens: int

1600 tool_uses: int

1601 duration_ms: int

1602```

1603 

1604### `TaskProgressMessage`

1605 

1606Выдается периодически с обновлениями прогресса для выполняющейся фоновой задачи.

1607 

1608```python theme={null}

1609@dataclass

1610class TaskProgressMessage(SystemMessage):

1611 task_id: str

1612 description: str

1613 usage: TaskUsage

1614 uuid: str

1615 session_id: str

1616 tool_use_id: str | None = None

1617 last_tool_name: str | None = None

1618```

1619 

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

1621| :--------------- | :------------ | :------------------------------------------------------ |

1622| `task_id` | `str` | Уникальный идентификатор для задачи |

1623| `description` | `str` | Описание текущего статуса |

1624| `usage` | `TaskUsage` | Использование токенов для этой задачи до сих пор |

1625| `uuid` | `str` | Уникальный идентификатор сообщения |

1626| `session_id` | `str` | Идентификатор сеанса |

1627| `tool_use_id` | `str \| None` | Связанный ID использования инструмента |

1628| `last_tool_name` | `str \| None` | Имя последнего инструмента, который использовала задача |

1629 

1630### `TaskNotificationMessage`

1631 

1632Выдается при завершении, сбое или остановке фоновой задачи. Фоновые задачи включают команды Bash `run_in_background`, наблюдения Monitor и фоновые подагенты.

1633 

1634```python theme={null}

1635@dataclass

1636class TaskNotificationMessage(SystemMessage):

1637 task_id: str

1638 status: TaskNotificationStatus # "completed" | "failed" | "stopped"

1639 output_file: str

1640 summary: str

1641 uuid: str

1642 session_id: str

1643 tool_use_id: str | None = None

1644 usage: TaskUsage | None = None

1645```

1646 

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

1648| :------------ | :----------------------- | :------------------------------------------------ |

1649| `task_id` | `str` | Уникальный идентификатор для задачи |

1650| `status` | `TaskNotificationStatus` | Один из `"completed"`, `"failed"` или `"stopped"` |

1651| `output_file` | `str` | Путь к файлу вывода задачи |

1652| `summary` | `str` | Резюме результата задачи |

1653| `uuid` | `str` | Уникальный идентификатор сообщения |

1654| `session_id` | `str` | Идентификатор сеанса |

1655| `tool_use_id` | `str \| None` | Связанный ID использования инструмента |

1656| `usage` | `TaskUsage \| None` | Финальное использование токенов для задачи |

1657 

1658## Типы блоков содержимого

1659 

1660### `ContentBlock`

1661 

1662Тип объединения всех блоков содержимого.

1663 

1664```python theme={null}

1665ContentBlock = TextBlock | ThinkingBlock | ToolUseBlock | ToolResultBlock

1666```

1667 

1668### `TextBlock`

1669 

1670Блок содержимого текста.

1671 

1672```python theme={null}

1673@dataclass

1674class TextBlock:

1675 text: str

1676```

1677 

1678### `ThinkingBlock`

1679 

1680Блок содержимого мышления (для моделей с возможностью мышления).

1681 

1682```python theme={null}

1683@dataclass

1684class ThinkingBlock:

1685 thinking: str

1686 signature: str

1687```

1688 

1689### `ToolUseBlock`

1690 

1691Блок запроса использования инструмента.

1692 

1693```python theme={null}

1694@dataclass

1695class ToolUseBlock:

1696 id: str

1697 name: str

1698 input: dict[str, Any]

1699```

1700 

1701### `ToolResultBlock`

1702 

1703Блок результата выполнения инструмента.

1704 

1705```python theme={null}

1706@dataclass

1707class ToolResultBlock:

1708 tool_use_id: str

1709 content: str | list[dict[str, Any]] | None = None

1710 is_error: bool | None = None

1711```

1712 

1713## Типы ошибок

1714 

1715### `ClaudeSDKError`

1716 

1717Базовый класс исключения для всех ошибок SDK.

1718 

1719```python theme={null}

1720class ClaudeSDKError(Exception):

1721 """Base error for Claude SDK."""

1722```

1723 

1724### `CLINotFoundError`

1725 

1726Вызывается, когда Claude Code CLI не установлен или не найден.

1727 

1728```python theme={null}

1729class CLINotFoundError(CLIConnectionError):

1730 def __init__(

1731 self, message: str = "Claude Code not found", cli_path: str | None = None

1732 ):

1733 """

1734 Args:

1735 message: Error message (default: "Claude Code not found")

1736 cli_path: Optional path to the CLI that was not found

1737 """

1738```

1739 

1740### `CLIConnectionError`

1741 

1742Вызывается, когда соединение с Claude Code не удается.

1743 

1744```python theme={null}

1745class CLIConnectionError(ClaudeSDKError):

1746 """Failed to connect to Claude Code."""

1747```

1748 

1749### `ProcessError`

1750 

1751Вызывается, когда процесс Claude Code не работает.

1752 

1753```python theme={null}

1754class ProcessError(ClaudeSDKError):

1755 def __init__(

1756 self, message: str, exit_code: int | None = None, stderr: str | None = None

1757 ):

1758 self.exit_code = exit_code

1759 self.stderr = stderr

1760```

1761 

1762### `CLIJSONDecodeError`

1763 

1764Вызывается, когда разбор JSON не удается.

1765 

1766```python theme={null}

1767class CLIJSONDecodeError(ClaudeSDKError):

1768 def __init__(self, line: str, original_error: Exception):

1769 """

1770 Args:

1771 line: The line that failed to parse

1772 original_error: The original JSON decode exception

1773 """

1774 self.line = line

1775 self.original_error = original_error

1776```

1777 

1778## Типы hooks

1779 

1780Для полного руководства по использованию hooks с примерами и общими шаблонами см. [Hooks guide](/ru/agent-sdk/hooks).

1781 

1782### `HookEvent`

1783 

1784Поддерживаемые типы событий hooks.

1785 

1786```python theme={null}

1787HookEvent = Literal[

1788 "PreToolUse", # Called before tool execution

1789 "PostToolUse", # Called after tool execution

1790 "PostToolUseFailure", # Called when a tool execution fails

1791 "UserPromptSubmit", # Called when user submits a prompt

1792 "Stop", # Called when stopping execution

1793 "SubagentStop", # Called when a subagent stops

1794 "PreCompact", # Called before message compaction

1795 "Notification", # Called for notification events

1796 "SubagentStart", # Called when a subagent starts

1797 "PermissionRequest", # Called when a permission decision is needed

1798]

1799```

1800 

1801<Note>

1802 TypeScript SDK поддерживает дополнительные события hooks, которые еще недоступны в Python: `SessionStart`, `SessionEnd`, `Setup`, `TeammateIdle`, `TaskCompleted`, `ConfigChange`, `WorktreeCreate`, `WorktreeRemove` и `PostToolBatch`.

1803</Note>

1804 

1805### `HookCallback`

1806 

1807Определение типа для функций обратного вызова hooks.

1808 

1809```python theme={null}

1810HookCallback = Callable[[HookInput, str | None, HookContext], Awaitable[HookJSONOutput]]

1811```

1812 

1813Параметры:

1814 

1815* `input`: Строго типизированный ввод hooks с дискриминированными объединениями на основе `hook_event_name` (см. [`HookInput`](#hook-input))

1816* `tool_use_id`: Дополнительный идентификатор использования инструмента (для hooks, связанных с инструментами)

1817* `context`: Контекст hooks с дополнительной информацией

1818 

1819Возвращает [`HookJSONOutput`](#hook-json-output), который может содержать:

1820 

1821* `decision`: `"block"` для блокировки действия

1822* `systemMessage`: Системное сообщение для добавления в стенограмму

1823* `hookSpecificOutput`: Вывод, специфичный для hooks

1824 

1825### `HookContext`

1826 

1827Информация контекста, передаваемая в обратные вызовы hooks.

1828 

1829```python theme={null}

1830class HookContext(TypedDict):

1831 signal: Any | None # Future: abort signal support

1832```

1833 

1834### `HookMatcher`

1835 

1836Конфигурация для сопоставления hooks с определенными событиями или инструментами.

1837 

1838```python theme={null}

1839@dataclass

1840class HookMatcher:

1841 matcher: str | None = (

1842 None # Tool name or pattern to match (e.g., "Bash", "Write|Edit")

1843 )

1844 hooks: list[HookCallback] = field(

1845 default_factory=list

1846 ) # List of callbacks to execute

1847 timeout: float | None = (

1848 None # Timeout in seconds for all hooks in this matcher (default: 60)

1849 )

1850```

1851 

1852### `HookInput`

1853 

1854Тип объединения всех типов ввода hooks. Фактический тип зависит от поля `hook_event_name`.

1855 

1856```python theme={null}

1857HookInput = (

1858 PreToolUseHookInput

1859 | PostToolUseHookInput

1860 | PostToolUseFailureHookInput

1861 | UserPromptSubmitHookInput

1862 | StopHookInput

1863 | SubagentStopHookInput

1864 | PreCompactHookInput

1865 | NotificationHookInput

1866 | SubagentStartHookInput

1867 | PermissionRequestHookInput

1868)

1869```

1870 

1871### `BaseHookInput`

1872 

1873Базовые поля, присутствующие во всех типах ввода hooks.

1874 

1875```python theme={null}

1876class BaseHookInput(TypedDict):

1877 session_id: str

1878 transcript_path: str

1879 cwd: str

1880 permission_mode: NotRequired[str]

1881```

1882 

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

1884| :---------------- | :------------------ | :------------------------------ |

1885| `session_id` | `str` | Текущий идентификатор сеанса |

1886| `transcript_path` | `str` | Путь к файлу стенограммы сеанса |

1887| `cwd` | `str` | Текущий рабочий каталог |

1888| `permission_mode` | `str` (опционально) | Текущий режим разрешений |

1889 

1890### `PreToolUseHookInput`

1891 

1892Входные данные для событий hooks `PreToolUse`.

1893 

1894```python theme={null}

1895class PreToolUseHookInput(BaseHookInput):

1896 hook_event_name: Literal["PreToolUse"]

1897 tool_name: str

1898 tool_input: dict[str, Any]

1899 tool_use_id: str

1900 agent_id: NotRequired[str]

1901 agent_type: NotRequired[str]

1902```

1903 

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

1905| :---------------- | :---------------------- | :------------------------------------------------------------------------------ |

1906| `hook_event_name` | `Literal["PreToolUse"]` | Всегда "PreToolUse" |

1907| `tool_name` | `str` | Имя инструмента, который вот-вот будет выполнен |

1908| `tool_input` | `dict[str, Any]` | Входные параметры для инструмента |

1909| `tool_use_id` | `str` | Уникальный идентификатор для этого использования инструмента |

1910| `agent_id` | `str` (опционально) | Идентификатор подагента, присутствует, когда hooks срабатывает внутри подагента |

1911| `agent_type` | `str` (опционально) | Тип подагента, присутствует, когда hooks срабатывает внутри подагента |

1912 

1913### `PostToolUseHookInput`

1914 

1915Входные данные для событий hooks `PostToolUse`.

1916 

1917```python theme={null}

1918class PostToolUseHookInput(BaseHookInput):

1919 hook_event_name: Literal["PostToolUse"]

1920 tool_name: str

1921 tool_input: dict[str, Any]

1922 tool_response: Any

1923 tool_use_id: str

1924 agent_id: NotRequired[str]

1925 agent_type: NotRequired[str]

1926```

1927 

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

1929| :---------------- | :----------------------- | :------------------------------------------------------------------------------ |

1930| `hook_event_name` | `Literal["PostToolUse"]` | Всегда "PostToolUse" |

1931| `tool_name` | `str` | Имя выполненного инструмента |

1932| `tool_input` | `dict[str, Any]` | Использованные входные параметры |

1933| `tool_response` | `Any` | Ответ от выполнения инструмента |

1934| `tool_use_id` | `str` | Уникальный идентификатор для этого использования инструмента |

1935| `agent_id` | `str` (опционально) | Идентификатор подагента, присутствует, когда hooks срабатывает внутри подагента |

1936| `agent_type` | `str` (опционально) | Тип подагента, присутствует, когда hooks срабатывает внутри подагента |

1937 

1938### `PostToolUseFailureHookInput`

1939 

1940Входные данные для событий hooks `PostToolUseFailure`. Вызывается, когда выполнение инструмента не удается.

1941 

1942```python theme={null}

1943class PostToolUseFailureHookInput(BaseHookInput):

1944 hook_event_name: Literal["PostToolUseFailure"]

1945 tool_name: str

1946 tool_input: dict[str, Any]

1947 tool_use_id: str

1948 error: str

1949 is_interrupt: NotRequired[bool]

1950 agent_id: NotRequired[str]

1951 agent_type: NotRequired[str]

1952```

1953 

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

1955| :---------------- | :------------------------------ | :------------------------------------------------------------------------------ |

1956| `hook_event_name` | `Literal["PostToolUseFailure"]` | Всегда "PostToolUseFailure" |

1957| `tool_name` | `str` | Имя инструмента, который не удался |

1958| `tool_input` | `dict[str, Any]` | Использованные входные параметры |

1959| `tool_use_id` | `str` | Уникальный идентификатор для этого использования инструмента |

1960| `error` | `str` | Сообщение об ошибке из неудачного выполнения |

1961| `is_interrupt` | `bool` (опционально) | Была ли ошибка вызвана прерыванием |

1962| `agent_id` | `str` (опционально) | Идентификатор подагента, присутствует, когда hooks срабатывает внутри подагента |

1963| `agent_type` | `str` (опционально) | Тип подагента, присутствует, когда hooks срабатывает внутри подагента |

1964 

1965### `UserPromptSubmitHookInput`

1966 

1967Входные данные для событий hooks `UserPromptSubmit`.

1968 

1969```python theme={null}

1970class UserPromptSubmitHookInput(BaseHookInput):

1971 hook_event_name: Literal["UserPromptSubmit"]

1972 prompt: str

1973```

1974 

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

1976| :---------------- | :---------------------------- | :----------------------------------- |

1977| `hook_event_name` | `Literal["UserPromptSubmit"]` | Всегда "UserPromptSubmit" |

1978| `prompt` | `str` | Отправленная пользователем подсказка |

1979 

1980### `StopHookInput`

1981 

1982Входные данные для событий hooks `Stop`.

1983 

1984```python theme={null}

1985class StopHookInput(BaseHookInput):

1986 hook_event_name: Literal["Stop"]

1987 stop_hook_active: bool

1988```

1989 

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

1991| :----------------- | :---------------- | :------------------------- |

1992| `hook_event_name` | `Literal["Stop"]` | Всегда "Stop" |

1993| `stop_hook_active` | `bool` | Активен ли hooks остановки |

1994 

1995### `SubagentStopHookInput`

1996 

1997Входные данные для событий hooks `SubagentStop`.

1998 

1999```python theme={null}

2000class SubagentStopHookInput(BaseHookInput):

2001 hook_event_name: Literal["SubagentStop"]

2002 stop_hook_active: bool

2003 agent_id: str

2004 agent_transcript_path: str

2005 agent_type: str

2006```

2007 

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

2009| :---------------------- | :------------------------ | :--------------------------------- |

2010| `hook_event_name` | `Literal["SubagentStop"]` | Всегда "SubagentStop" |

2011| `stop_hook_active` | `bool` | Активен ли hooks остановки |

2012| `agent_id` | `str` | Уникальный идентификатор подагента |

2013| `agent_transcript_path` | `str` | Путь к файлу стенограммы подагента |

2014| `agent_type` | `str` | Тип подагента |

2015 

2016### `PreCompactHookInput`

2017 

2018Входные данные для событий hooks `PreCompact`.

2019 

2020```python theme={null}

2021class PreCompactHookInput(BaseHookInput):

2022 hook_event_name: Literal["PreCompact"]

2023 trigger: Literal["manual", "auto"]

2024 custom_instructions: str | None

2025```

2026 

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

2028| :-------------------- | :-------------------------- | :----------------------------------------- |

2029| `hook_event_name` | `Literal["PreCompact"]` | Всегда "PreCompact" |

2030| `trigger` | `Literal["manual", "auto"]` | Что вызвало уплотнение |

2031| `custom_instructions` | `str \| None` | Пользовательские инструкции для уплотнения |

2032 

2033### `NotificationHookInput`

2034 

2035Входные данные для событий hooks `Notification`.

2036 

2037```python theme={null}

2038class NotificationHookInput(BaseHookInput):

2039 hook_event_name: Literal["Notification"]

2040 message: str

2041 title: NotRequired[str]

2042 notification_type: str

2043```

2044 

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

2046| :------------------ | :------------------------ | :------------------------------- |

2047| `hook_event_name` | `Literal["Notification"]` | Всегда "Notification" |

2048| `message` | `str` | Содержимое сообщения уведомления |

2049| `title` | `str` (опционально) | Название уведомления |

2050| `notification_type` | `str` | Тип уведомления |

2051 

2052### `SubagentStartHookInput`

2053 

2054Входные данные для событий hooks `SubagentStart`.

2055 

2056```python theme={null}

2057class SubagentStartHookInput(BaseHookInput):

2058 hook_event_name: Literal["SubagentStart"]

2059 agent_id: str

2060 agent_type: str

2061```

2062 

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

2064| :---------------- | :------------------------- | :--------------------------------- |

2065| `hook_event_name` | `Literal["SubagentStart"]` | Всегда "SubagentStart" |

2066| `agent_id` | `str` | Уникальный идентификатор подагента |

2067| `agent_type` | `str` | Тип подагента |

2068 

2069### `PermissionRequestHookInput`

2070 

2071Входные данные для событий hooks `PermissionRequest`. Позволяет hooks программно обрабатывать решения разрешений.

2072 

2073```python theme={null}

2074class PermissionRequestHookInput(BaseHookInput):

2075 hook_event_name: Literal["PermissionRequest"]

2076 tool_name: str

2077 tool_input: dict[str, Any]

2078 permission_suggestions: NotRequired[list[Any]]

2079```

2080 

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

2082| :----------------------- | :----------------------------- | :----------------------------------------- |

2083| `hook_event_name` | `Literal["PermissionRequest"]` | Всегда "PermissionRequest" |

2084| `tool_name` | `str` | Имя инструмента, запрашивающего разрешение |

2085| `tool_input` | `dict[str, Any]` | Входные параметры для инструмента |

2086| `permission_suggestions` | `list[Any]` (опционально) | Предложенные обновления разрешений из CLI |

2087 

2088### `HookJSONOutput`

2089 

2090Тип объединения для возвращаемых значений обратного вызова hooks.

2091 

2092```python theme={null}

2093HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput

2094```

2095 

2096#### `SyncHookJSONOutput`

2097 

2098Синхронный вывод hooks с полями управления и решения.

2099 

2100```python theme={null}

2101class SyncHookJSONOutput(TypedDict):

2102 # Control fields

2103 continue_: NotRequired[bool] # Whether to proceed (default: True)

2104 suppressOutput: NotRequired[bool] # Hide stdout from transcript

2105 stopReason: NotRequired[str] # Message when continue is False

2106 

2107 # Decision fields

2108 decision: NotRequired[Literal["block"]]

2109 systemMessage: NotRequired[str] # Warning message for user

2110 reason: NotRequired[str] # Feedback for Claude

2111 

2112 # Hook-specific output

2113 hookSpecificOutput: NotRequired[HookSpecificOutput]

2114```

2115 

2116<Note>

2117 Используйте `continue_` (с подчеркиванием) в коде Python. Он автоматически преобразуется в `continue` при отправке в CLI.

2118</Note>

2119 

2120#### `HookSpecificOutput`

2121 

2122`TypedDict`, содержащий имя события hooks и поля, специфичные для события. Форма зависит от значения `hookEventName`. Для полных деталей доступных полей для каждого события hooks см. [Control execution with hooks](/ru/agent-sdk/hooks#outputs).

2123 

2124Дискриминированное объединение типов вывода, специфичных для события. Поле `hookEventName` определяет, какие поля действительны.

2125 

2126```python theme={null}

2127class PreToolUseHookSpecificOutput(TypedDict):

2128 hookEventName: Literal["PreToolUse"]

2129 permissionDecision: NotRequired[Literal["allow", "deny", "ask"]]

2130 permissionDecisionReason: NotRequired[str]

2131 updatedInput: NotRequired[dict[str, Any]]

2132 additionalContext: NotRequired[str]

2133 

2134 

2135class PostToolUseHookSpecificOutput(TypedDict):

2136 hookEventName: Literal["PostToolUse"]

2137 additionalContext: NotRequired[str]

2138 updatedMCPToolOutput: NotRequired[Any]

2139 

2140 

2141class PostToolUseFailureHookSpecificOutput(TypedDict):

2142 hookEventName: Literal["PostToolUseFailure"]

2143 additionalContext: NotRequired[str]

2144 

2145 

2146class UserPromptSubmitHookSpecificOutput(TypedDict):

2147 hookEventName: Literal["UserPromptSubmit"]

2148 additionalContext: NotRequired[str]

2149 

2150 

2151class NotificationHookSpecificOutput(TypedDict):

2152 hookEventName: Literal["Notification"]

2153 additionalContext: NotRequired[str]

2154 

2155 

2156class SubagentStartHookSpecificOutput(TypedDict):

2157 hookEventName: Literal["SubagentStart"]

2158 additionalContext: NotRequired[str]

2159 

2160 

2161class PermissionRequestHookSpecificOutput(TypedDict):

2162 hookEventName: Literal["PermissionRequest"]

2163 decision: dict[str, Any]

2164 

2165 

2166HookSpecificOutput = (

2167 PreToolUseHookSpecificOutput

2168 | PostToolUseHookSpecificOutput

2169 | PostToolUseFailureHookSpecificOutput

2170 | UserPromptSubmitHookSpecificOutput

2171 | NotificationHookSpecificOutput

2172 | SubagentStartHookSpecificOutput

2173 | PermissionRequestHookSpecificOutput

2174)

2175```

2176 

2177#### `AsyncHookJSONOutput`

2178 

2179Асинхронный вывод hooks, который откладывает выполнение hooks.

2180 

2181```python theme={null}

2182class AsyncHookJSONOutput(TypedDict):

2183 async_: Literal[True] # Set to True to defer execution

2184 asyncTimeout: NotRequired[int] # Timeout in milliseconds

2185```

2186 

2187<Note>

2188 Используйте `async_` (с подчеркиванием) в коде Python. Он автоматически преобразуется в `async` при отправке в CLI.

2189</Note>

2190 

2191### Пример использования hooks

2192 

2193Этот пример регистрирует два hooks: один, который блокирует опасные команды bash, такие как `rm -rf /`, и другой, который регистрирует все использование инструментов для аудита. Hooks безопасности работает только на командах Bash (через `matcher`), в то время как hooks логирования работает на всех инструментах.

2194 

2195```python theme={null}

2196from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher, HookContext

2197from typing import Any

2198 

2199 

2200async def validate_bash_command(

2201 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2202) -> dict[str, Any]:

2203 """Validate and potentially block dangerous bash commands."""

2204 if input_data["tool_name"] == "Bash":

2205 command = input_data["tool_input"].get("command", "")

2206 if "rm -rf /" in command:

2207 return {

2208 "hookSpecificOutput": {

2209 "hookEventName": "PreToolUse",

2210 "permissionDecision": "deny",

2211 "permissionDecisionReason": "Dangerous command blocked",

2212 }

2213 }

2214 return {}

2215 

2216 

2217async def log_tool_use(

2218 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2219) -> dict[str, Any]:

2220 """Log all tool usage for auditing."""

2221 print(f"Tool used: {input_data.get('tool_name')}")

2222 return {}

2223 

2224 

2225options = ClaudeAgentOptions(

2226 hooks={

2227 "PreToolUse": [

2228 HookMatcher(

2229 matcher="Bash", hooks=[validate_bash_command], timeout=120

2230 ), # 2 min for validation

2231 HookMatcher(

2232 hooks=[log_tool_use]

2233 ), # Applies to all tools (default 60s timeout)

2234 ],

2235 "PostToolUse": [HookMatcher(hooks=[log_tool_use])],

2236 }

2237)

2238 

2239async for message in query(prompt="Analyze this codebase", options=options):

2240 print(message)

2241```

2242 

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

2244 

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

2246 

2247### Agent

2248 

2249**Имя инструмента:** `Agent` (ранее `Task`, который все еще принимается как псевдоним)

2250 

2251**Ввод:**

2252 

2253```python theme={null}

2254{

2255 "description": str, # A short (3-5 word) description of the task

2256 "prompt": str, # The task for the agent to perform

2257 "subagent_type": str, # The type of specialized agent to use

2258}

2259```

2260 

2261**Вывод:**

2262 

2263```python theme={null}

2264{

2265 "result": str, # Final result from the subagent

2266 "usage": dict | None, # Token usage statistics

2267 "total_cost_usd": float | None, # Estimated total cost in USD

2268 "duration_ms": int | None, # Execution duration in milliseconds

2269}

2270```

2271 

2272### AskUserQuestion

2273 

2274**Имя инструмента:** `AskUserQuestion`

2275 

2276Задает пользователю уточняющие вопросы во время выполнения. См. [Handle approvals and user input](/ru/agent-sdk/user-input#handle-clarifying-questions) для деталей использования.

2277 

2278**Ввод:**

2279 

2280```python theme={null}

2281{

2282 "questions": [ # Questions to ask the user (1-4 questions)

2283 {

2284 "question": str, # The complete question to ask the user

2285 "header": str, # Very short label displayed as a chip/tag (max 12 chars)

2286 "options": [ # The available choices (2-4 options)

2287 {

2288 "label": str, # Display text for this option (1-5 words)

2289 "description": str, # Explanation of what this option means

2290 }

2291 ],

2292 "multiSelect": bool, # Set to true to allow multiple selections

2293 }

2294 ],

2295 "answers": dict | None, # User answers populated by the permission system

2296}

2297```

2298 

2299**Вывод:**

2300 

2301```python theme={null}

2302{

2303 "questions": [ # The questions that were asked

2304 {

2305 "question": str,

2306 "header": str,

2307 "options": [{"label": str, "description": str}],

2308 "multiSelect": bool,

2309 }

2310 ],

2311 "answers": dict[str, str], # Maps question text to answer string

2312 # Multi-select answers are comma-separated

2313}

2314```

2315 

2316### Bash

2317 

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

2319 

2320**Ввод:**

2321 

2322```python theme={null}

2323{

2324 "command": str, # The command to execute

2325 "timeout": int | None, # Optional timeout in milliseconds (max 600000)

2326 "description": str | None, # Clear, concise description (5-10 words)

2327 "run_in_background": bool | None, # Set to true to run in background

2328}

2329```

2330 

2331**Вывод:**

2332 

2333```python theme={null}

2334{

2335 "output": str, # Combined stdout and stderr output

2336 "exitCode": int, # Exit code of the command

2337 "killed": bool | None, # Whether command was killed due to timeout

2338 "shellId": str | None, # Shell ID for background processes

2339}

2340```

2341 

2342### Monitor

2343 

2344**Имя инструмента:** `Monitor`

2345 

2346Запускает фоновый скрипт и доставляет каждую строку stdout в Claude как событие, чтобы он мог реагировать без опроса. Monitor следует тем же правилам разрешений, что и Bash. См. [Monitor tool reference](/ru/tools-reference#monitor-tool) для поведения и доступности поставщика.

2347 

2348**Ввод:**

2349 

2350```python theme={null}

2351{

2352 "command": str, # Shell script; each stdout line is an event, exit ends the watch

2353 "description": str, # Short description shown in notifications

2354 "timeout_ms": int | None, # Kill after this deadline (default 300000, max 3600000)

2355 "persistent": bool | None, # Run for the lifetime of the session; stop with TaskStop

2356}

2357```

2358 

2359**Вывод:**

2360 

2361```python theme={null}

2362{

2363 "taskId": str, # ID of the background monitor task

2364 "timeoutMs": int, # Timeout deadline in milliseconds (0 when persistent)

2365 "persistent": bool | None, # True when running until TaskStop or session end

2366}

2367```

2368 

2369### Edit

2370 

2371**Имя инструмента:** `Edit`

2372 

2373**Ввод:**

2374 

2375```python theme={null}

2376{

2377 "file_path": str, # The absolute path to the file to modify

2378 "old_string": str, # The text to replace

2379 "new_string": str, # The text to replace it with

2380 "replace_all": bool | None, # Replace all occurrences (default False)

2381}

2382```

2383 

2384**Вывод:**

2385 

2386```python theme={null}

2387{

2388 "message": str, # Confirmation message

2389 "replacements": int, # Number of replacements made

2390 "file_path": str, # File path that was edited

2391}

2392```

2393 

2394### Read

2395 

2396**Имя инструмента:** `Read`

2397 

2398**Ввод:**

2399 

2400```python theme={null}

2401{

2402 "file_path": str, # The absolute path to the file to read

2403 "offset": int | None, # The line number to start reading from

2404 "limit": int | None, # The number of lines to read

2405}

2406```

2407 

2408**Вывод (текстовые файлы):**

2409 

2410```python theme={null}

2411{

2412 "content": str, # File contents with line numbers

2413 "total_lines": int, # Total number of lines in file

2414 "lines_returned": int, # Lines actually returned

2415}

2416```

2417 

2418**Вывод (изображения):**

2419 

2420```python theme={null}

2421{

2422 "image": str, # Base64 encoded image data

2423 "mime_type": str, # Image MIME type

2424 "file_size": int, # File size in bytes

2425}

2426```

2427 

2428### Write

2429 

2430**Имя инструмента:** `Write`

2431 

2432**Ввод:**

2433 

2434```python theme={null}

2435{

2436 "file_path": str, # The absolute path to the file to write

2437 "content": str, # The content to write to the file

2438}

2439```

2440 

2441**Вывод:**

2442 

2443```python theme={null}

2444{

2445 "message": str, # Success message

2446 "bytes_written": int, # Number of bytes written

2447 "file_path": str, # File path that was written

2448}

2449```

2450 

2451### Glob

2452 

2453**Имя инструмента:** `Glob`

2454 

2455**Ввод:**

2456 

2457```python theme={null}

2458{

2459 "pattern": str, # The glob pattern to match files against

2460 "path": str | None, # The directory to search in (defaults to cwd)

2461}

2462```

2463 

2464**Вывод:**

2465 

2466```python theme={null}

2467{

2468 "matches": list[str], # Array of matching file paths

2469 "count": int, # Number of matches found

2470 "search_path": str, # Search directory used

2471}

2472```

2473 

2474### Grep

2475 

2476**Имя инструмента:** `Grep`

2477 

2478**Ввод:**

2479 

2480```python theme={null}

2481{

2482 "pattern": str, # The regular expression pattern

2483 "path": str | None, # File or directory to search in

2484 "glob": str | None, # Glob pattern to filter files

2485 "type": str | None, # File type to search

2486 "output_mode": str | None, # "content", "files_with_matches", or "count"

2487 "-i": bool | None, # Case insensitive search

2488 "-n": bool | None, # Show line numbers

2489 "-B": int | None, # Lines to show before each match

2490 "-A": int | None, # Lines to show after each match

2491 "-C": int | None, # Lines to show before and after

2492 "head_limit": int | None, # Limit output to first N lines/entries

2493 "multiline": bool | None, # Enable multiline mode

2494}

2495```

2496 

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

2498 

2499```python theme={null}

2500{

2501 "matches": [

2502 {

2503 "file": str,

2504 "line_number": int | None,

2505 "line": str,

2506 "before_context": list[str] | None,

2507 "after_context": list[str] | None,

2508 }

2509 ],

2510 "total_matches": int,

2511}

2512```

2513 

2514**Вывод (режим files\_with\_matches):**

2515 

2516```python theme={null}

2517{

2518 "files": list[str], # Files containing matches

2519 "count": int, # Number of files with matches

2520}

2521```

2522 

2523### NotebookEdit

2524 

2525**Имя инструмента:** `NotebookEdit`

2526 

2527**Ввод:**

2528 

2529```python theme={null}

2530{

2531 "notebook_path": str, # Absolute path to the Jupyter notebook

2532 "cell_id": str | None, # The ID of the cell to edit

2533 "new_source": str, # The new source for the cell

2534 "cell_type": "code" | "markdown" | None, # The type of the cell

2535 "edit_mode": "replace" | "insert" | "delete" | None, # Edit operation type

2536}

2537```

2538 

2539**Вывод:**

2540 

2541```python theme={null}

2542{

2543 "message": str, # Success message

2544 "edit_type": "replaced" | "inserted" | "deleted", # Type of edit performed

2545 "cell_id": str | None, # Cell ID that was affected

2546 "total_cells": int, # Total cells in notebook after edit

2547}

2548```

2549 

2550### WebFetch

2551 

2552**Имя инструмента:** `WebFetch`

2553 

2554**Ввод:**

2555 

2556```python theme={null}

2557{

2558 "url": str, # The URL to fetch content from

2559 "prompt": str, # The prompt to run on the fetched content

2560}

2561```

2562 

2563**Вывод:**

2564 

2565```python theme={null}

2566{

2567 "response": str, # AI model's response to the prompt

2568 "url": str, # URL that was fetched

2569 "final_url": str | None, # Final URL after redirects

2570 "status_code": int | None, # HTTP status code

2571}

2572```

2573 

2574### WebSearch

2575 

2576**Имя инструмента:** `WebSearch`

2577 

2578**Ввод:**

2579 

2580```python theme={null}

2581{

2582 "query": str, # The search query to use

2583 "allowed_domains": list[str] | None, # Only include results from these domains

2584 "blocked_domains": list[str] | None, # Never include results from these domains

2585}

2586```

2587 

2588**Вывод:**

2589 

2590```python theme={null}

2591{

2592 "results": [{"title": str, "url": str, "snippet": str, "metadata": dict | None}],

2593 "total_results": int,

2594 "query": str,

2595}

2596```

2597 

2598### TodoWrite

2599 

2600**Имя инструмента:** `TodoWrite`

2601 

2602**Ввод:**

2603 

2604```python theme={null}

2605{

2606 "todos": [

2607 {

2608 "content": str, # The task description

2609 "status": "pending" | "in_progress" | "completed", # Task status

2610 "activeForm": str, # Active form of the description

2611 }

2612 ]

2613}

2614```

2615 

2616**Вывод:**

2617 

2618```python theme={null}

2619{

2620 "message": str, # Success message

2621 "stats": {"total": int, "pending": int, "in_progress": int, "completed": int},

2622}

2623```

2624 

2625### BashOutput

2626 

2627**Имя инструмента:** `BashOutput`

2628 

2629**Ввод:**

2630 

2631```python theme={null}

2632{

2633 "bash_id": str, # The ID of the background shell

2634 "filter": str | None, # Optional regex to filter output lines

2635}

2636```

2637 

2638**Вывод:**

2639 

2640```python theme={null}

2641{

2642 "output": str, # New output since last check

2643 "status": "running" | "completed" | "failed", # Current shell status

2644 "exitCode": int | None, # Exit code when completed

2645}

2646```

2647 

2648### KillBash

2649 

2650**Имя инструмента:** `KillBash`

2651 

2652**Ввод:**

2653 

2654```python theme={null}

2655{

2656 "shell_id": str # The ID of the background shell to kill

2657}

2658```

2659 

2660**Вывод:**

2661 

2662```python theme={null}

2663{

2664 "message": str, # Success message

2665 "shell_id": str, # ID of the killed shell

2666}

2667```

2668 

2669### ExitPlanMode

2670 

2671**Имя инструмента:** `ExitPlanMode`

2672 

2673**Ввод:**

2674 

2675```python theme={null}

2676{

2677 "plan": str # The plan to run by the user for approval

2678}

2679```

2680 

2681**Вывод:**

2682 

2683```python theme={null}

2684{

2685 "message": str, # Confirmation message

2686 "approved": bool | None, # Whether user approved the plan

2687}

2688```

2689 

2690### ListMcpResources

2691 

2692**Имя инструмента:** `ListMcpResources`

2693 

2694**Ввод:**

2695 

2696```python theme={null}

2697{

2698 "server": str | None # Optional server name to filter resources by

2699}

2700```

2701 

2702**Вывод:**

2703 

2704```python theme={null}

2705{

2706 "resources": [

2707 {

2708 "uri": str,

2709 "name": str,

2710 "description": str | None,

2711 "mimeType": str | None,

2712 "server": str,

2713 }

2714 ],

2715 "total": int,

2716}

2717```

2718 

2719### ReadMcpResource

2720 

2721**Имя инструмента:** `ReadMcpResource`

2722 

2723**Ввод:**

2724 

2725```python theme={null}

2726{

2727 "server": str, # The MCP server name

2728 "uri": str, # The resource URI to read

2729}

2730```

2731 

2732**Вывод:**

2733 

2734```python theme={null}

2735{

2736 "contents": [

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

2738 ],

2739 "server": str,

2740}

2741```

2742 

2743## Расширенные функции с ClaudeSDKClient

2744 

2745### Построение интерфейса непрерывного разговора

2746 

2747```python theme={null}

2748from claude_agent_sdk import (

2749 ClaudeSDKClient,

2750 ClaudeAgentOptions,

2751 AssistantMessage,

2752 TextBlock,

2753)

2754import asyncio

2755 

2756 

2757class ConversationSession:

2758 """Maintains a single conversation session with Claude."""

2759 

2760 def __init__(self, options: ClaudeAgentOptions | None = None):

2761 self.client = ClaudeSDKClient(options)

2762 self.turn_count = 0

2763 

2764 async def start(self):

2765 await self.client.connect()

2766 print("Starting conversation session. Claude will remember context.")

2767 print(

2768 "Commands: 'exit' to quit, 'interrupt' to stop current task, 'new' for new session"

2769 )

2770 

2771 while True:

2772 user_input = input(f"\n[Turn {self.turn_count + 1}] You: ")

2773 

2774 if user_input.lower() == "exit":

2775 break

2776 elif user_input.lower() == "interrupt":

2777 await self.client.interrupt()

2778 print("Task interrupted!")

2779 continue

2780 elif user_input.lower() == "new":

2781 # Disconnect and reconnect for a fresh session

2782 await self.client.disconnect()

2783 await self.client.connect()

2784 self.turn_count = 0

2785 print("Started new conversation session (previous context cleared)")

2786 continue

2787 

2788 # Send message - the session retains all previous messages

2789 await self.client.query(user_input)

2790 self.turn_count += 1

2791 

2792 # Process response

2793 print(f"[Turn {self.turn_count}] Claude: ", end="")

2794 async for message in self.client.receive_response():

2795 if isinstance(message, AssistantMessage):

2796 for block in message.content:

2797 if isinstance(block, TextBlock):

2798 print(block.text, end="")

2799 print() # New line after response

2800 

2801 await self.client.disconnect()

2802 print(f"Conversation ended after {self.turn_count} turns.")

2803 

2804 

2805async def main():

2806 options = ClaudeAgentOptions(

2807 allowed_tools=["Read", "Write", "Bash"], permission_mode="acceptEdits"

2808 )

2809 session = ConversationSession(options)

2810 await session.start()

2811 

2812 

2813# Example conversation:

2814# Turn 1 - You: "Create a file called hello.py"

2815# Turn 1 - Claude: "I'll create a hello.py file for you..."

2816# Turn 2 - You: "What's in that file?"

2817# Turn 2 - Claude: "The hello.py file I just created contains..." (remembers!)

2818# Turn 3 - You: "Add a main function to it"

2819# Turn 3 - Claude: "I'll add a main function to hello.py..." (knows which file!)

2820 

2821asyncio.run(main())

2822```

2823 

2824### Использование hooks для модификации поведения

2825 

2826```python theme={null}

2827from claude_agent_sdk import (

2828 ClaudeSDKClient,

2829 ClaudeAgentOptions,

2830 HookMatcher,

2831 HookContext,

2832)

2833import asyncio

2834from typing import Any

2835 

2836 

2837async def pre_tool_logger(

2838 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2839) -> dict[str, Any]:

2840 """Log all tool usage before execution."""

2841 tool_name = input_data.get("tool_name", "unknown")

2842 print(f"[PRE-TOOL] About to use: {tool_name}")

2843 

2844 # You can modify or block the tool execution here

2845 if tool_name == "Bash" and "rm -rf" in str(input_data.get("tool_input", {})):

2846 return {

2847 "hookSpecificOutput": {

2848 "hookEventName": "PreToolUse",

2849 "permissionDecision": "deny",

2850 "permissionDecisionReason": "Dangerous command blocked",

2851 }

2852 }

2853 return {}

2854 

2855 

2856async def post_tool_logger(

2857 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2858) -> dict[str, Any]:

2859 """Log results after tool execution."""

2860 tool_name = input_data.get("tool_name", "unknown")

2861 print(f"[POST-TOOL] Completed: {tool_name}")

2862 return {}

2863 

2864 

2865async def user_prompt_modifier(

2866 input_data: dict[str, Any], tool_use_id: str | None, context: HookContext

2867) -> dict[str, Any]:

2868 """Add context to user prompts."""

2869 original_prompt = input_data.get("prompt", "")

2870 

2871 # Add a timestamp as additional context for Claude to see

2872 from datetime import datetime

2873 

2874 timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

2875 

2876 return {

2877 "hookSpecificOutput": {

2878 "hookEventName": "UserPromptSubmit",

2879 "additionalContext": f"[Submitted at {timestamp}] Original prompt: {original_prompt}",

2880 }

2881 }

2882 

2883 

2884async def main():

2885 options = ClaudeAgentOptions(

2886 hooks={

2887 "PreToolUse": [

2888 HookMatcher(hooks=[pre_tool_logger]),

2889 HookMatcher(matcher="Bash", hooks=[pre_tool_logger]),

2890 ],

2891 "PostToolUse": [HookMatcher(hooks=[post_tool_logger])],

2892 "UserPromptSubmit": [HookMatcher(hooks=[user_prompt_modifier])],

2893 },

2894 allowed_tools=["Read", "Write", "Bash"],

2895 )

2896 

2897 async with ClaudeSDKClient(options=options) as client:

2898 await client.query("List files in current directory")

2899 

2900 async for message in client.receive_response():

2901 # Hooks will automatically log tool usage

2902 pass

2903 

2904 

2905asyncio.run(main())

2906```

2907 

2908### Мониторинг прогресса в реальном времени

2909 

2910```python theme={null}

2911from claude_agent_sdk import (

2912 ClaudeSDKClient,

2913 ClaudeAgentOptions,

2914 AssistantMessage,

2915 ToolUseBlock,

2916 ToolResultBlock,

2917 TextBlock,

2918)

2919import asyncio

2920 

2921 

2922async def monitor_progress():

2923 options = ClaudeAgentOptions(

2924 allowed_tools=["Write", "Bash"], permission_mode="acceptEdits"

2925 )

2926 

2927 async with ClaudeSDKClient(options=options) as client:

2928 await client.query("Create 5 Python files with different sorting algorithms")

2929 

2930 # Monitor progress in real-time

2931 async for message in client.receive_response():

2932 if isinstance(message, AssistantMessage):

2933 for block in message.content:

2934 if isinstance(block, ToolUseBlock):

2935 if block.name == "Write":

2936 file_path = block.input.get("file_path", "")

2937 print(f"Creating: {file_path}")

2938 elif isinstance(block, ToolResultBlock):

2939 print("Completed tool execution")

2940 elif isinstance(block, TextBlock):

2941 print(f"Claude says: {block.text[:100]}...")

2942 

2943 print("Task completed!")

2944 

2945 

2946asyncio.run(monitor_progress())

2947```

2948 

2949## Пример использования

2950 

2951### Базовые операции с файлами (используя query)

2952 

2953```python theme={null}

2954from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ToolUseBlock

2955import asyncio

2956 

2957 

2958async def create_project():

2959 options = ClaudeAgentOptions(

2960 allowed_tools=["Read", "Write", "Bash"],

2961 permission_mode="acceptEdits",

2962 cwd="/home/user/project",

2963 )

2964 

2965 async for message in query(

2966 prompt="Create a Python project structure with setup.py", options=options

2967 ):

2968 if isinstance(message, AssistantMessage):

2969 for block in message.content:

2970 if isinstance(block, ToolUseBlock):

2971 print(f"Using tool: {block.name}")

2972 

2973 

2974asyncio.run(create_project())

2975```

2976 

2977### Обработка ошибок

2978 

2979```python theme={null}

2980from claude_agent_sdk import query, CLINotFoundError, ProcessError, CLIJSONDecodeError

2981 

2982try:

2983 async for message in query(prompt="Hello"):

2984 print(message)

2985except CLINotFoundError:

2986 print(

2987 "Claude Code CLI not found. Try reinstalling: pip install --force-reinstall claude-agent-sdk"

2988 )

2989except ProcessError as e:

2990 print(f"Process failed with exit code: {e.exit_code}")

2991except CLIJSONDecodeError as e:

2992 print(f"Failed to parse response: {e}")

2993```

2994 

2995### Режим потоковой передачи с клиентом

2996 

2997```python theme={null}

2998from claude_agent_sdk import ClaudeSDKClient

2999import asyncio

3000 

3001 

3002async def interactive_session():

3003 async with ClaudeSDKClient() as client:

3004 # Send initial message

3005 await client.query("What's the weather like?")

3006 

3007 # Process responses

3008 async for msg in client.receive_response():

3009 print(msg)

3010 

3011 # Send follow-up

3012 await client.query("Tell me more about that")

3013 

3014 # Process follow-up response

3015 async for msg in client.receive_response():

3016 print(msg)

3017 

3018 

3019asyncio.run(interactive_session())

3020```

3021 

3022### Использование пользовательских инструментов с ClaudeSDKClient

3023 

3024```python theme={null}

3025from claude_agent_sdk import (

3026 ClaudeSDKClient,

3027 ClaudeAgentOptions,

3028 tool,

3029 create_sdk_mcp_server,

3030 AssistantMessage,

3031 TextBlock,

3032)

3033import asyncio

3034from typing import Any

3035 

3036 

3037# Define custom tools with @tool decorator

3038@tool("calculate", "Perform mathematical calculations", {"expression": str})

3039async def calculate(args: dict[str, Any]) -> dict[str, Any]:

3040 try:

3041 result = eval(args["expression"], {"__builtins__": {}})

3042 return {"content": [{"type": "text", "text": f"Result: {result}"}]}

3043 except Exception as e:

3044 return {

3045 "content": [{"type": "text", "text": f"Error: {str(e)}"}],

3046 "is_error": True,

3047 }

3048 

3049 

3050@tool("get_time", "Get current time", {})

3051async def get_time(args: dict[str, Any]) -> dict[str, Any]:

3052 from datetime import datetime

3053 

3054 current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

3055 return {"content": [{"type": "text", "text": f"Current time: {current_time}"}]}

3056 

3057 

3058async def main():

3059 # Create SDK MCP server with custom tools

3060 my_server = create_sdk_mcp_server(

3061 name="utilities", version="1.0.0", tools=[calculate, get_time]

3062 )

3063 

3064 # Configure options with the server

3065 options = ClaudeAgentOptions(

3066 mcp_servers={"utils": my_server},

3067 allowed_tools=["mcp__utils__calculate", "mcp__utils__get_time"],

3068 )

3069 

3070 # Use ClaudeSDKClient for interactive tool usage

3071 async with ClaudeSDKClient(options=options) as client:

3072 await client.query("What's 123 * 456?")

3073 

3074 # Process calculation response

3075 async for message in client.receive_response():

3076 if isinstance(message, AssistantMessage):

3077 for block in message.content:

3078 if isinstance(block, TextBlock):

3079 print(f"Calculation: {block.text}")

3080 

3081 # Follow up with time query

3082 await client.query("What time is it now?")

3083 

3084 async for message in client.receive_response():

3085 if isinstance(message, AssistantMessage):

3086 for block in message.content:

3087 if isinstance(block, TextBlock):

3088 print(f"Time: {block.text}")

3089 

3090 

3091asyncio.run(main())

3092```

3093 

3094## Конфигурация sandbox

3095 

3096### `SandboxSettings`

3097 

3098Конфигурация для поведения sandbox. Используйте это для включения sandboxing команд и программной настройки ограничений сети.

3099 

3100```python theme={null}

3101class SandboxSettings(TypedDict, total=False):

3102 enabled: bool

3103 autoAllowBashIfSandboxed: bool

3104 excludedCommands: list[str]

3105 allowUnsandboxedCommands: bool

3106 network: SandboxNetworkConfig

3107 ignoreViolations: SandboxIgnoreViolations

3108 enableWeakerNestedSandbox: bool

3109```

3110 

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

3112| :-------------------------- | :------------------------------------------------------ | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

3113| `enabled` | `bool` | `False` | Включить режим sandbox для выполнения команд |

3114| `autoAllowBashIfSandboxed` | `bool` | `True` | Автоматически одобрять команды bash, когда sandbox включен |

3115| `excludedCommands` | `list[str]` | `[]` | Команды, которые всегда обходят ограничения sandbox (например, `["docker"]`). Они работают без sandbox автоматически без участия модели |

3116| `allowUnsandboxedCommands` | `bool` | `True` | Разрешить модели запрашивать выполнение команд вне sandbox. Когда `True`, модель может установить `dangerouslyDisableSandbox` в входе инструмента, что переходит к [системе разрешений](#permissions-fallback-for-unsandboxed-commands) |

3117| `network` | [`SandboxNetworkConfig`](#sandbox-network-config) | `None` | Конфигурация sandbox, специфичная для сети |

3118| `ignoreViolations` | [`SandboxIgnoreViolations`](#sandbox-ignore-violations) | `None` | Настройте, какие нарушения sandbox игнорировать |

3119| `enableWeakerNestedSandbox` | `bool` | `False` | Включить более слабый вложенный sandbox для совместимости |

3120 

3121#### Пример использования

3122 

3123```python theme={null}

3124from claude_agent_sdk import query, ClaudeAgentOptions, SandboxSettings

3125 

3126sandbox_settings: SandboxSettings = {

3127 "enabled": True,

3128 "autoAllowBashIfSandboxed": True,

3129 "network": {"allowLocalBinding": True},

3130}

3131 

3132async for message in query(

3133 prompt="Build and test my project",

3134 options=ClaudeAgentOptions(sandbox=sandbox_settings),

3135):

3136 print(message)

3137```

3138 

3139<Warning>

3140 **Безопасность Unix socket**: Опция `allowUnixSockets` может предоставить доступ к мощным системным сервисам. Например, разрешение `/var/run/docker.sock` фактически предоставляет полный доступ к хост-системе через Docker API, обходя изоляцию sandbox. Разрешайте только Unix sockets, которые строго необходимы, и поймите последствия безопасности каждого.

3141</Warning>

3142 

3143### `SandboxNetworkConfig`

3144 

3145Конфигурация, специфичная для сети, для режима sandbox.

3146 

3147```python theme={null}

3148class SandboxNetworkConfig(TypedDict, total=False):

3149 allowedDomains: list[str]

3150 deniedDomains: list[str]

3151 allowManagedDomainsOnly: bool

3152 allowUnixSockets: list[str]

3153 allowAllUnixSockets: bool

3154 allowLocalBinding: bool

3155 allowMachLookup: list[str]

3156 httpProxyPort: int

3157 socksProxyPort: int

3158```

3159 

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

3161| :------------------------ | :---------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

3162| `allowedDomains` | `list[str]` | `[]` | Имена доменов, к которым могут получить доступ процессы в sandbox |

3163| `deniedDomains` | `list[str]` | `[]` | Имена доменов, к которым процессы в sandbox не могут получить доступ. Имеет приоритет над `allowedDomains` |

3164| `allowManagedDomainsOnly` | `bool` | `False` | Только управляемые параметры: когда установлено в управляемых параметрах, игнорируйте `allowedDomains` из источников неуправляемых параметров. Не имеет эффекта при установке через параметры SDK |

3165| `allowUnixSockets` | `list[str]` | `[]` | Пути Unix socket, к которым процессы могут получить доступ (например, Docker socket) |

3166| `allowAllUnixSockets` | `bool` | `False` | Разрешить доступ ко всем Unix sockets |

3167| `allowLocalBinding` | `bool` | `False` | Разрешить процессам привязываться к локальным портам (например, для dev servers) |

3168| `allowMachLookup` | `list[str]` | `[]` | Только macOS: имена сервисов XPC/Mach для разрешения. Поддерживает завершающий подстановочный знак |

3169| `httpProxyPort` | `int` | `None` | Порт HTTP proxy для сетевых запросов |

3170| `socksProxyPort` | `int` | `None` | Порт SOCKS proxy для сетевых запросов |

3171 

3172<Note>

3173 Встроенный прокси sandbox обеспечивает соблюдение списка разрешенных сетей на основе запрашиваемого имени хоста и не завершает и не проверяет трафик TLS, поэтому такие методы, как [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting), потенциально могут его обойти. Подробнее см. в разделе [Ограничения безопасности Sandboxing](/ru/sandboxing#security-limitations) и [Безопасное развертывание](/ru/agent-sdk/secure-deployment#traffic-forwarding) для настройки прокси, завершающего TLS.

3174</Note>

3175 

3176### `SandboxIgnoreViolations`

3177 

3178Конфигурация для игнорирования определенных нарушений sandbox.

3179 

3180```python theme={null}

3181class SandboxIgnoreViolations(TypedDict, total=False):

3182 file: list[str]

3183 network: list[str]

3184```

3185 

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

3187| :-------- | :---------- | :----------- | :----------------------------------------------- |

3188| `file` | `list[str]` | `[]` | Шаблоны путей файлов для игнорирования нарушений |

3189| `network` | `list[str]` | `[]` | Шаблоны сети для игнорирования нарушений |

3190 

3191### Fallback разрешений для команд без sandbox

3192 

3193Когда `allowUnsandboxedCommands` включен, модель может запросить выполнение команд вне sandbox, установив `dangerouslyDisableSandbox: True` во входе инструмента. Эти запросы переходят к существующей системе разрешений, что означает, что ваш обработчик `can_use_tool` будет вызван, позволяя вам реализовать пользовательскую логику авторизации.

3194 

3195<Note>

3196 **`excludedCommands` vs `allowUnsandboxedCommands`:**

3197 

3198 * `excludedCommands`: Статический список команд, которые всегда обходят sandbox автоматически (например, `["docker"]`). Модель не имеет контроля над этим.

3199 * `allowUnsandboxedCommands`: Позволяет модели решать во время выполнения, запрашивать ли выполнение без sandbox, установив `dangerouslyDisableSandbox: True` во входе инструмента.

3200</Note>

3201 

3202```python theme={null}

3203from claude_agent_sdk import (

3204 query,

3205 ClaudeAgentOptions,

3206 HookMatcher,

3207 PermissionResultAllow,

3208 PermissionResultDeny,

3209 ToolPermissionContext,

3210)

3211 

3212 

3213async def can_use_tool(

3214 tool: str, input: dict, context: ToolPermissionContext

3215) -> PermissionResultAllow | PermissionResultDeny:

3216 # Check if the model is requesting to bypass the sandbox

3217 if tool == "Bash" and input.get("dangerouslyDisableSandbox"):

3218 # The model is requesting to run this command outside the sandbox

3219 print(f"Unsandboxed command requested: {input.get('command')}")

3220 

3221 if is_command_authorized(input.get("command")):

3222 return PermissionResultAllow()

3223 return PermissionResultDeny(

3224 message="Command not authorized for unsandboxed execution"

3225 )

3226 return PermissionResultAllow()

3227 

3228 

3229# Required: dummy hook keeps the stream open for can_use_tool

3230async def dummy_hook(input_data, tool_use_id, context):

3231 return {"continue_": True}

3232 

3233 

3234async def prompt_stream():

3235 yield {

3236 "type": "user",

3237 "message": {"role": "user", "content": "Deploy my application"},

3238 }

3239 

3240 

3241async def main():

3242 async for message in query(

3243 prompt=prompt_stream(),

3244 options=ClaudeAgentOptions(

3245 sandbox={

3246 "enabled": True,

3247 "allowUnsandboxedCommands": True, # Model can request unsandboxed execution

3248 },

3249 permission_mode="default",

3250 can_use_tool=can_use_tool,

3251 hooks={"PreToolUse": [HookMatcher(matcher=None, hooks=[dummy_hook])]},

3252 ),

3253 ):

3254 print(message)

3255```

3256 

3257Этот шаблон позволяет вам:

3258 

3259* **Аудит запросов модели**: Логируйте, когда модель запрашивает выполнение без sandbox

3260* **Реализовать allowlists**: Разрешайте только определенные команды работать без sandbox

3261* **Добавить рабочие процессы одобрения**: Требуйте явной авторизации для привилегированных операций

3262 

3263<Warning>

3264 Команды, работающие с `dangerouslyDisableSandbox: True`, имеют полный доступ к системе. Убедитесь, что ваш обработчик `can_use_tool` тщательно проверяет эти запросы.

3265 

3266 Если `permission_mode` установлен на `bypassPermissions` и `allow_unsandboxed_commands` включен, модель может автономно выполнять команды вне sandbox без каких-либо подсказок одобрения. Эта комбинация фактически позволяет модели молча выходить из изоляции sandbox.

3267</Warning>

3268 

3269## См. также

3270 

3271* [SDK overview](/ru/agent-sdk/overview) - Общие концепции SDK

3272* [TypeScript SDK reference](/ru/agent-sdk/typescript) - Документация TypeScript SDK

3273* [CLI reference](/ru/cli-reference) - Интерфейс командной строки

3274* [Common workflows](/ru/common-workflows) - Пошаговые руководства

agent-sdk/quickstart.md +333 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Быстрый старт

6 

7> Начните работу с Python или TypeScript Agent SDK для создания AI-агентов, которые работают автономно

8 

9Используйте Agent SDK для создания AI-агента, который читает ваш код, находит ошибки и исправляет их, всё без ручного вмешательства.

10 

11**Что вы будете делать:**

12 

131. Настроить проект с Agent SDK

142. Создать файл с некорректным кодом

153. Запустить агента, который автоматически находит и исправляет ошибки

16 

17## Предварительные требования

18 

19* **Node.js 18+** или **Python 3.10+**

20* **Учётная запись Anthropic** ([зарегистрируйтесь здесь](https://platform.claude.com/))

21 

22## Настройка

23 

24<Steps>

25 <Step title="Создайте папку проекта">

26 Создайте новый каталог для этого быстрого старта:

27 

28 ```bash theme={null}

29 mkdir my-agent && cd my-agent

30 ```

31 

32 Для собственных проектов вы можете запустить SDK из любой папки; по умолчанию он будет иметь доступ к файлам в этом каталоге и его подкаталогах.

33 </Step>

34 

35 <Step title="Установите SDK">

36 Установите пакет Agent SDK для вашего языка:

37 

38 <Tabs>

39 <Tab title="TypeScript">

40 ```bash theme={null}

41 npm install @anthropic-ai/claude-agent-sdk

42 ```

43 </Tab>

44 

45 <Tab title="Python (uv)">

46 [uv Python package manager](https://docs.astral.sh/uv/) — это быстрый менеджер пакетов Python, который автоматически управляет виртуальными окружениями:

47 

48 ```bash theme={null}

49 uv init && uv add claude-agent-sdk

50 ```

51 </Tab>

52 

53 <Tab title="Python (pip)">

54 Сначала создайте виртуальное окружение, затем установите:

55 

56 ```bash theme={null}

57 python3 -m venv .venv && source .venv/bin/activate

58 pip3 install claude-agent-sdk

59 ```

60 </Tab>

61 </Tabs>

62 

63 <Note>

64 TypeScript SDK включает нативный бинарный файл Claude Code для вашей платформы в качестве опциональной зависимости, поэтому вам не нужно устанавливать Claude Code отдельно.

65 </Note>

66 </Step>

67 

68 <Step title="Установите ваш API ключ">

69 Получите API ключ из [Claude Console](https://platform.claude.com/), затем создайте файл `.env` в каталоге вашего проекта:

70 

71 ```bash theme={null}

72 ANTHROPIC_API_KEY=your-api-key

73 ```

74 

75 SDK также поддерживает аутентификацию через сторонних поставщиков API:

76 

77 * **Amazon Bedrock**: установите переменную окружения `CLAUDE_CODE_USE_BEDROCK=1` и настройте учётные данные AWS

78 * **Google Vertex AI**: установите переменную окружения `CLAUDE_CODE_USE_VERTEX=1` и настройте учётные данные Google Cloud

79 * **Microsoft Azure**: установите переменную окружения `CLAUDE_CODE_USE_FOUNDRY=1` и настройте учётные данные Azure

80 

81 Подробности см. в руководствах по настройке для [Bedrock](/ru/amazon-bedrock), [Vertex AI](/ru/google-vertex-ai) или [Azure AI Foundry](/ru/microsoft-foundry).

82 

83 <Note>

84 Если не было предварительного одобрения, Anthropic не разрешает сторонним разработчикам предлагать вход через claude.ai или ограничения скорости для своих продуктов, включая агентов, созданных на основе Claude Agent SDK. Вместо этого используйте методы аутентификации через API ключ, описанные в этом документе.

85 </Note>

86 </Step>

87</Steps>

88 

89## Создайте файл с ошибками

90 

91Этот быстрый старт проведёт вас через создание агента, который может находить и исправлять ошибки в коде. Сначала вам нужен файл с некоторыми намеренными ошибками для исправления агентом. Создайте `utils.py` в каталоге `my-agent` и вставьте следующий код:

92 

93```python theme={null}

94def calculate_average(numbers):

95 total = 0

96 for num in numbers:

97 total += num

98 return total / len(numbers)

99 

100 

101def get_user_name(user):

102 return user["name"].upper()

103```

104 

105Этот код содержит две ошибки:

106 

1071. `calculate_average([])` падает с ошибкой деления на ноль

1082. `get_user_name(None)` падает с TypeError

109 

110## Создайте агента, который находит и исправляет ошибки

111 

112Создайте `agent.py`, если вы используете Python SDK, или `agent.ts` для TypeScript:

113 

114<CodeGroup>

115 ```python Python theme={null}

116 import asyncio

117 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage

118 

119 

120 async def main():

121 # Agentic loop: streams messages as Claude works

122 async for message in query(

123 prompt="Review utils.py for bugs that would cause crashes. Fix any issues you find.",

124 options=ClaudeAgentOptions(

125 allowed_tools=["Read", "Edit", "Glob"], # Tools Claude can use

126 permission_mode="acceptEdits", # Auto-approve file edits

127 ),

128 ):

129 # Print human-readable output

130 if isinstance(message, AssistantMessage):

131 for block in message.content:

132 if hasattr(block, "text"):

133 print(block.text) # Claude's reasoning

134 elif hasattr(block, "name"):

135 print(f"Tool: {block.name}") # Tool being called

136 elif isinstance(message, ResultMessage):

137 print(f"Done: {message.subtype}") # Final result

138 

139 

140 asyncio.run(main())

141 ```

142 

143 ```typescript TypeScript theme={null}

144 import { query } from "@anthropic-ai/claude-agent-sdk";

145 

146 // Agentic loop: streams messages as Claude works

147 for await (const message of query({

148 prompt: "Review utils.py for bugs that would cause crashes. Fix any issues you find.",

149 options: {

150 allowedTools: ["Read", "Edit", "Glob"], // Tools Claude can use

151 permissionMode: "acceptEdits" // Auto-approve file edits

152 }

153 })) {

154 // Print human-readable output

155 if (message.type === "assistant" && message.message?.content) {

156 for (const block of message.message.content) {

157 if ("text" in block) {

158 console.log(block.text); // Claude's reasoning

159 } else if ("name" in block) {

160 console.log(`Tool: ${block.name}`); // Tool being called

161 }

162 }

163 } else if (message.type === "result") {

164 console.log(`Done: ${message.subtype}`); // Final result

165 }

166 }

167 ```

168</CodeGroup>

169 

170Этот код состоит из трёх основных частей:

171 

1721. **`query`**: основная точка входа, которая создаёт цикл агента. Она возвращает асинхронный итератор, поэтому вы используете `async for` для потоковой передачи сообщений по мере работы Claude. Полный API см. в справочнике [Python](/ru/agent-sdk/python#query) или [TypeScript](/ru/agent-sdk/typescript#query) SDK.

173 

1742. **`prompt`**: то, что вы хотите, чтобы сделал Claude. Claude определяет, какие инструменты использовать, на основе задачи.

175 

1763. **`options`**: конфигурация для агента. В этом примере используется `allowedTools` для предварительного одобрения `Read`, `Edit` и `Glob`, а также `permissionMode: "acceptEdits"` для автоматического одобрения изменений файлов. Другие опции включают `systemPrompt`, `mcpServers` и многое другое. Все опции для [Python](/ru/agent-sdk/python#claude-agent-options) или [TypeScript](/ru/agent-sdk/typescript#options).

177 

178Цикл `async for` продолжает работать, пока Claude думает, вызывает инструменты, наблюдает результаты и решает, что делать дальше. Каждая итерация выдаёт сообщение: рассуждение Claude, вызов инструмента, результат инструмента или окончательный результат. SDK обрабатывает оркестровку (выполнение инструментов, управление контекстом, повторные попытки), поэтому вы просто потребляете поток. Цикл заканчивается, когда Claude завершает задачу или возникает ошибка.

179 

180Обработка сообщений внутри цикла фильтрует удобочитаемый вывод. Без фильтрации вы увидите необработанные объекты сообщений, включая инициализацию системы и внутреннее состояние, что полезно для отладки, но в остальном шумно.

181 

182<Note>

183 В этом примере используется потоковая передача для отображения прогресса в реальном времени. Если вам не нужен живой вывод (например, для фоновых заданий или конвейеров CI), вы можете собрать все сообщения сразу. Подробности см. в разделе [Потоковая передача и однооборотный режим](/ru/agent-sdk/streaming-vs-single-mode).

184</Note>

185 

186### Запустите вашего агента

187 

188Ваш агент готов. Запустите его с помощью следующей команды:

189 

190<Tabs>

191 <Tab title="Python">

192 ```bash theme={null}

193 python3 agent.py

194 ```

195 </Tab>

196 

197 <Tab title="TypeScript">

198 ```bash theme={null}

199 npx tsx agent.ts

200 ```

201 </Tab>

202</Tabs>

203 

204После запуска проверьте `utils.py`. Вы увидите защитный код, обрабатывающий пустые списки и нулевых пользователей. Ваш агент автономно:

205 

2061. **Прочитал** `utils.py` для понимания кода

2072. **Проанализировал** логику и определил граничные случаи, которые вызовут сбой

2083. **Отредактировал** файл для добавления надлежащей обработки ошибок

209 

210Это то, что отличает Agent SDK: Claude выполняет инструменты напрямую вместо того, чтобы просить вас их реализовать.

211 

212<Note>

213 Если вы видите "API key not found", убедитесь, что вы установили переменную окружения `ANTHROPIC_API_KEY` в файле `.env` или окружении оболочки. Подробнее см. в [полном руководстве по устранению неполадок](/ru/troubleshooting).

214</Note>

215 

216### Попробуйте другие подсказки

217 

218Теперь, когда ваш агент настроен, попробуйте некоторые другие подсказки:

219 

220* `"Add docstrings to all functions in utils.py"`

221* `"Add type hints to all functions in utils.py"`

222* `"Create a README.md documenting the functions in utils.py"`

223 

224### Настройте вашего агента

225 

226Вы можете изменить поведение вашего агента, изменив опции. Вот несколько примеров:

227 

228**Добавьте возможность веб-поиска:**

229 

230<CodeGroup>

231 ```python Python theme={null}

232 options = ClaudeAgentOptions(

233 allowed_tools=["Read", "Edit", "Glob", "WebSearch"], permission_mode="acceptEdits"

234 )

235 ```

236 

237 ```typescript TypeScript hidelines={1,-1} theme={null}

238 const _ = {

239 options: {

240 allowedTools: ["Read", "Edit", "Glob", "WebSearch"],

241 permissionMode: "acceptEdits"

242 }

243 };

244 ```

245</CodeGroup>

246 

247**Дайте Claude пользовательскую системную подсказку:**

248 

249<CodeGroup>

250 ```python Python theme={null}

251 options = ClaudeAgentOptions(

252 allowed_tools=["Read", "Edit", "Glob"],

253 permission_mode="acceptEdits",

254 system_prompt="You are a senior Python developer. Always follow PEP 8 style guidelines.",

255 )

256 ```

257 

258 ```typescript TypeScript hidelines={1,-1} theme={null}

259 const _ = {

260 options: {

261 allowedTools: ["Read", "Edit", "Glob"],

262 permissionMode: "acceptEdits",

263 systemPrompt: "You are a senior Python developer. Always follow PEP 8 style guidelines."

264 }

265 };

266 ```

267</CodeGroup>

268 

269**Запускайте команды в терминале:**

270 

271<CodeGroup>

272 ```python Python theme={null}

273 options = ClaudeAgentOptions(

274 allowed_tools=["Read", "Edit", "Glob", "Bash"], permission_mode="acceptEdits"

275 )

276 ```

277 

278 ```typescript TypeScript hidelines={1,-1} theme={null}

279 const _ = {

280 options: {

281 allowedTools: ["Read", "Edit", "Glob", "Bash"],

282 permissionMode: "acceptEdits"

283 }

284 };

285 ```

286</CodeGroup>

287 

288С включённым `Bash` попробуйте: `"Write unit tests for utils.py, run them, and fix any failures"`

289 

290## Ключевые концепции

291 

292**Инструменты** контролируют, что может делать ваш агент:

293 

294| Инструменты | Что может делать агент |

295| -------------------------------------- | ------------------------ |

296| `Read`, `Glob`, `Grep` | Анализ только для чтения |

297| `Read`, `Edit`, `Glob` | Анализ и изменение кода |

298| `Read`, `Edit`, `Bash`, `Glob`, `Grep` | Полная автоматизация |

299 

300**Режимы разрешений** контролируют, сколько человеческого надзора вы хотите:

301 

302| Режим | Поведение | Вариант использования |

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

304| `acceptEdits` | Автоматически одобряет редактирование файлов и общие команды файловой системы, запрашивает другие действия | Надёжные рабочие процессы разработки |

305| `dontAsk` | Отклоняет всё, что не в `allowedTools` | Заблокированные автономные агенты |

306| `auto` (только TypeScript) | Классификатор модели одобряет или отклоняет каждый вызов инструмента | Автономные агенты с защитой безопасности |

307| `bypassPermissions` | Запускает каждый инструмент без подсказок | Изолированный CI, полностью доверенные окружения |

308| `default` | Требует обратного вызова `canUseTool` для обработки одобрения | Пользовательские потоки одобрения |

309 

310Приведённый выше пример использует режим `acceptEdits`, который автоматически одобряет файловые операции, чтобы агент мог работать без интерактивных подсказок. Если вы хотите запрашивать у пользователей одобрение, используйте режим `default` и предоставьте обратный вызов [`canUseTool`](/ru/agent-sdk/user-input), который собирает пользовательский ввод. Для большего контроля см. [Разрешения](/ru/agent-sdk/permissions).

311 

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

313 

314### Ошибка API `thinking.type.enabled` не поддерживается для этой модели

315 

316Claude Opus 4.7 заменяет `thinking.type.enabled` на `thinking.type.adaptive`. Старые версии Agent SDK падают со следующей ошибкой API при выборе `claude-opus-4-7`:

317 

318```text theme={null}

319API Error: 400 {"type":"invalid_request_error","message":"\"thinking.type.enabled\" is not supported for this model. Use \"thinking.type.adaptive\" and \"output_config.effort\" to control thinking behavior."}

320```

321 

322Обновитесь до Agent SDK v0.2.111 или позже для использования Opus 4.7.

323 

324## Следующие шаги

325 

326Теперь, когда вы создали своего первого агента, узнайте, как расширить его возможности и адаптировать его к вашему варианту использования:

327 

328* **[Разрешения](/ru/agent-sdk/permissions)**: контролируйте, что может делать ваш агент и когда ему нужно одобрение

329* **[Hooks](/ru/agent-sdk/hooks)**: запускайте пользовательский код до или после вызовов инструментов

330* **[Сессии](/ru/agent-sdk/sessions)**: создавайте многооборотных агентов, которые сохраняют контекст

331* **[MCP servers](/ru/agent-sdk/mcp)**: подключайтесь к базам данных, браузерам, API и другим внешним системам

332* **[Хостинг](/ru/agent-sdk/hosting)**: развёртывайте агентов в Docker, облако и CI/CD

333* **[Примеры агентов](https://github.com/anthropics/claude-agent-sdk-demos)**: см. полные примеры: помощник по электронной почте, исследовательский агент и многое другое

agent-sdk/slash-commands.md +444 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Slash Commands в SDK

6 

7> Узнайте, как использовать slash commands для управления сеансами Claude Code через SDK

8 

9Slash commands предоставляют способ управления сеансами Claude Code с помощью специальных команд, которые начинаются с `/`. Эти команды можно отправлять через SDK для выполнения действий, таких как компактирование контекста, список использования контекста или вызов пользовательских команд. Только команды, которые работают без интерактивного терминала, могут быть отправлены через SDK; сообщение `system/init` содержит список доступных в вашем сеансе.

10 

11## Обнаружение доступных Slash Commands

12 

13Claude Agent SDK предоставляет информацию о доступных slash commands в сообщении инициализации системы. Получите доступ к этой информации при запуске вашего сеанса:

14 

15<CodeGroup>

16 ```typescript TypeScript theme={null}

17 import { query } from "@anthropic-ai/claude-agent-sdk";

18 

19 for await (const message of query({

20 prompt: "Hello Claude",

21 options: { maxTurns: 1 }

22 })) {

23 if (message.type === "system" && message.subtype === "init") {

24 console.log("Available slash commands:", message.slash_commands);

25 // Example output: ["/compact", "/context", "/usage"]

26 }

27 }

28 ```

29 

30 ```python Python theme={null}

31 import asyncio

32 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage

33 

34 

35 async def main():

36 async for message in query(prompt="Hello Claude", options=ClaudeAgentOptions(max_turns=1)):

37 if isinstance(message, SystemMessage) and message.subtype == "init":

38 print("Available slash commands:", message.data["slash_commands"])

39 # Example output: ["/compact", "/context", "/usage"]

40 

41 

42 asyncio.run(main())

43 ```

44</CodeGroup>

45 

46## Отправка Slash Commands

47 

48Отправляйте slash commands, включая их в строку подсказки, как обычный текст:

49 

50<CodeGroup>

51 ```typescript TypeScript theme={null}

52 import { query } from "@anthropic-ai/claude-agent-sdk";

53 

54 // Send a slash command

55 for await (const message of query({

56 prompt: "/compact",

57 options: { maxTurns: 1 }

58 })) {

59 if (message.type === "result") {

60 console.log("Command executed:", message.result);

61 }

62 }

63 ```

64 

65 ```python Python theme={null}

66 import asyncio

67 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

68 

69 

70 async def main():

71 # Send a slash command

72 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):

73 if isinstance(message, ResultMessage):

74 print("Command executed:", message.result)

75 

76 

77 asyncio.run(main())

78 ```

79</CodeGroup>

80 

81## Распространённые Slash Commands

82 

83### `/compact` - Компактирование истории разговора

84 

85Команда `/compact` уменьшает размер истории вашего разговора путём суммирования старых сообщений при сохранении важного контекста:

86 

87<CodeGroup>

88 ```typescript TypeScript theme={null}

89 import { query } from "@anthropic-ai/claude-agent-sdk";

90 

91 for await (const message of query({

92 prompt: "/compact",

93 options: { maxTurns: 1 }

94 })) {

95 if (message.type === "system" && message.subtype === "compact_boundary") {

96 console.log("Compaction completed");

97 console.log("Pre-compaction tokens:", message.compact_metadata.pre_tokens);

98 console.log("Trigger:", message.compact_metadata.trigger);

99 }

100 }

101 ```

102 

103 ```python Python theme={null}

104 import asyncio

105 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage

106 

107 

108 async def main():

109 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):

110 if isinstance(message, SystemMessage) and message.subtype == "compact_boundary":

111 print("Compaction completed")

112 print("Pre-compaction tokens:", message.data["compact_metadata"]["pre_tokens"])

113 print("Trigger:", message.data["compact_metadata"]["trigger"])

114 

115 

116 asyncio.run(main())

117 ```

118</CodeGroup>

119 

120### Очистка разговора

121 

122Интерактивная команда `/clear` недоступна в SDK. Каждый вызов `query()` уже начинает свежий разговор, поэтому для очистки контекста завершите текущий `query()` и начните новый. Предыдущий разговор остаётся на диске и может быть восстановлен путём передачи его ID сеанса в [опцию `resume`](/ru/agent-sdk/sessions#resume-by-id).

123 

124## Создание пользовательских Slash Commands

125 

126Помимо использования встроенных slash commands, вы можете создавать свои собственные пользовательские команды, доступные через SDK. Пользовательские команды определяются как файлы markdown в определённых каталогах, аналогично тому, как настраиваются подагенты.

127 

128<Note>

129 Каталог `.claude/commands/` — это устаревший формат. Рекомендуемый формат — `.claude/skills/<name>/SKILL.md`, который поддерживает то же самое вызывание slash-команды (`/name`) плюс автономный вызов Claude. Смотрите [Skills](/ru/agent-sdk/skills) для текущего формата. CLI продолжает поддерживать оба формата, и приведённые ниже примеры остаются точными для `.claude/commands/`.

130</Note>

131 

132### Расположение файлов

133 

134Пользовательские slash commands хранятся в назначенных каталогах в зависимости от их области действия:

135 

136* **Команды проекта**: `.claude/commands/` - Доступны только в текущем проекте (устаревший; предпочитайте `.claude/skills/`)

137* **Личные команды**: `~/.claude/commands/` - Доступны во всех ваших проектах (устаревший; предпочитайте `~/.claude/skills/`)

138 

139### Формат файла

140 

141Каждая пользовательская команда — это файл markdown, где:

142 

143* Имя файла (без расширения `.md`) становится именем команды

144* Содержимое файла определяет, что делает команда

145* Опциональный YAML frontmatter предоставляет конфигурацию

146 

147#### Базовый пример

148 

149Создайте `.claude/commands/refactor.md`:

150 

151```markdown theme={null}

152Refactor the selected code to improve readability and maintainability.

153Focus on clean code principles and best practices.

154```

155 

156Это создаёт команду `/refactor`, которую вы можете использовать через SDK.

157 

158#### С Frontmatter

159 

160Создайте `.claude/commands/security-check.md`:

161 

162```markdown theme={null}

163---

164allowed-tools: Read, Grep, Glob

165description: Run security vulnerability scan

166model: claude-opus-4-7

167---

168 

169Analyze the codebase for security vulnerabilities including:

170- SQL injection risks

171- XSS vulnerabilities

172- Exposed credentials

173- Insecure configurations

174```

175 

176### Использование пользовательских команд в SDK

177 

178После определения в файловой системе пользовательские команды автоматически доступны через SDK:

179 

180<CodeGroup>

181 ```typescript TypeScript theme={null}

182 import { query } from "@anthropic-ai/claude-agent-sdk";

183 

184 // Use a custom command

185 for await (const message of query({

186 prompt: "/refactor src/auth/login.ts",

187 options: { maxTurns: 3 }

188 })) {

189 if (message.type === "assistant") {

190 console.log("Refactoring suggestions:", message.message);

191 }

192 }

193 

194 // Custom commands appear in the slash_commands list

195 for await (const message of query({

196 prompt: "Hello",

197 options: { maxTurns: 1 }

198 })) {

199 if (message.type === "system" && message.subtype === "init") {

200 // Will include both built-in and custom commands

201 console.log("Available commands:", message.slash_commands);

202 // Example: ["/compact", "/context", "/usage", "/refactor", "/security-check"]

203 }

204 }

205 ```

206 

207 ```python Python theme={null}

208 import asyncio

209 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, SystemMessage

210 

211 

212 async def main():

213 # Use a custom command

214 async for message in query(

215 prompt="/refactor src/auth/login.py", options=ClaudeAgentOptions(max_turns=3)

216 ):

217 if isinstance(message, AssistantMessage):

218 for block in message.content:

219 if hasattr(block, "text"):

220 print("Refactoring suggestions:", block.text)

221 

222 # Custom commands appear in the slash_commands list

223 async for message in query(prompt="Hello", options=ClaudeAgentOptions(max_turns=1)):

224 if isinstance(message, SystemMessage) and message.subtype == "init":

225 # Will include both built-in and custom commands

226 print("Available commands:", message.data["slash_commands"])

227 # Example: ["/compact", "/context", "/usage", "/refactor", "/security-check"]

228 

229 

230 asyncio.run(main())

231 ```

232</CodeGroup>

233 

234### Расширенные возможности

235 

236#### Аргументы и заполнители

237 

238Пользовательские команды поддерживают динамические аргументы с использованием заполнителей:

239 

240Создайте `.claude/commands/fix-issue.md`:

241 

242```markdown theme={null}

243---

244argument-hint: [issue-number] [priority]

245description: Fix a GitHub issue

246---

247 

248Fix issue #$1 with priority $2.

249Check the issue description and implement the necessary changes.

250```

251 

252Используйте в SDK:

253 

254<CodeGroup>

255 ```typescript TypeScript theme={null}

256 import { query } from "@anthropic-ai/claude-agent-sdk";

257 

258 // Pass arguments to custom command

259 for await (const message of query({

260 prompt: "/fix-issue 123 high",

261 options: { maxTurns: 5 }

262 })) {

263 // Command will process with $1="123" and $2="high"

264 if (message.type === "result") {

265 console.log("Issue fixed:", message.result);

266 }

267 }

268 ```

269 

270 ```python Python theme={null}

271 import asyncio

272 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

273 

274 

275 async def main():

276 # Pass arguments to custom command

277 async for message in query(prompt="/fix-issue 123 high", options=ClaudeAgentOptions(max_turns=5)):

278 # Command will process with $1="123" and $2="high"

279 if isinstance(message, ResultMessage):

280 print("Issue fixed:", message.result)

281 

282 

283 asyncio.run(main())

284 ```

285</CodeGroup>

286 

287#### Выполнение команд Bash

288 

289Пользовательские команды могут выполнять команды bash и включать их вывод:

290 

291Создайте `.claude/commands/git-commit.md`:

292 

293```markdown theme={null}

294---

295allowed-tools: Bash(git add *), Bash(git status *), Bash(git commit *)

296description: Create a git commit

297---

298 

299## Context

300 

301- Current status: !`git status`

302- Current diff: !`git diff HEAD`

303 

304## Task

305 

306Create a git commit with appropriate message based on the changes.

307```

308 

309#### Ссылки на файлы

310 

311Включайте содержимое файлов с использованием префикса `@`:

312 

313Создайте `.claude/commands/review-config.md`:

314 

315```markdown theme={null}

316---

317description: Review configuration files

318---

319 

320Review the following configuration files for issues:

321- Package config: @package.json

322- TypeScript config: @tsconfig.json

323- Environment config: @.env

324 

325Check for security issues, outdated dependencies, and misconfigurations.

326```

327 

328### Организация с использованием пространств имён

329 

330Организуйте команды в подкаталогах для лучшей структуры:

331 

332```bash theme={null}

333.claude/commands/

334├── frontend/

335│ ├── component.md # Creates /component (project:frontend)

336│ └── style-check.md # Creates /style-check (project:frontend)

337├── backend/

338│ ├── api-test.md # Creates /api-test (project:backend)

339│ └── db-migrate.md # Creates /db-migrate (project:backend)

340└── review.md # Creates /review (project)

341```

342 

343Подкаталог появляется в описании команды, но не влияет на само имя команды.

344 

345### Практические примеры

346 

347#### Команда проверки кода

348 

349Создайте `.claude/commands/code-review.md`:

350 

351```markdown theme={null}

352---

353allowed-tools: Read, Grep, Glob, Bash(git diff *)

354description: Comprehensive code review

355---

356 

357## Changed Files

358!`git diff --name-only HEAD~1`

359 

360## Detailed Changes

361!`git diff HEAD~1`

362 

363## Review Checklist

364 

365Review the above changes for:

3661. Code quality and readability

3672. Security vulnerabilities

3683. Performance implications

3694. Test coverage

3705. Documentation completeness

371 

372Provide specific, actionable feedback organized by priority.

373```

374 

375#### Команда запуска тестов

376 

377Создайте `.claude/commands/test.md`:

378 

379```markdown theme={null}

380---

381allowed-tools: Bash, Read, Edit

382argument-hint: [test-pattern]

383description: Run tests with optional pattern

384---

385 

386Run tests matching pattern: $ARGUMENTS

387 

3881. Detect the test framework (Jest, pytest, etc.)

3892. Run tests with the provided pattern

3903. If tests fail, analyze and fix them

3914. Re-run to verify fixes

392```

393 

394Используйте эти команды через SDK:

395 

396<CodeGroup>

397 ```typescript TypeScript theme={null}

398 import { query } from "@anthropic-ai/claude-agent-sdk";

399 

400 // Run code review

401 for await (const message of query({

402 prompt: "/code-review",

403 options: { maxTurns: 3 }

404 })) {

405 // Process review feedback

406 }

407 

408 // Run specific tests

409 for await (const message of query({

410 prompt: "/test auth",

411 options: { maxTurns: 5 }

412 })) {

413 // Handle test results

414 }

415 ```

416 

417 ```python Python theme={null}

418 import asyncio

419 from claude_agent_sdk import query, ClaudeAgentOptions

420 

421 

422 async def main():

423 # Run code review

424 async for message in query(prompt="/code-review", options=ClaudeAgentOptions(max_turns=3)):

425 # Process review feedback

426 pass

427 

428 # Run specific tests

429 async for message in query(prompt="/test auth", options=ClaudeAgentOptions(max_turns=5)):

430 # Handle test results

431 pass

432 

433 

434 asyncio.run(main())

435 ```

436</CodeGroup>

437 

438## Смотрите также

439 

440* [Slash Commands](/ru/skills) - Полная документация slash commands

441* [Subagents в SDK](/ru/agent-sdk/subagents) - Аналогичная конфигурация на основе файловой системы для подагентов

442* [Справочник TypeScript SDK](/ru/agent-sdk/typescript) - Полная документация API

443* [Обзор SDK](/ru/agent-sdk/overview) - Общие концепции SDK

444* [Справочник CLI](/ru/cli-reference) - Интерфейс командной строки

agent-sdk/typescript.md +2975 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Справочник Agent SDK - TypeScript

6 

7> Полный справочник API для TypeScript Agent SDK, включая все функции, типы и интерфейсы.

8 

9<script src="/components/typescript-sdk-type-links.js" defer />

10 

11<Note>

12 **Попробуйте новый интерфейс V2 (предпросмотр):** Упрощённый интерфейс с паттернами `send()` и `stream()` теперь доступен, что облегчает многооборотные диалоги. [Узнайте больше о предпросмотре TypeScript V2](/ru/agent-sdk/typescript-v2-preview)

13</Note>

14 

15## Установка

16 

17```bash theme={null}

18npm install @anthropic-ai/claude-agent-sdk

19```

20 

21<Note>

22 SDK поставляется с нативным бинарным файлом Claude Code для вашей платформы в качестве опциональной зависимости, такой как `@anthropic-ai/claude-agent-sdk-darwin-arm64`. Вам не нужно устанавливать Claude Code отдельно. Если ваш менеджер пакетов пропускает опциональные зависимости, SDK выбросит ошибку `Native CLI binary for <platform> not found`; вместо этого установите [`pathToClaudeCodeExecutable`](#options) на отдельно установленный бинарный файл `claude`.

23</Note>

24 

25## Функции

26 

27### `query()`

28 

29Основная функция для взаимодействия с Claude Code. Создаёт асинхронный генератор, который потоком передаёт сообщения по мере их поступления.

30 

31```typescript theme={null}

32function query({

33 prompt,

34 options

35}: {

36 prompt: string | AsyncIterable<SDKUserMessage>;

37 options?: Options;

38}): Query;

39```

40 

41#### Параметры

42 

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

44| :-------- | :---------------------------------------------------------------- | :----------------------------------------------------------------------------------- |

45| `prompt` | `string \| AsyncIterable<`[`SDKUserMessage`](#sdkuser-message)`>` | Входной запрос в виде строки или асинхронного итерируемого объекта для режима потока |

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

47 

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

49 

50Возвращает объект [`Query`](#query-object), который расширяет `AsyncGenerator<`[`SDKMessage`](#sdk-message)`, void>` дополнительными методами.

51 

52### `startup()`

53 

54Предварительно разогревает подпроцесс CLI, запуская его и завершая инициализационное рукопожатие до того, как запрос будет доступен. Возвращённый дескриптор [`WarmQuery`](#warm-query) принимает запрос позже и записывает его в уже готовый процесс, поэтому первый вызов `query()` разрешается без затрат на запуск подпроцесса и инициализацию в строке.

55 

56```typescript theme={null}

57function startup(params?: {

58 options?: Options;

59 initializeTimeoutMs?: number;

60}): Promise<WarmQuery>;

61```

62 

63#### Параметры

64 

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

66| :-------------------- | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

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

69 

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

71 

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

73 

74#### Пример

75 

76Вызовите `startup()` рано, например при загрузке приложения, затем вызовите `.query()` на возвращённом дескрипторе, когда запрос будет готов. Это перемещает запуск подпроцесса и инициализацию из критического пути.

77 

78```typescript theme={null}

79import { startup } from "@anthropic-ai/claude-agent-sdk";

80 

81// Оплатите стоимость запуска заранее

82const warm = await startup({ options: { maxTurns: 3 } });

83 

84// Позже, когда запрос готов, это происходит мгновенно

85for await (const message of warm.query("What files are here?")) {

86 console.log(message);

87}

88```

89 

90### `tool()`

91 

92Создаёт определение типобезопасного MCP tool для использования с SDK MCP серверами.

93 

94```typescript theme={null}

95function tool<Schema extends AnyZodRawShape>(

96 name: string,

97 description: string,

98 inputSchema: Schema,

99 handler: (args: InferShape<Schema>, extra: unknown) => Promise<CallToolResult>,

100 extras?: { annotations?: ToolAnnotations }

101): SdkMcpToolDefinition<Schema>;

102```

103 

104#### Параметры

105 

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

107| :------------ | :------------------------------------------------------------------ | :-------------------------------------------------------------------------------- |

108| `name` | `string` | Имя tool |

109| `description` | `string` | Описание того, что делает tool |

110| `inputSchema` | `Schema extends AnyZodRawShape` | Zod схема, определяющая входные параметры tool (поддерживает Zod 3 и Zod 4) |

111| `handler` | `(args, extra) => Promise<`[`CallToolResult`](#call-tool-result)`>` | Асинхронная функция, которая выполняет логику tool |

112| `extras` | `{ annotations?: `[`ToolAnnotations`](#tool-annotations)` }` | Опциональные аннотации MCP tool, предоставляющие поведенческие подсказки клиентам |

113 

114#### `ToolAnnotations`

115 

116Переэкспортировано из `@modelcontextprotocol/sdk/types.js`. Все поля являются опциональными подсказками; клиенты не должны полагаться на них для решений безопасности.

117 

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

119| :---------------- | :-------- | :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------- |

120| `title` | `string` | `undefined` | Удобочитаемое название для tool |

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

122| `destructiveHint` | `boolean` | `true` | Если `true`, tool может выполнять деструктивные обновления (имеет смысл только когда `readOnlyHint` равен `false`) |

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

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

125 

126```typescript theme={null}

127import { tool } from "@anthropic-ai/claude-agent-sdk";

128import { z } from "zod";

129 

130const searchTool = tool(

131 "search",

132 "Search the web",

133 { query: z.string() },

134 async ({ query }) => {

135 return { content: [{ type: "text", text: `Results for: ${query}` }] };

136 },

137 { annotations: { readOnlyHint: true, openWorldHint: true } }

138);

139```

140 

141### `createSdkMcpServer()`

142 

143Создаёт экземпляр MCP сервера, который работает в том же процессе, что и ваше приложение.

144 

145```typescript theme={null}

146function createSdkMcpServer(options: {

147 name: string;

148 version?: string;

149 tools?: Array<SdkMcpToolDefinition<any>>;

150}): McpSdkServerConfigWithInstance;

151```

152 

153#### Параметры

154 

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

156| :---------------- | :---------------------------- | :------------------------------------------------------------- |

157| `options.name` | `string` | Имя MCP сервера |

158| `options.version` | `string` | Опциональная строка версии |

159| `options.tools` | `Array<SdkMcpToolDefinition>` | Массив определений tool, созданных с помощью [`tool()`](#tool) |

160 

161### `listSessions()`

162 

163Обнаруживает и перечисляет прошлые сессии с лёгкими метаданными. Фильтруйте по директории проекта или перечисляйте сессии во всех проектах.

164 

165```typescript theme={null}

166function listSessions(options?: ListSessionsOptions): Promise<SDKSessionInfo[]>;

167```

168 

169#### Параметры

170 

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

172| :------------------------- | :-------- | :----------- | :------------------------------------------------------------------------------------ |

173| `options.dir` | `string` | `undefined` | Директория для перечисления сессий. Если опущено, возвращает сессии во всех проектах |

174| `options.limit` | `number` | `undefined` | Максимальное количество сессий для возврата |

175| `options.includeWorktrees` | `boolean` | `true` | Когда `dir` находится внутри git репозитория, включайте сессии из всех путей worktree |

176 

177#### Тип возврата: `SDKSessionInfo`

178 

179| Свойство | Тип | Описание |

180| :------------- | :-------------------- | :------------------------------------------------------------------------------------------------------- |

181| `sessionId` | `string` | Уникальный идентификатор сессии (UUID) |

182| `summary` | `string` | Отображаемое название: пользовательское название, автоматически сгенерированное резюме или первый запрос |

183| `lastModified` | `number` | Время последнего изменения в миллисекундах с эпохи |

184| `fileSize` | `number \| undefined` | Размер файла сессии в байтах. Заполняется только для локального хранилища JSONL |

185| `customTitle` | `string \| undefined` | Пользовательское название сессии (через `/rename`) |

186| `firstPrompt` | `string \| undefined` | Первый значимый пользовательский запрос в сессии |

187| `gitBranch` | `string \| undefined` | Git ветка в конце сессии |

188| `cwd` | `string \| undefined` | Рабочая директория для сессии |

189| `tag` | `string \| undefined` | Пользовательский тег сессии (см. [`tagSession()`](#tag-session)) |

190| `createdAt` | `number \| undefined` | Время создания в миллисекундах с эпохи, из временной метки первой записи |

191 

192#### Пример

193 

194Выведите 10 самых последних сессий для проекта. Результаты отсортированы по `lastModified` в убывающем порядке, поэтому первый элемент является самым новым. Опустите `dir` для поиска во всех проектах.

195 

196```typescript theme={null}

197import { listSessions } from "@anthropic-ai/claude-agent-sdk";

198 

199const sessions = await listSessions({ dir: "/path/to/project", limit: 10 });

200 

201for (const session of sessions) {

202 console.log(`${session.summary} (${session.sessionId})`);

203}

204```

205 

206### `getSessionMessages()`

207 

208Читает сообщения пользователя и ассистента из прошлой сессии.

209 

210```typescript theme={null}

211function getSessionMessages(

212 sessionId: string,

213 options?: GetSessionMessagesOptions

214): Promise<SessionMessage[]>;

215```

216 

217#### Параметры

218 

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

220| :--------------- | :------- | :----------- | :------------------------------------------------------------------------ |

221| `sessionId` | `string` | обязательно | UUID сессии для чтения (см. `listSessions()`) |

222| `options.dir` | `string` | `undefined` | Директория проекта для поиска сессии. Если опущено, ищет во всех проектах |

223| `options.limit` | `number` | `undefined` | Максимальное количество сообщений для возврата |

224| `options.offset` | `number` | `undefined` | Количество сообщений для пропуска с начала |

225 

226#### Тип возврата: `SessionMessage`

227 

228| Свойство | Тип | Описание |

229| :------------------- | :---------------------- | :-------------------------------------------------------- |

230| `type` | `"user" \| "assistant"` | Роль сообщения |

231| `uuid` | `string` | Уникальный идентификатор сообщения |

232| `session_id` | `string` | Сессия, к которой принадлежит это сообщение |

233| `message` | `unknown` | Необработанная полезная нагрузка сообщения из транскрипта |

234| `parent_tool_use_id` | `null` | Зарезервировано |

235 

236#### Пример

237 

238```typescript theme={null}

239import { listSessions, getSessionMessages } from "@anthropic-ai/claude-agent-sdk";

240 

241const [latest] = await listSessions({ dir: "/path/to/project", limit: 1 });

242 

243if (latest) {

244 const messages = await getSessionMessages(latest.sessionId, {

245 dir: "/path/to/project",

246 limit: 20

247 });

248 

249 for (const msg of messages) {

250 console.log(`[${msg.type}] ${msg.uuid}`);

251 }

252}

253```

254 

255### `getSessionInfo()`

256 

257Читает метаданные для одной сессии по ID без сканирования полной директории проекта.

258 

259```typescript theme={null}

260function getSessionInfo(

261 sessionId: string,

262 options?: GetSessionInfoOptions

263): Promise<SDKSessionInfo | undefined>;

264```

265 

266#### Параметры

267 

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

269| :------------ | :------- | :----------- | :----------------------------------------------------------------------- |

270| `sessionId` | `string` | обязательно | UUID сессии для поиска |

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

272 

273Возвращает [`SDKSessionInfo`](#return-type-sdk-session-info) или `undefined`, если сессия не найдена.

274 

275### `renameSession()`

276 

277Переименовывает сессию, добавляя запись пользовательского названия. Повторные вызовы безопасны; побеждает самое последнее название.

278 

279```typescript theme={null}

280function renameSession(

281 sessionId: string,

282 title: string,

283 options?: SessionMutationOptions

284): Promise<void>;

285```

286 

287#### Параметры

288 

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

290| :------------ | :------- | :----------- | :----------------------------------------------------------------------- |

291| `sessionId` | `string` | обязательно | UUID сессии для переименования |

292| `title` | `string` | обязательно | Новое название. Должно быть непустым после удаления пробелов |

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

294 

295### `tagSession()`

296 

297Помечает сессию. Передайте `null` для очистки тега. Повторные вызовы безопасны; побеждает самый последний тег.

298 

299```typescript theme={null}

300function tagSession(

301 sessionId: string,

302 tag: string | null,

303 options?: SessionMutationOptions

304): Promise<void>;

305```

306 

307#### Параметры

308 

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

310| :------------ | :--------------- | :----------- | :----------------------------------------------------------------------- |

311| `sessionId` | `string` | обязательно | UUID сессии для пометки |

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

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

314 

315## Типы

316 

317### `Options`

318 

319Объект конфигурации для функции `query()`.

320 

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

322| :-------------------------------- | :------------------------------------------------------------------------------------------------------- | :------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

323| `abortController` | `AbortController` | `new AbortController()` | Контроллер для отмены операций |

324| `additionalDirectories` | `string[]` | `[]` | Дополнительные директории, к которым Claude может получить доступ |

325| `agent` | `string` | `undefined` | Имя агента для основного потока. Агент должен быть определён в опции `agents` или в настройках |

326| `agents` | `Record<string, [`AgentDefinition`](#agent-definition)>` | `undefined` | Программно определите подагентов |

327| `allowDangerouslySkipPermissions` | `boolean` | `false` | Включите обход разрешений. Требуется при использовании `permissionMode: 'bypassPermissions'` |

328| `allowedTools` | `string[]` | `[]` | Tools для автоматического одобрения без запроса. Это не ограничивает Claude только этими tools; неперечисленные tools переходят к `permissionMode` и `canUseTool`. Используйте `disallowedTools` для блокировки tools. См. [Разрешения](/ru/agent-sdk/permissions#allow-and-deny-rules) |

329| `betas` | [`SdkBeta`](#sdk-beta)`[]` | `[]` | Включите бета-функции |

330| `canUseTool` | [`CanUseTool`](#can-use-tool) | `undefined` | Пользовательская функция разрешения для использования tool |

331| `continue` | `boolean` | `false` | Продолжите самый последний диалог |

332| `cwd` | `string` | `process.cwd()` | Текущая рабочая директория |

333| `debug` | `boolean` | `false` | Включите режим отладки для процесса Claude Code |

334| `debugFile` | `string` | `undefined` | Запишите журналы отладки в определённый путь файла. Неявно включает режим отладки |

335| `disallowedTools` | `string[]` | `[]` | Tools для всегда отклонения. Правила отклонения проверяются первыми и переопределяют `allowedTools` и `permissionMode` (включая `bypassPermissions`) |

336| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `'high'` | Контролирует, сколько усилий Claude вкладывает в свой ответ. Работает с адаптивным мышлением для направления глубины мышления |

337| `enableFileCheckpointing` | `boolean` | `false` | Включите отслеживание изменений файлов для перемотки. См. [Контрольные точки файлов](/ru/agent-sdk/file-checkpointing) |

338| `env` | `Record<string, string \| undefined>` | `process.env` | Переменные окружения. Установите `CLAUDE_AGENT_SDK_CLIENT_APP` для идентификации вашего приложения в заголовке User-Agent |

339| `executable` | `'bun' \| 'deno' \| 'node'` | Автоопределение | Среда выполнения JavaScript для использования |

340| `executableArgs` | `string[]` | `[]` | Аргументы для передачи исполняемому файлу |

341| `extraArgs` | `Record<string, string \| null>` | `{}` | Дополнительные аргументы |

342| `fallbackModel` | `string` | `undefined` | Модель для использования, если основная не работает |

343| `forkSession` | `boolean` | `false` | При возобновлении с `resume` разветвитесь на новый ID сессии вместо продолжения исходной сессии |

344| `hooks` | `Partial<Record<`[`HookEvent`](#hook-event)`, `[`HookCallbackMatcher`](#hook-callback-matcher)`[]>>` | `{}` | Обратные вызовы hooks для событий |

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

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

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

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

349| `mcpServers` | `Record<string, [`McpServerConfig`](#mcp-server-config)>` | `{}` | Конфигурации MCP серверов |

350| `model` | `string` | По умолчанию из CLI | Модель Claude для использования |

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

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

353| `permissionMode` | [`PermissionMode`](#permission-mode) | `'default'` | Режим разрешения для сессии |

354| `permissionPromptToolName` | `string` | `undefined` | Имя MCP tool для запросов разрешения |

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

356| `plugins` | [`SdkPluginConfig`](#sdk-plugin-config)`[]` | `[]` | Загружайте пользовательские plugins из локальных путей. См. [Plugins](/ru/agent-sdk/plugins) для деталей |

357| `promptSuggestions` | `boolean` | `false` | Включите предложения запросов. Выдаёт сообщение `prompt_suggestion` после каждого хода с предсказанным следующим пользовательским запросом |

358| `resume` | `string` | `undefined` | ID сессии для возобновления |

359| `resumeSessionAt` | `string` | `undefined` | Возобновите сессию в определённом UUID сообщения |

360| `sandbox` | [`SandboxSettings`](#sandbox-settings) | `undefined` | Программно настройте поведение sandbox. См. [Настройки Sandbox](#sandbox-settings) для деталей |

361| `sessionId` | `string` | Автогенерируемый | Используйте определённый UUID для сессии вместо автогенерирования |

362| `sessionStore` | [`SessionStore`](/ru/agent-sdk/session-storage#the-session-store-interface) | `undefined` | Зеркалируйте транскрипты сессий на внешний бэкенд, чтобы любой хост мог их возобновить. См. [Сохранение сессий на внешнее хранилище](/ru/agent-sdk/session-storage) |

363| `settingSources` | [`SettingSource`](#setting-source)`[]` | Значения по умолчанию CLI (все источники) | Контролируйте, какие настройки файловой системы загружать. Передайте `[]` для отключения пользовательских, проектных и локальных настроек. Управляемые политикой настройки загружаются независимо. См. [Используйте функции Claude Code](/ru/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

364| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Пользовательская функция для запуска процесса Claude Code. Используйте для запуска Claude Code на ВМ, контейнерах или удалённых окружениях |

365| `stderr` | `(data: string) => void` | `undefined` | Обратный вызов для вывода stderr |

366| `strictMcpConfig` | `boolean` | `false` | Принудительно применяйте строгую валидацию MCP |

367| `systemPrompt` | `string \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean }` | `undefined` (минимальный запрос) | Конфигурация системного запроса. Передайте строку для пользовательского запроса или `{ type: 'preset', preset: 'claude_code' }` для использования системного запроса Claude Code. При использовании формы объекта preset добавьте `append` для расширения его дополнительными инструкциями и установите `excludeDynamicSections: true` для перемещения контекста для каждой сессии в первое пользовательское сообщение для [лучшего переиспользования prompt-cache на разных машинах](/ru/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

368| `thinking` | [`ThinkingConfig`](#thinking-config) | `{ type: 'adaptive' }` для поддерживаемых моделей | Контролирует поведение мышления/рассуждения Claude. См. [`ThinkingConfig`](#thinking-config) для опций |

369| `toolConfig` | [`ToolConfig`](#tool-config) | `undefined` | Конфигурация для встроенного поведения tool. См. [`ToolConfig`](#tool-config) для деталей |

370| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Конфигурация tool. Передайте массив имён tool или используйте preset для получения встроенных tools Claude Code |

371 

372### `Query` объект

373 

374Интерфейс, возвращаемый функцией `query()`.

375 

376```typescript theme={null}

377interface Query extends AsyncGenerator<SDKMessage, void> {

378 interrupt(): Promise<void>;

379 rewindFiles(

380 userMessageId: string,

381 options?: { dryRun?: boolean }

382 ): Promise<RewindFilesResult>;

383 setPermissionMode(mode: PermissionMode): Promise<void>;

384 setModel(model?: string): Promise<void>;

385 setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;

386 initializationResult(): Promise<SDKControlInitializeResponse>;

387 supportedCommands(): Promise<SlashCommand[]>;

388 supportedModels(): Promise<ModelInfo[]>;

389 supportedAgents(): Promise<AgentInfo[]>;

390 mcpServerStatus(): Promise<McpServerStatus[]>;

391 accountInfo(): Promise<AccountInfo>;

392 reconnectMcpServer(serverName: string): Promise<void>;

393 toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;

394 setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;

395 streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;

396 stopTask(taskId: string): Promise<void>;

397 close(): void;

398}

399```

400 

401#### Методы

402 

403| Метод | Описание |

404| :------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

405| `interrupt()` | Прерывает запрос (доступно только в режиме потока входных данных) |

406| `rewindFiles(userMessageId, options?)` | Восстанавливает файлы в их состояние в указанном пользовательском сообщении. Передайте `{ dryRun: true }` для предпросмотра изменений. Требует `enableFileCheckpointing: true`. См. [Контрольные точки файлов](/ru/agent-sdk/file-checkpointing) |

407| `setPermissionMode()` | Изменяет режим разрешения (доступно только в режиме потока входных данных) |

408| `setModel()` | Изменяет модель (доступно только в режиме потока входных данных) |

409| `setMaxThinkingTokens()` | *Устарело:* Используйте вместо этого опцию `thinking`. Изменяет максимальные токены мышления |

410| `initializationResult()` | Возвращает полный результат инициализации, включая поддерживаемые команды, модели, информацию об учётной записи и конфигурацию стиля вывода |

411| `supportedCommands()` | Возвращает доступные slash commands |

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

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

414| `mcpServerStatus()` | Возвращает статус подключённых MCP серверов |

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

416| `reconnectMcpServer(serverName)` | Переподключитесь к MCP серверу по имени |

417| `toggleMcpServer(serverName, enabled)` | Включите или отключите MCP сервер по имени |

418| `setMcpServers(servers)` | Динамически замените набор MCP серверов для этой сессии. Возвращает информацию о том, какие серверы были добавлены, удалены и какие ошибки |

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

420| `stopTask(taskId)` | Остановите выполняющуюся фоновую задачу по ID |

421| `close()` | Закройте запрос и завершите базовый процесс. Принудительно завершает запрос и очищает все ресурсы |

422 

423### `WarmQuery`

424 

425Дескриптор, возвращаемый [`startup()`](#startup). Подпроцесс уже запущен и инициализирован, поэтому вызов `query()` на этом дескрипторе записывает запрос непосредственно в готовый процесс без задержки запуска.

426 

427```typescript theme={null}

428interface WarmQuery extends AsyncDisposable {

429 query(prompt: string | AsyncIterable<SDKUserMessage>): Query;

430 close(): void;

431}

432```

433 

434#### Методы

435 

436| Метод | Описание |

437| :-------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |

438| `query(prompt)` | Отправьте запрос к предварительно разогретому подпроцессу и верните [`Query`](#query-object). Может быть вызван только один раз на `WarmQuery` |

439| `close()` | Закройте подпроцесс без отправки запроса. Используйте это для отказа от тёплого запроса, который больше не нужен |

440 

441`WarmQuery` реализует `AsyncDisposable`, поэтому его можно использовать с `await using` для автоматической очистки.

442 

443### `SDKControlInitializeResponse`

444 

445Тип возврата `initializationResult()`. Содержит данные инициализации сессии.

446 

447```typescript theme={null}

448type SDKControlInitializeResponse = {

449 commands: SlashCommand[];

450 agents: AgentInfo[];

451 output_style: string;

452 available_output_styles: string[];

453 models: ModelInfo[];

454 account: AccountInfo;

455 fast_mode_state?: "off" | "cooldown" | "on";

456};

457```

458 

459### `AgentDefinition`

460 

461Конфигурация для подагента, определённого программно.

462 

463```typescript theme={null}

464type AgentDefinition = {

465 description: string;

466 tools?: string[];

467 disallowedTools?: string[];

468 prompt: string;

469 model?: string;

470 mcpServers?: AgentMcpServerSpec[];

471 skills?: string[];

472 initialPrompt?: string;

473 maxTurns?: number;

474 background?: boolean;

475 memory?: "user" | "project" | "local";

476 effort?: "low" | "medium" | "high" | "xhigh" | "max" | number;

477 permissionMode?: PermissionMode;

478 criticalSystemReminder_EXPERIMENTAL?: string;

479};

480```

481 

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

483| :------------------------------------ | :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

484| `description` | Да | Описание на естественном языке, когда использовать этого агента |

485| `tools` | Нет | Массив разрешённых имён tool. Если опущено, наследует все tools от родителя |

486| `disallowedTools` | Нет | Массив имён tool для явного запрещения для этого агента |

487| `prompt` | Да | Системный запрос агента |

488| `model` | Нет | Переопределение модели для этого агента. Принимает псевдоним, такой как `'sonnet'`, `'opus'`, `'haiku'`, `'inherit'`, или полный ID модели. Если опущено или `'inherit'`, использует основную модель |

489| `mcpServers` | Нет | Спецификации MCP серверов для этого агента |

490| `skills` | Нет | Массив имён skills для предварительной загрузки в контекст агента |

491| `initialPrompt` | Нет | Автоматически отправляется как первый пользовательский ход, когда этот агент работает как агент основного потока |

492| `maxTurns` | Нет | Максимальное количество агентских ходов (раунды API) перед остановкой |

493| `background` | Нет | Запустите этого агента как неблокирующую фоновую задачу при вызове |

494| `memory` | Нет | Источник памяти для этого агента: `'user'`, `'project'` или `'local'` |

495| `effort` | Нет | Уровень усилий рассуждения для этого агента. Принимает именованный уровень или целое число |

496| `permissionMode` | Нет | Режим разрешения для выполнения tool в этом агенте. См. [`PermissionMode`](#permission-mode) |

497| `criticalSystemReminder_EXPERIMENTAL` | Нет | Экспериментально: Критическое напоминание, добавленное в системный запрос |

498 

499### `AgentMcpServerSpec`

500 

501Указывает MCP серверы, доступные подагенту. Может быть именем сервера (строка, ссылающаяся на сервер из конфигурации `mcpServers` родителя) или встроенной конфигурацией сервера, записью, отображающей имена серверов на конфигурации.

502 

503```typescript theme={null}

504type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;

505```

506 

507Где `McpServerConfigForProcessTransport` это `McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig`.

508 

509### `SettingSource`

510 

511Контролирует, какие источники конфигурации на основе файловой системы SDK загружает настройки из.

512 

513```typescript theme={null}

514type SettingSource = "user" | "project" | "local";

515```

516 

517| Значение | Описание | Местоположение |

518| :---------- | :----------------------------------------------- | :---------------------------- |

519| `'user'` | Глобальные пользовательские настройки | `~/.claude/settings.json` |

520| `'project'` | Общие настройки проекта (контролируемые версией) | `.claude/settings.json` |

521| `'local'` | Локальные настройки проекта (gitignored) | `.claude/settings.local.json` |

522 

523#### Поведение по умолчанию

524 

525Когда `settingSources` опущено или `undefined`, `query()` загружает те же настройки файловой системы, что и CLI Claude Code: пользовательские, проектные и локальные. Управляемые политикой настройки загружаются во всех случаях. См. [Что settingSources не контролирует](/ru/agent-sdk/claude-code-features#what-settingsources-does-not-control) для входных данных, которые читаются независимо от этой опции, и как их отключить.

526 

527#### Почему использовать settingSources

528 

529**Отключите настройки файловой системы:**

530 

531```typescript theme={null}

532// Не загружайте пользовательские, проектные или локальные настройки с диска

533const result = query({

534 prompt: "Analyze this code",

535 options: { settingSources: [] }

536});

537```

538 

539**Загружайте все настройки файловой системы явно:**

540 

541```typescript theme={null}

542const result = query({

543 prompt: "Analyze this code",

544 options: {

545 settingSources: ["user", "project", "local"] // Загружайте все настройки

546 }

547});

548```

549 

550**Загружайте только определённые источники настроек:**

551 

552```typescript theme={null}

553// Загружайте только настройки проекта, игнорируйте пользовательские и локальные

554const result = query({

555 prompt: "Run CI checks",

556 options: {

557 settingSources: ["project"] // Только .claude/settings.json

558 }

559});

560```

561 

562**Тестирование и окружения CI:**

563 

564```typescript theme={null}

565// Обеспечьте согласованное поведение в CI, исключив локальные настройки

566const result = query({

567 prompt: "Run tests",

568 options: {

569 settingSources: ["project"], // Только общие командные настройки

570 permissionMode: "bypassPermissions"

571 }

572});

573```

574 

575**SDK-только приложения:**

576 

577```typescript theme={null}

578// Определите всё программно.

579// Передайте [] для отказа от источников настроек файловой системы.

580const result = query({

581 prompt: "Review this PR",

582 options: {

583 settingSources: [],

584 agents: {

585 /* ... */

586 },

587 mcpServers: {

588 /* ... */

589 },

590 allowedTools: ["Read", "Grep", "Glob"]

591 }

592});

593```

594 

595**Загрузка инструкций проекта CLAUDE.md:**

596 

597```typescript theme={null}

598// Загружайте настройки проекта для включения файлов CLAUDE.md

599const result = query({

600 prompt: "Add a new feature following project conventions",

601 options: {

602 systemPrompt: {

603 type: "preset",

604 preset: "claude_code" // Используйте системный запрос Claude Code

605 },

606 settingSources: ["project"], // Загружает CLAUDE.md из директории проекта

607 allowedTools: ["Read", "Write", "Edit"]

608 }

609});

610```

611 

612#### Приоритет настроек

613 

614Когда загружаются несколько источников, настройки объединяются с этим приоритетом (от высшего к низшему):

615 

6161. Локальные настройки (`.claude/settings.local.json`)

6172. Настройки проекта (`.claude/settings.json`)

6183. Пользовательские настройки (`~/.claude/settings.json`)

619 

620Программные опции, такие как `agents` и `allowedTools`, переопределяют пользовательские, проектные и локальные настройки файловой системы. Управляемые политикой настройки имеют приоритет над программными опциями.

621 

622### `PermissionMode`

623 

624```typescript theme={null}

625type PermissionMode =

626 | "default" // Стандартное поведение разрешения

627 | "acceptEdits" // Автоматически принимайте редактирования файлов

628 | "bypassPermissions" // Обойдите все проверки разрешения

629 | "plan" // Режим планирования - без выполнения

630 | "dontAsk" // Не запрашивайте разрешения, отклоняйте, если не предварительно одобрено

631 | "auto"; // Используйте классификатор модели для одобрения или отклонения каждого вызова tool

632```

633 

634### `CanUseTool`

635 

636Тип пользовательской функции разрешения для контроля использования tool.

637 

638```typescript theme={null}

639type CanUseTool = (

640 toolName: string,

641 input: Record<string, unknown>,

642 options: {

643 signal: AbortSignal;

644 suggestions?: PermissionUpdate[];

645 blockedPath?: string;

646 decisionReason?: string;

647 toolUseID: string;

648 agentID?: string;

649 }

650) => Promise<PermissionResult>;

651```

652 

653| Опция | Тип | Описание |

654| :--------------- | :------------------------------------------- | :------------------------------------------------------------------------------------------ |

655| `signal` | `AbortSignal` | Сигнализируется, если операция должна быть отменена |

656| `suggestions` | [`PermissionUpdate`](#permission-update)`[]` | Предложенные обновления разрешения, чтобы пользователь не был запрошен снова для этого tool |

657| `blockedPath` | `string` | Путь файла, который вызвал запрос разрешения, если применимо |

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

659| `toolUseID` | `string` | Уникальный идентификатор для этого конкретного вызова tool в сообщении ассистента |

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

661 

662### `PermissionResult`

663 

664Результат проверки разрешения.

665 

666```typescript theme={null}

667type PermissionResult =

668 | {

669 behavior: "allow";

670 updatedInput?: Record<string, unknown>;

671 updatedPermissions?: PermissionUpdate[];

672 toolUseID?: string;

673 }

674 | {

675 behavior: "deny";

676 message: string;

677 interrupt?: boolean;

678 toolUseID?: string;

679 };

680```

681 

682### `ToolConfig`

683 

684Конфигурация для встроенного поведения tool.

685 

686```typescript theme={null}

687type ToolConfig = {

688 askUserQuestion?: {

689 previewFormat?: "markdown" | "html";

690 };

691};

692```

693 

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

695| :------------------------------ | :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

696| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | Выбирает поле `preview` на опциях [`AskUserQuestion`](/ru/agent-sdk/user-input#question-format) и устанавливает его формат содержимого. Если не установлено, Claude не выдаёт предпросмотры |

697 

698### `McpServerConfig`

699 

700Конфигурация для MCP серверов.

701 

702```typescript theme={null}

703type McpServerConfig =

704 | McpStdioServerConfig

705 | McpSSEServerConfig

706 | McpHttpServerConfig

707 | McpSdkServerConfigWithInstance;

708```

709 

710#### `McpStdioServerConfig`

711 

712```typescript theme={null}

713type McpStdioServerConfig = {

714 type?: "stdio";

715 command: string;

716 args?: string[];

717 env?: Record<string, string>;

718};

719```

720 

721#### `McpSSEServerConfig`

722 

723```typescript theme={null}

724type McpSSEServerConfig = {

725 type: "sse";

726 url: string;

727 headers?: Record<string, string>;

728};

729```

730 

731#### `McpHttpServerConfig`

732 

733```typescript theme={null}

734type McpHttpServerConfig = {

735 type: "http";

736 url: string;

737 headers?: Record<string, string>;

738};

739```

740 

741#### `McpSdkServerConfigWithInstance`

742 

743```typescript theme={null}

744type McpSdkServerConfigWithInstance = {

745 type: "sdk";

746 name: string;

747 instance: McpServer;

748};

749```

750 

751#### `McpClaudeAIProxyServerConfig`

752 

753```typescript theme={null}

754type McpClaudeAIProxyServerConfig = {

755 type: "claudeai-proxy";

756 url: string;

757 id: string;

758};

759```

760 

761### `SdkPluginConfig`

762 

763Конфигурация для загрузки plugins в SDK.

764 

765```typescript theme={null}

766type SdkPluginConfig = {

767 type: "local";

768 path: string;

769};

770```

771 

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

773| :----- | :-------- | :-------------------------------------------------------------------------------- |

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

775| `path` | `string` | Абсолютный или относительный путь к директории plugin |

776 

777**Пример:**

778 

779```typescript theme={null}

780plugins: [

781 { type: "local", path: "./my-plugin" },

782 { type: "local", path: "/absolute/path/to/plugin" }

783];

784```

785 

786Для полной информации о создании и использовании plugins см. [Plugins](/ru/agent-sdk/plugins).

787 

788## Типы сообщений

789 

790### `SDKMessage`

791 

792Тип объединения всех возможных сообщений, возвращаемых запросом.

793 

794```typescript theme={null}

795type SDKMessage =

796 | SDKAssistantMessage

797 | SDKUserMessage

798 | SDKUserMessageReplay

799 | SDKResultMessage

800 | SDKSystemMessage

801 | SDKPartialAssistantMessage

802 | SDKCompactBoundaryMessage

803 | SDKStatusMessage

804 | SDKLocalCommandOutputMessage

805 | SDKHookStartedMessage

806 | SDKHookProgressMessage

807 | SDKHookResponseMessage

808 | SDKPluginInstallMessage

809 | SDKToolProgressMessage

810 | SDKAuthStatusMessage

811 | SDKTaskNotificationMessage

812 | SDKTaskStartedMessage

813 | SDKTaskProgressMessage

814 | SDKTaskUpdatedMessage

815 | SDKFilesPersistedEvent

816 | SDKToolUseSummaryMessage

817 | SDKRateLimitEvent

818 | SDKPromptSuggestionMessage;

819```

820 

821### `SDKAssistantMessage`

822 

823Сообщение ответа ассистента.

824 

825```typescript theme={null}

826type SDKAssistantMessage = {

827 type: "assistant";

828 uuid: UUID;

829 session_id: string;

830 message: BetaMessage; // Из Anthropic SDK

831 parent_tool_use_id: string | null;

832 error?: SDKAssistantMessageError;

833};

834```

835 

836Поле `message` это [`BetaMessage`](https://platform.claude.com/docs/ru/api/messages/create) из Anthropic SDK. Оно включает поля, такие как `id`, `content`, `model`, `stop_reason` и `usage`.

837 

838`SDKAssistantMessageError` это один из: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'billing_error'`, `'rate_limit'`, `'invalid_request'`, `'server_error'`, `'max_output_tokens'` или `'unknown'`.

839 

840### `SDKUserMessage`

841 

842Сообщение пользовательского ввода.

843 

844```typescript theme={null}

845type SDKUserMessage = {

846 type: "user";

847 uuid?: UUID;

848 session_id: string;

849 message: MessageParam; // Из Anthropic SDK

850 parent_tool_use_id: string | null;

851 isSynthetic?: boolean;

852 shouldQuery?: boolean;

853 tool_use_result?: unknown;

854 origin?: SDKMessageOrigin;

855};

856```

857 

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

859 

860### `SDKUserMessageReplay`

861 

862Повторно воспроизведённое пользовательское сообщение с требуемым UUID.

863 

864```typescript theme={null}

865type SDKUserMessageReplay = {

866 type: "user";

867 uuid: UUID;

868 session_id: string;

869 message: MessageParam;

870 parent_tool_use_id: string | null;

871 isSynthetic?: boolean;

872 tool_use_result?: unknown;

873 origin?: SDKMessageOrigin;

874 isReplay: true;

875};

876```

877 

878### `SDKResultMessage`

879 

880Финальное сообщение результата.

881 

882```typescript theme={null}

883type SDKResultMessage =

884 | {

885 type: "result";

886 subtype: "success";

887 uuid: UUID;

888 session_id: string;

889 duration_ms: number;

890 duration_api_ms: number;

891 is_error: boolean;

892 num_turns: number;

893 result: string;

894 stop_reason: string | null;

895 total_cost_usd: number;

896 usage: NonNullableUsage;

897 modelUsage: { [modelName: string]: ModelUsage };

898 permission_denials: SDKPermissionDenial[];

899 structured_output?: unknown;

900 deferred_tool_use?: { id: string; name: string; input: Record<string, unknown> };

901 origin?: SDKMessageOrigin;

902 }

903 | {

904 type: "result";

905 subtype:

906 | "error_max_turns"

907 | "error_during_execution"

908 | "error_max_budget_usd"

909 | "error_max_structured_output_retries";

910 uuid: UUID;

911 session_id: string;

912 duration_ms: number;

913 duration_api_ms: number;

914 is_error: boolean;

915 num_turns: number;

916 stop_reason: string | null;

917 total_cost_usd: number;

918 usage: NonNullableUsage;

919 modelUsage: { [modelName: string]: ModelUsage };

920 permission_denials: SDKPermissionDenial[];

921 errors: string[];

922 origin?: SDKMessageOrigin;

923 };

924```

925 

926Поле `origin` передаёт [`SDKMessageOrigin`](#sdkmessageorigin) пользовательского сообщения, которое запустило этот результат. Когда фоновая задача завершается и SDK внедряет синтетический ход продолжения, результирующее `SDKResultMessage` содержит `origin: { kind: "task-notification" }`. Проверьте это поле, чтобы различить результаты, которые отвечают на ваш запрос, от результатов, выданных для продолжений фоновых задач, чтобы вы могли маршрутизировать или подавлять последние. Поле отсутствует для результатов, выданных перед любым пользовательским ходом, таких как ошибки при запуске.

927 

928Когда hook `PreToolUse` возвращает `permissionDecision: "defer"`, результат имеет `stop_reason: "tool_deferred"` и `deferred_tool_use` содержит `id`, `name` и `input` ожидающего инструмента. Прочитайте это поле, чтобы отобразить запрос в вашем собственном пользовательском интерфейсе, затем возобновите с тем же `session_id` для продолжения. Смотрите [Отложить вызов инструмента на потом](/ru/hooks#defer-a-tool-call-for-later) для полного цикла.

929 

930### `SDKSystemMessage`

931 

932Сообщение инициализации системы.

933 

934```typescript theme={null}

935type SDKSystemMessage = {

936 type: "system";

937 subtype: "init";

938 uuid: UUID;

939 session_id: string;

940 agents?: string[];

941 apiKeySource: ApiKeySource;

942 betas?: string[];

943 claude_code_version: string;

944 cwd: string;

945 tools: string[];

946 mcp_servers: {

947 name: string;

948 status: string;

949 }[];

950 model: string;

951 permissionMode: PermissionMode;

952 slash_commands: string[];

953 output_style: string;

954 skills: string[];

955 plugins: { name: string; path: string }[];

956};

957```

958 

959### `SDKPartialAssistantMessage`

960 

961Потоковое частичное сообщение (только когда `includePartialMessages` равен true).

962 

963```typescript theme={null}

964type SDKPartialAssistantMessage = {

965 type: "stream_event";

966 event: BetaRawMessageStreamEvent; // Из Anthropic SDK

967 parent_tool_use_id: string | null;

968 uuid: UUID;

969 session_id: string;

970};

971```

972 

973### `SDKCompactBoundaryMessage`

974 

975Сообщение, указывающее границу компактирования диалога.

976 

977```typescript theme={null}

978type SDKCompactBoundaryMessage = {

979 type: "system";

980 subtype: "compact_boundary";

981 uuid: UUID;

982 session_id: string;

983 compact_metadata: {

984 trigger: "manual" | "auto";

985 pre_tokens: number;

986 };

987};

988```

989 

990### `SDKPluginInstallMessage`

991 

992Событие прогресса установки plugin. Выдаётся, когда установлена [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/ru/env-vars), поэтому ваше приложение Agent SDK может отслеживать установку marketplace plugin перед первым ходом. Статусы `started` и `completed` заключают в скобки общую установку. Статусы `installed` и `failed` сообщают об отдельных marketplaces и включают `name`.

993 

994```typescript theme={null}

995type SDKPluginInstallMessage = {

996 type: "system";

997 subtype: "plugin_install";

998 status: "started" | "installed" | "failed" | "completed";

999 name?: string;

1000 error?: string;

1001 uuid: UUID;

1002 session_id: string;

1003};

1004```

1005 

1006### `SDKPermissionDenial`

1007 

1008Информация об отклонённом использовании tool.

1009 

1010```typescript theme={null}

1011type SDKPermissionDenial = {

1012 tool_name: string;

1013 tool_use_id: string;

1014 tool_input: Record<string, unknown>;

1015};

1016```

1017 

1018### `SDKMessageOrigin`

1019 

1020Происхождение сообщения с ролью пользователя. Это появляется как `origin` на [`SDKUserMessage`](#sdkusermessage) и передаётся на соответствующее [`SDKResultMessage`](#sdkresultmessage), чтобы вы могли определить, что запустило данный ход.

1021 

1022```typescript theme={null}

1023type SDKMessageOrigin =

1024 | { kind: "human" }

1025 | { kind: "channel"; server: string }

1026 | { kind: "peer"; from: string; name?: string }

1027 | { kind: "task-notification" }

1028 | { kind: "coordinator" };

1029```

1030 

1031| `kind` | Значение |

1032| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |

1033| `human` | Прямой ввод от конечного пользователя. На пользовательских сообщениях отсутствующий `origin` также означает ввод человека. |

1034| `channel` | Сообщение, поступающее на [канал](/ru/channels). `server` это имя исходного MCP сервера. |

1035| `peer` | Сообщение от другого сеанса агента через `SendMessage`. `from` это адрес отправителя; `name` это отображаемое имя отправителя, если доступно. |

1036| `task-notification` | Синтетический ход, внедрённый после завершения фоновой задачи. Смотрите [`SDKTaskNotificationMessage`](#sdktasknotificationmessage). |

1037| `coordinator` | Сообщение от координатора команды в [команде агентов](/ru/agent-teams). |

1038 

1039## Типы hooks

1040 

1041Для полного руководства по использованию hooks с примерами и общими паттернами см. [руководство Hooks](/ru/agent-sdk/hooks).

1042 

1043### `HookEvent`

1044 

1045Доступные события hooks.

1046 

1047```typescript theme={null}

1048type HookEvent =

1049 | "PreToolUse"

1050 | "PostToolUse"

1051 | "PostToolUseFailure"

1052 | "PostToolBatch"

1053 | "Notification"

1054 | "UserPromptSubmit"

1055 | "SessionStart"

1056 | "SessionEnd"

1057 | "Stop"

1058 | "SubagentStart"

1059 | "SubagentStop"

1060 | "PreCompact"

1061 | "PermissionRequest"

1062 | "Setup"

1063 | "TeammateIdle"

1064 | "TaskCompleted"

1065 | "ConfigChange"

1066 | "WorktreeCreate"

1067 | "WorktreeRemove";

1068```

1069 

1070### `HookCallback`

1071 

1072Тип функции обратного вызова hook.

1073 

1074```typescript theme={null}

1075type HookCallback = (

1076 input: HookInput, // Объединение всех типов входных данных hook

1077 toolUseID: string | undefined,

1078 options: { signal: AbortSignal }

1079) => Promise<HookJSONOutput>;

1080```

1081 

1082### `HookCallbackMatcher`

1083 

1084Конфигурация hook с опциональным matcher.

1085 

1086```typescript theme={null}

1087interface HookCallbackMatcher {

1088 matcher?: string;

1089 hooks: HookCallback[];

1090 timeout?: number; // Timeout в секундах для всех hooks в этом matcher

1091}

1092```

1093 

1094### `HookInput`

1095 

1096Тип объединения всех типов входных данных hook.

1097 

1098```typescript theme={null}

1099type HookInput =

1100 | PreToolUseHookInput

1101 | PostToolUseHookInput

1102 | PostToolUseFailureHookInput

1103 | PostToolBatchHookInput

1104 | NotificationHookInput

1105 | UserPromptSubmitHookInput

1106 | SessionStartHookInput

1107 | SessionEndHookInput

1108 | StopHookInput

1109 | SubagentStartHookInput

1110 | SubagentStopHookInput

1111 | PreCompactHookInput

1112 | PermissionRequestHookInput

1113 | SetupHookInput

1114 | TeammateIdleHookInput

1115 | TaskCompletedHookInput

1116 | ConfigChangeHookInput

1117 | WorktreeCreateHookInput

1118 | WorktreeRemoveHookInput;

1119```

1120 

1121### `BaseHookInput`

1122 

1123Базовый интерфейс, который расширяют все типы входных данных hook.

1124 

1125```typescript theme={null}

1126type BaseHookInput = {

1127 session_id: string;

1128 transcript_path: string;

1129 cwd: string;

1130 permission_mode?: string;

1131 agent_id?: string;

1132 agent_type?: string;

1133};

1134```

1135 

1136#### `PreToolUseHookInput`

1137 

1138```typescript theme={null}

1139type PreToolUseHookInput = BaseHookInput & {

1140 hook_event_name: "PreToolUse";

1141 tool_name: string;

1142 tool_input: unknown;

1143 tool_use_id: string;

1144};

1145```

1146 

1147#### `PostToolUseHookInput`

1148 

1149```typescript theme={null}

1150type PostToolUseHookInput = BaseHookInput & {

1151 hook_event_name: "PostToolUse";

1152 tool_name: string;

1153 tool_input: unknown;

1154 tool_response: unknown;

1155 tool_use_id: string;

1156 duration_ms?: number;

1157};

1158```

1159 

1160#### `PostToolUseFailureHookInput`

1161 

1162```typescript theme={null}

1163type PostToolUseFailureHookInput = BaseHookInput & {

1164 hook_event_name: "PostToolUseFailure";

1165 tool_name: string;

1166 tool_input: unknown;

1167 tool_use_id: string;

1168 error: string;

1169 is_interrupt?: boolean;

1170 duration_ms?: number;

1171};

1172```

1173 

1174#### `PostToolBatchHookInput`

1175 

1176Срабатывает один раз после того, как каждый вызов инструмента в пакете разрешится, перед следующим запросом модели. `tool_response` содержит сериализованное содержимое `tool_result`, которое видит модель; форма отличается от структурированного объекта `Output` в `PostToolUseHookInput`.

1177 

1178```typescript theme={null}

1179type PostToolBatchHookInput = BaseHookInput & {

1180 hook_event_name: "PostToolBatch";

1181 tool_calls: PostToolBatchToolCall[];

1182};

1183 

1184type PostToolBatchToolCall = {

1185 tool_name: string;

1186 tool_input: unknown;

1187 tool_use_id: string;

1188 tool_response?: unknown;

1189};

1190```

1191 

1192#### `NotificationHookInput`

1193 

1194```typescript theme={null}

1195type NotificationHookInput = BaseHookInput & {

1196 hook_event_name: "Notification";

1197 message: string;

1198 title?: string;

1199 notification_type: string;

1200};

1201```

1202 

1203#### `UserPromptSubmitHookInput`

1204 

1205```typescript theme={null}

1206type UserPromptSubmitHookInput = BaseHookInput & {

1207 hook_event_name: "UserPromptSubmit";

1208 prompt: string;

1209};

1210```

1211 

1212#### `SessionStartHookInput`

1213 

1214```typescript theme={null}

1215type SessionStartHookInput = BaseHookInput & {

1216 hook_event_name: "SessionStart";

1217 source: "startup" | "resume" | "clear" | "compact";

1218 agent_type?: string;

1219 model?: string;

1220};

1221```

1222 

1223#### `SessionEndHookInput`

1224 

1225```typescript theme={null}

1226type SessionEndHookInput = BaseHookInput & {

1227 hook_event_name: "SessionEnd";

1228 reason: ExitReason; // Строка из массива EXIT_REASONS

1229};

1230```

1231 

1232#### `StopHookInput`

1233 

1234```typescript theme={null}

1235type StopHookInput = BaseHookInput & {

1236 hook_event_name: "Stop";

1237 stop_hook_active: boolean;

1238 last_assistant_message?: string;

1239};

1240```

1241 

1242#### `SubagentStartHookInput`

1243 

1244```typescript theme={null}

1245type SubagentStartHookInput = BaseHookInput & {

1246 hook_event_name: "SubagentStart";

1247 agent_id: string;

1248 agent_type: string;

1249};

1250```

1251 

1252#### `SubagentStopHookInput`

1253 

1254```typescript theme={null}

1255type SubagentStopHookInput = BaseHookInput & {

1256 hook_event_name: "SubagentStop";

1257 stop_hook_active: boolean;

1258 agent_id: string;

1259 agent_transcript_path: string;

1260 agent_type: string;

1261 last_assistant_message?: string;

1262};

1263```

1264 

1265#### `PreCompactHookInput`

1266 

1267```typescript theme={null}

1268type PreCompactHookInput = BaseHookInput & {

1269 hook_event_name: "PreCompact";

1270 trigger: "manual" | "auto";

1271 custom_instructions: string | null;

1272};

1273```

1274 

1275#### `PermissionRequestHookInput`

1276 

1277```typescript theme={null}

1278type PermissionRequestHookInput = BaseHookInput & {

1279 hook_event_name: "PermissionRequest";

1280 tool_name: string;

1281 tool_input: unknown;

1282 permission_suggestions?: PermissionUpdate[];

1283};

1284```

1285 

1286#### `SetupHookInput`

1287 

1288```typescript theme={null}

1289type SetupHookInput = BaseHookInput & {

1290 hook_event_name: "Setup";

1291 trigger: "init" | "maintenance";

1292};

1293```

1294 

1295#### `TeammateIdleHookInput`

1296 

1297```typescript theme={null}

1298type TeammateIdleHookInput = BaseHookInput & {

1299 hook_event_name: "TeammateIdle";

1300 teammate_name: string;

1301 team_name: string;

1302};

1303```

1304 

1305#### `TaskCompletedHookInput`

1306 

1307```typescript theme={null}

1308type TaskCompletedHookInput = BaseHookInput & {

1309 hook_event_name: "TaskCompleted";

1310 task_id: string;

1311 task_subject: string;

1312 task_description?: string;

1313 teammate_name?: string;

1314 team_name?: string;

1315};

1316```

1317 

1318#### `ConfigChangeHookInput`

1319 

1320```typescript theme={null}

1321type ConfigChangeHookInput = BaseHookInput & {

1322 hook_event_name: "ConfigChange";

1323 source:

1324 | "user_settings"

1325 | "project_settings"

1326 | "local_settings"

1327 | "policy_settings"

1328 | "skills";

1329 file_path?: string;

1330};

1331```

1332 

1333#### `WorktreeCreateHookInput`

1334 

1335```typescript theme={null}

1336type WorktreeCreateHookInput = BaseHookInput & {

1337 hook_event_name: "WorktreeCreate";

1338 name: string;

1339};

1340```

1341 

1342#### `WorktreeRemoveHookInput`

1343 

1344```typescript theme={null}

1345type WorktreeRemoveHookInput = BaseHookInput & {

1346 hook_event_name: "WorktreeRemove";

1347 worktree_path: string;

1348};

1349```

1350 

1351### `HookJSONOutput`

1352 

1353Возвращаемое значение hook.

1354 

1355```typescript theme={null}

1356type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;

1357```

1358 

1359#### `AsyncHookJSONOutput`

1360 

1361```typescript theme={null}

1362type AsyncHookJSONOutput = {

1363 async: true;

1364 asyncTimeout?: number;

1365};

1366```

1367 

1368#### `SyncHookJSONOutput`

1369 

1370```typescript theme={null}

1371type SyncHookJSONOutput = {

1372 continue?: boolean;

1373 suppressOutput?: boolean;

1374 stopReason?: string;

1375 decision?: "approve" | "block";

1376 systemMessage?: string;

1377 reason?: string;

1378 hookSpecificOutput?:

1379 | {

1380 hookEventName: "PreToolUse";

1381 permissionDecision?: "allow" | "deny" | "ask" | "defer";

1382 permissionDecisionReason?: string;

1383 updatedInput?: Record<string, unknown>;

1384 additionalContext?: string;

1385 }

1386 | {

1387 hookEventName: "UserPromptSubmit";

1388 additionalContext?: string;

1389 }

1390 | {

1391 hookEventName: "SessionStart";

1392 additionalContext?: string;

1393 }

1394 | {

1395 hookEventName: "Setup";

1396 additionalContext?: string;

1397 }

1398 | {

1399 hookEventName: "SubagentStart";

1400 additionalContext?: string;

1401 }

1402 | {

1403 hookEventName: "PostToolUse";

1404 additionalContext?: string;

1405 updatedToolOutput?: unknown;

1406 /** @deprecated Используйте `updatedToolOutput`, который работает для всех инструментов. */

1407 updatedMCPToolOutput?: unknown;

1408 }

1409 | {

1410 hookEventName: "PostToolUseFailure";

1411 additionalContext?: string;

1412 }

1413 | {

1414 hookEventName: "PostToolBatch";

1415 additionalContext?: string;

1416 }

1417 | {

1418 hookEventName: "Notification";

1419 additionalContext?: string;

1420 }

1421 | {

1422 hookEventName: "PermissionRequest";

1423 decision:

1424 | {

1425 behavior: "allow";

1426 updatedInput?: Record<string, unknown>;

1427 updatedPermissions?: PermissionUpdate[];

1428 }

1429 | {

1430 behavior: "deny";

1431 message?: string;

1432 interrupt?: boolean;

1433 };

1434 };

1435};

1436```

1437 

1438## Типы входных данных tool

1439 

1440Документация схем входных данных для всех встроенных tools Claude Code. Эти типы экспортируются из `@anthropic-ai/claude-agent-sdk` и могут быть использованы для типобезопасного взаимодействия с tools.

1441 

1442### `ToolInputSchemas`

1443 

1444Объединение всех типов входных данных tool, экспортируемое из `@anthropic-ai/claude-agent-sdk`.

1445 

1446```typescript theme={null}

1447type ToolInputSchemas =

1448 | AgentInput

1449 | AskUserQuestionInput

1450 | BashInput

1451 | TaskOutputInput

1452 | EnterWorktreeInput

1453 | ExitPlanModeInput

1454 | FileEditInput

1455 | FileReadInput

1456 | FileWriteInput

1457 | GlobInput

1458 | GrepInput

1459 | ListMcpResourcesInput

1460 | McpInput

1461 | MonitorInput

1462 | NotebookEditInput

1463 | ReadMcpResourceInput

1464 | SubscribeMcpResourceInput

1465 | SubscribePollingInput

1466 | TaskStopInput

1467 | TodoWriteInput

1468 | UnsubscribeMcpResourceInput

1469 | UnsubscribePollingInput

1470 | WebFetchInput

1471 | WebSearchInput;

1472```

1473 

1474### Agent

1475 

1476**Имя tool:** `Agent` (ранее `Task`, который всё ещё принимается как псевдоним)

1477 

1478```typescript theme={null}

1479type AgentInput = {

1480 description: string;

1481 prompt: string;

1482 subagent_type: string;

1483 model?: "sonnet" | "opus" | "haiku";

1484 resume?: string;

1485 run_in_background?: boolean;

1486 max_turns?: number;

1487 name?: string;

1488 team_name?: string;

1489 mode?: "acceptEdits" | "bypassPermissions" | "default" | "dontAsk" | "plan";

1490 isolation?: "worktree";

1491};

1492```

1493 

1494Запускает нового агента для автономной обработки сложных многошаговых задач.

1495 

1496### AskUserQuestion

1497 

1498**Имя tool:** `AskUserQuestion`

1499 

1500```typescript theme={null}

1501type AskUserQuestionInput = {

1502 questions: Array<{

1503 question: string;

1504 header: string;

1505 options: Array<{ label: string; description: string; preview?: string }>;

1506 multiSelect: boolean;

1507 }>;

1508};

1509```

1510 

1511Задаёт пользователю уточняющие вопросы во время выполнения. См. [Обработка одобрений и пользовательского ввода](/ru/agent-sdk/user-input#handle-clarifying-questions) для деталей использования.

1512 

1513### Bash

1514 

1515**Имя tool:** `Bash`

1516 

1517```typescript theme={null}

1518type BashInput = {

1519 command: string;

1520 timeout?: number;

1521 description?: string;

1522 run_in_background?: boolean;

1523 dangerouslyDisableSandbox?: boolean;

1524};

1525```

1526 

1527Выполняет bash команды в постоянной сессии shell с опциональным timeout и фоновым выполнением.

1528 

1529### Monitor

1530 

1531**Имя tool:** `Monitor`

1532 

1533```typescript theme={null}

1534type MonitorInput = {

1535 command: string;

1536 description: string;

1537 timeout_ms?: number;

1538 persistent?: boolean;

1539};

1540```

1541 

1542Запускает фоновый скрипт и доставляет каждую строку stdout к Claude как событие, чтобы он мог реагировать без опроса. Установите `persistent: true` для наблюдений на уровне сессии, таких как хвосты логов. Monitor следует тем же правилам разрешения, что и Bash. См. [справочник tool Monitor](/ru/tools-reference#monitor-tool) для поведения и доступности провайдера.

1543 

1544### TaskOutput

1545 

1546**Имя tool:** `TaskOutput`

1547 

1548```typescript theme={null}

1549type TaskOutputInput = {

1550 task_id: string;

1551 block: boolean;

1552 timeout: number;

1553};

1554```

1555 

1556Получает вывод из выполняющейся или завершённой фоновой задачи.

1557 

1558### Edit

1559 

1560**Имя tool:** `Edit`

1561 

1562```typescript theme={null}

1563type FileEditInput = {

1564 file_path: string;

1565 old_string: string;

1566 new_string: string;

1567 replace_all?: boolean;

1568};

1569```

1570 

1571Выполняет точные замены строк в файлах.

1572 

1573### Read

1574 

1575**Имя tool:** `Read`

1576 

1577```typescript theme={null}

1578type FileReadInput = {

1579 file_path: string;

1580 offset?: number;

1581 limit?: number;

1582 pages?: string;

1583};

1584```

1585 

1586Читает файлы из локальной файловой системы, включая текст, изображения, PDF и Jupyter notebooks. Используйте `pages` для диапазонов страниц PDF (например, `"1-5"`).

1587 

1588### Write

1589 

1590**Имя tool:** `Write`

1591 

1592```typescript theme={null}

1593type FileWriteInput = {

1594 file_path: string;

1595 content: string;

1596};

1597```

1598 

1599Записывает файл в локальную файловую систему, перезаписывая, если он существует.

1600 

1601### Glob

1602 

1603**Имя tool:** `Glob`

1604 

1605```typescript theme={null}

1606type GlobInput = {

1607 pattern: string;

1608 path?: string;

1609};

1610```

1611 

1612Быстрое сопоставление паттернов файлов, которое работает с любым размером кодовой базы.

1613 

1614### Grep

1615 

1616**Имя tool:** `Grep`

1617 

1618```typescript theme={null}

1619type GrepInput = {

1620 pattern: string;

1621 path?: string;

1622 glob?: string;

1623 type?: string;

1624 output_mode?: "content" | "files_with_matches" | "count";

1625 "-i"?: boolean;

1626 "-n"?: boolean;

1627 "-B"?: number;

1628 "-A"?: number;

1629 "-C"?: number;

1630 context?: number;

1631 head_limit?: number;

1632 offset?: number;

1633 multiline?: boolean;

1634};

1635```

1636 

1637Мощный tool поиска, построенный на ripgrep с поддержкой regex.

1638 

1639### TaskStop

1640 

1641**Имя tool:** `TaskStop`

1642 

1643```typescript theme={null}

1644type TaskStopInput = {

1645 task_id?: string;

1646 shell_id?: string; // Устарело: используйте task_id

1647};

1648```

1649 

1650Останавливает выполняющуюся фоновую задачу или shell по ID.

1651 

1652### NotebookEdit

1653 

1654**Имя tool:** `NotebookEdit`

1655 

1656```typescript theme={null}

1657type NotebookEditInput = {

1658 notebook_path: string;

1659 cell_id?: string;

1660 new_source: string;

1661 cell_type?: "code" | "markdown";

1662 edit_mode?: "replace" | "insert" | "delete";

1663};

1664```

1665 

1666Редактирует ячейки в файлах Jupyter notebook.

1667 

1668### WebFetch

1669 

1670**Имя tool:** `WebFetch`

1671 

1672```typescript theme={null}

1673type WebFetchInput = {

1674 url: string;

1675 prompt: string;

1676};

1677```

1678 

1679Получает содержимое с URL и обрабатывает его с помощью модели AI.

1680 

1681### WebSearch

1682 

1683**Имя tool:** `WebSearch`

1684 

1685```typescript theme={null}

1686type WebSearchInput = {

1687 query: string;

1688 allowed_domains?: string[];

1689 blocked_domains?: string[];

1690};

1691```

1692 

1693Ищет в веб и возвращает отформатированные результаты.

1694 

1695### TodoWrite

1696 

1697**Имя tool:** `TodoWrite`

1698 

1699```typescript theme={null}

1700type TodoWriteInput = {

1701 todos: Array<{

1702 content: string;

1703 status: "pending" | "in_progress" | "completed";

1704 activeForm: string;

1705 }>;

1706};

1707```

1708 

1709Создаёт и управляет структурированным списком задач для отслеживания прогресса.

1710 

1711### ExitPlanMode

1712 

1713**Имя tool:** `ExitPlanMode`

1714 

1715```typescript theme={null}

1716type ExitPlanModeInput = {

1717 allowedPrompts?: Array<{

1718 tool: "Bash";

1719 prompt: string;

1720 }>;

1721};

1722```

1723 

1724Выходит из режима планирования. Опционально указывает разрешения на основе запроса, необходимые для реализации плана.

1725 

1726### ListMcpResources

1727 

1728**Имя tool:** `ListMcpResources`

1729 

1730```typescript theme={null}

1731type ListMcpResourcesInput = {

1732 server?: string;

1733};

1734```

1735 

1736Перечисляет доступные MCP ресурсы из подключённых серверов.

1737 

1738### ReadMcpResource

1739 

1740**Имя tool:** `ReadMcpResource`

1741 

1742```typescript theme={null}

1743type ReadMcpResourceInput = {

1744 server: string;

1745 uri: string;

1746};

1747```

1748 

1749Читает определённый MCP ресурс с сервера.

1750 

1751### EnterWorktree

1752 

1753**Имя tool:** `EnterWorktree`

1754 

1755```typescript theme={null}

1756type EnterWorktreeInput = {

1757 name?: string;

1758 path?: string;

1759};

1760```

1761 

1762Создаёт и входит во временный git worktree для изолированной работы. Передайте `path` для переключения в существующий worktree текущего репозитория вместо создания нового. `name` и `path` являются взаимоисключающими.

1763 

1764## Типы выходных данных tool

1765 

1766Документация схем выходных данных для всех встроенных tools Claude Code. Эти типы экспортируются из `@anthropic-ai/claude-agent-sdk` и представляют фактические данные ответа, возвращаемые каждым tool.

1767 

1768### `ToolOutputSchemas`

1769 

1770Объединение всех типов выходных данных tool.

1771 

1772```typescript theme={null}

1773type ToolOutputSchemas =

1774 | AgentOutput

1775 | AskUserQuestionOutput

1776 | BashOutput

1777 | EnterWorktreeOutput

1778 | ExitPlanModeOutput

1779 | FileEditOutput

1780 | FileReadOutput

1781 | FileWriteOutput

1782 | GlobOutput

1783 | GrepOutput

1784 | ListMcpResourcesOutput

1785 | MonitorOutput

1786 | NotebookEditOutput

1787 | ReadMcpResourceOutput

1788 | TaskStopOutput

1789 | TodoWriteOutput

1790 | WebFetchOutput

1791 | WebSearchOutput;

1792```

1793 

1794### Agent

1795 

1796**Имя tool:** `Agent` (ранее `Task`, который всё ещё принимается как псевдоним)

1797 

1798```typescript theme={null}

1799type AgentOutput =

1800 | {

1801 status: "completed";

1802 agentId: string;

1803 content: Array<{ type: "text"; text: string }>;

1804 totalToolUseCount: number;

1805 totalDurationMs: number;

1806 totalTokens: number;

1807 usage: {

1808 input_tokens: number;

1809 output_tokens: number;

1810 cache_creation_input_tokens: number | null;

1811 cache_read_input_tokens: number | null;

1812 server_tool_use: {

1813 web_search_requests: number;

1814 web_fetch_requests: number;

1815 } | null;

1816 service_tier: ("standard" | "priority" | "batch") | null;

1817 cache_creation: {

1818 ephemeral_1h_input_tokens: number;

1819 ephemeral_5m_input_tokens: number;

1820 } | null;

1821 };

1822 prompt: string;

1823 }

1824 | {

1825 status: "async_launched";

1826 agentId: string;

1827 description: string;

1828 prompt: string;

1829 outputFile: string;

1830 canReadOutputFile?: boolean;

1831 }

1832 | {

1833 status: "sub_agent_entered";

1834 description: string;

1835 message: string;

1836 };

1837```

1838 

1839Возвращает результат от подагента. Дискриминирован по полю `status`: `"completed"` для завершённых задач, `"async_launched"` для фоновых задач и `"sub_agent_entered"` для интерактивных подагентов.

1840 

1841### AskUserQuestion

1842 

1843**Имя tool:** `AskUserQuestion`

1844 

1845```typescript theme={null}

1846type AskUserQuestionOutput = {

1847 questions: Array<{

1848 question: string;

1849 header: string;

1850 options: Array<{ label: string; description: string; preview?: string }>;

1851 multiSelect: boolean;

1852 }>;

1853 answers: Record<string, string>;

1854};

1855```

1856 

1857Возвращает заданные вопросы и ответы пользователя.

1858 

1859### Bash

1860 

1861**Имя tool:** `Bash`

1862 

1863```typescript theme={null}

1864type BashOutput = {

1865 stdout: string;

1866 stderr: string;

1867 rawOutputPath?: string;

1868 interrupted: boolean;

1869 isImage?: boolean;

1870 backgroundTaskId?: string;

1871 backgroundedByUser?: boolean;

1872 dangerouslyDisableSandbox?: boolean;

1873 returnCodeInterpretation?: string;

1874 structuredContent?: unknown[];

1875 persistedOutputPath?: string;

1876 persistedOutputSize?: number;

1877};

1878```

1879 

1880Возвращает вывод команды с разделённым stdout/stderr. Фоновые команды включают `backgroundTaskId`.

1881 

1882### Monitor

1883 

1884**Имя tool:** `Monitor`

1885 

1886```typescript theme={null}

1887type MonitorOutput = {

1888 taskId: string;

1889 timeoutMs: number;

1890 persistent?: boolean;

1891};

1892```

1893 

1894Возвращает ID фоновой задачи для выполняющегося монитора. Используйте этот ID с `TaskStop` для раннего отмены наблюдения.

1895 

1896### Edit

1897 

1898**Имя tool:** `Edit`

1899 

1900```typescript theme={null}

1901type FileEditOutput = {

1902 filePath: string;

1903 oldString: string;

1904 newString: string;

1905 originalFile: string;

1906 structuredPatch: Array<{

1907 oldStart: number;

1908 oldLines: number;

1909 newStart: number;

1910 newLines: number;

1911 lines: string[];

1912 }>;

1913 userModified: boolean;

1914 replaceAll: boolean;

1915 gitDiff?: {

1916 filename: string;

1917 status: "modified" | "added";

1918 additions: number;

1919 deletions: number;

1920 changes: number;

1921 patch: string;

1922 };

1923};

1924```

1925 

1926Возвращает структурированный diff операции редактирования.

1927 

1928### Read

1929 

1930**Имя tool:** `Read`

1931 

1932```typescript theme={null}

1933type FileReadOutput =

1934 | {

1935 type: "text";

1936 file: {

1937 filePath: string;

1938 content: string;

1939 numLines: number;

1940 startLine: number;

1941 totalLines: number;

1942 };

1943 }

1944 | {

1945 type: "image";

1946 file: {

1947 base64: string;

1948 type: "image/jpeg" | "image/png" | "image/gif" | "image/webp";

1949 originalSize: number;

1950 dimensions?: {

1951 originalWidth?: number;

1952 originalHeight?: number;

1953 displayWidth?: number;

1954 displayHeight?: number;

1955 };

1956 };

1957 }

1958 | {

1959 type: "notebook";

1960 file: {

1961 filePath: string;

1962 cells: unknown[];

1963 };

1964 }

1965 | {

1966 type: "pdf";

1967 file: {

1968 filePath: string;

1969 base64: string;

1970 originalSize: number;

1971 };

1972 }

1973 | {

1974 type: "parts";

1975 file: {

1976 filePath: string;

1977 originalSize: number;

1978 count: number;

1979 outputDir: string;

1980 };

1981 };

1982```

1983 

1984Возвращает содержимое файла в формате, подходящем для типа файла. Дискриминирован по полю `type`.

1985 

1986### Write

1987 

1988**Имя tool:** `Write`

1989 

1990```typescript theme={null}

1991type FileWriteOutput = {

1992 type: "create" | "update";

1993 filePath: string;

1994 content: string;

1995 structuredPatch: Array<{

1996 oldStart: number;

1997 oldLines: number;

1998 newStart: number;

1999 newLines: number;

2000 lines: string[];

2001 }>;

2002 originalFile: string | null;

2003 gitDiff?: {

2004 filename: string;

2005 status: "modified" | "added";

2006 additions: number;

2007 deletions: number;

2008 changes: number;

2009 patch: string;

2010 };

2011};

2012```

2013 

2014Возвращает результат записи с информацией структурированного diff.

2015 

2016### Glob

2017 

2018**Имя tool:** `Glob`

2019 

2020```typescript theme={null}

2021type GlobOutput = {

2022 durationMs: number;

2023 numFiles: number;

2024 filenames: string[];

2025 truncated: boolean;

2026};

2027```

2028 

2029Возвращает пути файлов, соответствующие паттерну glob, отсортированные по времени изменения.

2030 

2031### Grep

2032 

2033**Имя tool:** `Grep`

2034 

2035```typescript theme={null}

2036type GrepOutput = {

2037 mode?: "content" | "files_with_matches" | "count";

2038 numFiles: number;

2039 filenames: string[];

2040 content?: string;

2041 numLines?: number;

2042 numMatches?: number;

2043 appliedLimit?: number;

2044 appliedOffset?: number;

2045};

2046```

2047 

2048Возвращает результаты поиска. Форма варьируется по `mode`: список файлов, содержимое с совпадениями или количество совпадений.

2049 

2050### TaskStop

2051 

2052**Имя tool:** `TaskStop`

2053 

2054```typescript theme={null}

2055type TaskStopOutput = {

2056 message: string;

2057 task_id: string;

2058 task_type: string;

2059 command?: string;

2060};

2061```

2062 

2063Возвращает подтверждение после остановки фоновой задачи.

2064 

2065### NotebookEdit

2066 

2067**Имя tool:** `NotebookEdit`

2068 

2069```typescript theme={null}

2070type NotebookEditOutput = {

2071 new_source: string;

2072 cell_id?: string;

2073 cell_type: "code" | "markdown";

2074 language: string;

2075 edit_mode: string;

2076 error?: string;

2077 notebook_path: string;

2078 original_file: string;

2079 updated_file: string;

2080};

2081```

2082 

2083Возвращает результат редактирования notebook с исходным и обновлённым содержимым файла.

2084 

2085### WebFetch

2086 

2087**Имя tool:** `WebFetch`

2088 

2089```typescript theme={null}

2090type WebFetchOutput = {

2091 bytes: number;

2092 code: number;

2093 codeText: string;

2094 result: string;

2095 durationMs: number;

2096 url: string;

2097};

2098```

2099 

2100Возвращает полученное содержимое с HTTP статусом и метаданными.

2101 

2102### WebSearch

2103 

2104**Имя tool:** `WebSearch`

2105 

2106```typescript theme={null}

2107type WebSearchOutput = {

2108 query: string;

2109 results: Array<

2110 | {

2111 tool_use_id: string;

2112 content: Array<{ title: string; url: string }>;

2113 }

2114 | string

2115 >;

2116 durationSeconds: number;

2117};

2118```

2119 

2120Возвращает результаты поиска из веб.

2121 

2122### TodoWrite

2123 

2124**Имя tool:** `TodoWrite`

2125 

2126```typescript theme={null}

2127type TodoWriteOutput = {

2128 oldTodos: Array<{

2129 content: string;

2130 status: "pending" | "in_progress" | "completed";

2131 activeForm: string;

2132 }>;

2133 newTodos: Array<{

2134 content: string;

2135 status: "pending" | "in_progress" | "completed";

2136 activeForm: string;

2137 }>;

2138};

2139```

2140 

2141Возвращает предыдущие и обновлённые списки задач.

2142 

2143### ExitPlanMode

2144 

2145**Имя tool:** `ExitPlanMode`

2146 

2147```typescript theme={null}

2148type ExitPlanModeOutput = {

2149 plan: string | null;

2150 isAgent: boolean;

2151 filePath?: string;

2152 hasTaskTool?: boolean;

2153 awaitingLeaderApproval?: boolean;

2154 requestId?: string;

2155};

2156```

2157 

2158Возвращает состояние плана после выхода из режима планирования.

2159 

2160### ListMcpResources

2161 

2162**Имя tool:** `ListMcpResources`

2163 

2164```typescript theme={null}

2165type ListMcpResourcesOutput = Array<{

2166 uri: string;

2167 name: string;

2168 mimeType?: string;

2169 description?: string;

2170 server: string;

2171}>;

2172```

2173 

2174Возвращает массив доступных MCP ресурсов.

2175 

2176### ReadMcpResource

2177 

2178**Имя tool:** `ReadMcpResource`

2179 

2180```typescript theme={null}

2181type ReadMcpResourceOutput = {

2182 contents: Array<{

2183 uri: string;

2184 mimeType?: string;

2185 text?: string;

2186 }>;

2187};

2188```

2189 

2190Возвращает содержимое запрошенного MCP ресурса.

2191 

2192### EnterWorktree

2193 

2194**Имя tool:** `EnterWorktree`

2195 

2196```typescript theme={null}

2197type EnterWorktreeOutput = {

2198 worktreePath: string;

2199 worktreeBranch?: string;

2200 message: string;

2201};

2202```

2203 

2204Возвращает информацию о git worktree.

2205 

2206## Типы разрешений

2207 

2208### `PermissionUpdate`

2209 

2210Операции для обновления разрешений.

2211 

2212```typescript theme={null}

2213type PermissionUpdate =

2214 | {

2215 type: "addRules";

2216 rules: PermissionRuleValue[];

2217 behavior: PermissionBehavior;

2218 destination: PermissionUpdateDestination;

2219 }

2220 | {

2221 type: "replaceRules";

2222 rules: PermissionRuleValue[];

2223 behavior: PermissionBehavior;

2224 destination: PermissionUpdateDestination;

2225 }

2226 | {

2227 type: "removeRules";

2228 rules: PermissionRuleValue[];

2229 behavior: PermissionBehavior;

2230 destination: PermissionUpdateDestination;

2231 }

2232 | {

2233 type: "setMode";

2234 mode: PermissionMode;

2235 destination: PermissionUpdateDestination;

2236 }

2237 | {

2238 type: "addDirectories";

2239 directories: string[];

2240 destination: PermissionUpdateDestination;

2241 }

2242 | {

2243 type: "removeDirectories";

2244 directories: string[];

2245 destination: PermissionUpdateDestination;

2246 };

2247```

2248 

2249### `PermissionBehavior`

2250 

2251```typescript theme={null}

2252type PermissionBehavior = "allow" | "deny" | "ask";

2253```

2254 

2255### `PermissionUpdateDestination`

2256 

2257```typescript theme={null}

2258type PermissionUpdateDestination =

2259 | "userSettings" // Глобальные пользовательские настройки

2260 | "projectSettings" // Настройки проекта для каждой директории

2261 | "localSettings" // Gitignored локальные настройки

2262 | "session" // Только текущая сессия

2263 | "cliArg"; // Аргумент CLI

2264```

2265 

2266### `PermissionRuleValue`

2267 

2268```typescript theme={null}

2269type PermissionRuleValue = {

2270 toolName: string;

2271 ruleContent?: string;

2272};

2273```

2274 

2275## Другие типы

2276 

2277### `ApiKeySource`

2278 

2279```typescript theme={null}

2280type ApiKeySource = "user" | "project" | "org" | "temporary" | "oauth";

2281```

2282 

2283### `SdkBeta`

2284 

2285Доступные бета-функции, которые можно включить через опцию `betas`. См. [Заголовки Beta](https://platform.claude.com/docs/ru/api/beta-headers) для дополнительной информации.

2286 

2287```typescript theme={null}

2288type SdkBeta = "context-1m-2025-08-07";

2289```

2290 

2291<Warning>

2292 Бета `context-1m-2025-08-07` снята с производства по состоянию на 30 апреля 2026 года. Передача этого значения с Claude Sonnet 4.5 или Sonnet 4 не имеет эффекта, и запросы, превышающие стандартное окно контекста 200k-токенов, возвращают ошибку. Для использования окна контекста 1M-токенов перейдите на [Claude Sonnet 4.6, Claude Opus 4.6 или Claude Opus 4.7](https://platform.claude.com/docs/ru/about-claude/models/overview), которые включают контекст 1M по стандартной цене без требуемого заголовка beta.

2293</Warning>

2294 

2295### `SlashCommand`

2296 

2297Информация о доступной slash команде.

2298 

2299```typescript theme={null}

2300type SlashCommand = {

2301 name: string;

2302 description: string;

2303 argumentHint: string;

2304 aliases?: string[];

2305};

2306```

2307 

2308### `ModelInfo`

2309 

2310Информация о доступной модели.

2311 

2312```typescript theme={null}

2313type ModelInfo = {

2314 value: string;

2315 displayName: string;

2316 description: string;

2317 supportsEffort?: boolean;

2318 supportedEffortLevels?: ("low" | "medium" | "high" | "xhigh" | "max")[];

2319 supportsAdaptiveThinking?: boolean;

2320 supportsFastMode?: boolean;

2321};

2322```

2323 

2324### `AgentInfo`

2325 

2326Информация о доступном подагенте, который может быть вызван через tool Agent.

2327 

2328```typescript theme={null}

2329type AgentInfo = {

2330 name: string;

2331 description: string;

2332 model?: string;

2333};

2334```

2335 

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

2337| :------------ | :-------------------- | :--------------------------------------------------------------------------------------- |

2338| `name` | `string` | Идентификатор типа агента (например, `"Explore"`, `"general-purpose"`) |

2339| `description` | `string` | Описание, когда использовать этого агента |

2340| `model` | `string \| undefined` | Псевдоним модели, который использует этот агент. Если опущено, наследует модель родителя |

2341 

2342### `McpServerStatus`

2343 

2344Статус подключённого MCP сервера.

2345 

2346```typescript theme={null}

2347type McpServerStatus = {

2348 name: string;

2349 status: "connected" | "failed" | "needs-auth" | "pending" | "disabled";

2350 serverInfo?: {

2351 name: string;

2352 version: string;

2353 };

2354 error?: string;

2355 config?: McpServerStatusConfig;

2356 scope?: string;

2357 tools?: {

2358 name: string;

2359 description?: string;

2360 annotations?: {

2361 readOnly?: boolean;

2362 destructive?: boolean;

2363 openWorld?: boolean;

2364 };

2365 }[];

2366};

2367```

2368 

2369### `McpServerStatusConfig`

2370 

2371Конфигурация MCP сервера, как сообщается `mcpServerStatus()`. Это объединение всех типов транспорта MCP сервера.

2372 

2373```typescript theme={null}

2374type McpServerStatusConfig =

2375 | McpStdioServerConfig

2376 | McpSSEServerConfig

2377 | McpHttpServerConfig

2378 | McpSdkServerConfig

2379 | McpClaudeAIProxyServerConfig;

2380```

2381 

2382См. [`McpServerConfig`](#mcp-server-config) для деталей по каждому типу транспорта.

2383 

2384### `AccountInfo`

2385 

2386Информация об учётной записи для аутентифицированного пользователя.

2387 

2388```typescript theme={null}

2389type AccountInfo = {

2390 email?: string;

2391 organization?: string;

2392 subscriptionType?: string;

2393 tokenSource?: string;

2394 apiKeySource?: string;

2395};

2396```

2397 

2398### `ModelUsage`

2399 

2400Статистика использования для каждой модели, возвращаемая в сообщениях результата. Значение `costUSD` это оценка на стороне клиента. См. [Отслеживание стоимости и использования](/ru/agent-sdk/cost-tracking) для предостережений выставления счётов.

2401 

2402```typescript theme={null}

2403type ModelUsage = {

2404 inputTokens: number;

2405 outputTokens: number;

2406 cacheReadInputTokens: number;

2407 cacheCreationInputTokens: number;

2408 webSearchRequests: number;

2409 costUSD: number;

2410 contextWindow: number;

2411 maxOutputTokens: number;

2412};

2413```

2414 

2415### `ConfigScope`

2416 

2417```typescript theme={null}

2418type ConfigScope = "local" | "user" | "project";

2419```

2420 

2421### `NonNullableUsage`

2422 

2423Версия [`Usage`](#usage) со всеми nullable полями, сделанными non-nullable.

2424 

2425```typescript theme={null}

2426type NonNullableUsage = {

2427 [K in keyof Usage]: NonNullable<Usage[K]>;

2428};

2429```

2430 

2431### `Usage`

2432 

2433Статистика использования токенов (из `@anthropic-ai/sdk`).

2434 

2435```typescript theme={null}

2436type Usage = {

2437 input_tokens: number | null;

2438 output_tokens: number | null;

2439 cache_creation_input_tokens?: number | null;

2440 cache_read_input_tokens?: number | null;

2441};

2442```

2443 

2444### `CallToolResult`

2445 

2446Тип результата MCP tool (из `@modelcontextprotocol/sdk/types.js`).

2447 

2448```typescript theme={null}

2449type CallToolResult = {

2450 content: Array<{

2451 type: "text" | "image" | "resource";

2452 // Дополнительные поля варьируются по типу

2453 }>;

2454 isError?: boolean;

2455};

2456```

2457 

2458### `ThinkingConfig`

2459 

2460Контролирует поведение мышления/рассуждения Claude. Имеет приоритет над устаревшим `maxThinkingTokens`.

2461 

2462```typescript theme={null}

2463type ThinkingConfig =

2464 | { type: "adaptive" } // Модель определяет, когда и сколько рассуждать (Opus 4.6+)

2465 | { type: "enabled"; budgetTokens?: number } // Фиксированный бюджет токенов мышления

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

2467```

2468 

2469### `SpawnedProcess`

2470 

2471Интерфейс для пользовательского запуска процесса (используется с опцией `spawnClaudeCodeProcess`). `ChildProcess` уже удовлетворяет этому интерфейсу.

2472 

2473```typescript theme={null}

2474interface SpawnedProcess {

2475 stdin: Writable;

2476 stdout: Readable;

2477 readonly killed: boolean;

2478 readonly exitCode: number | null;

2479 kill(signal: NodeJS.Signals): boolean;

2480 on(

2481 event: "exit",

2482 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2483 ): void;

2484 on(event: "error", listener: (error: Error) => void): void;

2485 once(

2486 event: "exit",

2487 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2488 ): void;

2489 once(event: "error", listener: (error: Error) => void): void;

2490 off(

2491 event: "exit",

2492 listener: (code: number | null, signal: NodeJS.Signals | null) => void

2493 ): void;

2494 off(event: "error", listener: (error: Error) => void): void;

2495}

2496```

2497 

2498### `SpawnOptions`

2499 

2500Опции, передаваемые пользовательской функции spawn.

2501 

2502```typescript theme={null}

2503interface SpawnOptions {

2504 command: string;

2505 args: string[];

2506 cwd?: string;

2507 env: Record<string, string | undefined>;

2508 signal: AbortSignal;

2509}

2510```

2511 

2512### `McpSetServersResult`

2513 

2514Результат операции `setMcpServers()`.

2515 

2516```typescript theme={null}

2517type McpSetServersResult = {

2518 added: string[];

2519 removed: string[];

2520 errors: Record<string, string>;

2521};

2522```

2523 

2524### `RewindFilesResult`

2525 

2526Результат операции `rewindFiles()`.

2527 

2528```typescript theme={null}

2529type RewindFilesResult = {

2530 canRewind: boolean;

2531 error?: string;

2532 filesChanged?: string[];

2533 insertions?: number;

2534 deletions?: number;

2535};

2536```

2537 

2538### `SDKStatusMessage`

2539 

2540Сообщение обновления статуса (например, компактирование).

2541 

2542```typescript theme={null}

2543type SDKStatusMessage = {

2544 type: "system";

2545 subtype: "status";

2546 status: "compacting" | null;

2547 permissionMode?: PermissionMode;

2548 uuid: UUID;

2549 session_id: string;

2550};

2551```

2552 

2553### `SDKTaskNotificationMessage`

2554 

2555Уведомление, когда фоновая задача завершается, не работает или остановлена. Фоновые задачи включают команды Bash `run_in_background`, наблюдения [Monitor](#monitor) и фоновые подагентов.

2556 

2557```typescript theme={null}

2558type SDKTaskNotificationMessage = {

2559 type: "system";

2560 subtype: "task_notification";

2561 task_id: string;

2562 tool_use_id?: string;

2563 status: "completed" | "failed" | "stopped";

2564 output_file: string;

2565 summary: string;

2566 usage?: {

2567 total_tokens: number;

2568 tool_uses: number;

2569 duration_ms: number;

2570 };

2571 uuid: UUID;

2572 session_id: string;

2573};

2574```

2575 

2576### `SDKToolUseSummaryMessage`

2577 

2578Резюме использования tool в диалоге.

2579 

2580```typescript theme={null}

2581type SDKToolUseSummaryMessage = {

2582 type: "tool_use_summary";

2583 summary: string;

2584 preceding_tool_use_ids: string[];

2585 uuid: UUID;

2586 session_id: string;

2587};

2588```

2589 

2590### `SDKHookStartedMessage`

2591 

2592Выдаётся, когда hook начинает выполняться.

2593 

2594```typescript theme={null}

2595type SDKHookStartedMessage = {

2596 type: "system";

2597 subtype: "hook_started";

2598 hook_id: string;

2599 hook_name: string;

2600 hook_event: string;

2601 uuid: UUID;

2602 session_id: string;

2603};

2604```

2605 

2606### `SDKHookProgressMessage`

2607 

2608Выдаётся во время выполнения hook с выводом stdout/stderr.

2609 

2610```typescript theme={null}

2611type SDKHookProgressMessage = {

2612 type: "system";

2613 subtype: "hook_progress";

2614 hook_id: string;

2615 hook_name: string;

2616 hook_event: string;

2617 stdout: string;

2618 stderr: string;

2619 output: string;

2620 uuid: UUID;

2621 session_id: string;

2622};

2623```

2624 

2625### `SDKHookResponseMessage`

2626 

2627Выдаётся, когда hook завершает выполнение.

2628 

2629```typescript theme={null}

2630type SDKHookResponseMessage = {

2631 type: "system";

2632 subtype: "hook_response";

2633 hook_id: string;

2634 hook_name: string;

2635 hook_event: string;

2636 output: string;

2637 stdout: string;

2638 stderr: string;

2639 exit_code?: number;

2640 outcome: "success" | "error" | "cancelled";

2641 uuid: UUID;

2642 session_id: string;

2643};

2644```

2645 

2646### `SDKToolProgressMessage`

2647 

2648Выдаётся периодически во время выполнения tool для указания прогресса.

2649 

2650```typescript theme={null}

2651type SDKToolProgressMessage = {

2652 type: "tool_progress";

2653 tool_use_id: string;

2654 tool_name: string;

2655 parent_tool_use_id: string | null;

2656 elapsed_time_seconds: number;

2657 task_id?: string;

2658 uuid: UUID;

2659 session_id: string;

2660};

2661```

2662 

2663### `SDKAuthStatusMessage`

2664 

2665Выдаётся во время потоков аутентификации.

2666 

2667```typescript theme={null}

2668type SDKAuthStatusMessage = {

2669 type: "auth_status";

2670 isAuthenticating: boolean;

2671 output: string[];

2672 error?: string;

2673 uuid: UUID;

2674 session_id: string;

2675};

2676```

2677 

2678### `SDKTaskStartedMessage`

2679 

2680Выдаётся, когда фоновая задача начинается. Поле `task_type` это `"local_bash"` для фоновых команд Bash и наблюдений [Monitor](#monitor), `"local_agent"` для подагентов или `"remote_agent"`.

2681 

2682```typescript theme={null}

2683type SDKTaskStartedMessage = {

2684 type: "system";

2685 subtype: "task_started";

2686 task_id: string;

2687 tool_use_id?: string;

2688 description: string;

2689 task_type?: string;

2690 uuid: UUID;

2691 session_id: string;

2692};

2693```

2694 

2695### `SDKTaskProgressMessage`

2696 

2697Выдаётся периодически во время выполнения фоновой задачи.

2698 

2699```typescript theme={null}

2700type SDKTaskProgressMessage = {

2701 type: "system";

2702 subtype: "task_progress";

2703 task_id: string;

2704 tool_use_id?: string;

2705 description: string;

2706 usage: {

2707 total_tokens: number;

2708 tool_uses: number;

2709 duration_ms: number;

2710 };

2711 last_tool_name?: string;

2712 uuid: UUID;

2713 session_id: string;

2714};

2715```

2716 

2717### `SDKTaskUpdatedMessage`

2718 

2719Выдаётся, когда состояние фоновой задачи изменяется, например, когда она переходит из `running` в `completed`. Объедините `patch` в вашу локальную карту задач, индексированную по `task_id`. Поле `end_time` это временная метка Unix epoch в миллисекундах, сравнимая с `Date.now()`.

2720 

2721```typescript theme={null}

2722type SDKTaskUpdatedMessage = {

2723 type: "system";

2724 subtype: "task_updated";

2725 task_id: string;

2726 patch: {

2727 status?: "pending" | "running" | "completed" | "failed" | "killed";

2728 description?: string;

2729 end_time?: number;

2730 total_paused_ms?: number;

2731 error?: string;

2732 is_backgrounded?: boolean;

2733 };

2734 uuid: UUID;

2735 session_id: string;

2736};

2737```

2738 

2739### `SDKFilesPersistedEvent`

2740 

2741Выдаётся, когда контрольные точки файлов сохраняются на диск.

2742 

2743```typescript theme={null}

2744type SDKFilesPersistedEvent = {

2745 type: "system";

2746 subtype: "files_persisted";

2747 files: { filename: string; file_id: string }[];

2748 failed: { filename: string; error: string }[];

2749 processed_at: string;

2750 uuid: UUID;

2751 session_id: string;

2752};

2753```

2754 

2755### `SDKRateLimitEvent`

2756 

2757Выдаётся, когда сессия встречает ограничение скорости.

2758 

2759```typescript theme={null}

2760type SDKRateLimitEvent = {

2761 type: "rate_limit_event";

2762 rate_limit_info: {

2763 status: "allowed" | "allowed_warning" | "rejected";

2764 resetsAt?: number;

2765 utilization?: number;

2766 };

2767 uuid: UUID;

2768 session_id: string;

2769};

2770```

2771 

2772### `SDKLocalCommandOutputMessage`

2773 

2774Вывод из локальной slash команды (например, `/voice` или `/usage`). Отображается как текст в стиле ассистента в транскрипте.

2775 

2776```typescript theme={null}

2777type SDKLocalCommandOutputMessage = {

2778 type: "system";

2779 subtype: "local_command_output";

2780 content: string;

2781 uuid: UUID;

2782 session_id: string;

2783};

2784```

2785 

2786### `SDKPromptSuggestionMessage`

2787 

2788Выдаётся после каждого хода, когда `promptSuggestions` включён. Содержит предсказанный следующий пользовательский запрос.

2789 

2790```typescript theme={null}

2791type SDKPromptSuggestionMessage = {

2792 type: "prompt_suggestion";

2793 suggestion: string;

2794 uuid: UUID;

2795 session_id: string;

2796};

2797```

2798 

2799### `AbortError`

2800 

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

2802 

2803```typescript theme={null}

2804class AbortError extends Error {}

2805```

2806 

2807## Конфигурация Sandbox

2808 

2809### `SandboxSettings`

2810 

2811Конфигурация для поведения sandbox. Используйте это для включения sandboxing команд и программной конфигурации ограничений сети.

2812 

2813```typescript theme={null}

2814type SandboxSettings = {

2815 enabled?: boolean;

2816 autoAllowBashIfSandboxed?: boolean;

2817 excludedCommands?: string[];

2818 allowUnsandboxedCommands?: boolean;

2819 network?: SandboxNetworkConfig;

2820 filesystem?: SandboxFilesystemConfig;

2821 ignoreViolations?: Record<string, string[]>;

2822 enableWeakerNestedSandbox?: boolean;

2823 ripgrep?: { command: string; args?: string[] };

2824};

2825```

2826 

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

2828| :-------------------------- | :------------------------------------------------------ | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2829| `enabled` | `boolean` | `false` | Включите режим sandbox для выполнения команд |

2830| `autoAllowBashIfSandboxed` | `boolean` | `true` | Автоматически одобряйте bash команды, когда sandbox включён |

2831| `excludedCommands` | `string[]` | `[]` | Команды, которые всегда обходят ограничения sandbox (например, `['docker']`). Они работают без sandbox автоматически без участия модели |

2832| `allowUnsandboxedCommands` | `boolean` | `true` | Разрешите модели запрашивать выполнение команд вне sandbox. Когда `true`, модель может установить `dangerouslyDisableSandbox` в входных данных tool, что переходит к [системе разрешений](#permissions-fallback-for-unsandboxed-commands) |

2833| `network` | [`SandboxNetworkConfig`](#sandbox-network-config) | `undefined` | Конфигурация sandbox, специфичная для сети |

2834| `filesystem` | [`SandboxFilesystemConfig`](#sandbox-filesystem-config) | `undefined` | Конфигурация sandbox, специфичная для файловой системы, для ограничений чтения/записи |

2835| `ignoreViolations` | `Record<string, string[]>` | `undefined` | Карта категорий нарушений на паттерны для игнорирования (например, `{ file: ['/tmp/*'], network: ['localhost'] }`) |

2836| `enableWeakerNestedSandbox` | `boolean` | `false` | Включите более слабый вложенный sandbox для совместимости |

2837| `ripgrep` | `{ command: string; args?: string[] }` | `undefined` | Конфигурация пользовательского бинарного файла ripgrep для окружений sandbox |

2838 

2839#### Пример использования

2840 

2841```typescript theme={null}

2842import { query } from "@anthropic-ai/claude-agent-sdk";

2843 

2844for await (const message of query({

2845 prompt: "Build and test my project",

2846 options: {

2847 sandbox: {

2848 enabled: true,

2849 autoAllowBashIfSandboxed: true,

2850 network: {

2851 allowLocalBinding: true

2852 }

2853 }

2854 }

2855})) {

2856 if ("result" in message) console.log(message.result);

2857}

2858```

2859 

2860<Warning>

2861 **Безопасность Unix socket:** Опция `allowUnixSockets` может предоставить доступ к мощным системным сервисам. Например, разрешение `/var/run/docker.sock` фактически предоставляет полный доступ к хост-системе через Docker API, обходя изоляцию sandbox. Разрешайте только Unix sockets, которые строго необходимы, и поймите последствия безопасности каждого.

2862</Warning>

2863 

2864### `SandboxNetworkConfig`

2865 

2866Конфигурация, специфичная для сети, для режима sandbox.

2867 

2868```typescript theme={null}

2869type SandboxNetworkConfig = {

2870 allowedDomains?: string[];

2871 deniedDomains?: string[];

2872 allowManagedDomainsOnly?: boolean;

2873 allowLocalBinding?: boolean;

2874 allowUnixSockets?: string[];

2875 allowAllUnixSockets?: boolean;

2876 httpProxyPort?: number;

2877 socksProxyPort?: number;

2878};

2879```

2880 

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

2882| :------------------------ | :--------- | :----------- | :--------------------------------------------------------------------------------------------------------- |

2883| `allowedDomains` | `string[]` | `[]` | Имена доменов, к которым процессы в sandbox могут получить доступ |

2884| `deniedDomains` | `string[]` | `[]` | Имена доменов, к которым процессы в sandbox не могут получить доступ. Имеет приоритет над `allowedDomains` |

2885| `allowManagedDomainsOnly` | `boolean` | `false` | Ограничьте доступ в сеть только доменами в `allowedDomains` |

2886| `allowLocalBinding` | `boolean` | `false` | Разрешите процессам привязываться к локальным портам (например, для dev серверов) |

2887| `allowUnixSockets` | `string[]` | `[]` | Пути Unix socket, к которым процессы могут получить доступ (например, Docker socket) |

2888| `allowAllUnixSockets` | `boolean` | `false` | Разрешите доступ ко всем Unix sockets |

2889| `httpProxyPort` | `number` | `undefined` | Порт HTTP прокси для сетевых запросов |

2890| `socksProxyPort` | `number` | `undefined` | Порт SOCKS прокси для сетевых запросов |

2891 

2892<Note>

2893 Встроенный прокси sandbox применяет `allowedDomains` на основе запрашиваемого имени хоста и не завершает и не проверяет трафик TLS, поэтому такие методы, как [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting), потенциально могут его обойти. Смотрите [Ограничения безопасности Sandboxing](/ru/sandboxing#security-limitations) для деталей и [Безопасное развёртывание](/ru/agent-sdk/secure-deployment#traffic-forwarding) для конфигурации прокси, завершающего TLS.

2894</Note>

2895 

2896### `SandboxFilesystemConfig`

2897 

2898Конфигурация, специфичная для файловой системы, для режима sandbox.

2899 

2900```typescript theme={null}

2901type SandboxFilesystemConfig = {

2902 allowWrite?: string[];

2903 denyWrite?: string[];

2904 denyRead?: string[];

2905};

2906```

2907 

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

2909| :----------- | :--------- | :----------- | :----------------------------------------------------- |

2910| `allowWrite` | `string[]` | `[]` | Паттерны путей файлов для разрешения доступа на запись |

2911| `denyWrite` | `string[]` | `[]` | Паттерны путей файлов для запрещения доступа на запись |

2912| `denyRead` | `string[]` | `[]` | Паттерны путей файлов для запрещения доступа на чтение |

2913 

2914### Fallback разрешений для команд вне Sandbox

2915 

2916Когда `allowUnsandboxedCommands` включён, модель может запросить выполнение команд вне sandbox, установив `dangerouslyDisableSandbox: true` во входных данных tool. Эти запросы переходят к существующей системе разрешений, что означает, что ваш обработчик `canUseTool` вызывается, позволяя вам реализовать пользовательскую логику авторизации.

2917 

2918<Note>

2919 **`excludedCommands` vs `allowUnsandboxedCommands`:**

2920 

2921 * `excludedCommands`: Статический список команд, которые всегда автоматически обходят sandbox (например, `['docker']`). Модель не имеет контроля над этим.

2922 * `allowUnsandboxedCommands`: Позволяет модели решать во время выполнения, запрашивать ли выполнение вне sandbox, установив `dangerouslyDisableSandbox: true` во входных данных tool.

2923</Note>

2924 

2925```typescript theme={null}

2926import { query } from "@anthropic-ai/claude-agent-sdk";

2927 

2928for await (const message of query({

2929 prompt: "Deploy my application",

2930 options: {

2931 sandbox: {

2932 enabled: true,

2933 allowUnsandboxedCommands: true // Модель может запросить выполнение вне sandbox

2934 },

2935 permissionMode: "default",

2936 canUseTool: async (tool, input) => {

2937 // Проверьте, запрашивает ли модель обход sandbox

2938 if (tool === "Bash" && input.dangerouslyDisableSandbox) {

2939 // Модель запрашивает выполнение этой команды вне sandbox

2940 console.log(`Unsandboxed command requested: ${input.command}`);

2941 

2942 if (isCommandAuthorized(input.command)) {

2943 return { behavior: "allow" as const, updatedInput: input };

2944 }

2945 return {

2946 behavior: "deny" as const,

2947 message: "Command not authorized for unsandboxed execution"

2948 };

2949 }

2950 return { behavior: "allow" as const, updatedInput: input };

2951 }

2952 }

2953})) {

2954 if ("result" in message) console.log(message.result);

2955}

2956```

2957 

2958Этот паттерн позволяет вам:

2959 

2960* **Аудит запросов модели:** Логируйте, когда модель запрашивает выполнение вне sandbox

2961* **Реализуйте allowlists:** Разрешайте только определённые команды работать вне sandbox

2962* **Добавьте рабочие процессы одобрения:** Требуйте явной авторизации для привилегированных операций

2963 

2964<Warning>

2965 Команды, работающие с `dangerouslyDisableSandbox: true`, имеют полный доступ к системе. Убедитесь, что ваш обработчик `canUseTool` тщательно проверяет эти запросы.

2966 

2967 Если `permissionMode` установлен на `bypassPermissions` и `allowUnsandboxedCommands` включён, модель может автономно выполнять команды вне sandbox без каких-либо запросов одобрения. Эта комбинация фактически позволяет модели молча выходить из изоляции sandbox.

2968</Warning>

2969 

2970## См. также

2971 

2972* [Обзор SDK](/ru/agent-sdk/overview) - Общие концепции SDK

2973* [Справочник Python SDK](/ru/agent-sdk/python) - Документация Python SDK

2974* [Справочник CLI](/ru/cli-reference) - Интерфейс командной строки

2975* [Общие рабочие процессы](/ru/common-workflows) - Пошаговые руководства

Details

1> ## Documentation Index

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

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

4 

5# TypeScript SDK V2 interface (preview)

6 

7> Предпросмотр упрощённого V2 TypeScript Agent SDK с паттернами отправки/потока на основе сессий для многооборотных разговоров.

8 

9<Warning>

10 Интерфейс V2 является **нестабильным предпросмотром**. API могут измениться на основе обратной связи перед тем, как стать стабильными. Некоторые функции, такие как разветвление сессий, доступны только в [V1 SDK](/ru/agent-sdk/typescript).

11</Warning>

12 

13V2 Claude Agent TypeScript SDK устраняет необходимость в асинхронных генераторах и координации yield. Это делает многооборотные разговоры проще — вместо управления состоянием генератора между оборотами, каждый оборот представляет собой отдельный цикл `send()`/`stream()`. Поверхность API сводится к трём концепциям:

14 

15* `createSession()` / `resumeSession()`: Начать или продолжить разговор

16* `session.send()`: Отправить сообщение

17* `session.stream()`: Получить ответ

18 

19## Установка

20 

21Интерфейс V2 включён в существующий пакет SDK:

22 

23```bash theme={null}

24npm install @anthropic-ai/claude-agent-sdk

25```

26 

27<Note>

28 SDK поставляется с нативным бинарным файлом Claude Code для вашей платформы в качестве опциональной зависимости, поэтому вам не нужно устанавливать Claude Code отдельно.

29</Note>

30 

31## Быстрый старт

32 

33### Однократный запрос

34 

35Для простых однооборотных запросов, когда вам не нужно поддерживать сессию, используйте `unstable_v2_prompt()`. Этот пример отправляет математический вопрос и логирует ответ:

36 

37```typescript theme={null}

38import { unstable_v2_prompt } from "@anthropic-ai/claude-agent-sdk";

39 

40const result = await unstable_v2_prompt("What is 2 + 2?", {

41 model: "claude-opus-4-7"

42});

43if (result.subtype === "success") {

44 console.log(result.result);

45}

46```

47 

48<details>

49 <summary>Посмотрите ту же операцию в V1</summary>

50 

51 ```typescript theme={null}

52 import { query } from "@anthropic-ai/claude-agent-sdk";

53 

54 const q = query({

55 prompt: "What is 2 + 2?",

56 options: { model: "claude-opus-4-7" }

57 });

58 

59 for await (const msg of q) {

60 if (msg.type === "result" && msg.subtype === "success") {

61 console.log(msg.result);

62 }

63 }

64 ```

65</details>

66 

67### Базовая сессия

68 

69Для взаимодействий, выходящих за рамки одного запроса, создайте сессию. V2 разделяет отправку и потоковую передачу на отдельные шаги:

70 

71* `send()` отправляет ваше сообщение

72* `stream()` передаёт ответ потоком

73 

74Это явное разделение облегчает добавление логики между оборотами (например, обработка ответов перед отправкой последующих сообщений).

75 

76Пример ниже создаёт сессию, отправляет "Hello!" в Claude и выводит текстовый ответ. Он использует [`await using`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management) (TypeScript 5.2+) для автоматического закрытия сессии при выходе из блока. Вы также можете вызвать `session.close()` вручную.

77 

78```typescript theme={null}

79import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

80 

81await using session = unstable_v2_createSession({

82 model: "claude-opus-4-7"

83});

84 

85await session.send("Hello!");

86for await (const msg of session.stream()) {

87 // Filter for assistant messages to get human-readable output

88 if (msg.type === "assistant") {

89 const text = msg.message.content

90 .filter((block) => block.type === "text")

91 .map((block) => block.text)

92 .join("");

93 console.log(text);

94 }

95}

96```

97 

98<details>

99 <summary>Посмотрите ту же операцию в V1</summary>

100 

101 В V1 входные и выходные данные проходят через один асинхронный генератор. Для базового запроса это выглядит похоже, но добавление многооборотной логики требует переструктурирования для использования входного генератора.

102 

103 ```typescript theme={null}

104 import { query } from "@anthropic-ai/claude-agent-sdk";

105 

106 const q = query({

107 prompt: "Hello!",

108 options: { model: "claude-opus-4-7" }

109 });

110 

111 for await (const msg of q) {

112 if (msg.type === "assistant") {

113 const text = msg.message.content

114 .filter((block) => block.type === "text")

115 .map((block) => block.text)

116 .join("");

117 console.log(text);

118 }

119 }

120 ```

121</details>

122 

123### Многооборотный разговор

124 

125Сессии сохраняют контекст между несколькими обменами. Чтобы продолжить разговор, вызовите `send()` снова на той же сессии. Claude помнит предыдущие обороты.

126 

127Этот пример задаёт математический вопрос, а затем задаёт последующий вопрос, который ссылается на предыдущий ответ:

128 

129```typescript theme={null}

130import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

131 

132await using session = unstable_v2_createSession({

133 model: "claude-opus-4-7"

134});

135 

136// Turn 1

137await session.send("What is 5 + 3?");

138for await (const msg of session.stream()) {

139 // Filter for assistant messages to get human-readable output

140 if (msg.type === "assistant") {

141 const text = msg.message.content

142 .filter((block) => block.type === "text")

143 .map((block) => block.text)

144 .join("");

145 console.log(text);

146 }

147}

148 

149// Turn 2

150await session.send("Multiply that by 2");

151for await (const msg of session.stream()) {

152 if (msg.type === "assistant") {

153 const text = msg.message.content

154 .filter((block) => block.type === "text")

155 .map((block) => block.text)

156 .join("");

157 console.log(text);

158 }

159}

160```

161 

162<details>

163 <summary>Посмотрите ту же операцию в V1</summary>

164 

165 ```typescript theme={null}

166 import { query } from "@anthropic-ai/claude-agent-sdk";

167 

168 // Must create an async iterable to feed messages

169 async function* createInputStream() {

170 yield {

171 type: "user",

172 session_id: "",

173 message: { role: "user", content: [{ type: "text", text: "What is 5 + 3?" }] },

174 parent_tool_use_id: null

175 };

176 // Must coordinate when to yield next message

177 yield {

178 type: "user",

179 session_id: "",

180 message: { role: "user", content: [{ type: "text", text: "Multiply by 2" }] },

181 parent_tool_use_id: null

182 };

183 }

184 

185 const q = query({

186 prompt: createInputStream(),

187 options: { model: "claude-opus-4-7" }

188 });

189 

190 for await (const msg of q) {

191 if (msg.type === "assistant") {

192 const text = msg.message.content

193 .filter((block) => block.type === "text")

194 .map((block) => block.text)

195 .join("");

196 console.log(text);

197 }

198 }

199 ```

200</details>

201 

202### Возобновление сессии

203 

204Если у вас есть ID сессии из предыдущего взаимодействия, вы можете возобновить её позже. Это полезно для долгоживущих рабочих процессов или когда вам нужно сохранить разговоры между перезагрузками приложения.

205 

206Этот пример создаёт сессию, сохраняет её ID, закрывает её, а затем возобновляет разговор:

207 

208```typescript theme={null}

209import {

210 unstable_v2_createSession,

211 unstable_v2_resumeSession,

212 type SDKMessage

213} from "@anthropic-ai/claude-agent-sdk";

214 

215// Helper to extract text from assistant messages

216function getAssistantText(msg: SDKMessage): string | null {

217 if (msg.type !== "assistant") return null;

218 return msg.message.content

219 .filter((block) => block.type === "text")

220 .map((block) => block.text)

221 .join("");

222}

223 

224// Create initial session and have a conversation

225const session = unstable_v2_createSession({

226 model: "claude-opus-4-7"

227});

228 

229await session.send("Remember this number: 42");

230 

231// Get the session ID from any received message

232let sessionId: string | undefined;

233for await (const msg of session.stream()) {

234 sessionId = msg.session_id;

235 const text = getAssistantText(msg);

236 if (text) console.log("Initial response:", text);

237}

238 

239console.log("Session ID:", sessionId);

240session.close();

241 

242// Later: resume the session using the stored ID

243await using resumedSession = unstable_v2_resumeSession(sessionId!, {

244 model: "claude-opus-4-7"

245});

246 

247await resumedSession.send("What number did I ask you to remember?");

248for await (const msg of resumedSession.stream()) {

249 const text = getAssistantText(msg);

250 if (text) console.log("Resumed response:", text);

251}

252```

253 

254<details>

255 <summary>Посмотрите ту же операцию в V1</summary>

256 

257 ```typescript theme={null}

258 import { query } from "@anthropic-ai/claude-agent-sdk";

259 

260 // Create initial session

261 const initialQuery = query({

262 prompt: "Remember this number: 42",

263 options: { model: "claude-opus-4-7" }

264 });

265 

266 // Get session ID from any message

267 let sessionId: string | undefined;

268 for await (const msg of initialQuery) {

269 sessionId = msg.session_id;

270 if (msg.type === "assistant") {

271 const text = msg.message.content

272 .filter((block) => block.type === "text")

273 .map((block) => block.text)

274 .join("");

275 console.log("Initial response:", text);

276 }

277 }

278 

279 console.log("Session ID:", sessionId);

280 

281 // Later: resume the session

282 const resumedQuery = query({

283 prompt: "What number did I ask you to remember?",

284 options: {

285 model: "claude-opus-4-7",

286 resume: sessionId

287 }

288 });

289 

290 for await (const msg of resumedQuery) {

291 if (msg.type === "assistant") {

292 const text = msg.message.content

293 .filter((block) => block.type === "text")

294 .map((block) => block.text)

295 .join("");

296 console.log("Resumed response:", text);

297 }

298 }

299 ```

300</details>

301 

302### Очистка

303 

304Сессии можно закрывать вручную или автоматически, используя [`await using`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management), функцию TypeScript 5.2+ для автоматической очистки ресурсов. Если вы используете более старую версию TypeScript или столкнулись с проблемами совместимости, используйте вместо этого ручную очистку.

305 

306**Автоматическая очистка (TypeScript 5.2+):**

307 

308```typescript theme={null}

309import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

310 

311await using session = unstable_v2_createSession({

312 model: "claude-opus-4-7"

313});

314// Session closes automatically when the block exits

315```

316 

317**Ручная очистка:**

318 

319```typescript theme={null}

320import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

321 

322const session = unstable_v2_createSession({

323 model: "claude-opus-4-7"

324});

325// ... use the session ...

326session.close();

327```

328 

329## Справочник API

330 

331### `unstable_v2_createSession()`

332 

333Создаёт новую сессию для многооборотных разговоров.

334 

335```typescript theme={null}

336function unstable_v2_createSession(options: {

337 model: string;

338 // Additional options supported

339}): SDKSession;

340```

341 

342### `unstable_v2_resumeSession()`

343 

344Возобновляет существующую сессию по ID.

345 

346```typescript theme={null}

347function unstable_v2_resumeSession(

348 sessionId: string,

349 options: {

350 model: string;

351 // Additional options supported

352 }

353): SDKSession;

354```

355 

356### `unstable_v2_prompt()`

357 

358Однократная удобная функция для однооборотных запросов.

359 

360```typescript theme={null}

361function unstable_v2_prompt(

362 prompt: string,

363 options: {

364 model: string;

365 // Additional options supported

366 }

367): Promise<SDKResultMessage>;

368```

369 

370### Интерфейс SDKSession

371 

372```typescript theme={null}

373interface SDKSession {

374 readonly sessionId: string;

375 send(message: string | SDKUserMessage): Promise<void>;

376 stream(): AsyncGenerator<SDKMessage, void>;

377 close(): void;

378}

379```

380 

381## Доступность функций

382 

383Не все функции V1 доступны в V2 пока. Следующие требуют использования [V1 SDK](/ru/agent-sdk/typescript):

384 

385* Разветвление сессий (опция `forkSession`)

386* Некоторые продвинутые паттерны потокового ввода

387 

388## Обратная связь

389 

390Поделитесь своей обратной связью по интерфейсу V2 перед тем, как он станет стабильным. Сообщайте о проблемах и предложениях через [GitHub Issues](https://github.com/anthropics/claude-code/issues).

391 

392## См. также

393 

394* [Справочник TypeScript SDK (V1)](/ru/agent-sdk/typescript) - Полная документация V1 SDK

395* [Обзор SDK](/ru/agent-sdk/overview) - Общие концепции SDK

396* [Примеры V2 на GitHub](https://github.com/anthropics/claude-agent-sdk-demos/tree/main/hello-world-v2) - Рабочие примеры кода

agent-teams.md +424 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Координируйте команды сеансов Claude Code

6 

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

8 

9<Warning>

10 Команды агентов являются экспериментальными и отключены по умолчанию. Включите их, добавив `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` в ваш [settings.json](/ru/settings) или переменную окружения. Команды агентов имеют [известные ограничения](#limitations) в отношении возобновления сеанса, координации задач и поведения при завершении.

11</Warning>

12 

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

14 

15В отличие от [subagents](/ru/sub-agents), которые работают в одном сеансе и могут только докладывать основному агенту, вы также можете взаимодействовать с отдельными товарищами по команде напрямую, не проходя через лидера.

16 

17<Note>

18 Команды агентов требуют Claude Code версии 2.1.32 или позже. Проверьте вашу версию с помощью `claude --version`.

19</Note>

20 

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

22 

23* [Когда использовать команды агентов](#when-to-use-agent-teams), включая лучшие варианты использования и сравнение с subagents

24* [Запуск вашей первой команды агентов](#start-your-first-agent-team)

25* [Управление вашей командой агентов](#control-your-agent-team), включая режимы отображения, назначение задач и делегирование

26* [Лучшие практики для параллельной работы](#best-practices)

27 

28## Когда использовать команды агентов

29 

30Команды агентов наиболее эффективны для задач, где параллельное исследование добавляет реальную ценность. Полные сценарии см. в [примерах вариантов использования](#use-case-examples). Самые сильные варианты использования:

31 

32* **Исследование и проверка**: несколько товарищей по команде могут одновременно исследовать различные аспекты проблемы, а затем делиться и оспаривать выводы друг друга

33* **Новые модули или функции**: товарищи по команде могут владеть отдельными частями без конфликтов друг с другом

34* **Отладка с конкурирующими гипотезами**: товарищи по команде тестируют различные теории параллельно и быстрее сходятся на ответе

35* **Координация между слоями**: изменения, охватывающие фронтенд, бэкенд и тесты, каждый из которых принадлежит другому товарищу по команде

36 

37Команды агентов добавляют накладные расходы на координацию и используют значительно больше токенов, чем один сеанс. Они работают лучше всего, когда товарищи по команде могут работать независимо. Для последовательных задач, редактирования одного файла или работы со множеством зависимостей более эффективны один сеанс или [subagents](/ru/sub-agents).

38 

39### Сравнение с subagents

40 

41Как команды агентов, так и [subagents](/ru/sub-agents) позволяют вам распараллелить работу, но они работают по-разному. Выбирайте в зависимости от того, нужны ли вашим работникам общаться друг с другом:

42 

43<Frame caption="Subagents только докладывают результаты основному агенту и никогда не разговаривают друг с другом. В командах агентов товарищи по команде делят список задач, берут на себя работу и общаются друг с другом напрямую.">

44 <img src="https://mintcdn.com/claude-code/nsvRFSDNfpSU5nT7/images/subagents-vs-agent-teams-light.png?fit=max&auto=format&n=nsvRFSDNfpSU5nT7&q=85&s=2f8db9b4f3705dd3ab931fbe2d96e42a" className="dark:hidden" alt="Диаграмма, сравнивающая архитектуры subagent и agent team. Subagents порождаются основным агентом, выполняют работу и докладывают результаты. Команды агентов координируют работу через общий список задач, товарищи по команде общаются друг с другом напрямую." width="4245" height="1615" data-path="images/subagents-vs-agent-teams-light.png" />

45 

46 <img src="https://mintcdn.com/claude-code/nsvRFSDNfpSU5nT7/images/subagents-vs-agent-teams-dark.png?fit=max&auto=format&n=nsvRFSDNfpSU5nT7&q=85&s=d573a037540f2ada6a9ae7d8285b46fd" className="hidden dark:block" alt="Диаграмма, сравнивающая архитектуры subagent и agent team. Subagents порождаются основным агентом, выполняют работу и докладывают результаты. Команды агентов координируют работу через общий список задач, товарищи по команде общаются друг с другом напрямую." width="4245" height="1615" data-path="images/subagents-vs-agent-teams-dark.png" />

47</Frame>

48 

49| | Subagents | Команды агентов |

50| :-------------------- | :---------------------------------------------------------------- | :----------------------------------------------------------- |

51| **Контекст** | Собственное контекстное окно; результаты возвращаются вызывающему | Собственное контекстное окно; полностью независимы |

52| **Коммуникация** | Докладывают результаты только основному агенту | Товарищи по команде обмениваются сообщениями напрямую |

53| **Координация** | Основной агент управляет всей работой | Общий список задач с самокоординацией |

54| **Лучше всего для** | Сосредоточенные задачи, где имеет значение только результат | Сложная работа, требующая обсуждения и сотрудничества |

55| **Стоимость токенов** | Ниже: результаты суммируются обратно в основной контекст | Выше: каждый товарищ по команде — отдельный экземпляр Claude |

56 

57Используйте subagents, когда вам нужны быстрые, сосредоточенные работники, которые докладывают обратно. Используйте команды агентов, когда товарищи по команде должны делиться выводами, оспаривать друг друга и координировать самостоятельно.

58 

59## Включение команд агентов

60 

61Команды агентов отключены по умолчанию. Включите их, установив переменную окружения `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` на `1`, либо в переменной окружения вашей оболочки, либо через [settings.json](/ru/settings):

62 

63```json settings.json theme={null}

64{

65 "env": {

66 "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"

67 }

68}

69```

70 

71## Запуск вашей первой команды агентов

72 

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

74 

75Этот пример хорошо работает, потому что три роли независимы и могут исследовать проблему без ожидания друг друга:

76 

77```text theme={null}

78I'm designing a CLI tool that helps developers track TODO comments across

79their codebase. Create an agent team to explore this from different angles: one

80teammate on UX, one on technical architecture, one playing devil's advocate.

81```

82 

83После этого Claude создает команду с [общим списком задач](/ru/interactive-mode#task-list), порождает товарищей по команде для каждой перспективы, заставляет их исследовать проблему, синтезирует выводы и пытается [очистить команду](#clean-up-the-team) по завершении.

84 

85Терминал лидера перечисляет всех товарищей по команде и то, над чем они работают. Используйте Shift+Down для циклического переключения между товарищами по команде и отправки им сообщений напрямую. После последнего товарища по команде Shift+Down возвращается к лидеру.

86 

87Если вы хотите, чтобы каждый товарищ по команде находился в отдельной разделенной панели, см. [Выбор режима отображения](#choose-a-display-mode).

88 

89## Управление вашей командой агентов

90 

91Скажите лидеру, что вы хотите, на естественном языке. Он обрабатывает координацию команды, назначение задач и делегирование на основе ваших инструкций.

92 

93### Выбор режима отображения

94 

95Команды агентов поддерживают два режима отображения:

96 

97* **In-process**: все товарищи по команде работают внутри вашего основного терминала. Используйте Shift+Down для циклического переключения между товарищами по команде и введите сообщение для отправки им напрямую. Работает в любом терминале, дополнительная настройка не требуется.

98* **Split panes**: каждый товарищ по команде получает свою панель. Вы можете видеть вывод всех одновременно и щелкнуть в панель для прямого взаимодействия. Требует tmux или iTerm2.

99 

100<Note>

101 `tmux` имеет известные ограничения на некоторых операционных системах и традиционно работает лучше всего на macOS. Использование `tmux -CC` в iTerm2 — это рекомендуемая точка входа в `tmux`.

102</Note>

103 

104По умолчанию используется `"auto"`, который использует разделенные панели, если вы уже работаете внутри сеанса tmux, и in-process в противном случае. Параметр `"tmux"` включает режим разделенных панелей и автоматически определяет, использовать ли tmux или iTerm2 на основе вашего терминала. Чтобы переопределить, установите [`teammateMode`](/ru/settings#available-settings) в `~/.claude/settings.json`:

105 

106```json theme={null}

107{

108 "teammateMode": "in-process"

109}

110```

111 

112Чтобы принудительно включить режим in-process для одного сеанса, передайте его как флаг:

113 

114```bash theme={null}

115claude --teammate-mode in-process

116```

117 

118Режим разделенных панелей требует либо [tmux](https://github.com/tmux/tmux/wiki), либо iTerm2 с [`it2` CLI](https://github.com/mkusaka/it2). Для установки вручную:

119 

120* **tmux**: установите через менеджер пакетов вашей системы. См. [tmux wiki](https://github.com/tmux/tmux/wiki/Installing) для инструкций, специфичных для платформы.

121* **iTerm2**: установите [`it2` CLI](https://github.com/mkusaka/it2), затем включите Python API в **iTerm2 → Settings → General → Magic → Enable Python API**.

122 

123### Укажите товарищей по команде и модели

124 

125Claude решает количество товарищей по команде для порождения на основе вашей задачи, или вы можете указать ровно то, что вы хотите:

126 

127```text theme={null}

128Create a team with 4 teammates to refactor these modules in parallel.

129Use Sonnet for each teammate.

130```

131 

132### Требуйте одобрения плана для товарищей по команде

133 

134Для сложных или рискованных задач вы можете потребовать, чтобы товарищи по команде планировали перед реализацией. Товарищ по команде работает в режиме только для чтения Plan Mode до тех пор, пока лидер не одобрит его подход:

135 

136```text theme={null}

137Spawn an architect teammate to refactor the authentication module.

138Require plan approval before they make any changes.

139```

140 

141Когда товарищ по команде заканчивает планирование, он отправляет запрос на одобрение плана лидеру. Лидер проверяет план и либо одобряет его, либо отклоняет с обратной связью. Если отклонено, товарищ по команде остается в режиме плана, пересматривает на основе обратной связи и повторно отправляет. После одобрения товарищ по команде выходит из режима плана и начинает реализацию.

142 

143Лидер принимает решения об одобрении автономно. Чтобы повлиять на суждение лидера, дайте ему критерии в вашем запросе, такие как «одобрять только планы, которые включают покрытие тестами» или «отклонять планы, которые изменяют схему базы данных».

144 

145### Разговаривайте с товарищами по команде напрямую

146 

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

148 

149* **Режим in-process**: используйте Shift+Down для циклического переключения между товарищами по команде, затем введите сообщение для отправки им. Нажмите Enter для просмотра сеанса товарища по команде, затем Escape для прерывания его текущего хода. Нажмите Ctrl+T для переключения списка задач.

150* **Режим split-pane**: щелкните в панель товарища по команде для прямого взаимодействия с его сеансом. Каждый товарищ по команде имеет полный вид своего собственного терминала.

151 

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

153 

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

155 

156Лидер может явно назначать задачи или товарищи по команде могут самостоятельно брать их:

157 

158* **Лидер назначает**: скажите лидеру, какую задачу дать какому товарищу по команде

159* **Самостоятельное взятие**: после завершения задачи товарищ по команде самостоятельно берет следующую неназначенную, разблокированную задачу

160 

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

162 

163### Завершение работы товарищей по команде

164 

165Чтобы корректно завершить сеанс товарища по команде:

166 

167```text theme={null}

168Ask the researcher teammate to shut down

169```

170 

171Лидер отправляет запрос на завершение. Товарищ по команде может одобрить, выходя корректно, или отклонить с объяснением.

172 

173### Очистка команды

174 

175Когда вы закончите, попросите лидера очистить команду:

176 

177```text theme={null}

178Clean up the team

179```

180 

181Это удаляет общие ресурсы команды. Когда лидер запускает очистку, он проверяет наличие активных товарищей по команде и завершается с ошибкой, если какие-либо все еще работают, поэтому сначала завершите их.

182 

183<Warning>

184 Всегда используйте лидера для очистки. Товарищи по команде не должны запускать очистку, потому что их контекст команды может не разрешиться правильно, потенциально оставляя ресурсы в несогласованном состоянии.

185</Warning>

186 

187### Обеспечение качества с помощью hooks

188 

189Используйте [hooks](/ru/hooks) для обеспечения правил, когда товарищи по команде заканчивают работу или задачи создаются или завершаются:

190 

191* [`TeammateIdle`](/ru/hooks#teammateidle): запускается, когда товарищ по команде собирается перейти в режим ожидания. Выйдите с кодом 2, чтобы отправить обратную связь и продолжить работу товарища по команде.

192* [`TaskCreated`](/ru/hooks#taskcreated): запускается, когда задача создается. Выйдите с кодом 2, чтобы предотвратить создание и отправить обратную связь.

193* [`TaskCompleted`](/ru/hooks#taskcompleted): запускается, когда задача отмечается как завершенная. Выйдите с кодом 2, чтобы предотвратить завершение и отправить обратную связь.

194 

195## Как работают команды агентов

196 

197Этот раздел охватывает архитектуру и механику команд агентов. Если вы хотите начать их использовать, см. [Управление вашей командой агентов](#control-your-agent-team) выше.

198 

199### Как Claude запускает команды агентов

200 

201Есть два способа запуска команд агентов:

202 

203* **Вы запрашиваете команду**: дайте Claude задачу, которая выигрывает от параллельной работы, и явно попросите команду агентов. Claude создает ее на основе ваших инструкций.

204* **Claude предлагает команду**: если Claude определит, что ваша задача выигрывает от параллельной работы, он может предложить создание команды. Вы подтверждаете перед тем, как он продолжит.

205 

206В обоих случаях вы остаетесь в контроле. Claude не создаст команду без вашего одобрения.

207 

208### Архитектура

209 

210Команда агентов состоит из:

211 

212| Компонент | Роль |

213| :---------------------- | :-------------------------------------------------------------------------------------------------------- |

214| **Лидер команды** | Основной сеанс Claude Code, который создает команду, порождает товарищей по команде и координирует работу |

215| **Товарищи по команде** | Отдельные экземпляры Claude Code, которые каждый работают над назначенными задачами |

216| **Список задач** | Общий список рабочих элементов, которые товарищи по команде берут и завершают |

217| **Почтовый ящик** | Система обмена сообщениями для коммуникации между агентами |

218 

219См. [Выбор режима отображения](#choose-a-display-mode) для параметров конфигурации отображения. Сообщения товарищей по команде поступают лидеру автоматически.

220 

221Система автоматически управляет зависимостями задач. Когда товарищ по команде завершает задачу, от которой зависят другие задачи, заблокированные задачи разблокируются без ручного вмешательства.

222 

223Команды и задачи хранятся локально:

224 

225* **Конфигурация команды**: `~/.claude/teams/{team-name}/config.json`

226* **Список задач**: `~/.claude/tasks/{team-name}/`

227 

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

229 

230Чтобы определить переиспользуемые роли товарищей по команде, используйте [определения subagent](#use-subagent-definitions-for-teammates) вместо этого.

231 

232Конфигурация команды содержит массив `members` с именем каждого товарища по команде, ID агента и типом агента. Товарищи по команде могут читать этот файл для обнаружения других членов команды.

233 

234Нет эквивалента конфигурации команды на уровне проекта. Файл вроде `.claude/teams/teams.json` в каталоге вашего проекта не распознается как конфигурация; Claude обрабатывает его как обычный файл.

235 

236### Использование определений subagent для товарищей по команде

237 

238При порождении товарища по команде вы можете ссылаться на тип [subagent](/ru/sub-agents) из любой [области subagent](/ru/sub-agents#choose-the-subagent-scope): проект, пользователь, плагин или определенный CLI. Это позволяет вам определить роль один раз, такую как security-reviewer или test-runner, и переиспользовать ее как делегированный subagent и как товарища по команде в команде агентов.

239 

240Чтобы использовать определение subagent, упомяните его по имени при просьбе Claude порождать товарища по команде:

241 

242```text theme={null}

243Spawn a teammate using the security-reviewer agent type to audit the auth module.

244```

245 

246Товарищ по команде соблюдает список разрешенных инструментов этого определения и модель, и тело определения добавляется к системному запросу товарища по команде как дополнительные инструкции, а не заменяет его. Инструменты координации команды, такие как `SendMessage` и инструменты управления задачами, всегда доступны товарищу по команде, даже когда `tools` ограничивает другие инструменты.

247 

248<Note>

249 Поля frontmatter `skills` и `mcpServers` в определении subagent не применяются, когда это определение работает как товарищ по команде. Товарищи по команде загружают skills и MCP servers из ваших параметров проекта и пользователя, так же как обычный сеанс.

250</Note>

251 

252### Разрешения

253 

254Товарищи по команде начинают с параметров разрешений лидера. Если лидер работает с `--dangerously-skip-permissions`, все товарищи по команде тоже. После порождения вы можете изменить отдельные режимы товарищей по команде, но вы не можете установить режимы для отдельных товарищей по команде во время порождения.

255 

256### Контекст и коммуникация

257 

258Каждый товарищ по команде имеет свое собственное контекстное окно. При порождении товарищ по команде загружает тот же контекст проекта, что и обычный сеанс: CLAUDE.md, MCP servers и skills. Он также получает запрос на порождение от лидера. История разговора лидера не переносится.

259 

260**Как товарищи по команде делятся информацией:**

261 

262* **Автоматическая доставка сообщений**: когда товарищи по команде отправляют сообщения, они автоматически доставляются получателям. Лидеру не нужно опрашивать обновления.

263* **Уведомления о неактивности**: когда товарищ по команде заканчивает и останавливается, он автоматически уведомляет лидера.

264* **Общий список задач**: все агенты могут видеть статус задачи и брать доступную работу.

265* **Обмен сообщениями товарищей по команде**: отправить сообщение одному конкретному товарищу по команде по имени. Чтобы достичь всех, отправьте одно сообщение на получателя.

266 

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

268 

269### Использование токенов

270 

271Команды агентов используют значительно больше токенов, чем один сеанс. Каждый товарищ по команде имеет свое собственное контекстное окно, и использование токенов масштабируется с количеством активных товарищей по команде. Для исследования, проверки и работы над новыми функциями дополнительные токены обычно стоят того. Для рутинных задач один сеанс более экономичен. См. [стоимость токенов команды агентов](/ru/costs#agent-team-token-costs) для руководства по использованию.

272 

273## Примеры вариантов использования

274 

275Эти примеры показывают, как команды агентов обрабатывают задачи, где параллельное исследование добавляет ценность.

276 

277### Запуск параллельной проверки кода

278 

279Один рецензент имеет тенденцию сосредотачиваться на одном типе проблемы за раз. Разделение критериев проверки на независимые области означает, что безопасность, производительность и покрытие тестами получают тщательное внимание одновременно. Запрос назначает каждому товарищу по команде отдельный объектив, чтобы они не перекрывались:

280 

281```text theme={null}

282Create an agent team to review PR #142. Spawn three reviewers:

283- One focused on security implications

284- One checking performance impact

285- One validating test coverage

286Have them each review and report findings.

287```

288 

289Каждый рецензент работает с одного и того же PR, но применяет другой фильтр. Лидер синтезирует выводы всех трех после их завершения.

290 

291### Исследование с конкурирующими гипотезами

292 

293Когда первопричина неясна, один агент имеет тенденцию находить одно правдоподобное объяснение и останавливаться. Запрос борется с этим, делая товарищей по команде явно враждебными: работа каждого — не только исследовать свою теорию, но и оспаривать теории других.

294 

295```text theme={null}

296Users report the app exits after one message instead of staying connected.

297Spawn 5 agent teammates to investigate different hypotheses. Have them talk to

298each other to try to disprove each other's theories, like a scientific

299debate. Update the findings doc with whatever consensus emerges.

300```

301 

302Структура дебатов — это ключевой механизм здесь. Последовательное исследование страдает от якорения: как только одна теория исследуется, последующее исследование смещено в сторону нее.

303 

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

305 

306## Лучшие практики

307 

308### Дайте товарищам по команде достаточно контекста

309 

310Товарищи по команде автоматически загружают контекст проекта, включая CLAUDE.md, MCP servers и skills, но они не наследуют историю разговора лидера. См. [Контекст и коммуникация](#context-and-communication) для деталей. Включите детали, специфичные для задачи, в запрос на порождение:

311 

312```text theme={null}

313Spawn a security reviewer teammate with the prompt: "Review the authentication module

314at src/auth/ for security vulnerabilities. Focus on token handling, session

315management, and input validation. The app uses JWT tokens stored in

316httpOnly cookies. Report any issues with severity ratings."

317```

318 

319### Выберите подходящий размер команды

320 

321Нет жесткого ограничения на количество товарищей по команде, но применяются практические ограничения:

322 

323* **Стоимость токенов масштабируется линейно**: каждый товарищ по команде имеет свое собственное контекстное окно и потребляет токены независимо. См. [стоимость токенов команды агентов](/ru/costs#agent-team-token-costs) для деталей.

324* **Накладные расходы на координацию увеличиваются**: больше товарищей по команде означает больше коммуникации, координации задач и потенциал для конфликтов

325* **Убывающая отдача**: сверх определенной точки дополнительные товарищи по команде не ускоряют работу пропорционально

326 

327Начните с 3-5 товарищей по команде для большинства рабочих процессов. Это уравновешивает параллельную работу с управляемой координацией. Примеры в этом руководстве используют 3-5 товарищей по команде, потому что этот диапазон хорошо работает для различных типов задач.

328 

329Наличие 5-6 [задач](/ru/agent-teams#architecture) на товарища по команде держит всех продуктивными без чрезмерного переключения контекста. Если у вас есть 15 независимых задач, 3 товарища по команде — хорошая отправная точка.

330 

331Масштабируйте только когда работа действительно выигрывает от одновременной работы товарищей по команде. Три сосредоточенных товарища по команде часто превосходят пять рассеянных.

332 

333### Размер задач надлежащим образом

334 

335* **Слишком маленькие**: накладные расходы на координацию превышают выгоду

336* **Слишком большие**: товарищи по команде работают слишком долго без проверок, увеличивая риск потраченной впустую работы

337* **Как надо**: самостоятельные единицы, которые производят четкий результат, такие как функция, файл теста или проверка

338 

339<Tip>

340 Лидер разбивает работу на задачи и автоматически назначает их товарищам по команде. Если он не создает достаточно задач, попросите его разделить работу на более мелкие части. Наличие 5-6 задач на товарища по команде держит всех продуктивными и позволяет лидеру переназначить работу, если кто-то застрял.

341</Tip>

342 

343### Ждите, пока товарищи по команде закончат

344 

345Иногда лидер начинает реализовывать задачи сам вместо ожидания товарищей по команде. Если вы заметите это:

346 

347```text theme={null}

348Wait for your teammates to complete their tasks before proceeding

349```

350 

351### Начните с исследования и проверки

352 

353Если вы новичок в командах агентов, начните с задач, которые имеют четкие границы и не требуют написания кода: проверка PR, исследование библиотеки или исследование ошибки. Эти задачи показывают ценность параллельного исследования без проблем координации, которые приходят с параллельной реализацией.

354 

355### Избегайте конфликтов файлов

356 

357Два товарища по команде, редактирующие один и тот же файл, приводит к перезаписям. Разбейте работу так, чтобы каждый товарищ по команде владел другим набором файлов.

358 

359### Мониторинг и управление

360 

361Проверяйте прогресс товарищей по команде, переориентируйте подходы, которые не работают, и синтезируйте выводы по мере их поступления. Оставление команды без присмотра на слишком долгое время увеличивает риск потраченной впустую работы.

362 

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

364 

365### Товарищи по команде не появляются

366 

367Если товарищи по команде не появляются после того, как вы попросили Claude создать команду:

368 

369* В режиме in-process товарищи по команде могут уже работать, но не видны. Нажмите Shift+Down для циклического переключения между активными товарищами по команде.

370* Проверьте, что задача, которую вы дали Claude, была достаточно сложной, чтобы оправдать команду. Claude решает, порождать ли товарищей по команде, на основе задачи.

371* Если вы явно запросили разделенные панели, убедитесь, что tmux установлен и доступен в вашем PATH:

372 ```bash theme={null}

373 which tmux

374 ```

375* Для iTerm2 проверьте, что `it2` CLI установлен и Python API включен в предпочтениях iTerm2.

376 

377### Слишком много запросов разрешений

378 

379Запросы разрешений товарищей по команде всплывают к лидеру, что может создать трение. Предварительно одобрите общие операции в ваших [параметрах разрешений](/ru/permissions) перед порождением товарищей по команде, чтобы уменьшить прерывания.

380 

381### Товарищи по команде останавливаются при ошибках

382 

383Товарищи по команде могут остановиться после возникновения ошибок вместо восстановления. Проверьте их вывод, используя Shift+Down в режиме in-process или щелкнув панель в режиме split, затем либо:

384 

385* Дайте им дополнительные инструкции напрямую

386* Порождите товарища по команде-замену для продолжения работы

387 

388### Лидер завершает работу до завершения работы

389 

390Лидер может решить, что команда закончена до того, как все задачи действительно завершены. Если это произойдет, скажите ему продолжать. Вы также можете сказать лидеру ждать, пока товарищи по команде закончат перед тем, как продолжить, если он начинает работу вместо делегирования.

391 

392### Осиротевшие сеансы tmux

393 

394Если сеанс tmux сохраняется после завершения команды, он может не быть полностью очищен. Перечислите сеансы и убейте созданный командой:

395 

396```bash theme={null}

397tmux ls

398tmux kill-session -t <session-name>

399```

400 

401## Ограничения

402 

403Команды агентов являются экспериментальными. Текущие ограничения, о которых следует знать:

404 

405* **Нет возобновления сеанса с товарищами по команде in-process**: `/resume` и `/rewind` не восстанавливают товарищей по команде in-process. После возобновления сеанса лидер может попытаться отправить сообщение товарищам по команде, которые больше не существуют. Если это произойдет, скажите лидеру порождать новых товарищей по команде.

406* **Статус задачи может отставать**: товарищи по команде иногда не отмечают задачи как завершенные, что блокирует зависимые задачи. Если задача кажется застрявшей, проверьте, действительно ли работа выполнена, и обновите статус задачи вручную или скажите лидеру подтолкнуть товарища по команде.

407* **Завершение может быть медленным**: товарищи по команде завершают свой текущий запрос или вызов инструмента перед завершением, что может занять время.

408* **Одна команда на сеанс**: лидер может управлять только одной командой за раз. Очистите текущую команду перед запуском новой.

409* **Нет вложенных команд**: товарищи по команде не могут порождать свои собственные команды или товарищей по команде. Только лидер может управлять командой.

410* **Лидер фиксирован**: сеанс, который создает команду, является лидером на протяжении всей его жизни. Вы не можете повысить товарища по команде до лидера или передать лидерство.

411* **Разрешения установлены при порождении**: все товарищи по команде начинают с режима разрешений лидера. Вы можете изменить отдельные режимы товарищей по команде после порождения, но вы не можете установить режимы для отдельных товарищей по команде во время порождения.

412* **Разделенные панели требуют tmux или iTerm2**: режим in-process по умолчанию работает в любом терминале. Режим разделенных панелей не поддерживается в интегрированном терминале VS Code, Windows Terminal или Ghostty.

413 

414<Tip>

415 **`CLAUDE.md` работает нормально**: товарищи по команде читают файлы `CLAUDE.md` из своего рабочего каталога. Используйте это для предоставления руководства, специфичного для проекта, всем товарищам по команде.

416</Tip>

417 

418## Следующие шаги

419 

420Изучите связанные подходы для параллельной работы и делегирования:

421 

422* **Легкое делегирование**: [subagents](/ru/sub-agents) порождают вспомогательных агентов для исследования или проверки в вашем сеансе, лучше для задач, которые не нуждаются в координации между агентами

423* **Ручные параллельные сеансы**: [Git worktrees](/ru/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) позволяют вам запускать несколько сеансов Claude Code самостоятельно без автоматической координации команды

424* **Сравнение подходов**: см. [сравнение subagent vs agent team](/ru/features-overview#compare-similar-features) для разбора рядом

amazon-bedrock.md +589 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Claude Code на Amazon Bedrock

6 

7> Узнайте о настройке Claude Code через Amazon Bedrock, включая установку, конфигурацию IAM и устранение неполадок.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="bedrock" />} />

190 

191## Предварительные требования

192 

193Перед настройкой Claude Code с Bedrock убедитесь, что у вас есть:

194 

195* Учетная запись AWS с включенным доступом к Bedrock

196* Доступ к нужным моделям Claude (например, Claude Sonnet 4.6) в Bedrock

197* AWS CLI установлен и настроен (опционально - требуется только если у вас нет другого механизма получения учетных данных)

198* Соответствующие разрешения IAM

199 

200Чтобы войти со своими собственными учетными данными Bedrock, следуйте инструкциям [Вход с Bedrock](#sign-in-with-bedrock) ниже. Чтобы развернуть Claude Code в команде, используйте шаги [ручной установки](#set-up-manually) и [закрепите версии вашей модели](#4-pin-model-versions) перед развертыванием.

201 

202## Вход с Bedrock

203 

204Если у вас есть учетные данные AWS и вы хотите начать использовать Claude Code через Bedrock, мастер входа проведет вас через процесс. Вы выполняете предварительные требования на стороне AWS один раз на учетную запись; мастер обрабатывает сторону Claude Code.

205 

206<Steps>

207 <Step title="Включите модели Anthropic в вашей учетной записи AWS">

208 В [консоли Amazon Bedrock](https://console.aws.amazon.com/bedrock/) откройте каталог моделей, выберите модель Anthropic и отправьте форму варианта использования. Доступ предоставляется сразу же после отправки. См. [Отправьте детали варианта использования](#1-submit-use-case-details) для AWS Organizations и [конфигурацию IAM](#iam-configuration) для разрешений, которые требуются вашей роли.

209 </Step>

210 

211 <Step title="Запустите Claude Code и выберите Bedrock">

212 Запустите `claude`. При запросе входа выберите **3rd-party platform**, затем **Amazon Bedrock**.

213 </Step>

214 

215 <Step title="Следуйте подсказкам мастера">

216 Выберите способ аутентификации в AWS: профиль AWS, обнаруженный из вашей директории `~/.aws`, ключ API Bedrock, ключ доступа и секрет, или учетные данные уже в вашей среде. Мастер выбирает ваш регион, проверяет, какие модели Claude может вызывать ваша учетная запись, и позволяет вам их закрепить. Он сохраняет результат в блок `env` вашего [файла параметров пользователя](/ru/settings), поэтому вам не нужно самостоятельно экспортировать переменные окружения.

217 </Step>

218</Steps>

219 

220После входа запустите `/setup-bedrock` в любое время, чтобы снова открыть мастер и изменить ваши учетные данные, регион или закрепления моделей.

221 

222## Ручная установка

223 

224Чтобы настроить Bedrock через переменные окружения вместо мастера, например в CI или при развертывании в масштабе предприятия, следуйте шагам ниже.

225 

226### 1. Отправьте детали варианта использования

227 

228Пользователи, впервые использующие модели Anthropic, должны отправить детали варианта использования перед вызовом модели. Это делается один раз на учетную запись AWS.

229 

2301. Убедитесь, что у вас есть правильные разрешения IAM, описанные ниже

2312. Перейдите на [консоль Amazon Bedrock](https://console.aws.amazon.com/bedrock/)

2323. Выберите модель Anthropic из **Model catalog**

2334. Заполните форму варианта использования. Доступ предоставляется сразу же после отправки.

234 

235Если вы используете AWS Organizations, вы можете отправить форму один раз из учетной записи управления, используя [`PutUseCaseForModelAccess` API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html). Этот вызов требует разрешение IAM `bedrock:PutUseCaseForModelAccess`. Одобрение автоматически распространяется на дочерние учетные записи.

236 

237### 2. Настройте учетные данные AWS

238 

239Claude Code использует цепочку учетных данных AWS SDK по умолчанию. Установите ваши учетные данные, используя один из этих методов:

240 

241**Вариант A: конфигурация AWS CLI**

242 

243```bash theme={null}

244aws configure

245```

246 

247**Вариант B: переменные окружения (ключ доступа)**

248 

249```bash theme={null}

250export AWS_ACCESS_KEY_ID=your-access-key-id

251export AWS_SECRET_ACCESS_KEY=your-secret-access-key

252export AWS_SESSION_TOKEN=your-session-token

253```

254 

255**Вариант C: переменные окружения (профиль SSO)**

256 

257```bash theme={null}

258aws sso login --profile=<your-profile-name>

259 

260export AWS_PROFILE=your-profile-name

261```

262 

263**Вариант D: учетные данные AWS Management Console**

264 

265```bash theme={null}

266aws login

267```

268 

269[Узнайте больше](https://docs.aws.amazon.com/signin/latest/userguide/command-line-sign-in.html) о `aws login`.

270 

271**Вариант E: ключи API Bedrock**

272 

273```bash theme={null}

274export AWS_BEARER_TOKEN_BEDROCK=your-bedrock-api-key

275```

276 

277Ключи API Bedrock предоставляют более простой метод аутентификации без необходимости полных учетных данных AWS. [Узнайте больше о ключах API Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/).

278 

279#### Расширенная конфигурация учетных данных

280 

281Claude Code поддерживает автоматическое обновление учетных данных для AWS SSO и корпоративных поставщиков идентификации. Добавьте эти параметры в файл параметров Claude Code (см. [Settings](/ru/settings) для расположения файлов).

282 

283Когда Claude Code обнаруживает, что ваши учетные данные AWS истекли (либо локально на основе их временной метки, либо когда Bedrock возвращает ошибку учетных данных), он автоматически запустит ваши настроенные команды `awsAuthRefresh` и/или `awsCredentialExport` для получения новых учетных данных перед повторной попыткой запроса.

284 

285##### Пример конфигурации

286 

287```json theme={null}

288{

289 "awsAuthRefresh": "aws sso login --profile myprofile",

290 "env": {

291 "AWS_PROFILE": "myprofile"

292 }

293}

294```

295 

296##### Объяснение параметров конфигурации

297 

298**`awsAuthRefresh`**: используйте это для команд, которые изменяют директорию `.aws`, такие как обновление учетных данных, кэша SSO или файлов конфигурации. Вывод команды отображается пользователю, но интерактивный ввод не поддерживается. Это хорошо работает для браузерных потоков SSO, где CLI отображает URL или код, и вы завершаете аутентификацию в браузере.

299 

300**`awsCredentialExport`**: используйте это только если вы не можете изменить `.aws` и должны напрямую вернуть учетные данные. Вывод захватывается молча и не показывается пользователю. Команда должна выводить JSON в этом формате:

301 

302```json theme={null}

303{

304 "Credentials": {

305 "AccessKeyId": "value",

306 "SecretAccessKey": "value",

307 "SessionToken": "value"

308 }

309}

310```

311 

312### 3. Настройте Claude Code

313 

314Установите следующие переменные окружения для включения Bedrock:

315 

316```bash theme={null}

317# Enable Bedrock integration

318export CLAUDE_CODE_USE_BEDROCK=1

319export AWS_REGION=us-east-1 # or your preferred region

320 

321# Optional: Override the region for the small/fast model (Haiku).

322# Also applies to Bedrock Mantle.

323export ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION=us-west-2

324 

325# Optional: Override the Bedrock endpoint URL for custom endpoints or gateways

326# export ANTHROPIC_BEDROCK_BASE_URL=https://bedrock-runtime.us-east-1.amazonaws.com

327```

328 

329При включении Bedrock для Claude Code имейте в виду следующее:

330 

331* `AWS_REGION` - это обязательная переменная окружения. Claude Code не читает этот параметр из файла конфигурации `.aws`.

332* При использовании Bedrock команды `/login` и `/logout` отключены, так как аутентификация обрабатывается через учетные данные AWS.

333* Вы можете использовать файлы параметров для переменных окружения, таких как `AWS_PROFILE`, которые вы не хотите утечь в другие процессы. См. [Settings](/ru/settings) для получения дополнительной информации.

334 

335### 4. Закрепите версии моделей

336 

337<Warning>

338 Закрепите конкретные версии моделей при развертывании для нескольких пользователей. Без закрепления псевдонимы моделей, такие как `sonnet` и `opus`, разрешаются на последнюю версию, которая может быть еще недоступна в вашей учетной записи Bedrock при выпуске обновления Anthropic. Claude Code [возвращается](#startup-model-checks) к предыдущей версии при запуске, когда последняя недоступна, но закрепление позволяет вам контролировать, когда ваши пользователи переходят на новую модель.

339</Warning>

340 

341Установите эти переменные окружения на конкретные ID моделей Bedrock.

342 

343Без `ANTHROPIC_DEFAULT_OPUS_MODEL` псевдоним `opus` на Bedrock разрешается на Opus 4.6. Установите его на ID Opus 4.7, чтобы использовать последнюю модель:

344 

345```bash theme={null}

346export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-7'

347export ANTHROPIC_DEFAULT_SONNET_MODEL='us.anthropic.claude-sonnet-4-6'

348export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

349```

350 

351Эти переменные используют ID профилей вывода между регионами (с префиксом `us.`). Если вы используете другой префикс региона или профили вывода приложения, отрегулируйте соответственно. Для текущих и устаревших ID моделей см. [Models overview](https://platform.claude.com/docs/en/about-claude/models/overview). См. [Model configuration](/ru/model-config#pin-models-for-third-party-deployments) для полного списка переменных окружения.

352 

353Claude Code использует эти модели по умолчанию, когда переменные закрепления не установлены:

354 

355| Тип модели | Значение по умолчанию |

356| :------------------- | :--------------------------------------------- |

357| Основная модель | `us.anthropic.claude-sonnet-4-5-20250929-v1:0` |

358| Малая/быстрая модель | `us.anthropic.claude-haiku-4-5-20251001-v1:0` |

359 

360Для дальнейшей настройки моделей используйте один из этих методов:

361 

362```bash theme={null}

363# Using inference profile ID

364export ANTHROPIC_MODEL='global.anthropic.claude-sonnet-4-6'

365export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

366 

367# Using application inference profile ARN

368export ANTHROPIC_MODEL='arn:aws:bedrock:us-east-2:your-account-id:application-inference-profile/your-model-id'

369 

370# Optional: Disable prompt caching if needed

371export DISABLE_PROMPT_CACHING=1

372 

373# Optional: Request 1-hour prompt cache TTL instead of the 5-minute default

374export ENABLE_PROMPT_CACHING_1H=1

375```

376 

377<Note>[Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) может быть недоступен во всех регионах. Записи кэша с TTL в 1 час выставляются по более высокому тарифу, чем записи в 5 минут.</Note>

378 

379#### Сопоставьте каждую версию модели с профилем вывода

380 

381Переменные окружения `ANTHROPIC_DEFAULT_*_MODEL` настраивают один профиль вывода на семейство моделей. Если вашей организации необходимо предоставить несколько версий одного семейства в средстве выбора `/model`, каждая маршрутизируется на свой ARN профиля вывода приложения, используйте вместо этого параметр `modelOverrides` в вашем [файле параметров](/ru/settings#settings-files).

382 

383Этот пример сопоставляет четыре версии Opus с отдельными ARN, чтобы пользователи могли переключаться между ними без обхода профилей вывода вашей организации:

384 

385```json theme={null}

386{

387 "modelOverrides": {

388 "claude-opus-4-7": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-47-prod",

389 "claude-opus-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-46-prod",

390 "claude-opus-4-5-20251101": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-45-prod",

391 "claude-opus-4-1-20250805": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-41-prod"

392 }

393}

394```

395 

396Когда пользователь выбирает одну из этих версий в `/model`, Claude Code вызывает Bedrock с сопоставленным ARN. Версии без переопределения возвращаются к встроенному ID модели Bedrock или любому соответствующему профилю вывода, обнаруженному при запуске. См. [Override model IDs per version](/ru/model-config#override-model-ids-per-version) для получения подробной информации о том, как переопределения взаимодействуют с `availableModels` и другими параметрами модели.

397 

398## Проверки моделей при запуске

399 

400Когда Claude Code запускается с настроенным Bedrock, он проверяет, что модели, которые он намеревается использовать, доступны в вашей учетной записи. Эта проверка требует Claude Code v2.1.94 или более поздней версии.

401 

402Если вы закрепили версию модели, которая старше текущего значения по умолчанию Claude Code, и ваша учетная запись может вызывать более новую версию, Claude Code предлагает вам обновить закрепление. Принятие записывает новый ID модели в ваш [файл параметров пользователя](/ru/settings) и перезапускает Claude Code. Отклонение запоминается до следующего изменения версии по умолчанию. Закрепления, указывающие на [ARN профиля вывода приложения](#map-each-model-version-to-an-inference-profile), пропускаются, так как они управляются вашим администратором.

403 

404Если вы не закрепили модель и текущее значение по умолчанию недоступно в вашей учетной записи, Claude Code возвращается к предыдущей версии для текущего сеанса и показывает уведомление. Возврат не сохраняется. Включите более новую модель в вашей учетной записи Bedrock или [закрепите версию](#4-pin-model-versions), чтобы сделать выбор постоянным.

405 

406## Конфигурация IAM

407 

408Создайте политику IAM с необходимыми разрешениями для Claude Code:

409 

410```json theme={null}

411{

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

413 "Statement": [

414 {

415 "Sid": "AllowModelAndInferenceProfileAccess",

416 "Effect": "Allow",

417 "Action": [

418 "bedrock:InvokeModel",

419 "bedrock:InvokeModelWithResponseStream",

420 "bedrock:ListInferenceProfiles",

421 "bedrock:GetInferenceProfile"

422 ],

423 "Resource": [

424 "arn:aws:bedrock:*:*:inference-profile/*",

425 "arn:aws:bedrock:*:*:application-inference-profile/*",

426 "arn:aws:bedrock:*:*:foundation-model/*"

427 ]

428 },

429 {

430 "Sid": "AllowMarketplaceSubscription",

431 "Effect": "Allow",

432 "Action": [

433 "aws-marketplace:ViewSubscriptions",

434 "aws-marketplace:Subscribe"

435 ],

436 "Resource": "*",

437 "Condition": {

438 "StringEquals": {

439 "aws:CalledViaLast": "bedrock.amazonaws.com"

440 }

441 }

442 }

443 ]

444}

445```

446 

447Для более ограничительных разрешений вы можете ограничить Resource конкретными ARN профилей вывода.

448 

449`bedrock:GetInferenceProfile` позволяет Claude Code разрешить [ARN профиля вывода приложения](#map-each-model-version-to-an-inference-profile) в его базовую модель фундамента, которая используется для выбора правильной формы запроса для этой модели.

450 

451Если токену не хватает этого разрешения, Claude Code автоматически восстанавливается, повторив попытку один раз с альтернативной формой, поэтому запросы все еще успешны, но каждая новая модель добавляет дополнительный обход туда и обратно. Предоставление разрешения избегает повтора. Это применяется чаще всего к развертываниям `AWS_BEARER_TOKEN_BEDROCK`, где политика токена обычно уже, чем полная роль IAM.

452 

453Для получения подробной информации см. [документацию Bedrock IAM](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam.html).

454 

455<Note>

456 Создайте выделенную учетную запись AWS для Claude Code, чтобы упростить отслеживание затрат и контроль доступа.

457</Note>

458 

459## Окно контекста 1M токенов

460 

461Claude Opus 4.7, Opus 4.6 и Sonnet 4.6 поддерживают [окно контекста 1M токенов](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) на Amazon Bedrock. Claude Code автоматически включает расширенное окно контекста при выборе варианта модели 1M.

462 

463[Мастер установки](#sign-in-with-bedrock) предлагает опцию контекста 1M при закреплении моделей. Чтобы включить его для вручную закрепленной модели вместо этого, добавьте `[1m]` к ID модели. См. [Pin models for third-party deployments](/ru/model-config#pin-models-for-third-party-deployments) для получения подробной информации.

464 

465## AWS Guardrails

466 

467[Amazon Bedrock Guardrails](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) позволяют вам реализовать фильтрацию контента для Claude Code. Создайте Guardrail в [консоли Amazon Bedrock](https://console.aws.amazon.com/bedrock/), опубликуйте версию, затем добавьте заголовки Guardrail в ваш [файл параметров](/ru/settings). Включите Cross-Region inference на вашем Guardrail, если вы используете профили вывода между регионами.

468 

469Пример конфигурации:

470 

471```json theme={null}

472{

473 "env": {

474 "ANTHROPIC_CUSTOM_HEADERS": "X-Amzn-Bedrock-GuardrailIdentifier: your-guardrail-id\nX-Amzn-Bedrock-GuardrailVersion: 1"

475 }

476}

477```

478 

479## Используйте конечную точку Mantle

480 

481Mantle - это конечная точка Amazon Bedrock, которая обслуживает модели Claude через форму собственного API Anthropic, а не через Bedrock Invoke API. Она использует те же учетные данные AWS, разрешения IAM и конфигурацию `awsAuthRefresh`, описанные ранее на этой странице.

482 

483<Note>

484 Mantle требует Claude Code v2.1.94 или более поздней версии. Запустите `claude --version`, чтобы проверить.

485</Note>

486 

487### Включите Mantle

488 

489С уже настроенными учетными данными AWS установите `CLAUDE_CODE_USE_MANTLE` для маршрутизации запросов на конечную точку Mantle:

490 

491```bash theme={null}

492export CLAUDE_CODE_USE_MANTLE=1

493export AWS_REGION=us-east-1

494```

495 

496Claude Code конструирует URL конечной точки из `AWS_REGION`. Чтобы переопределить его для пользовательской конечной точки или шлюза, установите `ANTHROPIC_BEDROCK_MANTLE_BASE_URL`.

497 

498Запустите `/status` внутри Claude Code для подтверждения. Строка поставщика показывает `Amazon Bedrock (Mantle)`, когда Mantle активен.

499 

500### Выберите модель Mantle

501 

502Mantle использует ID моделей с префиксом `anthropic.` и без суффикса версии, например `anthropic.claude-haiku-4-5`. Модели, доступные вашей учетной записи, зависят от того, что вам было предоставлено вашей организацией; дополнительные ID моделей указаны в ваших материалах по подключению от AWS. Свяжитесь с вашей командой учетной записи AWS, чтобы запросить доступ к разрешенным моделям.

503 

504Установите модель с флагом `--model` или с `/model` внутри Claude Code:

505 

506```bash theme={null}

507claude --model anthropic.claude-haiku-4-5

508```

509 

510### Запустите Mantle рядом с Invoke API

511 

512Модели, доступные вам на Mantle, могут не включать каждую модель, которую вы используете сегодня. Установка как `CLAUDE_CODE_USE_BEDROCK`, так и `CLAUDE_CODE_USE_MANTLE` позволяет Claude Code вызывать обе конечные точки из одного сеанса. ID моделей, соответствующие формату Mantle, маршрутизируются на Mantle, а все остальные ID моделей идут на Bedrock Invoke API.

513 

514```bash theme={null}

515export CLAUDE_CODE_USE_BEDROCK=1

516export CLAUDE_CODE_USE_MANTLE=1

517```

518 

519Чтобы отобразить модель Mantle в средстве выбора `/model`, перечислите ее ID в `availableModels` в вашем [файле параметров](/ru/settings). Этот параметр также ограничивает средство выбора перечисленными записями, поэтому включите каждый псевдоним, который вы хотите сохранить доступным:

520 

521```json theme={null}

522{

523 "availableModels": ["opus", "sonnet", "haiku", "anthropic.claude-haiku-4-5"]

524}

525```

526 

527Записи с префиксом `anthropic.` добавляются как пользовательские опции средства выбора и маршрутизируются на Mantle. Замените `anthropic.claude-haiku-4-5` на ID модели, который была предоставлена вашей учетной записи. См. [Restrict model selection](/ru/model-config#restrict-model-selection) для получения информации о том, как `availableModels` взаимодействует с другими параметрами модели.

528 

529Когда оба поставщика активны, `/status` показывает `Amazon Bedrock + Amazon Bedrock (Mantle)`.

530 

531### Маршрутизируйте Mantle через шлюз

532 

533Если ваша организация маршрутизирует трафик модели через централизованный [LLM gateway](/ru/llm-gateway), который внедряет учетные данные AWS на стороне сервера, отключите аутентификацию на стороне клиента, чтобы Claude Code отправлял запросы без подписей SigV4 или заголовков `x-api-key`:

534 

535```bash theme={null}

536export CLAUDE_CODE_USE_MANTLE=1

537export CLAUDE_CODE_SKIP_MANTLE_AUTH=1

538export ANTHROPIC_BEDROCK_MANTLE_BASE_URL=https://your-gateway.example.com

539```

540 

541### Переменные окружения Mantle

542 

543Эти переменные специфичны для конечной точки Mantle. См. [Environment variables](/ru/env-vars) для полного списка.

544 

545| Переменная | Назначение |

546| :-------------------------------------- | :------------------------------------------------------------------ |

547| `CLAUDE_CODE_USE_MANTLE` | Включите конечную точку Mantle. Установите на `1` или `true`. |

548| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Переопределите URL конечной точки Mantle по умолчанию |

549| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Пропустите аутентификацию на стороне клиента для настроек прокси |

550| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Переопределите регион AWS для модели класса Haiku (общее с Bedrock) |

551 

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

553 

554### Цикл аутентификации с SSO и корпоративными прокси

555 

556Если вкладки браузера открываются повторно при использовании AWS SSO, удалите параметр `awsAuthRefresh` из вашего [файла параметров](/ru/settings). Это может произойти, когда корпоративные VPN или прокси-серверы с проверкой TLS прерывают браузерный поток SSO. Claude Code рассматривает прерванное соединение как ошибку аутентификации, повторно запускает `awsAuthRefresh` и зацикливается бесконечно.

557 

558Если ваша сетевая среда мешает автоматическим браузерным потокам SSO, используйте `aws sso login` вручную перед запуском Claude Code вместо того, чтобы полагаться на `awsAuthRefresh`.

559 

560### Проблемы с регионом

561 

562Если вы столкнулись с проблемами региона:

563 

564* Проверьте доступность модели: `aws bedrock list-inference-profiles --region your-region`

565* Переключитесь на поддерживаемый регион: `export AWS_REGION=us-east-1`

566* Рассмотрите использование профилей вывода для доступа между регионами

567 

568Если вы получили ошибку "on-demand throughput isn't supported":

569 

570* Укажите модель как ID [профиля вывода](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)

571 

572Claude Code использует Bedrock [Invoke API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) и не поддерживает Converse API.

573 

574### Ошибки конечной точки Mantle

575 

576Если `/status` не показывает `Amazon Bedrock (Mantle)` после установки `CLAUDE_CODE_USE_MANTLE`, переменная не достигает процесса. Подтвердите, что она экспортирована в оболочке, где вы запустили `claude`, или установите ее в блоке `env` вашего [файла параметров](/ru/settings).

577 

578`403` от конечной точки Mantle с действительными учетными данными означает, что вашей учетной записи AWS не был предоставлен доступ к запрошенной модели. Свяжитесь с вашей командой учетной записи AWS, чтобы запросить доступ.

579 

580`400`, который называет ID модели, означает, что эта модель не обслуживается на Mantle. Mantle имеет свой собственный набор моделей, отдельный от стандартного каталога Bedrock, поэтому ID профилей вывода, такие как `us.anthropic.claude-sonnet-4-6`, не будут работать. Используйте ID формата Mantle или включите [обе конечные точки](#run-mantle-alongside-the-invoke-api), чтобы Claude Code маршрутизировал каждый запрос на конечную точку, где модель доступна.

581 

582## Дополнительные ресурсы

583 

584* [Документация Bedrock](https://docs.aws.amazon.com/bedrock/)

585* [Цены Bedrock](https://aws.amazon.com/bedrock/pricing/)

586* [Профили вывода Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)

587* [Burndown токенов Bedrock и квоты](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas-token-burndown.html)

588* [Claude Code на Amazon Bedrock: Quick Setup Guide](https://community.aws/content/2tXkZKrZzlrlu0KfH8gST5Dkppq/claude-code-on-amazon-bedrock-quick-setup-guide)

589* [Claude Code Monitoring Implementation (Bedrock)](https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock/blob/main/assets/docs/MONITORING.md)

analytics.md +224 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Отслеживание использования команды с помощью аналитики

6 

7> Просмотрите метрики использования Claude Code, отслеживайте внедрение и измеряйте скорость разработки на панели аналитики.

8 

9Claude Code предоставляет панели аналитики, которые помогают организациям понять закономерности использования разработчиками, отслеживать метрики вклада и измерять, как Claude Code влияет на скорость разработки. Получите доступ к панели для вашего плана:

10 

11| План | URL панели | Включает | Подробнее |

12| ----------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | --------------------------------------------------------- |

13| Claude for Teams / Enterprise | [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code) | Метрики использования, метрики вклада с интеграцией GitHub, таблица лидеров, экспорт данных | [Подробности](#access-analytics-for-teams-and-enterprise) |

14| API (Claude Console) | [platform.claude.com/claude-code](https://platform.claude.com/claude-code) | Метрики использования, отслеживание расходов, аналитика команды | [Подробности](#access-analytics-for-api-customers) |

15 

16## Доступ к аналитике для Teams и Enterprise

17 

18Перейдите на [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code). Администраторы и владельцы могут просматривать панель.

19 

20Панель Teams и Enterprise включает:

21 

22* **Метрики использования**: принятые строки кода, процент принятия предложений, ежедневные активные пользователи и сеансы

23* **Метрики вклада**: PR и строки кода, отправленные с помощью Claude Code, с [интеграцией GitHub](#enable-contribution-metrics)

24* **Таблица лидеров**: лучшие участники, ранжированные по использованию Claude Code

25* **Экспорт данных**: загрузите данные о вкладе в формате CSV для пользовательских отчётов

26 

27### Включение метрик вклада

28 

29<Note>

30 Метрики вклада находятся в открытой бета-версии и доступны в планах Claude for Teams и Claude for Enterprise. Эти метрики охватывают только пользователей в вашей организации claude.ai. Использование через Claude Console API или интеграции третьих сторон не включено.

31</Note>

32 

33Данные об использовании и внедрении доступны для всех учётных записей Claude for Teams и Claude for Enterprise. Метрики вклада требуют дополнительной настройки для подключения вашей организации GitHub.

34 

35Вам нужна роль Owner для настройки параметров аналитики. Администратор GitHub должен установить приложение GitHub.

36 

37<Warning>

38 Метрики вклада недоступны для организаций с включённым [Zero Data Retention](/ru/zero-data-retention). Панель аналитики будет показывать только метрики использования.

39</Warning>

40 

41<Steps>

42 <Step title="Установка приложения GitHub">

43 Администратор GitHub устанавливает приложение Claude GitHub в учётную запись GitHub вашей организации на [github.com/apps/claude](https://github.com/apps/claude).

44 </Step>

45 

46 <Step title="Включение аналитики Claude Code">

47 Владелец Claude переходит на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) и включает функцию аналитики Claude Code.

48 </Step>

49 

50 <Step title="Включение аналитики GitHub">

51 На той же странице включите переключатель "GitHub analytics".

52 </Step>

53 

54 <Step title="Аутентификация с помощью GitHub">

55 Завершите процесс аутентификации GitHub и выберите, какие организации GitHub включить в анализ.

56 </Step>

57</Steps>

58 

59Данные обычно появляются в течение 24 часов после включения, с ежедневными обновлениями. Если данные не появляются, вы можете увидеть одно из этих сообщений:

60 

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

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

63 

64Метрики вклада поддерживают GitHub Cloud и GitHub Enterprise Server.

65 

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

67 

68<Note>

69 Эти метрики намеренно консервативны и представляют недооценку фактического влияния Claude Code. Подсчитываются только строки и PR, где есть высокая уверенность в участии Claude Code.

70</Note>

71 

72Панель отображает эти сводные метрики в верхней части:

73 

74* **PRs with CC**: общее количество объединённых запросов на слияние, содержащих хотя бы одну строку кода, написанную с помощью Claude Code

75* **Lines of code with CC**: общее количество строк кода во всех объединённых PR, написанных с помощью Claude Code. Подсчитываются только "эффективные строки": строки с более чем 3 символами после нормализации, исключая пустые строки и строки только со скобками или тривиальной пунктуацией.

76* **PRs with Claude Code (%)**: процент всех объединённых PR, содержащих код, написанный с помощью Claude Code

77* **Suggestion accept rate**: процент случаев, когда пользователи принимают предложения Claude Code по редактированию кода, включая использование инструментов Edit, Write и NotebookEdit

78* **Lines of code accepted**: общее количество строк кода, написанных Claude Code, которые пользователи приняли в своих сеансах. Это исключает отклонённые предложения и не отслеживает последующие удаления.

79 

80### Изучение диаграмм

81 

82Панель включает несколько диаграмм для визуализации тенденций во времени.

83 

84#### Отслеживание внедрения

85 

86Диаграмма Adoption показывает ежедневные тенденции использования:

87 

88* **users**: ежедневные активные пользователи

89* **sessions**: количество активных сеансов Claude Code в день

90 

91#### Измерение PR на пользователя

92 

93Эта диаграмма отображает активность отдельных разработчиков во времени:

94 

95* **PRs per user**: общее количество объединённых PR в день, разделённое на ежедневных активных пользователей

96* **users**: ежедневные активные пользователи

97 

98Используйте это, чтобы понять, как индивидуальная производительность меняется по мере увеличения внедрения Claude Code.

99 

100#### Просмотр разбивки запросов на слияние

101 

102Диаграмма Pull requests показывает ежедневный разбор объединённых PR:

103 

104* **PRs with CC**: запросы на слияние, содержащие код, написанный с помощью Claude Code

105* **PRs without CC**: запросы на слияние без кода, написанного с помощью Claude Code

106 

107Переключитесь на представление **Lines of code**, чтобы увидеть тот же разбор по строкам кода вместо количества PR.

108 

109#### Поиск лучших участников

110 

111Таблица лидеров показывает топ-10 пользователей, ранжированных по объёму вклада. Переключайтесь между:

112 

113* **Pull requests**: показывает PR с Claude Code и все PR для каждого пользователя

114* **Lines of code**: показывает строки с Claude Code и все строки для каждого пользователя

115 

116Нажмите **Export all users**, чтобы загрузить полные данные о вкладе для всех пользователей в виде файла CSV. Экспорт включает всех пользователей, а не только топ-10, отображаемых на экране.

117 

118### Атрибуция PR

119 

120Когда метрики вклада включены, Claude Code анализирует объединённые запросы на слияние, чтобы определить, какой код был написан с помощью Claude Code. Это делается путём сопоставления активности сеанса Claude Code с кодом в каждом PR.

121 

122#### Критерии маркировки

123 

124PR помечаются как "with Claude Code", если они содержат хотя бы одну строку кода, написанную во время сеанса Claude Code. Система использует консервативное сопоставление: только код, где есть высокая уверенность в участии Claude Code, считается вспомогательным.

125 

126#### Процесс атрибуции

127 

128Когда запрос на слияние объединяется:

129 

1301. Добавленные строки извлекаются из diff PR

1312. Определяются сеансы Claude Code, которые редактировали соответствующие файлы в пределах временного окна

1323. Строки PR сопоставляются с выходом Claude Code, используя несколько стратегий

1334. Вычисляются метрики для строк с помощью AI и общего количества строк

134 

135Перед сравнением строки нормализуются: пробелы обрезаются, несколько пробелов объединяются, кавычки стандартизируются и текст преобразуется в нижний регистр.

136 

137Объединённые запросы на слияние, содержащие строки, написанные с помощью Claude Code, помечаются как `claude-code-assisted` в GitHub.

138 

139#### Временное окно

140 

141Сеансы с 21 дня до объединения PR и 2 дня после даты объединения PR рассматриваются для сопоставления атрибуции.

142 

143#### Исключённые файлы

144 

145Определённые файлы автоматически исключаются из анализа, так как они автоматически генерируются:

146 

147* Файлы блокировки: package-lock.json, yarn.lock, Cargo.lock и аналогичные

148* Сгенерированный код: выходные данные Protobuf, артефакты сборки, минифицированные файлы

149* Каталоги сборки: dist/, build/, node\_modules/, target/

150* Тестовые приспособления: снимки, кассеты, макетные данные

151* Строки более 1000 символов, которые, вероятно, минифицированы или сгенерированы

152 

153#### Примечания по атрибуции

154 

155Помните об этих дополнительных деталях при интерпретации данных атрибуции:

156 

157* Код, существенно переписанный разработчиками с разницей более 20%, не приписывается Claude Code

158* Сеансы вне 21-дневного окна не рассматриваются

159* Алгоритм не учитывает источник PR или целевую ветвь при выполнении атрибуции

160 

161### Получение максимума от аналитики

162 

163Используйте метрики вклада для демонстрации ROI, определения закономерностей внедрения и поиска членов команды, которые могут помочь другим начать работу.

164 

165#### Мониторинг внедрения

166 

167Отслеживайте диаграмму Adoption и количество пользователей, чтобы определить:

168 

169* Активных пользователей, которые могут делиться лучшими практиками

170* Общие тенденции внедрения в вашей организации

171* Снижение использования, которое может указывать на трения или проблемы

172 

173#### Измерение ROI

174 

175Метрики вклада помогают ответить на вопрос "Стоит ли этот инструмент инвестиций?" с данными из вашей собственной кодовой базы:

176 

177* Отслеживайте изменения в PR на пользователя во времени по мере увеличения внедрения

178* Сравнивайте PR и строки кода, отправленные с Claude Code и без него

179* Используйте вместе с [DORA metrics](https://dora.dev/), скоростью спринта или другими KPI инженерии, чтобы понять изменения от внедрения Claude Code

180 

181#### Определение опытных пользователей

182 

183Таблица лидеров помогает вам найти членов команды с высоким внедрением Claude Code, которые могут:

184 

185* Делиться техниками подсказок и рабочими процессами с командой

186* Предоставлять обратную связь о том, что работает хорошо

187* Помогать подключать новых пользователей

188 

189#### Доступ к данным программным способом

190 

191Для запроса этих данных через GitHub ищите PR, помеченные как `claude-code-assisted`.

192 

193## Доступ к аналитике для клиентов API

194 

195Клиенты API, использующие Claude Console, могут получить доступ к аналитике на [platform.claude.com/claude-code](https://platform.claude.com/claude-code). Вам нужно разрешение UsageView для доступа к панели, которое предоставляется ролям Developer, Billing, Admin, Owner и Primary Owner.

196 

197<Note>

198 Метрики вклада с интеграцией GitHub в настоящее время недоступны для клиентов API. Панель Console показывает только метрики использования и расходов.

199</Note>

200 

201Панель Console отображает:

202 

203* **Lines of code accepted**: общее количество строк кода, написанных Claude Code, которые пользователи приняли в своих сеансах. Это исключает отклонённые предложения и не отслеживает последующие удаления.

204* **Suggestion accept rate**: процент случаев, когда пользователи принимают использование инструмента редактирования кода, включая инструменты Edit, Write и NotebookEdit.

205* **Activity**: ежедневные активные пользователи и сеансы, показанные на диаграмме.

206* **Spend**: ежедневные затраты API в долларах наряду с количеством пользователей.

207 

208### Просмотр аналитики команды

209 

210Таблица аналитики команды показывает метрики для каждого пользователя:

211 

212* **Members**: все пользователи, которые прошли аутентификацию в Claude Code. Пользователи API-ключей отображаются по идентификатору ключа, пользователи OAuth отображаются по адресу электронной почты.

213* **Spend this month**: общие затраты API для каждого пользователя за текущий месяц.

214* **Lines this month**: общее количество принятых строк кода для каждого пользователя за текущий месяц.

215 

216<Note>

217 Цифры расходов на панели Console являются оценками в целях аналитики. Для фактических затрат обратитесь на страницу выставления счётов.

218</Note>

219 

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

221 

222* [Мониторинг с помощью OpenTelemetry](/ru/monitoring-usage): экспортируйте метрики и события в реальном времени в ваш стек наблюдаемости

223* [Управление затратами эффективно](/ru/costs): установите лимиты расходов и оптимизируйте использование токенов

224* [Разрешения](/ru/permissions): настройте роли и разрешения

authentication.md +155 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Аутентификация

6 

7> Войдите в Claude Code и настройте аутентификацию для отдельных пользователей, команд и организаций.

8 

9Claude Code поддерживает несколько методов аутентификации в зависимости от вашей конфигурации. Отдельные пользователи могут войти с помощью учетной записи Claude.ai, а команды могут использовать Claude for Teams или Enterprise, Claude Console или облачного провайдера, такого как Amazon Bedrock, Google Vertex AI или Microsoft Foundry.

10 

11## Вход в Claude Code

12 

13После [установки Claude Code](/ru/setup#install-claude-code) запустите `claude` в вашем терминале. При первом запуске Claude Code откроет окно браузера для входа.

14 

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

16 

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

18 

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

20 

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

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

23* **Claude Console**: войдите с помощью ваших учетных данных Console. Ваш администратор должен был [пригласить вас](#claude-console-authentication) предварительно.

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

25 

26Чтобы выйти и повторно аутентифицироваться, введите `/logout` в приглашение Claude Code.

27 

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

29 

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

31 

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

33 

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

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

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

37* [Google Vertex AI](/ru/google-vertex-ai)

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

39 

40### Claude for Teams или Enterprise

41 

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

43 

44* **Claude for Teams**: план самообслуживания с функциями сотрудничества, инструментами администратора и управлением выставлением счетов. Лучше всего подходит для небольших команд.

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

46 

47<Steps>

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

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

50 </Step>

51 

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

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

54 </Step>

55 

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

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

58 </Step>

59</Steps>

60 

61### Аутентификация Claude Console

62 

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

64 

65<Steps>

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

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

68 </Step>

69 

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

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

72 

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

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

75 </Step>

76 

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

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

79 

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

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

82 </Step>

83 

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

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

86 

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

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

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

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

91 </Step>

92</Steps>

93 

94### Аутентификация облачного провайдера

95 

96Для команд, использующих Amazon Bedrock, Google Vertex AI или Microsoft Foundry:

97 

98<Steps>

99 <Step title="Следуйте настройке провайдера">

100 Следуйте [документации Bedrock](/ru/amazon-bedrock), [документации Vertex](/ru/google-vertex-ai) или [документации Microsoft Foundry](/ru/microsoft-foundry).

101 </Step>

102 

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

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

105 </Step>

106 

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

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

109 </Step>

110</Steps>

111 

112## Управление учетными данными

113 

114Claude Code безопасно управляет вашими учетными данными аутентификации:

115 

116* **Место хранения**: на macOS учетные данные хранятся в зашифрованной цепочке ключей macOS Keychain. На Linux и Windows учетные данные хранятся в `~/.claude/.credentials.json` или в `$CLAUDE_CONFIG_DIR`, если эта переменная установлена. На Linux файл записывается с режимом `0600`; на Windows он наследует элементы управления доступом из каталога профиля пользователя.

117* **Поддерживаемые типы аутентификации**: учетные данные Claude.ai, учетные данные API Claude, Azure Auth, Bedrock Auth и Vertex Auth.

118* **Пользовательские скрипты учетных данных**: параметр [`apiKeyHelper`](/ru/settings#available-settings) можно настроить для запуска скрипта оболочки, который возвращает ключ API.

119* **Интервалы обновления**: по умолчанию `apiKeyHelper` вызывается через 5 минут или при ответе HTTP 401. Установите переменную окружения `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` для пользовательских интервалов обновления.

120* **Уведомление о медленном помощнике**: если `apiKeyHelper` требует более 10 секунд для возврата ключа, Claude Code отображает предупреждающее уведомление в строке приглашения, показывающее прошедшее время. Если вы видите это уведомление регулярно, проверьте, можно ли оптимизировать ваш скрипт учетных данных.

121 

122`apiKeyHelper`, `ANTHROPIC_API_KEY` и `ANTHROPIC_AUTH_TOKEN` применяются только к сеансам терминального CLI. Claude Desktop и удаленные сеансы используют исключительно OAuth и не вызывают `apiKeyHelper` и не читают переменные окружения ключа API.

123 

124### Приоритет аутентификации

125 

126Когда присутствуют несколько учетных данных, Claude Code выбирает одно в этом порядке:

127 

1281. Учетные данные облачного провайдера, когда установлены `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX` или `CLAUDE_CODE_USE_FOUNDRY`. См. [интеграции третьих сторон](/ru/third-party-integrations) для настройки.

1292. Переменная окружения `ANTHROPIC_AUTH_TOKEN`. Отправляется как заголовок `Authorization: Bearer`. Используйте это при маршрутизации через [шлюз LLM или прокси](/ru/llm-gateway), который аутентифицируется с помощью токенов-носителей, а не ключей API Anthropic.

1303. Переменная окружения `ANTHROPIC_API_KEY`. Отправляется как заголовок `X-Api-Key`. Используйте это для прямого доступа к API Anthropic с ключом из [Claude Console](https://platform.claude.com). В интерактивном режиме вам предлагается один раз одобрить или отклонить ключ, и ваш выбор запоминается. Чтобы изменить его позже, используйте переключатель "Use custom API key" в `/config`. В неинтерактивном режиме (`-p`) ключ всегда используется при наличии.

1314. Выход скрипта [`apiKeyHelper`](/ru/settings#available-settings). Используйте это для динамических или ротирующихся учетных данных, таких как краткосрочные токены, полученные из хранилища.

1325. Переменная окружения `CLAUDE_CODE_OAUTH_TOKEN`. Долгоживущий токен OAuth, созданный [`claude setup-token`](#generate-a-long-lived-token). Используйте это для конвейеров CI и скриптов, где вход через браузер недоступен.

1336. Учетные данные OAuth подписки из `/login`. Это значение по умолчанию для пользователей Claude Pro, Max, Team и Enterprise.

134 

135Если у вас есть активная подписка Claude, но также установлен `ANTHROPIC_API_KEY` в вашей среде, ключ API имеет приоритет после одобрения. Это может привести к сбоям аутентификации, если ключ принадлежит отключенной или истекшей организации. Запустите `unset ANTHROPIC_API_KEY`, чтобы вернуться к вашей подписке, и проверьте `/status`, чтобы подтвердить, какой метод активен.

136 

137[Claude Code в веб-версии](/ru/claude-code-on-the-web) всегда использует учетные данные вашей подписки. `ANTHROPIC_API_KEY` и `ANTHROPIC_AUTH_TOKEN` в среде песочницы не переопределяют их.

138 

139### Создание долгоживущего токена

140 

141Для конвейеров CI, скриптов или других сред, где интерактивный вход через браузер недоступен, создайте однолетний токен OAuth с помощью `claude setup-token`:

142 

143```bash theme={null}

144claude setup-token

145```

146 

147Команда проведет вас через авторизацию OAuth и выведет токен в терминал. Она не сохраняет токен нигде; скопируйте его и установите его как переменную окружения `CLAUDE_CODE_OAUTH_TOKEN` везде, где вы хотите аутентифицироваться:

148 

149```bash theme={null}

150export CLAUDE_CODE_OAUTH_TOKEN=your-token

151```

152 

153Этот токен аутентифицируется с помощью вашей подписки Claude и требует план Pro, Max, Team или Enterprise. Он ограничен только выводом и не может устанавливать сеансы [Remote Control](/ru/remote-control).

154 

155[Bare mode](/ru/headless#start-faster-with-bare-mode) не читает `CLAUDE_CODE_OAUTH_TOKEN`. Если ваш скрипт передает `--bare`, аутентифицируйтесь с помощью `ANTHROPIC_API_KEY` или `apiKeyHelper` вместо этого.

auto-mode-config.md +178 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Настройка режима auto

6 

7> Сообщите классификатору режима auto, какие репозитории, бакеты и домены доверяет ваша организация. Установите контекст окружения, переопределите правила блокировки и разрешения по умолчанию и проверьте вашу эффективную конфигурацию с помощью подкоманд CLI auto-mode.

8 

9[Auto mode](/ru/permission-modes#eliminate-prompts-with-auto-mode) позволяет Claude Code работать без запросов разрешения, маршрутизируя каждый вызов инструмента через классификатор, который блокирует все необратимое, деструктивное или направленное вне вашего окружения. Используйте блок настроек `autoMode`, чтобы сообщить этому классификатору, какие репозитории, бакеты и домены доверяет ваша организация, чтобы он перестал блокировать обычные внутренние операции.

10 

11<Note>

12 Auto mode доступен на планах Max, Team, Enterprise и API через Anthropic API. Он недоступен на плане Pro и на Bedrock, Vertex или Foundry. Если Claude Code сообщает, что auto mode недоступен для вашей учетной записи, проверьте [полные требования](/ru/permission-modes#eliminate-prompts-with-auto-mode), которые также охватывают поддерживаемые модели и включение администратором на планах Team и Enterprise.

13</Note>

14 

15По умолчанию классификатор доверяет только рабочему каталогу и настроенным удаленным репозиториям текущего репо. Такие действия, как отправка в исходный контроль вашей компании или запись в командный облачный бакет, блокируются до тех пор, пока вы не добавите их в `autoMode.environment`.

16 

17Информацию о том, как включить режим auto и что он блокирует по умолчанию, см. в разделе [Permission modes](/ru/permission-modes#eliminate-prompts-with-auto-mode). Эта страница является справочником по конфигурации.

18 

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

20 

21* [Выбрать, где устанавливать правила](#where-the-classifier-reads-configuration) в CLAUDE.md, пользовательских настройках и управляемых настройках

22* [Определить доверенную инфраструктуру](#define-trusted-infrastructure) с помощью `autoMode.environment`

23* [Переопределить правила блокировки и разрешения](#override-the-block-and-allow-rules), когда значения по умолчанию не подходят для вашего конвейера

24* [Проверить вашу эффективную конфигурацию](#inspect-the-defaults-and-your-effective-config) с помощью подкоманд `claude auto-mode`

25* [Просмотреть отказы](#review-denials), чтобы знать, что добавить дальше

26 

27## Where the classifier reads configuration

28 

29Классификатор читает то же содержимое [CLAUDE.md](/ru/memory), что загружает сам Claude, поэтому инструкция вроде "никогда не делай force push" в CLAUDE.md вашего проекта управляет как Claude, так и классификатором одновременно. Начните с этого для соглашений проекта и правил поведения.

30 

31Для правил, которые применяются ко всем проектам, таких как доверенная инфраструктура или организационные правила отказа, используйте блок настроек `autoMode`. Классификатор читает `autoMode` из следующих областей:

32 

33| Область | Файл | Используется для |

34| :------------------------------ | :---------------------------------------------- | :------------------------------------------------------------- |

35| Один разработчик | `~/.claude/settings.json` | Личная доверенная инфраструктура |

36| Один проект, один разработчик | `.claude/settings.local.json` | Доверенные бакеты или сервисы для каждого проекта, в gitignore |

37| Организация | [Managed settings](/ru/server-managed-settings) | Доверенная инфраструктура, распределенная всем разработчикам |

38| Флаг `--settings` или Agent SDK | Встроенный JSON | Переопределения для каждого вызова для автоматизации |

39 

40Классификатор не читает `autoMode` из общих настроек проекта в `.claude/settings.json`, поэтому проверенный репо не может внедрить свои собственные правила разрешения.

41 

42Записи из каждой области объединяются. Разработчик может расширить `environment`, `allow` и `soft_deny` личными записями, но не может удалить записи, которые предоставляют управляемые настройки. Поскольку правила разрешения действуют как исключения из правил блокировки внутри классификатора, запись `allow`, добавленная разработчиком, может переопределить запись организационного `soft_deny`: комбинация является аддитивной, а не жесткой границей политики.

43 

44<Note>

45 Классификатор — это второй шлюз, который работает после [системы разрешений](/ru/permissions). Для действий, которые никогда не должны выполняться независимо от намерения пользователя или конфигурации классификатора, используйте `permissions.deny` в управляемых настройках, который блокирует действие до того, как классификатор будет проверен, и не может быть переопределен.

46</Note>

47 

48## Определение доверенной инфраструктуры

49 

50Для большинства организаций `autoMode.environment` — это единственное поле, которое вам нужно установить. Оно сообщает классификатору, какие репозитории, бакеты и домены являются доверенными: классификатор использует его для определения того, что означает "внешний", поэтому любой пункт назначения, не указанный в списке, является потенциальной целью утечки данных.

51 

52Список окружения по умолчанию доверяет рабочему репо и его настроенным удаленным репозиториям. Чтобы добавить свои собственные записи наряду с этим значением по умолчанию, включите буквальную строку `"$defaults"` в массив. Записи по умолчанию вставляются в эту позицию, поэтому ваши пользовательские записи могут идти до или после них.

53 

54```json theme={null}

55{

56 "autoMode": {

57 "environment": [

58 "$defaults",

59 "Source control: github.example.com/acme-corp and all repos under it",

60 "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",

61 "Trusted internal domains: *.corp.example.com, api.internal.example.com",

62 "Key internal services: Jenkins at ci.example.com, Artifactory at artifacts.example.com"

63 ]

64 }

65}

66```

67 

68Записи — это проза, а не регулярные выражения или шаблоны инструментов. Классификатор читает их как правила на естественном языке. Пишите их так, как вы описали бы вашу инфраструктуру новому инженеру. Тщательный раздел окружения охватывает:

69 

70* **Организация**: название вашей компании и для чего в основном используется Claude Code, например разработка программного обеспечения, автоматизация инфраструктуры или инженерия данных

71* **Исходный контроль**: каждая организация GitHub, GitLab или Bitbucket, в которую ваши разработчики отправляют код

72* **Облачные провайдеры и доверенные бакеты**: имена бакетов или префиксы, из которых Claude должен иметь возможность читать и писать

73* **Доверенные внутренние домены**: имена хостов для API, панелей управления и сервисов внутри вашей сети, например `*.internal.example.com`

74* **Ключевые внутренние сервисы**: CI, реестры артефактов, внутренние индексы пакетов, инструменты для инцидентов

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

76 

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

78 

79```json theme={null}

80{

81 "autoMode": {

82 "environment": [

83 "$defaults",

84 "Organization: {COMPANY_NAME}. Primary use: {PRIMARY_USE_CASE, e.g. software development, infrastructure automation}",

85 "Source control: {SOURCE_CONTROL, e.g. GitHub org github.example.com/acme-corp}",

86 "Cloud provider(s): {CLOUD_PROVIDERS, e.g. AWS, GCP, Azure}",

87 "Trusted cloud buckets: {TRUSTED_BUCKETS, e.g. s3://acme-builds, gs://acme-datasets}",

88 "Trusted internal domains: {TRUSTED_DOMAINS, e.g. *.internal.example.com, api.example.com}",

89 "Key internal services: {SERVICES, e.g. Jenkins at ci.example.com, Artifactory at artifacts.example.com}",

90 "Additional context: {EXTRA, e.g. regulated industry, multi-tenant infrastructure, compliance requirements}"

91 ]

92 }

93}

94```

95 

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

97 

98Вам не нужно заполнять все сразу. Разумный процесс развертывания: начните со значений по умолчанию и добавьте организацию исходного контроля и ключевые внутренние сервисы, что решает наиболее распространенные ложные срабатывания, такие как отправка в ваши собственные репо. Затем добавьте доверенные домены и облачные бакеты. Заполните остальное по мере появления блокировок.

99 

100## Переопределение правил блокировки и разрешения

101 

102Два дополнительных поля позволяют вам заменить встроенные списки правил классификатора: `autoMode.soft_deny` управляет тем, что блокируется, а `autoMode.allow` управляет тем, какие исключения применяются. Каждое из них — это массив описаний на прозе, читаемых как правила на естественном языке. Нет поля `autoMode.deny`; чтобы жестко заблокировать действие независимо от намерения, используйте [`permissions.deny`](/ru/permissions), который работает перед классификатором.

103 

104Внутри классификатора приоритет работает в три уровня:

105 

106* Правила `soft_deny` блокируют первыми

107* Правила `allow` затем переопределяют совпадающие блокировки как исключения

108* Явное намерение пользователя переопределяет оба: если сообщение пользователя прямо и конкретно описывает точное действие, которое Claude собирается выполнить, классификатор разрешает его даже когда совпадает правило `soft_deny`

109 

110Общие запросы не считаются явным намерением. Просьба Claude "очистить репо" не авторизует force-push, но просьба Claude "force-push эту ветку" авторизует.

111 

112Чтобы ослабить, добавьте в `allow`, когда классификатор повторно помечает обычный паттерн, который исключения по умолчанию не охватывают. Чтобы усилить, добавьте в `soft_deny` для рисков, специфичных для вашего окружения, которые пропускают значения по умолчанию. Чтобы сохранить встроенные правила при добавлении своих собственных, включите буквальную строку `"$defaults"` в массив. Правила по умолчанию вставляются в эту позицию, поэтому ваши пользовательские правила могут идти до или после них, и вы продолжаете наследовать обновления по мере изменения встроенного списка в разных версиях.

113 

114```json theme={null}

115{

116 "autoMode": {

117 "environment": [

118 "$defaults",

119 "Source control: github.example.com/acme-corp and all repos under it"

120 ],

121 "allow": [

122 "$defaults",

123 "Deploying to the staging namespace is allowed: staging is isolated from production and resets nightly",

124 "Writing to s3://acme-scratch/ is allowed: ephemeral bucket with a 7-day lifecycle policy"

125 ],

126 "soft_deny": [

127 "$defaults",

128 "Never run database migrations outside the migrations CLI, even against dev databases",

129 "Never modify files under infra/terraform/prod/: production infrastructure changes go through the review workflow"

130 ]

131 }

132}

133```

134 

135<Danger>

136 Установка любого из `environment`, `allow` или `soft_deny` без `"$defaults"` заменяет весь список по умолчанию для этого раздела. Если вы установите `soft_deny` с одной записью и опустите `"$defaults"`, каждое встроенное правило блокировки отбрасывается: force push, утечка данных, `curl | bash`, развертывание в production и все остальные правила блокировки по умолчанию становятся разрешены. Опускайте `"$defaults"` только когда вы намерены взять полную ответственность за список. В этом случае запустите `claude auto-mode defaults`, чтобы вывести встроенные правила, скопируйте их в файл настроек, затем просмотрите каждое правило в соответствии с вашим конвейером и допустимостью риска.

137</Danger>

138 

139Каждый раздел оценивается независимо, поэтому установка только `environment` оставляет списки `allow` и `soft_deny` по умолчанию нетронутыми.

140 

141## Проверьте значения по умолчанию и вашу эффективную конфигурацию

142 

143Три подкоманды CLI помогают вам проверить и подтвердить вашу конфигурацию.

144 

145Выведите встроенные правила `environment`, `allow` и `soft_deny` как JSON:

146 

147```bash theme={null}

148claude auto-mode defaults

149```

150 

151Выведите то, что классификатор фактически использует как JSON, с вашими настройками, применяемыми где установлены, и значениями по умолчанию в противном случае:

152 

153```bash theme={null}

154claude auto-mode config

155```

156 

157Получите отзыв AI о ваших пользовательских правилах `allow` и `soft_deny`:

158 

159```bash theme={null}

160claude auto-mode critique

161```

162 

163Запустите `claude auto-mode config` после сохранения ваших настроек, чтобы подтвердить, что эффективные правила — это то, что вы ожидаете, с развёрнутым `"$defaults"` на месте. Если вы написали пользовательские правила, `claude auto-mode critique` просматривает их и помечает записи, которые неоднозначны, избыточны или могут вызвать ложные срабатывания. Если вам нужно удалить или переписать встроенное правило вместо того, чтобы добавить его рядом, сохраните вывод `claude auto-mode defaults` в файл, отредактируйте списки и вставьте результат в файл настроек вместо `"$defaults"`.

164 

165## Review denials

166 

167Когда режим auto отказывает в вызове инструмента, отказ записывается в `/permissions` на вкладке Recently denied. Нажмите `r` на отклоненном действии, чтобы отметить его для повтора: когда вы выйдете из диалога, Claude Code отправит сообщение, сообщающее модели, что она может повторить этот вызов инструмента и возобновить разговор.

168 

169Повторные отказы для одного и того же пункта назначения обычно означают, что классификатору не хватает контекста. Добавьте этот пункт назначения в `autoMode.environment`, затем запустите `claude auto-mode config`, чтобы подтвердить, что это вступило в силу.

170 

171Чтобы реагировать на отказы программно, используйте [hook `PermissionDenied`](/ru/hooks#permissiondenied).

172 

173## See also

174 

175* [Permission modes](/ru/permission-modes#eliminate-prompts-with-auto-mode): что такое режим auto, что он блокирует по умолчанию и как его включить

176* [Managed settings](/ru/server-managed-settings): развертывание конфигурации `autoMode` по всей организации

177* [Permissions](/ru/permissions): правила разрешения, запроса и отказа, которые применяются перед запуском классификатора

178* [Settings](/ru/settings): полный справочник настроек, включая ключ `autoMode`

best-practices.md +583 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Лучшие практики для Claude Code

6 

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

8 

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

10 

11Это меняет способ вашей работы. Вместо того чтобы писать код самостоятельно и просить Claude его проверить, вы описываете, что хотите, и Claude понимает, как это построить. Claude исследует, планирует и реализует.

12 

13Но эта автономность всё ещё требует кривой обучения. Claude работает в определённых ограничениях, которые вам нужно понимать.

14 

15Это руководство охватывает паттерны, которые доказали свою эффективность во внутренних командах Anthropic и для инженеров, использующих Claude Code в различных кодовых базах, языках и окружениях. Чтобы узнать, как агентивный цикл работает под капотом, см. [How Claude Code works](/ru/how-claude-code-works).

16 

17***

18 

19Большинство лучших практик основаны на одном ограничении: контекстное окно Claude заполняется быстро, и производительность деградирует по мере его заполнения.

20 

21Контекстное окно Claude содержит весь ваш разговор, включая каждое сообщение, каждый файл, который читает Claude, и каждый вывод команды. Однако это может заполниться быстро. Один сеанс отладки или исследование кодовой базы может сгенерировать и потребить десятки тысяч токенов.

22 

23Это важно, потому что производительность LLM деградирует по мере заполнения контекста. Когда контекстное окно почти полное, Claude может начать «забывать» более ранние инструкции или делать больше ошибок. Контекстное окно — это самый важный ресурс для управления. Чтобы увидеть, как сеанс заполняется на практике, [посмотрите интерактивное пошаговое руководство](/ru/context-window) того, что загружается при запуске и какие затраты на каждое чтение файла. Отслеживайте использование контекста непрерывно с помощью [пользовательской строки состояния](/ru/statusline), и см. [Reduce token usage](/ru/costs#reduce-token-usage) для стратегий по снижению использования токенов.

24 

25***

26 

27## Дайте Claude способ проверить свою работу

28 

29<Tip>

30 Включите тесты, скриншоты или ожидаемые выходные данные, чтобы Claude мог проверить себя. Это самое высокоэффективное, что вы можете сделать.

31</Tip>

32 

33Claude работает значительно лучше, когда может проверить свою собственную работу, например запустить тесты, сравнить скриншоты и проверить выходные данные.

34 

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

36 

37| Стратегия | До | После |

38| ------------------------------------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

39| **Предоставьте критерии проверки** | *"реализовать функцию, которая проверяет адреса электронной почты"* | *"написать функцию validateEmail. примеры тестовых случаев: [user@example.com](mailto:user@example.com) это true, invalid это false, [user@.com](mailto:user@.com) это false. запустить тесты после реализации"* |

40| **Проверьте изменения UI визуально** | *"сделать панель управления лучше"* | *"\[вставить скриншот] реализовать этот дизайн. сделать скриншот результата и сравнить его с оригиналом. перечислить различия и исправить их"* |

41| **Решайте коренные причины, а не симптомы** | *"сборка не работает"* | *"сборка не работает с этой ошибкой: \[вставить ошибку]. исправить и проверить, что сборка успешна. решить коренную причину, не подавлять ошибку"* |

42 

43Изменения UI можно проверить с помощью [Claude in Chrome extension](/ru/chrome). Он открывает новые вкладки в вашем браузере, тестирует UI и повторяет итерации, пока код не будет работать.

44 

45Ваша проверка также может быть набором тестов, линтером или командой Bash, которая проверяет выходные данные. Инвестируйте в то, чтобы ваша проверка была надёжной.

46 

47***

48 

49## Сначала исследуйте, потом планируйте, потом кодируйте

50 

51<Tip>

52 Отделите исследование и планирование от реализации, чтобы избежать решения неправильной проблемы.

53</Tip>

54 

55Позволение Claude сразу перейти к кодированию может привести к коду, который решает неправильную проблему. Используйте [Plan Mode](/ru/common-workflows#use-plan-mode-for-safe-code-analysis) для отделения исследования от выполнения.

56 

57Рекомендуемый рабочий процесс имеет четыре фазы:

58 

59<Steps>

60 <Step title="Исследуйте">

61 Войдите в Plan Mode. Claude читает файлы и отвечает на вопросы без внесения изменений.

62 

63 ```txt claude (Plan Mode) theme={null}

64 read /src/auth and understand how we handle sessions and login.

65 also look at how we manage environment variables for secrets.

66 ```

67 </Step>

68 

69 <Step title="Планируйте">

70 Попросите Claude создать подробный план реализации.

71 

72 ```txt claude (Plan Mode) theme={null}

73 I want to add Google OAuth. What files need to change?

74 What's the session flow? Create a plan.

75 ```

76 

77 Нажмите `Ctrl+G`, чтобы открыть план в вашем текстовом редакторе для прямого редактирования перед тем, как Claude продолжит.

78 </Step>

79 

80 <Step title="Реализуйте">

81 Переключитесь обратно в Normal Mode и позвольте Claude кодировать, проверяя против его плана.

82 

83 ```txt claude (Normal Mode) theme={null}

84 implement the OAuth flow from your plan. write tests for the

85 callback handler, run the test suite and fix any failures.

86 ```

87 </Step>

88 

89 <Step title="Зафиксируйте">

90 Попросите Claude зафиксировать с описательным сообщением и создать PR.

91 

92 ```txt claude (Normal Mode) theme={null}

93 commit with a descriptive message and open a PR

94 ```

95 </Step>

96</Steps>

97 

98<Callout>

99 Plan Mode полезен, но также добавляет накладные расходы.

100 

101 Для задач, где область видимости ясна и исправление небольшое (например, исправление опечатки, добавление строки логирования или переименование переменной), попросите Claude сделать это напрямую.

102 

103 Планирование наиболее полезно, когда вы не уверены в подходе, когда изменение модифицирует несколько файлов или когда вы не знакомы с кодом, который модифицируется. Если вы можете описать diff в одном предложении, пропустите план.

104</Callout>

105 

106***

107 

108## Предоставьте конкретный контекст в ваших подсказках

109 

110<Tip>

111 Чем точнее ваши инструкции, тем меньше исправлений вам потребуется.

112</Tip>

113 

114Claude может вывести намерение, но не может читать ваши мысли. Ссылайтесь на конкретные файлы, упоминайте ограничения и указывайте на примеры паттернов.

115 

116| Стратегия | До | После |

117| ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

118| **Определите область задачи.** Укажите, какой файл, какой сценарий и предпочтения тестирования. | *"добавить тесты для foo.py"* | *"написать тест для foo.py, охватывающий граничный случай, когда пользователь вышел из системы. избегать мокирования."* |

119| **Укажите источники.** Направьте Claude к источнику, который может ответить на вопрос. | *"почему ExecutionFactory имеет такой странный api?"* | *"посмотреть через историю git ExecutionFactory и суммировать, как его api пришёл к этому"* |

120| **Ссылайтесь на существующие паттерны.** Укажите Claude на паттерны в вашей кодовой базе. | *"добавить виджет календаря"* | *"посмотреть, как существующие виджеты реализованы на домашней странице, чтобы понять паттерны. HotDogWidget.php — хороший пример. следовать паттерну для реализации нового виджета календаря, который позволяет пользователю выбрать месяц и переходить вперёд/назад для выбора года. строить с нуля без библиотек, кроме уже используемых в кодовой базе."* |

121| **Опишите симптом.** Предоставьте симптом, вероятное местоположение и то, как выглядит «исправленное». | *"исправить ошибку входа"* | *"пользователи сообщают, что вход не работает после истечения сеанса. проверить поток аутентификации в src/auth/, особенно обновление токена. написать тест, который не проходит и воспроизводит проблему, затем исправить её"* |

122 

123Расплывчатые подсказки могут быть полезны, когда вы исследуете и можете позволить себе изменить курс. Подсказка вроде `"что бы вы улучшили в этом файле?"` может выявить вещи, о которых вы не подумали бы спросить.

124 

125### Предоставьте богатый контент

126 

127<Tip>

128 Используйте `@` для ссылки на файлы, вставляйте скриншоты/изображения или передавайте данные напрямую.

129</Tip>

130 

131Вы можете предоставить богатые данные Claude несколькими способами:

132 

133* **Ссылайтесь на файлы с `@`** вместо описания того, где находится код. Claude читает файл перед ответом.

134* **Вставляйте изображения напрямую**. Скопируйте/вставьте или перетащите изображения в подсказку.

135* **Дайте URL-адреса** для документации и справочников API. Используйте `/permissions` для добавления в белый список часто используемых доменов.

136* **Передавайте данные** путём запуска `cat error.log | claude` для отправки содержимого файла напрямую.

137* **Позвольте Claude получить то, что ему нужно**. Скажите Claude вытащить контекст самостоятельно, используя команды Bash, MCP tools или читая файлы.

138 

139***

140 

141## Настройте ваше окружение

142 

143Несколько шагов настройки делают Claude Code значительно более эффективным во всех ваших сеансах. Для полного обзора функций расширения и когда использовать каждую, см. [Extend Claude Code](/ru/features-overview).

144 

145### Напишите эффективный CLAUDE.md

146 

147<Tip>

148 Запустите `/init` для генерации стартового файла CLAUDE.md на основе текущей структуры вашего проекта, затем уточняйте со временем.

149</Tip>

150 

151CLAUDE.md — это специальный файл, который Claude читает в начале каждого разговора. Включите команды Bash, стиль кода и правила рабочего процесса. Это даёт Claude постоянный контекст, который он не может вывести только из кода.

152 

153Команда `/init` анализирует вашу кодовую базу для обнаружения систем сборки, фреймворков тестирования и паттернов кода, давая вам прочную основу для уточнения.

154 

155Нет требуемого формата для файлов CLAUDE.md, но держите его коротким и удобочитаемым. Например:

156 

157```markdown CLAUDE.md theme={null}

158# Code style

159- Use ES modules (import/export) syntax, not CommonJS (require)

160- Destructure imports when possible (eg. import { foo } from 'bar')

161 

162# Workflow

163- Be sure to typecheck when you're done making a series of code changes

164- Prefer running single tests, and not the whole test suite, for performance

165```

166 

167CLAUDE.md загружается каждый сеанс, поэтому включайте только то, что применяется широко. Для знаний о домене или рабочих процессов, которые актуальны только иногда, используйте [skills](/ru/skills) вместо этого. Claude загружает их по требованию без раздувания каждого разговора.

168 

169Держите это кратко. Для каждой строки спросите себя: *"Привело ли бы удаление этого к ошибкам Claude?"* Если нет, удалите. Раздутые файлы CLAUDE.md заставляют Claude игнорировать ваши фактические инструкции!

170 

171| ✅ Включите | ❌ Исключите |

172| ------------------------------------------------------------------- | ----------------------------------------------------------------- |

173| Команды Bash, которые Claude не может угадать | Всё, что Claude может понять, прочитав код |

174| Правила стиля кода, которые отличаются от стандартов | Стандартные соглашения языка, которые Claude уже знает |

175| Инструкции по тестированию и предпочитаемые тестовые бегуны | Подробная документация API (вместо этого ссылайтесь на документы) |

176| Этикет репозитория (именование ветвей, соглашения PR) | Информация, которая часто меняется |

177| Архитектурные решения, специфичные для вашего проекта | Длинные объяснения или учебники |

178| Особенности окружения разработчика (требуемые переменные окружения) | Описания файл-за-файлом кодовой базы |

179| Общие подводные камни или неочевидные поведения | Самоочевидные практики вроде "писать чистый код" |

180 

181Если Claude продолжает делать что-то, что вы не хотите, несмотря на наличие правила против этого, файл, вероятно, слишком длинный и правило теряется. Если Claude задаёт вам вопросы, которые ответены в CLAUDE.md, формулировка может быть неоднозначной. Относитесь к CLAUDE.md как к коду: проверяйте его, когда что-то идёт не так, регулярно обрезайте его и тестируйте изменения, наблюдая, действительно ли поведение Claude меняется.

182 

183Вы можете настроить инструкции, добавив акцент (например, "IMPORTANT" или "YOU MUST"), чтобы улучшить соответствие. Зафиксируйте CLAUDE.md в git, чтобы ваша команда могла внести свой вклад. Файл накапливает ценность со временем.

184 

185Файлы CLAUDE.md могут импортировать дополнительные файлы, используя синтаксис `@path/to/import`:

186 

187```markdown CLAUDE.md theme={null}

188See @README.md for project overview and @package.json for available npm commands.

189 

190# Additional Instructions

191- Git workflow: @docs/git-instructions.md

192- Personal overrides: @~/.claude/my-project-instructions.md

193```

194 

195Вы можете разместить файлы CLAUDE.md в нескольких местах:

196 

197* **Домашняя папка (`~/.claude/CLAUDE.md`)**: применяется ко всем сеансам Claude

198* **Корень проекта (`./CLAUDE.md`)**: зафиксировать в git для совместного использования с вашей командой

199* **Корень проекта (`./CLAUDE.local.md`)**: личные заметки, специфичные для проекта; добавьте этот файл в ваш `.gitignore`, чтобы он не был общим с вашей командой

200* **Родительские директории**: полезно для монорепозиториев, где оба `root/CLAUDE.md` и `root/foo/CLAUDE.md` автоматически подтягиваются

201* **Дочерние директории**: Claude подтягивает дочерние файлы CLAUDE.md по требованию при работе с файлами в этих директориях

202 

203### Настройте разрешения

204 

205<Tip>

206 Используйте [auto mode](/ru/permission-modes#eliminate-prompts-with-auto-mode) для автоматического одобрения, `/permissions` для добавления в белый список конкретных команд или `/sandbox` для изоляции на уровне ОС. Каждый вариант снижает прерывания, сохраняя вас в контроле.

207</Tip>

208 

209По умолчанию Claude Code запрашивает разрешение для действий, которые могут модифицировать вашу систему: записи файлов, команды Bash, MCP tools и т.д. Это безопасно, но утомительно. После десятого одобрения вы не совсем проверяете, вы просто кликаете. Есть три способа снизить эти прерывания:

210 

211* **Auto mode**: отдельная модель-классификатор проверяет команды и блокирует только то, что выглядит рискованно: расширение области, неизвестная инфраструктура или действия, вызванные враждебным контентом. Лучше всего, когда вы доверяете общему направлению задачи, но не хотите кликать через каждый шаг

212* **Белые списки разрешений**: разрешить конкретные инструменты, которые вы знаете, что безопасны, например `npm run lint` или `git commit`

213* **Sandboxing**: включить изоляцию на уровне ОС, которая ограничивает доступ к файловой системе и сети, позволяя Claude работать более свободно в определённых границах

214 

215Прочитайте больше о [permission modes](/ru/permission-modes), [permission rules](/ru/permissions) и [sandboxing](/ru/sandboxing).

216 

217### Используйте CLI tools

218 

219<Tip>

220 Скажите Claude Code использовать CLI tools, такие как `gh`, `aws`, `gcloud` и `sentry-cli`, при взаимодействии с внешними сервисами.

221</Tip>

222 

223CLI tools — это наиболее контекстно-эффективный способ взаимодействия с внешними сервисами. Если вы используете GitHub, установите CLI `gh`. Claude знает, как его использовать для создания issues, открытия pull requests и чтения комментариев. Без `gh`, Claude всё ещё может использовать GitHub API, но неаутентифицированные запросы часто попадают на ограничения по частоте.

224 

225Claude также эффективен в изучении CLI tools, которые он не знает. Попробуйте подсказки вроде `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.`

226 

227### Подключите MCP servers

228 

229<Tip>

230 Запустите `claude mcp add` для подключения внешних инструментов, таких как Notion, Figma или ваша база данных.

231</Tip>

232 

233С [MCP servers](/ru/mcp), вы можете попросить Claude реализовать функции из трекеров issues, запросить базы данных, анализировать данные мониторинга, интегрировать дизайны из Figma и автоматизировать рабочие процессы.

234 

235### Установите hooks

236 

237<Tip>

238 Используйте hooks для действий, которые должны происходить каждый раз без исключений.

239</Tip>

240 

241[Hooks](/ru/hooks-guide) запускают скрипты автоматически в определённых точках рабочего процесса Claude. В отличие от инструкций CLAUDE.md, которые являются рекомендательными, hooks являются детерминированными и гарантируют, что действие происходит.

242 

243Claude может писать hooks для вас. Попробуйте подсказки вроде *"Write a hook that runs eslint after every file edit"* или *"Write a hook that blocks writes to the migrations folder."* Отредактируйте `.claude/settings.json` напрямую для конфигурации hooks вручную, и запустите `/hooks` для просмотра того, что настроено.

244 

245### Создайте skills

246 

247<Tip>

248 Создайте файлы `SKILL.md` в `.claude/skills/` для предоставления Claude знаний о домене и переиспользуемых рабочих процессов.

249</Tip>

250 

251[Skills](/ru/skills) расширяют знания Claude информацией, специфичной для вашего проекта, команды или домена. Claude применяет их автоматически, когда они актуальны, или вы можете вызвать их напрямую с помощью `/skill-name`.

252 

253Создайте skill, добавив директорию с `SKILL.md` в `.claude/skills/`:

254 

255```markdown .claude/skills/api-conventions/SKILL.md theme={null}

256---

257name: api-conventions

258description: REST API design conventions for our services

259---

260# API Conventions

261- Use kebab-case for URL paths

262- Use camelCase for JSON properties

263- Always include pagination for list endpoints

264- Version APIs in the URL path (/v1/, /v2/)

265```

266 

267Skills также могут определять переиспользуемые рабочие процессы, которые вы вызываете напрямую:

268 

269```markdown .claude/skills/fix-issue/SKILL.md theme={null}

270---

271name: fix-issue

272description: Fix a GitHub issue

273disable-model-invocation: true

274---

275Analyze and fix the GitHub issue: $ARGUMENTS.

276 

2771. Use `gh issue view` to get the issue details

2782. Understand the problem described in the issue

2793. Search the codebase for relevant files

2804. Implement the necessary changes to fix the issue

2815. Write and run tests to verify the fix

2826. Ensure code passes linting and type checking

2837. Create a descriptive commit message

2848. Push and create a PR

285```

286 

287Запустите `/fix-issue 1234` для вызова. Используйте `disable-model-invocation: true` для рабочих процессов с побочными эффектами, которые вы хотите запустить вручную.

288 

289### Создайте пользовательские subagents

290 

291<Tip>

292 Определите специализированных помощников в `.claude/agents/`, которых Claude может делегировать для изолированных задач.

293</Tip>

294 

295[Subagents](/ru/sub-agents) запускаются в своём собственном контексте с собственным набором разрешённых инструментов. Они полезны для задач, которые читают много файлов или нуждаются в специализированном внимании без загромождения вашего основного разговора.

296 

297```markdown .claude/agents/security-reviewer.md theme={null}

298---

299name: security-reviewer

300description: Reviews code for security vulnerabilities

301tools: Read, Grep, Glob, Bash

302model: opus

303---

304You are a senior security engineer. Review code for:

305- Injection vulnerabilities (SQL, XSS, command injection)

306- Authentication and authorization flaws

307- Secrets or credentials in code

308- Insecure data handling

309 

310Provide specific line references and suggested fixes.

311```

312 

313Скажите Claude использовать subagents явно: *"Use a subagent to review this code for security issues."*

314 

315### Установите plugins

316 

317<Tip>

318 Запустите `/plugin` для просмотра маркетплейса. Plugins добавляют skills, tools и интеграции без конфигурации.

319</Tip>

320 

321[Plugins](/ru/plugins) объединяют skills, hooks, subagents и MCP servers в единый устанавливаемый модуль из сообщества и Anthropic. Если вы работаете с типизированным языком, установите [code intelligence plugin](/ru/discover-plugins#code-intelligence) для предоставления Claude точной навигации по символам и автоматического обнаружения ошибок после редактирования.

322 

323Для руководства по выбору между skills, subagents, hooks и MCP, см. [Extend Claude Code](/ru/features-overview#match-features-to-your-goal).

324 

325***

326 

327## Общайтесь эффективно

328 

329Способ, которым вы общаетесь с Claude Code, значительно влияет на качество результатов.

330 

331### Задавайте вопросы о кодовой базе

332 

333<Tip>

334 Задавайте Claude вопросы, которые вы задали бы старшему инженеру.

335</Tip>

336 

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

338 

339* Как работает логирование?

340* Как мне создать новую конечную точку API?

341* Что делает `async move { ... }` на строке 134 файла `foo.rs`?

342* Какие граничные случаи обрабатывает `CustomerOnboardingFlowImpl`?

343* Почему этот код вызывает `foo()` вместо `bar()` на строке 333?

344 

345Использование Claude Code таким образом — это эффективный рабочий процесс адаптации, улучшающий время рамп-апа и снижающий нагрузку на других инженеров. Специальное формирование подсказок не требуется: задавайте вопросы напрямую.

346 

347### Позвольте Claude взять интервью у вас

348 

349<Tip>

350 Для более крупных функций позвольте Claude взять интервью у вас в первую очередь. Начните с минимальной подсказки и попросите Claude взять интервью у вас, используя инструмент `AskUserQuestion`.

351</Tip>

352 

353Claude задаёт вопросы о вещах, которые вы, возможно, не рассмотрели, включая техническую реализацию, UI/UX, граничные случаи и компромиссы.

354 

355```text theme={null}

356I want to build [brief description]. Interview me in detail using the AskUserQuestion tool.

357 

358Ask about technical implementation, UI/UX, edge cases, concerns, and tradeoffs. Don't ask obvious questions, dig into the hard parts I might not have considered.

359 

360Keep interviewing until we've covered everything, then write a complete spec to SPEC.md.

361```

362 

363Как только спецификация завершена, начните свежий сеанс для её выполнения. Новый сеанс имеет чистый контекст, сосредоточенный полностью на реализации, и у вас есть письменная спецификация для справки.

364 

365***

366 

367## Управляйте вашим сеансом

368 

369Разговоры являются постоянными и обратимыми. Используйте это в своих интересах!

370 

371### Исправляйте курс рано и часто

372 

373<Tip>

374 Исправьте Claude, как только заметите, что он идёт не в том направлении.

375</Tip>

376 

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

378 

379* **`Esc`**: остановите Claude в середине действия клавишей `Esc`. Контекст сохраняется, поэтому вы можете перенаправить.

380* **`Esc + Esc` или `/rewind`**: нажмите `Esc` дважды или запустите `/rewind` для открытия меню перемотки и восстановления предыдущего разговора и состояния кода, или суммируйте из выбранного сообщения.

381* **`"Undo that"`**: попросите Claude отменить его изменения.

382* **`/clear`**: сбросить контекст между несвязанными задачами. Длинные сеансы с нерелевантным контекстом могут снизить производительность.

383 

384Если вы исправили Claude более двух раз на одну и ту же проблему в одном сеансе, контекст загромождён неудачными подходами. Запустите `/clear` и начните заново с более конкретной подсказкой, которая включает то, что вы узнали. Чистый сеанс с лучшей подсказкой почти всегда превосходит длинный сеанс с накопленными исправлениями.

385 

386### Управляйте контекстом агрессивно

387 

388<Tip>

389 Запустите `/clear` между несвязанными задачами для сброса контекста.

390</Tip>

391 

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

393 

394Во время длинных сеансов контекстное окно Claude может заполниться нерелевантным разговором, содержимым файлов и командами. Это может снизить производительность и иногда отвлечь Claude.

395 

396* Используйте `/clear` часто между задачами для полного сброса контекстного окна

397* Когда автоматическое компактирование срабатывает, Claude суммирует то, что имеет значение, включая паттерны кода, состояния файлов и ключевые решения

398* Для большего контроля запустите `/compact <instructions>`, например `/compact Focus on the API changes`

399* Для компактирования только части разговора используйте `Esc + Esc` или `/rewind`, выберите контрольную точку сообщения и выберите **Summarize from here**. Это сжимает сообщения с этой точки вперёд, сохраняя более ранний контекст нетронутым.

400* Настройте поведение компактирования в CLAUDE.md с инструкциями вроде `"When compacting, always preserve the full list of modified files and any test commands"` для обеспечения того, что критический контекст выживает при суммировании

401* Для быстрых вопросов, которые не нужно оставлять в контексте, используйте [`/btw`](/ru/interactive-mode#side-questions-with-%2Fbtw). Ответ появляется в отклоняемом оверлее и никогда не входит в историю разговора, поэтому вы можете проверить деталь без увеличения контекста.

402 

403### Используйте subagents для исследования

404 

405<Tip>

406 Делегируйте исследование с помощью `"use subagents to investigate X"`. Они исследуют в отдельном контексте, сохраняя ваш основной разговор чистым для реализации.

407</Tip>

408 

409Поскольку контекст — это ваше фундаментальное ограничение, subagents — один из самых мощных доступных инструментов. Когда Claude исследует кодовую базу, он читает много файлов, все из которых потребляют ваш контекст. Subagents запускаются в отдельных контекстных окнах и сообщают обратно суммарные данные:

410 

411```text theme={null}

412Use subagents to investigate how our authentication system handles token

413refresh, and whether we have any existing OAuth utilities I should reuse.

414```

415 

416Subagent исследует кодовую базу, читает релевантные файлы и сообщает обратно с выводами, всё без загромождения вашего основного разговора.

417 

418Вы также можете использовать subagents для проверки после того, как Claude что-то реализует:

419 

420```text theme={null}

421use a subagent to review this code for edge cases

422```

423 

424### Перемотайте с контрольными точками

425 

426<Tip>

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

428</Tip>

429 

430Claude автоматически создаёт контрольные точки перед изменениями. Дважды нажмите `Escape` или запустите `/rewind` для открытия меню перемотки. Вы можете восстановить только разговор, восстановить только код, восстановить оба или суммировать из выбранного сообщения. См. [Checkpointing](/ru/checkpointing) для деталей.

431 

432Вместо тщательного планирования каждого хода, вы можете сказать Claude попробовать что-то рискованное. Если это не сработает, перемотайте и попробуйте другой подход. Контрольные точки сохраняются между сеансами, поэтому вы можете закрыть ваш терминал и всё ещё перемотать позже.

433 

434<Warning>

435 Контрольные точки отслеживают только изменения, сделанные *Claude*, а не внешние процессы. Это не замена git.

436</Warning>

437 

438### Возобновите разговоры

439 

440<Tip>

441 Запустите `claude --continue` для продолжения с того места, где вы остановились, или `--resume` для выбора из недавних сеансов.

442</Tip>

443 

444Claude Code сохраняет разговоры локально. Когда задача охватывает несколько сеансов, вам не нужно переобъяснять контекст:

445 

446```bash theme={null}

447claude --continue # Resume the most recent conversation

448claude --resume # Select from recent conversations

449```

450 

451Используйте `/rename` для присвоения сеансам описательных имён, таких как `"oauth-migration"` или `"debugging-memory-leak"`, чтобы вы могли найти их позже. Относитесь к сеансам как к ветвям: разные рабочие потоки могут иметь отдельные, постоянные контексты.

452 

453***

454 

455## Автоматизируйте и масштабируйте

456 

457Как только вы эффективны с одним Claude, умножьте ваш выход с параллельными сеансами, неинтерактивным режимом и паттернами fan-out.

458 

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

460 

461### Запустите неинтерактивный режим

462 

463<Tip>

464 Используйте `claude -p "prompt"` в CI, pre-commit hooks или скриптах. Добавьте `--output-format stream-json` для потокового вывода JSON.

465</Tip>

466 

467С `claude -p "your prompt"`, вы можете запустить Claude неинтерактивно, без сеанса. Неинтерактивный режим — это как вы интегрируете Claude в CI pipelines, pre-commit hooks или любой автоматизированный рабочий процесс. Форматы вывода позволяют вам анализировать результаты программно: простой текст, JSON или потоковый JSON.

468 

469```bash theme={null}

470# One-off queries

471claude -p "Explain what this project does"

472 

473# Structured output for scripts

474claude -p "List all API endpoints" --output-format json

475 

476# Streaming for real-time processing

477claude -p "Analyze this log file" --output-format stream-json

478```

479 

480### Запустите несколько сеансов Claude

481 

482<Tip>

483 Запустите несколько сеансов Claude параллельно для ускорения разработки, запуска изолированных экспериментов или запуска сложных рабочих процессов.

484</Tip>

485 

486Есть три основных способа запуска параллельных сеансов:

487 

488* [Claude Code desktop app](/ru/desktop#work-in-parallel-with-sessions): Управляйте несколькими локальными сеансами визуально. Каждый сеанс получает свой собственный изолированный worktree.

489* [Claude Code on the web](/ru/claude-code-on-the-web): Запустите на защищённой облачной инфраструктуре Anthropic в изолированных VMs.

490* [Agent teams](/ru/agent-teams): Автоматизированная координация нескольких сеансов с общими задачами, обмена сообщениями и лидера команды.

491 

492Помимо параллелизации работы, несколько сеансов позволяют рабочие процессы, сосредоточенные на качестве. Свежий контекст улучшает проверку кода, поскольку Claude не будет предвзят к коду, который он только что написал.

493 

494Например, используйте паттерн Writer/Reviewer:

495 

496| Session A (Writer) | Session B (Reviewer) |

497| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

498| `Implement a rate limiter for our API endpoints` | |

499| | `Review the rate limiter implementation in @src/middleware/rateLimiter.ts. Look for edge cases, race conditions, and consistency with our existing middleware patterns.` |

500| `Here's the review feedback: [Session B output]. Address these issues.` | |

501 

502Вы можете сделать что-то подобное с тестами: пусть один Claude напишет тесты, затем другой напишет код для их прохождения.

503 

504### Fan out через файлы

505 

506<Tip>

507 Зациклитесь через задачи, вызывая `claude -p` для каждой. Используйте `--allowedTools` для определения области разрешений для пакетных операций.

508</Tip>

509 

510Для больших миграций или анализов, вы можете распределить работу через много параллельных вызовов Claude:

511 

512<Steps>

513 <Step title="Сгенерируйте список задач">

514 Попросите Claude перечислить все файлы, которые нужно мигрировать (например, `list all 2,000 Python files that need migrating`)

515 </Step>

516 

517 <Step title="Напишите скрипт для циклирования через список">

518 ```bash theme={null}

519 for file in $(cat files.txt); do

520 claude -p "Migrate $file from React to Vue. Return OK or FAIL." \

521 --allowedTools "Edit,Bash(git commit *)"

522 done

523 ```

524 </Step>

525 

526 <Step title="Тестируйте на нескольких файлах, затем запустите в масштабе">

527 Уточняйте вашу подсказку на основе того, что идёт не так с первыми 2-3 файлами, затем запустите на полном наборе. Флаг `--allowedTools` ограничивает то, что Claude может делать, что важно, когда вы запускаете без присмотра.

528 </Step>

529</Steps>

530 

531Вы также можете интегрировать Claude в существующие конвейеры данных/обработки:

532 

533```bash theme={null}

534claude -p "<your prompt>" --output-format json | your_command

535```

536 

537Используйте `--verbose` для отладки во время разработки и отключите его в production.

538 

539### Запустите автономно с auto mode

540 

541Для непрерывного выполнения с проверками безопасности в фоне используйте [auto mode](/ru/permission-modes#eliminate-prompts-with-auto-mode). Модель-классификатор проверяет команды перед их запуском, блокируя расширение области, неизвестную инфраструктуру и действия, вызванные враждебным контентом, позволяя обычной работе продолжаться без подсказок.

542 

543```bash theme={null}

544claude --permission-mode auto -p "fix all lint errors"

545```

546 

547Для неинтерактивных запусков с флагом `-p`, auto mode прерывает работу, если классификатор повторно блокирует действия, поскольку нет пользователя для отката. См. [when auto mode falls back](/ru/permission-modes#when-auto-mode-falls-back) для пороговых значений.

548 

549***

550 

551## Избегайте общих паттернов отказа

552 

553Это общие ошибки. Их раннее распознавание экономит время:

554 

555* **Сеанс кухонной раковины.** Вы начинаете с одной задачи, затем спрашиваете Claude что-то несвязанное, затем возвращаетесь к первой задаче. Контекст полон нерелевантной информации.

556 > **Исправление**: `/clear` между несвязанными задачами.

557* **Исправление снова и снова.** Claude делает что-то неправильно, вы исправляете, это всё ещё неправильно, вы исправляете снова. Контекст загромождён неудачными подходами.

558 > **Исправление**: После двух неудачных исправлений, `/clear` и напишите лучшую начальную подсказку, включающую то, что вы узнали.

559* **Переопределённый CLAUDE.md.** Если ваш CLAUDE.md слишком длинный, Claude игнорирует половину его, потому что важные правила теряются в шуме.

560 > **Исправление**: Безжалостно обрезайте. Если Claude уже делает что-то правильно без инструкции, удалите это или преобразуйте в hook.

561* **Разрыв доверия-затем-проверки.** Claude создаёт правдоподобно выглядящую реализацию, которая не обрабатывает граничные случаи.

562 > **Исправление**: Всегда предоставляйте проверку (тесты, скрипты, скриншоты). Если вы не можете это проверить, не отправляйте это.

563* **Бесконечное исследование.** Вы просите Claude "исследовать" что-то без определения области. Claude читает сотни файлов, заполняя контекст.

564 > **Исправление**: Определите исследования узко или используйте subagents, чтобы исследование не потребляло ваш основной контекст.

565 

566***

567 

568## Развивайте вашу интуицию

569 

570Паттерны в этом руководстве не высечены в камне. Они являются отправными точками, которые хорошо работают в целом, но могут быть не оптимальны для каждой ситуации.

571 

572Иногда вы *должны* позволить контексту накапливаться, потому что вы глубоко в одной сложной проблеме и история ценна. Иногда вы должны пропустить планирование и позволить Claude понять это, потому что задача исследовательская. Иногда расплывчатая подсказка — это именно то, что нужно, потому что вы хотите увидеть, как Claude интерпретирует проблему перед её ограничением.

573 

574Обратите внимание на то, что работает. Когда Claude создаёт отличный выход, заметьте, что вы сделали: структуру подсказки, контекст, который вы предоставили, режим, в котором вы были. Когда Claude борется, спросите почему. Был ли контекст слишком шумным? Подсказка слишком расплывчатой? Задача слишком большой для одного прохода?

575 

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

577 

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

579 

580* [How Claude Code works](/ru/how-claude-code-works): агентивный цикл, инструменты и управление контекстом

581* [Extend Claude Code](/ru/features-overview): skills, hooks, MCP, subagents и plugins

582* [Common workflows](/ru/common-workflows): пошаговые рецепты для отладки, тестирования, PRs и многого другого

583* [CLAUDE.md](/ru/memory): сохранять соглашения проекта и постоянный контекст

champion-kit.md +196 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Набор инструментов чемпиона

6 

7> Руководство для инженеров, продвигающих Claude Code внутри организации: что делиться, как отвечать на вопросы и как увеличить внедрение в вашей команде.

8 

9Эта страница предназначена для отдельных инженеров, которые уже используют Claude Code и хотят помочь своей команде его внедрить. Она охватывает то, что делиться, как отвечать на вопросы, которые вы получите, тридцатидневный план действий и ответы на распространённые опасения.

10 

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

12 

13## Роль чемпиона

14 

15Роль состоит из трёх поведений, которые усиливают друг друга.

16 

17| Поведение | Как это выглядит на практике | Почему это важно |

18| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

19| Делитесь тем, что вы открываете | Публикуйте подсказки, скриншоты и небольшие победы из вашей собственной работы в местах, которые ваша команда уже читает, таких как канал инженерии, ветка стендапа или описание pull-запроса. | Примеры из вашей собственной кодовой базы более убедительны, чем любая внешняя документация, потому что коллеги могут увидеть ровно то, как инструмент применяется к проблемам, которые они разделяют с вами. |

20| Будьте человеком, у которого спрашивают | Когда коллега спрашивает, как вы что-то сделали, ответьте с фактической подсказкой, которую вы использовали, чтобы они могли применить её непосредственно к своей задаче. | Конкретный, работающий пример устраняет разрыв между любопытством и первым успешным использованием, где застревает большинство усилий по внедрению. |

21| Расширяйте круг | Установите небольшое количество лёгких, повторяющихся привычек, таких как выделенный канал или еженедельная ветка, чтобы импульс продолжался даже когда ваше внимание направлено в другое место. | Внедрение, которое зависит от одного человека, хрупко. Внедрение, которое осуществляется общими привычками, продолжает расти само по себе. |

22 

23Большая часть этого естественным образом вписывается в работу, которую вы уже выполняете. Разница в небольшом количестве дополнительного внимания к тому, где публикуются ваши открытия и как распространяются ваши ответы.

24 

25### Какова стоимость этого для вас

26 

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

28 

29| Действие | Время в неделю | Рекомендация |

30| -------------------------------------------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |

31| Публикация побед и подсказок | Около 15 минут | Захватывайте их в момент со скриншотом и одним или двумя предложениями; избегайте превращения их в формальные описания. |

32| Ответы на вопросы в общем канале | Около 20 минут | Ответьте публично один раз, затем ссылайтесь на этот ответ, когда вопрос повторяется. |

33| Проведение еженедельной ветки показа и рассказа | Около 5 минут | Вы публикуете открывающую подсказку; команда предоставляет содержание. |

34| Дополнительное спаривание или пошаговые инструкции | 0 до 30 минут | Зарезервируйте это для коллег, которые действительно заблокированы, и предложите ссылку на [Quickstart](/ru/quickstart) перед планированием времени. |

35 

36## Делитесь тем, что вы открываете

37 

38Ваш собственный опыт — это наиболее убедительный материал, который встретят ваши коллеги, потому что он специфичен для кодовой базы, рабочих процессов и проблем, которые вы все разделяете. Документация говорит людям, что возможно; ваши посты показывают им, что действительно работает в вашей среде.

39 

40### Что стоит делиться

41 

42Наиболее полезные посты описывают технику, которую коллега может переиспользовать завтра, а не результат, который уже завершён. Техники растут по мере их распространения по команде; обновления статуса — нет.

43 

44Примеры переиспользуемых техник:

45 

46* "Я узнал, что @-упоминание каталога работает. Указав его на `@src/components/` и спросив, какие отсутствуют тесты, я обнаружил два, которые я упустил."

47* "Plan Mode (`Shift+Tab`) показывает ровно какие файлы будут затронуты перед любым редактированием, поэтому я комфортно его использую на общем коде."

48* "Я настроил Stop hook, чтобы получать уведомление на рабочем столе, когда завершается длительная задача. Конфигурация находится в ветке."

49* "Запуск `/init` генерирует `CLAUDE.md` из репозитория, поэтому помощник перестаёт переспрашивать о наших соглашениях."

50 

51### Где это делиться

52 

53Публикуйте везде, где ваша команда уже читает. Цель — разместить примеры в пути нормальной работы, а не создавать пункт назначения.

54 

55| Местоположение | Лучше всего подходит для | Рекомендуемый формат |

56| ----------------------------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |

57| Канал `#claude-code` или общий канал инженерии | Открытия, подсказки и моменты "сегодня я узнал" | Скриншот с одним или двумя предложениями контекста |

58| Описания pull-запросов | Демонстрация подхода на реальном коде, который уже читают рецензенты | Одна строка, такая как "Claude и я сделали этот рефакторинг; рад пройти через подход." |

59| Стендапы или еженедельные письменные обновления | Нормализация использования с руководителями и менеджерами пропуска уровня | Одно предложение, описывающее один конкретный результат |

60| Вики команды или внутренняя документация | Долговечные паттерны, пользовательские skills и примеры `CLAUDE.md` | Короткая страница, связанная из темы канала, чтобы она оставалась обнаруживаемой |

61 

62### Формат, который работает

63 

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

65 

66Примеры постов ниже иллюстрируют тон и длину; адаптируйте их, а не копируйте дословно.

67 

68```text theme={null}

69Узнал сегодня, что @-упоминание каталога работает. Я указал его на

70@src/components/ и спросил, какие компоненты отсутствуют тесты, и это

71выявило два, которые я забыл.

72```

73 

74```text theme={null}

75Я настроил Stop hook, чтобы получать уведомление на рабочем столе, когда

76завершается длительная задача. Я начал рефакторинг, отошёл, и был

77уведомлен, когда он закончился. Конфигурация находится в ветке.

78```

79 

80```text theme={null}

81Plan Mode — это причина, по которой я комфортно использую это на коде,

82который имеет значение. Нажмите Shift+Tab, пока не увидите "plan"; это

83выкладывает ровно какие файлы он намеревается трогать перед изменением

84чего-либо.

85```

86 

87## Будьте человеком, у которого спрашивают

88 

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

90 

91### Отвечайте подсказкой, а не объяснением

92 

93Когда коллега спрашивает, как вы что-то сделали, наиболее полезный ответ — это подсказка, которую вы действительно использовали. Они узнают больше, запустив эту подсказку против своей собственной проблемы, чем из любого описания, которое вы могли бы написать, и это даёт им что-то, на что они могут действовать немедленно.

94 

95```text theme={null}

96Коллега: Как вы заставили его найти это состояние гонки?

97 

98Чемпион: Я спросил, "Тест в @tests/scheduler.test.ts нестабилен, выясни

99почему," и он отследил два неприсоединённых обещания в планировщике.

100Попробуйте ту же фразировку на вашем тесте.

101```

102 

103### Указывайте на функцию, а не на документацию

104 

105Ответ, такой как "Попробуйте plan mode, нажмите `Shift+Tab`, пока не увидите его" более полезен в данный момент, чем ссылка на документацию. Если человеку позже нужна большая глубина, он найдёт её сам; прямо сейчас ему нужна одна вещь, которая его разблокирует.

106 

107### Вопросы, которые вы, вероятно, услышите

108 

109| Вопрос | Предлагаемый ответ | Ресурс для дальнейшего изучения |

110| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |

111| "На чём я должен сначала это попробовать?" | Рекомендуйте реальную, но ограниченную задачу, в идеале ошибку или работу, которую человек откладывал, потому что она утомительна, а не сложна. | [Common workflows](/ru/common-workflows) |

112| "Как я могу доверять это своему коду?" | Представьте plan mode: нажатие `Shift+Tab` переключает его, Claude предлагает ровно то, что он намеревается изменить, и ничего не изменяется, пока пользователь не одобрит. | [Permissions](/ru/permissions) |

113| "Стоит ли настройка усилий?" | Установка занимает примерно две минуты, работает в терминале и не требует расширения IDE. Запуск `/init` один раз достаточен для начала работы. | [Quickstart](/ru/quickstart) |

114| "Это произвело неправильный результат." | Поощряйте их предоставить сбой обратно Claude. Вставка сообщения об ошибке или неудачного теста намного эффективнее, чем переформулировка исходного запроса. | [Common workflows](/ru/common-workflows) |

115| "Он не понимает соглашения нашей кодовой базы." | Предложите запустить `/init` для генерации файла `CLAUDE.md`, затем добавить соглашения команды, команды тестирования и любые каталоги, которые следует избегать. | [Memory](/ru/memory) |

116| "Это просто автодополнение?" | Предложите краткую демонстрацию, в которой Claude объясняет незнакомый файл, отслеживает ошибку между сервисами или составляет план миграции. Эти задачи требуют рассуждений по всему репозиторию, а не завершения одной строки. | Двухминутная живая демонстрация |

117| "Что насчёт безопасности и обработки данных?" | Направьте этот вопрос вашему администратору. Политика развёртывания и обработки данных вашей организации уже настроена, и чемпионы не должны импровизировать этот ответ. | [Security](/ru/security) · [Data usage](/ru/data-usage) |

118 

119## Расширяйте круг

120 

121Цель — не построить программу и не владеть развёртыванием. Это установить небольшое количество лёгких привычек, которые позволяют импульсу продолжаться после того, как вы перестанете активно его вести. Когда вопросы в канале отвечаются людьми, отличными от вас, роль выполнила свою работу.

122 

123### Паттерны, которые обычно работают

124 

125| Паттерн | Как его запустить | Требуемые усилия |

126| ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |

127| Выделенный канал | Создайте канал `#claude-code` (или повторяющуюся ветку в существующем), закрепите ссылку [Quickstart](/ru/quickstart) и один сильный пример, и отвечайте на вопросы публично, чтобы каждый ответ приносил пользу всем, кто смотрит. | Около пяти минут на настройку, затем фоновый |

128| Еженедельная ветка показа и рассказа | Каждую пятницу публикуйте "Чем Claude вам помог на этой неделе?" Подготовка, слайды или встреча не требуются; скриншотов и коротких описаний достаточно. | Около двух минут в неделю |

129| Поделитесь пользовательским skill | Публикуйте ваш наиболее полезный файл `.claude/skills/<name>/SKILL.md`, например skill `/ship`, который запускает тесты и lint перед коммитом, с однострочным описанием. Поскольку skills — это простой Markdown, коллеги могут их немедленно внедрить. | Около пяти минут на skill |

130| Создайте руководство по настройке из вашего собственного использования | Запустите `/team-onboarding` в проекте, в котором вы потратили реальное время. Claude сканирует ваши недавние сеансы, команды и MCP серверы, затем создаёт руководство, которое новый товарищ по команде может вставить как своё первое сообщение для воспроизведения вашей настройки. Закрепите его в канале. | Около двух минут |

131| Спаривание на первой задаче | Предложите одну пятнадцатиминутную сеанс спаривания кому-либо, кто начинает. Один успешный результат на их собственном коде более убедителен, чем любая презентация. | Около пятнадцати минут на человека |

132| Определите следующего чемпиона | Коллега, который задаёт вам больше всего вопросов, обычно готов взять на себя эту роль. Перешлите им эту страницу и разделите ответственность канала между вами. | Незначительно |

133 

134### Тридцатидневный план действий

135 

136Если свободный план полезен, последовательность ниже отражает то, что обычно работает в большинстве команд. Свободно адаптируйте, чтобы соответствовать вашему контексту.

137 

138<Steps>

139 <Step title="Неделя 1: Засейте канал">

140 Создайте канал, закрепите [Quickstart](/ru/quickstart) и публикуйте два или три ваших собственных примера с включёнными подсказками.

141 

142 **Сигнал, что это работает:** несколько коллег реагируют или отвечают, и в канале задаётся по крайней мере один вопрос.

143 </Step>

144 

145 <Step title="Неделя 2: Начните ритм">

146 Начните еженедельную ветку показа и рассказа, отвечайте на каждый вопрос публично и поделитесь одним пользовательским skill или фрагментом `CLAUDE.md`.

147 

148 **Сигнал, что это работает:** кто-то, кроме вас, публикует пример своего собственного.

149 </Step>

150 

151 <Step title="Неделя 3: Спаривание и консолидация">

152 Предложите два или три коротких сеанса спаривания и консолидируйте наиболее распространённые вопросы и ответы в закреплённое сообщение FAQ.

153 

154 **Сигнал, что это работает:** вы видите повторное использование, с теми же коллегами, возвращающимися, а не пробующими один раз и останавливающимися.

155 </Step>

156 

157 <Step title="Неделя 4: Передача">

158 Определите второго чемпиона и поделитесь кратким резюме того, что работает и что нет, со своим руководителем или администратором.

159 

160 **Сигнал, что это работает:** вопросы в канале отвечаются людьми, отличными от вас.

161 </Step>

162</Steps>

163 

164### Когда кто-то хочет углубиться

165 

166Вы — тёплое введение, а не программа адаптации. Когда коллега переходит от "должен ли я это попробовать" к "как мне стать эффективным с этим," направьте их на страницы [Quickstart](/ru/quickstart) и [Common workflows](/ru/common-workflows). Они содержат короткие разделы, охватывающие функции, которые действительно полезны, но сложно открыть самостоятельно.

167 

168## Отвечайте на распространённые опасения

169 

170Здоровый скептицизм ожидается; инженеры должны быть осторожны с инструментами, которые касаются их кода. Наиболее эффективный ответ редко состоит в том, чтобы спорить в общем случае. Вместо этого признайте опасение, предложите краткое переосмысление и предложите одну конкретную демонстрацию на коде самого человека. Большинство опасений разрешаются одним успешным опытом.

171 

172| Опасение | Предлагаемый ответ | Доказательство для предложения |

173| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |

174| "Я быстрее без этого." | Это, вероятно, верно для кода, который человек пишет регулярно. Предложите попробовать это на работе, которую они обычно избегают: устаревшие файлы, незнакомые сервисы или тестовые каркасы, где рычаг наибольший. | Рассчитайте время одной утомительной задачи обоими способами и сравните. |

175| "Я не доверяю AI трогать production код." | Согласитесь, что никакое изменение не должно приземляться непрочитанным. Plan Mode в сочетании с обычным diff-обзором означает, что ничего не применяется, что инженер не проверил, тот же стандарт, что и любой pull-запрос. | Продемонстрируйте plan mode на реальном файле. |

176| "Это сделает младших инженеров слабее." | При правильном использовании это эффективный объяснитель. Поощряйте младших инженеров просить Claude объяснить файл и его места вызова перед тем, как просить его что-либо изменить. | Запустите "Объясните @file и где он вызывается" вместе. |

177| "Я попробовал это один раз и оно галлюцинировало." | Это обычно проблема контекста, а не проблема модели. @-упоминание соответствующих файлов, запуск `/init` и предоставление фактического вывода ошибки обычно это разрешают. | Повторно запустите их исходную подсказку с надлежащим `@`-контекстом. |

178| "У нас нет времени учить другой инструмент." | Claude Code — это команда терминала, а не платформа. Если она не возвращает значение в первом сеансе, разумно отложить её. | Двухминутная установка, за которой следует одна реальная ошибка. |

179 

180## Лист быстрого справочника

181 

182Техники ниже — это те, которые наиболее надёжно переводят кого-то с первого испытания на ежедневное использование. Закрепите эту таблицу в канале или поделитесь ею отдельно.

183 

184| Техника | Как её применить |

185| ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

186| Предоставьте правильный контекст | Используйте ссылки `@file` или `@directory/`, или вставьте вывод ошибки или журнала непосредственно. Предоставление соответствующего контекста более эффективно, чем сложное подсказывание. |

187| Проверьте план перед редактированием | Нажмите `Shift+Tab` для входа в plan mode. Claude опишет предполагаемые изменения для вашего одобрения перед их выполнением. |

188| Обучите его вашему репозиторию | Запустите `/init` для генерации файла `CLAUDE.md`, затем добавьте соглашения вашей команды, команды тестирования и любые каталоги, которые не должны быть изменены. См. [Memory](/ru/memory). |

189| Переиспользуйте рабочий процесс | Сохраните файл `SKILL.md` в `.claude/skills/<name>/` для создания skill `/name`, который может использовать вся команда. См. [Skills](/ru/skills). |

190| Оставайтесь информированными во время длительных задач | Настройте Stop hook для получения уведомления на рабочем столе, когда завершается длительная задача. См. [Hooks](/ru/hooks-guide). |

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

192| Держите редактирования хирургическими | Попросите diff, или укажите "только измените X." Claude уважает область, когда область указана. |

193 

194<Tip>

195 Claude Code обновляется часто. Проверьте детали, специфичные для версии, на [домашней странице документации](/ru/overview) перед распространением этого материала внутри организации.

196</Tip>

channels.md +357 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Отправка событий в активный сеанс через каналы

6 

7> Используйте каналы для отправки сообщений, оповещений и вебхуков в ваш сеанс Claude Code из MCP-сервера. Перенаправляйте результаты CI, сообщения чата и события мониторинга, чтобы Claude мог реагировать, пока вас нет.

8 

9<Note>

10 Каналы находятся в [исследовательском превью](#research-preview) и требуют Claude Code v2.1.80 или позже. Они требуют входа в claude.ai. Аутентификация через консоль и ключ API не поддерживается. Организации Team и Enterprise должны [явно их включить](#enterprise-controls).

11</Note>

12 

13Канал — это MCP-сервер, который отправляет события в ваш активный сеанс Claude Code, чтобы Claude мог реагировать на события, происходящие, пока вас нет у терминала. Каналы могут быть двусторонними: Claude читает событие и отвечает через тот же канал, как мост чата. События поступают только пока сеанс открыт, поэтому для постоянно работающей установки вы запускаете Claude в фоновом процессе или постоянном терминале.

14 

15В отличие от интеграций, которые создают новый облачный сеанс или ждут опроса, событие поступает в уже открытый сеанс: см. [сравнение каналов](#how-channels-compare).

16 

17Вы устанавливаете канал как плагин и настраиваете его со своими учетными данными. Telegram, Discord и iMessage включены в исследовательское превью.

18 

19Когда Claude отвечает через канал, вы видите входящее сообщение в терминале, но не текст ответа. Терминал показывает вызов инструмента и подтверждение (например, "отправлено"), а фактический ответ появляется на другой платформе.

20 

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

22 

23* [Поддерживаемые каналы](#supported-channels): настройка Telegram, Discord и iMessage

24* [Установка и запуск канала](#quickstart) с fakechat, локальной демонстрацией

25* [Кто может отправлять сообщения](#security): списки разрешенных отправителей и как вы выполняете сопряжение

26* [Включение каналов для вашей организации](#enterprise-controls) на Team и Enterprise

27* [Сравнение каналов](#how-channels-compare) с веб-сеансами, Slack, MCP и Remote Control

28 

29Чтобы создать свой собственный канал, см. [справочник по каналам](/ru/channels-reference).

30 

31## Поддерживаемые каналы

32 

33Каждый поддерживаемый канал — это плагин, который требует [Bun](https://bun.sh). Для практической демонстрации потока плагинов перед подключением реальной платформы попробуйте [быстрый старт fakechat](#quickstart).

34 

35<Tabs>

36 <Tab title="Telegram">

37 Просмотрите полный [исходный код плагина Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram).

38 

39 <Steps>

40 <Step title="Создайте бота Telegram">

41 Откройте [BotFather](https://t.me/BotFather) в Telegram и отправьте `/newbot`. Дайте ему отображаемое имя и уникальное имя пользователя, заканчивающееся на `bot`. Скопируйте токен, который возвращает BotFather.

42 </Step>

43 

44 <Step title="Установите плагин">

45 В Claude Code выполните:

46 

47 ```

48 /plugin install telegram@claude-plugins-official

49 ```

50 

51 Если Claude Code сообщает, что плагин не найден ни в одном маркетплейсе, ваш маркетплейс либо отсутствует, либо устарел. Выполните `/plugin marketplace update claude-plugins-official` для его обновления или `/plugin marketplace add anthropics/claude-plugins-official`, если вы его еще не добавили. Затем повторите попытку установки.

52 

53 После установки выполните `/reload-plugins` для активации команды настройки плагина.

54 </Step>

55 

56 <Step title="Настройте ваш токен">

57 Выполните команду настройки с токеном от BotFather:

58 

59 ```

60 /telegram:configure <token>

61 ```

62 

63 Это сохранит его в `~/.claude/channels/telegram/.env`. Вы также можете установить `TELEGRAM_BOT_TOKEN` в переменной окружения вашей оболочки перед запуском Claude Code.

64 </Step>

65 

66 <Step title="Перезагрузитесь с включенными каналами">

67 Выйдите из Claude Code и перезагрузитесь с флагом канала. Это запустит плагин Telegram, который начнет опрашивать сообщения от вашего бота:

68 

69 ```bash theme={null}

70 claude --channels plugin:telegram@claude-plugins-official

71 ```

72 </Step>

73 

74 <Step title="Выполните сопряжение вашей учетной записи">

75 Откройте Telegram и отправьте любое сообщение вашему боту. Бот ответит кодом сопряжения.

76 

77 <Note>Если ваш бот не отвечает, убедитесь, что Claude Code работает с `--channels` из предыдущего шага. Бот может отвечать только пока канал активен.</Note>

78 

79 Вернитесь в Claude Code и выполните:

80 

81 ```

82 /telegram:access pair <code>

83 ```

84 

85 Затем заблокируйте доступ, чтобы только ваша учетная запись могла отправлять сообщения:

86 

87 ```

88 /telegram:access policy allowlist

89 ```

90 </Step>

91 </Steps>

92 </Tab>

93 

94 <Tab title="Discord">

95 Просмотрите полный [исходный код плагина Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord).

96 

97 <Steps>

98 <Step title="Создайте бота Discord">

99 Перейдите на [Discord Developer Portal](https://discord.com/developers/applications), нажмите **New Application** и назовите его. В разделе **Bot** создайте имя пользователя, затем нажмите **Reset Token** и скопируйте токен.

100 </Step>

101 

102 <Step title="Включите Message Content Intent">

103 В настройках вашего бота прокрутите до **Privileged Gateway Intents** и включите **Message Content Intent**.

104 </Step>

105 

106 <Step title="Пригласите бота на ваш сервер">

107 Перейдите в **OAuth2 > URL Generator**. Выберите область `bot` и включите эти разрешения:

108 

109 * View Channels

110 * Send Messages

111 * Send Messages in Threads

112 * Read Message History

113 * Attach Files

114 * Add Reactions

115 

116 Откройте созданный URL для добавления бота на ваш сервер.

117 </Step>

118 

119 <Step title="Установите плагин">

120 В Claude Code выполните:

121 

122 ```

123 /plugin install discord@claude-plugins-official

124 ```

125 

126 Если Claude Code сообщает, что плагин не найден ни в одном маркетплейсе, ваш маркетплейс либо отсутствует, либо устарел. Выполните `/plugin marketplace update claude-plugins-official` для его обновления или `/plugin marketplace add anthropics/claude-plugins-official`, если вы его еще не добавили. Затем повторите попытку установки.

127 

128 После установки выполните `/reload-plugins` для активации команды настройки плагина.

129 </Step>

130 

131 <Step title="Настройте ваш токен">

132 Выполните команду настройки с токеном бота, который вы скопировали:

133 

134 ```

135 /discord:configure <token>

136 ```

137 

138 Это сохранит его в `~/.claude/channels/discord/.env`. Вы также можете установить `DISCORD_BOT_TOKEN` в переменной окружения вашей оболочки перед запуском Claude Code.

139 </Step>

140 

141 <Step title="Перезагрузитесь с включенными каналами">

142 Выйдите из Claude Code и перезагрузитесь с флагом канала. Это подключит плагин Discord, чтобы ваш бот мог получать и отвечать на сообщения:

143 

144 ```bash theme={null}

145 claude --channels plugin:discord@claude-plugins-official

146 ```

147 </Step>

148 

149 <Step title="Выполните сопряжение вашей учетной записи">

150 Отправьте личное сообщение вашему боту в Discord. Бот ответит кодом сопряжения.

151 

152 <Note>Если ваш бот не отвечает, убедитесь, что Claude Code работает с `--channels` из предыдущего шага. Бот может отвечать только пока канал активен.</Note>

153 

154 Вернитесь в Claude Code и выполните:

155 

156 ```

157 /discord:access pair <code>

158 ```

159 

160 Затем заблокируйте доступ, чтобы только ваша учетная запись могла отправлять сообщения:

161 

162 ```

163 /discord:access policy allowlist

164 ```

165 </Step>

166 </Steps>

167 </Tab>

168 

169 <Tab title="iMessage">

170 Просмотрите полный [исходный код плагина iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage).

171 

172 Канал iMessage читает вашу базу данных Messages напрямую и отправляет ответы через AppleScript. Он требует macOS и не требует токена бота или внешнего сервиса.

173 

174 <Steps>

175 <Step title="Предоставьте полный доступ к диску">

176 База данных Messages в `~/Library/Messages/chat.db` защищена macOS. При первом чтении сервером macOS запрашивает доступ: нажмите **Allow**. Запрос указывает приложение, которое запустило Bun, например Terminal, iTerm или вашу IDE.

177 

178 Если запрос не появляется или вы нажали Don't Allow, предоставьте доступ вручную в **System Settings > Privacy & Security > Full Disk Access** и добавьте ваш терминал. Без этого сервер немедленно завершит работу с ошибкой `authorization denied`.

179 </Step>

180 

181 <Step title="Установите плагин">

182 В Claude Code выполните:

183 

184 ```

185 /plugin install imessage@claude-plugins-official

186 ```

187 

188 Если Claude Code сообщает, что плагин не найден ни в одном маркетплейсе, ваш маркетплейс либо отсутствует, либо устарел. Выполните `/plugin marketplace update claude-plugins-official` для его обновления или `/plugin marketplace add anthropics/claude-plugins-official`, если вы его еще не добавили. Затем повторите попытку установки.

189 </Step>

190 

191 <Step title="Перезагрузитесь с включенными каналами">

192 Выйдите из Claude Code и перезагрузитесь с флагом канала:

193 

194 ```bash theme={null}

195 claude --channels plugin:imessage@claude-plugins-official

196 ```

197 </Step>

198 

199 <Step title="Напишите себе">

200 Откройте Messages на любом устройстве, вошедшем в вашу Apple ID, и отправьте сообщение себе. Оно сразу же достигает Claude: самочат обходит контроль доступа без настройки.

201 

202 <Note>Первый ответ, который отправляет Claude, вызывает запрос macOS Automation, спрашивающий, может ли ваш терминал управлять Messages. Нажмите **OK**.</Note>

203 </Step>

204 

205 <Step title="Разрешите другим отправителям">

206 По умолчанию проходят только ваши собственные сообщения. Чтобы позволить другому контакту достичь Claude, добавьте его дескриптор:

207 

208 ```

209 /imessage:access allow +15551234567

210 ```

211 

212 Дескрипторы — это номера телефонов в формате `+country` или адреса электронной почты Apple ID, такие как `user@example.com`.

213 </Step>

214 </Steps>

215 </Tab>

216</Tabs>

217 

218Вы также можете [создать свой собственный канал](/ru/channels-reference) для систем, у которых еще нет плагина.

219 

220## Быстрый старт

221 

222Fakechat — это официально поддерживаемый демонстрационный канал, который запускает интерфейс чата на localhost без необходимости аутентификации и без внешнего сервиса для настройки.

223 

224После установки и включения fakechat вы можете печатать в браузере, и сообщение поступает в ваш сеанс Claude Code. Claude отвечает, и ответ появляется обратно в браузере. После того как вы протестировали интерфейс fakechat, попробуйте [Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram), [Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) или [iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage).

225 

226Для демонстрации fakechat вам потребуется:

227 

228* Claude Code [установлен и аутентифицирован](/ru/quickstart#step-1-install-claude-code) с учетной записью claude.ai

229* [Bun](https://bun.sh) установлен. Встроенные плагины каналов — это скрипты Bun. Проверьте с помощью `bun --version`; если это не сработает, [установите Bun](https://bun.sh/docs/installation).

230* **Пользователи Team/Enterprise**: администратор вашей организации должен [включить каналы](#enterprise-controls) в управляемых параметрах

231 

232<Steps>

233 <Step title="Установите плагин канала fakechat">

234 Запустите сеанс Claude Code и выполните команду установки:

235 

236 ```text theme={null}

237 /plugin install fakechat@claude-plugins-official

238 ```

239 

240 Если Claude Code сообщает, что плагин не найден ни в одном маркетплейсе, ваш маркетплейс либо отсутствует, либо устарел. Выполните `/plugin marketplace update claude-plugins-official` для его обновления или `/plugin marketplace add anthropics/claude-plugins-official`, если вы его еще не добавили. Затем повторите попытку установки.

241 </Step>

242 

243 <Step title="Перезагрузитесь с включенным каналом">

244 Выйдите из Claude Code, затем перезагрузитесь с `--channels` и передайте установленный плагин fakechat:

245 

246 ```bash theme={null}

247 claude --channels plugin:fakechat@claude-plugins-official

248 ```

249 

250 Сервер fakechat запустится автоматически.

251 

252 <Tip>

253 Вы можете передать несколько плагинов в `--channels`, разделенные пробелом.

254 </Tip>

255 </Step>

256 

257 <Step title="Отправьте сообщение">

258 Откройте интерфейс fakechat по адресу [http://localhost:8787](http://localhost:8787) и введите сообщение:

259 

260 ```text theme={null}

261 hey, what's in my working directory?

262 ```

263 

264 Сообщение поступает в ваш сеанс Claude Code как событие `<channel source="fakechat">`. Claude читает его, выполняет работу и вызывает инструмент `reply` fakechat. Ответ появляется в интерфейсе чата.

265 </Step>

266</Steps>

267 

268Если Claude столкнется с запросом разрешения, пока вас нет у терминала, сеанс приостановится до вашего ответа. Серверы каналов, которые объявляют [возможность трансляции разрешений](/ru/channels-reference#relay-permission-prompts), могут перенаправлять эти запросы вам, чтобы вы могли одобрить или отклонить их удаленно. Для автоматического использования [`--dangerously-skip-permissions`](/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) обходит запросы полностью, но используйте это только в окружениях, которым вы доверяете.

269 

270## Безопасность

271 

272Каждый одобренный плагин канала поддерживает список разрешенных отправителей: только ID, которые вы добавили, могут отправлять сообщения, и все остальные молча отбрасываются.

273 

274Telegram и Discord инициализируют список путем сопряжения:

275 

2761. Найдите своего бота в Telegram или Discord и отправьте ему любое сообщение

2772. Бот ответит кодом сопряжения

2783. В вашем сеансе Claude Code одобрите код при появлении запроса

2794. Ваш ID отправителя добавляется в список разрешенных

280 

281iMessage работает иначе: отправка сообщения себе автоматически обходит ворота, и вы добавляете другие контакты по дескриптору с помощью `/imessage:access allow`.

282 

283Кроме того, вы контролируете, какие серверы включены в каждом сеансе с помощью `--channels`, и на планах Team и Enterprise ваша организация контролирует доступность с помощью [`channelsEnabled`](#enterprise-controls).

284 

285Нахождение в `.mcp.json` недостаточно для отправки сообщений: сервер также должен быть указан в `--channels`.

286 

287Список разрешенных также контролирует [трансляцию разрешений](/ru/channels-reference#relay-permission-prompts), если канал это объявляет. Любой, кто может отвечать через канал, может одобрить или отклонить использование инструмента в вашем сеансе, поэтому добавляйте в список разрешенных только отправителей, которым вы доверяете эту власть.

288 

289## Элементы управления для Enterprise

290 

291На планах Team и Enterprise каналы отключены по умолчанию. Администраторы контролируют доступность через два [управляемых параметра](/ru/settings), которые пользователи не могут переопределить:

292 

293| Параметр | Назначение | Если не настроено |

294| :---------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------- |

295| `channelsEnabled` | Главный переключатель. Должен быть `true` для доставки сообщений любым каналом. Установите через переключатель [консоли администратора claude.ai](https://claude.ai/admin-settings/claude-code) или непосредственно в управляемых параметрах. Блокирует все каналы, включая флаг разработки, когда отключен. | Каналы заблокированы |

296| `allowedChannelPlugins` | Какие плагины могут регистрироваться после включения каналов. Заменяет список, поддерживаемый Anthropic, когда установлен. Применяется только когда `channelsEnabled` имеет значение `true`. | Применяется список по умолчанию Anthropic |

297 

298Пользователи Pro и Max без организации пропускают эти проверки полностью: каналы доступны и пользователи выбирают участие в каждом сеансе с помощью `--channels`.

299 

300### Включение каналов для вашей организации

301 

302Администраторы могут включить каналы из [**claude.ai → Admin settings → Claude Code → Channels**](https://claude.ai/admin-settings/claude-code) или установив `channelsEnabled` на `true` в управляемых параметрах.

303 

304После включения пользователи в вашей организации могут использовать `--channels` для выбора серверов каналов в отдельных сеансах. Если параметр отключен или не установлен, MCP-сервер все еще подключается и его инструменты работают, но сообщения каналов не будут поступать. Предупреждение при запуске сообщает пользователю попросить администратора включить параметр.

305 

306### Ограничение того, какие плагины каналов могут работать

307 

308По умолчанию любой плагин из списка разрешенных, поддерживаемого Anthropic, может регистрироваться как канал. Администраторы на планах Team и Enterprise могут заменить этот список разрешенных своим собственным, установив `allowedChannelPlugins` в управляемых параметрах. Используйте это для ограничения того, какие официальные плагины разрешены, одобрения каналов из вашего собственного внутреннего маркетплейса или обоих. Каждая запись называет плагин и маркетплейс, из которого он поступает:

309 

310```json theme={null}

311{

312 "channelsEnabled": true,

313 "allowedChannelPlugins": [

314 { "marketplace": "claude-plugins-official", "plugin": "telegram" },

315 { "marketplace": "claude-plugins-official", "plugin": "discord" },

316 { "marketplace": "acme-corp-plugins", "plugin": "internal-alerts" }

317 ]

318}

319```

320 

321Когда `allowedChannelPlugins` установлен, он полностью заменяет список разрешенных Anthropic: только перечисленные плагины могут регистрироваться. Оставьте его неустановленным для возврата к списку по умолчанию Anthropic. Пустой массив блокирует все плагины каналов из списка разрешенных, но `--dangerously-load-development-channels` все еще может его обойти для локального тестирования. Чтобы полностью заблокировать каналы, включая флаг разработки, оставьте `channelsEnabled` неустановленным.

322 

323Этот параметр требует `channelsEnabled: true`. Если пользователь передает плагин в `--channels`, который не находится в вашем списке, Claude Code запускается нормально, но канал не регистрируется, и уведомление при запуске объясняет, что плагин не находится в утвержденном списке организации.

324 

325## Исследовательское превью

326 

327Каналы — это функция исследовательского превью. Доступность постепенно развертывается, и синтаксис флага `--channels` и контракт протокола могут измениться на основе обратной связи.

328 

329Во время превью `--channels` принимает только плагины из списка разрешенных, поддерживаемого Anthropic, или из списка разрешенных вашей организации, если администратор установил [`allowedChannelPlugins`](#restrict-which-channel-plugins-can-run). Плагины каналов в [claude-plugins-official](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) — это набор по умолчанию, одобренный Anthropic. Если вы передадите что-то, что не находится в действующем списке разрешенных, Claude Code запустится нормально, но канал не зарегистрируется, и уведомление при запуске скажет вам почему.

330 

331Для тестирования создаваемого вами канала используйте `--dangerously-load-development-channels`. См. [Тестирование во время исследовательского превью](/ru/channels-reference#test-during-the-research-preview) для информации о тестировании пользовательских каналов, которые вы создаете.

332 

333Сообщайте о проблемах или отзывах в [репозитории Claude Code на GitHub](https://github.com/anthropics/claude-code/issues).

334 

335## Сравнение каналов

336 

337Несколько функций Claude Code подключаются к системам вне терминала, каждая подходит для разного вида работы:

338 

339| Функция | Что она делает | Хорошо для |

340| -------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |

341| [Claude Code в веб-браузере](/ru/claude-code-on-the-web) | Запускает задачи в свежей облачной песочнице, клонированной из GitHub | Делегирование самостоятельной асинхронной работы, которую вы проверяете позже |

342| [Claude в Slack](/ru/slack) | Создает веб-сеанс из упоминания `@Claude` в канале или потоке | Запуск задач непосредственно из контекста командного разговора |

343| Стандартный [MCP-сервер](/ru/mcp) | Claude запрашивает его во время задачи; ничего не отправляется в сеанс | Предоставление Claude доступа по требованию для чтения или запроса системы |

344| [Remote Control](/ru/remote-control) | Вы управляете своим локальным сеансом из claude.ai или мобильного приложения Claude | Управление активным сеансом, пока вас нет за столом |

345 

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

347 

348* **Мост чата**: спросите Claude что-то со своего телефона через Telegram, Discord или iMessage, и ответ вернется в тот же чат, пока работа выполняется на вашей машине с вашими реальными файлами.

349* **[Получатель вебхука](/ru/channels-reference#example-build-a-webhook-receiver)**: вебхук из CI, вашего трекера ошибок, конвейера развертывания или другого внешнего сервиса поступает туда, где Claude уже имеет открытые ваши файлы и помнит, что вы отлаживали.

350 

351## Следующие шаги

352 

353После того как у вас есть работающий канал, изучите эти связанные функции:

354 

355* [Создайте свой собственный канал](/ru/channels-reference) для систем, у которых еще нет плагинов

356* [Remote Control](/ru/remote-control) для управления локальным сеансом со своего телефона вместо отправки событий в него

357* [Запланированные задачи](/ru/scheduled-tasks) для опроса по таймеру вместо реагирования на отправленные события

channels-reference.md +749 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Справочник по каналам

6 

7> Создайте MCP-сервер, который отправляет вебхуки, оповещения и сообщения чата в сеанс Claude Code. Справочник по контракту канала: объявление возможностей, события уведомлений, инструменты ответа, проверка отправителя и трансляция разрешений.

8 

9<Note>

10 Каналы находятся в [исследовательском превью](/ru/channels#research-preview) и требуют Claude Code v2.1.80 или более поздней версии. Они требуют входа claude.ai. Аутентификация через консоль и ключ API не поддерживается. Организации Team и Enterprise должны [явно их включить](/ru/channels#enterprise-controls).

11</Note>

12 

13Канал — это MCP-сервер, который отправляет события в сеанс Claude Code, чтобы Claude мог реагировать на события, происходящие вне терминала.

14 

15Вы можете создать односторонний или двусторонний канал. Односторонние каналы пересылают оповещения, вебхуки или события мониторинга для действия Claude. Двусторонние каналы, такие как мосты чата, также [предоставляют инструмент ответа](#expose-a-reply-tool), чтобы Claude мог отправлять сообщения обратно. Канал с доверенным путём отправителя также может согласиться на [трансляцию запросов разрешений](#relay-permission-prompts), чтобы вы могли одобрять или отклонять использование инструментов удалённо.

16 

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

18 

19* [Обзор](#overview): как работают каналы

20* [Что вам нужно](#what-you-need): требования и общие шаги

21* [Пример: создание приёмника вебхуков](#example-build-a-webhook-receiver): минимальное пошаговое руководство в одну сторону

22* [Параметры сервера](#server-options): поля конструктора

23* [Формат уведомления](#notification-format): полезная нагрузка события

24* [Предоставление инструмента ответа](#expose-a-reply-tool): позволить Claude отправлять сообщения обратно

25* [Проверка входящих сообщений](#gate-inbound-messages): проверки отправителя для предотвращения инъекции подсказок

26* [Трансляция запросов разрешений](#relay-permission-prompts): пересылка запросов одобрения инструментов на удалённые каналы

27 

28Чтобы использовать существующий канал вместо создания собственного, см. [Каналы](/ru/channels). Telegram, Discord, iMessage и fakechat включены в исследовательское превью.

29 

30## Обзор

31 

32Канал — это [MCP](https://modelcontextprotocol.io) сервер, который работает на той же машине, что и Claude Code. Claude Code запускает его как подпроцесс и взаимодействует через stdio. Ваш сервер канала — это мост между внешними системами и сеансом Claude Code:

33 

34* **Платформы чата** (Telegram, Discord): ваш плагин работает локально и опрашивает API платформы на предмет новых сообщений. Когда кто-то отправляет личное сообщение вашему боту, плагин получает сообщение и пересылает его Claude. Нет необходимости в URL для открытия.

35* **Вебхуки** (CI, мониторинг): ваш сервер прослушивает локальный HTTP-порт. Внешние системы отправляют POST на этот порт, и ваш сервер отправляет полезную нагрузку Claude.

36 

37<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/ru/images/channel-architecture.svg" alt="Диаграмма архитектуры, показывающая внешние системы, подключающиеся к вашему локальному серверу канала, который взаимодействует с Claude Code через stdio" />

38 

39## Что вам нужно

40 

41Единственное жёсткое требование — это пакет [`@modelcontextprotocol/sdk`](https://www.npmjs.com/package/@modelcontextprotocol/sdk) и совместимая с Node.js среда выполнения. [Bun](https://bun.sh), [Node](https://nodejs.org) и [Deno](https://deno.com) работают. Предварительно созданные плагины в исследовательском превью используют Bun, но ваш канал не обязательно должен.

42 

43Ваш сервер должен:

44 

451. Объявить возможность `claude/channel`, чтобы Claude Code зарегистрировал слушатель уведомлений

462. Отправлять события `notifications/claude/channel` при возникновении чего-либо

473. Подключаться через [транспорт stdio](https://modelcontextprotocol.io/docs/concepts/transports#standard-io) (Claude Code запускает ваш сервер как подпроцесс)

48 

49Разделы [Параметры сервера](#server-options) и [Формат уведомления](#notification-format) подробно рассматривают каждый из них. Полное пошаговое руководство см. в [Пример: создание приёмника вебхуков](#example-build-a-webhook-receiver).

50 

51Во время исследовательского превью пользовательские каналы не находятся в [одобренном списке разрешений](/ru/channels#supported-channels). Используйте `--dangerously-load-development-channels` для локального тестирования. Подробности см. в [Тестирование во время исследовательского превью](#test-during-the-research-preview).

52 

53## Пример: создание приёмника вебхуков

54 

55Это пошаговое руководство создаёт однофайловый сервер, который прослушивает HTTP-запросы и пересылает их в ваш сеанс Claude Code. В конце концов, всё, что может отправить HTTP POST, например конвейер CI, оповещение мониторинга или команда `curl`, может отправлять события Claude.

56 

57В этом примере используется [Bun](https://bun.sh) в качестве среды выполнения благодаря встроенному HTTP-серверу и поддержке TypeScript. Вы можете использовать [Node](https://nodejs.org) или [Deno](https://deno.com); единственное требование — это [MCP SDK](https://www.npmjs.com/package/@modelcontextprotocol/sdk).

58 

59<Steps>

60 <Step title="Создание проекта">

61 Создайте новый каталог и установите MCP SDK:

62 

63 ```bash theme={null}

64 mkdir webhook-channel && cd webhook-channel

65 bun add @modelcontextprotocol/sdk

66 ```

67 </Step>

68 

69 <Step title="Написание сервера канала">

70 Создайте файл с именем `webhook.ts`. Это ваш полный сервер канала: он подключается к Claude Code через stdio и прослушивает HTTP POST на порту 8788. Когда приходит запрос, он отправляет тело Claude как событие канала.

71 

72 ```ts title="webhook.ts" theme={null}

73 #!/usr/bin/env bun

74 import { Server } from '@modelcontextprotocol/sdk/server/index.js'

75 import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

76 

77 // Создание MCP-сервера и объявление его как канала

78 const mcp = new Server(

79 { name: 'webhook', version: '0.0.1' },

80 {

81 // этот ключ делает его каналом — Claude Code регистрирует слушатель для него

82 capabilities: { experimental: { 'claude/channel': {} } },

83 // добавляется в системную подсказку Claude, чтобы он знал, как обрабатывать эти события

84 instructions: 'Events from the webhook channel arrive as <channel source="webhook" ...>. They are one-way: read them and act, no reply expected.',

85 },

86 )

87 

88 // Подключение к Claude Code через stdio (Claude Code запускает этот процесс)

89 await mcp.connect(new StdioServerTransport())

90 

91 // Запуск HTTP-сервера, который пересылает каждый POST Claude

92 Bun.serve({

93 port: 8788, // любой открытый порт работает

94 // только localhost: ничто вне этой машины не может отправить POST

95 hostname: '127.0.0.1',

96 async fetch(req) {

97 const body = await req.text()

98 await mcp.notification({

99 method: 'notifications/claude/channel',

100 params: {

101 content: body, // становится телом тега <channel>

102 // каждый ключ становится атрибутом тега, например <channel path="/" method="POST">

103 meta: { path: new URL(req.url).pathname, method: req.method },

104 },

105 })

106 return new Response('ok')

107 },

108 })

109 ```

110 

111 Файл делает три вещи по порядку:

112 

113 * **Конфигурация сервера**: создаёт MCP-сервер с `claude/channel` в его возможностях, что говорит Claude Code, что это канал. Строка [`instructions`](#server-options) переходит в системную подсказку Claude: скажите Claude, какие события ожидать, нужно ли отвечать и как маршрутизировать ответы, если нужно.

114 * **Подключение stdio**: подключается к Claude Code через stdin/stdout. Это стандартно для любого [MCP-сервера](https://modelcontextprotocol.io/docs/concepts/transports#standard-io): Claude Code запускает его как подпроцесс.

115 * **Слушатель HTTP**: запускает локальный веб-сервер на порту 8788. Каждое тело POST пересылается Claude как событие канала через `mcp.notification()`. `content` становится телом события, а каждая запись `meta` становится атрибутом на теге `<channel>`. Слушателю нужен доступ к экземпляру `mcp`, поэтому он работает в том же процессе. Вы можете разделить его на отдельные модули для более крупного проекта.

116 </Step>

117 

118 <Step title="Регистрация вашего сервера с Claude Code">

119 Добавьте сервер в вашу конфигурацию MCP, чтобы Claude Code знал, как его запустить. Для проекта `.mcp.json` в том же каталоге используйте относительный путь. Для конфигурации уровня пользователя в `~/.claude.json` используйте полный абсолютный путь, чтобы сервер можно было найти из любого проекта:

120 

121 ```json title=".mcp.json" theme={null}

122 {

123 "mcpServers": {

124 "webhook": { "command": "bun", "args": ["./webhook.ts"] }

125 }

126 }

127 ```

128 

129 Claude Code читает вашу конфигурацию MCP при запуске и запускает каждый сервер как подпроцесс.

130 </Step>

131 

132 <Step title="Тестирование">

133 Во время исследовательского превью пользовательские каналы не находятся в списке разрешений, поэтому запустите Claude Code с флагом разработки:

134 

135 ```bash theme={null}

136 claude --dangerously-load-development-channels server:webhook

137 ```

138 

139 Когда Claude Code запускается, он читает вашу конфигурацию MCP, запускает ваш `webhook.ts` как подпроцесс, и слушатель HTTP автоматически запускается на настроенном вами порту (8788 в этом примере). Вам не нужно запускать сервер самостоятельно.

140 

141 Если вы видите "blocked by org policy", ваш администратор Team или Enterprise должен сначала [включить каналы](/ru/channels#enterprise-controls).

142 

143 В отдельном терминале имитируйте вебхук, отправив HTTP POST с сообщением на ваш сервер. Этот пример отправляет оповещение об ошибке CI на порт 8788 (или любой другой настроенный вами порт):

144 

145 ```bash theme={null}

146 curl -X POST localhost:8788 -d "build failed on main: https://ci.example.com/run/1234"

147 ```

148 

149 Полезная нагрузка поступает в ваш сеанс Claude Code как тег `<channel>`:

150 

151 ```text theme={null}

152 <channel source="webhook" path="/" method="POST">build failed on main: https://ci.example.com/run/1234</channel>

153 ```

154 

155 В вашем терминале Claude Code вы увидите, как Claude получает сообщение и начинает отвечать: чтение файлов, выполнение команд или всё, что требует сообщение. Это односторонний канал, поэтому Claude действует в вашем сеансе, но ничего не отправляет обратно через вебхук. Чтобы добавить ответы, см. [Предоставление инструмента ответа](#expose-a-reply-tool).

156 

157 Если событие не поступает, диагностика зависит от того, что вернул `curl`:

158 

159 * **`curl` успешен, но ничего не достигает Claude**: запустите `/mcp` в вашем сеансе, чтобы проверить статус сервера. "Failed to connect" обычно означает ошибку зависимости или импорта в файле вашего сервера; проверьте журнал отладки в `~/.claude/debug/<session-id>.txt` для трассировки stderr.

160 * **`curl` не удаётся с "connection refused"**: порт либо ещё не привязан, либо устаревший процесс из более раннего запуска его удерживает. `lsof -i :<port>` показывает, что прослушивается; `kill` устаревший процесс перед перезагрузкой вашего сеанса.

161 </Step>

162</Steps>

163 

164[Сервер fakechat](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat) расширяет этот паттерн с веб-интерфейсом, вложениями файлов и инструментом ответа для двустороннего чата.

165 

166## Тестирование во время исследовательского превью

167 

168Во время исследовательского превью каждый канал должен быть в [одобренном списке разрешений](/ru/channels#research-preview) для регистрации. Флаг разработки обходит список разрешений для конкретных записей после подтверждающего запроса. Этот пример показывает оба типа записей:

169 

170```bash theme={null}

171# Тестирование плагина, который вы разрабатываете

172claude --dangerously-load-development-channels plugin:yourplugin@yourmarketplace

173 

174# Тестирование простого сервера .mcp.json (ещё нет обёртки плагина)

175claude --dangerously-load-development-channels server:webhook

176```

177 

178Обход выполняется для каждой записи. Объединение этого флага с `--channels` не распространяет обход на записи `--channels`. Во время исследовательского превью одобренный список разрешений курируется Anthropic, поэтому ваш канал остаётся на флаге разработки во время разработки и тестирования.

179 

180<Note>

181 Этот флаг пропускает только список разрешений. Политика организации `channelsEnabled` по-прежнему применяется. Не используйте его для запуска каналов из ненадёжных источников.

182</Note>

183 

184## Параметры сервера

185 

186Канал устанавливает эти параметры в конструкторе [`Server`](https://modelcontextprotocol.io/docs/concepts/servers). Поля `instructions` и `capabilities.tools` являются [стандартным MCP](https://modelcontextprotocol.io/docs/concepts/servers); `capabilities.experimental['claude/channel']` и `capabilities.experimental['claude/channel/permission']` — это дополнения, специфичные для канала:

187 

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

189| :------------------------------------------------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

190| `capabilities.experimental['claude/channel']` | `object` | Обязательно. Всегда `{}`. Наличие регистрирует слушатель уведомлений. |

191| `capabilities.experimental['claude/channel/permission']` | `object` | Опционально. Всегда `{}`. Объявляет, что этот канал может получать запросы трансляции разрешений. При объявлении Claude Code пересылает запросы одобрения инструментов на ваш канал, чтобы вы могли одобрять или отклонять их удалённо. См. [Трансляция запросов разрешений](#relay-permission-prompts). |

192| `capabilities.tools` | `object` | Только двусторонний. Всегда `{}`. Стандартная возможность инструмента MCP. См. [Предоставление инструмента ответа](#expose-a-reply-tool). |

193| `instructions` | `string` | Рекомендуется. Добавляется в системную подсказку Claude. Скажите Claude, какие события ожидать, что означают атрибуты тега `<channel>`, нужно ли отвечать и если да, какой инструмент использовать и какой атрибут передать обратно (например `chat_id`). |

194 

195Чтобы создать односторонний канал, опустите `capabilities.tools`. Этот пример показывает двустороннюю установку с объявленными возможностью канала, инструментами и инструкциями:

196 

197```ts theme={null}

198import { Server } from '@modelcontextprotocol/sdk/server/index.js'

199 

200const mcp = new Server(

201 { name: 'your-channel', version: '0.0.1' },

202 {

203 capabilities: {

204 experimental: { 'claude/channel': {} }, // регистрирует слушатель канала

205 tools: {}, // опустите для односторонних каналов

206 },

207 // добавляется в системную подсказку Claude, чтобы он знал, как обрабатывать ваши события

208 instructions: 'Messages arrive as <channel source="your-channel" ...>. Reply with the reply tool.',

209 },

210)

211```

212 

213Чтобы отправить событие, вызовите `mcp.notification()` с методом `notifications/claude/channel`. Параметры находятся в следующем разделе.

214 

215## Формат уведомления

216 

217Ваш сервер отправляет `notifications/claude/channel` с двумя параметрами:

218 

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

220| :-------- | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

221| `content` | `string` | Тело события. Доставляется как тело тега `<channel>`. |

222| `meta` | `Record<string, string>` | Опционально. Каждая запись становится атрибутом на теге `<channel>` для контекста маршрутизации, такого как ID чата, имя отправителя или серьёзность оповещения. Ключи должны быть идентификаторами: только буквы, цифры и подчёркивания. Ключи, содержащие дефисы или другие символы, молча отбрасываются. |

223 

224Ваш сервер отправляет события, вызывая `mcp.notification()` на экземпляре `Server`. Этот пример отправляет оповещение об ошибке CI с двумя ключами meta:

225 

226```ts theme={null}

227await mcp.notification({

228 method: 'notifications/claude/channel',

229 params: {

230 content: 'build failed on main: https://ci.example.com/run/1234',

231 meta: { severity: 'high', run_id: '1234' },

232 },

233})

234```

235 

236Событие поступает в контекст Claude, завёрнутое в тег `<channel>`. Атрибут `source` устанавливается автоматически из имени вашего сервера:

237 

238```text theme={null}

239<channel source="your-channel" severity="high" run_id="1234">

240build failed on main: https://ci.example.com/run/1234

241</channel>

242```

243 

244## Предоставление инструмента ответа

245 

246Если ваш канал двусторонний, например мост чата, а не пересылка оповещений, предоставьте стандартный [инструмент MCP](https://modelcontextprotocol.io/docs/concepts/tools), который Claude может вызвать для отправки сообщений обратно. Ничего в регистрации инструмента не является специфичным для канала. Инструмент ответа имеет три компонента:

247 

2481. Запись `tools: {}` в возможностях конструктора `Server`, чтобы Claude Code обнаружил инструмент

2492. Обработчики инструментов, которые определяют схему инструмента и реализуют логику отправки

2503. Строка `instructions` в конструкторе `Server`, которая говорит Claude, когда и как вызывать инструмент

251 

252Чтобы добавить их к [приёмнику вебхуков выше](#example-build-a-webhook-receiver):

253 

254<Steps>

255 <Step title="Включение обнаружения инструментов">

256 В конструкторе `Server` в `webhook.ts` добавьте `tools: {}` в возможности, чтобы Claude Code знал, что ваш сервер предлагает инструменты:

257 

258 ```ts theme={null}

259 capabilities: {

260 experimental: { 'claude/channel': {} },

261 tools: {}, // включает обнаружение инструментов

262 },

263 ```

264 </Step>

265 

266 <Step title="Регистрация инструмента ответа">

267 Добавьте следующее в `webhook.ts`. `import` переходит в верхнюю часть файла с вашими другими импортами; два обработчика переходят между конструктором `Server` и `mcp.connect()`. Это регистрирует инструмент `reply`, который Claude может вызвать с `chat_id` и `text`:

268 

269 ```ts theme={null}

270 // Добавьте этот импорт в верхнюю часть webhook.ts

271 import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

272 

273 // Claude запрашивает это при запуске, чтобы обнаружить, какие инструменты предлагает ваш сервер

274 mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

275 tools: [{

276 name: 'reply',

277 description: 'Send a message back over this channel',

278 // inputSchema говорит Claude, какие аргументы передать

279 inputSchema: {

280 type: 'object',

281 properties: {

282 chat_id: { type: 'string', description: 'The conversation to reply in' },

283 text: { type: 'string', description: 'The message to send' },

284 },

285 required: ['chat_id', 'text'],

286 },

287 }],

288 }))

289 

290 // Claude вызывает это, когда хочет вызвать инструмент

291 mcp.setRequestHandler(CallToolRequestSchema, async req => {

292 if (req.params.name === 'reply') {

293 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

294 // send() — это ваш исходящий: POST на вашу платформу чата, или для локального

295 // тестирования трансляция SSE, показанная в полном примере ниже.

296 send(`Reply to ${chat_id}: ${text}`)

297 return { content: [{ type: 'text', text: 'sent' }] }

298 }

299 throw new Error(`unknown tool: ${req.params.name}`)

300 })

301 ```

302 </Step>

303 

304 <Step title="Обновление инструкций">

305 Обновите строку `instructions` в конструкторе `Server`, чтобы Claude знал маршрутизировать ответы обратно через инструмент. Этот пример говорит Claude передать `chat_id` из входящего тега:

306 

307 ```ts theme={null}

308 instructions: 'Messages arrive as <channel source="webhook" chat_id="...">. Reply with the reply tool, passing the chat_id from the tag.'

309 ```

310 </Step>

311</Steps>

312 

313Вот полный `webhook.ts` с двусторонней поддержкой. Исходящие ответы передаются через `GET /events` с использованием [Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) (SSE), поэтому `curl -N localhost:8788/events` может смотреть их в реальном времени; входящий чат поступает на `POST /`:

314 

315```ts title="Full webhook.ts with reply tool' expandable theme={null}

316#!/usr/bin/env bun

317import { Server } from '@modelcontextprotocol/sdk/server/index.js'

318import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

319import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

320 

321// --- Исходящий: запись для любых слушателей curl -N на /events ---

322// Реальный мост отправлял бы POST на вашу платформу чата вместо этого.

323const listeners = new Set<(chunk: string) => void>()

324function send(text: string) {

325 const chunk = text.split('\n').map(l => `data: ${l}\n`).join('') + '\n'

326 for (const emit of listeners) emit(chunk)

327}

328 

329const mcp = new Server(

330 { name: 'webhook', version: '0.0.1' },

331 {

332 capabilities: {

333 experimental: { 'claude/channel': {} },

334 tools: {},

335 },

336 instructions: 'Messages arrive as <channel source="webhook" chat_id="...">. Reply with the reply tool, passing the chat_id from the tag.',

337 },

338)

339 

340mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

341 tools: [{

342 name: 'reply',

343 description: 'Send a message back over this channel',

344 inputSchema: {

345 type: 'object',

346 properties: {

347 chat_id: { type: 'string', description: 'The conversation to reply in' },

348 text: { type: 'string', description: 'The message to send' },

349 },

350 required: ['chat_id', 'text'],

351 },

352 }],

353}))

354 

355mcp.setRequestHandler(CallToolRequestSchema, async req => {

356 if (req.params.name === 'reply') {

357 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

358 send(`Reply to ${chat_id}: ${text}`)

359 return { content: [{ type: 'text', text: 'sent' }] }

360 }

361 throw new Error(`unknown tool: ${req.params.name}`)

362})

363 

364await mcp.connect(new StdioServerTransport())

365 

366let nextId = 1

367Bun.serve({

368 port: 8788,

369 hostname: '127.0.0.1',

370 idleTimeout: 0, // не закрывайте неактивные потоки SSE

371 async fetch(req) {

372 const url = new URL(req.url)

373 

374 // GET /events: поток SSE, чтобы curl -N мог смотреть ответы Claude в реальном времени

375 if (req.method === 'GET' && url.pathname === '/events') {

376 const stream = new ReadableStream({

377 start(ctrl) {

378 ctrl.enqueue(': connected\n\n') // чтобы curl показал что-то сразу

379 const emit = (chunk: string) => ctrl.enqueue(chunk)

380 listeners.add(emit)

381 req.signal.addEventListener('abort', () => listeners.delete(emit))

382 },

383 })

384 return new Response(stream, {

385 headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache' },

386 })

387 }

388 

389 // POST: пересылка Claude как событие канала

390 const body = await req.text()

391 const chat_id = String(nextId++)

392 await mcp.notification({

393 method: 'notifications/claude/channel',

394 params: {

395 content: body,

396 meta: { chat_id, path: url.pathname, method: req.method },

397 },

398 })

399 return new Response('ok')

400 },

401})

402```

403 

404[Сервер fakechat](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat) показывает более полный пример с вложениями файлов и редактированием сообщений.

405 

406## Проверка входящих сообщений

407 

408Непроверенный канал — это вектор инъекции подсказок. Любой, кто может достичь вашей конечной точки, может поместить текст перед Claude. Канал, прослушивающий платформу чата или общедоступную конечную точку, нуждается в реальной проверке отправителя перед отправкой чего-либо.

409 

410Проверьте отправителя против списка разрешений перед вызовом `mcp.notification()`. Этот пример отбрасывает любое сообщение от отправителя, не входящего в набор:

411 

412```ts theme={null}

413const allowed = new Set(loadAllowlist()) // из вашего access.json или эквивалента

414 

415// внутри вашего обработчика сообщений, перед отправкой:

416if (!allowed.has(message.from.id)) { // отправитель, не комната

417 return // отбросить молча

418}

419await mcp.notification({ ... })

420```

421 

422Проверяйте по идентичности отправителя, а не по идентичности чата или комнаты: `message.from.id` в примере, а не `message.chat.id`. В групповых чатах они отличаются, и проверка по комнате позволила бы любому в разрешённой группе вводить сообщения в сеанс.

423 

424Каналы [Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram) и [Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) проверяют список разрешений отправителя так же. Они загружают список путём спаривания: пользователь отправляет личное сообщение боту, бот отвечает кодом спаривания, пользователь одобряет его в своём сеансе Claude Code, и его ID платформы добавляется. Полный поток спаривания см. в любой реализации. Канал [iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage) использует другой подход: он обнаруживает собственные адреса пользователя из базы данных Messages при запуске и пропускает их автоматически, с другими отправителями, добавляемыми по дескриптору.

425 

426## Трансляция запросов разрешений

427 

428<Note>

429 Трансляция разрешений требует Claude Code v2.1.81 или более поздней версии. Более ранние версии игнорируют возможность `claude/channel/permission`.

430</Note>

431 

432Когда Claude вызывает инструмент, требующий одобрения, открывается диалог локального терминала и сеанс ждёт. Двусторонний канал может согласиться получить тот же запрос параллельно и передать его вам на другое устройство. Оба остаются активными: вы можете ответить в терминале или на телефоне, и Claude Code применяет любой ответ, который поступит первым, и закрывает другой.

433 

434Трансляция охватывает одобрения использования инструментов, такие как `Bash`, `Write` и `Edit`. Диалоги доверия проекта и согласия MCP-сервера не передаются; они появляются только в локальном терминале.

435 

436### Как работает трансляция

437 

438Когда открывается запрос разрешения, цикл трансляции имеет четыре шага:

439 

4401. Claude Code генерирует короткий ID запроса и уведомляет ваш сервер

4412. Ваш сервер пересылает запрос и ID в ваше приложение чата

4423. Удалённый пользователь отвечает да или нет и этот ID

4434. Ваш входящий обработчик анализирует ответ в вердикт, и Claude Code применяет его только если ID совпадает с открытым запросом

444 

445Диалог локального терминала остаётся открытым на протяжении всего этого. Если кто-то в терминале ответит перед поступлением удалённого вердикта, этот ответ применяется вместо этого и ожидающий удалённый запрос отбрасывается.

446 

447<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/ru/images/channel-permission-relay.svg" alt="Диаграмма последовательности: Claude Code отправляет уведомление permission_request на сервер канала, сервер форматирует и отправляет запрос в приложение чата, человек отвечает вердиктом, и сервер анализирует этот ответ в уведомление разрешения обратно в Claude Code" />

448 

449### Поля запроса разрешения

450 

451Исходящее уведомление от Claude Code — это `notifications/claude/channel/permission_request`. Как и [уведомление канала](#notification-format), транспорт — это стандартный MCP, но метод и схема — это расширения Claude Code. Объект `params` имеет четыре строковых поля, которые ваш сервер форматирует в исходящий запрос:

452 

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

454| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

455| `request_id` | Пять строчных букв, взятых из `a`-`z` без `l`, поэтому это никогда не читается как `1` или `I` при вводе на телефоне. Включите его в ваш исходящий запрос, чтобы его можно было повторить в ответе. Claude Code принимает только вердикт, который несёт ID, который он выдал. Диалог локального терминала не отображает этот ID, поэтому ваш исходящий обработчик — единственный способ узнать его. |

456| `tool_name` | Имя инструмента, который Claude хочет использовать, например `Bash` или `Write`. |

457| `description` | Понятное человеку резюме того, что делает этот конкретный вызов инструмента, тот же текст, который показывает диалог локального терминала. Для вызова Bash это описание Claude команды или сама команда, если описание не было дано. |

458| `input_preview` | Аргументы инструмента как строка JSON, усечённая до 200 символов. Для Bash это команда; для Write это путь файла и префикс содержимого. Опустите его из вашего запроса, если у вас есть место только для однострочного сообщения. Ваш сервер решает, что показать. |

459 

460Вердикт, который ваш сервер отправляет обратно, — это `notifications/claude/channel/permission` с двумя полями: `request_id`, повторяющий ID выше, и `behavior`, установленный на `'allow'` или `'deny'`. Allow позволяет вызову инструмента продолжиться; deny отклоняет его, то же самое, что ответить No в локальном диалоге. Ни один вердикт не влияет на будущие вызовы.

461 

462### Добавление трансляции к мосту чата

463 

464Добавление трансляции разрешений к двустороннему каналу требует трёх компонентов:

465 

4661. Запись `claude/channel/permission: {}` под `experimental` возможностями в конструкторе `Server`, чтобы Claude Code знал пересылать запросы

4672. Обработчик уведомлений для `notifications/claude/channel/permission_request`, который форматирует запрос и отправляет его через API вашей платформы

4683. Проверка в вашем входящем обработчике сообщений, которая распознаёт `yes <id>` или `no <id>` и отправляет уведомление вердикта `notifications/claude/channel/permission` вместо пересылки текста Claude

469 

470Объявляйте возможность только если ваш канал [аутентифицирует отправителя](#gate-inbound-messages), потому что любой, кто может ответить через ваш канал, может одобрять или отклонять использование инструментов в вашем сеансе.

471 

472Чтобы добавить их к двустороннему мосту чата, подобному собранному в [Предоставление инструмента ответа](#expose-a-reply-tool):

473 

474<Steps>

475 <Step title="Объявление возможности разрешения">

476 В конструкторе `Server` добавьте `claude/channel/permission: {}` рядом с `claude/channel` под `experimental`:

477 

478 ```ts theme={null}

479 capabilities: {

480 experimental: {

481 'claude/channel': {},

482 'claude/channel/permission': {}, // согласитесь на трансляцию разрешений

483 },

484 tools: {},

485 },

486 ```

487 </Step>

488 

489 <Step title="Обработка входящего запроса">

490 Зарегистрируйте обработчик уведомлений между конструктором `Server` и `mcp.connect()`. Claude Code вызывает его с [четырьмя полями запроса](#permission-request-fields) при открытии диалога разрешения. Ваш обработчик форматирует запрос для вашей платформы и включает инструкции для ответа с ID:

491 

492 ```ts theme={null}

493 import { z } from 'zod'

494 

495 // setNotificationHandler маршрутизирует по z.literal на поле method,

496 // поэтому эта схема является как валидатором, так и ключом отправки

497 const PermissionRequestSchema = z.object({

498 method: z.literal('notifications/claude/channel/permission_request'),

499 params: z.object({

500 request_id: z.string(), // пять строчных букв, включите дословно в ваш запрос

501 tool_name: z.string(), // например "Bash", "Write"

502 description: z.string(), // понятное человеку резюме этого вызова

503 input_preview: z.string(), // аргументы инструмента как JSON, усечённые до ~200 символов

504 }),

505 })

506 

507 mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {

508 // send() — это ваш исходящий: POST на вашу платформу чата, или для локального

509 // тестирования трансляция SSE, показанная в полном примере ниже.

510 send(

511 `Claude wants to run ${params.tool_name}: ${params.description}\n\n` +

512 // ID в инструкции — это то, что ваш входящий обработчик анализирует на шаге 3

513 `Reply "yes ${params.request_id}" or "no ${params.request_id}"`,

514 )

515 })

516 ```

517 </Step>

518 

519 <Step title="Перехват вердикта в вашем входящем обработчике">

520 Ваш входящий обработчик — это цикл или обратный вызов, который получает сообщения от вашей платформы: то же место, где вы [проверяете отправителя](#gate-inbound-messages) и отправляете `notifications/claude/channel` для пересылки чата Claude. Добавьте проверку перед вызовом пересылки чата, которая распознаёт формат вердикта и отправляет уведомление разрешения вместо этого.

521 

522 Регулярное выражение совпадает с форматом ID, который генерирует Claude Code: пять букв, никогда `l`. Флаг `/i` допускает автокоррекцию телефона, капитализирующую ответ; приведите захваченный ID в нижний регистр перед отправкой обратно.

523 

524 ```ts theme={null}

525 // совпадает с "y abcde", "yes abcde", "n abcde", "no abcde"

526 // [a-km-z] — это алфавит ID, который использует Claude Code (строчные, пропускает 'l')

527 // /i допускает автокоррекцию телефона; приведите захват в нижний регистр перед отправкой

528 const PERMISSION_REPLY_RE = /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i

529 

530 async function onInbound(message: PlatformMessage) {

531 if (!allowed.has(message.from.id)) return // сначала проверьте отправителя

532 

533 const m = PERMISSION_REPLY_RE.exec(message.text)

534 if (m) {

535 // m[1] — это слово вердикта, m[2] — это ID запроса

536 // отправьте уведомление вердикта обратно в Claude Code вместо чата

537 await mcp.notification({

538 method: 'notifications/claude/channel/permission',

539 params: {

540 request_id: m[2].toLowerCase(), // нормализуйте в случае автокоррекции капс

541 behavior: m[1].toLowerCase().startsWith('y') ? 'allow' : 'deny',

542 },

543 })

544 return // обработано как вердикт, не пересылайте также как чат

545 }

546 

547 // не совпадает с форматом вердикта: перейдите к нормальному пути чата

548 await mcp.notification({

549 method: 'notifications/claude/channel',

550 params: { content: message.text, meta: { chat_id: String(message.chat.id) } },

551 })

552 }

553 ```

554 </Step>

555</Steps>

556 

557Claude Code также держит диалог локального терминала открытым, поэтому вы можете ответить в любом месте, и первый поступивший ответ применяется. Удалённый ответ, который не совпадает точно с ожидаемым форматом, не удаётся одним из двух способов, и в обоих случаях диалог остаётся открытым:

558 

559* **Другой формат**: регулярное выражение вашего входящего обработчика не совпадает, поэтому текст, такой как `approve it` или `yes` без ID, переходит как обычное сообщение Claude.

560* **Правильный формат, неправильный ID**: ваш сервер отправляет вердикт, но Claude Code не находит открытый запрос с этим ID и молча его отбрасывает.

561 

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

563 

564Собранный `webhook.ts` ниже объединяет все три расширения с этой страницы: инструмент ответа, проверка отправителя и трансляция разрешений. Если вы начинаете отсюда, вам также потребуется [настройка проекта и запись `.mcp.json`](#example-build-a-webhook-receiver) из начального пошагового руководства.

565 

566Чтобы сделать обе стороны тестируемыми из curl, слушатель HTTP обслуживает два пути:

567 

568* **`GET /events`**: держит открытым поток SSE и отправляет каждое исходящее сообщение как строку `data:`, поэтому `curl -N` может смотреть ответы Claude и запросы разрешений в реальном времени.

569* **`POST /`**: входящая сторона, тот же обработчик, что и раньше, теперь с проверкой формата вердикта, вставленной перед ветвью пересылки чата.

570 

571```ts title="Full webhook.ts with permission relay' expandable theme={null}

572#!/usr/bin/env bun

573import { Server } from '@modelcontextprotocol/sdk/server/index.js'

574import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

575import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'

576import { z } from 'zod'

577 

578// --- Исходящий: запись для любых слушателей curl -N на /events ---

579// Реальный мост отправлял бы POST на вашу платформу чата вместо этого.

580const listeners = new Set<(chunk: string) => void>()

581function send(text: string) {

582 const chunk = text.split('\n').map(l => `data: ${l}\n`).join('') + '\n'

583 for (const emit of listeners) emit(chunk)

584}

585 

586// Список разрешений отправителя. Для локального пошагового руководства мы доверяем одному значению заголовка X-Sender

587// "dev"; реальный мост проверял бы ID пользователя платформы.

588const allowed = new Set(['dev'])

589 

590const mcp = new Server(

591 { name: 'webhook', version: '0.0.1' },

592 {

593 capabilities: {

594 experimental: {

595 'claude/channel': {},

596 'claude/channel/permission': {}, // согласитесь на трансляцию разрешений

597 },

598 tools: {},

599 },

600 instructions:

601 'Messages arrive as <channel source="webhook" chat_id="...">. ' +

602 'Reply with the reply tool, passing the chat_id from the tag.',

603 },

604)

605 

606// --- инструмент reply: Claude вызывает это для отправки сообщения обратно ---

607mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

608 tools: [{

609 name: 'reply',

610 description: 'Send a message back over this channel',

611 inputSchema: {

612 type: 'object',

613 properties: {

614 chat_id: { type: 'string', description: 'The conversation to reply in' },

615 text: { type: 'string', description: 'The message to send' },

616 },

617 required: ['chat_id', 'text'],

618 },

619 }],

620}))

621 

622mcp.setRequestHandler(CallToolRequestSchema, async req => {

623 if (req.params.name === 'reply') {

624 const { chat_id, text } = req.params.arguments as { chat_id: string; text: string }

625 send(`Reply to ${chat_id}: ${text}`)

626 return { content: [{ type: 'text', text: 'sent' }] }

627 }

628 throw new Error(`unknown tool: ${req.params.name}`)

629})

630 

631// --- трансляция разрешений: Claude Code (не Claude) вызывает это при открытии диалога

632const PermissionRequestSchema = z.object({

633 method: z.literal('notifications/claude/channel/permission_request'),

634 params: z.object({

635 request_id: z.string(),

636 tool_name: z.string(),

637 description: z.string(),

638 input_preview: z.string(),

639 }),

640})

641 

642mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {

643 send(

644 `Claude wants to run ${params.tool_name}: ${params.description}\n\n` +

645 `Reply "yes ${params.request_id}" or "no ${params.request_id}"`,

646 )

647})

648 

649await mcp.connect(new StdioServerTransport())

650 

651// --- HTTP на :8788: GET /events передаёт исходящий, POST маршрутизирует входящий ---

652const PERMISSION_REPLY_RE = /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i

653let nextId = 1

654 

655Bun.serve({

656 port: 8788,

657 hostname: '127.0.0.1',

658 idleTimeout: 0, // не закрывайте неактивные потоки SSE

659 async fetch(req) {

660 const url = new URL(req.url)

661 

662 // GET /events: поток SSE, чтобы curl -N мог смотреть ответы и запросы в реальном времени

663 if (req.method === 'GET' && url.pathname === '/events') {

664 const stream = new ReadableStream({

665 start(ctrl) {

666 ctrl.enqueue(': connected\n\n') // чтобы curl показал что-то сразу

667 const emit = (chunk: string) => ctrl.enqueue(chunk)

668 listeners.add(emit)

669 req.signal.addEventListener('abort', () => listeners.delete(emit))

670 },

671 })

672 return new Response(stream, {

673 headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache' },

674 })

675 }

676 

677 // всё остальное входящее: сначала проверьте отправителя

678 const body = await req.text()

679 const sender = req.headers.get('X-Sender') ?? ''

680 if (!allowed.has(sender)) return new Response('forbidden', { status: 403 })

681 

682 // проверьте формат вердикта перед обработкой как чат

683 const m = PERMISSION_REPLY_RE.exec(body)

684 if (m) {

685 await mcp.notification({

686 method: 'notifications/claude/channel/permission',

687 params: {

688 request_id: m[2].toLowerCase(),

689 behavior: m[1].toLowerCase().startsWith('y') ? 'allow' : 'deny',

690 },

691 })

692 return new Response('verdict recorded')

693 }

694 

695 // обычный чат: пересылка Claude как событие канала

696 const chat_id = String(nextId++)

697 await mcp.notification({

698 method: 'notifications/claude/channel',

699 params: { content: body, meta: { chat_id, path: url.pathname } },

700 })

701 return new Response('ok')

702 },

703})

704```

705 

706Тестируйте путь вердикта в трёх терминалах. Первый — это ваш сеанс Claude Code, запущенный с [флагом разработки](#test-during-the-research-preview), чтобы он запустил `webhook.ts`:

707 

708```bash theme={null}

709claude --dangerously-load-development-channels server:webhook

710```

711 

712Во втором потоке исходящая сторона, чтобы вы могли видеть ответы Claude и любые запросы разрешений по мере их срабатывания:

713 

714```bash theme={null}

715curl -N localhost:8788/events

716```

717 

718В третьем отправьте сообщение, которое заставит Claude попытаться запустить команду:

719 

720```bash theme={null}

721curl -d "list the files in this directory" -H "X-Sender: dev" localhost:8788

722```

723 

724Диалог локального разрешения открывается в вашем терминале Claude Code. Через момент запрос появляется в потоке `/events`, включая пятибуквенный ID. Одобрите его с удалённой стороны:

725 

726```bash theme={null}

727curl -d "yes <id>" -H "X-Sender: dev" localhost:8788

728```

729 

730Локальный диалог закрывается и инструмент запускается. Ответ Claude возвращается через инструмент `reply` и также попадает в поток.

731 

732Три специфичные для канала части в этом файле:

733 

734* **Возможности** в конструкторе `Server`: `claude/channel` регистрирует слушатель уведомлений, `claude/channel/permission` согласуется на трансляцию разрешений, `tools` позволяет Claude обнаружить инструмент ответа.

735* **Исходящие пути**: обработчик инструмента `reply` — это то, что Claude вызывает для разговорных ответов; обработчик уведомлений `PermissionRequestSchema` — это то, что Claude Code вызывает при открытии диалога разрешения. Оба вызывают `send()` для трансляции через `/events`, но они запускаются разными частями системы.

736* **Обработчик HTTP**: `GET /events` держит открытым поток SSE, чтобы curl мог смотреть исходящий в реальном времени; `POST` входящий, проверенный на заголовок `X-Sender`. Тело `yes <id>` или `no <id>` переходит в Claude Code как уведомление вердикта и никогда не достигает Claude; всё остальное пересылается Claude как событие канала.

737 

738## Упаковка как плагин

739 

740Чтобы сделать ваш канал устанавливаемым и общим, оберните его в [плагин](/ru/plugins) и опубликуйте на [маркетплейс](/ru/plugin-marketplaces). Пользователи устанавливают его с `/plugin install`, затем включают его за сеанс с `--channels plugin:<name>@<marketplace>`.

741 

742Канал, опубликованный на вашем собственном маркетплейсе, по-прежнему требует `--dangerously-load-development-channels` для запуска, так как он не находится в [одобренном списке разрешений](/ru/channels#supported-channels). Чтобы его добавили, [отправьте его на официальный маркетплейс](/ru/plugins#submit-your-plugin-to-the-official-marketplace). Плагины каналов проходят проверку безопасности перед одобрением. На планах Team и Enterprise администратор может вместо этого включить ваш плагин в список [`allowedChannelPlugins`](/ru/channels#restrict-which-channel-plugins-can-run) организации, который заменяет список разрешений Anthropic по умолчанию.

743 

744## См. также

745 

746* [Каналы](/ru/channels) для установки и использования Telegram, Discord, iMessage или демонстрации fakechat, а также для включения каналов для организации Team или Enterprise

747* [Рабочие реализации каналов](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) для полного кода сервера с потоками спаривания, инструментами ответа и вложениями файлов

748* [MCP](/ru/mcp) для базового протокола, который реализуют серверы каналов

749* [Плагины](/ru/plugins) для упаковки вашего канала, чтобы пользователи могли установить его с `/plugin install`

checkpointing.md +89 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Checkpointing

6 

7> Отслеживайте, перематывайте и суммируйте правки и беседу Claude для управления состоянием сеанса.

8 

9Claude Code автоматически отслеживает правки файлов Claude по мере работы, позволяя вам быстро отменять изменения и возвращаться к предыдущим состояниям, если что-то пойдёт не так.

10 

11## Как работает checkpointing

12 

13По мере работы с Claude, checkpointing автоматически фиксирует состояние вашего кода перед каждой правкой. Эта защитная сетка позволяет вам браться за амбициозные, масштабные задачи, зная, что вы всегда можете вернуться к предыдущему состоянию кода.

14 

15### Автоматическое отслеживание

16 

17Claude Code отслеживает все изменения, внесённые его инструментами редактирования файлов:

18 

19* Каждый запрос пользователя создаёт новый checkpoint

20* Checkpoints сохраняются между сеансами, поэтому вы можете получить к ним доступ в возобновлённых беседах

21* Автоматически очищаются вместе с сеансами через 30 дней (настраивается)

22 

23### Перемотка и суммирование

24 

25Нажмите `Esc` дважды (`Esc` + `Esc`) или используйте команду `/rewind` для открытия меню перемотки. Прокручиваемый список показывает каждый из ваших запросов из сеанса. Выберите точку, на которой вы хотите действовать, затем выберите действие:

26 

27* **Восстановить код и беседу**: вернуть как код, так и беседу в эту точку

28* **Восстановить беседу**: перемотать к этому сообщению, сохраняя текущий код

29* **Восстановить код**: отменить изменения файлов, сохраняя беседу

30* **Суммировать отсюда**: сжать беседу с этой точки вперёд в краткое резюме, освобождая место в context window

31* **Отмена**: вернуться к списку сообщений без внесения изменений

32 

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

34 

35#### Восстановление и суммирование

36 

37Три варианта восстановления отменяют состояние: они отменяют изменения кода, историю беседы или оба. "Суммировать отсюда" работает иначе:

38 

39* Сообщения перед выбранным сообщением остаются нетронутыми

40* Выбранное сообщение и все последующие сообщения заменяются компактным резюме, созданным ИИ

41* Никакие файлы на диске не изменяются

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

43 

44Это похоже на `/compact`, но целевое: вместо суммирования всей беседы вы сохраняете ранний контекст в полной детализации и сжимаете только части, которые занимают место. Вы можете ввести дополнительные инструкции для руководства тем, на чём должно сосредоточиться резюме.

45 

46<Note>

47 Суммирование держит вас в одном сеансе и сжимает контекст. Если вы хотите ответвиться и попробовать другой подход, сохраняя исходный сеанс нетронутым, используйте вместо этого [fork](/ru/how-claude-code-works#resume-or-fork-sessions) (`claude --continue --fork-session`).

48</Note>

49 

50## Типичные случаи использования

51 

52Checkpoints особенно полезны, когда:

53 

54* **Исследование альтернатив**: попробуйте различные подходы к реализации без потери вашей начальной точки

55* **Восстановление после ошибок**: быстро отмените изменения, которые внесли ошибки или нарушили функциональность

56* **Итерация функций**: экспериментируйте с вариантами, зная, что вы можете вернуться к рабочим состояниям

57* **Освобождение места контекста**: суммируйте многословный сеанс отладки с середины вперёд, сохраняя ваши исходные инструкции нетронутыми

58 

59## Ограничения

60 

61### Изменения команд Bash не отслеживаются

62 

63Checkpointing не отслеживает файлы, изменённые командами bash. Например, если Claude Code запускает:

64 

65```bash theme={null}

66rm file.txt

67mv old.txt new.txt

68cp source.txt dest.txt

69```

70 

71Эти изменения файлов не могут быть отменены через перемотку. Отслеживаются только прямые правки файлов, сделанные через инструменты редактирования файлов Claude.

72 

73### Внешние изменения не отслеживаются

74 

75Checkpointing отслеживает только файлы, которые были отредактированы в текущем сеансе. Ручные изменения, которые вы вносите в файлы вне Claude Code, и правки из других одновременных сеансов обычно не фиксируются, если они не изменяют те же файлы, что и текущий сеанс.

76 

77### Не замена для контроля версий

78 

79Checkpoints предназначены для быстрого восстановления на уровне сеанса. Для постоянной истории версий и сотрудничества:

80 

81* Продолжайте использовать контроль версий (например, Git) для коммитов, веток и долгосрочной истории

82* Checkpoints дополняют, но не заменяют надлежащий контроль версий

83* Думайте о checkpoints как о "локальной отмене" и Git как о "постоянной истории"

84 

85## См. также

86 

87* [Interactive mode](/ru/interactive-mode) - Сочетания клавиш и элементы управления сеансом

88* [Built-in commands](/ru/commands) - Доступ к checkpoints с использованием `/rewind`

89* [CLI reference](/ru/cli-reference) - Параметры командной строки

chrome.md +232 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Использование Claude Code с Chrome (бета)

6 

7> Подключите Claude Code к браузеру Chrome для тестирования веб-приложений, отладки с помощью логов консоли, автоматизации заполнения форм и извлечения данных со страниц.

8 

9Claude Code интегрируется с [расширением Claude in Chrome для браузера](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn), чтобы предоставить вам возможности автоматизации браузера из CLI или [расширения VS Code](/ru/vs-code#automate-browser-tasks-with-chrome). Создавайте свой код, а затем тестируйте и отлаживайте его в браузере без переключения контекста.

10 

11Claude открывает новые вкладки для задач браузера и использует состояние входа вашего браузера, поэтому он может получить доступ к любому сайту, на который вы уже вошли. Действия браузера выполняются в видимом окне Chrome в реальном времени. Когда Claude встречает страницу входа или CAPTCHA, он приостанавливается и просит вас обработать это вручную.

12 

13<Note>

14 Интеграция с Chrome находится в бета-версии и в настоящее время работает с Google Chrome и Microsoft Edge. Она еще не поддерживается на Brave, Arc или других браузерах на основе Chromium. WSL (Windows Subsystem for Linux) также не поддерживается.

15</Note>

16 

17## Возможности

18 

19С подключенным Chrome вы можете объединять действия браузера с задачами кодирования в единый рабочий процесс:

20 

21* **Живая отладка**: читайте ошибки консоли и состояние DOM напрямую, а затем исправьте код, который их вызвал

22* **Проверка дизайна**: создайте пользовательский интерфейс на основе макета Figma, а затем откройте его в браузере, чтобы проверить соответствие

23* **Тестирование веб-приложений**: тестируйте валидацию форм, проверяйте визуальные регрессии или проверяйте потоки пользователей

24* **Аутентифицированные веб-приложения**: взаимодействуйте с Google Docs, Gmail, Notion или любым приложением, в которое вы вошли, без коннекторов API

25* **Извлечение данных**: извлекайте структурированную информацию со страниц и сохраняйте её локально

26* **Автоматизация задач**: автоматизируйте повторяющиеся задачи браузера, такие как ввод данных, заполнение форм или многосайтовые рабочие процессы

27* **Запись сеанса**: записывайте взаимодействия браузера в виде GIF-файлов для документирования или обмена информацией о том, что произошло

28 

29## Предварительные требования

30 

31Перед использованием Claude Code с Chrome вам необходимо:

32 

33* Браузер [Google Chrome](https://www.google.com/chrome/) или [Microsoft Edge](https://www.microsoft.com/edge)

34* Расширение [Claude in Chrome](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) версии 1.0.36 или выше, доступное в Chrome Web Store для обоих браузеров

35* [Claude Code](/ru/quickstart#step-1-install-claude-code) версии 2.0.73 или выше

36* Прямой план Anthropic (Pro, Max, Team или Enterprise)

37 

38<Note>

39 Интеграция с Chrome недоступна через сторонних поставщиков, таких как Amazon Bedrock, Google Cloud Vertex AI или Microsoft Foundry. Если вы получаете доступ к Claude исключительно через стороннего поставщика, вам нужна отдельная учетная запись claude.ai для использования этой функции.

40</Note>

41 

42## Начало работы в CLI

43 

44<Steps>

45 <Step title="Запустите Claude Code с Chrome">

46 Запустите Claude Code с флагом `--chrome`:

47 

48 ```bash theme={null}

49 claude --chrome

50 ```

51 

52 Вы также можете включить Chrome в существующем сеансе, выполнив `/chrome`.

53 </Step>

54 

55 <Step title="Попросите Claude использовать браузер">

56 Этот пример переходит на страницу, взаимодействует с ней и сообщает, что он находит, всё из вашего терминала или редактора:

57 

58 ```text theme={null}

59 Go to code.claude.com/docs, click on the search box,

60 type "hooks", and tell me what results appear

61 ```

62 </Step>

63</Steps>

64 

65Выполните `/chrome` в любое время, чтобы проверить статус подключения, управлять разрешениями или переподключить расширение.

66 

67Для VS Code см. [автоматизацию браузера в VS Code](/ru/vs-code#automate-browser-tasks-with-chrome).

68 

69### Включение Chrome по умолчанию

70 

71Чтобы избежать передачи `--chrome` в каждом сеансе, выполните `/chrome` и выберите "Enabled by default".

72 

73В [расширении VS Code](/ru/vs-code#automate-browser-tasks-with-chrome) Chrome доступен всякий раз, когда установлено расширение Chrome. Дополнительный флаг не требуется.

74 

75<Note>

76 Включение Chrome по умолчанию в CLI увеличивает использование контекста, поскольку инструменты браузера всегда загружены. Если вы заметили увеличение потребления контекста, отключите этот параметр и используйте `--chrome` только при необходимости.

77</Note>

78 

79### Управление разрешениями сайта

80 

81Разрешения на уровне сайта наследуются из расширения Chrome. Управляйте разрешениями в параметрах расширения Chrome, чтобы контролировать, какие сайты Claude может просматривать, нажимать и вводить текст.

82 

83## Примеры рабочих процессов

84 

85Эти примеры показывают распространённые способы объединения действий браузера с задачами кодирования. Выполните `/mcp` и выберите `claude-in-chrome`, чтобы увидеть полный список доступных инструментов браузера.

86 

87### Тестирование локального веб-приложения

88 

89При разработке веб-приложения попросите Claude проверить, что ваши изменения работают правильно:

90 

91```text theme={null}

92I just updated the login form validation. Can you open localhost:3000,

93try submitting the form with invalid data, and check if the error

94messages appear correctly?

95```

96 

97Claude переходит на ваш локальный сервер, взаимодействует с формой и сообщает, что он наблюдает.

98 

99### Отладка с помощью логов консоли

100 

101Claude может читать вывод консоли, чтобы помочь диагностировать проблемы. Скажите Claude, какие шаблоны искать, а не просите весь вывод консоли, так как логи могут быть многословными:

102 

103```text theme={null}

104Open the dashboard page and check the console for any errors when

105the page loads.

106```

107 

108Claude читает сообщения консоли и может фильтровать по определённым шаблонам или типам ошибок.

109 

110### Автоматизация заполнения форм

111 

112Ускорьте повторяющиеся задачи ввода данных:

113 

114```text theme={null}

115I have a spreadsheet of customer contacts in contacts.csv. For each row,

116go to the CRM at crm.example.com, click "Add Contact", and fill in the

117name, email, and phone fields.

118```

119 

120Claude читает ваш локальный файл, переходит по веб-интерфейсу и вводит данные для каждой записи.

121 

122### Создание контента в Google Docs

123 

124Используйте Claude для прямого написания в ваших документах без настройки API:

125 

126```text theme={null}

127Draft a project update based on the recent commits and add it to my

128Google Doc at docs.google.com/document/d/abc123

129```

130 

131Claude открывает документ, нажимает в редактор и вводит контент. Это работает с любым веб-приложением, в которое вы вошли: Gmail, Notion, Sheets и многое другое.

132 

133### Извлечение данных со страниц

134 

135Извлекайте структурированную информацию с веб-сайтов:

136 

137```text theme={null}

138Go to the product listings page and extract the name, price, and

139availability for each item. Save the results as a CSV file.

140```

141 

142Claude переходит на страницу, читает контент и компилирует данные в структурированный формат.

143 

144### Запуск многосайтовых рабочих процессов

145 

146Координируйте задачи на нескольких веб-сайтах:

147 

148```text theme={null}

149Check my calendar for meetings tomorrow, then for each meeting with

150an external attendee, look up their company website and add a note

151about what they do.

152```

153 

154Claude работает на разных вкладках, чтобы собрать информацию и завершить рабочий процесс.

155 

156### Запись демо-GIF

157 

158Создавайте общедоступные записи взаимодействий браузера:

159 

160```text theme={null}

161Record a GIF showing how to complete the checkout flow, from adding

162an item to the cart through to the confirmation page.

163```

164 

165Claude записывает последовательность взаимодействий и сохраняет её как GIF-файл.

166 

167## Troubleshooting

168 

169### Расширение не обнаружено

170 

171Если Claude Code показывает "Chrome extension not detected":

172 

1731. Убедитесь, что расширение Chrome установлено и включено в `chrome://extensions`

1742. Убедитесь, что Claude Code обновлён, выполнив `claude --version`

1753. Проверьте, что Chrome запущен

1764. Выполните `/chrome` и выберите "Reconnect extension", чтобы переустановить соединение

1775. Если проблема сохраняется, перезагрузите Claude Code и Chrome

178 

179При первом включении интеграции с Chrome, Claude Code устанавливает файл конфигурации хоста собственного обмена сообщениями. Chrome читает этот файл при запуске, поэтому если расширение не обнаружено при первой попытке, перезагрузите Chrome, чтобы подобрать новую конфигурацию.

180 

181Если соединение по-прежнему не удаётся, убедитесь, что файл конфигурации хоста существует в:

182 

183Для Chrome:

184 

185* **macOS**: `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

186* **Linux**: `~/.config/google-chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

187* **Windows**: проверьте `HKCU\Software\Google\Chrome\NativeMessagingHosts\` в реестре Windows

188 

189Для Edge:

190 

191* **macOS**: `~/Library/Application Support/Microsoft Edge/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

192* **Linux**: `~/.config/microsoft-edge/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

193* **Windows**: проверьте `HKCU\Software\Microsoft\Edge\NativeMessagingHosts\` в реестре Windows

194 

195### Браузер не отвечает

196 

197Если команды браузера Claude перестают работать:

198 

1991. Проверьте, не блокирует ли модальное диалоговое окно (alert, confirm, prompt) страницу. Диалоговые окна JavaScript блокируют события браузера и препятствуют получению команд Claude. Закройте диалоговое окно вручную, а затем скажите Claude продолжить.

2002. Попросите Claude создать новую вкладку и повторить попытку

2013. Перезагрузите расширение Chrome, отключив и повторно включив его в `chrome://extensions`

202 

203### Разрыв соединения во время длительных сеансов

204 

205Service worker расширения Chrome может перейти в режим ожидания во время расширенных сеансов, что нарушает соединение. Если инструменты браузера перестают работать после периода неактивности, выполните `/chrome` и выберите "Reconnect extension".

206 

207### Проблемы, специфичные для Windows

208 

209На Windows вы можете столкнуться с:

210 

211* **Конфликты именованных каналов (EADDRINUSE)**: если другой процесс использует тот же именованный канал, перезагрузите Claude Code. Закройте все остальные сеансы Claude Code, которые могут использовать Chrome.

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

213 

214### Распространённые сообщения об ошибках

215 

216Это наиболее часто встречающиеся ошибки и способы их решения:

217 

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

219| ------------------------------------ | ---------------------------------------------------------------- | --------------------------------------------------------------------------------- |

220| "Browser extension is not connected" | Хост собственного обмена сообщениями не может достичь расширение | Перезагрузите Chrome и Claude Code, затем выполните `/chrome` для переподключения |

221| "Extension not detected" | Расширение Chrome не установлено или отключено | Установите или включите расширение в `chrome://extensions` |

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

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

224 

225## See also

226 

227* [Использование компьютера](/ru/computer-use): управление собственными приложениями macOS, когда задача не может быть выполнена в браузере

228* [Использование Claude Code в VS Code](/ru/vs-code#automate-browser-tasks-with-chrome): автоматизация браузера в расширении VS Code

229* [Справочник CLI](/ru/cli-reference): флаги командной строки, включая `--chrome`

230* [Распространённые рабочие процессы](/ru/common-workflows): дополнительные способы использования Claude Code

231* [Данные и конфиденциальность](/ru/data-usage): как Claude Code обрабатывает ваши данные

232* [Начало работы с Claude in Chrome](https://support.claude.com/en/articles/12012173-getting-started-with-claude-in-chrome): полная документация расширения Chrome, включая сочетания клавиш, планирование и разрешения

claude-code-on-the-web.md +773 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Использование Claude Code в веб-интерфейсе

6 

7> Настройте облачные окружения, скрипты установки, сетевой доступ и Docker в песочнице Anthropic. Перемещайте сессии между веб-интерфейсом и терминалом с помощью `--remote` и `--teleport`.

8 

9<Note>

10 Claude Code в веб-интерфейсе находится в исследовательском предпросмотре для пользователей Pro, Max и Team, а также для пользователей Enterprise с премиум-местами или местами Chat + Claude Code.

11</Note>

12 

13Claude Code в веб-интерфейсе запускает задачи на облачной инфраструктуре, управляемой Anthropic, по адресу [claude.ai/code](https://claude.ai/code). Сессии сохраняются даже если вы закроете браузер, и вы можете мониторить их из мобильного приложения Claude.

14 

15<Tip>

16 Новичок в Claude Code в веб-интерфейсе? Начните с [Начало работы](/ru/web-quickstart) для подключения вашего аккаунта GitHub и отправки вашей первой задачи.

17</Tip>

18 

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

20 

21* [Варианты аутентификации GitHub](#github-authentication-options): два способа подключения GitHub

22* [Облачное окружение](#the-cloud-environment): какая конфигурация переносится, какие инструменты установлены и как настроить окружения

23* [Setup scripts](#setup-scripts) и управление зависимостями

24* [Сетевой доступ](#network-access): уровни, прокси и список разрешений по умолчанию

25* [Перемещение задач между веб-интерфейсом и терминалом](#move-tasks-between-web-and-terminal) с помощью `--remote` и `--teleport`

26* [Работа с сессиями](#work-with-sessions): просмотр, совместное использование, архивирование, удаление

27* [Auto-fix pull requests](#auto-fix-pull-requests): автоматический ответ на сбои CI и комментарии рецензентов

28* [Безопасность и изоляция](#security-and-isolation): как сессии изолированы

29* [Ограничения](#limitations): ограничения скорости и ограничения платформы

30 

31## Варианты аутентификации GitHub

32 

33Облачным сессиям нужен доступ к вашим репозиториям GitHub для клонирования кода и отправки веток. Вы можете предоставить доступ двумя способами:

34 

35| Метод | Как это работает | Лучше всего для |

36| :--------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- |

37| **GitHub App** | Установите приложение Claude GitHub на конкретные репозитории во время [веб-подключения](/ru/web-quickstart). Доступ ограничен для каждого репозитория. | Команды, которые хотят явной авторизации для каждого репозитория |

38| **`/web-setup`** | Запустите `/web-setup` в вашем терминале для синхронизации вашего локального токена `gh` CLI с вашим аккаунтом Claude. Доступ соответствует тому, что может видеть ваш токен `gh`. | Отдельные разработчики, которые уже используют `gh` |

39 

40Любой метод работает. [`/schedule`](/ru/routines) проверяет наличие любой формы доступа и предлагает запустить `/web-setup`, если ничего не настроено. См. [Подключение из вашего терминала](/ru/web-quickstart#connect-from-your-terminal) для пошагового руководства `/web-setup`.

41 

42GitHub App требуется для [Auto-fix](#auto-fix-pull-requests), который использует приложение для получения PR webhooks. Если вы подключитесь с помощью `/web-setup` и позже захотите Auto-fix, установите приложение на эти репозитории.

43 

44Администраторы Team и Enterprise могут отключить `/web-setup` с помощью переключателя Quick web setup на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

45 

46<Note>

47 Организации с включённым [Zero Data Retention](/ru/zero-data-retention) не могут использовать `/web-setup` или другие функции облачных сессий.

48</Note>

49 

50## Облачное окружение

51 

52Каждая сессия запускается на свежей виртуальной машине, управляемой Anthropic, с клонированным вашим репозиторием. В этом разделе рассматривается, что доступно при запуске сессии и как её настроить.

53 

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

55 

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

57 

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

59| :------------------------------------------------------------------------ | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

61| Ваши hooks `.claude/settings.json` репозитория | Да | Часть клона |

62| Ваши MCP серверы `.mcp.json` репозитория | Да | Часть клона |

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

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

65| Plugins объявленные в `.claude/settings.json` | Да | Установлены при запуске сессии из [marketplace](/ru/plugin-marketplaces), который вы объявили. Требует сетевого доступа для доступа к источнику marketplace |

66| Ваш пользовательский `~/.claude/CLAUDE.md` | Нет | Находится на вашей машине, не в репозитории |

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

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

69| Статические API токены и учётные данные | Нет | Выделенного хранилища секретов пока не существует. См. ниже |

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

71 

72Чтобы сделать конфигурацию доступной в облачных сессиях, зафиксируйте её в репозитории. Выделенное хранилище секретов пока не доступно. Как переменные окружения, так и setup scripts хранятся в конфигурации окружения, видимой для всех, кто может редактировать это окружение. Если вам нужны секреты в облачной сессии, добавьте их как переменные окружения с учётом этой видимости.

73 

74### Установленные инструменты

75 

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

77 

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

79| :------------ | :----------------------------------------------------------------------------- |

80| **Python** | Python 3.x с pip, poetry, uv, black, mypy, pytest, ruff |

81| **Node.js** | 20, 21 и 22 через nvm, с npm, yarn, pnpm, bun¹, eslint, prettier, chromedriver |

82| **Ruby** | 3.1, 3.2, 3.3 с gem, bundler, rbenv |

83| **PHP** | 8.4 с Composer |

84| **Java** | OpenJDK 21 с Maven и Gradle |

85| **Go** | последняя стабильная версия с поддержкой модулей |

86| **Rust** | rustc и cargo |

87| **C/C++** | GCC, Clang, cmake, ninja, conan |

88| **Docker** | docker, dockerd, docker compose |

89| **Databases** | PostgreSQL 16, Redis 7.0 |

90| **Utilities** | git, jq, yq, ripgrep, tmux, vim, nano |

91 

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

93 

94Для точных версий попросите Claude запустить `check-tools` в облачной сессии. Эта команда существует только в облачных сессиях.

95 

96### Работа с проблемами GitHub и pull requests

97 

98Облачные сессии включают встроенные инструменты GitHub, которые позволяют Claude читать проблемы, перечислять pull requests, получать diffs и публиковать комментарии без какой-либо настройки. Эти инструменты аутентифицируются через [GitHub proxy](#github-proxy), используя любой метод, который вы настроили в разделе [Варианты аутентификации GitHub](#github-authentication-options), поэтому ваш токен никогда не входит в контейнер.

99 

100CLI `gh` не предустановлен. Если вам нужна команда `gh`, которую встроенные инструменты не охватывают, например `gh release` или `gh workflow run`, установите и аутентифицируйте её самостоятельно:

101 

102<Steps>

103 <Step title="Установите gh в ваш setup script">

104 Добавьте `apt update && apt install -y gh` в ваш [setup script](#setup-scripts).

105 </Step>

106 

107 <Step title="Предоставьте токен">

108 Добавьте переменную окружения `GH_TOKEN` в ваши [параметры окружения](#configure-your-environment) с личным токеном доступа GitHub. `gh` автоматически читает `GH_TOKEN`, поэтому шаг `gh auth login` не требуется.

109 </Step>

110</Steps>

111 

112### Свяжите артефакты обратно с сессией

113 

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

115 

116Попросите Claude построить ссылку из переменной окружения. Следующая команда выводит URL:

117 

118```bash theme={null}

119echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID}"

120```

121 

122### Запускайте тесты, запускайте сервисы и добавляйте пакеты

123 

124Claude запускает тесты как часть работы над задачей. Попросите это в вашей подсказке, например "fix the failing tests in `tests/`" или "run pytest after each change." Средства запуска тестов, такие как pytest, jest и cargo test, работают из коробки, так как они предустановлены.

125 

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

127 

128```bash theme={null}

129service postgresql start

130```

131 

132```bash theme={null}

133service redis-server start

134```

135 

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

137 

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

139 

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

141 

142### Ограничения ресурсов

143 

144Облачные сессии работают с приблизительными потолками ресурсов, которые могут меняться со временем:

145 

146* 4 vCPU

147* 16 ГБ оперативной памяти

148* 30 ГБ диска

149 

150Задачи, требующие значительно больше памяти, такие как большие работы сборки или тесты, требующие много памяти, могут не пройти или быть прерваны. Для рабочих нагрузок, превышающих эти ограничения, используйте [Remote Control](/ru/remote-control) для запуска Claude Code на вашем собственном оборудовании.

151 

152### Настройте ваше окружение

153 

154Окружения контролируют [сетевой доступ](#network-access), переменные окружения и [setup script](#setup-scripts), который запускается перед запуском сессии. См. [Установленные инструменты](#installed-tools) для того, что доступно без какой-либо конфигурации. Вы можете управлять окружениями из веб-интерфейса или терминала:

155 

156| Действие | Как |

157| :---------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

158| Добавить окружение | Выберите текущее окружение, чтобы открыть селектор, затем выберите **Add environment**. Диалог включает имя, уровень сетевого доступа, переменные окружения и setup script. |

159| Отредактировать окружение | Выберите значок параметров справа от имени окружения. |

160| Архивировать окружение | Откройте окружение для редактирования и выберите **Archive**. Архивированные окружения скрыты из селектора, но существующие сессии продолжают работать. |

161| Установить значение по умолчанию для `--remote` | Запустите `/remote-env` в вашем терминале. Если у вас одно окружение, эта команда показывает вашу текущую конфигурацию. `/remote-env` только выбирает значение по умолчанию; добавляйте, редактируйте и архивируйте окружения из веб-интерфейса. |

162 

163Переменные окружения используют формат `.env` с одной парой `KEY=value` на строку. Не оборачивайте значения в кавычки, так как кавычки хранятся как часть значения.

164 

165```text theme={null}

166NODE_ENV=development

167LOG_LEVEL=debug

168DATABASE_URL=postgres://localhost:5432/myapp

169```

170 

171## Setup scripts

172 

173Setup script — это Bash скрипт, который запускается при запуске новой облачной сессии, перед запуском Claude Code. Используйте setup scripts для установки зависимостей, настройки инструментов или получения чего-либо, что сессии нужно, но что не предустановлено.

174 

175Скрипты запускаются от имени root на Ubuntu 24.04, поэтому `apt install` и большинство менеджеров пакетов языков работают.

176 

177Чтобы добавить setup script, откройте диалог параметров окружения и введите ваш скрипт в поле **Setup script**.

178 

179Этот пример устанавливает CLI `gh`, который не предустановлен:

180 

181```bash theme={null}

182#!/bin/bash

183apt update && apt install -y gh

184```

185 

186Если скрипт завершится с ненулевым кодом, сессия не запустится. Добавьте `|| true` к некритичным командам, чтобы избежать блокирования сессии при нестабильной установке.

187 

188<Note>

189 Setup scripts, которые устанавливают пакеты, нуждаются в сетевом доступе для доступа к реестрам. Доступ в сеть по умолчанию **Trusted** позволяет подключения к [распространённым реестрам пакетов](#default-allowed-domains), включая npm, PyPI, RubyGems и crates.io. Скрипты не смогут установить пакеты, если ваше окружение использует доступ в сеть **None**.

190</Note>

191 

192### Кэширование окружения

193 

194Setup script запускается в первый раз, когда вы запускаете сессию в окружении. После завершения Anthropic создаёт снимок файловой системы и повторно использует этот снимок в качестве начальной точки для последующих сессий. Новые сессии начинаются с вашими зависимостями, инструментами и образами Docker уже на диске, и шаг setup script пропускается. Это сохраняет быстрый запуск даже когда скрипт устанавливает большие наборы инструментов или получает образы контейнеров.

195 

196Кэш захватывает файлы, не запущенные процессы. Всё, что setup script записывает на диск, переносится. Сервисы или контейнеры, которые он запускает, нет, поэтому запускайте их за сессию, попросив Claude или с помощью [SessionStart hook](#setup-scripts-vs-sessionstart-hooks).

197 

198Setup script запускается снова для перестроения кэша, когда вы изменяете setup script окружения или разрешённые сетевые хосты, и когда кэш достигает своего истечения примерно через семь дней. Возобновление существующей сессии никогда не переустанавливает setup script.

199 

200Вам не нужно включать кэширование или управлять снимками самостоятельно.

201 

202### Setup scripts в сравнении с SessionStart hooks

203 

204Используйте setup script для установки того, что облаку нужно, но ваш ноутбук уже имеет, например, среду выполнения языка или инструмент CLI. Используйте [SessionStart hook](/ru/hooks#sessionstart) для настройки проекта, которая должна выполняться везде, в облаке и локально, например `npm install`.

205 

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

207 

208| | Setup scripts | SessionStart hooks |

209| ------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |

210| Прикреплено к | Облачному окружению | Вашему репозиторию |

211| Настроено в | Пользовательском интерфейсе облачного окружения | `.claude/settings.json` в вашем репозитории |

212| Запускается | Перед запуском Claude Code, когда нет [кэшированного окружения](#environment-caching) | После запуска Claude Code, на каждой сессии, включая возобновлённые |

213| Область | Только облачные окружения | Как локальные, так и облачные |

214 

215SessionStart hooks также могут быть определены в вашем пользовательском файле `~/.claude/settings.json` локально, но пользовательские параметры не переносятся в облачные сессии. В облаке запускаются только hooks, зафиксированные в репозитории.

216 

217### Установите зависимости с помощью SessionStart hook

218 

219Чтобы установить зависимости только в облачных сессиях, добавьте SessionStart hook в `.claude/settings.json` вашего репозитория:

220 

221```json theme={null}

222{

223 "hooks": {

224 "SessionStart": [

225 {

226 "matcher": "startup|resume",

227 "hooks": [

228 {

229 "type": "command",

230 "command": "\"$CLAUDE_PROJECT_DIR\"/scripts/install_pkgs.sh"

231 }

232 ]

233 }

234 ]

235 }

236}

237```

238 

239Создайте скрипт в `scripts/install_pkgs.sh` и сделайте его исполняемым с помощью `chmod +x`. Переменная окружения `CLAUDE_CODE_REMOTE` установлена в `true` в облачных сессиях, поэтому вы можете использовать её для пропуска локального выполнения:

240 

241```bash theme={null}

242#!/bin/bash

243 

244if [ "$CLAUDE_CODE_REMOTE" != "true" ]; then

245 exit 0

246fi

247 

248npm install

249pip install -r requirements.txt

250exit 0

251```

252 

253SessionStart hooks имеют некоторые ограничения в облачных сессиях:

254 

255* **Нет облачного ограничения области**: hooks запускаются как в локальных, так и в облачных сессиях. Чтобы пропустить локальное выполнение, проверьте переменную окружения `CLAUDE_CODE_REMOTE`, как показано выше.

256* **Требует сетевой доступ**: команды установки нуждаются в доступе к реестрам пакетов. Если ваше окружение использует доступ в сеть **None**, эти hooks не будут работать. [Список разрешений по умолчанию](#default-allowed-domains) под **Trusted** охватывает npm, PyPI, RubyGems и crates.io.

257* **Совместимость с прокси**: весь исходящий трафик проходит через [security proxy](#security-proxy). Некоторые менеджеры пакетов не работают правильно с этим прокси. Bun — известный пример.

258* **Добавляет задержку при запуске**: hooks запускаются каждый раз при запуске или возобновлении сессии, в отличие от setup scripts, которые получают выгоду от [кэширования окружения](#environment-caching). Держите скрипты установки быстрыми, проверяя, присутствуют ли зависимости, перед переустановкой.

259 

260Чтобы сохранить переменные окружения для последующих команд Bash, запишите в файл в `$CLAUDE_ENV_FILE`. См. [SessionStart hooks](/ru/hooks#sessionstart) для деталей.

261 

262Замена базового образа вашим собственным образом Docker пока не поддерживается. Используйте setup script для установки того, что вам нужно поверх [предоставленного образа](#installed-tools), или запустите ваш образ как контейнер рядом с Claude с помощью `docker compose`.

263 

264## Сетевой доступ

265 

266Сетевой доступ контролирует исходящие соединения из облачного окружения. Каждое окружение указывает один уровень доступа, и вы можете расширить его пользовательскими разрешёнными доменами. По умолчанию используется **Trusted**, который позволяет реестры пакетов и другие [разрешённые домены](#default-allowed-domains).

267 

268### Уровни доступа

269 

270Выберите уровень доступа при создании или редактировании окружения:

271 

272| Уровень | Исходящие соединения |

273| :---------- | :------------------------------------------------------------------------------------------- |

274| **None** | Нет исходящего сетевого доступа |

275| **Trusted** | Только [разрешённые домены](#default-allowed-domains): реестры пакетов, GitHub, облачные SDK |

276| **Full** | Любой домен |

277| **Custom** | Ваш собственный список разрешений, опционально включая значения по умолчанию |

278 

279Операции GitHub используют [отдельный прокси](#github-proxy), который независим от этого параметра.

280 

281### Разрешите конкретные домены

282 

283Чтобы разрешить домены, которые не в списке Trusted, выберите **Custom** в параметрах сетевого доступа окружения. Появляется поле **Allowed domains**. Введите один домен на строку:

284 

285```text theme={null}

286api.example.com

287*.internal.example.com

288registry.example.com

289```

290 

291Используйте `*.` для совпадения поддоменов с подстановочными знаками. Отметьте **Also include default list of common package managers**, чтобы сохранить [Trusted домены](#default-allowed-domains) вместе с вашими пользовательскими записями, или оставьте её без отметки, чтобы разрешить только то, что вы указали.

292 

293### GitHub proxy

294 

295Для безопасности все операции GitHub проходят через выделённый сервис прокси, который прозрачно обрабатывает все взаимодействия git. Внутри песочницы клиент git аутентифицируется с помощью пользовательского ограниченного учётного данного. Этот прокси:

296 

297* Безопасно управляет аутентификацией GitHub: клиент git использует ограниченное учётное данное внутри песочницы, которое прокси проверяет и переводит в ваш фактический токен аутентификации GitHub

298* Ограничивает операции git push к текущей рабочей ветке для безопасности

299* Обеспечивает беспрепятственное клонирование, получение и операции PR при сохранении границ безопасности

300 

301### Security proxy

302 

303Окружения работают за HTTP/HTTPS сетевым прокси для целей безопасности и предотвращения злоупотреблений. Весь исходящий интернет-трафик проходит через этот прокси, который обеспечивает:

304 

305* Защиту от вредоносных запросов

306* Ограничение скорости и предотвращение злоупотреблений

307* Фильтрацию контента для повышенной безопасности

308 

309### Разрешённые домены по умолчанию

310 

311При использовании доступа в сеть **Trusted** следующие домены разрешены по умолчанию. Домены, отмеченные с `*`, указывают на совпадение поддоменов с подстановочными знаками, поэтому `*.gcr.io` позволяет любой поддомен `gcr.io`.

312 

313<AccordionGroup>

314 <Accordion title="Сервисы Anthropic">

315 * api.anthropic.com

316 * statsig.anthropic.com

317 * docs.claude.com

318 * platform.claude.com

319 * code.claude.com

320 * claude.ai

321 </Accordion>

322 

323 <Accordion title="Контроль версий">

324 * github.com

325 * [www.github.com](http://www.github.com)

326 * api.github.com

327 * npm.pkg.github.com

328 * raw\.githubusercontent.com

329 * pkg-npm.githubusercontent.com

330 * objects.githubusercontent.com

331 * release-assets.githubusercontent.com

332 * codeload.github.com

333 * avatars.githubusercontent.com

334 * camo.githubusercontent.com

335 * gist.github.com

336 * gitlab.com

337 * [www.gitlab.com](http://www.gitlab.com)

338 * registry.gitlab.com

339 * bitbucket.org

340 * [www.bitbucket.org](http://www.bitbucket.org)

341 * api.bitbucket.org

342 </Accordion>

343 

344 <Accordion title="Реестры контейнеров">

345 * registry-1.docker.io

346 * auth.docker.io

347 * index.docker.io

348 * hub.docker.com

349 * [www.docker.com](http://www.docker.com)

350 * production.cloudflare.docker.com

351 * download.docker.com

352 * gcr.io

353 * \*.gcr.io

354 * ghcr.io

355 * mcr.microsoft.com

356 * \*.data.mcr.microsoft.com

357 * public.ecr.aws

358 </Accordion>

359 

360 <Accordion title="Облачные платформы">

361 * cloud.google.com

362 * accounts.google.com

363 * gcloud.google.com

364 * \*.googleapis.com

365 * storage.googleapis.com

366 * compute.googleapis.com

367 * container.googleapis.com

368 * azure.com

369 * portal.azure.com

370 * microsoft.com

371 * [www.microsoft.com](http://www.microsoft.com)

372 * \*.microsoftonline.com

373 * packages.microsoft.com

374 * dotnet.microsoft.com

375 * dot.net

376 * visualstudio.com

377 * dev.azure.com

378 * \*.amazonaws.com

379 * \*.api.aws

380 * oracle.com

381 * [www.oracle.com](http://www.oracle.com)

382 * java.com

383 * [www.java.com](http://www.java.com)

384 * java.net

385 * [www.java.net](http://www.java.net)

386 * download.oracle.com

387 * yum.oracle.com

388 </Accordion>

389 

390 <Accordion title="Менеджеры пакетов JavaScript и Node">

391 * registry.npmjs.org

392 * [www.npmjs.com](http://www.npmjs.com)

393 * [www.npmjs.org](http://www.npmjs.org)

394 * npmjs.com

395 * npmjs.org

396 * yarnpkg.com

397 * registry.yarnpkg.com

398 </Accordion>

399 

400 <Accordion title="Менеджеры пакетов Python">

401 * pypi.org

402 * [www.pypi.org](http://www.pypi.org)

403 * files.pythonhosted.org

404 * pythonhosted.org

405 * test.pypi.org

406 * pypi.python.org

407 * pypa.io

408 * [www.pypa.io](http://www.pypa.io)

409 </Accordion>

410 

411 <Accordion title="Менеджеры пакетов Ruby">

412 * rubygems.org

413 * [www.rubygems.org](http://www.rubygems.org)

414 * api.rubygems.org

415 * index.rubygems.org

416 * ruby-lang.org

417 * [www.ruby-lang.org](http://www.ruby-lang.org)

418 * rubyforge.org

419 * [www.rubyforge.org](http://www.rubyforge.org)

420 * rubyonrails.org

421 * [www.rubyonrails.org](http://www.rubyonrails.org)

422 * rvm.io

423 * get.rvm.io

424 </Accordion>

425 

426 <Accordion title="Менеджеры пакетов Rust">

427 * crates.io

428 * [www.crates.io](http://www.crates.io)

429 * index.crates.io

430 * static.crates.io

431 * rustup.rs

432 * static.rust-lang.org

433 * [www.rust-lang.org](http://www.rust-lang.org)

434 </Accordion>

435 

436 <Accordion title="Менеджеры пакетов Go">

437 * proxy.golang.org

438 * sum.golang.org

439 * index.golang.org

440 * golang.org

441 * [www.golang.org](http://www.golang.org)

442 * goproxy.io

443 * pkg.go.dev

444 </Accordion>

445 

446 <Accordion title="Менеджеры пакетов JVM">

447 * maven.org

448 * repo.maven.org

449 * central.maven.org

450 * repo1.maven.org

451 * repo.maven.apache.org

452 * jcenter.bintray.com

453 * gradle.org

454 * [www.gradle.org](http://www.gradle.org)

455 * services.gradle.org

456 * plugins.gradle.org

457 * kotlinlang.org

458 * [www.kotlinlang.org](http://www.kotlinlang.org)

459 * spring.io

460 * repo.spring.io

461 </Accordion>

462 

463 <Accordion title="Другие менеджеры пакетов">

464 * packagist.org (PHP Composer)

465 * [www.packagist.org](http://www.packagist.org)

466 * repo.packagist.org

467 * nuget.org (.NET NuGet)

468 * [www.nuget.org](http://www.nuget.org)

469 * api.nuget.org

470 * pub.dev (Dart/Flutter)

471 * api.pub.dev

472 * hex.pm (Elixir/Erlang)

473 * [www.hex.pm](http://www.hex.pm)

474 * cpan.org (Perl CPAN)

475 * [www.cpan.org](http://www.cpan.org)

476 * metacpan.org

477 * [www.metacpan.org](http://www.metacpan.org)

478 * api.metacpan.org

479 * cocoapods.org (iOS/macOS)

480 * [www.cocoapods.org](http://www.cocoapods.org)

481 * cdn.cocoapods.org

482 * haskell.org

483 * [www.haskell.org](http://www.haskell.org)

484 * hackage.haskell.org

485 * swift.org

486 * [www.swift.org](http://www.swift.org)

487 </Accordion>

488 

489 <Accordion title="Дистрибутивы Linux">

490 * archive.ubuntu.com

491 * security.ubuntu.com

492 * ubuntu.com

493 * [www.ubuntu.com](http://www.ubuntu.com)

494 * \*.ubuntu.com

495 * ppa.launchpad.net

496 * launchpad.net

497 * [www.launchpad.net](http://www.launchpad.net)

498 * \*.nixos.org

499 </Accordion>

500 

501 <Accordion title="Инструменты разработки и платформы">

502 * dl.k8s.io (Kubernetes)

503 * pkgs.k8s.io

504 * k8s.io

505 * [www.k8s.io](http://www.k8s.io)

506 * releases.hashicorp.com (HashiCorp)

507 * apt.releases.hashicorp.com

508 * rpm.releases.hashicorp.com

509 * archive.releases.hashicorp.com

510 * hashicorp.com

511 * [www.hashicorp.com](http://www.hashicorp.com)

512 * repo.anaconda.com (Anaconda/Conda)

513 * conda.anaconda.org

514 * anaconda.org

515 * [www.anaconda.com](http://www.anaconda.com)

516 * anaconda.com

517 * continuum.io

518 * apache.org (Apache)

519 * [www.apache.org](http://www.apache.org)

520 * archive.apache.org

521 * downloads.apache.org

522 * eclipse.org (Eclipse)

523 * [www.eclipse.org](http://www.eclipse.org)

524 * download.eclipse.org

525 * nodejs.org (Node.js)

526 * [www.nodejs.org](http://www.nodejs.org)

527 * developer.apple.com

528 * developer.android.com

529 * pkg.stainless.com

530 * binaries.prisma.sh

531 </Accordion>

532 

533 <Accordion title="Облачные сервисы и мониторинг">

534 * statsig.com

535 * [www.statsig.com](http://www.statsig.com)

536 * api.statsig.com

537 * sentry.io

538 * \*.sentry.io

539 * downloads.sentry-cdn.com

540 * http-intake.logs.datadoghq.com

541 * \*.datadoghq.com

542 * \*.datadoghq.eu

543 * api.honeycomb.io

544 </Accordion>

545 

546 <Accordion title="Доставка контента и зеркала">

547 * sourceforge.net

548 * \*.sourceforge.net

549 * packagecloud.io

550 * \*.packagecloud.io

551 * fonts.googleapis.com

552 * fonts.gstatic.com

553 </Accordion>

554 

555 <Accordion title="Схема и конфигурация">

556 * json-schema.org

557 * [www.json-schema.org](http://www.json-schema.org)

558 * json.schemastore.org

559 * [www.schemastore.org](http://www.schemastore.org)

560 </Accordion>

561 

562 <Accordion title="Model Context Protocol">

563 * \*.modelcontextprotocol.io

564 </Accordion>

565</AccordionGroup>

566 

567## Перемещение задач между веб-интерфейсом и терминалом

568 

569Эти рабочие процессы требуют [Claude Code CLI](/ru/quickstart), вошедшего в один и тот же аккаунт claude.ai. Вы можете запускать новые облачные сессии из вашего терминала или вытягивать облачные сессии в ваш терминал для продолжения локально. Облачные сессии сохраняются даже если вы закроете ваш ноутбук, и вы можете мониторить их откуда угодно, включая мобильное приложение Claude.

570 

571<Note>

572 Из CLI передача сессии односторонняя: вы можете вытягивать облачные сессии в ваш терминал с помощью `--teleport`, но вы не можете отправить существующую сессию терминала в веб-интерфейс. Флаг `--remote` создаёт новую облачную сессию для вашего текущего репозитория. [Desktop app](/ru/desktop#continue-in-another-surface) предоставляет меню Continue in, которое может отправить локальную сессию в веб-интерфейс.

573</Note>

574 

575### От терминала к веб-интерфейсу

576 

577Запустите облачную сессию из командной строки с флагом `--remote`:

578 

579```bash theme={null}

580claude --remote "Fix the authentication bug in src/auth/login.ts"

581```

582 

583Это создаёт новую облачную сессию на claude.ai. Сессия клонирует удалённый GitHub вашего текущего каталога в вашей текущей ветке, поэтому сначала отправьте, если у вас есть локальные коммиты, так как виртуальная машина клонирует из GitHub, а не с вашей машины. `--remote` работает с одним репозиторием за раз. Задача запускается в облаке, пока вы продолжаете работать локально.

584 

585<Note>

586 `--remote` создаёт облачные сессии. `--remote-control` не связан: он предоставляет локальную сессию CLI для мониторинга из веб-интерфейса. См. [Remote Control](/ru/remote-control).

587</Note>

588 

589Используйте `/tasks` в Claude Code CLI для проверки прогресса, или откройте сессию на claude.ai или в мобильном приложении Claude для прямого взаимодействия. Оттуда вы можете управлять Claude, предоставлять обратную связь или отвечать на вопросы, как в любом другом разговоре.

590 

591#### Советы для облачных задач

592 

593**Планируйте локально, выполняйте удалённо**: для сложных задач начните Claude в режиме плана для совместной работы над подходом, затем отправьте работу в облако:

594 

595```bash theme={null}

596claude --permission-mode plan

597```

598 

599В режиме плана Claude читает файлы, запускает команды для исследования и предлагает план без редактирования исходного кода. Когда вы будете довольны, сохраните план в репозиторий, зафиксируйте и отправьте, чтобы облачная виртуальная машина могла его клонировать. Затем запустите облачную сессию для автономного выполнения:

600 

601```bash theme={null}

602claude --remote "Execute the migration plan in docs/migration-plan.md"

603```

604 

605Этот паттерн даёт вам контроль над стратегией, позволяя Claude выполняться автономно в облаке.

606 

607**Планируйте в облаке с ultraplan**: чтобы составить и просмотреть сам план в веб-сессии, используйте [ultraplan](/ru/ultraplan). Claude генерирует план на Claude Code в веб-интерфейсе, пока вы продолжаете работать, затем вы комментируете разделы в вашем браузере и выбираете выполнение удалённо или отправку плана обратно в ваш терминал.

608 

609**Запускайте задачи параллельно**: каждая команда `--remote` создаёт свою собственную облачную сессию, которая запускается независимо. Вы можете запустить несколько задач, и они все будут запускаться одновременно в отдельных сессиях:

610 

611```bash theme={null}

612claude --remote "Fix the flaky test in auth.spec.ts"

613claude --remote "Update the API documentation"

614claude --remote "Refactor the logger to use structured output"

615```

616 

617Мониторьте все сессии с помощью `/tasks` в Claude Code CLI. Когда сессия завершится, вы можете создать PR из веб-интерфейса или [телепортировать](#from-web-to-terminal) сессию в ваш терминал для продолжения работы.

618 

619#### Отправляйте локальные репозитории без GitHub

620 

621Когда вы запускаете `claude --remote` из репозитория, который не подключен к GitHub, Claude Code упаковывает ваш локальный репозиторий и загружает его непосредственно в облачную сессию. Пакет включает вашу полную историю репозитория во всех ветках, плюс любые незафиксированные изменения отслеживаемых файлов.

622 

623Этот fallback активируется автоматически, когда доступ GitHub недоступен. Чтобы принудительно использовать его даже когда GitHub подключен, установите `CCR_FORCE_BUNDLE=1`:

624 

625```bash theme={null}

626CCR_FORCE_BUNDLE=1 claude --remote "Run the test suite and fix any failures"

627```

628 

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

630 

631* Каталог должен быть git репозиторием с по крайней мере одним коммитом

632* Упакованный репозиторий должен быть менее 100 МБ. Большие репозитории переходят к упаковке только текущей ветки, затем к одному сжатому снимку рабочего дерева и не пройдут только если снимок всё ещё слишком большой

633* Неотслеживаемые файлы не включены; запустите `git add` на файлы, которые вы хотите, чтобы облачная сессия видела

634* Сессии, созданные из пакета, не могут отправляться обратно на удалённый сервер, если у вас также не настроена [аутентификация GitHub](#github-authentication-options)

635 

636### От веб-интерфейса к терминалу

637 

638Вытягивайте облачную сессию в ваш терминал, используя любое из этих:

639 

640* **Используя `--teleport`**: из командной строки запустите `claude --teleport` для интерактивного выбора сессии, или `claude --teleport <session-id>` для прямого возобновления конкретной сессии. Если у вас есть незафиксированные изменения, вам будет предложено сначала их спрятать.

641* **Используя `/teleport`**: внутри существующей сессии CLI запустите `/teleport` (или `/tp`) для открытия того же выбора сессии без перезагрузки Claude Code.

642* **Из `/tasks`**: запустите `/tasks` для просмотра ваших фоновых сессий, затем нажмите `t` для телепортирования в одну из них

643* **Из веб-интерфейса**: выберите **Open in CLI** для копирования команды, которую вы можете вставить в ваш терминал

644 

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

646 

647`--teleport` отличается от `--resume`. `--resume` переоткрывает разговор из локальной истории этой машины и не перечисляет облачные сессии; `--teleport` вытягивает облачную сессию и её ветку.

648 

649#### Требования для телепортирования

650 

651Телепортирование проверяет эти требования перед возобновлением сессии. Если какое-либо требование не выполнено, вы увидите ошибку или будете приглашены разрешить проблему.

652 

653| Требование | Детали |

654| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |

655| Чистое состояние git | Ваш рабочий каталог должен не иметь незафиксированных изменений. Телепортирование предложит вам спрятать изменения, если необходимо. |

656| Правильный репозиторий | Вы должны запустить `--teleport` из проверки того же репозитория, не форка. |

657| Доступность ветки | Ветка из облачной сессии должна быть отправлена на удалённый сервер. Телепортирование автоматически получает и проверяет её. |

658| Один и тот же аккаунт | Вы должны быть аутентифицированы на том же аккаунте claude.ai, который использовался в облачной сессии. |

659 

660#### `--teleport` недоступен

661 

662Телепортирование требует аутентификации подписки claude.ai. Если вы аутентифицированы через API ключ, Bedrock, Vertex AI или Microsoft Foundry, запустите `/login` для входа с вашим аккаунтом claude.ai вместо этого. Если вы уже вошли через claude.ai и `--teleport` всё ещё недоступен, ваша организация может отключить облачные сессии.

663 

664## Работа с сессиями

665 

666Сессии появляются в боковой панели на claude.ai/code. Оттуда вы можете просмотреть изменения, поделиться с товарищами по команде, архивировать завершённую работу или удалить сессии постоянно.

667 

668### Управление контекстом

669 

670Облачные сессии поддерживают [встроенные команды](/ru/commands), которые производят текстовый вывод. Команды, которые открывают интерактивный выбор терминала, такие как `/model` или `/config`, недоступны.

671 

672Для управления контекстом конкретно:

673 

674| Команда | Работает в облачных сессиях | Примечания |

675| :--------- | :-------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- |

676| `/compact` | Да | Суммирует разговор для освобождения контекста. Принимает опциональные инструкции фокуса, такие как `/compact keep the test output` |

677| `/context` | Да | Показывает, что в настоящее время находится в окне контекста |

678| `/clear` | Нет | Запустите новую сессию из боковой панели вместо этого |

679 

680Auto-compaction запускается автоматически, когда окно контекста приближается к ёмкости, так же как в CLI. Чтобы запустить его раньше, установите [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/ru/env-vars) в ваши [переменные окружения](#configure-your-environment). Например, `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70` компактирует при 70% ёмкости вместо значения по умолчанию \~95%. Чтобы изменить эффективный размер окна для расчётов компактирования, используйте [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/ru/env-vars).

681 

682[Subagents](/ru/sub-agents) работают так же, как они работают локально. Claude может порождать их с помощью инструмента Task для разгрузки исследования или параллельной работы в отдельное окно контекста, сохраняя основной разговор легче. Subagents определённые в `.claude/agents/` вашего репозитория подбираются автоматически. [Agent teams](/ru/agent-teams) отключены по умолчанию, но могут быть включены путём добавления `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` в ваши [переменные окружения](#configure-your-environment).

683 

684### Просмотр изменений

685 

686Каждая сессия показывает индикатор diff с добавленными и удалёнными строками, например `+42 -18`. Выберите его для открытия представления diff, оставьте встроенные комментарии на конкретных строках и отправьте их Claude с вашим следующим сообщением. См. [Review and iterate](/ru/web-quickstart#review-and-iterate) для полного пошагового руководства, включая создание PR. Чтобы Claude мониторил PR на сбои CI и комментарии рецензентов автоматически, см. [Auto-fix pull requests](#auto-fix-pull-requests).

687 

688### Совместное использование сессий

689 

690Чтобы поделиться сессией, переключите её видимость в соответствии с типами аккаунтов ниже. После этого поделитесь ссылкой сессии как есть. Получатели видят последнее состояние при открытии ссылки, но их представление не обновляется в реальном времени.

691 

692#### Совместное использование из аккаунта Enterprise или Team

693 

694Для аккаунтов Enterprise и Team два варианта видимости — **Private** и **Team**. Видимость Team делает сессию видимой для других членов вашей организации claude.ai. Проверка доступа к репозиторию включена по умолчанию на основе аккаунта GitHub, подключённого к аккаунту получателя. Отображаемое имя вашего аккаунта видно всем получателям с доступом. Сессии [Claude в Slack](/ru/slack) автоматически общаются с видимостью Team.

695 

696#### Совместное использование из аккаунта Max или Pro

697 

698Для аккаунтов Max и Pro два варианта видимости — **Private** и **Public**. Видимость Public делает сессию видимой для любого пользователя, вошедшего в claude.ai.

699 

700Проверьте вашу сессию на чувствительный контент перед совместным использованием. Сессии могут содержать код и учётные данные из приватных репозиториев GitHub. Проверка доступа к репозиторию не включена по умолчанию.

701 

702Чтобы требовать, чтобы получатели имели доступ к репозиторию, или скрыть своё имя из общих сессий, перейдите в Settings > Claude Code > Sharing settings.

703 

704### Архивируйте сессии

705 

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

707 

708Чтобы архивировать сессию, наведите курсор на сессию в боковой панели и выберите значок архива.

709 

710### Удаляйте сессии

711 

712Удаление сессии постоянно удаляет сессию и её данные. Это действие не может быть отменено. Вы можете удалить сессию двумя способами:

713 

714* **Из боковой панели**: отфильтруйте архивированные сессии, затем наведите курсор на сессию, которую вы хотите удалить, и выберите значок удаления

715* **Из меню сессии**: откройте сессию, выберите раскрывающееся меню рядом с названием сессии и выберите **Delete**

716 

717Вам будет предложено подтвердить перед удалением сессии.

718 

719## Auto-fix pull requests

720 

721Claude может наблюдать за pull request и автоматически реагировать на сбои CI и комментарии рецензентов. Claude подписывается на активность GitHub в PR, и когда проверка не пройдена или рецензент оставляет комментарий, Claude исследует и отправляет исправление, если оно очевидно.

722 

723<Note>

724 Auto-fix требует установки приложения Claude GitHub в вашем репозитории. Если вы ещё этого не сделали, установите его со [страницы приложения GitHub](https://github.com/apps/claude) или при появлении запроса во время [настройки](/ru/web-quickstart#connect-github-and-create-an-environment).

725</Note>

726 

727Есть несколько способов включить auto-fix в зависимости от того, откуда пришёл PR и какое устройство вы используете:

728 

729* **PR, созданные в Claude Code в веб-интерфейсе**: откройте строку статуса CI и выберите **Auto-fix**

730* **Из вашего терминала**: запустите [`/autofix-pr`](/ru/commands) на ветке PR. Claude Code обнаруживает открытый PR с помощью `gh`, порождает веб-сессию и включает auto-fix в один шаг

731* **Из мобильного приложения**: скажите Claude автоматически исправить PR, например "watch this PR and fix any CI failures or review comments"

732* **Любой существующий PR**: вставьте URL PR в сессию и скажите Claude автоматически исправить его

733 

734### Как Claude реагирует на активность PR

735 

736Когда auto-fix активен, Claude получает события GitHub для PR, включая новые комментарии рецензентов и сбои проверок CI. Для каждого события Claude исследует и решает, как действовать:

737 

738* **Очевидные исправления**: если Claude уверен в исправлении и оно не конфликтует с более ранними инструкциями, Claude вносит изменение, отправляет его и объясняет, что было сделано в сессии

739* **Неоднозначные запросы**: если комментарий рецензента может быть интерпретирован несколькими способами или касается чего-то архитектурно значимого, Claude спрашивает вас перед действием

740* **Дублирующиеся или события без действия**: если событие является дубликатом или не требует изменений, Claude отмечает это в сессии и продолжает

741 

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

743 

744<Warning>

745 Если ваш репозиторий использует автоматизацию, запускаемую комментариями, такую как Atlantis, Terraform Cloud или пользовательские GitHub Actions, которые запускаются на событиях `issue_comment`, имейте в виду, что Claude может отвечать от вашего имени, что может запустить эти рабочие процессы. Проверьте автоматизацию вашего репозитория перед включением auto-fix и рассмотрите отключение auto-fix для репозиториев, где комментарий PR может развернуть инфраструктуру или запустить привилегированные операции.

746</Warning>

747 

748## Безопасность и изоляция

749 

750Каждая облачная сессия отделена от вашей машины и от других сессий через несколько слоёв:

751 

752* **Изолированные виртуальные машины**: каждая сессия запускается в изолированной виртуальной машине, управляемой Anthropic

753* **Элементы управления сетевым доступом**: сетевой доступ ограничен по умолчанию и может быть отключен. При запуске с отключённым сетевым доступом Claude Code всё ещё может общаться с API Anthropic, что может позволить данным выйти из виртуальной машины.

754* **Защита учётных данных**: чувствительные учётные данные, такие как учётные данные git или ключи подписи, никогда не находятся в песочнице с Claude Code. Аутентификация обрабатывается через защищённый прокси с использованием ограниченных учётных данных.

755* **Безопасный анализ**: код анализируется и изменяется в изолированных виртуальных машинах перед созданием PR

756 

757## Ограничения

758 

759Перед тем как полагаться на облачные сессии для рабочего процесса, учтите эти ограничения:

760 

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

762* **Аутентификация репозитория**: вы можете перемещать сессии из веб-интерфейса в локальный только когда вы аутентифицированы на одном и том же аккаунте

763* **Ограничения платформы**: клонирование репозитория и создание pull request требуют GitHub. Самостоятельно размещённые экземпляры [GitHub Enterprise Server](/ru/github-enterprise-server) поддерживаются для планов Team и Enterprise. Репозитории GitLab, Bitbucket и другие не-GitHub репозитории могут быть отправлены в облачные сессии как [локальный пакет](#send-local-repositories-without-github), но сессия не может отправлять результаты обратно на удалённый сервер

764 

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

766 

767* [Ultraplan](/ru/ultraplan): составьте план в облачной сессии и просмотрите его в вашем браузере

768* [Ultrareview](/ru/ultrareview): запустите глубокий многоагентный обзор кода в облачной песочнице

769* [Routines](/ru/routines): автоматизируйте работу по расписанию, через вызов API или в ответ на события GitHub

770* [Конфигурация Hooks](/ru/hooks): запускайте скрипты при событиях жизненного цикла сессии

771* [Справочник параметров](/ru/settings): все параметры конфигурации

772* [Безопасность](/ru/security): гарантии изоляции и обработка данных

773* [Использование данных](/ru/data-usage): что Anthropic сохраняет из облачных сессий

claude-directory.md +1583 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Изучите директорию .claude

6 

7> Где Claude Code читает CLAUDE.md, settings.json, hooks, skills, commands, subagents, rules и auto memory. Изучите директорию .claude в вашем проекте и ~/.claude в вашей домашней директории.

8 

9export const ClaudeExplorer = () => {

10 const A = useMemo(() => ({href, children}) => <a href={href} style={{

11 color: 'var(--ce-accent)',

12 textDecoration: 'none',

13 borderBottom: '1px dotted var(--ce-accent)'

14 }}>{children}</a>, []);

15 const C = useMemo(() => ({children}) => <code style={{

16 fontFamily: 'var(--ce-mono)',

17 fontSize: '0.92em',

18 padding: '1px 4px',

19 borderRadius: '3px',

20 background: 'var(--ce-surface)',

21 border: '0.5px solid var(--ce-border-subtle)'

22 }}>{children}</code>, []);

23 const commandsNote = useMemo(() => <>Commands and skills are now the same mechanism. For new workflows, use <A href="/en/skills">skills/</A> instead: same <C>/name</C> invocation, plus you can bundle supporting files.</>, []);

24 const FILE_TREE = useMemo(() => ({

25 project: {

26 label: 'your-project/',

27 children: [{

28 id: 'claude-md',

29 label: 'CLAUDE.md',

30 type: 'file',

31 icon: 'md',

32 color: '#6A9BCC',

33 badge: 'committed',

34 oneLiner: 'Project instructions Claude reads 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.',

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="/en/skills">skill</A> or a path-scoped <A href="/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</>],

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 conventions

40 

41## Commands

42- Build: \`npm run build\`

43- Test: \`npm test\`

44- Lint: \`npm run lint\`

45 

46## Stack

47- TypeScript with strict mode

48- React 19, functional components only

49 

50## Rules

51- Named exports, never default exports

52- Tests live next to source: \`foo.ts\` -> \`foo.test.ts\`

53- All API routes return \`{ data, error }\` shape`,

54 docsLink: '/en/memory'

55 }, {

56 id: 'mcp-json',

57 label: '.mcp.json',

58 type: 'file',

59 icon: 'json',

60 color: '#9B7BC4',

61 badge: 'committed',

62 oneLiner: 'Project-scoped MCP servers, shared with your team',

63 when: <>Servers connect when the session begins. Tool schemas are deferred by default and load on demand via <A href="/en/mcp#scale-with-mcp-tool-search">tool search</A></>,

64 description: <>Configures Model Context Protocol (MCP) servers that give Claude access to external tools: databases, APIs, browsers, and more. This file holds the project-scoped servers your whole team uses. Personal servers you want to keep to yourself go in <C>~/.claude.json</C> instead.</>,

65 tips: [<>Use environment variable references for secrets: <C>{'${GITHUB_TOKEN}'}</C></>, <>Lives at the project root, not inside <C>.claude/</C></>, <>For servers only you need, run <C>claude mcp add --scope user</C>. This writes to <C>~/.claude.json</C> instead of <C>.mcp.json</C></>],

66 exampleIntro: <>This example configures the GitHub MCP server so Claude can read issues and open pull requests. The <C>{'${GITHUB_TOKEN}'}</C> reference is read from your shell environment when Claude Code starts the server, so the token never lands in the file.</>,

67 example: `{

68 "mcpServers": {

69 "github": {

70 "command": "npx",

71 "args": ["-y", "@modelcontextprotocol/server-github"],

72 "env": {

73 "GITHUB_TOKEN": "\${GITHUB_TOKEN}"

74 }

75 }

76 }

77}`,

78 docsLink: '/en/mcp'

79 }, {

80 id: 'worktreeinclude',

81 label: '.worktreeinclude',

82 type: 'file',

83 icon: 'md',

84 color: '#8FA876',

85 badge: 'committed',

86 oneLiner: 'Gitignored files to copy into new worktrees',

87 when: <>Read when Claude creates a git worktree via <C>--worktree</C>, the <C>EnterWorktree</C> tool, or subagent <C>isolation: worktree</C></>,

88 description: <>Lists gitignored files to copy from your main repository into each new worktree. Worktrees are fresh checkouts, so untracked files like <C>.env</C> are missing by default. Patterns here use <C>.gitignore</C> syntax. Only files that match a pattern and are also gitignored get copied, so tracked files are never duplicated.</>,

89 tips: [<>Lives at the project root, not inside <C>.claude/</C></>, <>Git-only: if you configure a <A href="/en/hooks#worktreecreate">WorktreeCreate hook</A> for a different VCS, this file is not read. Copy files inside your hook script instead</>, <>Also applies to parallel sessions in the <A href="/en/desktop#work-in-parallel-with-sessions">desktop app</A></>],

90 exampleIntro: 'This example copies your local environment files and a secrets config into every worktree Claude creates. Comments start with # and blank lines are ignored, same as .gitignore.',

91 example: `# Local environment

92.env

93.env.local

94 

95# API credentials

96config/secrets.json`,

97 docsLink: '/en/worktrees#copy-gitignored-files-into-worktrees'

98 }, {

99 id: 'dot-claude',

100 label: '.claude/',

101 type: 'folder',

102 icon: 'folder',

103 color: 'var(--ce-accent)',

104 oneLiner: 'Project-level configuration, rules, and extensions',

105 description: 'Everything Claude Code reads that is specific to this project. If you use git, commit most files here so your team shares them; a few, like settings.local.json, are automatically gitignored. Each file badge shows which.',

106 children: [{

107 id: 'settings-json',

108 label: 'settings.json',

109 type: 'file',

110 icon: 'json',

111 color: 'var(--ce-text-3)',

112 badge: 'committed',

113 oneLiner: 'Permissions, hooks, and configuration',

114 when: <>Overrides global <C>~/.claude/settings.json</C>. Local settings, CLI flags, and managed settings override this</>,

115 description: 'Settings that Claude Code applies directly. Permissions control which commands and tools Claude can use; hooks run your scripts at specific points in a session. Unlike CLAUDE.md, which Claude reads as guidance, these are enforced whether Claude follows them or not.',

116 contains: [<><A href="/en/permissions">permissions</A>: allow, deny, or prompt before Claude uses specific tools or commands</>, <><A href="/en/hooks">hooks</A>: run your own scripts on events like before a tool call or after a file edit</>, <><A href="/en/statusline">statusLine</A>: customize the line shown at the bottom while Claude works</>, <><A href="/en/settings#available-settings">model</A>: pick a default model for this project</>, <><A href="/en/settings#environment-variables">env</A>: environment variables set in every session</>, <><A href="/en/output-styles">outputStyle</A>: select a custom system-prompt style from output-styles/</>],

117 tips: [<>Bash permission patterns support wildcards: <C>Bash(npm test *)</C> matches any command starting with <C>npm test</C></>, <>Array settings like <C>permissions.allow</C> combine across all scopes; scalar settings like <C>model</C> use the most specific value</>],

118 exampleIntro: <>This example allows <C>npm test</C> and <C>npm run</C> commands without prompting, blocks <C>rm -rf</C>, and runs Prettier on files after Claude edits or writes them.</>,

119 example: `{

120 "permissions": {

121 "allow": [

122 "Bash(npm test *)",

123 "Bash(npm run *)"

124 ],

125 "deny": [

126 "Bash(rm -rf *)"

127 ]

128 },

129 "hooks": {

130 "PostToolUse": [{

131 "matcher": "Edit|Write",

132 "hooks": [{

133 "type": "command",

134 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"

135 }]

136 }]

137 }

138}`,

139 docsLink: '/en/settings'

140 }, {

141 id: 'settings-local-json',

142 label: 'settings.local.json',

143 type: 'file',

144 icon: 'json',

145 color: 'var(--ce-text-3)',

146 badge: 'gitignored',

147 oneLiner: 'Your personal settings overrides for this project',

148 when: 'Highest of the user-editable settings files; CLI flags and managed settings still take precedence',

149 description: 'Personal settings that take precedence over the project defaults. Same JSON format as settings.json, but not committed. Use this when you need different permissions or defaults than the team config.',

150 tips: [<>Same schema as settings.json. Array settings like <C>permissions.allow</C> combine across scopes; scalar settings like <C>model</C> use the local value</>, <>Claude Code adds this file to <C>~/.config/git/ignore</C> the first time it writes one. If you use a custom <C>core.excludesFile</C>, add the pattern there too. To share the ignore rule with your team, also add it to the project <C>.gitignore</C></>],

151 exampleIntro: 'This example adds Docker permissions on top of whatever the team settings.json allows.',

152 example: `{

153 "permissions": {

154 "allow": [

155 "Bash(docker *)"

156 ]

157 }

158}`,

159 docsLink: '/en/settings'

160 }, {

161 id: 'rules',

162 label: 'rules/',

163 type: 'folder',

164 icon: 'folder',

165 color: '#9B7BC4',

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</>,

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 a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/en/hooks">hooks</A> or <A href="/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'],

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

171 children: [{

172 id: 'rule-testing',

173 label: 'testing.md',

174 type: 'file',

175 icon: 'md',

176 color: '#9B7BC4',

177 badge: 'committed',

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

179 when: <>Loaded when Claude reads 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.</>,

181 example: `---

182paths:

183 - "**/*.test.ts"

184 - "**/*.test.tsx"

185---

186 

187# Testing Rules

188 

189- Use descriptive test names: "should [expected] when [condition]"

190- Mock external dependencies, not internal modules

191- Clean up side effects in afterEach`

192 }, {

193 id: 'rule-api',

194 label: 'api-design.md',

195 type: 'file',

196 icon: 'md',

197 color: '#9B7BC4',

198 badge: 'committed',

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

200 when: <>Loaded when Claude reads 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.</>,

202 example: `---

203paths:

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

205---

206 

207# API Design Rules

208 

209- All endpoints must validate input with Zod schemas

210- Return shape: { data: T } | { error: string }

211- Rate limit all public endpoints`

212 }]

213 }, {

214 id: 'skills',

215 label: 'skills/',

216 type: 'folder',

217 icon: 'folder',

218 color: '#D4A843',

219 oneLiner: 'Reusable prompts you or Claude invoke by name',

220 when: <>Invoked with <C>/skill-name</C> or when Claude matches the task to a skill</>,

221 description: <>Each skill is a folder with a SKILL.md file plus any supporting files it needs. By default, both you and Claude can invoke a skill. Use frontmatter to control that: <C>disable-model-invocation: true</C> for user-only workflows like <C>/deploy</C>, or <C>user-invocable: false</C> to hide from the <C>/</C> menu while Claude can still invoke it.</>,

222 tips: [<>Skills accept arguments: <C>/deploy staging</C> passes "staging" as <C>$ARGUMENTS</C>. Use <C>$0</C>, <C>$1</C>, and so on for positional access</>, <>The <C>description</C> frontmatter determines when Claude auto-invokes the skill</>, 'Bundle reference docs alongside SKILL.md. Claude knows the skill directory path and can read supporting files when you mention them'],

223 docsLink: '/en/skills',

224 children: [{

225 id: 'skill-review',

226 label: 'security-review/',

227 type: 'folder',

228 icon: 'folder',

229 color: '#D4A843',

230 oneLiner: 'A skill bundling SKILL.md with supporting files',

231 children: [{

232 id: 'skill-review-md',

233 label: 'SKILL.md',

234 type: 'file',

235 icon: 'md',

236 color: '#D4A843',

237 badge: 'committed',

238 oneLiner: 'Entrypoint: trigger, invocability, instructions',

239 when: <>User types <C>/security-review &lt;target&gt;</C>; Claude cannot auto-invoke this skill</>,

240 description: [<>This skill uses <C>disable-model-invocation: true</C> so only you can trigger it; Claude never invokes it on its own.</>, <>The <C>!`...`</C> line runs a shell command and injects its output into the prompt. <C>$ARGUMENTS</C> substitutes whatever you typed after the skill name. Claude sees the skill directory path, so mentioning a bundled file like checklist.md lets Claude read it.</>],

241 example: `---

242description: Reviews code changes for security vulnerabilities, authentication gaps, and injection risks

243disable-model-invocation: true

244argument-hint: <branch-or-path>

245---

246 

247## Diff to review

248 

249!\`git diff $ARGUMENTS\`

250 

251Audit the changes above for:

252 

2531. Injection vulnerabilities (SQL, XSS, command)

2542. Authentication and authorization gaps

2553. Hardcoded secrets or credentials

256 

257Use checklist.md in this skill directory for the full review checklist.

258 

259Report findings with severity ratings and remediation steps.`

260 }, {

261 id: 'skill-checklist',

262 label: 'checklist.md',

263 type: 'file',

264 icon: 'md',

265 color: '#D4A843',

266 badge: 'committed',

267 oneLiner: 'Supporting file bundled with the skill',

268 when: 'Claude reads it on demand while running the skill',

269 description: <>Skills can bundle any supporting files: reference docs, templates, scripts. The skill directory path is prepended to SKILL.md, so Claude can read bundled files by name. For scripts in bash injection commands, use the <C>{'${CLAUDE_SKILL_DIR}'}</C> placeholder.</>,

270 example: `# Security Review Checklist

271 

272## Input Validation

273- [ ] All user input sanitized before DB queries

274- [ ] File upload MIME types validated

275- [ ] Path traversal prevented on file operations

276 

277## Authentication

278- [ ] JWT tokens expire after 24 hours

279- [ ] API keys stored in environment variables

280- [ ] Passwords hashed with bcrypt or argon2`

281 }]

282 }]

283 }, {

284 id: 'commands',

285 label: 'commands/',

286 type: 'folder',

287 icon: 'folder',

288 color: '#788C5D',

289 oneLiner: <>Single-file prompts invoked with <C>/name</C></>,

290 note: commandsNote,

291 when: <>User types <C>/command-name</C></>,

292 description: <>A file at <C>commands/deploy.md</C> creates <C>/deploy</C> the same way a skill at <C>skills/deploy/SKILL.md</C> does, and both can be auto-invoked by Claude. Skills use a directory with SKILL.md, letting you bundle reference docs, templates, or scripts alongside the prompt.</>,

293 tips: [<>Use <C>$ARGUMENTS</C> in the file to accept parameters: <C>/fix-issue 123</C></>, 'If a skill and command share a name, the skill takes precedence', 'New commands should usually be skills instead; commands remain supported'],

294 docsLink: '/en/skills',

295 children: [{

296 id: 'cmd-example',

297 label: 'fix-issue.md',

298 type: 'file',

299 icon: 'md',

300 color: '#788C5D',

301 badge: 'committed',

302 oneLiner: <>Invoked as <C>/fix-issue &lt;number&gt;</C></>,

303 note: commandsNote,

304 description: [<>An example command for fixing a GitHub issue. Type <C>/fix-issue 123</C> and the <C>!`...`</C> line runs <C>gh issue view 123</C> in your shell, injecting the output into the prompt before Claude sees it.</>, <><C>$ARGUMENTS</C> substitutes whatever you typed after the command name. For positional access, use <C>$0</C> <C>$1</C> and so on.</>],

305 example: `---

306argument-hint: <issue-number>

307---

308 

309!\`gh issue view $ARGUMENTS\`

310 

311Investigate and fix the issue above.

312 

3131. Trace the bug to its root cause

3142. Implement the fix

3153. Write or update tests

3164. Summarize what you changed and why`

317 }]

318 }, {

319 id: 'output-styles',

320 label: 'output-styles/',

321 type: 'folder',

322 icon: 'folder',

323 color: '#5AA7A7',

324 oneLiner: 'Project-scoped output styles, if your team shares any',

325 when: 'Applied at session start when selected via the outputStyle setting',

326 description: <>Output styles are usually personal, so most live in <C>~/.claude/output-styles/</C>. Put one here if your team shares a style, like a review mode everyone uses. See <A href="#ce-global-output-styles">the Global tab</A> for the full explanation and example.</>,

327 docsLink: '/en/output-styles',

328 children: []

329 }, {

330 id: 'agents',

331 label: 'agents/',

332 type: 'folder',

333 icon: 'folder',

334 color: '#C46686',

335 oneLiner: 'Specialized subagents with their own context window',

336 when: 'Runs in its own context window when you or Claude invoke it',

337 description: 'Each markdown file defines a subagent with its own system prompt, tool access, and optionally its own model. Subagents run in a fresh context window, keeping the main conversation clean. Useful for parallel work or isolated tasks.',

338 tips: ['Each agent gets a fresh context window, separate from your main session', <>Restrict tool access per agent with the <C>tools:</C> frontmatter field</>, 'Type @ and pick an agent from the autocomplete to delegate directly'],

339 docsLink: '/en/sub-agents',

340 children: [{

341 id: 'agent-reviewer',

342 label: 'code-reviewer.md',

343 type: 'file',

344 icon: 'md',

345 color: '#C46686',

346 badge: 'committed',

347 oneLiner: 'Subagent for isolated code review',

348 when: 'Claude spawns it for review tasks, or you @-mention it from the autocomplete',

349 description: <>An example subagent restricted to read-only tools. The <C>description</C> frontmatter tells Claude when to delegate to it automatically; <C>tools:</C> limits it to Read, Grep, and Glob so it can inspect code but never edit. The body becomes the subagent's system prompt.</>,

350 example: `---

351name: code-reviewer

352description: Reviews code for correctness, security, and maintainability

353tools: Read, Grep, Glob

354---

355 

356You are a senior code reviewer. Review for:

357 

3581. Correctness: logic errors, edge cases, null handling

3592. Security: injection, auth bypass, data exposure

3603. Maintainability: naming, complexity, duplication

361 

362Every finding must include a concrete fix.`

363 }]

364 }, {

365 id: 'agent-memory',

366 label: 'agent-memory/',

367 type: 'folder',

368 icon: 'folder',

369 color: '#C46686',

370 badge: 'committed',

371 autogen: true,

372 oneLiner: 'Subagent persistent memory, separate from your main session auto memory',

373 when: 'First 200 lines (capped at 25KB) of MEMORY.md loaded into the subagent system prompt when it runs',

374 description: <>Subagents with <C>memory: project</C> in their frontmatter get a dedicated memory directory here. This is distinct from your <A href="/en/memory#auto-memory">main session auto memory</A> at <C>~/.claude/projects/</C>: each subagent reads and writes its own MEMORY.md, not yours.</>,

375 tips: [<>Only created for subagents that set the <C>memory:</C> frontmatter field</>, <>This directory holds project-scoped subagent memory, meant to be shared with your team. To keep memory out of version control use <C>memory: local</C>, which writes to <C>.claude/agent-memory-local/</C> instead. For cross-project memory use <C>memory: user</C>, which writes to <C>~/.claude/agent-memory/</C></>, <>The main session auto memory is a different feature; see <C>~/.claude/projects/</C> in the Global tab</>],

376 docsLink: '/en/sub-agents#enable-persistent-memory',

377 children: [{

378 id: 'agent-memory-sub',

379 label: '<agent-name>/',

380 type: 'folder',

381 icon: 'folder',

382 color: '#C46686',

383 autogen: true,

384 children: [{

385 id: 'agent-memory-md',

386 label: 'MEMORY.md',

387 type: 'file',

388 icon: 'md',

389 color: '#C46686',

390 badge: 'committed',

391 autogen: true,

392 oneLiner: 'The subagent writes and maintains this file automatically',

393 when: 'Loaded into the subagent system prompt when the subagent starts',

394 description: <>Works the same as your <A href="/en/memory#auto-memory">main auto memory</A>: the subagent creates and updates this file itself. You do not write it. The subagent reads it at the start of each task and writes back what it learns.</>,

395 example: `# code-reviewer memory

396 

397## Patterns seen

398- Project uses custom Result<T, E> type, not exceptions

399- Auth middleware expects Bearer token in Authorization header

400- Tests use factory functions in test/factories/

401 

402## Recurring issues

403- Missing null checks on API responses (src/api/*)

404- Unhandled promise rejections in background jobs`

405 }]

406 }]

407 }]

408 }]

409 },

410 global: {

411 label: '~/',

412 children: [{

413 id: 'claude-json',

414 label: '.claude.json',

415 type: 'file',

416 icon: 'json',

417 color: 'var(--ce-text-3)',

418 badge: 'local',

419 oneLiner: 'App state and UI preferences',

420 when: <>Read at session start for your preferences and MCP servers. Claude Code writes back to it when you change settings in <C>/config</C> or approve trust prompts</>,

421 description: <>Holds state that does not belong in settings.json: theme, OAuth session, per-project trust decisions, your personal MCP servers, and UI toggles. Mostly managed through <C>/config</C> rather than editing directly.</>,

422 tips: [<>IDE toggles like <C>autoConnectIde</C> and <C>externalEditorContext</C> live here, not in settings.json</>, <>The <C>projects</C> key tracks per-project state like trust-dialog acceptance and last-session metrics. Permission rules you approve in-session go to <C>.claude/settings.local.json</C> instead</>, <>MCP servers here are yours only: user scope applies across all projects, local scope is per-project but not committed. Team-shared servers go in <C>.mcp.json</C> at the project root instead</>],

423 example: `{

424 "autoConnectIde": true,

425 "externalEditorContext": true,

426 "mcpServers": {

427 "my-tools": {

428 "command": "npx",

429 "args": ["-y", "@example/mcp-server"]

430 }

431 }

432}`,

433 docsLink: '/en/settings#global-config-settings'

434 }, {

435 id: 'global-dot-claude',

436 label: '.claude/',

437 type: 'folder',

438 icon: 'folder',

439 color: 'var(--ce-accent)',

440 oneLiner: 'Your personal configuration across all projects',

441 description: 'The global counterpart to your project .claude/ directory. Files here apply to every project you work in and are never committed to any repository.',

442 children: [{

443 id: 'global-claude-md',

444 label: 'CLAUDE.md',

445 type: 'file',

446 icon: 'md',

447 color: '#6A9BCC',

448 badge: 'local',

449 oneLiner: 'Personal preferences across every project',

450 when: 'Loaded at the start of every session, in every project',

451 description: 'Your global instruction file. Loaded alongside the project CLAUDE.md at session start, so both are in context together. When instructions conflict, project-level instructions take priority. Keep this to preferences that apply everywhere: response style, commit format, personal conventions.',

452 tips: ['Keep it short since it loads into context for every project, alongside that project\'s own CLAUDE.md', 'Good for response style, commit format, and personal conventions'],

453 example: `# Global preferences

454 

455- Keep explanations concise

456- Use conventional commit format

457- Show the terminal command to verify changes

458- Prefer composition over inheritance`,

459 docsLink: '/en/memory'

460 }, {

461 id: 'global-settings',

462 label: 'settings.json',

463 type: 'file',

464 icon: 'json',

465 color: 'var(--ce-text-3)',

466 badge: 'local',

467 oneLiner: 'Default settings for all projects',

468 when: 'Your defaults. Project and local settings.json override any keys you also set there',

469 description: [<>Same keys as project <C>settings.json</C>: permissions, hooks, model, environment variables, and the rest. Put settings here that you want in every project, like permissions you always allow, a preferred model, or a notification hook that runs regardless of which project you're in.</>, <>Settings follow a precedence order: project <C>settings.json</C> overrides any matching keys you set here. This is different from CLAUDE.md, where global and project files are both loaded into context rather than merged key by key.</>],

470 example: `{

471 "permissions": {

472 "allow": [

473 "Bash(git log *)",

474 "Bash(git diff *)"

475 ]

476 }

477}`,

478 docsLink: '/en/settings'

479 }, {

480 id: 'keybindings',

481 label: 'keybindings.json',

482 type: 'file',

483 icon: 'json',

484 color: 'var(--ce-text-3)',

485 badge: 'local',

486 oneLiner: 'Custom keyboard shortcuts',

487 when: 'Read at session start and hot-reloaded when you edit the file',

488 description: <>Rebind keyboard shortcuts in the interactive CLI. Run <C>/keybindings</C> to create or open this file with a schema reference. Ctrl+C, Ctrl+D, Ctrl+M, and Caps Lock are reserved and cannot be rebound.</>,

489 exampleIntro: <>This example binds <C>Ctrl+E</C> to open your external editor and unbinds <C>Ctrl+U</C> by setting it to <C>null</C>. The <C>context</C> field scopes bindings to a specific part of the CLI, here the main chat input.</>,

490 example: `{

491 "$schema": "https://www.schemastore.org/claude-code-keybindings.json",

492 "$docs": "https://code.claude.com/docs/en/keybindings",

493 "bindings": [

494 {

495 "context": "Chat",

496 "bindings": {

497 "ctrl+e": "chat:externalEditor",

498 "ctrl+u": null

499 }

500 }

501 ]

502}`,

503 docsLink: '/en/keybindings'

504 }, {

505 id: 'themes',

506 label: 'themes/',

507 type: 'folder',

508 icon: 'folder',

509 color: '#5AA7A7',

510 oneLiner: 'Custom color themes',

511 when: <>Read at session start and hot-reloaded when files change. Listed in <C>/theme</C></>,

512 description: <>Each <C>.json</C> file defines a custom color theme: a built-in <C>base</C> preset plus an <C>overrides</C> map of color tokens. Create one interactively with <C>/theme</C> or write the JSON by hand. Selecting a custom theme stores <C>custom:&lt;slug&gt;</C> as your theme preference.</>,

513 example: `{

514 "name": "Dracula",

515 "base": "dark",

516 "overrides": {

517 "claude": "#bd93f9",

518 "error": "#ff5555",

519 "success": "#50fa7b"

520 }

521}`,

522 docsLink: '/en/terminal-config#create-a-custom-theme',

523 children: []

524 }, {

525 id: 'global-projects',

526 label: 'projects/',

527 type: 'folder',

528 icon: 'folder',

529 color: '#E8A45C',

530 autogen: true,

531 oneLiner: "Auto memory: Claude's notes to itself, per project",

532 when: 'MEMORY.md loaded at session start; topic files read on demand',

533 description: 'Auto memory lets Claude accumulate knowledge across sessions without you writing anything. Claude saves notes as it works: build commands, debugging insights, architecture notes. Each project gets its own memory directory keyed by the repository path.',

534 tips: [<>On by default. Toggle with <C>/memory</C> or <C>autoMemoryEnabled</C> in settings</>, 'MEMORY.md is the index loaded each session. The first 200 lines, or 25KB, whichever comes first, are read', 'Topic files like debugging.md are read on demand, not at startup', 'These are plain markdown. Edit or delete them anytime'],

535 docsLink: '/en/memory#auto-memory',

536 children: [{

537 id: 'memory-dir',

538 label: '<project>/memory/',

539 type: 'folder',

540 icon: 'folder',

541 color: '#E8A45C',

542 autogen: true,

543 oneLiner: "Claude's accumulated knowledge for one project",

544 children: [{

545 id: 'memory-md',

546 label: 'MEMORY.md',

547 type: 'file',

548 icon: 'md',

549 color: '#E8A45C',

550 badge: 'local',

551 autogen: true,

552 oneLiner: 'Claude writes and maintains this file automatically',

553 when: 'First 200 lines (capped at 25KB) loaded at session start',

554 description: 'Claude creates and updates this file as it works; you do not write it yourself. It acts as an index that Claude reads at the start of every session, pointing to topic files for detail. You can edit or delete it, but Claude will keep updating it.',

555 example: `# Memory Index

556 

557## Project

558- [build-and-test.md](build-and-test.md): npm run build (~45s), Vitest, dev server on 3001

559- [architecture.md](architecture.md): API client singleton, refresh-token auth

560 

561## Reference

562- [debugging.md](debugging.md): auth token rotation and DB connection troubleshooting`,

563 docsLink: '/en/memory'

564 }, {

565 id: 'memory-topic',

566 label: 'debugging.md',

567 type: 'file',

568 icon: 'md',

569 color: '#E8A45C',

570 badge: 'local',

571 autogen: true,

572 oneLiner: 'Topic notes Claude writes when MEMORY.md gets long',

573 when: 'Claude reads this when a related task comes up',

574 description: 'An example of a topic file Claude creates when MEMORY.md grows too long. Claude picks the filename based on what it splits out: debugging.md, architecture.md, build-commands.md, or similar. You never create these yourself. Claude reads a topic file back only when the current task relates to it.',

575 example: `---

576name: Debugging patterns

577description: Auth token rotation and database connection troubleshooting for this project

578type: reference

579---

580 

581## Auth Token Issues

582- Refresh token rotation: old token invalidated immediately

583- If 401 after refresh: check clock skew between client and server

584 

585## Database Connection Drops

586- Connection pool: max 10 in dev, 50 in prod

587- Always check \`docker compose ps\` first`

588 }]

589 }]

590 }, {

591 id: 'global-rules',

592 label: 'rules/',

593 type: 'folder',

594 icon: 'folder',

595 color: '#9B7BC4',

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

597 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

598 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.',

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

600 children: []

601 }, {

602 id: 'global-skills',

603 label: 'skills/',

604 type: 'folder',

605 icon: 'folder',

606 color: '#D4A843',

607 oneLiner: 'Personal skills available in every project',

608 when: <>Invoked with <C>/skill-name</C> in any project</>,

609 description: 'Skills you built for yourself that work everywhere. Same structure as project skills: each is a folder with SKILL.md, scoped to your user account instead of a single project.',

610 docsLink: '/en/skills',

611 children: []

612 }, {

613 id: 'global-commands',

614 label: 'commands/',

615 type: 'folder',

616 icon: 'folder',

617 color: '#788C5D',

618 oneLiner: 'Personal single-file commands available in every project',

619 note: commandsNote,

620 when: <>User types <C>/command-name</C> in any project</>,

621 description: 'Same as project commands/ but scoped to your user account. Each markdown file becomes a command available everywhere.',

622 docsLink: '/en/skills',

623 children: []

624 }, {

625 id: 'global-output-styles',

626 label: 'output-styles/',

627 type: 'folder',

628 icon: 'folder',

629 color: '#5AA7A7',

630 oneLiner: 'Custom system-prompt sections that adjust how Claude works',

631 when: 'Applied at session start when selected via the outputStyle setting',

632 description: [<>Each markdown file defines an output style: a section appended to the system prompt that, by default, also drops the built-in software-engineering task instructions. Use this to adapt Claude Code for uses beyond coding, or to add teaching or review modes.</>, <>Select a built-in or custom style with <C>/config</C> or the <C>outputStyle</C> key in settings. Styles here are available in every project; project-level styles with the same name take precedence.</>],

633 tips: ['Built-in styles Explanatory and Learning are included with Claude Code; custom styles go here', <>Set <C>keep-coding-instructions: true</C> in frontmatter to keep the default task instructions alongside your additions</>, 'Changes take effect on the next session since the system prompt is fixed at startup for caching'],

634 docsLink: '/en/output-styles',

635 children: [{

636 id: 'output-style-example',

637 label: 'teaching.md',

638 type: 'file',

639 icon: 'md',

640 color: '#5AA7A7',

641 badge: 'local',

642 oneLiner: 'Example style that adds explanations and leaves small changes for you',

643 when: <>Active when <C>outputStyle</C> in settings is set to <C>teaching</C></>,

644 description: <>This style appends instructions to the system prompt: Claude adds a "Why this approach" note after each task and leaves TODO(human) markers for changes under 10 lines instead of writing them itself. Select it by setting <C>outputStyle</C> to the filename without .md, or to the <C>name</C> field if you set one in frontmatter.</>,

645 example: `---

646description: Explains reasoning and asks you to implement small pieces

647keep-coding-instructions: true

648---

649 

650After completing each task, add a brief "Why this approach" note

651explaining the key design decision.

652 

653When a change is under 10 lines, ask the user to implement it

654themselves by leaving a TODO(human) marker instead of writing it.`

655 }]

656 }, {

657 id: 'global-agents',

658 label: 'agents/',

659 type: 'folder',

660 icon: 'folder',

661 color: '#C46686',

662 oneLiner: 'Personal subagents available in every project',

663 when: 'Claude delegates or you @-mention in any project',

664 description: 'Subagents defined here are available across all your projects. Same format as project agents.',

665 docsLink: '/en/sub-agents',

666 children: []

667 }, {

668 id: 'global-agent-memory',

669 label: 'agent-memory/',

670 type: 'folder',

671 icon: 'folder',

672 color: '#C46686',

673 autogen: true,

674 oneLiner: <>Persistent memory for subagents with <C>memory: user</C></>,

675 when: 'Loaded into the subagent system prompt when the subagent starts',

676 description: <>Subagents with <C>memory: user</C> in their frontmatter store knowledge here that persists across all projects. For project-scoped subagent memory, see <C>.claude/agent-memory/</C> instead.</>,

677 docsLink: '/en/sub-agents#enable-persistent-memory',

678 children: []

679 }]

680 }]

681 }

682 }), []);

683 const BADGE_STYLES = useMemo(() => ({

684 committed: {

685 bg: 'rgba(85,138,66,0.08)',

686 color: 'var(--ce-badge-committed)',

687 border: 'rgba(85,138,66,0.15)',

688 label: 'committed'

689 },

690 gitignored: {

691 bg: 'rgba(217,119,87,0.06)',

692 color: 'var(--ce-badge-gitignored)',

693 border: 'rgba(217,119,87,0.15)',

694 label: 'gitignored'

695 },

696 local: {

697 bg: 'rgba(115,114,108,0.06)',

698 color: 'var(--ce-badge-local)',

699 border: 'rgba(115,114,108,0.12)',

700 label: 'local only'

701 },

702 autogen: {

703 bg: 'rgba(232,164,92,0.1)',

704 color: 'var(--ce-badge-autogen)',

705 border: 'rgba(232,164,92,0.2)',

706 label: 'Claude writes'

707 }

708 }), []);

709 const allNodes = useMemo(() => {

710 const flatten = (nodes, acc, path, parentId) => {

711 for (const node of nodes) {

712 const nextPath = [...path, node.label];

713 acc[node.id] = {

714 ...node,

715 path: nextPath,

716 parentId

717 };

718 if (node.children) flatten(node.children, acc, nextPath, node.id);

719 }

720 return acc;

721 };

722 const project = flatten(FILE_TREE.project.children, {}, [FILE_TREE.project.label]);

723 const global = flatten(FILE_TREE.global.children, {}, [FILE_TREE.global.label]);

724 for (const id in project) project[id].root = 'project';

725 for (const id in global) global[id].root = 'global';

726 return {

727 ...project,

728 ...global

729 };

730 }, [FILE_TREE]);

731 const allFolderIds = useMemo(() => Object.keys(allNodes).filter(id => allNodes[id].type === 'folder'), [allNodes]);

732 const DEFAULT_EXPANDED = ['dot-claude', 'rules', 'skills', 'skill-review', 'commands', 'agents', 'agent-memory', 'agent-memory-sub', 'global-dot-claude', 'global-output-styles', 'global-projects', 'memory-dir'];

733 const [mounted, setMounted] = useState(false);

734 const [activeRoot, setActiveRoot] = useState('project');

735 const [selectedId, setSelectedId] = useState('claude-md');

736 const [expandedFolders, setExpandedFolders] = useState(() => new Set(DEFAULT_EXPANDED));

737 const [forceMobile, setForceMobile] = useState(false);

738 const [copiedId, setCopiedId] = useState(null);

739 const [isFullscreen, setIsFullscreen] = useState(false);

740 const copyTimeoutRef = useRef(null);

741 const rootRef = useRef(null);

742 useEffect(() => {

743 setMounted(true);

744 const applyHash = scroll => {

745 const hash = window.location.hash.slice(1);

746 if (!hash.startsWith('ce-')) return;

747 const id = hash.slice(3);

748 const node = allNodes[id];

749 if (!node) return;

750 setActiveRoot(node.root);

751 setSelectedId(id);

752 setExpandedFolders(new Set(allFolderIds));

753 if (scroll && rootRef.current) rootRef.current.scrollIntoView({

754 behavior: 'smooth',

755 block: 'start'

756 });

757 };

758 applyHash(false);

759 const onHashChange = () => applyHash(true);

760 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);

761 window.addEventListener('hashchange', onHashChange);

762 document.addEventListener('fullscreenchange', onFsChange);

763 return () => {

764 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

765 window.removeEventListener('hashchange', onHashChange);

766 document.removeEventListener('fullscreenchange', onFsChange);

767 };

768 }, []);

769 useEffect(() => {

770 if (!mounted || !rootRef.current) return;

771 const hash = window.location.hash.slice(1);

772 if (hash.startsWith('ce-') && allNodes[hash.slice(3)]) {

773 rootRef.current.scrollIntoView({

774 behavior: 'smooth',

775 block: 'start'

776 });

777 }

778 }, [mounted]);

779 if (!mounted) return null;

780 const selected = allNodes[selectedId];

781 const tree = FILE_TREE[activeRoot];

782 const isCopied = copiedId === selected.id;

783 const toggleFolder = id => {

784 const next = new Set(expandedFolders);

785 next.has(id) ? next.delete(id) : next.add(id);

786 setExpandedFolders(next);

787 };

788 const switchRoot = root => {

789 if (root === activeRoot) return;

790 setActiveRoot(root);

791 const firstId = FILE_TREE[root].children[0].id;

792 setSelectedId(firstId);

793 try {

794 history.replaceState(null, '', '#ce-' + firstId);

795 } catch (e) {}

796 };

797 const toggleFullscreen = () => {

798 if (!rootRef.current) return;

799 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});

800 };

801 const selectNode = n => {

802 setSelectedId(n.id);

803 if (n.type === 'folder' && !expandedFolders.has(n.id)) toggleFolder(n.id);

804 try {

805 history.replaceState(null, '', '#ce-' + n.id);

806 } catch (e) {}

807 };

808 const iconBtn = {

809 width: 28,

810 flexShrink: 0,

811 borderRadius: '6px',

812 border: 'none',

813 cursor: 'pointer',

814 background: 'transparent',

815 color: 'var(--ce-text-4)',

816 display: 'flex',

817 alignItems: 'center',

818 justifyContent: 'center'

819 };

820 const visibleFolderIds = allFolderIds.filter(id => allNodes[id].root === activeRoot);

821 const allExpanded = visibleFolderIds.every(id => expandedFolders.has(id));

822 const toggleAllFolders = () => {

823 const next = new Set(expandedFolders);

824 visibleFolderIds.forEach(id => allExpanded ? next.delete(id) : next.add(id));

825 setExpandedFolders(next);

826 };

827 const onTreeKeyDown = e => {

828 if (!['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(e.key)) return;

829 const visible = [];

830 const walk = nodes => {

831 for (const n of nodes) {

832 visible.push(n.id);

833 if (n.children && expandedFolders.has(n.id)) walk(n.children);

834 }

835 };

836 walk(tree.children);

837 const i = visible.indexOf(selectedId);

838 if (i === -1) return;

839 e.preventDefault();

840 if (e.key === 'ArrowDown' && i < visible.length - 1) selectNode(allNodes[visible[i + 1]]); else if (e.key === 'ArrowUp' && i > 0) selectNode(allNodes[visible[i - 1]]); else if (e.key === 'ArrowRight' && selected.type === 'folder') {

841 if (!expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.children && selected.children.length) selectNode(allNodes[selected.children[0].id]);

842 } else if (e.key === 'ArrowLeft') {

843 if (selected.type === 'folder' && expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.parentId) selectNode(allNodes[selected.parentId]);

844 }

845 };

846 const copyExample = (id, text) => {

847 const done = () => {

848 setCopiedId(id);

849 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

850 copyTimeoutRef.current = setTimeout(() => setCopiedId(null), 2000);

851 };

852 const fallback = () => {

853 const ta = document.createElement('textarea');

854 ta.value = text;

855 ta.style.position = 'fixed';

856 ta.style.opacity = '0';

857 document.body.appendChild(ta);

858 ta.select();

859 try {

860 if (document.execCommand('copy')) done();

861 } catch (e) {}

862 document.body.removeChild(ta);

863 };

864 if (navigator.clipboard) {

865 navigator.clipboard.writeText(text).then(done, fallback);

866 } else {

867 fallback();

868 }

869 };

870 const renderIcon = (icon, color, size) => {

871 const sz = size || 14;

872 if (icon === 'folder') {

873 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

874 <path d="M1.5 3.5a1 1 0 0 1 1-1h2.6l1 1.2h5.4a1 1 0 0 1 1 1v5.8a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1V3.5z" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

875 </svg>;

876 }

877 if (icon === 'json') {

878 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

879 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

880 <text x="7" y="9" fontSize="6" fontFamily="monospace" fill={color} textAnchor="middle" fontWeight="700">{'{}'}</text>

881 </svg>;

882 }

883 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

884 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

885 <line x1="4.5" y1="5" x2="9.5" y2="5" stroke={color} strokeWidth="1" />

886 <line x1="4.5" y1="7" x2="9.5" y2="7" stroke={color} strokeWidth="1" />

887 <line x1="4.5" y1="9" x2="8" y2="9" stroke={color} strokeWidth="1" />

888 </svg>;

889 };

890 const renderNode = (node, depth) => {

891 const isFolder = node.type === 'folder';

892 const isExpanded = expandedFolders.has(node.id);

893 const isSelected = selectedId === node.id;

894 return <div key={node.id}>

895 <button role="treeitem" tabIndex={-1} onClick={() => selectNode(node)} aria-selected={isSelected} aria-expanded={isFolder ? isExpanded : undefined} style={{

896 display: 'flex',

897 alignItems: 'center',

898 gap: '5px',

899 width: '100%',

900 padding: `4px 8px 4px ${8 + depth * 16}px`,

901 background: isSelected ? 'var(--ce-accent-bg)' : 'transparent',

902 borderTop: 'none',

903 borderRight: 'none',

904 borderBottom: 'none',

905 borderLeft: isSelected ? '2px solid var(--ce-accent)' : '2px solid transparent',

906 outline: 'none',

907 cursor: 'pointer',

908 textAlign: 'left',

909 fontFamily: 'var(--ce-mono)',

910 fontSize: '13.5px',

911 color: isSelected ? 'var(--ce-accent)' : 'var(--ce-text-2)',

912 fontWeight: isSelected ? 550 : 400,

913 transition: 'all 0.1s'

914 }}>

915 {isFolder ? <span onClick={e => {

916 e.stopPropagation();

917 toggleFolder(node.id);

918 }} style={{

919 fontSize: '14px',

920 color: 'var(--ce-text-4)',

921 width: '20px',

922 height: '20px',

923 display: 'inline-flex',

924 alignItems: 'center',

925 justifyContent: 'center',

926 cursor: 'pointer',

927 borderRadius: '4px',

928 marginLeft: '-6px',

929 flexShrink: 0

930 }} onMouseEnter={e => {

931 e.currentTarget.style.background = 'var(--ce-arrow-hover)';

932 e.currentTarget.style.color = 'var(--ce-text-2)';

933 }} onMouseLeave={e => {

934 e.currentTarget.style.background = 'transparent';

935 e.currentTarget.style.color = 'var(--ce-text-4)';

936 }}>{isExpanded ? '▾' : '▸'}</span> : <span style={{

937 width: '14px',

938 flexShrink: 0

939 }} />}

940 {renderIcon(node.icon, node.color)}

941 <span style={{

942 flex: 1,

943 overflow: 'hidden',

944 textOverflow: 'ellipsis',

945 whiteSpace: 'nowrap'

946 }}>{node.label}</span>

947 {node.badge && BADGE_STYLES[node.badge] && <span title={BADGE_STYLES[node.badge].label} style={{

948 width: 6,

949 height: 6,

950 borderRadius: '50%',

951 background: BADGE_STYLES[node.badge].color,

952 flexShrink: 0,

953 opacity: 0.7

954 }} />}

955 </button>

956 {isFolder && isExpanded && node.children && <div role="group">{node.children.map(child => renderNode(child, depth + 1))}</div>}

957 </div>;

958 };

959 return <>

960 <style>{`

961 .ce-root {

962 --ce-mono: var(--font-mono, ui-monospace, monospace);

963 --ce-accent: #D97757;

964 --ce-accent-bg: rgba(217,119,87,0.06);

965 --ce-accent-border: rgba(217,119,87,0.12);

966 --ce-bg: #fff;

967 --ce-surface: #FAFAF7;

968 --ce-surface-hover: #F0EEE6;

969 --ce-border: #E8E6DC;

970 --ce-border-subtle: #F0EEE6;

971 --ce-text: #141413;

972 --ce-text-2: #5E5D59;

973 --ce-text-3: #73726C;

974 --ce-text-4: #9C9A92;

975 --ce-text-5: #B8B6AE;

976 --ce-sep: #D1CFC5;

977 --ce-code-header: #F5F4ED;

978 --ce-code-bg: #1A1918;

979 --ce-arrow-hover: rgba(0,0,0,0.08);

980 --ce-badge-committed: #3d6b2e;

981 --ce-badge-gitignored: #b85c3a;

982 --ce-badge-local: #5e5d59;

983 --ce-badge-autogen: #b07520;

984 --ce-when-text: #4a7fb5;

985 }

986 .dark .ce-root {

987 --ce-bg: #1a1918;

988 --ce-surface: #232221;

989 --ce-surface-hover: #2e2d2b;

990 --ce-border: #3a3936;

991 --ce-border-subtle: #2e2d2b;

992 --ce-text: #e8e6dc;

993 --ce-text-2: #c4c2b8;

994 --ce-text-3: #9c9a92;

995 --ce-text-4: #73726c;

996 --ce-text-5: #5e5d59;

997 --ce-sep: #4a4946;

998 --ce-code-header: #2e2d2b;

999 --ce-code-bg: #0d0d0c;

1000 --ce-arrow-hover: rgba(255,255,255,0.08);

1001 --ce-badge-committed: #6fa85c;

1002 --ce-badge-gitignored: #e08a60;

1003 --ce-badge-local: #9c9a92;

1004 --ce-badge-autogen: #e8a45c;

1005 --ce-when-text: #8bb4e0;

1006 }

1007 .ce-mobile-fallback { display: none; border: 1px solid rgba(0,0,0,0.1); background: rgba(0,0,0,0.03); }

1008 .dark .ce-mobile-fallback { border-color: rgba(255,255,255,0.15); background: rgba(255,255,255,0.04); }

1009 @media (max-width: 700px) {

1010 .ce-root:not(.ce-force) { display: none !important; }

1011 .ce-mobile-fallback { display: block; }

1012 }

1013 `}</style>

1014 {!forceMobile && <div className="ce-mobile-fallback" style={{

1015 padding: '14px 16px',

1016 borderRadius: '8px',

1017 fontSize: '14px'

1018 }}>

1019 The interactive explorer works best on a larger screen. See the <a href="#file-reference" style={{

1020 color: '#D97757'

1021 }}>file reference table</a> below, or <button onClick={() => setForceMobile(true)} style={{

1022 border: 'none',

1023 background: 'none',

1024 padding: 0,

1025 color: '#D97757',

1026 textDecoration: 'underline',

1027 cursor: 'pointer',

1028 font: 'inherit'

1029 }}>show the explorer anyway</button>.

1030 </div>}

1031 <div ref={rootRef} className={forceMobile ? 'ce-root ce-force' : 'ce-root'} style={{

1032 borderRadius: isFullscreen ? 0 : '12px',

1033 border: '1px solid var(--ce-border)',

1034 background: 'var(--ce-bg)',

1035 display: 'flex',

1036 alignItems: 'stretch',

1037 overflow: 'hidden',

1038 fontFamily: 'var(--font-sans, -apple-system, sans-serif)',

1039 ...isFullscreen && ({

1040 height: '100vh'

1041 })

1042 }}>

1043 {}

1044 <div style={{

1045 width: 'min(240px, 35%)',

1046 minWidth: '180px',

1047 flexShrink: 0,

1048 borderRight: '1px solid var(--ce-border-subtle)',

1049 background: 'var(--ce-surface)',

1050 display: 'flex',

1051 flexDirection: 'column'

1052 }}>

1053 <div style={{

1054 padding: '8px 8px 4px',

1055 borderBottom: '1px solid var(--ce-border-subtle)',

1056 display: 'flex',

1057 gap: '4px'

1058 }}>

1059 {['project', 'global'].map(root => <button key={root} onClick={() => switchRoot(root)} style={{

1060 flex: 1,

1061 padding: '6px 0',

1062 borderRadius: '6px',

1063 border: 'none',

1064 cursor: 'pointer',

1065 fontFamily: 'var(--ce-mono)',

1066 fontSize: '11.5px',

1067 background: activeRoot === root ? 'var(--ce-accent-bg)' : 'transparent',

1068 color: activeRoot === root ? 'var(--ce-accent)' : 'var(--ce-text-4)',

1069 fontWeight: activeRoot === root ? 600 : 430

1070 }}>

1071 {root === 'project' ? 'Project' : 'Global (~/)'}

1072 </button>)}

1073 <button onClick={toggleAllFolders} title={allExpanded ? 'Collapse all' : 'Expand all'} style={{

1074 ...iconBtn,

1075 fontSize: 11

1076 }}>

1077 {allExpanded ? '⊟' : '⊞'}

1078 </button>

1079 <button onClick={toggleFullscreen} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'} style={{

1080 ...iconBtn,

1081 fontSize: 13

1082 }}>

1083 {isFullscreen ? '⤡' : '⛶'}

1084 </button>

1085 </div>

1086 <div role="tree" aria-label="Configuration files" tabIndex={0} onKeyDown={onTreeKeyDown} style={{

1087 padding: '6px 0',

1088 overflowY: 'auto',

1089 flex: 1,

1090 outline: 'none'

1091 }}>

1092 {tree.children.map(node => renderNode(node, 0))}

1093 </div>

1094 </div>

1095 

1096 {}

1097 <div style={{

1098 flex: 1,

1099 minWidth: 0,

1100 padding: '20px 24px',

1101 minHeight: '400px',

1102 overflowY: 'auto'

1103 }}>

1104 <span aria-live="polite" style={{

1105 position: 'absolute',

1106 width: 1,

1107 height: 1,

1108 overflow: 'hidden',

1109 clip: 'rect(0 0 0 0)'

1110 }}>{selected.label} selected</span>

1111 {}

1112 <div style={{

1113 fontFamily: 'var(--ce-mono)',

1114 fontSize: '11px',

1115 color: 'var(--ce-text-4)',

1116 marginBottom: '10px',

1117 cursor: 'default'

1118 }}>

1119 {selected.path.map((seg, i) => <span key={i}>

1120 <span style={{

1121 color: i === selected.path.length - 1 ? 'var(--ce-accent)' : 'var(--ce-text-4)'

1122 }}>{seg.replace(/\/$/, '')}</span>

1123 {i < selected.path.length - 1 && <span style={{

1124 color: 'var(--ce-sep)'

1125 }}> / </span>}

1126 </span>)}

1127 </div>

1128 

1129 {}

1130 <div style={{

1131 display: 'flex',

1132 alignItems: 'flex-start',

1133 gap: '10px',

1134 marginBottom: '10px'

1135 }}>

1136 <span style={{

1137 flexShrink: 0,

1138 display: 'flex'

1139 }}>{renderIcon(selected.icon, selected.color, 24)}</span>

1140 <div style={{

1141 flex: 1,

1142 minWidth: 0

1143 }}>

1144 <div style={{

1145 fontSize: '22px',

1146 fontWeight: 600,

1147 color: 'var(--ce-text)',

1148 letterSpacing: '-0.3px',

1149 lineHeight: '26px'

1150 }}>{selected.label}</div>

1151 {selected.oneLiner && <div style={{

1152 fontSize: '15px',

1153 color: 'var(--ce-text-3)',

1154 marginTop: '3px'

1155 }}>{selected.oneLiner}</div>}

1156 </div>

1157 <div style={{

1158 display: 'flex',

1159 gap: '4px',

1160 flexShrink: 0

1161 }}>

1162 {[selected.autogen && 'autogen', selected.badge].filter(Boolean).map(k => {

1163 const s = BADGE_STYLES[k];

1164 if (!s) return null;

1165 return <span key={k} style={{

1166 fontFamily: 'var(--ce-mono)',

1167 fontSize: '10px',

1168 fontWeight: 600,

1169 textTransform: 'uppercase',

1170 letterSpacing: '0.3px',

1171 padding: '2px 6px',

1172 borderRadius: '4px',

1173 background: s.bg,

1174 color: s.color,

1175 border: `0.5px solid ${s.border}`

1176 }}>{s.label}</span>;

1177 })}

1178 </div>

1179 </div>

1180 

1181 {}

1182 {selected.note && <div style={{

1183 padding: '10px 12px',

1184 borderRadius: '8px',

1185 marginBottom: '14px',

1186 background: 'rgba(217,119,87,0.06)',

1187 border: '1px solid rgba(217,119,87,0.2)',

1188 borderLeft: '3px solid var(--ce-accent)',

1189 fontSize: '15px',

1190 color: 'var(--ce-text-2)',

1191 lineHeight: 1.6

1192 }}>

1193 {selected.note}

1194 </div>}

1195 

1196 {}

1197 {selected.when && <div style={{

1198 padding: '8px 12px',

1199 borderRadius: '6px',

1200 background: 'rgba(106,155,204,0.06)',

1201 border: '0.5px solid rgba(106,155,204,0.12)',

1202 fontSize: '15px',

1203 color: 'var(--ce-when-text)',

1204 marginBottom: '16px'

1205 }}>

1206 <div style={{

1207 fontSize: '10px',

1208 fontWeight: 700,

1209 textTransform: 'uppercase',

1210 letterSpacing: '0.4px',

1211 opacity: 0.65,

1212 marginBottom: '3px'

1213 }}>When it loads</div>

1214 <div style={{

1215 fontWeight: 500

1216 }}>{selected.when}</div>

1217 </div>}

1218 

1219 {}

1220 {selected.description && <div style={{

1221 fontSize: '16px',

1222 color: 'var(--ce-text-2)',

1223 lineHeight: 1.65,

1224 marginBottom: '16px'

1225 }}>

1226 {Array.isArray(selected.description) ? selected.description.map((para, i) => <div key={i} style={{

1227 marginBottom: i < selected.description.length - 1 ? '12px' : 0

1228 }}>{para}</div>) : selected.description}

1229 </div>}

1230 

1231 {}

1232 {selected.contains && selected.contains.length > 0 && <div style={{

1233 marginBottom: '16px'

1234 }}>

1235 <div style={{

1236 fontSize: '11px',

1237 fontWeight: 700,

1238 color: 'var(--ce-text-4)',

1239 textTransform: 'uppercase',

1240 letterSpacing: '0.4px',

1241 marginBottom: '8px'

1242 }}>Common keys</div>

1243 {selected.contains.map((item, i) => <div key={i} style={{

1244 display: 'flex',

1245 gap: '7px',

1246 fontSize: '15px',

1247 color: 'var(--ce-text-2)',

1248 lineHeight: 1.5,

1249 marginBottom: '5px'

1250 }}>

1251 <span style={{

1252 fontSize: '7px',

1253 color: 'var(--ce-text-4)',

1254 marginTop: '6px'

1255 }}>●</span>

1256 <span>{item}</span>

1257 </div>)}

1258 </div>}

1259 

1260 {}

1261 {selected.tips && selected.tips.length > 0 && <div style={{

1262 padding: '12px 14px',

1263 borderRadius: '8px',

1264 background: 'var(--ce-surface)',

1265 border: '1px solid var(--ce-border-subtle)',

1266 marginBottom: '16px'

1267 }}>

1268 <div style={{

1269 fontSize: '11px',

1270 fontWeight: 700,

1271 color: 'var(--ce-accent)',

1272 textTransform: 'uppercase',

1273 letterSpacing: '0.4px',

1274 marginBottom: '6px'

1275 }}>Tips</div>

1276 {selected.tips.map((tip, i) => <div key={i} style={{

1277 display: 'flex',

1278 gap: '7px',

1279 fontSize: '14.5px',

1280 color: 'var(--ce-text-2)',

1281 marginBottom: i < selected.tips.length - 1 ? '5px' : 0

1282 }}>

1283 <span style={{

1284 fontSize: '7px',

1285 color: 'var(--ce-accent)',

1286 marginTop: '6px'

1287 }}>●</span>

1288 <span>{tip}</span>

1289 </div>)}

1290 </div>}

1291 

1292 {}

1293 {selected.example && <div style={{

1294 marginBottom: '16px'

1295 }}>

1296 {selected.exampleIntro && <div style={{

1297 fontSize: '15px',

1298 color: 'var(--ce-text-2)',

1299 lineHeight: 1.6,

1300 marginBottom: '10px'

1301 }}>

1302 {selected.exampleIntro}

1303 </div>}

1304 <div style={{

1305 display: 'flex',

1306 justifyContent: 'space-between',

1307 alignItems: 'center',

1308 padding: '6px 10px',

1309 background: 'var(--ce-code-header)',

1310 border: '1px solid var(--ce-border)',

1311 borderRadius: '8px 8px 0 0'

1312 }}>

1313 <span style={{

1314 fontFamily: 'var(--ce-mono)',

1315 fontSize: '11px',

1316 fontWeight: 600,

1317 color: 'var(--ce-text-3)'

1318 }}>{selected.label}</span>

1319 <button onClick={() => copyExample(selected.id, selected.example)} style={{

1320 padding: '3px 8px',

1321 borderRadius: '4px',

1322 fontSize: '11px',

1323 fontWeight: 600,

1324 cursor: 'pointer',

1325 transition: 'all 0.15s',

1326 background: isCopied ? 'rgba(85,138,66,0.08)' : 'var(--ce-code-header)',

1327 border: isCopied ? '0.5px solid rgba(85,138,66,0.2)' : '0.5px solid var(--ce-border)',

1328 color: isCopied ? '#558A42' : 'var(--ce-text-3)'

1329 }}>

1330 {isCopied ? '✓ Copied' : 'Copy'}

1331 </button>

1332 </div>

1333 <pre style={{

1334 margin: 0,

1335 padding: '12px 14px',

1336 background: 'var(--ce-code-bg)',

1337 color: '#E8E6DC',

1338 fontFamily: 'var(--ce-mono)',

1339 fontSize: '13px',

1340 lineHeight: 1.65,

1341 borderRadius: '0 0 8px 8px',

1342 overflowX: 'auto',

1343 whiteSpace: 'pre'

1344 }}>{selected.example}</pre>

1345 </div>}

1346 

1347 {}

1348 {selected.docsLink && <a href={selected.docsLink} style={{

1349 display: 'inline-flex',

1350 padding: '5px 12px',

1351 borderRadius: '6px',

1352 background: 'var(--ce-accent-bg)',

1353 border: '1px solid var(--ce-accent-border)',

1354 color: 'var(--ce-accent)',

1355 fontSize: '12px',

1356 fontWeight: 600,

1357 textDecoration: 'none'

1358 }}>Full docs →</a>}

1359 

1360 {}

1361 {selected.children && selected.children.length > 0 && <div style={{

1362 marginTop: '20px'

1363 }}>

1364 <div style={{

1365 fontSize: '11px',

1366 fontWeight: 700,

1367 color: 'var(--ce-text-4)',

1368 textTransform: 'uppercase',

1369 letterSpacing: '0.4px',

1370 marginBottom: '8px'

1371 }}>Contents</div>

1372 <div style={{

1373 display: 'flex',

1374 flexDirection: 'column',

1375 gap: '4px'

1376 }}>

1377 {selected.children.map(child => <button key={child.id} onClick={() => selectNode(child)} style={{

1378 display: 'flex',

1379 alignItems: 'center',

1380 gap: '8px',

1381 padding: '6px 8px',

1382 width: '100%',

1383 background: 'var(--ce-surface)',

1384 borderRadius: '6px',

1385 border: 'none',

1386 cursor: 'pointer',

1387 textAlign: 'left',

1388 transition: 'background 0.1s'

1389 }} onMouseEnter={e => e.currentTarget.style.background = 'var(--ce-surface-hover)'} onMouseLeave={e => e.currentTarget.style.background = 'var(--ce-surface)'}>

1390 {renderIcon(child.icon, child.color, 13)}

1391 <span style={{

1392 fontFamily: 'var(--ce-mono)',

1393 fontSize: '12px',

1394 color: 'var(--ce-text-2)'

1395 }}>{child.label}</span>

1396 {child.oneLiner && <span style={{

1397 fontSize: '11px',

1398 color: 'var(--ce-text-4)',

1399 overflow: 'hidden',

1400 textOverflow: 'ellipsis',

1401 whiteSpace: 'nowrap'

1402 }}>{child.oneLiner}</span>}

1403 </button>)}

1404 </div>

1405 </div>}

1406 </div>

1407 </div>

1408 </>;

1409};

1410 

1411Claude Code читает инструкции, параметры, skills, subagents и память из директории вашего проекта и из `~/.claude` в вашей домашней директории. Зафиксируйте файлы проекта в git, чтобы поделиться ими с вашей командой; файлы в `~/.claude` — это личная конфигурация, которая применяется ко всем вашим проектам.

1412 

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

1414 

1415Большинство пользователей редактируют только `CLAUDE.md` и `settings.json`. Остальная часть директории опциональна: добавляйте skills, rules или subagents по мере необходимости.

1416 

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

1418 

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

1420 

1421<ClaudeExplorer />

1422 

1423## Что не показано

1424 

1425Обозреватель охватывает файлы, которые вы создаёте и редактируете. Несколько связанных файлов находятся в других местах:

1426 

1427| Файл | Местоположение | Назначение |

1428| ----------------------- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1429| `managed-settings.json` | Системный уровень, варьируется в зависимости от ОС | Параметры, установленные предприятием, которые вы не можете переопределить. См. [параметры, управляемые сервером](/ru/server-managed-settings). |

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

1431| Установленные plugins | `~/.claude/plugins` | Клонированные маркетплейсы, установленные версии plugins и данные для каждого plugin, управляемые командами `claude plugin`. Сиротские версии удаляются через 7 дней после обновления или удаления plugin. См. [кэширование plugins](/ru/plugins-reference#plugin-caching-and-file-resolution). |

1432 

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

1434 

1435## Выберите правильный файл

1436 

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

1438 

1439| Вы хотите | Редактировать | Область | Справочник |

1440| :---------------------------------------------------------------------- | :---------------------------------------- | :------------------- | :------------------------------------------------- |

1441| Дать Claude контекст проекта и соглашения | `CLAUDE.md` | проект или глобально | [Memory](/ru/memory) |

1442| Разрешить или заблокировать определённые вызовы инструментов | `settings.json` `permissions` или `hooks` | проект или глобально | [Permissions](/ru/permissions), [Hooks](/ru/hooks) |

1443| Запустить скрипт до или после вызовов инструментов | `settings.json` `hooks` | проект или глобально | [Hooks](/ru/hooks) |

1444| Установить переменные окружения для сеанса | `settings.json` `env` | проект или глобально | [Settings](/ru/settings#available-settings) |

1445| Сохранить личные переопределения вне git | `settings.local.json` | только проект | [Области параметров](/ru/settings#settings-files) |

1446| Добавить подсказку или возможность, которую вы вызываете с `/name` | `skills/<name>/SKILL.md` | проект или глобально | [Skills](/ru/skills) |

1447| Определить специализированный subagent с его собственными инструментами | `agents/*.md` | проект или глобально | [Subagents](/ru/sub-agents) |

1448| Подключить внешние инструменты через MCP | `.mcp.json` | только проект | [MCP](/ru/mcp) |

1449| Изменить способ форматирования ответов Claude | `output-styles/*.md` | проект или глобально | [Output styles](/ru/output-styles) |

1450 

1451## Справочник файлов

1452 

1453Эта таблица перечисляет каждый файл, который охватывает обозреватель. Файлы с областью действия проекта находятся в вашем репозитории под `.claude/` (или в корне для `CLAUDE.md`, `.mcp.json` и `.worktreeinclude`). Файлы с глобальной областью действия находятся в `~/.claude/` и применяются ко всем проектам.

1454 

1455<Note>

1456 Несколько вещей могут переопределить то, что вы поместили в эти файлы:

1457 

1458 * [Управляемые параметры](/ru/server-managed-settings), развёрнутые вашей организацией, имеют приоритет над всем остальным

1459 * Флаги CLI, такие как `--permission-mode` или `--settings`, переопределяют `settings.json` для этого сеанса

1460 * Некоторые переменные окружения имеют приоритет над их эквивалентным параметром, но это варьируется: проверьте [справочник переменных окружения](/ru/env-vars) для каждого из них

1461 

1462 См. [приоритет параметров](/ru/settings#settings-precedence) для полного порядка.

1463</Note>

1464 

1465Нажмите на имя файла, чтобы открыть этот узел в обозревателе выше.

1466 

1467| Файл | Область | Зафиксировать | Что он делает | Справочник |

1468| --------------------------------------------------- | ------------------ | ------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------- |

1469| [`CLAUDE.md`](#ce-claude-md) | Проект и глобально | ✓ | Инструкции, загруженные каждый сеанс | [Memory](/ru/memory) |

1470| [`rules/*.md`](#ce-rules) | Проект и глобально | ✓ | Инструкции с областью действия темы, опционально с ограничением по пути | [Rules](/ru/memory#organize-rules-with-claude/rules/) |

1471| [`settings.json`](#ce-settings-json) | Проект и глобально | ✓ | Разрешения, hooks, переменные окружения, значения по умолчанию модели | [Settings](/ru/settings) |

1472| [`settings.local.json`](#ce-settings-local-json) | Только проект | | Ваши личные переопределения, автоматически добавлены в .gitignore | [Области параметров](/ru/settings#settings-files) |

1473| [`.mcp.json`](#ce-mcp-json) | Только проект | ✓ | Серверы MCP, общие для команды | [Области MCP](/ru/mcp#mcp-installation-scopes) |

1474| [`.worktreeinclude`](#ce-worktreeinclude) | Только проект | ✓ | Файлы, игнорируемые Git, для копирования в новые worktrees | [Worktrees](/ru/common-workflows#copy-gitignored-files-to-worktrees) |

1475| [`skills/<name>/SKILL.md`](#ce-skills) | Проект и глобально | ✓ | Переиспользуемые подсказки, вызываемые с `/name` или автоматически вызываемые | [Skills](/ru/skills) |

1476| [`commands/*.md`](#ce-commands) | Проект и глобально | ✓ | Подсказки в одном файле; тот же механизм, что и skills | [Skills](/ru/skills) |

1477| [`output-styles/*.md`](#ce-output-styles) | Проект и глобально | ✓ | Пользовательские разделы системной подсказки | [Output styles](/ru/output-styles) |

1478| [`agents/*.md`](#ce-agents) | Проект и глобально | ✓ | Определения subagents с их собственной подсказкой и инструментами | [Subagents](/ru/sub-agents) |

1479| [`agent-memory/<name>/`](#ce-agent-memory) | Проект и глобально | ✓ | Постоянная память для subagents | [Постоянная память](/ru/sub-agents#enable-persistent-memory) |

1480| [`~/.claude.json`](#ce-claude-json) | Только глобально | | Состояние приложения, OAuth, переключатели UI, личные серверы MCP | [Глобальная конфигурация](/ru/settings#global-config-settings) |

1481| [`projects/<project>/memory/`](#ce-global-projects) | Только глобально | | Auto memory: заметки Claude самому себе между сеансами | [Auto memory](/ru/memory#auto-memory) |

1482| [`keybindings.json`](#ce-keybindings) | Только глобально | | Пользовательские сочетания клавиш | [Keybindings](/ru/keybindings) |

1483| [`themes/*.json`](#ce-themes) | Только глобально | | Пользовательские цветовые темы | [Пользовательские темы](/ru/terminal-config#create-a-custom-theme) |

1484 

1485## Устранение неполадок конфигурации

1486 

1487Если параметр, hook или файл не вступает в силу, см. [Отладка вашей конфигурации](/ru/debug-your-config) для команд проверки и таблицы поиска по симптомам.

1488 

1489## Данные приложения

1490 

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

1492 

1493### Автоматически очищается

1494 

1495Файлы в путях ниже удаляются при запуске, как только им исполняется больше [`cleanupPeriodDays`](/ru/settings#available-settings). По умолчанию это 30 дней.

1496 

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

1498| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |

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

1500| `projects/<project>/<session>/tool-results/` | Большие выходные данные инструмента разлиты в отдельные файлы |

1501| `file-history/<session>/` | Снимки файлов перед редактированием, которые Claude изменил, используемые для [восстановления checkpoint](/ru/checkpointing) |

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

1503| `debug/` | Журналы отладки для каждого сеанса, написанные только при запуске с `--debug` или запуске `/debug` |

1504| `paste-cache/`, `image-cache/` | Содержимое больших вставок и прикреплённых изображений |

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

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

1507| `shell-snapshots/` | Захваченное окружение оболочки, используемое инструментом Bash. Удаляется при чистом выходе. Очистка удаляет любые оставшиеся после сбоя. |

1508| `backups/` | Временные копии `~/.claude.json`, сделанные перед миграциями конфигурации |

1509 

1510### Сохраняется до удаления вами

1511 

1512Следующие пути не охватываются автоматической очисткой и сохраняются неопределённо долго.

1513 

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

1515| --------------------- | -------------------------------------------------------------------------------------------------------------- |

1516| `history.jsonl` | Каждая подсказка, которую вы ввели, с временной меткой и путём проекта. Используется для отзыва стрелки вверх. |

1517| `stats-cache.json` | Агрегированные подсчёты токенов и затрат, показанные `/usage` |

1518| `todos/` | Устаревшие списки задач для каждого сеанса. Больше не записываются текущими версиями; безопасно удалять. |

1519 

1520Другие небольшие файлы кэша и блокировки появляются в зависимости от того, какие функции вы используете, и безопасны для удаления.

1521 

1522### Хранилище простого текста

1523 

1524Стенограммы и история не зашифрованы в покое. Разрешения файлов ОС — единственная защита. Если инструмент читает файл `.env` или команда выводит учётные данные, это значение записывается в `projects/<project>/<session>.jsonl`. Чтобы снизить риск:

1525 

1526* Снизьте `cleanupPeriodDays`, чтобы сократить время хранения стенограмм

1527* Установите переменную окружения [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/ru/env-vars), чтобы пропустить запись стенограмм и истории подсказок в любом режиме. В неинтерактивном режиме вы можете вместо этого передать `--no-session-persistence` вместе с `-p` или установить `persistSession: false` в Agent SDK.

1528* Используйте [правила разрешений](/ru/permissions) для запрета чтения файлов учётных данных

1529 

1530### Очистить локальные данные

1531 

1532Запустите `claude project purge`, чтобы удалить состояние, которое Claude Code хранит для одного проекта:

1533 

1534* Стенограммы и автоматическую память под `projects/`

1535* Записи `tasks/`, `debug/` и `file-history/` для каждого сеанса

1536* Соответствующие строки подсказок в `history.jsonl`

1537* Запись проекта в `~/.claude.json`

1538 

1539Команда выводит полный план удаления и запрашивает подтверждение перед удалением чего-либо.

1540 

1541Просмотрите план без удаления чего-либо:

1542 

1543```bash theme={null}

1544claude project purge ~/work/my-repo --dry-run

1545```

1546 

1547Удалите с одним запросом подтверждения:

1548 

1549```bash theme={null}

1550claude project purge ~/work/my-repo

1551```

1552 

1553Опустите путь, чтобы выбрать проект из интерактивного списка.

1554 

1555Пропустите запрос подтверждения для использования в скриптах:

1556 

1557```bash theme={null}

1558claude project purge ~/work/my-repo --yes

1559```

1560 

1561Передайте `--all` вместо пути, чтобы очистить состояние для каждого проекта одновременно, что удаляет `history.jsonl` полностью, а не фильтрует его. Передайте `-i`, чтобы пройти через план удаления по одному элементу за раз.

1562 

1563Команда оставляет `shell-snapshots/` и `backups/` в покое, потому что они не ограничены проектом, и предупреждает о них в выводе плана. Она выходит со статусом 1, если никакое состояние не соответствует заданному пути.

1564 

1565Вы также можете удалить любой из путей данных приложения выше вручную. Новые сеансы не затронуты. Таблица ниже показывает, что вы потеряете для прошлых сеансов.

1566 

1567| Удалить | Вы потеряете |

1568| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |

1569| `~/.claude/projects/` | Возобновление, продолжение и перемотка для прошлых сеансов |

1570| `~/.claude/history.jsonl` | Отзыв подсказки стрелки вверх |

1571| `~/.claude/file-history/` | Восстановление checkpoint для прошлых сеансов |

1572| `~/.claude/stats-cache.json` | Исторические итоги, показанные `/usage` |

1573| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/paste-cache/`, `~/.claude/image-cache/`, `~/.claude/session-env/`, `~/.claude/tasks/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Ничего, видимого пользователю |

1574| `~/.claude/todos/` | Ничего. Устаревшая директория, не записываемая текущими версиями. |

1575 

1576Не удаляйте `~/.claude.json`, `~/.claude/settings.json` или `~/.claude/plugins/`: они содержат вашу аутентификацию, предпочтения и установленные plugins.

1577 

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

1579 

1580* [Управляйте памятью Claude](/ru/memory): пишите и организуйте CLAUDE.md, rules и auto memory

1581* [Настройте параметры](/ru/settings): установите разрешения, hooks, переменные окружения и значения по умолчанию модели

1582* [Создавайте skills](/ru/skills): создавайте переиспользуемые подсказки и рабочие процессы

1583* [Настройте subagents](/ru/sub-agents): определите специализированные агенты с их собственным контекстом

cli-reference.md +129 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Справочник CLI

6 

7> Полный справочник по интерфейсу командной строки Claude Code, включая команды и флаги.

8 

9## Команды CLI

10 

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

12 

13| Команда | Описание | Пример |

14| :------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------- |

15| `claude` | Запустить интерактивный сеанс | `claude` |

16| `claude "query"` | Запустить интерактивный сеанс с начальным запросом | `claude "explain this project"` |

17| `claude -p "query"` | Запрос через SDK, затем выход | `claude -p "explain this function"` |

18| `cat file \| claude -p "query"` | Обработка переданного содержимого | `cat logs.txt \| claude -p "explain"` |

19| `claude -c` | Продолжить самую последнюю беседу в текущем каталоге | `claude -c` |

20| `claude -c -p "query"` | Продолжить через SDK | `claude -c -p "Check for type errors"` |

21| `claude -r "<session>" "query"` | Возобновить сеанс по ID или имени | `claude -r "auth-refactor" "Finish this PR"` |

22| `claude update` | Обновить до последней версии | `claude update` |

23| `claude install [version]` | Установить или переустановить собственный двоичный файл. Принимает версию, такую как `2.1.118`, или `stable`, или `latest`. См. [Установить конкретную версию](/ru/setup#install-a-specific-version) | `claude install stable` |

24| `claude auth login` | Войти в свою учетную запись Anthropic. Используйте `--email` для предварительного заполнения адреса электронной почты, `--sso` для принудительной аутентификации SSO и `--console` для входа с помощью Anthropic Console для выставления счетов за использование API вместо подписки Claude | `claude auth login --console` |

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

26| `claude auth status` | Показать статус аутентификации в формате JSON. Используйте `--text` для удобочитаемого вывода. Выходит с кодом 0, если вы вошли, 1, если нет | `claude auth status` |

27| `claude agents` | Список всех настроенных [subagents](/ru/sub-agents), сгруппированных по источнику | `claude agents` |

28| `claude auto-mode defaults` | Вывести встроенные правила классификатора [auto mode](/ru/permission-modes#eliminate-prompts-with-auto-mode) в формате JSON. Используйте `claude auto-mode config` для просмотра вашей эффективной конфигурации с применяемыми параметрами | `claude auto-mode defaults > rules.json` |

29| `claude mcp` | Настроить серверы Model Context Protocol (MCP) | См. [документацию Claude Code MCP](/ru/mcp). |

30| `claude plugin` | Управлять Claude Code [plugins](/ru/plugins). Псевдоним: `claude plugins`. См. [справочник plugins](/ru/plugins-reference#cli-commands-reference) для подкоманд | `claude plugin install code-review@claude-plugins-official` |

31| `claude project purge [path]` | Удалить все локальное состояние Claude Code для проекта: стенограммы, списки задач, журналы отладки, историю редактирования файлов, строки истории подсказок и запись проекта в `~/.claude.json`. Опустите `[path]` для выбора из интерактивного списка. Флаги: `--dry-run` для предпросмотра, `-y`/`--yes` для пропуска подтверждения, `-i`/`--interactive` для подтверждения каждого элемента, `--all` для каждого проекта. См. [Очистить локальные данные](/ru/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |

32| `claude remote-control` | Запустить сервер [Remote Control](/ru/remote-control) для управления Claude Code из Claude.ai или приложения Claude. Работает в режиме сервера (без локального интерактивного сеанса). См. [флаги режима сервера](/ru/remote-control#start-a-remote-control-session) | `claude remote-control --name "My Project"` |

33| `claude setup-token` | Создать долгоживущий OAuth токен для CI и скриптов. Выводит токен в терминал без сохранения. Требует подписку Claude. См. [Создать долгоживущий токен](/ru/authentication#generate-a-long-lived-token) | `claude setup-token` |

34| `claude ultrareview [target]` | Запустить [ultrareview](/ru/ultrareview#run-ultrareview-non-interactively) неинтерактивно. Выводит результаты в stdout и выходит с кодом 0 при успехе или 1 при ошибке. Используйте `--json` для необработанного полезного груза и `--timeout <minutes>` для переопределения 30-минутного значения по умолчанию | `claude ultrareview 1234 --json` |

35 

36Если вы неправильно введете подкоманду, Claude Code предложит ближайшее совпадение и выйдет без запуска сеанса. Например, `claude udpate` выводит `Did you mean claude update?`.

37 

38## Флаги CLI

39 

40Настройте поведение Claude Code с помощью этих флагов командной строки. `claude --help` не выводит каждый флаг, поэтому отсутствие флага в `--help` не означает, что он недоступен.

41 

42| Флаг | Описание | Пример |

43| :---------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- |

44| `--add-dir` | Добавить дополнительные рабочие каталоги для Claude для чтения и редактирования файлов. Предоставляет доступ к файлам; большинство конфигурации `.claude/` [не обнаруживается](/ru/permissions#additional-directories-grant-file-access-not-configuration) из этих каталогов. Проверяет, что каждый путь существует как каталог | `claude --add-dir ../apps ../lib` |

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

46| `--agents` | Определить пользовательские subagents динамически через JSON. Использует те же имена полей, что и subagent [frontmatter](/ru/sub-agents#supported-frontmatter-fields), плюс поле `prompt` для инструкций агента | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |

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

48| `--allowedTools` | Инструменты, которые выполняются без запроса разрешения. См. [синтаксис правила разрешения](/ru/settings#permission-rule-syntax) для сопоставления шаблонов. Чтобы ограничить доступные инструменты, используйте `--tools` вместо этого | `"Bash(git log *)" "Bash(git diff *)" "Read"` |

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

50| `--append-system-prompt-file` | Загрузить дополнительный текст системного приглашения из файла и добавить к приглашению по умолчанию | `claude --append-system-prompt-file ./extra-rules.txt` |

51| `--bare` | Минимальный режим: пропустить автоматическое обнаружение hooks, skills, plugins, MCP серверов, автоматической памяти и CLAUDE.md, чтобы скриптовые вызовы начинались быстрее. Claude имеет доступ к инструментам Bash, чтения файлов и редактирования файлов. Устанавливает [`CLAUDE_CODE_SIMPLE`](/ru/env-vars). См. [bare mode](/ru/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` |

52| `--betas` | Заголовки бета-версии для включения в запросы API (только для пользователей API-ключей) | `claude --betas interleaved-thinking` |

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

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

55| `--continue`, `-c` | Загрузить самую последнюю беседу в текущем каталоге. Включает сеансы, которые добавили этот каталог с помощью `/add-dir` | `claude --continue` |

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

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

58| `--debug` | Включить режим отладки с дополнительной фильтрацией категорий (например, `"api,hooks"` или `"!statsig,!file"`) | `claude --debug "api,mcp"` |

59| `--debug-file <path>` | Записать журналы отладки в конкретный путь файла. Неявно включает режим отладки. Имеет приоритет над `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |

60| `--disable-slash-commands` | Отключить все skills и команды для этого сеанса | `claude --disable-slash-commands` |

61| `--disallowedTools` | Инструменты, которые удаляются из контекста модели и не могут быть использованы | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

62| `--effort` | Установить [уровень усилий](/ru/model-config#adjust-effort-level) для текущего сеанса. Опции: `low`, `medium`, `high`, `xhigh`, `max`; доступные уровни зависят от модели. Область действия сеанса и не сохраняется в параметры | `claude --effort high` |

63| `--enable-auto-mode` | {/* max-version: 2.1.110 */}Удалено в v2.1.111. Auto mode теперь находится в цикле `Shift+Tab` по умолчанию; используйте `--permission-mode auto` для запуска в нем | `claude --permission-mode auto` |

64| `--exclude-dynamic-system-prompt-sections` | Переместить разделы для каждой машины из системного приглашения (рабочий каталог, информация об окружении, пути памяти, статус git) в первое пользовательское сообщение. Улучшает повторное использование prompt-cache на разных пользователях и машинах, запускающих одну и ту же задачу. Применяется только с системным приглашением по умолчанию; игнорируется, когда установлены `--system-prompt` или `--system-prompt-file`. Используйте с `-p` для скриптовых многопользовательских рабочих нагрузок | `claude -p --exclude-dynamic-system-prompt-sections "query"` |

65| `--fallback-model` | Включить автоматический переход на указанную модель, когда модель по умолчанию перегружена (только режим печати) | `claude -p --fallback-model sonnet "query"` |

66| `--fork-session` | При возобновлении создать новый ID сеанса вместо повторного использования исходного (используйте с `--resume` или `--continue`) | `claude --resume abc123 --fork-session` |

67| `--from-pr` | Возобновить сеансы, связанные с конкретным pull request. Принимает номер PR, URL GitHub или GitHub Enterprise PR, URL GitLab merge request или URL Bitbucket pull request. Сеансы автоматически связываются при создании Claude pull request | `claude --from-pr 123` |

68| `--ide` | Автоматически подключиться к IDE при запуске, если доступна ровно одна действительная IDE | `claude --ide` |

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

70| `--init-only` | Запустить [Setup](/ru/hooks#setup) и `SessionStart` hooks, затем выйти без запуска беседы | `claude --init-only` |

71| `--include-hook-events` | Включить все события жизненного цикла hook в выходной поток. Требует `--output-format stream-json` | `claude -p --output-format stream-json --include-hook-events "query"` |

72| `--include-partial-messages` | Включить частичные события потоковой передачи в вывод. Требует `--print` и `--output-format stream-json` | `claude -p --output-format stream-json --include-partial-messages "query"` |

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

74| `--json-schema` | Получить проверенный вывод JSON, соответствующий JSON Schema после завершения рабочего процесса агента (только режим печати, см. [структурированные выходы](/ru/agent-sdk/structured-outputs)) | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |

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

76| `--max-budget-usd` | Максимальная сумма в долларах для расходования на вызовы API перед остановкой (только режим печати) | `claude -p --max-budget-usd 5.00 "query"` |

77| `--max-turns` | Ограничить количество агентских ходов (только режим печати). Выходит с ошибкой при достижении лимита. По умолчанию нет лимита | `claude -p --max-turns 3 "query"` |

78| `--mcp-config` | Загрузить MCP серверы из JSON файлов или строк (разделенные пробелом) | `claude --mcp-config ./mcp.json` |

79| `--model` | Устанавливает модель для текущего сеанса с псевдонимом для последней модели (`sonnet` или `opus`) или полным именем модели | `claude --model claude-sonnet-4-6` |

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

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

82| `--no-session-persistence` | Отключить сохранение сеанса, чтобы сеансы не сохранялись на диск и не могли быть возобновлены (только режим печати) | `claude -p --no-session-persistence "query"` |

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

84| `--permission-mode` | Начать в указанном [режиме разрешения](/ru/permission-modes). Принимает `default`, `acceptEdits`, `plan`, `auto`, `dontAsk` или `bypassPermissions`. Переопределяет `defaultMode` из файлов параметров | `claude --permission-mode plan` |

85| `--permission-prompt-tool` | Указать инструмент MCP для обработки запросов разрешения в неинтерактивном режиме | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

86| `--plugin-dir` | Загрузить plugins из каталога только для этого сеанса. Каждый флаг принимает один путь. Повторите флаг для нескольких каталогов: `--plugin-dir A --plugin-dir B` | `claude --plugin-dir ./my-plugins` |

87| `--print`, `-p` | Вывести ответ без интерактивного режима (см. [документацию Agent SDK](/ru/agent-sdk/overview) для деталей программного использования) | `claude -p "query"` |

88| `--remote` | Создать новый [веб-сеанс](/ru/claude-code-on-the-web) на claude.ai с предоставленным описанием задачи | `claude --remote "Fix the login bug"` |

89| `--remote-control`, `--rc` | Запустить интерактивный сеанс с включенным [Remote Control](/ru/remote-control#start-a-remote-control-session), чтобы вы также могли управлять им из claude.ai или приложения Claude. Опционально передайте имя для сеанса | `claude --remote-control "My Project"` |

90| `--remote-control-session-name-prefix <prefix>` | Префикс для автоматически генерируемых имен сеансов [Remote Control](/ru/remote-control) при отсутствии явного имени. По умолчанию используется имя хоста вашей машины, создавая имена вроде `myhost-graceful-unicorn`. Установите `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` для того же эффекта | `claude remote-control --remote-control-session-name-prefix dev-box` |

91| `--replay-user-messages` | Повторно отправить пользовательские сообщения из stdin обратно на stdout для подтверждения. Требует `--input-format stream-json` и `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --replay-user-messages` |

92| `--resume`, `-r` | Возобновить конкретный сеанс по ID или имени, или показать интерактивный выбор для выбора сеанса. Включает сеансы, которые добавили этот каталог с помощью `/add-dir` | `claude --resume auth-refactor` |

93| `--session-id` | Использовать конкретный ID сеанса для беседы (должен быть действительным UUID) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |

94| `--setting-sources` | Разделенный запятыми список источников параметров для загрузки (`user`, `project`, `local`) | `claude --setting-sources user,project` |

95| `--settings` | Путь к файлу параметров JSON или строка JSON для загрузки дополнительных параметров | `claude --settings ./settings.json` |

96| `--strict-mcp-config` | Использовать только MCP серверы из `--mcp-config`, игнорируя все остальные конфигурации MCP | `claude --strict-mcp-config --mcp-config ./mcp.json` |

97| `--system-prompt` | Заменить весь системный запрос пользовательским текстом | `claude --system-prompt "You are a Python expert"` |

98| `--system-prompt-file` | Загрузить системный запрос из файла, заменяя приглашение по умолчанию | `claude --system-prompt-file ./custom-prompt.txt` |

99| `--teleport` | Возобновить [веб-сеанс](/ru/claude-code-on-the-web) в вашем локальном терминале | `claude --teleport` |

100| `--teammate-mode` | Установить способ отображения товарищей по [команде агентов](/ru/agent-teams): `auto` (по умолчанию), `in-process` или `tmux`. См. [выбор режима отображения](/ru/agent-teams#choose-a-display-mode) | `claude --teammate-mode in-process` |

101| `--tmux` | Создать сеанс tmux для worktree. Требует `--worktree`. Использует встроенные панели iTerm2, если доступны; передайте `--tmux=classic` для традиционного tmux | `claude -w feature-auth --tmux` |

102| `--tools` | Ограничить, какие встроенные инструменты может использовать Claude. Используйте `""` для отключения всех, `"default"` для всех или имена инструментов, такие как `"Bash,Edit,Read"` | `claude --tools "Bash,Edit,Read"` |

103| `--verbose` | Включить подробное логирование, показывает полный вывод по ходам | `claude --verbose` |

104| `--version`, `-v` | Вывести номер версии | `claude -v` |

105| `--worktree`, `-w` | Запустить Claude в изолированном [git worktree](/ru/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) в `<repo>/.claude/worktrees/<name>`. Если имя не указано, оно генерируется автоматически | `claude -w feature-auth` |

106 

107### Флаги системного приглашения

108 

109Claude Code предоставляет четыре флага для настройки системного приглашения. Все четыре работают как в интерактивном, так и в неинтерактивном режимах.

110 

111| Флаг | Поведение | Пример |

112| :---------------------------- | :---------------------------------------------------- | :------------------------------------------------------ |

113| `--system-prompt` | Заменяет весь приглашение по умолчанию | `claude --system-prompt "You are a Python expert"` |

114| `--system-prompt-file` | Заменяет содержимым файла | `claude --system-prompt-file ./prompts/review.txt` |

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

116| `--append-system-prompt-file` | Добавляет содержимое файла к приглашению по умолчанию | `claude --append-system-prompt-file ./style-rules.txt` |

117 

118`--system-prompt` и `--system-prompt-file` являются взаимоисключающими. Флаги добавления можно комбинировать с любым флагом замены.

119 

120Для большинства случаев используйте флаг добавления. Добавление сохраняет встроенные возможности Claude Code при добавлении ваших требований. Используйте флаг замены только когда вам нужен полный контроль над системным приглашением.

121 

122## См. также

123 

124* [Расширение Chrome](/ru/chrome) - Веб-автоматизация и веб-тестирование

125* [Интерактивный режим](/ru/interactive-mode) - Сочетания клавиш, режимы ввода и интерактивные функции

126* [Руководство быстрого старта](/ru/quickstart) - Начало работы с Claude Code

127* [Общие рабочие процессы](/ru/common-workflows) - Продвинутые рабочие процессы и шаблоны

128* [Параметры](/ru/settings) - Опции конфигурации

129* [Документация Agent SDK](/ru/agent-sdk/overview) - Программное использование и интеграции

code-review.md +279 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Code Review

6 

7> Настройте автоматизированные проверки PR, которые выявляют логические ошибки, уязвимости безопасности и регрессии с помощью многоагентного анализа всей вашей кодовой базы

8 

9<Note>

10 Code Review находится в исследовательском предпросмотре и доступен для подписок [Team и Enterprise](https://claude.ai/admin-settings/claude-code). Он недоступен для организаций с включённым [Zero Data Retention](/ru/zero-data-retention).

11</Note>

12 

13Code Review анализирует ваши pull-запросы GitHub и публикует результаты в виде встроенных комментариев на строках кода, где были обнаружены проблемы. Группа специализированных агентов изучает изменения кода в контексте всей вашей кодовой базы, ища логические ошибки, уязвимости безопасности, нарушенные граничные случаи и тонкие регрессии.

14 

15Результаты помечаются по степени серьёзности и не одобряют и не блокируют ваш PR, поэтому существующие рабочие процессы проверки остаются неизменными. Вы можете настроить, что Claude помечает, добавив файл `CLAUDE.md` или `REVIEW.md` в ваш репозиторий.

16 

17Чтобы запустить Claude в собственной инфраструктуре CI вместо этого управляемого сервиса, см. [GitHub Actions](/ru/github-actions) или [GitLab CI/CD](/ru/gitlab-ci-cd). Для репозиториев на самостоятельно размещённом экземпляре GitHub см. [GitHub Enterprise Server](/ru/github-enterprise-server).

18 

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

20 

21* [Как работают проверки](#how-reviews-work)

22* [Настройка](#set-up-code-review)

23* [Ручной запуск проверок](#manually-trigger-reviews) с помощью `@claude review` и `@claude review once`

24* [Настройка проверок](#customize-reviews) с помощью `CLAUDE.md` и `REVIEW.md`

25* [Цены](#pricing)

26* [Устранение неполадок](#troubleshooting) при сбое запусков и отсутствии комментариев

27 

28## Как работают проверки

29 

30После того как администратор [включит Code Review](#set-up-code-review) для вашей организации, проверки запускаются при открытии PR, при каждом push или при ручном запросе в зависимости от настроенного поведения репозитория. Комментарий `@claude review` [запускает проверки на PR](#manually-trigger-reviews) в любом режиме.

31 

32Когда запускается проверка, несколько агентов параллельно анализируют diff и окружающий код на инфраструктуре Anthropic. Каждый агент ищет другой класс проблем, затем этап проверки проверяет кандидатов на соответствие фактическому поведению кода, чтобы отфильтровать ложные срабатывания. Результаты дедублицируются, ранжируются по степени серьёзности и публикуются в виде встроенных комментариев на конкретных строках, где были обнаружены проблемы, с кратким резюме в теле проверки. Если проблемы не найдены, Claude публикует краткий подтверждающий комментарий на PR.

33 

34Проверки масштабируются по стоимости в зависимости от размера и сложности PR, в среднем завершаясь за 20 минут. Администраторы могут отслеживать активность проверок и расходы через [панель аналитики](#view-usage).

35 

36### Уровни серьёзности

37 

38Каждый результат помечается уровнем серьёзности:

39 

40| Маркер | Серьёзность | Значение |

41| :----- | :----------- | :-------------------------------------------------------------------- |

42| 🔴 | Important | Ошибка, которую следует исправить перед слиянием |

43| 🟡 | Nit | Незначительная проблема, стоит исправить, но не блокирует |

44| 🟣 | Pre-existing | Ошибка, которая существует в кодовой базе, но не была введена этим PR |

45 

46Результаты включают свёртываемый раздел расширенного рассуждения, который вы можете развернуть, чтобы понять, почему Claude пометил проблему и как она проверила проблему.

47 

48### Оценка и ответ на результаты

49 

50Каждый комментарий проверки от Claude поступает с уже прикреплёнными 👍 и 👎, поэтому обе кнопки появляются в пользовательском интерфейсе GitHub для одноклассного рейтинга. Нажмите 👍, если результат был полезен, или 👎, если он был неправильным или шумным. Anthropic собирает количество реакций после слияния PR и использует их для настройки рецензента. Реакции не запускают повторную проверку и не изменяют ничего на PR.

51 

52Ответ на встроенный комментарий не побуждает Claude ответить или обновить PR. Чтобы действовать на основе результата, исправьте код и push. Если PR подписан на проверки, запускаемые при push, следующий запуск разрешает поток при исправлении проблемы. Чтобы запросить свежую проверку без push, прокомментируйте `@claude review once` как [комментарий верхнего уровня PR](#manually-trigger-reviews).

53 

54### Вывод проверки

55 

56Помимо встроенных комментариев проверки, каждая проверка заполняет проверку **Claude Code Review**, которая появляется рядом с вашими проверками CI. Разверните её ссылку **Details**, чтобы увидеть сводку каждого результата в одном месте, отсортированную по степени серьёзности:

57 

58| Серьёзность | Файл:Строка | Проблема |

59| ------------ | ------------------------- | ------------------------------------------------------------------------- |

60| 🔴 Important | `src/auth/session.ts:142` | Обновление токена гонится с выходом, оставляя активными устаревшие сеансы |

61| 🟡 Nit | `src/auth/session.ts:88` | `parseExpiry` молча возвращает 0 при неправильном вводе |

62 

63Каждый результат также появляется как аннотация на вкладке **Files changed**, отмеченный непосредственно на соответствующих строках diff. Важные результаты отображаются с красным маркером, nits с жёлтым предупреждением, а уже существующие ошибки с серым уведомлением. Аннотации и таблица серьёзности записываются в проверку независимо от встроенных комментариев проверки, поэтому они остаются доступными, даже если GitHub отклонит встроенный комментарий на строке, которая переместилась.

64 

65Проверка всегда завершается с нейтральным выводом, поэтому она никогда не блокирует слияние через правила защиты ветки. Если вы хотите заблокировать слияния на основе результатов Code Review, прочитайте разбор серьёзности из вывода проверки в вашем собственном CI. Последняя строка текста Details — это машиночитаемый комментарий, который ваш рабочий процесс может разобрать с помощью `gh` и jq:

66 

67```bash theme={null}

68gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID \

69 --jq '.output.text | split("bughunter-severity: ")[1] | split(" -->")[0] | fromjson'

70```

71 

72Это возвращает объект JSON с подсчётом по степени серьёзности, например `{"normal": 2, "nit": 1, "pre_existing": 0}`. Ключ `normal` содержит количество результатов Important; ненулевое значение означает, что Claude обнаружил по крайней мере одну ошибку, которую стоит исправить перед слиянием.

73 

74### Что проверяет Code Review

75 

76По умолчанию Code Review сосредоточен на корректности: ошибки, которые нарушат production, а не на предпочтениях форматирования или отсутствии покрытия тестами. Вы можете расширить то, что он проверяет, [добавив файлы руководства](#customize-reviews) в ваш репозиторий.

77 

78## Настройка Code Review

79 

80Администратор включает Code Review один раз для организации и выбирает, какие репозитории включить.

81 

82<Steps>

83 <Step title="Откройте параметры администратора Claude Code">

84 Перейдите на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) и найдите раздел Code Review. Вам нужен доступ администратора к вашей организации Claude и разрешение на установку GitHub Apps в вашей организации GitHub.

85 </Step>

86 

87 <Step title="Начните настройку">

88 Нажмите **Setup**. Это начинает процесс установки GitHub App.

89 </Step>

90 

91 <Step title="Установите Claude GitHub App">

92 Следуйте подсказкам для установки Claude GitHub App в вашу организацию GitHub. Приложение запрашивает эти разрешения репозитория:

93 

94 * **Contents**: чтение и запись

95 * **Issues**: чтение и запись

96 * **Pull requests**: чтение и запись

97 

98 Code Review использует доступ на чтение содержимого и доступ на запись к pull-запросам. Более широкий набор разрешений также поддерживает [GitHub Actions](/ru/github-actions), если вы включите это позже.

99 </Step>

100 

101 <Step title="Выберите репозитории">

102 Выберите, какие репозитории включить для Code Review. Если вы не видите репозиторий, убедитесь, что вы дали Claude GitHub App доступ к нему во время установки. Вы можете добавить больше репозиториев позже.

103 </Step>

104 

105 <Step title="Установите триггеры проверки для каждого репо">

106 После завершения настройки раздел Code Review показывает ваши репозитории в таблице. Для каждого репозитория используйте раскрывающееся меню **Review Behavior**, чтобы выбрать, когда запускаются проверки:

107 

108 * **Once after PR creation**: проверка запускается один раз при открытии PR или отметке готовности к проверке

109 * **After every push**: проверка запускается при каждом push в ветку PR, выявляя новые проблемы по мере развития PR и автоматически разрешая потоки при исправлении помеченных проблем

110 * **Manual**: проверки запускаются только когда кто-то [комментирует `@claude review` или `@claude review once` на PR](#manually-trigger-reviews); `@claude review` также подписывает PR на проверки при последующих push

111 

112 Проверка при каждом push запускает наибольшее количество проверок и стоит дороже всего. Ручной режим полезен для репозиториев с высокой активностью, где вы хотите выбрать конкретные PR для проверки, или чтобы начать проверку ваших PR только после того, как они будут готовы.

113 </Step>

114</Steps>

115 

116Таблица репозиториев также показывает среднюю стоимость проверки для каждого репо на основе недавней активности. Используйте меню действий строки, чтобы включить или отключить Code Review для каждого репозитория или полностью удалить репозиторий.

117 

118Чтобы проверить настройку, откройте тестовый PR. Если вы выбрали автоматический триггер, проверка с именем **Claude Code Review** появится в течение нескольких минут. Если вы выбрали Manual, прокомментируйте `@claude review` на PR, чтобы запустить первую проверку. Если проверка не появляется, подтвердите, что репозиторий указан в параметрах администратора и Claude GitHub App имеет доступ к нему.

119 

120## Ручной запуск проверок

121 

122Две команды комментариев запускают проверку по требованию. Обе работают независимо от настроенного триггера репозитория, поэтому вы можете использовать их, чтобы выбрать конкретные PR для проверки в ручном режиме или получить немедленную повторную проверку в других режимах.

123 

124| Команда | Что она делает |

125| :-------------------- | :---------------------------------------------------------------------------------- |

126| `@claude review` | Запускает проверку и подписывает PR на проверки, запускаемые при push, в дальнейшем |

127| `@claude review once` | Запускает одну проверку без подписки PR на будущие push |

128 

129Используйте `@claude review once`, когда вы хотите получить отзыв о текущем состоянии PR, но не хотите, чтобы каждый последующий push вызывал проверку. Это полезно для долгоживущих PR с частыми push или когда вы хотите получить одноразовое второе мнение без изменения поведения проверки PR.

130 

131Для запуска проверки любой командой:

132 

133* Опубликуйте её как комментарий верхнего уровня PR, а не встроенный комментарий на строке diff

134* Поместите команду в начало комментария, с `once` на той же строке, если вы используете одноразовую форму

135* У вас должен быть доступ владельца, члена или сотрудника к репозиторию

136* PR должен быть открыт

137 

138В отличие от автоматических триггеров, ручные триггеры запускаются на черновиках PR, так как явный запрос сигнализирует, что вы хотите проверку сейчас независимо от статуса черновика.

139 

140Если проверка уже запущена на этом PR, запрос ставится в очередь до завершения текущей проверки. Вы можете отслеживать прогресс через проверку на PR.

141 

142## Настройка проверок

143 

144Code Review читает два файла из вашего репозитория, чтобы направить то, что он помечает. Они отличаются тем, насколько сильно они влияют на проверку:

145 

146* **`CLAUDE.md`**: общие инструкции проекта, которые Claude Code использует для всех задач, а не только для проверок. Code Review читает его как контекст проекта и помечает вновь введённые нарушения как nits.

147* **`REVIEW.md`**: инструкции только для проверок, внедряемые непосредственно в каждого агента в конвейере проверки как наивысший приоритет. Используйте его, чтобы изменить то, что помечается, с какой серьёзностью и как сообщаются результаты.

148 

149### CLAUDE.md

150 

151Code Review читает файлы `CLAUDE.md` вашего репозитория и рассматривает вновь введённые нарушения как результаты [уровня nit](#severity-levels). Это работает двусторонне: если ваш PR изменяет код таким образом, что делает утверждение `CLAUDE.md` устаревшим, Claude помечает, что документы нужно обновить.

152 

153Claude читает файлы `CLAUDE.md` на каждом уровне иерархии вашего каталога, поэтому правила в `CLAUDE.md` подкаталога применяются только к файлам под этим путём. Дополнительную информацию о том, как работает `CLAUDE.md`, см. в [документации памяти](/ru/memory).

154 

155Для руководства, специфичного для проверок, которое вы не хотите применять к общим сеансам Claude Code, используйте [`REVIEW.md`](#review-md) вместо этого.

156 

157### REVIEW\.md

158 

159`REVIEW.md` — это файл в корне вашего репозитория, который переопределяет поведение Code Review в вашем репо. Его содержимое внедряется в системный запрос каждого агента в конвейере проверки как блок инструкций с наивысшим приоритетом, имеющий приоритет над руководством проверки по умолчанию.

160 

161Поскольку он вставляется дословно, `REVIEW.md` — это простые инструкции: синтаксис [`@` import](/ru/memory#import-additional-files) не расширяется, и на файлы не читаются в подсказку. Поместите правила, которые вы хотите применить, непосредственно в файл.

162 

163#### Что вы можете настроить

164 

165`REVIEW.md` — это свободный markdown, поэтому всё, что вы можете выразить как инструкцию проверки, находится в области действия. Приведённые ниже шаблоны имеют наибольшее влияние на практике.

166 

167**Серьёзность**: переопределите, что означает 🔴 Important для вашего репо. Калибровка по умолчанию нацелена на production код; репо документации, репо конфигурации или прототип могут захотеть гораздо более узкое определение. Явно укажите, какие классы результатов являются Important, а какие — Nit максимум. Вы также можете повысить в другом направлении, например рассматривая любое нарушение `CLAUDE.md` как Important, а не как nit по умолчанию.

168 

169**Объём Nit**: ограничьте, сколько комментариев 🟡 Nit одна проверка публикует. Проза и файлы конфигурации можно полировать вечно. Ограничение вроде «сообщайте максимум пять nits, упомяните остальное как подсчёт в резюме» делает проверки действенными.

170 

171**Правила пропуска**: перечислите пути, шаблоны ветвей и категории результатов, где Claude не должен публиковать результаты. Обычные кандидаты — это сгенерированный код, файлы блокировки, поставляемые зависимости и ветви, созданные машиной, наряду с чем-либо, что ваш CI уже применяет, например линтинг или проверка орфографии. Для путей, которые требуют некоторой проверки, но не полного контроля, установите более высокую планку вместо полного пропуска: «в `scripts/`, сообщайте только если почти уверены и серьёзно».

172 

173**Проверки, специфичные для репо**: добавьте правила, которые вы хотите помечать на каждом PR, например «новые маршруты API должны иметь интеграционный тест». Поскольку `REVIEW.md` внедряется как наивысший приоритет, эти правила приземляются более надёжно, чем те же правила в длинном `CLAUDE.md`.

174 

175**Планка проверки**: требуйте доказательства перед публикацией класса результатов. Например, «утверждения о поведении нуждаются в цитировании `file:line` в исходном коде, а не в выводе из именования» сокращает ложные срабатывания, которые в противном случае стоили бы автору круговорота.

176 

177**Сходимость повторной проверки**: скажите Claude, как вести себя, когда PR уже был проверен. Правило вроде «после первой проверки подавляйте новые nits и публикуйте только результаты Important» останавливает однострочное исправление от достижения седьмого раунда только по стилю.

178 

179**Форма резюме**: попросите тело проверки открыться с однострочным подсчётом, например `2 factual, 4 style`, и начать с «no factual issues», когда это так. Автор хочет знать форму работы перед деталями.

180 

181#### Пример

182 

183Этот `REVIEW.md` пересчитывает серьёзность для backend сервиса, ограничивает nits, пропускает сгенерированные файлы и добавляет проверки, специфичные для репо.

184 

185```markdown theme={null}

186# Инструкции проверки

187 

188## Что Important означает здесь

189 

190Зарезервируйте Important для результатов, которые нарушат поведение, утекут данные

191или заблокируют откат: неправильная логика, неограниченные запросы к базе данных, PII

192в логах или сообщениях об ошибках, и миграции, которые не являются обратно

193совместимыми. Стиль, именование и предложения по рефакторингу — это Nit максимум.

194 

195## Ограничьте nits

196 

197Сообщайте максимум пять Nits за проверку. Если вы нашли больше, скажите «плюс N

198похожих элементов» в резюме вместо публикации их встроенно. Если всё, что вы нашли,

199это Nit, начните резюме с «No blocking issues».

200 

201## Не сообщайте

202 

203- Ничего, что CI уже применяет: lint, форматирование, ошибки типов

204- Сгенерированные файлы под `src/gen/` и любой файл `*.lock`

205- Код только для тестов, который намеренно нарушает production правила

206 

207## Всегда проверяйте

208 

209- Новые маршруты API имеют интеграционный тест

210- Строки логов не включают адреса электронной почты, ID пользователей или тела запросов

211- Запросы к базе данных ограничены вызывающим абонентом

212```

213 

214#### Держите это сосредоточенным

215 

216Длина имеет стоимость: длинный `REVIEW.md` разбавляет правила, которые имеют наибольшее значение. Держите его на инструкциях, которые изменяют поведение проверки, и оставляйте общий контекст проекта в `CLAUDE.md`.

217 

218## Просмотр использования

219 

220Перейдите на [claude.ai/analytics/code-review](https://claude.ai/analytics/code-review), чтобы увидеть активность Code Review во всей вашей организации. Панель показывает:

221 

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

223| :------------------- | :------------------------------------------------------------------------------------------------------------ |

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

225| Cost weekly | Еженедельные расходы на Code Review |

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

227| Repository breakdown | Количество проверенных PR и разрешённых комментариев для каждого репо |

228 

229Таблица репозиториев в параметрах администратора также показывает среднюю стоимость проверки для каждого репо. Цифры стоимости панели — это оценки для мониторинга активности; для точной по счёту траты обратитесь к вашему счёту Anthropic.

230 

231## Цены

232 

233Code Review выставляется счёт на основе использования токенов. Каждая проверка в среднем стоит \$15-25, масштабируясь в зависимости от размера PR, сложности кодовой базы и количества проблем, требующих проверки. Использование Code Review выставляется отдельно через [дополнительное использование](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) и не учитывается в использовании, включённом в ваш план.

234 

235Выбранный вами триггер проверки влияет на общую стоимость:

236 

237* **Once after PR creation**: запускается один раз для каждого PR

238* **After every push**: запускается при каждом push, умножая стоимость на количество push

239* **Manual**: нет проверок до тех пор, пока кто-то не прокомментирует `@claude review` на PR

240 

241В любом режиме комментарий `@claude review` [выбирает PR для проверок, запускаемых при push](#manually-trigger-reviews), поэтому дополнительные затраты накапливаются при каждом push после этого комментария. Чтобы запустить одну проверку без подписки на будущие push, прокомментируйте `@claude review once` вместо этого.

242 

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

244 

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

246 

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

248 

249Запуски проверок выполняются по принципу best-effort. Сбой запуска никогда не блокирует ваш PR, но он также не повторяется автоматически. Этот раздел охватывает, как восстановиться после сбоя запуска и где искать, когда проверка сообщает о проблемах, которые вы не можете найти.

250 

251### Повторный запуск сбойной или истёкшей по времени проверки

252 

253Когда инфраструктура проверки сталкивается с внутренней ошибкой или превышает лимит времени, проверка завершается с названием **Code review encountered an error** или **Code review timed out**. Вывод по-прежнему нейтральный, поэтому ничто не блокирует ваше слияние, но результаты не публикуются.

254 

255Чтобы запустить проверку снова, прокомментируйте `@claude review once` на PR. Это запускает свежую проверку без подписки PR на будущие push. Если PR уже подписан на проверки, запускаемые при push, push нового коммита также запускает новую проверку.

256 

257Кнопка **Re-run** на вкладке Checks в GitHub не повторно запускает Code Review. Используйте команду комментария или новый push вместо этого.

258 

259### Проверка не запустилась и PR показывает сообщение о лимите расходов

260 

261Когда достигнут ежемесячный лимит расходов вашей организации, Code Review публикует один комментарий на PR, объясняя, что проверка была пропущена. Проверки возобновляются автоматически в начале следующего периода выставления счётов или немедленно, когда администратор повышает лимит на [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage).

262 

263### Найти проблемы, которые не отображаются как встроенные комментарии

264 

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

266 

267* **Check run Details**: нажмите **Details** рядом с проверкой Claude Code Review на вкладке Checks. Таблица серьёзности перечисляет каждый результат с его файлом, строкой и сводкой независимо от того, был ли принят встроенный комментарий.

268* **Files changed annotations**: откройте вкладку **Files changed** на PR. Результаты отображаются как аннотации, прикреплённые непосредственно к строкам diff, отдельно от комментариев проверки.

269* **Review body**: если вы push в PR во время выполнения проверки, некоторые результаты могут ссылаться на строки, которые больше не существуют в текущем diff. Они появляются под заголовком **Additional findings** в тексте тела проверки, а не как встроенные комментарии.

270 

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

272 

273Code Review разработан для работы вместе с остальной частью Claude Code. Если вы хотите запустить проверки локально перед открытием PR, вам нужна самостоятельно размещённая установка или вы хотите глубже разобраться в том, как `CLAUDE.md` формирует поведение Claude во всех инструментах, эти страницы — хорошие следующие остановки:

274 

275* [Plugins](/ru/discover-plugins): просмотрите marketplace плагинов, включая плагин `code-review` для запуска проверок по требованию локально перед push

276* [GitHub Actions](/ru/github-actions): запустите Claude в ваших собственных рабочих процессах GitHub Actions для пользовательской автоматизации за пределами проверки кода

277* [GitLab CI/CD](/ru/gitlab-ci-cd): самостоятельно размещённая интеграция Claude для конвейеров GitLab

278* [Memory](/ru/memory): как работают файлы `CLAUDE.md` во всём Claude Code

279* [Analytics](/ru/analytics): отслеживайте использование Claude Code за пределами проверки кода

commands.md +113 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Команды

6 

7> Полный справочник команд, доступных в Claude Code, включая встроенные команды и встроенные skills.

8 

9Команды управляют Claude Code внутри сеанса. Они предоставляют быстрый способ переключения моделей, управления разрешениями, очистки контекста, запуска рабочего процесса и многого другого.

10 

11Введите `/` для просмотра всех доступных вам команд или введите `/` с последующими буквами для фильтрации.

12 

13В таблице ниже перечислены все команды, включенные в Claude Code. Записи, отмеченные как **[Skill](/ru/skills#bundled-skills)**, являются встроенными skills. Они используют тот же механизм, что и skills, которые вы пишете сами: подсказка, переданная Claude, которую Claude также может автоматически вызывать при необходимости. Все остальное — это встроенная команда, поведение которой закодировано в CLI. Чтобы добавить свои собственные команды, см. [skills](/ru/skills).

14 

15Не каждая команда отображается для каждого пользователя. Доступность зависит от вашей платформы, плана и окружения. Например, `/desktop` отображается только на macOS и Windows, а `/upgrade` отображается только на планах Pro и Max.

16 

17В таблице ниже `<arg>` указывает на обязательный аргумент, а `[arg]` указывает на необязательный.

18 

19| Команда | Назначение |

20| :---------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

21| `/add-dir <path>` | Добавить рабочий каталог для доступа к файлам во время текущего сеанса. Большинство конфигурации `.claude/` [не обнаруживается](/ru/permissions#additional-directories-grant-file-access-not-configuration) из добавленного каталога. Вы можете позже возобновить сеанс из добавленного каталога с помощью `--continue` или `--resume` |

22| `/agents` | Управлять конфигурациями [agent](/ru/sub-agents) |

23| `/autofix-pr [prompt]` | Запустить сеанс [Claude Code в веб-браузере](/ru/claude-code-on-the-web#auto-fix-pull-requests), который отслеживает PR текущей ветви и отправляет исправления при сбое CI или комментариях рецензентов. Обнаруживает открытый PR из вашей текущей ветви с помощью `gh pr view`; чтобы отслеживать другой PR, сначала переключитесь на его ветвь. По умолчанию удаленному сеансу указывается исправить каждый сбой CI и комментарий рецензента; передайте подсказку, чтобы дать ему другие инструкции, например `/autofix-pr only fix lint and type errors`. Требует CLI `gh` и доступ к [Claude Code в веб-браузере](/ru/claude-code-on-the-web#who-can-use-claude-code-on-the-web) |

24| `/batch <instruction>` | **[Skill](/ru/skills#bundled-skills).** Организовать крупномасштабные изменения в кодовой базе параллельно. Исследует кодовую базу, разбивает работу на 5-30 независимых единиц и представляет план. После одобрения запускает одного фонового агента на единицу в изолированном [git worktree](/ru/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees). Каждый агент реализует свою единицу, запускает тесты и открывает pull request. Требует git репозиторий. Пример: `/batch migrate src/ from Solid to React` |

25| `/branch [name]` | Создать ветвь текущей беседы в этой точке. Переключает вас в ветвь и сохраняет оригинал, к которому вы можете вернуться с помощью `/resume`. Псевдоним: `/fork`. Когда установлена переменная [`CLAUDE_CODE_FORK_SUBAGENT`](/ru/env-vars), `/fork` вместо этого запускает [разветвленного subagent](/ru/sub-agents#fork-the-current-conversation) и больше не является псевдонимом этой команды |

26| `/btw <question>` | Задать быстрый [побочный вопрос](/ru/interactive-mode#side-questions-with-%2Fbtw) без добавления в беседу |

27| `/chrome` | Настроить параметры [Claude в Chrome](/ru/chrome) |

28| `/claude-api [migrate\|managed-agents-onboard]` | **[Skill](/ru/skills#bundled-skills).** Загрузить справочный материал Claude API для языка вашего проекта (Python, TypeScript, Java, Go, Ruby, C#, PHP или cURL) и справочник Managed Agents. Охватывает использование инструментов, потоковую передачу, пакеты, структурированные выходы и распространенные ошибки. Также активируется автоматически, когда ваш код импортирует `anthropic` или `@anthropic-ai/sdk`. Запустите `/claude-api migrate` для обновления существующего кода Claude API на более новую модель: Claude спрашивает, какие файлы сканировать и какую модель выбрать, затем обновляет ID моделей, конфигурацию thinking и другие параметры, которые изменились между версиями. Запустите `/claude-api managed-agents-onboard` для интерактивного пошагового руководства, которое создает новый Managed Agent с нуля |

29| `/clear` | Начать новую беседу с пустым контекстом. Предыдущая беседа остается доступной в `/resume`. Чтобы освободить контекст при продолжении той же беседы, используйте `/compact`. Псевдонимы: `/reset`, `/new` |

30| `/color [color\|default]` | Установить цвет строки приглашения для текущего сеанса. Доступные цвета: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Используйте `default` для сброса. Когда подключен [Remote Control](/ru/remote-control), цвет синхронизируется с claude.ai/code |

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

32| `/config` | Открыть интерфейс [Параметры](/ru/settings) для настройки темы, модели, [стиля вывода](/ru/output-styles) и других предпочтений. Псевдоним: `/settings` |

33| `/context` | Визуализировать текущее использование контекста в виде цветной сетки. Показывает предложения по оптимизации для инструментов, требующих много контекста, утечек памяти и предупреждений о емкости |

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

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

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

37| `/desktop` | Продолжить текущий сеанс в приложении Claude Code Desktop. Только macOS и Windows. Псевдоним: `/app` |

38| `/diff` | Открыть интерактивное средство просмотра различий, показывающее незафиксированные изменения и различия для каждого хода. Используйте стрелки влево/вправо для переключения между текущим git diff и отдельными ходами Claude, а вверх/вниз для просмотра файлов |

39| `/doctor` | Диагностировать и проверить вашу установку и параметры Claude Code. Результаты отображаются со значками статуса. Нажмите `f`, чтобы Claude исправил любые сообщаемые проблемы |

40| `/effort [level\|auto]` | Установить [уровень усилий](/ru/model-config#adjust-effort-level) модели. Принимает `low`, `medium`, `high`, `xhigh` или `max`; доступные уровни зависят от модели, и `max` применяется только к сеансу. `auto` сбрасывает значение по умолчанию модели. Без аргумента открывает интерактивный ползунок; используйте стрелки влево и вправо для выбора уровня и `Enter` для применения. Вступает в силу немедленно без ожидания завершения текущего ответа |

41| `/exit` | Выход из CLI. Псевдоним: `/quit` |

42| `/export [filename]` | Экспортировать текущую беседу как простой текст. С именем файла записывает непосредственно в этот файл. Без имени открывает диалог для копирования в буфер обмена или сохранения в файл |

43| `/extra-usage` | Настроить дополнительное использование для продолжения работы при достижении ограничений скорости |

44| `/fast [on\|off]` | Переключить [быстрый режим](/ru/fast-mode) включен или выключен |

45| `/feedback [report]` | Отправить отзыв о Claude Code. Псевдоним: `/bug` |

46| `/fewer-permission-prompts` | **[Skill](/ru/skills#bundled-skills).** Сканировать ваши стенограммы на предмет распространенных вызовов инструментов Bash и MCP только для чтения, затем добавить приоритизированный список разрешений в проект `.claude/settings.json` для уменьшения запросов разрешений |

47| `/focus` | Переключить представление фокуса, которое показывает только ваше последнее приглашение, однострочную сводку вызова инструмента с редактированием diffstats и финальный ответ. Выбор сохраняется между сеансами. Доступно только в [полноэкранном рендеринге](/ru/fullscreen) |

48| `/heapdump` | Записать снимок кучи JavaScript и разбивку памяти в `~/Desktop`, или в домашний каталог на Linux без папки Desktop, для диагностики высокого использования памяти. См. [устранение неполадок](/ru/troubleshooting#high-cpu-or-memory-usage) |

49| `/help` | Показать справку и доступные команды |

50| `/hooks` | Просмотреть конфигурации [hook](/ru/hooks) для событий инструментов |

51| `/ide` | Управлять интеграциями IDE и показать статус |

52| `/init` | Инициализировать проект с руководством `CLAUDE.md`. Установите `CLAUDE_CODE_NEW_INIT=1` для интерактивного потока, который также проходит через skills, hooks и файлы личной памяти |

53| `/insights` | Создать отчет, анализирующий ваши сеансы Claude Code, включая области проекта, паттерны взаимодействия и точки трения |

54| `/install-github-app` | Установить приложение [Claude GitHub Actions](/ru/github-actions) для репозитория. Проведет вас через выбор репозитория и настройку интеграции |

55| `/install-slack-app` | Установить приложение Claude Slack. Открывает браузер для завершения потока OAuth |

56| `/keybindings` | Открыть или создать файл конфигурации сочетаний клавиш |

57| `/login` | Войти в вашу учетную запись Anthropic |

58| `/logout` | Выйти из вашей учетной записи Anthropic |

59| `/loop [interval] [prompt]` | **[Skill](/ru/skills#bundled-skills).** Запустить подсказку повторно, пока сеанс остается открытым. Опустите интервал, и Claude будет самостоятельно устанавливать темп между итерациями. Опустите подсказку, и Claude запустит автономную проверку обслуживания или подсказку в `.claude/loop.md`, если она присутствует. Пример: `/loop 5m check if the deploy finished`. См. [Запуск подсказок по расписанию](/ru/scheduled-tasks). Псевдоним: `/proactive` |

60| `/mcp` | Управлять подключениями MCP server и аутентификацией OAuth |

61| `/memory` | Редактировать файлы памяти `CLAUDE.md`, включать или отключать [auto-memory](/ru/memory#auto-memory) и просматривать записи auto-memory |

62| `/mobile` | Показать QR-код для загрузки мобильного приложения Claude. Псевдонимы: `/ios`, `/android` |

63| `/model [model]` | Выбрать или изменить модель AI. Для моделей, которые это поддерживают, используйте стрелки влево/вправо для [регулировки уровня усилий](/ru/model-config#adjust-effort-level). Без аргумента открывает выбор, который запрашивает подтверждение, когда беседа имеет предыдущий вывод, так как следующий ответ перечитывает полную историю без кэшированного контекста. После подтверждения изменение вступает в силу без ожидания завершения текущего ответа |

64| `/passes` | Поделиться бесплатной неделей Claude Code с друзьями. Видна только если ваша учетная запись имеет право на это |

65| `/permissions` | Управлять правилами разрешения, запроса и отказа для разрешений инструментов. Открывает интерактивный диалог, где вы можете просматривать правила по области, добавлять или удалять правила, управлять рабочими каталогами и просматривать [недавние отказы в автоматическом режиме](/ru/auto-mode-config#review-denials). Псевдоним: `/allowed-tools` |

66| `/plan [description]` | Войти в режим плана непосредственно из приглашения. Передайте необязательное описание для входа в режим плана и немедленного начала с этой задачей, например `/plan fix the auth bug` |

67| `/plugin` | Управлять Claude Code [plugins](/ru/plugins) |

68| `/powerup` | Открыть для себя функции Claude Code через быстрые интерактивные уроки с анимированными демонстрациями |

69| `/pr-comments [PR]` | {/* max-version: 2.1.90 */}Удалено в v2.1.91. Попросите Claude напрямую просмотреть комментарии pull request. В более ранних версиях получает и отображает комментарии из запроса на слияние GitHub; автоматически обнаруживает PR для текущей ветви или передайте URL или номер PR. Требует CLI `gh` |

70| `/privacy-settings` | Просмотреть и обновить параметры конфиденциальности. Доступно только для подписчиков планов Pro и Max |

71| `/recap` | Создать однострочную сводку текущего сеанса по требованию. См. [Сводка сеанса](/ru/interactive-mode#session-recap) для автоматической сводки, которая появляется после вашего отсутствия |

72| `/release-notes` | Просмотреть журнал изменений в интерактивном выборщике версий. Выберите конкретную версию для просмотра ее примечаний к выпуску или выберите отображение всех версий |

73| `/reload-plugins` | Перезагрузить все активные [plugins](/ru/plugins) для применения ожидающих изменений без перезагрузки. Сообщает количество для каждого перезагруженного компонента и отмечает любые ошибки загрузки |

74| `/remote-control` | Сделать этот сеанс доступным для [удаленного управления](/ru/remote-control) с claude.ai. Псевдоним: `/rc` |

75| `/remote-env` | Настроить окружение удаленного сеанса по умолчанию для [веб-сеансов, запущенных с `--remote`](/ru/claude-code-on-the-web#configure-your-environment) |

76| `/rename [name]` | Переименовать текущий сеанс и показать имя на строке приглашения. Без имени автоматически генерирует одно из истории беседы |

77| `/resume [session]` | Возобновить беседу по ID или имени, или открыть выбор сеанса. Псевдоним: `/continue` |

78| `/review [PR]` | Просмотреть pull request локально в вашем текущем сеансе. Для более глубокого облачного просмотра см. [`/ultrareview`](/ru/ultrareview) |

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

80| `/sandbox` | Переключить [режим sandbox](/ru/sandboxing). Доступно только на поддерживаемых платформах |

81| `/schedule [description]` | Создать, обновить, перечислить или запустить [routines](/ru/routines). Claude проведет вас через настройку в диалоговом режиме. Псевдоним: `/routines` |

82| `/security-review` | Анализировать ожидающие изменения на текущей ветви на предмет уязвимостей безопасности. Проверяет git diff и определяет риски, такие как инъекции, проблемы с аутентификацией и утечка данных |

83| `/setup-bedrock` | Настроить аутентификацию [Amazon Bedrock](/ru/amazon-bedrock), регион и привязки моделей через интерактивный мастер. Видна только когда установлено `CLAUDE_CODE_USE_BEDROCK=1`. Пользователи Bedrock в первый раз также могут получить доступ к этому мастеру с экрана входа |

84| `/setup-vertex` | Настроить аутентификацию [Google Vertex AI](/ru/google-vertex-ai), проект, регион и привязки моделей через интерактивный мастер. Видна только когда установлено `CLAUDE_CODE_USE_VERTEX=1`. Пользователи Vertex AI в первый раз также могут получить доступ к этому мастеру с экрана входа |

85| `/simplify [focus]` | **[Skill](/ru/skills#bundled-skills).** Просмотреть ваши недавно измененные файлы на предмет повторного использования кода, качества и проблем эффективности, затем исправить их. Запускает трех агентов рецензирования параллельно, агрегирует их выводы и применяет исправления. Передайте текст для фокуса на конкретные проблемы: `/simplify focus on memory efficiency` |

86| `/skills` | Список доступных [skills](/ru/skills). Нажмите `t` для сортировки по количеству токенов |

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

88| `/status` | Открыть интерфейс Параметры (вкладка Статус), показывающий версию, модель, учетную запись и подключение. Работает во время ответа Claude без ожидания завершения текущего ответа |

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

90| `/stickers` | Заказать наклейки Claude Code |

91| `/tasks` | Список и управление фоновыми задачами. Также доступно как `/bashes` |

92| `/team-onboarding` | Создать руководство по адаптации команды из истории использования Claude Code. Claude анализирует ваши сеансы, команды и использование MCP server за последние 30 дней и создает руководство markdown, которое товарищ по команде может вставить как первое сообщение для быстрой настройки |

93| `/teleport` | Перенести сеанс [Claude Code в веб-браузере](/ru/claude-code-on-the-web#from-web-to-terminal) в этот терминал: открывает выбор, затем получает ветвь и беседу. Также доступно как `/tp`. Требует подписку claude.ai |

94| `/terminal-setup` | Настроить сочетания клавиш терминала для Shift+Enter и других ярлыков. Видна только в терминалах, которые в этом нуждаются, таких как VS Code, Cursor, Windsurf, Alacritty или Zed |

95| `/theme` | Изменить цветовую тему. Включает опцию `auto`, которая следует темному или светлому режиму вашего терминала, светлые и темные варианты, доступные для дальтоников (далтонизированные) темы, ANSI темы, которые используют палитру цветов вашего терминала, и любые [пользовательские темы](/ru/terminal-config#create-a-custom-theme) из `~/.claude/themes/` или plugins. Выберите **New custom theme…** для создания одной |

96| `/tui [default\|fullscreen]` | Установить средство визуализации пользовательского интерфейса терминала и перезагрузиться в него с сохранением вашей беседы. `fullscreen` включает [безмерцающий рендерер alt-screen](/ru/fullscreen). Без аргумента выводит активный рендерер |

97| `/ultraplan <prompt>` | Разработать план в сеансе [ultraplan](/ru/ultraplan), просмотреть его в браузере, затем выполнить удаленно или отправить обратно в ваш терминал |

98| `/ultrareview [PR]` | Запустить глубокий многоагентный просмотр кода в облачной песочнице с [ultrareview](/ru/ultrareview). Включает 3 бесплатных запуска на Pro и Max до 5 мая 2026 года, затем требует [дополнительное использование](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

99| `/upgrade` | Открыть страницу обновления для переключения на более высокий уровень плана |

100| `/usage` | Показать стоимость сеанса, ограничения использования плана и статистику активности. См. [руководство по отслеживанию затрат](/ru/costs#using-the-%2Fusage-command) для деталей, специфичных для подписки. `/cost` и `/stats` являются псевдонимами |

101| `/vim` | {/* max-version: 2.1.91 */}Удалено в v2.1.92. Для переключения между режимами редактирования Vim и Normal используйте `/config` → Editor mode |

102| `/voice [hold\|tap\|off]` | Переключить [диктовку голосом](/ru/voice-dictation) или включить ее в определенном режиме. Требует учетную запись Claude.ai |

103| `/web-setup` | Подключить вашу учетную запись GitHub к [Claude Code в веб-браузере](/ru/web-quickstart#connect-from-your-terminal) используя учетные данные вашего локального CLI `gh`. `/schedule` автоматически запрашивает это, если GitHub не подключен |

104 

105## MCP prompts

106 

107MCP servers могут предоставлять подсказки, которые появляются как команды. Они используют формат `/mcp__<server>__<prompt>` и динамически обнаруживаются из подключенных серверов. См. [MCP prompts](/ru/mcp#use-mcp-prompts-as-commands) для деталей.

108 

109## См. также

110 

111* [Skills](/ru/skills): создавайте свои собственные команды

112* [Интерактивный режим](/ru/interactive-mode): сочетания клавиш, режим Vim и история команд

113* [Справочник CLI](/ru/cli-reference): флаги времени запуска

common-workflows.md +1030 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Распространённые рабочие процессы

6 

7> Пошаговые руководства по изучению кодовых баз, исправлению ошибок, рефакторингу, тестированию и другим повседневным задачам с Claude Code.

8 

9На этой странице рассматриваются практические рабочие процессы для повседневной разработки: изучение незнакомого кода, отладка, рефакторинг, написание тестов, создание PR и управление сеансами. Каждый раздел включает примеры подсказок, которые вы можете адаптировать к своим проектам. Для получения более высокоуровневых паттернов и советов см. [Лучшие практики](/ru/best-practices).

10 

11## Понимание новых кодовых баз

12 

13### Получение быстрого обзора кодовой базы

14 

15Предположим, вы только что присоединились к новому проекту и вам нужно быстро понять его структуру.

16 

17<Steps>

18 <Step title="Перейдите в корневой каталог проекта">

19 ```bash theme={null}

20 cd /path/to/project

21 ```

22 </Step>

23 

24 <Step title="Запустите Claude Code">

25 ```bash theme={null}

26 claude

27 ```

28 </Step>

29 

30 <Step title="Попросите высокоуровневый обзор">

31 ```text theme={null}

32 give me an overview of this codebase

33 ```

34 </Step>

35 

36 <Step title="Углубитесь в конкретные компоненты">

37 ```text theme={null}

38 explain the main architecture patterns used here

39 ```

40 

41 ```text theme={null}

42 what are the key data models?

43 ```

44 

45 ```text theme={null}

46 how is authentication handled?

47 ```

48 </Step>

49</Steps>

50 

51<Tip>

52 Советы:

53 

54 * Начните с широких вопросов, затем сужайте до конкретных областей

55 * Спросите о соглашениях кодирования и паттернах, используемых в проекте

56 * Запросите глоссарий терминов, специфичных для проекта

57</Tip>

58 

59### Поиск релевантного кода

60 

61Предположим, вам нужно найти код, связанный с конкретной функцией или функциональностью.

62 

63<Steps>

64 <Step title="Попросите Claude найти релевантные файлы">

65 ```text theme={null}

66 find the files that handle user authentication

67 ```

68 </Step>

69 

70 <Step title="Получите контекст о том, как компоненты взаимодействуют">

71 ```text theme={null}

72 how do these authentication files work together?

73 ```

74 </Step>

75 

76 <Step title="Поймите поток выполнения">

77 ```text theme={null}

78 trace the login process from front-end to database

79 ```

80 </Step>

81</Steps>

82 

83<Tip>

84 Советы:

85 

86 * Будьте конкретны в том, что вы ищете

87 * Используйте предметный язык из проекта

88 * Установите [плагин анализа кода](/ru/discover-plugins#code-intelligence) для вашего языка, чтобы дать Claude точную навигацию "перейти к определению" и "найти ссылки"

89</Tip>

90 

91***

92 

93## Эффективное исправление ошибок

94 

95Предположим, вы столкнулись с сообщением об ошибке и вам нужно найти и исправить его источник.

96 

97<Steps>

98 <Step title="Поделитесь ошибкой с Claude">

99 ```text theme={null}

100 I'm seeing an error when I run npm test

101 ```

102 </Step>

103 

104 <Step title="Попросите рекомендации по исправлению">

105 ```text theme={null}

106 suggest a few ways to fix the @ts-ignore in user.ts

107 ```

108 </Step>

109 

110 <Step title="Примените исправление">

111 ```text theme={null}

112 update user.ts to add the null check you suggested

113 ```

114 </Step>

115</Steps>

116 

117<Tip>

118 Советы:

119 

120 * Скажите Claude команду для воспроизведения проблемы и получите трассировку стека

121 * Упомяните любые шаги для воспроизведения ошибки

122 * Дайте Claude знать, является ли ошибка прерывистой или постоянной

123</Tip>

124 

125***

126 

127## Рефакторинг кода

128 

129Предположим, вам нужно обновить старый код для использования современных паттернов и практик.

130 

131<Steps>

132 <Step title="Определите устаревший код для рефакторинга">

133 ```text theme={null}

134 find deprecated API usage in our codebase

135 ```

136 </Step>

137 

138 <Step title="Получите рекомендации по рефакторингу">

139 ```text theme={null}

140 suggest how to refactor utils.js to use modern JavaScript features

141 ```

142 </Step>

143 

144 <Step title="Примените изменения безопасно">

145 ```text theme={null}

146 refactor utils.js to use ES2024 features while maintaining the same behavior

147 ```

148 </Step>

149 

150 <Step title="Проверьте рефакторинг">

151 ```text theme={null}

152 run tests for the refactored code

153 ```

154 </Step>

155</Steps>

156 

157<Tip>

158 Советы:

159 

160 * Попросите Claude объяснить преимущества современного подхода

161 * Запросите, чтобы изменения сохраняли обратную совместимость при необходимости

162 * Выполняйте рефакторинг небольшими, тестируемыми шагами

163</Tip>

164 

165***

166 

167## Использование специализированных subagents

168 

169Предположим, вы хотите использовать специализированные AI subagents для более эффективного выполнения конкретных задач.

170 

171<Steps>

172 <Step title="Просмотрите доступные subagents">

173 ```text theme={null}

174 /agents

175 ```

176 

177 Это показывает все доступные subagents и позволяет создавать новые.

178 </Step>

179 

180 <Step title="Используйте subagents автоматически">

181 Claude Code автоматически делегирует соответствующие задачи специализированным subagents:

182 

183 ```text theme={null}

184 review my recent code changes for security issues

185 ```

186 

187 ```text theme={null}

188 run all tests and fix any failures

189 ```

190 </Step>

191 

192 <Step title="Явно запросите конкретные subagents">

193 ```text theme={null}

194 use the code-reviewer subagent to check the auth module

195 ```

196 

197 ```text theme={null}

198 have the debugger subagent investigate why users can't log in

199 ```

200 </Step>

201 

202 <Step title="Создайте пользовательские subagents для вашего рабочего процесса">

203 ```text theme={null}

204 /agents

205 ```

206 

207 Затем выберите "Create New subagent" и следуйте подсказкам для определения:

208 

209 * Уникального идентификатора, описывающего назначение subagent (например, `code-reviewer`, `api-designer`).

210 * Когда Claude должен использовать этого агента

211 * Какие инструменты он может использовать

212 * Системной подсказки, описывающей роль и поведение агента

213 </Step>

214</Steps>

215 

216<Tip>

217 Советы:

218 

219 * Создавайте специфичные для проекта subagents в `.claude/agents/` для совместного использования в команде

220 * Используйте описательные поля `description` для включения автоматического делегирования

221 * Ограничьте доступ к инструментам только тем, что действительно нужно каждому subagent

222 * Проверьте [документацию subagents](/ru/sub-agents) для подробных примеров

223</Tip>

224 

225***

226 

227## Использование Plan Mode для безопасного анализа кода

228 

229Plan Mode инструктирует Claude создать план путём анализа кодовой базы с операциями только для чтения, идеально подходит для изучения кодовых баз, планирования сложных изменений или безопасного просмотра кода. В Plan Mode Claude использует [`AskUserQuestion`](/ru/tools-reference) для сбора требований и уточнения ваших целей перед предложением плана.

230 

231### Когда использовать Plan Mode

232 

233* **Многошаговая реализация**: Когда ваша функция требует редактирования множества файлов

234* **Изучение кода**: Когда вы хотите тщательно исследовать кодовую базу перед внесением каких-либо изменений

235* **Интерактивная разработка**: Когда вы хотите итерировать направление с Claude

236 

237### Как использовать Plan Mode

238 

239**Включите Plan Mode во время сеанса**

240 

241Вы можете переключиться в Plan Mode во время сеанса, используя **Shift+Tab** для циклического переключения между режимами разрешений.

242 

243Если вы находитесь в Normal Mode, **Shift+Tab** сначала переключается в Auto-Accept Mode, обозначенный `⏵⏵ accept edits on` в нижней части терминала. Последующий **Shift+Tab** переключится в Plan Mode, обозначенный `⏸ plan mode on`.

244 

245**Запустите новый сеанс в Plan Mode**

246 

247Чтобы запустить новый сеанс в Plan Mode, используйте флаг `--permission-mode plan`:

248 

249```bash theme={null}

250claude --permission-mode plan

251```

252 

253**Запустите "headless" запросы в Plan Mode**

254 

255Вы также можете запустить запрос в Plan Mode напрямую с `-p` (то есть в ["headless режиме"](/ru/headless)):

256 

257```bash theme={null}

258claude --permission-mode plan -p "Analyze the authentication system and suggest improvements"

259```

260 

261### Пример: Планирование сложного рефакторинга

262 

263```bash theme={null}

264claude --permission-mode plan

265```

266 

267```text theme={null}

268I need to refactor our authentication system to use OAuth2. Create a detailed migration plan.

269```

270 

271Claude анализирует текущую реализацию и создаёт подробный план. Уточните с помощью дополнительных вопросов:

272 

273```text theme={null}

274What about backward compatibility?

275```

276 

277```text theme={null}

278How should we handle database migration?

279```

280 

281<Tip>Нажмите `Ctrl+G` для открытия плана в вашем текстовом редакторе по умолчанию, где вы можете отредактировать его непосредственно перед тем, как Claude продолжит.</Tip>

282 

283Когда вы принимаете план, Claude автоматически называет сеанс на основе содержимого плана. Имя появляется на строке подсказки и в средстве выбора сеанса. Если вы уже установили имя с помощью `--name` или `/rename`, принятие плана не перезапишет его.

284 

285### Настройка Plan Mode по умолчанию

286 

287```json theme={null}

288// .claude/settings.json

289{

290 "permissions": {

291 "defaultMode": "plan"

292 }

293}

294```

295 

296См. [документацию параметров](/ru/settings#available-settings) для получения дополнительных вариантов конфигурации.

297 

298***

299 

300## Работа с тестами

301 

302Предположим, вам нужно добавить тесты для непокрытого кода.

303 

304<Steps>

305 <Step title="Определите непротестированный код">

306 ```text theme={null}

307 find functions in NotificationsService.swift that are not covered by tests

308 ```

309 </Step>

310 

311 <Step title="Создайте каркас тестов">

312 ```text theme={null}

313 add tests for the notification service

314 ```

315 </Step>

316 

317 <Step title="Добавьте значимые тестовые случаи">

318 ```text theme={null}

319 add test cases for edge conditions in the notification service

320 ```

321 </Step>

322 

323 <Step title="Запустите и проверьте тесты">

324 ```text theme={null}

325 run the new tests and fix any failures

326 ```

327 </Step>

328</Steps>

329 

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

331 

332Для полного покрытия попросите Claude определить граничные случаи, которые вы могли пропустить. Claude может анализировать пути вашего кода и предлагать тесты для условий ошибок, граничных значений и неожиданных входных данных, которые легко упустить.

333 

334***

335 

336## Создание pull requests

337 

338Вы можете создавать pull requests, попросив Claude напрямую ("create a pr for my changes"), или направить Claude пошагово:

339 

340<Steps>

341 <Step title="Суммируйте ваши изменения">

342 ```text theme={null}

343 summarize the changes I've made to the authentication module

344 ```

345 </Step>

346 

347 <Step title="Создайте pull request">

348 ```text theme={null}

349 create a pr

350 ```

351 </Step>

352 

353 <Step title="Просмотрите и уточните">

354 ```text theme={null}

355 enhance the PR description with more context about the security improvements

356 ```

357 </Step>

358</Steps>

359 

360Когда вы создаёте PR с помощью `gh pr create`, сеанс автоматически связывается с этим PR. Вы можете возобновить его позже с помощью `claude --from-pr <number>`.

361 

362<Tip>

363 Просмотрите PR, созданный Claude, перед отправкой и попросите Claude выделить потенциальные риски или соображения.

364</Tip>

365 

366## Работа с документацией

367 

368Предположим, вам нужно добавить или обновить документацию для вашего кода.

369 

370<Steps>

371 <Step title="Определите недокументированный код">

372 ```text theme={null}

373 find functions without proper JSDoc comments in the auth module

374 ```

375 </Step>

376 

377 <Step title="Создайте документацию">

378 ```text theme={null}

379 add JSDoc comments to the undocumented functions in auth.js

380 ```

381 </Step>

382 

383 <Step title="Просмотрите и улучшите">

384 ```text theme={null}

385 improve the generated documentation with more context and examples

386 ```

387 </Step>

388 

389 <Step title="Проверьте документацию">

390 ```text theme={null}

391 check if the documentation follows our project standards

392 ```

393 </Step>

394</Steps>

395 

396<Tip>

397 Советы:

398 

399 * Укажите стиль документации, который вы хотите (JSDoc, docstrings и т.д.)

400 * Попросите примеры в документации

401 * Запросите документацию для публичных API, интерфейсов и сложной логики

402</Tip>

403 

404***

405 

406## Работа с заметками и папками, не содержащими код

407 

408Claude Code работает в любом каталоге. Запустите его внутри хранилища заметок, папки документации или любой коллекции файлов markdown для поиска, редактирования и переорганизации содержимого так же, как вы работаете с кодом.

409 

410Каталог `.claude/` и `CLAUDE.md` находятся рядом с каталогами конфигурации других инструментов без конфликтов. Claude читает файлы заново при каждом вызове инструмента, поэтому он видит изменения, которые вы вносите в другом приложении при следующем чтении этого файла.

411 

412***

413 

414## Работа с изображениями

415 

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

417 

418<Steps>

419 <Step title="Добавьте изображение в разговор">

420 Вы можете использовать любой из этих методов:

421 

422 1. Перетащите изображение в окно Claude Code

423 2. Скопируйте изображение и вставьте его в CLI с помощью ctrl+v (не используйте cmd+v)

424 3. Предоставьте Claude путь к изображению. Например, "Analyze this image: /path/to/your/image.png"

425 </Step>

426 

427 <Step title="Попросите Claude проанализировать изображение">

428 ```text theme={null}

429 What does this image show?

430 ```

431 

432 ```text theme={null}

433 Describe the UI elements in this screenshot

434 ```

435 

436 ```text theme={null}

437 Are there any problematic elements in this diagram?

438 ```

439 </Step>

440 

441 <Step title="Используйте изображения для контекста">

442 ```text theme={null}

443 Here's a screenshot of the error. What's causing it?

444 ```

445 

446 ```text theme={null}

447 This is our current database schema. How should we modify it for the new feature?

448 ```

449 </Step>

450 

451 <Step title="Получите предложения кода из визуального содержимого">

452 ```text theme={null}

453 Generate CSS to match this design mockup

454 ```

455 

456 ```text theme={null}

457 What HTML structure would recreate this component?

458 ```

459 </Step>

460</Steps>

461 

462<Tip>

463 Советы:

464 

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

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

467 * Вы можете работать с несколькими изображениями в разговоре

468 * Анализ изображений работает с диаграммами, скриншотами, макетами и многим другим

469 * Когда Claude ссылается на изображения (например, `[Image #1]`), `Cmd+Click` (Mac) или `Ctrl+Click` (Windows/Linux) ссылку для открытия изображения в вашем средстве просмотра по умолчанию

470</Tip>

471 

472***

473 

474## Ссылка на файлы и каталоги

475 

476Используйте @ для быстрого включения файлов или каталогов без ожидания, пока Claude их прочитает.

477 

478<Steps>

479 <Step title="Ссылка на один файл">

480 ```text theme={null}

481 Explain the logic in @src/utils/auth.js

482 ```

483 

484 Это включает полное содержимое файла в разговор.

485 </Step>

486 

487 <Step title="Ссылка на каталог">

488 ```text theme={null}

489 What's the structure of @src/components?

490 ```

491 

492 Это предоставляет список каталогов с информацией о файлах.

493 </Step>

494 

495 <Step title="Ссылка на MCP ресурсы">

496 ```text theme={null}

497 Show me the data from @github:repos/owner/repo/issues

498 ```

499 

500 Это получает данные из подключённых MCP серверов, используя формат @server:resource. См. [MCP ресурсы](/ru/mcp#use-mcp-resources) для подробностей.

501 </Step>

502</Steps>

503 

504<Tip>

505 Советы:

506 

507 * Пути к файлам могут быть относительными или абсолютными

508 * Ссылки на файлы @ добавляют `CLAUDE.md` в каталог файла и родительские каталоги в контекст

509 * Ссылки на каталоги показывают списки файлов, а не содержимое

510 * Вы можете ссылаться на несколько файлов в одном сообщении (например, "@file1.js and @file2.js")

511</Tip>

512 

513***

514 

515## Использование расширенного мышления (Thinking Mode)

516 

517[Расширенное мышление](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) включено по умолчанию, предоставляя Claude пространство для пошагового рассуждения о сложных проблемах перед ответом. Это рассуждение видно в режиме подробности, который вы можете переключить с помощью `Ctrl+O`. Во время расширенного мышления спиннер показывает встроенные подсказки о ходе выполнения, такие как "still thinking" и "almost done thinking", чтобы указать, что Claude активно работает.

518 

519Кроме того, [модели, поддерживающие уровень усилий](/ru/model-config#adjust-effort-level), используют адаптивное рассуждение: вместо фиксированного бюджета токенов мышления модель динамически решает, нужно ли думать и сколько, на основе вашего параметра уровня усилий и поставленной задачи. Адаптивное рассуждение позволяет Claude быстрее отвечать на обычные подсказки и резервировать более глубокое мышление для шагов, которые от этого выигрывают.

520 

521Расширенное мышление особенно ценно для сложных архитектурных решений, сложных ошибок, многошагового планирования реализации и оценки компромиссов между различными подходами.

522 

523<Note>

524 Фразы вроде "think", "think hard" и "think more" интерпретируются как обычные инструкции подсказки и не выделяют токены мышления.

525</Note>

526 

527### Настройка Thinking Mode

528 

529Мышление включено по умолчанию, но вы можете его отрегулировать или отключить.

530 

531| Область | Как настроить | Подробности |

532| ------------------------------------ | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

533| **Уровень усилий** | Запустите `/effort`, отрегулируйте в `/model` или установите [`CLAUDE_CODE_EFFORT_LEVEL`](/ru/env-vars) | Контролируйте глубину мышления на [поддерживаемых моделях](/ru/model-config#adjust-effort-level) |

534| **Ключевое слово `ultrathink`** | Включите "ultrathink" в любом месте вашей подсказки | Добавляет встроенную инструкцию, указывающую модели рассуждать больше на этом ходу. Не изменяет сам уровень усилий; см. [Отрегулируйте уровень усилий](/ru/model-config#adjust-effort-level) для этого |

535| **Сочетание клавиш переключения** | Нажмите `Option+T` (macOS) или `Alt+T` (Windows/Linux) | Переключите мышление включено/выключено для текущего сеанса (все модели). Может потребоваться [конфигурация терминала](/ru/terminal-config) для включения сочетаний клавиш Option |

536| **Глобальное значение по умолчанию** | Используйте `/config` для переключения режима мышления | Устанавливает ваше значение по умолчанию для всех проектов (все модели).<br />Сохраняется как `alwaysThinkingEnabled` в `~/.claude/settings.json` |

537| **Ограничить бюджет токенов** | Установите переменную окружения [`MAX_THINKING_TOKENS`](/ru/env-vars) | Ограничьте бюджет мышления определённым количеством токенов. На моделях с адаптивным рассуждением только `0` применяется, если адаптивное рассуждение не отключено. Пример: `export MAX_THINKING_TOKENS=10000` |

538 

539Чтобы просмотреть процесс мышления Claude, нажмите `Ctrl+O` для переключения режима подробности и просмотрите внутреннее рассуждение, отображаемое как серый курсивный текст.

540 

541### Как работает расширенное мышление

542 

543Расширенное мышление контролирует, сколько внутреннего рассуждения Claude выполняет перед ответом. Больше мышления предоставляет больше пространства для изучения решений, анализа граничных случаев и самокоррекции ошибок.

544 

545На [моделях, поддерживающих уровень усилий](/ru/model-config#adjust-effort-level), мышление использует адаптивное рассуждение: модель динамически распределяет токены мышления на основе уровня усилий, который вы выбираете. Это рекомендуемый способ настройки компромисса между скоростью и глубиной рассуждения. Если вы хотите, чтобы Claude думал больше или меньше, чем ваш уровень усилий обычно производит, вы также можете сказать об этом прямо в вашей подсказке или в `CLAUDE.md`.

546 

547С более старыми моделями мышление использует фиксированный бюджет токенов, взятый из вашего бюджета вывода. Бюджет варьируется в зависимости от модели; см. [`MAX_THINKING_TOKENS`](/ru/env-vars) для потолков для каждой модели. Вы можете ограничить бюджет этой переменной окружения или полностью отключить мышление через `/config` или переключение `Option+T`/`Alt+T`.

548 

549На моделях с адаптивным рассуждением `MAX_THINKING_TOKENS` применяется только при установке на `0` для отключения мышления или когда `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` возвращает модель к фиксированному бюджету. `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` применяется только к Opus 4.6 и Sonnet 4.6. Opus 4.7 всегда использует адаптивное рассуждение и не поддерживает фиксированный бюджет мышления. См. [переменные окружения](/ru/env-vars).

550 

551<Warning>

552 Вам выставляется счёт за все использованные токены мышления, даже когда сводки мышления скрыты. В интерактивном режиме мышление по умолчанию отображается как свёрнутая заглушка. Установите `showThinkingSummaries: true` в `settings.json` для отображения полных сводок.

553</Warning>

554 

555***

556 

557## Возобновление предыдущих разговоров

558 

559При запуске Claude Code вы можете возобновить предыдущий сеанс:

560 

561* `claude --continue` продолжает самый последний разговор в текущем каталоге

562* `claude --resume` открывает средство выбора разговора или возобновляет по имени

563* `claude --from-pr 123` возобновляет сеансы, связанные с конкретным pull request

564 

565Из активного сеанса используйте `/resume` для переключения на другой разговор.

566 

567Когда выбранный сеанс старый и достаточно большой, чтобы его повторное прочтение потребило значительную часть ваших лимитов использования, `--resume`, `--continue` и `/resume` предлагают возобновить с резюме вместо загрузки полной транскрипции. Эта подсказка недоступна на Amazon Bedrock, Google Cloud Vertex AI или Microsoft Foundry.

568 

569Сеансы хранятся в каталоге проекта. По умолчанию средство выбора `/resume` показывает интерактивные сеансы из текущего worktree, с сочетаниями клавиш для расширения списка на другие worktrees или проекты, поиска, предпросмотра и переименования. См. [Используйте средство выбора сеанса](#use-the-session-picker) ниже для полного справочника сочетаний клавиш.

570 

571Когда вы выбираете сеанс из другого worktree того же репозитория, Claude Code возобновляет его напрямую без необходимости сначала переключать каталоги. Выбор сеанса из несвязанного проекта копирует команду `cd` и возобновления в буфер обмена вместо этого.

572 

573Возобновление по имени разрешается в текущем репозитории и его worktrees. Как `claude --resume <name>`, так и `/resume <name>` ищут точное совпадение и возобновляют его напрямую, даже если сеанс находится в другом worktree.

574 

575Когда имя неоднозначно, `claude --resume <name>` открывает средство выбора с предварительно заполненным именем в качестве поискового термина. `/resume <name>` из активного сеанса вместо этого сообщает об ошибке, поэтому запустите `/resume` без аргумента для открытия средства выбора и выбора.

576 

577Сеансы, созданные с помощью `claude -p` или вызовов SDK, не отображаются в средстве выбора, но вы всё равно можете возобновить один, передав его ID сеанса напрямую в `claude --resume <session-id>`.

578 

579### Назовите ваши сеансы

580 

581Дайте сеансам описательные имена, чтобы найти их позже. Это лучшая практика при работе над несколькими задачами или функциями.

582 

583<Steps>

584 <Step title="Назовите сеанс">

585 Назовите сеанс при запуске с `-n`:

586 

587 ```bash theme={null}

588 claude -n auth-refactor

589 ```

590 

591 Или используйте `/rename` во время сеанса, что также показывает имя на строке подсказки:

592 

593 ```text theme={null}

594 /rename auth-refactor

595 ```

596 

597 Вы также можете переименовать любой сеанс из средства выбора: запустите `/resume`, перейдите к сеансу и нажмите `Ctrl+R`.

598 </Step>

599 

600 <Step title="Возобновите по имени позже">

601 Из командной строки:

602 

603 ```bash theme={null}

604 claude --resume auth-refactor

605 ```

606 

607 Или из активного сеанса:

608 

609 ```text theme={null}

610 /resume auth-refactor

611 ```

612 </Step>

613</Steps>

614 

615### Используйте средство выбора сеанса

616 

617Команда `/resume` (или `claude --resume` без аргументов) открывает интерактивное средство выбора сеанса со следующими функциями:

618 

619**Сочетания клавиш в средстве выбора:**

620 

621| Сочетание клавиш | Действие |

622| :------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

623| `↑` / `↓` | Навигация между сеансами |

624| `→` / `←` | Развернуть или свернуть сгруппированные сеансы |

625| `Enter` | Выберите и возобновите выделенный сеанс |

626| `Space` | Предпросмотр содержимого сеанса. `Ctrl+V` также работает на терминалах, которые не захватывают его как вставку |

627| `Ctrl+R` | Переименуйте выделенный сеанс |

628| `/` или любой печатный символ, кроме `Space` | Введите режим поиска и отфильтруйте сеансы |

629| `Ctrl+A` | Показать сеансы из всех проектов на этой машине. Нажмите снова для восстановления текущего репозитория |

630| `Ctrl+W` | Показать сеансы из всех worktrees текущего репозитория. Нажмите снова для восстановления текущего worktree. Показывается только в репозиториях с несколькими worktrees |

631| `Ctrl+B` | Отфильтруйте к сеансам из вашей текущей ветки git. Нажмите снова для показа сеансов из всех веток |

632| `Esc` | Выход из средства выбора или режима поиска |

633 

634**Организация сеанса:**

635 

636Средство выбора отображает сеансы с полезными метаданными:

637 

638* Имя сеанса, если установлено, иначе сводка разговора или первая подсказка пользователя

639* Время, прошедшее с момента последней активности

640* Количество сообщений

641* Ветка Git (если применимо)

642* Путь проекта, показанный после расширения на все проекты с помощью `Ctrl+A`

643 

644Разветвлённые сеансы (созданные с помощью `/branch`, `/rewind` или `--fork-session`) сгруппированы под их корневым сеансом, что облегчает поиск связанных разговоров.

645 

646<Tip>

647 Советы:

648 

649 * **Назовите сеансы рано**: Используйте `/rename` при начале работы над отдельной задачей — намного легче найти "payment-integration", чем "explain this function" позже

650 * Используйте `--continue` для быстрого доступа к вашему самому последнему разговору в текущем каталоге

651 * Используйте `--resume session-name`, когда вы знаете, какой сеанс вам нужен

652 * Используйте `--resume` (без имени), когда вам нужно просмотреть и выбрать

653 * Для скриптов используйте `claude --continue --print "prompt"` для возобновления в неинтерактивном режиме

654 * Нажмите `Space` в средстве выбора для предпросмотра сеанса перед его возобновлением

655 * Возобновлённый разговор начинается с той же модели и конфигурации, что и оригинал

656 

657 Как это работает:

658 

659 1. **Хранилище разговоров**: Все разговоры автоматически сохраняются локально с полной историей сообщений

660 2. **Десериализация сообщений**: При возобновлении вся история сообщений восстанавливается для сохранения контекста

661 3. **Состояние инструмента**: Использование инструмента и результаты из предыдущего разговора сохраняются

662 4. **Восстановление контекста**: Разговор возобновляется со всем предыдущим контекстом нетронутым

663</Tip>

664 

665***

666 

667## Запуск параллельных сеансов Claude Code с Git worktrees

668 

669При работе над несколькими задачами одновременно вам нужно, чтобы каждый сеанс Claude имел свою копию кодовой базы, чтобы изменения не конфликтовали. Git worktrees решают эту проблему, создавая отдельные рабочие каталоги, которые имеют свои собственные файлы и ветку, при этом совместно используя одну и ту же историю репозитория и удалённые соединения. Это означает, что вы можете иметь Claude, работающего над функцией в одном worktree, пока исправляете ошибку в другом, без того чтобы один сеанс мешал другому.

670 

671Используйте флаг `--worktree` (`-w`) для создания изолированного worktree и запуска Claude в нём. Значение, которое вы передаёте, становится именем каталога worktree и именем ветки:

672 

673```bash theme={null}

674# Запустите Claude в worktree с именем "feature-auth"

675# Создаёт .claude/worktrees/feature-auth/ с новой веткой

676claude --worktree feature-auth

677 

678# Запустите другой сеанс в отдельном worktree

679claude --worktree bugfix-123

680```

681 

682Если вы опустите имя, Claude автоматически создаст случайное:

683 

684```bash theme={null}

685# Автоматически создаёт имя вроде "bright-running-fox"

686claude --worktree

687```

688 

689Worktrees создаются в `<repo>/.claude/worktrees/<name>` и ветвятся из ветки удалённого репозитория по умолчанию, на которую указывает `origin/HEAD`. Ветка worktree названа `worktree-<name>`.

690 

691Базовая ветка не настраивается через флаг или параметр Claude Code. `origin/HEAD` — это ссылка, хранящаяся в вашем локальном каталоге `.git`, которую Git установил один раз при клонировании. Если ветка по умолчанию репозитория позже изменится на GitHub или GitLab, ваша локальная `origin/HEAD` продолжит указывать на старую, и worktrees будут ветвиться оттуда. Чтобы повторно синхронизировать вашу локальную ссылку с тем, что удалённый сервер в настоящее время считает своей веткой по умолчанию:

692 

693```bash theme={null}

694git remote set-head origin -a

695```

696 

697Это стандартная команда Git, которая обновляет только ваш локальный каталог `.git`. Ничего на удалённом сервере не изменяется. Если вы хотите, чтобы worktrees базировались на конкретной ветке, а не на удалённой ветке по умолчанию, установите её явно с помощью `git remote set-head origin your-branch-name`.

698 

699Для полного контроля над тем, как создаются worktrees, включая выбор другой базы для каждого вызова, настройте [hook WorktreeCreate](/ru/hooks#worktreecreate). Hook заменяет логику `git worktree` Claude Code по умолчанию полностью, поэтому вы можете получить и ветвиться от любого ref, который вам нужен.

700 

701Вы также можете попросить Claude "work in a worktree" или "start a worktree" во время сеанса, и он автоматически создаст один.

702 

703### Worktrees subagents

704 

705Subagents также могут использовать изоляцию worktree для параллельной работы без конфликтов. Попросите Claude "use worktrees for your agents" или настройте это в [пользовательском subagent](/ru/sub-agents#supported-frontmatter-fields), добавив `isolation: worktree` в frontmatter агента. Каждый subagent получает свой собственный worktree, который автоматически очищается, когда subagent завершает работу без изменений.

706 

707### Очистка worktrees

708 

709Когда вы выходите из сеанса worktree, Claude обрабатывает очистку на основе того, внесли ли вы изменения:

710 

711* **Нет изменений**: worktree и его ветка удаляются автоматически

712* **Существуют изменения или коммиты**: Claude предлагает вам сохранить или удалить worktree. Сохранение сохраняет каталог и ветку, чтобы вы могли вернуться позже. Удаление удаляет каталог worktree и его ветку, отбрасывая все незафиксированные изменения и коммиты

713 

714Subagent worktrees, оставленные без присмотра из-за сбоя или прерванного параллельного запуска, удаляются автоматически при запуске, если они старше вашего параметра [`cleanupPeriodDays`](/ru/settings#available-settings), при условии, что они не имеют незафиксированных изменений, неотслеживаемых файлов и непушированных коммитов. Worktrees, которые вы создаёте с помощью `--worktree`, никогда не удаляются этой очисткой.

715 

716Для очистки worktrees вне сеанса Claude используйте [ручное управление worktrees](#manage-worktrees-manually).

717 

718<Tip>

719 Добавьте `.claude/worktrees/` в ваш `.gitignore` для предотвращения появления содержимого worktree как неотслеживаемых файлов в вашем основном репозитории.

720</Tip>

721 

722### Копирование файлов, игнорируемых gitignore, в worktrees

723 

724Git worktrees — это свежие checkouts, поэтому они не включают неотслеживаемые файлы, такие как `.env` или `.env.local` из вашего основного репозитория. Чтобы автоматически копировать эти файлы при создании worktree Claude, добавьте файл `.worktreeinclude` в корень вашего проекта.

725 

726Файл использует синтаксис `.gitignore` для перечисления файлов для копирования. Копируются только файлы, которые соответствуют паттерну и также игнорируются gitignore, поэтому отслеживаемые файлы никогда не дублируются.

727 

728```text .worktreeinclude theme={null}

729.env

730.env.local

731config/secrets.json

732```

733 

734Это применяется к worktrees, созданным с помощью `--worktree`, worktrees subagents и параллельным сеансам в [настольном приложении](/ru/desktop#work-in-parallel-with-sessions).

735 

736### Ручное управление worktrees

737 

738Для большего контроля над расположением worktree и конфигурацией ветки создавайте worktrees непосредственно с Git. Это полезно, когда вам нужно проверить конкретную существующую ветку или разместить worktree вне репозитория.

739 

740```bash theme={null}

741# Создайте worktree с новой веткой

742git worktree add ../project-feature-a -b feature-a

743 

744# Создайте worktree с существующей веткой

745git worktree add ../project-bugfix bugfix-123

746 

747# Запустите Claude в worktree

748cd ../project-feature-a && claude

749 

750# Очистите при завершении

751git worktree list

752git worktree remove ../project-feature-a

753```

754 

755Узнайте больше в [официальной документации Git worktree](https://git-scm.com/docs/git-worktree).

756 

757<Tip>

758 Помните инициализировать вашу среду разработки в каждом новом worktree в соответствии с установкой вашего проекта. В зависимости от вашего стека это может включать запуск установки зависимостей (`npm install`, `yarn`), настройку виртуальных окружений или следование стандартному процессу установки вашего проекта.

759</Tip>

760 

761### Контроль версий, не основанный на git

762 

763Изоляция worktree работает с git по умолчанию. Для других систем контроля версий, таких как SVN, Perforce или Mercurial, настройте [hooks WorktreeCreate и WorktreeRemove](/ru/hooks#worktreecreate) для предоставления пользовательской логики создания и очистки worktree. При настройке эти hooks заменяют поведение git по умолчанию при использовании `--worktree`, поэтому [`.worktreeinclude`](#copy-gitignored-files-to-worktrees) не обрабатывается. Скопируйте любые локальные файлы конфигурации внутри вашего скрипта hook вместо этого.

764 

765Для автоматизированной координации параллельных сеансов с общими задачами и обменом сообщениями см. [команды агентов](/ru/agent-teams).

766 

767***

768 

769## Получайте уведомления, когда Claude нуждается в вашем внимании

770 

771Когда вы запускаете долгоживущую задачу и переключаетесь на другое окно, вы можете настроить уведомления рабочего стола, чтобы узнать, когда Claude завершит работу или нуждается в вашем вводе. Это использует событие `Notification` [hook](/ru/hooks-guide#get-notified-when-claude-needs-input), которое срабатывает всякий раз, когда Claude ожидает разрешения, неактивен и готов к новой подсказке, или завершает аутентификацию.

772 

773<Steps>

774 <Step title="Добавьте hook в ваши параметры">

775 Откройте `~/.claude/settings.json` и добавьте hook `Notification`, который вызывает команду уведомления вашей платформы:

776 

777 <Tabs>

778 <Tab title="macOS">

779 ```json theme={null}

780 {

781 "hooks": {

782 "Notification": [

783 {

784 "matcher": "",

785 "hooks": [

786 {

787 "type": "command",

788 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

789 }

790 ]

791 }

792 ]

793 }

794 }

795 ```

796 </Tab>

797 

798 <Tab title="Linux">

799 ```json theme={null}

800 {

801 "hooks": {

802 "Notification": [

803 {

804 "matcher": "",

805 "hooks": [

806 {

807 "type": "command",

808 "command": "notify-send 'Claude Code' 'Claude Code needs your attention'"

809 }

810 ]

811 }

812 ]

813 }

814 }

815 ```

816 </Tab>

817 

818 <Tab title="Windows">

819 ```json theme={null}

820 {

821 "hooks": {

822 "Notification": [

823 {

824 "matcher": "",

825 "hooks": [

826 {

827 "type": "command",

828 "command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""

829 }

830 ]

831 }

832 ]

833 }

834 }

835 ```

836 </Tab>

837 </Tabs>

838 

839 Если ваш файл параметров уже имеет ключ `hooks`, объедините запись `Notification` в него, а не перезаписывайте. Вы также можете попросить Claude написать hook для вас, описав то, что вы хотите в CLI.

840 </Step>

841 

842 <Step title="Опционально сузьте matcher">

843 По умолчанию hook срабатывает на всех типах уведомлений. Чтобы срабатывать только для конкретных событий, установите поле `matcher` на одно из этих значений:

844 

845 | Matcher | Срабатывает когда |

846 | :--------------------- | :--------------------------------------------------------------- |

847 | `permission_prompt` | Claude нуждается в вашем одобрении для использования инструмента |

848 | `idle_prompt` | Claude завершил и ожидает вашей следующей подсказки |

849 | `auth_success` | Аутентификация завершена |

850 | `elicitation_dialog` | Сервер MCP открывает форму запроса информации |

851 | `elicitation_complete` | Форма запроса информации MCP отправлена или отклонена |

852 | `elicitation_response` | Ответ на запрос информации MCP отправляется обратно на сервер |

853 </Step>

854 

855 <Step title="Проверьте hook">

856 Введите `/hooks` и выберите `Notification` для подтверждения появления hook. Выбор его показывает команду, которая будет запущена. Чтобы протестировать её от начала до конца, попросите Claude запустить команду, требующую разрешения, и переключитесь от терминала, или попросите Claude напрямую запустить уведомление.

857 </Step>

858</Steps>

859 

860Для полной схемы событий и типов уведомлений см. [справочник Notification](/ru/hooks#notification).

861 

862***

863 

864## Используйте Claude как утилиту в стиле unix

865 

866### Добавьте Claude в ваш процесс проверки

867 

868Предположим, вы хотите использовать Claude Code как линтер или рецензент кода.

869 

870**Добавьте Claude в ваш скрипт сборки:**

871 

872```json theme={null}

873// package.json

874{

875 ...

876 "scripts": {

877 ...

878 "lint:claude": "claude -p 'you are a linter. please look at the changes vs. main and report any issues related to typos. report the filename and line number on one line, and a description of the issue on the second line. do not return any other text.'"

879 }

880}

881```

882 

883<Tip>

884 Советы:

885 

886 * Используйте Claude для автоматического просмотра кода в вашем конвейере CI/CD

887 * Настройте подсказку для проверки конкретных проблем, релевантных для вашего проекта

888 * Рассмотрите создание нескольких скриптов для различных типов проверки

889</Tip>

890 

891### Pipe in, pipe out

892 

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

894 

895**Передайте данные через Claude:**

896 

897```bash theme={null}

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

899```

900 

901<Tip>

902 Советы:

903 

904 * Используйте pipes для интеграции Claude в существующие shell-скрипты

905 * Комбинируйте с другими Unix-инструментами для мощных рабочих процессов

906 * Рассмотрите использование `--output-format` для структурированного вывода

907</Tip>

908 

909### Контролируйте формат вывода

910 

911Предположим, вам нужен вывод Claude в конкретном формате, особенно при интеграции Claude Code в скрипты или другие инструменты.

912 

913<Steps>

914 <Step title="Используйте текстовый формат (по умолчанию)">

915 ```bash theme={null}

916 cat data.txt | claude -p 'summarize this data' --output-format text > summary.txt

917 ```

918 

919 Это выводит только простой текстовый ответ Claude (поведение по умолчанию).

920 </Step>

921 

922 <Step title="Используйте JSON формат">

923 ```bash theme={null}

924 cat code.py | claude -p 'analyze this code for bugs' --output-format json > analysis.json

925 ```

926 

927 Это выводит JSON массив сообщений с метаданными, включая стоимость и продолжительность.

928 </Step>

929 

930 <Step title="Используйте потоковый JSON формат">

931 ```bash theme={null}

932 cat log.txt | claude -p 'parse this log file for errors' --output-format stream-json

933 ```

934 

935 Это выводит серию JSON объектов в реальном времени по мере обработки запроса Claude. Каждое сообщение является действительным JSON объектом, но весь вывод не является действительным JSON при объединении.

936 </Step>

937</Steps>

938 

939<Tip>

940 Советы:

941 

942 * Используйте `--output-format text` для простых интеграций, где вам просто нужен ответ Claude

943 * Используйте `--output-format json`, когда вам нужен полный журнал разговора

944 * Используйте `--output-format stream-json` для вывода в реальном времени каждого хода разговора

945</Tip>

946 

947***

948 

949## Запуск Claude по расписанию

950 

951Предположим, вы хотите, чтобы Claude автоматически выполнял задачу на повторяющейся основе, например просматривая открытые PR каждое утро, проверяя зависимости еженедельно или проверяя сбои CI в течение ночи.

952 

953Выберите вариант планирования на основе того, где вы хотите, чтобы задача выполнялась:

954 

955| Вариант | Где выполняется | Лучше всего для |

956| :------------------------------------------------------------------- | :--------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

957| [Routines](/ru/routines) | Инфраструктура, управляемая Anthropic | Задачи, которые должны выполняться даже когда ваш компьютер выключен. Также может срабатывать на вызовы API или события GitHub в дополнение к расписанию. Настройте на [claude.ai/code/routines](https://claude.ai/code/routines). |

958| [Запланированные задачи рабочего стола](/ru/desktop-scheduled-tasks) | Ваша машина, через настольное приложение | Задачи, которым нужен прямой доступ к локальным файлам, инструментам или незафиксированным изменениям. |

959| [GitHub Actions](/ru/github-actions) | Ваш конвейер CI | Задачи, связанные с событиями репозитория, такими как открытые PR, или расписания cron, которые должны находиться рядом с конфигурацией рабочего процесса. |

960| [`/loop`](/ru/scheduled-tasks) | Текущий сеанс CLI | Быстрый опрос во время открытого сеанса. Задачи отменяются при начале нового разговора; `--resume` и `--continue` восстанавливают неистекшие. |

961 

962<Tip>

963 При написании подсказок для запланированных задач будьте явны в отношении того, что означает успех и что делать с результатами. Задача выполняется автономно, поэтому она не может задавать уточняющие вопросы. Например: "Просмотрите открытые PR с меткой `needs-review`, оставьте встроенные комментарии по любым проблемам и опубликуйте сводку в канале `#eng-reviews` Slack."

964</Tip>

965 

966***

967 

968## Спросите Claude о его возможностях

969 

970Claude имеет встроенный доступ к своей документации и может ответить на вопросы о своих собственных функциях и ограничениях.

971 

972### Примеры вопросов

973 

974```text theme={null}

975can Claude Code create pull requests?

976```

977 

978```text theme={null}

979how does Claude Code handle permissions?

980```

981 

982```text theme={null}

983what skills are available?

984```

985 

986```text theme={null}

987how do I use MCP with Claude Code?

988```

989 

990```text theme={null}

991how do I configure Claude Code for Amazon Bedrock?

992```

993 

994```text theme={null}

995what are the limitations of Claude Code?

996```

997 

998<Note>

999 Claude предоставляет ответы на основе документации на эти вопросы. Для исполняемых примеров, запустите `/powerup` для интерактивных уроков с анимированными демонстрациями, или обратитесь к конкретным разделам рабочих процессов выше.

1000</Note>

1001 

1002<Tip>

1003 Советы:

1004 

1005 * Claude всегда имеет доступ к последней документации Claude Code, независимо от версии, которую вы используете

1006 * Задавайте конкретные вопросы для получения подробных ответов

1007 * Claude может объяснить сложные функции, такие как интеграция MCP, конфигурации предприятия и продвинутые рабочие процессы

1008</Tip>

1009 

1010***

1011 

1012## Следующие шаги

1013 

1014<CardGroup cols={2}>

1015 <Card title="Лучшие практики" icon="lightbulb" href="/ru/best-practices">

1016 Паттерны для получения максимума от Claude Code

1017 </Card>

1018 

1019 <Card title="Как работает Claude Code" icon="gear" href="/ru/how-claude-code-works">

1020 Поймите агентский цикл и управление контекстом

1021 </Card>

1022 

1023 <Card title="Расширьте Claude Code" icon="puzzle-piece" href="/ru/features-overview">

1024 Добавьте skills, hooks, MCP, subagents и plugins

1025 </Card>

1026 

1027 <Card title="Справочная реализация" icon="code" href="https://github.com/anthropics/claude-code/tree/main/.devcontainer">

1028 Клонируйте справочную реализацию контейнера разработки

1029 </Card>

1030</CardGroup>

communications-kit.md +517 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Коммуникационный набор

6 

7> Объявления о запуске, сообщения для капельной кампании и ответы на часто задаваемые вопросы для развертывания Claude Code в вашей инженерной организации.

8 

9Эта страница предназначена для администраторов и руководителей инженерных групп, развертывающих Claude Code в команде. Она содержит готовые к использованию объявления о запуске, кампанию советов и трюков, а также однострочные ответы на часто задаваемые вопросы.

10 

11<Note>

12 Рассматривайте все здесь как черновой текст, а не готовый текст. Переформулируйте каждое сообщение голосом вашей организации, замените примеры задач на реальные ошибки и модули из вашей собственной кодовой базы и замените `[текст в скобках]` перед отправкой. Объявления, которые способствуют внедрению, — это те, которые читаются так, как будто их написал кто-то из вашей компании.

13</Note>

14 

15## Коммуникация при запуске

16 

17Одно объявление в двух форматах плюс два дополнительных варианта. Выберите то, что подходит вашему развертыванию, и переформулируйте его оттуда.

18 

19### Перед отправкой

20 

21Пройдите этот контрольный список перед отправкой объявления. Каждый пункт закрывает пробел, который в противном случае превращается в тему поддержки в день запуска.

22 

23| Пункт | Почему это важно |

24| ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

25| Канал `#claude-code` создан и связан в сообщении | Дает вопросам одно место для приземления |

26| Команда установки протестирована хотя бы на одной машине в вашей среде | Выявляет проблемы с прокси или брандмауэром до того, как все столкнутся с ними одновременно |

27| Ссылка на безопасность и обработку данных готова ([Использование данных](/ru/data-usage) или ваш внутренний эквивалент) | "Куда идет мой код?" будет первым ответом |

28| Выбрана одна конкретная первая задача, реальная ошибка или файл в вашей кодовой базе | Общие примеры не работают; "исправить нестабильный тест в `auth_test.go`" работает |

29| Назначенный владелец канала на первые 48 часов | Неответные вопросы в день запуска убивают импульс |

30| Спонсор из руководства, готовый отправить или подписать объявление | Запуски, отправленные от имени руководителя, последовательно показывают более высокий уровень внедрения в первую неделю, чем те же сообщения от администратора или команды инструментов |

31 

32### Объявление

33 

34Используйте это как стандартное сообщение развертывания для всей организации. Оно объясняет, что такое Claude Code, предоставляет двухминутный путь установки, дает читателям одну конкретную задачу для попытки и отвечает на вопрос "куда идет мой код?" прежде чем кто-либо должен спросить.

35 

36<Tabs>

37 <Tab title="Email">

38 ```text theme={null}

39 Тема: Claude Code доступен для [Engineering / вашей команды]

40 

41 Команда,

42 

43 Начиная с сегодня у вас есть доступ к Claude Code, агенту AI для кодирования, который работает в

44 вашем терминале, читает вашу фактическую кодовую базу и выполняет реальные задачи от начала до конца:

45 отладка, рефакторинг, тесты, PR. Это не автодополнение и не окно чата. Он редактирует файлы,

46 запускает ваши команды и просит разрешение перед чем-либо рискованным.

47 

48 Начните работу за две минуты:

49 

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

51 cd <your-repo>

52 claude

53 

54 Затем запустите /init один раз. Claude читает ваш проект и пишет CLAUDE.md с

55 вашими командами сборки и соглашениями, поэтому вы перестанете переобъяснять основы.

56 

57 Затем попробуйте одно из этих действий в репозитории, в котором вы уже находитесь:

58 

59 - "Тест в [файл] нестабилен. Выясните почему и исправьте"

60 - "Расскажите мне, как [модуль] обрабатывает [X]"

61 - "Посмотрите на мой рабочий diff и скажите мне, что рискованно перед тем, как я отправлю"

62 

63 Куда идет ваш код: Claude Code работает в вашем терминале и разговаривает напрямую

64 с API Anthropic, без сторонних серверов в цепи. Он просит разрешение перед

65 редактированием файлов или запуском команд. В соответствии с нашим соглашением Enterprise,

66 Anthropic не использует ваш код или подсказки для обучения своих моделей.

67 Подробности: https://code.claude.com/docs/ru/data-usage

68 https://code.claude.com/docs/ru/security

69 

70 Куда обратиться с вопросами: #claude-code. [Имя владельца] следит за этим

71 на этой неделе.

72 

73 - [Имя]

74 

75 P.S. Предпочитаете свой редактор? Есть расширение VS Code и плагин JetBrains.

76 Тот же агент, без терминала.

77 ```

78 </Tab>

79 

80 <Tab title="Slack or Teams">

81 ```markdown theme={null}

82 🚀 *Claude Code доступен для [команды]*

83 

84 Агент AI для кодирования, работает в вашем терминале, читает ваш репозиторий, выполняет реальную работу:

85 ошибки, рефакторинг, тесты, PR. Просит разрешение перед тем, как что-либо трогать.

86 

87 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` → `claude`

88 

89 *Первое, что нужно попробовать* → запустите `/init`, затем: "тест в [файл] нестабилен,

90 выясните почему и исправьте".

91 

92 🔒 Работает в вашем терминале, разговаривает только с API Anthropic. В соответствии с нашим

93 планом Enterprise ваш код и подсказки не используются для обучения моделей.

94 Использование данных → https://code.claude.com/docs/ru/data-usage

95 

96 📚 Quickstart · VS Code · Бесплатный курс на 1 час

97 https://code.claude.com/docs/ru/quickstart

98 https://code.claude.com/docs/ru/vs-code

99 https://anthropic.skilljar.com/claude-code-in-action

100 

101 Вопросы → в этой ветке. [Владелец] на точке.

102 ```

103 </Tab>

104</Tabs>

105 

106### Вариант спонсора из руководства

107 

108Отправьте это от вашего спонсирующего руководителя, такого как CTO, CIO или SVP Engineering, под его именем и с его учетной записи. Запуски, отправленные от имени руководителя, последовательно показывают более высокие показатели открытия и более быструю активацию в первую неделю, чем то же сообщение от администратора или команды инструментов. Это сигнализирует о приоритете компании, а не об опциональном эксперименте.

109 

110Эта версия намеренно сокращена до одной просьбы: установить и запустить на одной реальной задаче. Работа руководителя — заставить просьбу приземлиться; стандартное объявление и `#claude-code` обрабатывают как.

111 

112<Tabs>

113 <Tab title="Email">

114 ```text theme={null}

115 Тема: Одно, что я хотел бы, чтобы каждый инженер попробовал на этой неделе

116 

117 Команда,

118 

119 Мы включили Claude Code для всей инженерии. Это агент AI

120 который работает непосредственно в вашем терминале, на вашей фактической кодовой базе, и

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

122 чтобы все это использовали на этой неделе.

123 

124 Я прошу десять минут:

125 

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

127 cd <your-repo>

128 claude

129 

130 Затем дайте ему одну реальную задачу: ошибку, которую вы откладывали, или "расскажите мне,

131 как работает [модуль]".

132 

133 Это вся просьба. [Имя владельца] и команда находятся в #claude-code для

134 всего, что вы встретите на пути.

135 

136 - [Имя руководителя]

137 [Должность]

138 ```

139 </Tab>

140 

141 <Tab title="Slack or Teams">

142 ```markdown theme={null}

143 📣 *От [Имя руководителя]: одно, что нужно попробовать на этой неделе*

144 

145 Мы включили *Claude Code* для всей инженерии. Ранние результаты достаточно

146 сильны, чтобы я просил всех дать ему десять минут на реальную работу на этой неделе.

147 

148 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` →

149 `claude` → дайте ему одну реальную задачу.

150 

151 Вот и все. Вопросы → #claude-code.

152 ```

153 </Tab>

154</Tabs>

155 

156### Вариант пилотной группы

157 

158Используйте для поэтапного развертывания. Отправьте только пилотной когорте.

159 

160```text theme={null}

161Тема: Вы в пилотной программе Claude Code

162 

163[Имя / команда],

164 

165Вы в первой волне Claude Code в [компания]. Мы выбрали эту группу

166потому что вы будете использовать это на реальных проблемах и скажете нам правду об этом.

167 

168Просьба: используйте это на по крайней мере одной реальной задаче на этой неделе, затем оставьте заметку в

169#claude-code-pilot, охватывающую то, что сработало, что было раздражающим и что

170вас удивило. Эта обратная связь определяет, как мы развернем это для всех остальных.

171 

172[Продолжите с "Начните работу за две минуты" из стандартного объявления]

173 

174Одна дополнительная вещь для пилотов: при первом изменении нескольких файлов нажмите Shift+Tab

175пока не увидите "plan". Claude выложит ровно то, что он намеревается сделать

176перед тем, как трогать файл. Это самый быстрый способ откалибровать, насколько ему доверять.

177```

178 

179### DM для набора чемпионов

180 

181После запуска отправьте DM двум или трем людям, которые наиболее активны в `#claude-code`.

182 

183```text theme={null}

184Привет [имя], ваши посты в #claude-code делают больше для внедрения, чем мое

185объявление. Пара людей сказала мне, что ваша [ветка / скриншот]

186была причиной того, что они это действительно попробовали.

187 

188Хотите сделать это полуофициальным? Низкие затраты: в основном продолжайте публиковать то, что

189вы публикуете, плюс первый доступ к новым функциям и прямая линия к

190команде Anthropic. Я могу поделиться коротким руководством, если вы согласны.

191```

192 

193## Кампания советов и трюков

194 

195Готовые к вставке сообщения Slack или Teams, предназначенные для активации функций после запуска. Каждое следует одному и тому же шаблону: крючок, выплата, подсказка "попробуйте сейчас" и ссылка на документацию. Капайте их один или два раза в неделю в `#claude-code`, или выберите несколько, которые соответствуют пробелам вашей команды. Они стоят отдельно без требуемого порядка.

196 

197Скопируйте текст сообщения из каждого блока прямо в Slack или Teams. Замените `[текст в скобках]` перед отправкой.

198 

199### Начало работы

200 

201**Выбор правильной модели**

202 

203```markdown theme={null}

204🎯 *Совет: Сопоставьте модель с моментом*

205 

206Использование Opus для исправления опечатки тратит вычисления. Использование Haiku для

20712-файлового рефакторинга — это просьба о переделке.

208 

209Claude Code работает на тех же моделях, что и приложение Claude, и вы можете переключаться

210в середине сеанса. *Sonnet* — это рабочая лошадка по умолчанию для повседневной работы с функциями,

211ошибок, тестов и обзоров. Обратитесь к *Opus* для крупных рефакторингов, сложной

212отладки или чего-либо высокого риска. Переходите на *Haiku* для быстрых вопросов,

213форматирования и механических правок, где скорость побеждает.

214 

215*Попробуйте сейчас:* введите `/model` и выберите Sonnet, если вы еще этого не сделали. Это

216правильное значение по умолчанию для большинства задач.

217 

218📖 Конфигурация модели → https://code.claude.com/docs/ru/model-config

219```

220 

221| Модель | Лучше всего для |

222| ------ | -------------------------------------------------------------------------------------------------------------------------- |

223| Opus | Крупномасштабные рефакторинги, сложная отладка, архитектурные решения, высокорисковые изменения |

224| Sonnet | Повседневная работа с функциями, исправления ошибок, тесты, документация, обзор кода. Рекомендуемое значение по умолчанию. |

225| Haiku | Быстрые вопросы, форматирование, механические правки, быстрая итерация |

226 

227**Быстрые победы для попытки в первую очередь**

228 

229```markdown theme={null}

230🚀 *Совет: Три вещи, которые нужно попробовать в первые 10 минут*

231 

232Установили Claude Code, но не уверены, что на самом деле спросить? Начните с

233вещей, которые вас раздражали всю неделю.

234 

235 - Исправьте что-нибудь раздражающее: "тест в [файл] нестабилен, выясните почему"

236 - Ориентируйтесь в коде, который вы не писали: "расскажите мне, как работает [модуль]"

237 - Проверка здравомыслия перед отправкой: "посмотрите на мой рабочий diff и скажите мне, что

238 выглядит рискованно"

239 

240Ни одна из них не требует настройки. Просто `cd` в ваш репозиторий и запустите `claude`.

241 

242*Попробуйте сейчас:* выберите ошибку, которую вы избегали, и вставьте сообщение об ошибке.

243 

244📖 Quickstart → https://code.claude.com/docs/ru/quickstart

245```

246 

247### Память проекта

248 

249**`/init` и CLAUDE.md**

250 

251```markdown theme={null}

252📁 *Совет: Перестаньте переобъяснять ваш репозиторий каждый сеанс*

253 

254Говорите Claude "мы используем pnpm, а не npm" в пятый раз? Есть

255одноразовое исправление.

256 

257Запустите `/init` один раз на репозиторий. Claude читает структуру вашего проекта и пишет

258файл CLAUDE.md с вашими командами сборки, архитектурой и соглашениями.

259Каждый будущий сеанс в этом репозитории автоматически начинается с этого файла. Держите

260его под двумя экранами. Это шпаргалка, а не документация.

261 

262*Попробуйте сейчас:* откройте ваш основной репозиторий, запустите `claude`, введите `/init`. Тридцать

263секунд, окупается каждый сеанс после.

264 

265📖 CLAUDE.md и память проекта → https://code.claude.com/docs/ru/memory

266```

267 

268**@-ссылки**

269 

270```markdown theme={null}

271📎 *Совет: Перестаньте вставлять содержимое файлов в чат*

272 

273Копируете 200 строк компонента в вашу подсказку, чтобы Claude мог "видеть" это?

274Вам не нужно.

275 

276Введите `@` затем путь к файлу. Claude вытягивает файл прямо в контекст.

277Работает и для целых директорий.

278 

279> стили в @src/components/Button.tsx выглядят неправильно, проверьте против

280> @docs/design-system.md

281 

282*Попробуйте сейчас:* введите `@` затем Tab. Автодополнение показывает вам каждый файл в пределах досягаемости.

283 

284📖 Ссылки на файлы → https://code.claude.com/docs/ru/common-workflows

285```

286 

287### Контроль и безопасность

288 

289**Режимы разрешений**

290 

291```markdown theme={null}

292🛡️ *Совет: Один нажатие клавиши между "смотреть, но не трогать" и "просто сделай это"*

293 

294Иногда вы хотите, чтобы Claude просил перед каждым редактированием. Иногда вы просто хотите

295чтобы он отправил. Вы не должны выбирать один навсегда.

296 

297*Shift+Tab* циклирует, сколько свободы получает Claude: *default* просит перед

298рискованным материалом, *acceptEdits* позволяет редактированиям файлов и общим командам файловой системы

299проходить, пока все еще проверяя перед другими командами оболочки, и *plan*

300предлагает изменения для вашего одобрения перед тем, как что-либо будет тронуто. Plan mode — это

301строитель доверия, поэтому начните с него для чего-либо, касающегося нескольких файлов.

302 

303*Попробуйте сейчас:* на вашем следующем рефакторинге нажмите Shift+Tab пока не увидите "plan",

304затем опишите изменение. Вы получите полное предложение перед тем, как один файл переместится.

305 

306📖 Режимы разрешений → https://code.claude.com/docs/ru/permissions

307```

308 

309**Checkpointing и `/rewind`**

310 

311```markdown theme={null}

312⏪ *Совет: Есть кнопка отмены для всего разговора*

313 

314Claude пошел по неправильному пути три хода назад и теперь вы его распутываете?

315Вам не нужно исправлять вперед.

316 

317`/rewind` откатывает к более ранней точке в разговоре, включая

318изменения файлов, которые сделал Claude. Checkpointing автоматический; вы ничего не настраиваете.

319 

320*Попробуйте сейчас:* нажмите *Esc* дважды, чтобы открыть меню rewind, или введите `/rewind`.

321Выберите точку перед тем, как все пошло не так.

322 

323📖 Checkpointing → https://code.claude.com/docs/ru/checkpointing

324```

325 

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

327 

328**MCP connectors**

329 

330```markdown theme={null}

331🔌 *Совет: Позвольте Claude читать ваш трекер проблем, чтобы вам не пришлось вставлять билеты*

332 

333Копирование-вставка билетов Jira в терминал кажется шагом назад.

334Это так.

335 

336Один файл конфигурации (`.mcp.json` в корне вашего проекта) подключает Claude к GitHub,

337Jira, Linear или любому используемому вами трекеру. Затем "какая проблема с наивысшим приоритетом

338назначена мне?" и "продолжайте и исправьте это" происходят в одном разговоре.

339 

340*Попробуйте сейчас:* спросите Claude "установите MCP connector для [GitHub/Jira/Linear]

341в этом репозитории". Он напишет конфигурацию для вас.

342 

343📖 MCP connectors → https://code.claude.com/docs/ru/mcp

344```

345 

346### Автоматизируйте ваши рабочие процессы

347 

348**Skills**

349 

350```markdown theme={null}

351⚡ *Совет: Превратите эту подсказку, которую вы постоянно переписываете, в команду*

352 

353Вводили "суммируйте то, над чем я работал сегодня из git log, отформатируйте для standup"

354три раза на этой неделе? Это slash command, ожидающая своего часа.

355 

356Файл SKILL.md в `.claude/skills/<name>/` становится переиспользуемой подсказкой; введите

357`/name` для запуска. Создайте один во второй раз, когда вы введете многошаговую подсказку,

358которую вы вводили раньше. Самый простой путь: попросите Claude создать это для вас.

359 

360*Попробуйте сейчас:* введите "создайте мне /standup skill, который суммирует то, над чем я работал

361сегодня из git log", затем запустите `/standup` завтра утром.

362 

363📖 Skills → https://code.claude.com/docs/ru/skills

364```

365 

366**Hooks**

367 

368```markdown theme={null}

369🔔 *Совет: Получите уведомление, когда ваш рефакторинг завершится*

370 

371Сидите за своим столом, наблюдая, как Claude работает над длительной задачей? У вас есть

372лучшие дела на эти восемь минут.

373 

374Hooks — это команды оболочки, которые срабатывают на события Claude Code. Stop hook, который

375отправляет уведомление на рабочий стол, означает, что вы можете запустить длительный рефакторинг,

376уйти и получить уведомление в момент, когда это будет сделано.

377 

378*Попробуйте сейчас:* попросите Claude "добавьте Stop hook, который отправляет уведомление на рабочий стол

379когда вы закончите". Он напишет скрипт и подключит его.

380 

381📖 Руководство Hooks → https://code.claude.com/docs/ru/hooks-guide

382```

383 

384### Повседневная разработка

385 

386**Скриншоты и изображения**

387 

388```markdown theme={null}

389📸 *Совет: Перестаньте описывать диалог ошибки. Просто покажите его.*

390 

391Вводите "есть красный ящик, который говорит что-то о нулевой ссылке

392и он указывает на строку 47-ish"? Сделайте скриншот.

393 

394Перетащите скриншот прямо в терминал и Claude видит его: диалоги ошибок, макеты UI,

395фотографии доски, экспорты Figma. *Ctrl+V* вставляет из буфера обмена (используйте Ctrl+V на macOS тоже,

396не Cmd+V).

397 

398*Попробуйте сейчас:* в следующий раз, когда что-то визуальное сломается, сделайте скриншот и вставьте его

399прямо в подсказку. Затем просто введите "что здесь не так?"

400 

401📖 Работа с изображениями → https://code.claude.com/docs/ru/common-workflows

402```

403 

404**Git workflows**

405 

406```markdown theme={null}

407🌿 *Совет: Передайте всю git церемонию*

408 

409Исправление заняло 5 минут. Сообщение коммита, ветка и описание PR

410заняли 15. Это соотношение неправильно.

411 

412Claude обрабатывает полный git поток: коммиты с обычными сообщениями,

413ветки, PR с надлежащими резюме. Одна просьба: "исправьте off-by-one, коммитьте с

414обычным сообщением коммита и откройте PR." Рецензируете чужую работу? Вставьте URL PR и

415попросите Claude пройтись по diff.

416 

417*Попробуйте сейчас:* после вашего следующего исправления, вместо переключения на ваш git клиент,

418просто введите "коммитьте это с хорошим сообщением и откройте PR".

419 

420📖 Создание pull requests → https://code.claude.com/docs/ru/common-workflows

421```

422 

423### Поделитесь и масштабируйте

424 

425**Plugins**

426 

427```markdown theme={null}

428📦 *Совет: Кто-то, вероятно, уже построил этот skill*

429 

430Собираетесь потратить час на создание команды `/deploy`? Проверьте, если это

431уже существует.

432 

433Skills объединяются и распределяются как plugins. `/plugin` просматривает то, что доступно

434и устанавливает в один шаг. Пять минут просмотра могут сэкономить час строительства.

435 

436*Попробуйте сейчас:* введите `/plugin` и прокрутите. Вы найдете по крайней мере одно

437что вы не знали, что хотите.

438 

439📖 Plugins → https://code.claude.com/docs/ru/plugins

440```

441 

442### Безопасность и администрирование

443 

444**Архитектура безопасности**

445 

446```markdown theme={null}

447🔐 *Совет: Ответ на "это безопасно?" на следующий раз, когда вас спросят*

448 

449Кто-то в вашей команде спросит "подождите, куда идет мой код?"

450Вот краткая версия, которую вы можете вставить.

451 

452Разрешение в первую очередь по дизайну. Каждое редактирование файла, команда оболочки и внешний

453вызов контролируются вашим одобрением. CLI работает в вашем терминале и разговаривает

454напрямую с API Anthropic, без сторонних серверов, и поддерживает опциональное

455изоляцию на уровне ОС для команд оболочки. В соответствии с нашим планом Enterprise,

456Anthropic не использует ваш код или подсказки для обучения своих моделей.

457 

458*Попробуйте сейчас:* сохраните эти две ссылки на следующий раз, когда вопрос возникнет.

459Они отвечают на большинство вопросов безопасности.

460 

461📖 https://code.claude.com/docs/ru/security

462📖 https://code.claude.com/docs/ru/data-usage

463```

464 

465**Best practices**

466 

467```markdown theme={null}

468✅ *Совет: 4 привычки, которые отделяют "попробовал один раз" от "использую ежедневно"*

469 

470Большинство людей, которые отскочили от Claude Code, пропустили одну из них. Большинство людей

471которые остались, сделали все четыре в первую неделю.

472 

473 - Начните в plan mode для чего-либо, касающегося нескольких файлов

474 - Запустите /init рано; контекст усугубляется

475 - Рецензируйте diffs перед коммитом; Claude может быть уверенно неправ

476 - Проверьте изменения, которые касаются критических путей; рассматривайте это как острого

477 младшего, а не оракула

478 

479*Попробуйте сейчас:* если вы сделали только одно или два из них, выберите то, которое вы

480пропустили и сделайте это на вашей следующей задаче. Опубликуйте то, что изменилось в #claude-code.

481 

482📖 Best practices → https://code.claude.com/docs/ru/best-practices

483```

484 

485## Быстрая справка

486 

487### Ответы на часто задаваемые вопросы

488 

489Однострочные ответы на вопросы, которые вам будут задавать чаще всего.

490 

491| Вопрос | Ответ |

492| ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

493| "Это работает в VS Code?" | Да. Есть расширение VS Code и плагин JetBrains с теми же функциями, встроенные в ваш редактор. [VS Code →](/ru/vs-code) |

494| "Мне нужно что-то настраивать в первую очередь?" | Нет. Установите, затем запустите `claude` в любом репозитории. Запустите `/init` один раз и все готово. [Quickstart →](/ru/quickstart) |

495| "Куда идет мой код?" | CLI работает в вашем терминале и отправляет контекст в API Anthropic для вывода, без сторонних серверов. В соответствии с вашим планом Enterprise ваш код и подсказки не используются для обучения моделей. [Использование данных →](/ru/data-usage) |

496| "Может ли он видеть весь мой репозиторий?" | Он читает то, к чему вы даете ему доступ. Чтение файлов в вашем рабочем каталоге не требует подсказки; подсказки разрешений контролируют редактирования, команды оболочки и что-либо вне этого каталога. [Разрешения →](/ru/permissions) |

497| "Чем это отличается от Copilot?" | Copilot автодополняет строки. Claude Code — это агент, который читает файлы, запускает команды и делает многофайловые правки. [Обзор →](/ru/overview) |

498| "Что мне попробовать в первую очередь?" | Ошибка, которую вы откладывали, потому что это утомительно. "Тест в \[файл] нестабилен, выясните почему." [Quickstart →](/ru/quickstart) |

499 

500### Шаблоны подсказок

501 

502Поделитесь этими начальными подсказками с инженерами, которые установили, но не уверены, что спросить. Каждая сформулирована так, как она была бы введена в реальный сеанс; замените части в скобках файлами из вашего собственного репозитория.

503 

504| Задача | Подсказка |

505| ---------------------------- | -------------------------------------------------------------------------------------------- |

506| Исправить ошибку | "тесты в \[файл] не проходят, выясните почему и исправьте" |

507| Понять код | "расскажите мне, как работает \[модуль], затем скажите мне, где точка входа" |

508| Безопасный рефакторинг | "рефакторьте \[модуль] на \[цель], используйте plan mode, чтобы я мог сначала рецензировать" |

509| Написать тесты | "напишите тесты для \[файл], которые охватывают граничные случаи вокруг \[сценарий]" |

510| Рецензировать перед коммитом | "посмотрите на мой рабочий diff и скажите мне, что выглядит рискованно" |

511| Открыть PR | "исправьте \[проблема], напишите обычный коммит и откройте PR с резюме" |

512| Создать skill | "создайте мне /ship skill, который запускает тесты и lint перед коммитом" |

513| Отладить stack trace | "вот stack trace, найдите основную причину, не просто замазывайте это" |

514 

515<Tip>

516 Claude Code часто выпускается. Проверьте детали, специфичные для версии, на [домашней странице документации](/ru/overview) перед распределением внутри.

517</Tip>

computer-use.md +207 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Позвольте Claude использовать ваш компьютер из CLI

6 

7> Включите computer use в Claude Code CLI, чтобы Claude мог открывать приложения, кликать, печатать и видеть ваш экран на macOS. Тестируйте нативные приложения, отлаживайте визуальные проблемы и автоматизируйте инструменты только с GUI без необходимости покидать терминал.

8 

9<Note>

10 {/* plan-availability: feature=computer-use plans=pro,max */}

11 

12 Computer use — это исследовательский предпросмотр на macOS, который требует план Pro или Max. Он недоступен для планов Team или Enterprise. Требуется Claude Code v2.1.85 или позже и интерактивный сеанс, поэтому он недоступен в неинтерактивном режиме с флагом `-p`.

13</Note>

14 

15Computer use позволяет Claude открывать приложения, управлять вашим экраном и работать на вашей машине так же, как вы. Из CLI Claude может скомпилировать приложение Swift, запустить его, кликнуть по каждой кнопке и сделать снимок экрана результата, всё в одном разговоре, где он писал код.

16 

17На этой странице рассказывается о том, как работает computer use в CLI. Для приложения Desktop см. [computer use в Desktop](/ru/desktop#let-claude-use-your-computer).

18 

19## Что вы можете делать с computer use

20 

21Computer use справляется с задачами, требующими GUI: всё, что вам обычно приходится делать вручную, покидая терминал.

22 

23* **Создание и проверка нативных приложений**: попросите Claude создать приложение меню macOS. Claude пишет Swift, компилирует его, запускает приложение и кликает по каждому элементу управления, чтобы проверить, что всё работает, прежде чем вы его откроете.

24* **Сквозное тестирование UI**: укажите Claude на локальное приложение Electron и скажите «протестируй поток адаптации». Claude открывает приложение, кликает по регистрации и делает снимки экрана каждого шага. Никакой конфигурации Playwright, никакого тестового каркаса.

25* **Отладка визуальных и проблем с макетом**: скажите Claude «модальное окно обрезается на маленьких окнах». Claude изменяет размер окна, воспроизводит ошибку, делает снимок экрана, исправляет CSS и проверяет исправление. Claude видит то же, что видите вы.

26* **Управление инструментами только с GUI**: взаимодействуйте с инструментами дизайна, панелями управления оборудованием, iOS Simulator или собственными приложениями, у которых нет CLI или API.

27 

28## Когда применяется computer use

29 

30Claude имеет несколько способов взаимодействия с приложением или сервисом. Computer use — самый широкий и медленный, поэтому Claude сначала пытается использовать наиболее точный инструмент:

31 

32* Если у вас есть [MCP server](/ru/mcp) для сервиса, Claude использует его.

33* Если задача — это команда shell, Claude использует Bash.

34* Если задача — это работа в браузере и у вас настроен [Claude в Chrome](/ru/chrome), Claude использует это.

35* Если ничего из вышеперечисленного не применимо, Claude использует computer use.

36 

37Управление экраном зарезервировано для вещей, которые ничто другое не может достичь: нативные приложения, симуляторы и инструменты без API.

38 

39## Включение computer use

40 

41Computer use доступен как встроенный MCP server под названием `computer-use`. По умолчанию он отключен, пока вы его не включите.

42 

43<Steps>

44 <Step title="Откройте меню MCP">

45 В интерактивном сеансе Claude Code запустите:

46 

47 ```text theme={null}

48 /mcp

49 ```

50 

51 Найдите `computer-use` в списке серверов. Он показывается как отключённый.

52 </Step>

53 

54 <Step title="Включите сервер">

55 Выберите `computer-use` и выберите **Enable**. Параметр сохраняется для каждого проекта, поэтому вам нужно сделать это только один раз для каждого проекта, где вы хотите использовать computer use.

56 </Step>

57 

58 <Step title="Предоставьте разрешения macOS">

59 В первый раз, когда Claude попытается использовать ваш компьютер, вы увидите приглашение предоставить два разрешения macOS:

60 

61 * **Accessibility**: позволяет Claude кликать, печатать и прокручивать

62 * **Screen Recording**: позволяет Claude видеть, что находится на вашем экране

63 

64 Приглашение включает ссылки для открытия соответствующей панели System Settings. Предоставьте оба разрешения, затем выберите **Try again** в приглашении. macOS может потребовать перезагрузку Claude Code после предоставления разрешения Screen Recording.

65 </Step>

66</Steps>

67 

68После настройки попросите Claude сделать что-то, что требует GUI:

69 

70```text theme={null}

71Build the app target, launch it, and click through each tab to make

72sure nothing crashes. Screenshot any error states you find.

73```

74 

75## Одобрение приложений для каждого сеанса

76 

77Включение сервера `computer-use` не предоставляет Claude доступ к каждому приложению на вашей машине. В первый раз, когда Claude нужно конкретное приложение в сеансе, в вашем терминале появляется приглашение, показывающее:

78 

79* Какие приложения Claude хочет контролировать

80* Любые дополнительные запрашиваемые разрешения, такие как доступ к буферу обмена

81* Сколько других приложений будет скрыто, пока Claude работает

82 

83Выберите **Allow for this session** или **Deny**. Одобрения действуют для текущего сеанса. Вы можете одобрить несколько приложений одновременно, когда Claude запрашивает их вместе.

84 

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

86 

87| Предупреждение | Применяется к |

88| :------------------------- | :------------------------------------------------------ |

89| Equivalent to shell access | Terminal, iTerm, VS Code, Warp и другие терминалы и IDE |

90| Can read or write any file | Finder |

91| Can change system settings | System Settings |

92 

93Эти приложения не блокируются. Предупреждение позволяет вам решить, оправдывает ли задача такой уровень доступа.

94 

95Уровень управления Claude также варьируется в зависимости от категории приложения: браузеры и торговые платформы доступны только для просмотра, терминалы и IDE доступны только для клика, а всё остальное получает полный контроль. См. [app permissions в Desktop](/ru/desktop#app-permissions) для полного разбора уровней.

96 

97## Как Claude работает на вашем экране

98 

99Понимание потока помогает вам предвидеть, что будет делать Claude и как вмешаться.

100 

101### Один сеанс за раз

102 

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

104 

105### Приложения скрыты, пока Claude работает

106 

107Когда Claude начинает управлять вашим экраном, другие видимые приложения скрываются, чтобы Claude взаимодействовал только с одобренными приложениями. Окно вашего терминала остаётся видимым и исключается из снимков экрана, поэтому вы можете наблюдать сеанс, и Claude никогда не видит свой собственный вывод.

108 

109Когда Claude завершает ход, скрытые приложения автоматически восстанавливаются.

110 

111### Остановитесь в любой момент

112 

113Когда Claude получает блокировку, появляется уведомление macOS: 'Claude is using your computer · press Esc to stop'. Нажмите `Esc` в любом месте, чтобы немедленно прервать текущее действие, или нажмите `Ctrl+C` в терминале. В любом случае Claude освобождает блокировку, показывает ваши приложения и возвращает вам управление.

114 

115Второе уведомление появляется, когда Claude закончит.

116 

117## Безопасность и граница доверия

118 

119<Warning>

120 В отличие от [sandboxed Bash tool](/ru/sandboxing), computer use работает на вашем реальном рабочем столе с доступом к приложениям, которые вы одобрили. Claude проверяет каждое действие и отмечает потенциальные prompt injection из содержимого на экране, но граница доверия отличается. См. [computer use safety guide](https://support.claude.com/en/articles/14128542) для лучших практик.

121</Warning>

122 

123Встроенные защиты снижают риск без необходимости конфигурации:

124 

125* **Одобрение для каждого приложения**: Claude может управлять только приложениями, которые вы одобрили в текущем сеансе.

126* **Предупреждения-дозорные**: приложения, которые предоставляют доступ к shell, файловой системе или параметрам системы, отмечаются перед одобрением.

127* **Терминал исключён из снимков экрана**: Claude никогда не видит окно вашего терминала, поэтому приглашения на экране в вашем сеансе не могут вернуться в модель.

128* **Глобальный выход**: клавиша `Esc` прерывает computer use откуда угодно, и нажатие клавиши потребляется, поэтому prompt injection не может использовать его для закрытия диалогов.

129* **Файл блокировки**: только один сеанс может управлять вашей машиной одновременно.

130 

131## Примеры рабочих процессов

132 

133Эти примеры показывают распространённые способы объединения computer use с задачами кодирования.

134 

135### Проверка нативной сборки

136 

137После внесения изменений в приложение macOS или iOS попросите Claude скомпилировать и проверить в одном проходе:

138 

139```text theme={null}

140Build the MenuBarStats target, launch it, open the preferences window,

141and verify the interval slider updates the label. Screenshot the

142preferences window when you're done.

143```

144 

145Claude запускает `xcodebuild`, запускает приложение, взаимодействует с UI и сообщает, что он находит.

146 

147### Воспроизведение ошибки макета

148 

149Когда визуальная ошибка появляется только при определённых размерах окна, позвольте Claude найти её:

150 

151```text theme={null}

152The settings modal clips its footer on narrow windows. Resize the app

153window down until you can reproduce it, screenshot the clipped state,

154then check the CSS for the modal container.

155```

156 

157Claude изменяет размер окна, захватывает сломанное состояние и читает соответствующие таблицы стилей.

158 

159### Тестирование потока симулятора

160 

161Управляйте iOS Simulator без написания XCTest:

162 

163```text theme={null}

164Open the iOS Simulator, launch the app, tap through the onboarding

165screens, and tell me if any screen takes more than a second to load.

166```

167 

168Claude управляет симулятором так же, как вы бы это делали с мышью.

169 

170## Различия с приложением Desktop

171 

172Поверхности CLI и Desktop используют один и тот же механизм computer use. Несколько элементов управления, специфичных для Desktop, ещё не находятся в CLI:

173 

174| Функция | Desktop | CLI |

175| :------------------- | :------------------------------------------------------- | :------------------------------ |

176| Enable | Toggle in **Settings > General** (under **Desktop app**) | Enable `computer-use` in `/mcp` |

177| Denied apps list | Configurable in Settings | Not yet available |

178| Auto-unhide toggle | Optional | Always on |

179| Dispatch integration | Dispatch-spawned sessions can use computer use | Not applicable |

180 

181## Troubleshooting

182 

183### "Computer use is in use by another Claude session"

184 

185Другой сеанс Claude Code удерживает блокировку. Завершите задачу в этом сеансе или выйдите из него. Если другой сеанс упал, блокировка освобождается автоматически, когда Claude обнаруживает, что процесс больше не работает.

186 

187### Приглашение разрешений macOS продолжает появляться

188 

189macOS иногда требует перезагрузку запрашивающего процесса после предоставления Screen Recording. Полностью закройте Claude Code и начните новый сеанс. Если приглашение сохраняется, откройте **System Settings > Privacy & Security > Screen Recording** и подтвердите, что ваше приложение терминала указано и включено.

190 

191### `computer-use` не появляется в `/mcp`

192 

193Сервер появляется только на подходящих установках. Проверьте, что:

194 

195* Вы на macOS. Computer use недоступен на Linux или Windows.

196* Вы запускаете Claude Code v2.1.85 или позже. Запустите `claude --version` для проверки.

197* Вы на плане Pro или Max. Запустите `/status` для подтверждения вашей подписки.

198* Вы аутентифицированы через claude.ai. Computer use недоступен с поставщиками третьих сторон, такими как Amazon Bedrock, Google Cloud Vertex AI или Microsoft Foundry. Если вы получаете доступ к Claude исключительно через поставщика третьей стороны, вам нужна отдельная учётная запись claude.ai для использования этой функции.

199* Вы в интерактивном сеансе. Computer use недоступен в неинтерактивном режиме с флагом `-p`.

200 

201## See also

202 

203* [Computer use в Desktop](/ru/desktop#let-claude-use-your-computer): та же возможность с графической страницей параметров

204* [Claude в Chrome](/ru/chrome): автоматизация браузера для веб-задач

205* [MCP](/ru/mcp): подключите Claude к структурированным инструментам и API

206* [Sandboxing](/ru/sandboxing): как инструмент Bash Claude изолирует доступ к файловой системе и сети

207* [Computer use safety guide](https://support.claude.com/en/articles/14128542): лучшие практики для безопасного использования computer use

costs.md +203 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Эффективное управление затратами

6 

7> Отслеживайте использование токенов, устанавливайте лимиты расходов команды и снижайте затраты Claude Code с помощью управления контекстом, выбора модели, настроек расширенного мышления и предварительной обработки hooks.

8 

9Claude Code взимает плату в зависимости от потребления API токенов. Для информации о ценах плана подписки (Pro, Max, Team, Enterprise) см. [claude.com/pricing](https://claude.com/pricing). Затраты на разработчика сильно варьируются в зависимости от выбора модели, размера кодовой базы и паттернов использования, таких как запуск нескольких экземпляров или автоматизация.

10 

11В масштабах корпоративных развёртываний средняя стоимость составляет около \$13 на разработчика в активный день и \$150-250 на разработчика в месяц, при этом затраты остаются ниже \$30 в активный день для 90% пользователей. Чтобы оценить расходы для вашей команды, начните с небольшой пилотной группы и используйте инструменты отслеживания ниже для установления базовой линии перед более широким развёртыванием.

12 

13На этой странице рассматривается, как [отслеживать ваши затраты](#track-your-costs), [управлять затратами для команд](#managing-costs-for-teams) и [снижать использование токенов](#reduce-token-usage).

14 

15## Отслеживание ваших затрат

16 

17### Использование команды `/usage`

18 

19<Note>

20 Блок Session в `/usage` показывает использование API токенов и предназначен для пользователей API. Подписчики Claude Max и Pro имеют использование, включённое в их подписку, поэтому цифра стоимости сессии не имеет отношения к целям выставления счётов. Подписчики видят полосы использования плана и статистику активности на том же экране.

21</Note>

22 

23Команда `/usage` предоставляет подробную статистику использования токенов для вашей текущей сессии. Цифра в долларах — это оценка, вычисленная локально на основе количества токенов и может отличаться от вашего фактического счёта. Для авторитетного выставления счётов см. страницу Usage в [Claude Console](https://platform.claude.com/usage).

24 

25```text theme={null}

26Total cost: $0.55

27Total duration (API): 6m 19.7s

28Total duration (wall): 6h 33m 10.2s

29Total code changes: 0 lines added, 0 lines removed

30```

31 

32## Управление затратами для команд

33 

34При использовании Claude API вы можете [установить лимиты расходов рабочего пространства](https://platform.claude.com/docs/en/build-with-claude/workspaces#workspace-limits) на общие расходы Claude Code рабочего пространства. Администраторы могут [просматривать отчёты о затратах и использовании](https://platform.claude.com/docs/en/build-with-claude/workspaces#usage-and-cost-tracking) в Console.

35 

36<Note>

37 Когда вы впервые аутентифицируете Claude Code с помощью своей учётной записи Claude Console, автоматически создаётся рабочее пространство под названием "Claude Code". Это рабочее пространство обеспечивает централизованное отслеживание и управление затратами для всего использования Claude Code в вашей организации. Вы не можете создавать API ключи для этого рабочего пространства; оно предназначено исключительно для аутентификации и использования Claude Code.

38 

39 Для организаций с пользовательскими ограничениями скорости трафик Claude Code в этом рабочем пространстве учитывается в общих ограничениях скорости API вашей организации. Вы можете установить [ограничение скорости рабочего пространства](https://platform.claude.com/docs/en/api/rate-limits#setting-lower-limits-for-workspaces) на странице Limits этого рабочего пространства в Claude Console, чтобы ограничить долю Claude Code и защитить другие производственные рабочие нагрузки.

40</Note>

41 

42На Bedrock, Vertex и Foundry Claude Code не отправляет метрики из вашего облака. Чтобы получить метрики затрат, несколько крупных предприятий сообщили об использовании [LiteLLM](/ru/llm-gateway#litellm-configuration), который является инструментом с открытым исходным кодом, помогающим компаниям [отслеживать расходы по ключу](https://docs.litellm.ai/docs/proxy/virtual_keys#tracking-spend). Этот проект не связан с Anthropic и не был проверен на безопасность.

43 

44### Рекомендации по ограничению скорости

45 

46При настройке Claude Code для команд учитывайте эти рекомендации по Token Per Minute (TPM) и Request Per Minute (RPM) на пользователя в зависимости от размера вашей организации:

47 

48| Размер команды | TPM на пользователя | RPM на пользователя |

49| --------------------- | ------------------- | ------------------- |

50| 1-5 пользователей | 200k-300k | 5-7 |

51| 5-20 пользователей | 100k-150k | 2.5-3.5 |

52| 20-50 пользователей | 50k-75k | 1.25-1.75 |

53| 50-100 пользователей | 25k-35k | 0.62-0.87 |

54| 100-500 пользователей | 15k-20k | 0.37-0.47 |

55| 500+ пользователей | 10k-15k | 0.25-0.35 |

56 

57Например, если у вас есть 200 пользователей, вы можете запросить 20k TPM для каждого пользователя, или 4 миллиона общего TPM (200\*20,000 = 4 миллиона).

58 

59TPM на пользователя уменьшается по мере роста размера команды, потому что в более крупных организациях меньше пользователей, как правило, используют Claude Code одновременно. Эти ограничения скорости применяются на уровне организации, а не для отдельного пользователя, что означает, что отдельные пользователи могут временно потреблять больше, чем их рассчитанная доля, когда другие не активно используют сервис.

60 

61<Note>

62 Если вы предполагаете сценарии с необычно высоким одновременным использованием (такие как живые сеансы обучения с большими группами), вам может потребоваться более высокое распределение TPM на пользователя.

63</Note>

64 

65### Затраты на токены команды агентов

66 

67[Команды агентов](/ru/agent-teams) запускают несколько экземпляров Claude Code, каждый со своим собственным контекстным окном. Использование токенов масштабируется в зависимости от количества активных товарищей по команде и того, как долго каждый из них работает.

68 

69Чтобы сохранить затраты команды агентов управляемыми:

70 

71* Используйте Sonnet для товарищей по команде. Он обеспечивает баланс между возможностями и стоимостью для задач координации.

72* Держите команды небольшими. Каждый товарищ по команде запускает своё собственное контекстное окно, поэтому использование токенов примерно пропорционально размеру команды.

73* Держите spawn prompts сфокусированными. Товарищи по команде автоматически загружают CLAUDE.md, MCP servers и skills, но всё в spawn prompt добавляется к их контексту с самого начала.

74* Очищайте команды после завершения работы. Активные товарищи по команде продолжают потреблять токены даже если они неактивны.

75* Команды агентов отключены по умолчанию. Установите `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` в вашем [settings.json](/ru/settings) или переменной окружения, чтобы включить их. См. [включение команд агентов](/ru/agent-teams#enable-agent-teams).

76 

77## Снижение использования токенов

78 

79Затраты на токены масштабируются с размером контекста: чем больше контекста обрабатывает Claude, тем больше токенов вы используете. Claude Code автоматически оптимизирует затраты через prompt caching (что снижает затраты на повторяющееся содержимое, такое как системные prompts) и auto-compact (что суммирует историю разговора при приближении к лимитам контекста).

80 

81Следующие стратегии помогают вам сохранять контекст небольшим и снижать затраты на сообщение.

82 

83### Управление контекстом проактивно

84 

85Используйте `/usage` для проверки текущего использования токенов или [настройте вашу строку состояния](/ru/statusline#context-window-usage) для непрерывного отображения.

86 

87* **Очищайте между задачами**: Используйте `/clear` для начала с чистого листа при переходе на несвязанную работу. Устаревший контекст тратит токены на каждое последующее сообщение. Используйте `/rename` перед очисткой, чтобы вы могли легко найти сессию позже, затем `/resume` для возврата к ней.

88* **Добавляйте пользовательские инструкции компактирования**: `/compact Focus on code samples and API usage` говорит Claude, что сохранять во время суммирования.

89 

90Вы также можете настроить поведение компактирования в вашем CLAUDE.md:

91 

92```markdown theme={null}

93# Compact instructions

94 

95When you are using compact, please focus on test output and code changes

96```

97 

98### Выберите правильную модель

99 

100Sonnet хорошо справляется с большинством задач кодирования и стоит дешевле, чем Opus. Зарезервируйте Opus для сложных архитектурных решений или многошаговых рассуждений. Используйте `/model` для переключения моделей в середине сессии или установите значение по умолчанию в `/config`. Для простых задач subagent укажите `model: haiku` в вашей [конфигурации subagent](/ru/sub-agents#choose-a-model).

101 

102### Снижение накладных расходов MCP server

103 

104Определения инструментов MCP [отложены по умолчанию](/ru/mcp#scale-with-mcp-tool-search), поэтому только имена инструментов входят в контекст до тех пор, пока Claude не использует конкретный инструмент. Запустите `/context` для просмотра того, что потребляет пространство.

105 

106* **Предпочитайте CLI инструменты, когда доступны**: Инструменты, такие как `gh`, `aws`, `gcloud` и `sentry-cli`, более эффективны по контексту, чем MCP servers, потому что они не добавляют никакой список инструментов. Claude может запускать CLI команды напрямую.

107* **Отключайте неиспользуемые servers**: Запустите `/mcp` для просмотра настроенных servers и отключите любые, которые вы не активно используете.

108 

109### Установите плагины code intelligence для типизированных языков

110 

111[Плагины code intelligence](/ru/discover-plugins#code-intelligence) дают Claude точную навигацию по символам вместо поиска на основе текста, снижая ненужные чтения файлов при изучении незнакомого кода. Один вызов "go to definition" заменяет то, что в противном случае могло бы быть grep, за которым следует чтение нескольких файлов-кандидатов. Установленные языковые серверы также автоматически сообщают об ошибках типов после редактирования, поэтому Claude ловит ошибки без запуска компилятора.

112 

113### Делегируйте обработку hooks и skills

114 

115Пользовательские [hooks](/ru/hooks) могут предварительно обрабатывать данные перед тем, как Claude их увидит. Вместо того, чтобы Claude читал файл логов из 10,000 строк для поиска ошибок, hook может выполнить grep для `ERROR` и вернуть только совпадающие строки, снижая контекст с десятков тысяч токенов до сотен.

116 

117[Skill](/ru/skills) может дать Claude знание предметной области, чтобы ему не пришлось исследовать. Например, skill "codebase-overview" может описать архитектуру вашего проекта, ключевые директории и соглашения об именовании. Когда Claude вызывает skill, он получает этот контекст немедленно вместо того, чтобы тратить токены на чтение нескольких файлов для понимания структуры.

118 

119Например, этот hook PreToolUse фильтрует вывод тестов для отображения только сбоев:

120 

121<Tabs>

122 <Tab title="settings.json">

123 Добавьте это в ваш [settings.json](/ru/settings#settings-files) для запуска hook перед каждой командой Bash:

124 

125 ```json theme={null}

126 {

127 "hooks": {

128 "PreToolUse": [

129 {

130 "matcher": "Bash",

131 "hooks": [

132 {

133 "type": "command",

134 "command": "~/.claude/hooks/filter-test-output.sh"

135 }

136 ]

137 }

138 ]

139 }

140 }

141 ```

142 </Tab>

143 

144 <Tab title="filter-test-output.sh">

145 Hook вызывает этот скрипт, который проверяет, является ли команда тестовым бегуном, и изменяет её для отображения только сбоев:

146 

147 ```bash theme={null}

148 #!/bin/bash

149 input=$(cat)

150 cmd=$(echo "$input" | jq -r '.tool_input.command')

151 

152 # If running tests, filter to show only failures

153 if [[ "$cmd" =~ ^(npm test|pytest|go test) ]]; then

154 filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"

155 echo "{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"allow\",\"updatedInput\":{\"command\":\"$filtered_cmd\"}}}"

156 else

157 echo "{}"

158 fi

159 ```

160 </Tab>

161</Tabs>

162 

163### Переместите инструкции из CLAUDE.md в skills

164 

165Ваш файл [CLAUDE.md](/ru/memory) загружается в контекст при запуске сессии. Если он содержит подробные инструкции для конкретных рабочих процессов (такие как PR reviews или миграции баз данных), эти токены присутствуют даже когда вы выполняете несвязанную работу. [Skills](/ru/skills) загружаются по требованию только при вызове, поэтому перемещение специализированных инструкций в skills сохраняет ваш базовый контекст меньшим. Стремитесь сохранять CLAUDE.md под 200 строк, включая только необходимое.

166 

167### Отрегулируйте расширенное мышление

168 

169Расширенное мышление включено по умолчанию, потому что оно значительно улучшает производительность на сложных задачах планирования и рассуждения. Токены мышления выставляются как выходные токены, и бюджет по умолчанию может быть десятки тысяч токенов на запрос в зависимости от модели. Для более простых задач, где глубокое рассуждение не требуется, вы можете снизить затраты, понизив [уровень усилий](/ru/model-config#adjust-effort-level) с помощью `/effort` или в `/model`, отключив мышление в `/config` или понизив бюджет с помощью `MAX_THINKING_TOKENS=8000`.

170 

171### Делегируйте многословные операции subagents

172 

173Запуск тестов, получение документации или обработка файлов логов может потребить значительный контекст. Делегируйте эти [subagents](/ru/sub-agents#isolate-high-volume-operations), чтобы многословный вывод оставался в контексте subagent, в то время как только резюме возвращается в вашу основную беседу.

174 

175### Управление затратами команды агентов

176 

177Команды агентов используют примерно в 7 раз больше токенов, чем стандартные сессии, когда товарищи по команде работают в plan mode, потому что каждый товарищ по команде поддерживает своё собственное контекстное окно и работает как отдельный экземпляр Claude. Держите задачи команды небольшими и самостоятельными, чтобы ограничить использование токенов на товарища по команде. См. [команды агентов](/ru/agent-teams) для деталей.

178 

179### Пишите конкретные prompts

180 

181Расплывчатые запросы, такие как "улучшить эту кодовую базу", запускают широкое сканирование. Конкретные запросы, такие как "добавить проверку входных данных в функцию входа в auth.ts", позволяют Claude работать эффективно с минимальными чтениями файлов.

182 

183### Работайте эффективно над сложными задачами

184 

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

186 

187* **Используйте plan mode для сложных задач**: Нажмите Shift+Tab для входа в [plan mode](/ru/common-workflows#use-plan-mode-for-safe-code-analysis) перед реализацией. Claude исследует кодовую базу и предлагает подход для вашего одобрения, предотвращая дорогостоящую переделку, когда первоначальное направление неправильно.

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

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

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

191 

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

193 

194Claude Code использует токены для некоторой фоновой функциональности даже когда неактивен:

195 

196* **Суммирование разговора**: Фоновые задания, которые суммируют предыдущие разговоры для функции `claude --resume`

197* **Обработка команд**: Некоторые команды, такие как `/usage`, могут генерировать запросы для проверки статуса

198 

199Эти фоновые процессы потребляют небольшое количество токенов (обычно менее \$0.04 за сессию) даже без активного взаимодействия.

200 

201## Понимание изменений в поведении Claude Code

202 

203Claude Code регулярно получает обновления, которые могут изменить способ работы функций, включая отчётность о затратах. Запустите `claude --version` для проверки вашей текущей версии. Для конкретных вопросов выставления счётов свяжитесь с поддержкой Anthropic через вашу [учётную запись Console](https://platform.claude.com/login).

data-usage.md +124 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Использование данных

6 

7> Узнайте о политике использования данных Anthropic для Claude

8 

9## Политики использования данных

10 

11### Политика использования данных для обучения

12 

13**Потребительские пользователи (планы Free, Pro и Max)**:

14Мы даём вам возможность разрешить использование ваших данных для улучшения будущих моделей Claude. Мы будем обучать новые модели, используя данные из учётных записей Free, Pro и Max, когда этот параметр включен (включая случаи, когда вы используете Claude Code из этих учётных записей).

15 

16**Коммерческие пользователи**: (планы Team и Enterprise, API, платформы третьих сторон и Claude Gov) сохраняют существующие политики: Anthropic не обучает генеративные модели, используя код или подсказки, отправленные в Claude Code на коммерческих условиях, если только клиент не выбрал предоставить нам свои данные для улучшения модели (например, [Developer Partner Program](https://support.claude.com/ru/articles/11174108-about-the-development-partner-program)).

17 

18### Development Partner Program

19 

20Если вы явно согласитесь предоставить нам материалы для обучения, например через [Development Partner Program](https://support.claude.com/ru/articles/11174108-about-the-development-partner-program), мы можем использовать эти материалы для обучения наших моделей. Администратор организации может явно согласиться на участие в Development Partner Program для своей организации. Обратите внимание, что эта программа доступна только для API Anthropic первой стороны и недоступна для пользователей Bedrock или Vertex.

21 

22### Обратная связь с помощью команды `/feedback`

23 

24Если вы решите отправить нам отзыв о Claude Code с помощью команды `/feedback`, мы можем использовать ваш отзыв для улучшения наших продуктов и услуг. Стенограммы, отправленные через `/feedback`, сохраняются в течение 5 лет.

25 

26### Опросы о качестве сеанса

27 

28Когда вы видите подсказку "How is Claude doing this session?" в Claude Code, ответ на этот опрос, включая выбор "Dismiss", записывает только вашу оценку. Мы не собираем и не сохраняем никакие стенограммы разговоров, входные данные, выходные данные или другие данные сеанса в рамках самого опроса оценки. В отличие от отзывов с большим пальцем вверх/вниз или отчётов `/feedback`, этот опрос о качестве сеанса является простой метрикой удовлетворённости продуктом.

29 

30После подсказки оценки вы можете увидеть отдельный дополнительный вопрос "Can Anthropic look at your session transcript to help us improve Claude Code?". Это необязательный второй шаг, отличный от оценки:

31 

32* **Yes**: загружает стенограмму вашего разговора, любые стенограммы подагентов и файл необработанного журнала сеанса с диска в Anthropic. Известные шаблоны ключей API и токенов удаляются перед загрузкой. Исходный код, содержимое файлов и другое содержимое разговора загружаются как есть. Общие стенограммы сохраняются до 6 месяцев.

33* **No**: отклоняет без отправки чего-либо

34* **Don't ask again**: отклоняет и останавливает появление этого дополнительного вопроса в будущих сеансах

35 

36Ничего не загружается, если вы явно не выберете **Yes**. Организации с [zero data retention](/ru/zero-data-retention) или где обратная связь о продукте отключена политикой организации, никогда не видят этот дополнительный вопрос. Ваши ответы на этот опрос, включая стенограммы сеансов, отправленные после подсказки оценки, не влияют на ваши предпочтения использования данных для обучения и не могут использоваться для обучения наших моделей ИИ.

37 

38Чтобы отключить эти опросы, установите `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`. Опрос также отключается при установке `DISABLE_TELEMETRY` или `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Чтобы управлять частотой вместо отключения, установите [`feedbackSurveyRate`](/ru/settings#available-settings) в файле параметров на вероятность между `0` и `1`.

39 

40### Хранение данных

41 

42Anthropic сохраняет данные Claude Code в зависимости от типа вашей учётной записи и предпочтений.

43 

44**Потребительские пользователи (планы Free, Pro и Max)**:

45 

46* Пользователи, которые разрешают использование данных для улучшения модели: период хранения 5 лет для поддержки разработки модели и улучшения безопасности

47* Пользователи, которые не разрешают использование данных для улучшения модели: период хранения 30 дней

48* Параметры конфиденциальности можно изменить в любое время на [claude.ai/settings/data-privacy-controls](https://claude.ai/settings/data-privacy-controls).

49 

50**Коммерческие пользователи (Team, Enterprise и API)**:

51 

52* Стандартный: период хранения 30 дней

53* [Zero data retention](/ru/zero-data-retention): доступно для Claude Code на Claude for Enterprise. ZDR включается на основе организации; каждая новая организация должна иметь ZDR, отдельно включённый вашей командой учёта

54* Локальное кэширование: клиенты Claude Code хранят стенограммы сеансов локально в открытом виде под `~/.claude/projects/` в течение 30 дней по умолчанию для включения возобновления сеанса. Отрегулируйте период с помощью `cleanupPeriodDays`. См. [application data](/ru/claude-directory#application-data) для информации о том, что хранится и как это очистить.

55 

56Вы можете удалить отдельные сеансы Claude Code в Интернете в любое время. Удаление сеанса навсегда удаляет данные событий сеанса. Инструкции по удалению сеансов см. в разделе [Delete sessions](/ru/claude-code-on-the-web#delete-sessions).

57 

58Узнайте больше о практике хранения данных в нашем [Privacy Center](https://privacy.anthropic.com/).

59 

60Для получения полной информации, пожалуйста, ознакомьтесь с нашими [Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms) (для пользователей Team, Enterprise и API) или [Consumer Terms](https://www.anthropic.com/legal/consumer-terms) (для пользователей Free, Pro и Max) и [Privacy Policy](https://www.anthropic.com/legal/privacy).

61 

62## Доступ к данным

63 

64Для всех пользователей первой стороны вы можете узнать больше о том, какие данные регистрируются для [локального Claude Code](#local-claude-code-data-flow-and-dependencies) и [удалённого Claude Code](#cloud-execution-data-flow-and-dependencies). Сеансы [Remote Control](/ru/remote-control) следуют локальному потоку данных, поскольку всё выполнение происходит на вашей машине. Обратите внимание, что для удалённого Claude Code Claude получает доступ к репозиторию, в котором вы инициируете сеанс Claude Code. Claude не получает доступ к репозиториям, которые вы подключили, но в которых не начали сеанс.

65 

66## Local Claude Code: поток данных и зависимости

67 

68На диаграмме ниже показано, как Claude Code подключается к внешним сервисам во время установки и нормальной работы. Сплошные линии указывают на обязательные соединения, а пунктирные линии представляют дополнительные или инициированные пользователем потоки данных.

69 

70<img src="https://mintcdn.com/claude-code/YcBW2H7CArGcduPb/images/claude-code-data-flow.svg?fit=max&auto=format&n=YcBW2H7CArGcduPb&q=85&s=b600a89f84fc86f9ff7be00a466c0635" alt="Диаграмма, показывающая внешние соединения Claude Code: установка/обновление подключается к серверу распределения, а запросы пользователя подключаются к сервисам Anthropic, включая Console auth, public-api, и опционально Statsig, Sentry и отчёты об ошибках" width="720" height="520" data-path="images/claude-code-data-flow.svg" />

71 

72Claude Code работает локально. Для взаимодействия с LLM Claude Code отправляет данные по сети. Эти данные включают все подсказки пользователя и выходные данные модели, зашифрованные при передаче через TLS 1.2+. Claude Code совместим с большинством популярных VPN и прокси LLM.

73 

74Шифрование в покое зависит от вашего поставщика модели:

75 

76| Поставщик | Шифрование в покое |

77| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |

78| Anthropic API | Шифрование диска на уровне инфраструктуры (AES-256). Включите [Zero Data Retention](/ru/zero-data-retention) для отсутствия сохранения на стороне сервера. |

79| Amazon Bedrock | AES-256 с управляемыми AWS ключами. Ключи, управляемые клиентом, доступны через AWS KMS. |

80| Google Cloud Vertex AI | Ключи шифрования, управляемые Google. CMEK доступен. |

81| Microsoft Foundry | Запросы маршрутизируются в инфраструктуру Anthropic с шифрованием диска AES-256. |

82 

83Claude Code построен на API Anthropic. Для получения подробной информации о средствах контроля безопасности API, включая процедуры логирования API, см. артефакты соответствия в [Anthropic Trust Center](https://trust.anthropic.com).

84 

85### Cloud execution: поток данных и зависимости

86 

87При использовании [Claude Code on the web](/ru/claude-code-on-the-web) сеансы выполняются на виртуальных машинах, управляемых Anthropic, вместо локального выполнения. В облачных средах:

88 

89* **Хранилище кода и данных:** Ваш репозиторий клонируется на изолированную виртуальную машину. Код и данные сеанса подлежат политикам хранения и использования для вашего типа учётной записи (см. раздел Хранение данных выше)

90* **Учётные данные:** Аутентификация GitHub обрабатывается через защищённый прокси; ваши учётные данные GitHub никогда не попадают в sandbox

91* **Сетевой трафик:** Весь исходящий трафик проходит через прокси безопасности для логирования аудита и предотвращения злоупотреблений

92* **Данные сеанса:** Подсказки, изменения кода и выходные данные следуют тем же политикам данных, что и локальное использование Claude Code

93 

94Для получения подробной информации о безопасности облачного выполнения см. [Security](/ru/security#cloud-execution-security).

95 

96## Сервисы телеметрии

97 

98Claude Code подключается с машин пользователей к сервису Statsig для логирования операционных метрик, таких как задержка, надёжность и паттерны использования. Это логирование не включает никакой код или пути к файлам. Данные зашифрованы при передаче с использованием TLS и в покое с использованием 256-битного шифрования AES. Подробнее см. в [документации по безопасности Statsig](https://www.statsig.com/trust/security). Чтобы отказаться от телеметрии Statsig, установите переменную окружения `DISABLE_TELEMETRY`.

99 

100Claude Code подключается с машин пользователей к Sentry для логирования операционных ошибок. Данные зашифрованы при передаче с использованием TLS и в покое с использованием 256-битного шифрования AES. Подробнее см. в [документации по безопасности Sentry](https://sentry.io/security/). Чтобы отказаться от логирования ошибок, установите переменную окружения `DISABLE_ERROR_REPORTING`.

101 

102Когда пользователи выполняют команду `/feedback`, копия их полной истории разговора, включая код, отправляется в Anthropic. Данные зашифрованы при передаче с использованием TLS. Опционально создаётся проблема GitHub в публичном репозитории. Чтобы отказаться, установите переменную окружения `DISABLE_FEEDBACK_COMMAND` на `1`.

103 

104## Поведение по умолчанию в зависимости от поставщика API

105 

106По умолчанию отчёты об ошибках, телеметрия и отчёты об ошибках отключены при использовании Bedrock, Vertex или Foundry. Опросы о качестве сеанса и проверка безопасности домена WebFetch являются исключениями и выполняются независимо от поставщика. Вы можете отказаться от всего несущественного трафика, включая опросы, сразу же, установив `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Эта переменная не влияет на проверку WebFetch, которая имеет свой собственный отказ. Вот полное поведение по умолчанию:

107 

108| Сервис | Claude API | Vertex API | Bedrock API | Foundry API |

109| ------------------------------------ | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |

110| **Statsig (Metrics)** | По умолчанию включено.<br />`DISABLE_TELEMETRY=1` для отключения. | По умолчанию отключено.<br />`CLAUDE_CODE_USE_VERTEX` должен быть 1. | По умолчанию отключено.<br />`CLAUDE_CODE_USE_BEDROCK` должен быть 1. | По умолчанию отключено.<br />`CLAUDE_CODE_USE_FOUNDRY` должен быть 1. |

111| **Sentry (Errors)** | По умолчанию включено.<br />`DISABLE_ERROR_REPORTING=1` для отключения. | По умолчанию отключено.<br />`CLAUDE_CODE_USE_VERTEX` должен быть 1. | По умолчанию отключено.<br />`CLAUDE_CODE_USE_BEDROCK` должен быть 1. | По умолчанию отключено.<br />`CLAUDE_CODE_USE_FOUNDRY` должен быть 1. |

112| **Claude API (`/feedback` reports)** | По умолчанию включено.<br />`DISABLE_FEEDBACK_COMMAND=1` для отключения. | По умолчанию отключено.<br />`CLAUDE_CODE_USE_VERTEX` должен быть 1. | По умолчанию отключено.<br />`CLAUDE_CODE_USE_BEDROCK` должен быть 1. | По умолчанию отключено.<br />`CLAUDE_CODE_USE_FOUNDRY` должен быть 1. |

113| **Session quality surveys** | По умолчанию включено.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` для отключения. | По умолчанию включено.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` для отключения. | По умолчанию включено.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` для отключения. | По умолчанию включено.<br />`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1` для отключения. |

114| **WebFetch domain safety check** | По умолчанию включено.<br />`skipWebFetchPreflight: true` в [settings](/ru/settings) для отключения. | По умолчанию включено.<br />`skipWebFetchPreflight: true` в [settings](/ru/settings) для отключения. | По умолчанию включено.<br />`skipWebFetchPreflight: true` в [settings](/ru/settings) для отключения. | По умолчанию включено.<br />`skipWebFetchPreflight: true` в [settings](/ru/settings) для отключения. |

115 

116Все переменные окружения можно проверить в `settings.json` (см. [settings reference](/ru/settings)).

117 

118Начиная с версии 2.1.126, когда хост-платформа устанавливает `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`, метрики Statsig по умолчанию включены для Vertex, Bedrock и Foundry и следуют стандартному отказу `DISABLE_TELEMETRY`. Отчёты об ошибках Sentry и отчёты `/feedback` остаются отключены по умолчанию на этих поставщиках.

119 

120### WebFetch domain safety check

121 

122Перед получением URL инструмент WebFetch отправляет запрашиваемое имя хоста на `api.anthropic.com` для проверки его в списке блокировки безопасности, поддерживаемом Anthropic. Отправляется только имя хоста, а не полный URL, путь или содержимое страницы. Результаты кэшируются для каждого имени хоста в течение пяти минут.

123 

124Эта проверка выполняется независимо от того, какого поставщика модели вы используете, и не зависит от `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Если ваша сеть блокирует `api.anthropic.com`, запросы WebFetch не выполняются до тех пор, пока вы либо не добавите домен в список разрешений, либо не установите `skipWebFetchPreflight: true` в [settings](/ru/settings). Отключение проверки означает, что WebFetch пытается получить любой URL без консультации со списком блокировки, поэтому объедините его с [`WebFetch` permission rules](/ru/permissions#webfetch), если вам нужно ограничить, какие домены может достичь Claude.

debug-your-config.md +97 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Отладка конфигурации

6 

7> Диагностируйте, почему CLAUDE.md, параметры, hooks, MCP серверы или skills не вступают в силу. Используйте /context, /doctor, /hooks и /mcp, чтобы увидеть, что действительно загрузилось.

8 

9Когда Claude игнорирует инструкцию или функция, которую вы настроили, не появляется, причина обычно в том, что файл не загрузился, загрузился из другого места, чем вы ожидали, или его переопределил другой файл. Это руководство показывает, как проверить, что Claude Code действительно загрузил, чтобы вы могли сузить, какой из этих вариантов применяется.

10 

11Для проблем с установкой, аутентификацией и подключением см. [Troubleshooting](/ru/troubleshoot-install) вместо этого.

12 

13## Посмотрите, что загрузилось в контекст

14 

15Команда `/context` показывает всё, что занимает контекстное окно для текущей сессии, разбитое по категориям: системный prompt, файлы памяти, skills, MCP tools и сообщения беседы. Запустите её в первую очередь, чтобы подтвердить, присутствуют ли ваши `CLAUDE.md`, правила или описания skills вообще.

16 

17Для деталей по конкретной категории используйте специализированную команду:

18 

19| Команда | Показывает |

20| :------------- | :---------------------------------------------------------------------------- |

21| `/memory` | Какие файлы `CLAUDE.md` и rules загрузились, плюс записи auto-memory |

22| `/skills` | Доступные skills из проекта, пользователя и источников плагинов |

23| `/agents` | Настроенные subagents и их параметры |

24| `/hooks` | Активные конфигурации hooks |

25| `/mcp` | Подключённые MCP серверы и их статус |

26| `/permissions` | Разрешённые и запрещённые правила, которые в настоящее время действуют |

27| `/doctor` | Диагностика конфигурации: неверные ключи, ошибки схемы, здоровье установки |

28| `/status` | Активные источники параметров, включая то, действуют ли управляемые параметры |

29 

30Если файл памяти отсутствует в `/memory`, проверьте его расположение в соответствии с [как загружаются файлы CLAUDE.md](/ru/memory#how-claude-md-files-load). Файлы `CLAUDE.md` в подпапках загружаются по требованию, когда Claude читает файл в этой папке с помощью инструмента Read, а не при запуске сессии.

31 

32Если `/memory` подтверждает, что файл загрузился, но Claude всё ещё не следует конкретной инструкции, проблема, вероятно, в том, как написана инструкция, а не в том, загрузилась ли она. CLAUDE.md хорошо работает для типов рекомендаций, которые вы дали бы новому коллеге, таких как соглашения проекта, команды сборки и где находятся файлы.

33 

34Соответствие снижается, когда инструкция достаточно расплывчата, чтобы интерпретировать несколькими способами, когда два файла дают противоречивые указания или когда файл вырос настолько, что отдельные правила получают меньше внимания. [Напишите эффективные инструкции](/ru/memory#write-effective-instructions) охватывает специфичность, размер и структурные паттерны, которые поддерживают высокое соответствие.

35 

36<Note>

37 CLAUDE.md и permissions решают разные проблемы. CLAUDE.md говорит Claude, как работает ваш проект, чтобы он принимал хорошие решения. [Permissions](/ru/permissions) и [hooks](/ru/hooks) обеспечивают ограничения независимо от того, что решит Claude. Используйте CLAUDE.md для "мы делаем это так здесь". Используйте permissions или hooks для границ безопасности и всего, что никогда не должно происходить, когда вам нужна гарантия вместо рекомендации.

38</Note>

39 

40## Проверьте разрешённые параметры

41 

42Параметры объединяются в управляемых, пользовательских, проектных и локальных областях. Управляемые параметры всегда выигрывают, когда присутствуют. Среди остальных, более близкая область переопределяет более широкую в порядке локальная, затем проект, затем пользователь. Некоторые параметры также можно устанавливать флагами командной строки или [переменными окружения](/ru/env-vars), которые действуют как ещё один слой переопределения. Когда параметр не кажется применяемым, значение, которое вы установили, обычно переопределяется другой областью или переменной окружения.

43 

44Запустите `/doctor`, чтобы проверить файлы конфигурации и выявить неверные ключи или ошибки схемы. Запустите `/status`, чтобы увидеть, какие источники параметров активны, включая то, действуют ли управляемые параметры. Чтобы понять, какая область выигрывает для данного ключа, см. [Как взаимодействуют области](/ru/settings#how-scopes-interact).

45 

46## Проверьте MCP серверы

47 

48Запустите `/mcp`, чтобы увидеть каждый настроенный сервер, его статус подключения и одобрили ли вы его для текущего проекта. Сервер может быть определён правильно, но всё ещё не предоставлять tools по нескольким распространённым причинам:

49 

50* Серверы с областью проекта в `.mcp.json` требуют одноразового одобрения. Если prompt был отклонён, сервер остаётся отключённым, пока вы не одобрите его из `/mcp`.

51* Сервер, который не запускается, отображается как failed в `/mcp`. Относительные пути к файлам в `command` или `args` — частая причина, так как они разрешаются относительно каталога, из которого вы запустили Claude Code, а не расположения `.mcp.json`.

52* Сервер, который показывает как connected, но перечисляет нулевые tools, успешно запустился, но не возвращает список tools. Выберите **Reconnect** из `/mcp`. Если количество остаётся нулевым, запустите `claude --debug mcp`, чтобы увидеть вывод stderr сервера.

53 

54Для расположений конфигурации и правил области см. [MCP](/ru/mcp).

55 

56## Проверьте hooks

57 

58Запустите `/hooks`, чтобы перечислить каждый hook, зарегистрированный для текущей сессии, сгруппированный по событиям. Если hook, который вы определили, не появляется, он не читается: hooks идут под ключом `"hooks"` в файле параметров, а не в отдельном файле.

59 

60Если hook появляется, но не срабатывает, обычно причина в matcher. Поле `matcher` — это одна строка, которая использует `|` для соответствия нескольким именам tools, например `"Edit|Write"`. Неправильное имя tool молча не срабатывает, потому что matcher никогда не совпадает. Значение массива — это ошибка схемы: Claude Code показывает уведомление об ошибке параметров, `/doctor` сообщает об ошибке валидации, и запись hook удаляется, поэтому она не будет отображаться в `/hooks`.

61 

62Правки в `settings.json` вступают в силу в работающей сессии после краткой задержки стабильности файла. Вам не нужно перезагружаться. Если `/hooks` всё ещё показывает старое определение через несколько секунд после сохранения, запустите `/hooks` снова, чтобы обновить представление.

63 

64Если `/hooks` показывает hook, но он всё ещё не срабатывает, следующий шаг — наблюдать оценку hook в реальном времени. Запустите сессию с `claude --debug hooks` и вызовите tool call. Журнал отладки записывает каждое событие, какие matchers были проверены, и код выхода и вывод hook. См. [Debug hooks](/ru/hooks#debug-hooks) для формата журнала и [hooks troubleshooting](/ru/hooks-guide#limitations-and-troubleshooting) для распространённых паттернов сбоев.

65 

66## Распространённые причины

67 

68Большинство сюрпризов конфигурации восходят к небольшому набору правил расположения и синтаксиса. Проверьте их перед тем, как предположить ошибку:

69 

70| Симптом | Причина | Исправление |

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

72| Hook никогда не срабатывает | `matcher` — это JSON массив вместо строки | Используйте одну строку с `\|` для соответствия нескольким tools, например `"Edit\|Write"`. См. [matcher patterns](/ru/hooks#matcher-patterns). |

73| Hook никогда не срабатывает | значение `matcher` в нижнем регистре, например `"bash"` | Соответствие чувствительно к регистру. Имена tools написаны с заглавной буквы: `Bash`, `Edit`, `Write`, `Read`. |

74| Hook никогда не срабатывает | Hooks находятся в отдельном файле `.claude/hooks.json` | Нет отдельного файла hooks. Определите hooks под ключом `"hooks"` в `settings.json`. См. [hook configuration](/ru/hooks). |

75| Permissions, hooks или env, установленные глобально, игнорируются | Конфигурация была добавлена в `~/.claude.json` | `~/.claude.json` содержит состояние приложения и переключатели UI. `permissions`, `hooks` и `env` принадлежат `~/.claude/settings.json`. Это два разных файла. |

76| Значение `settings.json` кажется игнорируемым | Тот же ключ установлен в `settings.local.json` | `settings.local.json` переопределяет `settings.json`, и оба переопределяют `~/.claude/settings.json`. См. [settings precedence](/ru/settings#how-scopes-interact). |

77| Skill не появляется в `/skills` | Файл skill находится в `.claude/skills/name.md` вместо папки | Используйте папку с `SKILL.md` внутри: `.claude/skills/name/SKILL.md`. |

78| Skill появляется в `/skills`, но Claude никогда его не вызывает | Skill имеет `disable-model-invocation: true` в своём frontmatter или его описание не совпадает с тем, как вы формулируете запрос | Проверьте значок в `/skills`: метка "user-only" означает, что Claude не будет его запускать самостоятельно. См. [skill invocation](/ru/skills). |

79| Инструкции в подпапке `CLAUDE.md` кажутся игнорируемыми | Файлы подпапок загружаются по требованию, а не при запуске сессии | Они загружаются, когда Claude читает файл в этой папке с помощью инструмента Read, а не при запуске и не при записи или создании файлов там. См. [как загружаются файлы CLAUDE.md](/ru/memory#how-claude-md-files-load). |

80| Subagent игнорирует инструкции `CLAUDE.md` | Subagents не всегда наследуют память проекта | Поместите критические правила в тело файла агента, которое становится системным prompt subagent. См. [subagent configuration](/ru/sub-agents). |

81| Логика очистки никогда не запускается в конце сессии | Нет настроенного `SessionEnd` hook | Добавьте `SessionEnd` hook в `settings.json`. См. [hook events list](/ru/hooks#hook-events). |

82| MCP серверы в `.mcp.json` никогда не загружаются | Файл находится под `.claude/` или использует формат конфигурации Claude Desktop | Конфигурация MCP проекта находится в корне репозитория как `.mcp.json`, а не внутри `.claude/`. См. [MCP configuration](/ru/mcp). |

83| Добавлен MCP сервер проекта, но не появляется | Prompt одноразового одобрения был отклонён | Серверы с областью проекта требуют одобрения. Запустите `/mcp`, чтобы увидеть статус и одобрить. |

84| MCP сервер не запускается из некоторых каталогов | `command` или `args` использует относительный путь к файлу | Используйте абсолютные пути для локальных скриптов. Исполняемые файлы в вашем `PATH` как `npx` или `uvx` работают как есть. |

85| MCP сервер запускается без ожидаемых переменных окружения | Переменные находятся в `settings.json` `env`, которые не распространяются на дочерние процессы MCP | Установите `env` для каждого сервера внутри `.mcp.json`. |

86| Правило отрицания `Bash(rm *)` не блокирует `/bin/rm` или `find -delete` | Правила префикса совпадают с буквальной строкой команды, а не с базовым исполняемым файлом | Добавьте явные паттерны для каждого варианта или используйте [PreToolUse hook](/ru/hooks-guide) или [sandbox](/ru/sandboxing) для жёсткой гарантии. |

87 

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

89 

90Для полного справочника по каждой поверхности конфигурации см. специализированную страницу:

91 

92* **[Справочник каталога `.claude`](/ru/claude-directory)**: каждое расположение файла конфигурации и что его читает

93* **[Settings](/ru/settings)**: порядок приоритета и полный список ключей

94* **[Справочник Hooks](/ru/hooks)**: имена событий, payload и формат вывода `--debug hooks`

95* **[MCP](/ru/mcp)**: конфигурация сервера, одобрение и вывод `/mcp`

96* **[Troubleshooting установки и входа](/ru/troubleshoot-install)**: `command not found`, PATH и проблемы аутентификации

97* **[Troubleshooting](/ru/troubleshooting)**: производительность, зависания и проблемы поиска

desktop.md +761 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Использование Claude Code Desktop

6 

7> Получите больше возможностей от Claude Code Desktop: параллельные сеансы с изоляцией Git, макет панелей с перетаскиванием, интегрированный терминал и редактор файлов, боковые чаты, использование компьютера, отправка сеансов со своего телефона, визуальный просмотр различий, предпросмотр приложений, мониторинг PR, коннекторы и конфигурация для предприятий.

8 

9Приложение Claude Desktop имеет три вкладки: **Chat** для разговоров, **Cowork** для [Dispatch и более длительной агентивной работы](https://claude.com/product/cowork) и **Code** для разработки программного обеспечения. Эта страница является справочником для вкладки Code.

10 

11<CardGroup cols={2}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon

14 </Card>

15 

16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors

18 </Card>

19</CardGroup>

20 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.

22 

23После установки запустите Claude, войдите в систему и нажмите на вкладку **Code**. Первый раз при открытии на Windows вам необходимо установить [Git for Windows](https://git-scm.com/downloads/win); перезагрузите приложение после установки. Для пошагового руководства вашего первого сеанса см. [Руководство по началу работы](/ru/desktop-quickstart).

24 

25На вкладке Code каждый разговор является **сеансом**: он имеет свою историю чата, папку проекта и изменения кода, независимые от любого другого сеанса. Боковая панель отображает ваши сеансы и позволяет запускать несколько параллельно. В рамках сеанса вы можете:

26 

27* [Просматривать и комментировать различия](#review-changes-with-diff-view), а затем [отслеживать полученный PR через CI](#monitor-pull-request-status)

28* [Просматривать ваше работающее приложение](#preview-your-app) во встроенном браузере, пока Claude проверяет свои собственные изменения

29* [Организовать панели](#arrange-your-workspace) для чата, различий, предпросмотра, терминала и редактора файлов рядом друг с другом

30* Задать [боковой вопрос](#ask-a-side-question-without-derailing-the-session), который использует контекст сеанса без отклонения от основного потока

31* [Подключить внешние инструменты](#connect-external-tools) такие как GitHub, Slack и Linear

32* Позволить Claude [открывать приложения и управлять вашим экраном](#let-claude-use-your-computer)

33* Запускать на вашей машине, в [облаке](#run-long-running-tasks-remotely) или через [SSH](#ssh-sessions)

34 

35Для [запланированной повторяющейся работы](/ru/desktop-scheduled-tasks), [сочетаний клавиш](#keyboard-shortcuts) или [отправки задач со своего телефона](#sessions-from-dispatch) см. связанные страницы и разделы. Если вы уже используете терминальный CLI, см. [сравнение CLI](#coming-from-the-cli) для того, что переносится.

36 

37## Начало сеанса

38 

39Перед отправкой первого сообщения настройте четыре параметра в области подсказки:

40 

41* **Environment**: выберите, где запускается Claude. Выберите **Local** для вашей машины, **Remote** для облачных сеансов, размещённых Anthropic, или [**SSH-соединение**](#ssh-sessions) для удалённой машины, которой вы управляете. См. [конфигурация окружения](#environment-configuration).

42* **Project folder**: выберите папку или репозиторий, с которым работает Claude. Для удалённых сеансов вы можете добавить [несколько репозиториев](#run-long-running-tasks-remotely).

43* **Model**: выберите [модель](/ru/model-config#available-models) из раскрывающегося списка рядом с кнопкой отправки. Вы можете изменить это во время сеанса.

44* **Permission mode**: выберите, сколько автономности имеет Claude, из [селектора режима](#choose-a-permission-mode). Вы можете изменить это во время сеанса.

45 

46Введите вашу задачу и нажмите **Enter** для начала. Каждый сеанс отслеживает свой собственный контекст и изменения независимо.

47 

48## Работа с кодом

49 

50Дайте Claude правильный контекст, контролируйте, сколько он делает самостоятельно, и проверьте, что он изменил.

51 

52### Использование поля подсказки

53 

54Введите, что вы хотите, чтобы сделал Claude, и нажмите **Enter** для отправки. Claude читает файлы вашего проекта, вносит изменения и запускает команды на основе вашего [режима разрешений](#choose-a-permission-mode). Вы можете прервать Claude в любой момент: нажмите кнопку остановки или введите вашу коррекцию и нажмите **Enter**. Claude останавливает то, что он делает, и корректирует на основе вашего ввода.

55 

56Кнопка **+** рядом с полем подсказки дает вам доступ к вложениям файлов, [skills](#use-skills), [коннекторам](#connect-external-tools) и [плагинам](#install-plugins).

57 

58### Добавление файлов и контекста к подсказкам

59 

60Поле подсказки поддерживает два способа привнесения внешнего контекста:

61 

62* **@mention файлы**: введите `@` с последующим именем файла, чтобы добавить файл в контекст разговора. Claude может затем читать и ссылаться на этот файл. @mention недоступен в удалённых сеансах.

63* **Вложение файлов**: прикрепляйте изображения, PDF-файлы и другие файлы к вашей подсказке, используя кнопку вложения, или перетаскивайте файлы прямо в подсказку. Это полезно для обмена скриншотами ошибок, макетами дизайна или справочными документами.

64 

65### Выбор режима разрешений

66 

67Режимы разрешений контролируют, сколько автономности имеет Claude во время сеанса: спрашивает ли он перед редактированием файлов, запуском команд или обоих. Вы можете переключать режимы в любое время, используя селектор режима рядом с кнопкой отправки. Начните с Ask permissions, чтобы увидеть ровно то, что делает Claude, затем переходите к Auto accept edits или Plan mode по мере того, как вы становитесь более уверены.

68 

69| Режим | Ключ параметров | Поведение |

70| ---------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

71| **Ask permissions** | `default` | Claude спрашивает перед редактированием файлов или запуском команд. Вы видите различия и можете принять или отклонить каждое изменение. Рекомендуется для новых пользователей. |

72| **Auto accept edits** | `acceptEdits` | Claude автоматически принимает редактирование файлов и общие команды файловой системы, такие как `mkdir`, `touch` и `mv`, но всё ещё спрашивает перед запуском других команд терминала. Используйте это, когда вы доверяете изменениям файлов и хотите более быструю итерацию. |

73| **Plan mode** | `plan` | Claude читает файлы и запускает команды для исследования, затем предлагает план без редактирования вашего исходного кода. Хорошо для сложных задач, где вы хотите сначала проверить подход. |

74| **Auto** | `auto` | Claude выполняет все действия с фоновыми проверками безопасности, которые проверяют соответствие вашему запросу. Снижает подсказки разрешений при сохранении надзора. Включите в Settings → Claude Code. См. [требования доступности](#auto-mode-availability) ниже. |

75| **Bypass permissions** | `bypassPermissions` | Claude работает без каких-либо подсказок разрешений, эквивалентно `--dangerously-skip-permissions` в CLI. Включите в Settings → Claude Code под "Allow bypass permissions mode". Используйте только в изолированных контейнерах или виртуальных машинах. Администраторы предприятия могут отключить эту опцию. |

76 

77Режим разрешений `dontAsk` доступен только в [CLI](/ru/permission-modes#allow-only-pre-approved-tools-with-dontask-mode).

78 

79<span id="auto-mode-availability" />

80 

81Auto mode — это исследовательский предпросмотр, доступный на планах Max, Team, Enterprise и API. Он недоступен на планах Pro или у сторонних провайдеров. На планах Team, Enterprise и API требуется Claude Sonnet 4.6, Opus 4.6 или Opus 4.7. На планах Max требуется Claude Opus 4.7.

82 

83<Tip title="Best practice">

84 Начните сложные задачи в Plan mode, чтобы Claude наметил подход перед внесением изменений. После одобрения плана переключитесь на Auto accept edits или Ask permissions для его выполнения. См. [explore first, then plan, then code](/ru/best-practices#explore-first-then-plan-then-code) для получения дополнительной информации об этом рабочем процессе.

85</Tip>

86 

87Удалённые сеансы поддерживают Auto accept edits и Plan mode. Ask permissions недоступен, потому что удалённые сеансы автоматически принимают редактирование файлов по умолчанию, и Bypass permissions недоступен, потому что удалённое окружение уже изолировано.

88 

89Администраторы предприятия могут ограничить, какие режимы разрешений доступны. См. [конфигурация предприятия](#enterprise-configuration) для получения подробной информации.

90 

91### Предпросмотр вашего приложения

92 

93Claude может запустить dev-сервер и открыть встроенный браузер для проверки своих изменений. Это работает как для фронтенд-веб-приложений, так и для бэкенд-серверов: Claude может тестировать конечные точки API, просматривать логи сервера и итерировать по найденным проблемам. В большинстве случаев Claude автоматически запускает сервер после редактирования файлов проекта. Вы также можете попросить Claude предпросмотр в любое время. По умолчанию Claude [автоматически проверяет](#auto-verify-changes) изменения после каждого редактирования.

94 

95Панель предпросмотра также может открывать статические HTML-файлы, PDF-файлы, изображения и видео из вашего проекта. Нажмите на путь HTML, PDF, изображения или видео в чате, чтобы открыть его в предпросмотре.

96 

97Из панели предпросмотра вы можете:

98 

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

100* Смотреть, как Claude автоматически проверяет свои собственные изменения: он делает скриншоты, проверяет DOM, нажимает элементы, заполняет формы и исправляет найденные проблемы

101* Запускать или останавливать серверы из раскрывающегося списка **Preview** в панели инструментов сеанса

102* Сохранять cookies и локальное хранилище между перезагрузками сервера, выбрав **Persist sessions** в раскрывающемся списке, чтобы вам не пришлось повторно входить во время разработки

103* Редактировать конфигурацию сервера или остановить все серверы сразу

104 

105Claude создаёт начальную конфигурацию сервера на основе вашего проекта. Если ваше приложение использует пользовательскую команду dev, отредактируйте `.claude/launch.json` в соответствии с вашей установкой. См. [Конфигурация серверов предпросмотра](#configure-preview-servers) для полного справочника.

106 

107Чтобы очистить сохранённые данные сеанса, переключите **Persist preview sessions** в Settings → Claude Code. Чтобы полностью отключить предпросмотр, переключите **Preview** в Settings → Claude Code.

108 

109### Просмотр изменений с помощью diff view

110 

111После того как Claude вносит изменения в ваш код, diff view позволяет вам проверить изменения файл за файлом перед созданием pull request.

112 

113Когда Claude изменяет файлы, появляется индикатор статистики различий, показывающий количество добавленных и удалённых строк, например `+12 -1`. Нажмите на этот индикатор, чтобы открыть средство просмотра различий, которое отображает список файлов слева и изменения для каждого файла справа.

114 

115Чтобы прокомментировать определённые строки, нажмите на любую строку в diff, чтобы открыть поле комментария. Введите вашу обратную связь и нажмите **Enter**, чтобы добавить комментарий. После добавления комментариев к нескольким строкам отправьте все комментарии сразу:

116 

117* **macOS**: нажмите **Cmd+Enter**

118* **Windows**: нажмите **Ctrl+Enter**

119 

120Claude читает ваши комментарии и вносит запрошенные изменения, которые появляются как новый diff, который вы можете проверить.

121 

122### Проверка вашего кода

123 

124В diff view нажмите **Review code** в панели инструментов в верхнем правом углу, чтобы попросить Claude оценить изменения перед тем, как вы их зафиксируете. Claude проверяет текущие различия и оставляет комментарии прямо в diff view. Вы можете ответить на любой комментарий или попросить Claude пересмотреть.

125 

126Проверка сосредоточена на высокозначимых проблемах: ошибки компиляции, определённые логические ошибки, уязвимости безопасности и очевидные ошибки. Она не отмечает стиль, форматирование, существующие проблемы или что-либо, что поймал бы linter.

127 

128### Мониторинг статуса pull request

129 

130После открытия pull request в сеансе появляется строка статуса CI. Claude Code использует GitHub CLI для опроса результатов проверок и выявления сбоев.

131 

132* **Auto-fix**: когда включено, Claude автоматически пытается исправить сбои CI, читая вывод ошибки и итерируя.

133* **Auto-merge**: когда включено, Claude объединяет PR после прохождения всех проверок. Метод слияния — squash. Auto-merge должен быть [включен в параметрах вашего репозитория GitHub](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository) для работы.

134 

135Используйте переключатели **Auto-fix** и **Auto-merge** в строке статуса CI для включения любой опции. Claude Code также отправляет уведомление рабочего стола при завершении CI. Чтобы архивировать сеанс автоматически после слияния или закрытия PR, включите [auto-archive](#work-in-parallel-with-sessions) в Settings → Claude Code.

136 

137<Note>

138 Мониторинг PR требует установки и аутентификации [GitHub CLI (`gh`)](https://cli.github.com/) на вашей машине. Если `gh` не установлен, Desktop предложит вам установить его в первый раз, когда вы попытаетесь создать PR.

139</Note>

140 

141## Организация рабочей области

142 

143Вкладка Code построена вокруг панелей, которые вы можете организовать в любой макет: чат, diff, предпросмотр, терминал, файл, план, задачи и подагент. Перетащите панель за её заголовок, чтобы переместить её, или перетащите край панели, чтобы изменить её размер. Нажмите **Cmd+\\** на macOS или **Ctrl+\\** на Windows, чтобы закрыть сфокусированную панель. Откройте дополнительные панели из меню **Views** в панели инструментов сеанса.

144 

145<Note>

146 Макет панели, терминал, редактор файлов и режимы просмотра в этом разделе требуют Claude Desktop v1.2581.0 или более поздней версии. Откройте **Claude → Check for Updates** на macOS или **Help → Check for Updates** на Windows для обновления.

147</Note>

148 

149### Запуск команд в терминале

150 

151Интегрированный терминал позволяет вам запускать команды рядом с вашим сеансом без переключения на другое приложение. Откройте его из меню **Views** или нажмите **Ctrl+\`** на macOS или Windows. Терминал открывается в рабочем каталоге вашего сеанса и делит то же окружение с Claude, поэтому команды, такие как `npm test` или `git status`, видят те же файлы, которые редактирует Claude. Терминал доступен только в локальных сеансах.

152 

153### Открытие и редактирование файлов

154 

155Нажмите на путь файла в чате или средстве просмотра различий, чтобы открыть его в панели файлов. HTML, PDF, пути изображений и видео открываются в [панели предпросмотра](#preview-your-app) вместо этого. Сделайте точечные правки и нажмите **Save**, чтобы записать их обратно. Если файл изменился на диске с момента его открытия, панель предупредит вас и позволит вам переопределить или отклонить. Нажмите **Discard**, чтобы отменить ваши правки, или нажмите на путь в заголовке панели, чтобы скопировать абсолютный путь.

156 

157Панель файлов доступна в локальных и SSH-сеансах. Для удалённых сеансов попросите Claude сделать изменение.

158 

159### Открытие файлов в других приложениях

160 

161Щелкните правой кнопкой мыши на любом пути файла в чате, средстве просмотра различий или панели файлов, чтобы открыть контекстное меню:

162 

163* **Attach as context**: добавьте файл к вашей следующей подсказке

164* **Open in**: откройте файл в установленном редакторе, таком как VS Code, Cursor или Zed

165* **Show in Finder** на macOS, **Show in Explorer** на Windows: откройте содержащую папку

166* **Copy path**: скопируйте абсолютный путь в буфер обмена

167 

168### Переключение режимов просмотра

169 

170Режимы просмотра контролируют, сколько деталей появляется в стенограмме чата. Переключайте режимы из раскрывающегося списка **Transcript view** рядом с кнопкой отправки, или нажмите **Ctrl+O** на macOS или Windows, чтобы циклически переходить через них.

171 

172| Режим | Что показывается |

173| ----------- | --------------------------------------------------------------------------------- |

174| **Normal** | Вызовы инструментов свёрнуты в сводки, с полными текстовыми ответами |

175| **Verbose** | Каждый вызов инструмента, чтение файла и промежуточный шаг, который делает Claude |

176| **Summary** | Только финальные ответы Claude и сделанные им изменения |

177 

178Используйте Verbose при отладке того, почему Claude предпринял конкретное действие. Используйте Summary, когда вы запускаете несколько сеансов и хотите быстро просканировать результаты.

179 

180### Сочетания клавиш

181 

182Нажмите **Cmd+/** на macOS или **Ctrl+/** на Windows, чтобы увидеть все доступные сочетания клавиш на вкладке Code. На Windows используйте **Ctrl** вместо **Cmd** для сочетаний клавиш ниже. Циклирование сеансов, переключение терминала и переключение режима просмотра используют **Ctrl** на каждой платформе.

183 

184| Сочетание клавиш | Действие |

185| ------------------------------------- | -------------------------------------------- |

186| `Cmd` `/` | Показать сочетания клавиш |

187| `Cmd` `N` | Новый сеанс |

188| `Cmd` `W` | Закрыть сеанс |

189| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | Следующий или предыдущий сеанс |

190| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Следующий или предыдущий сеанс |

191| `Esc` | Остановить ответ Claude |

192| `Cmd` `Shift` `D` | Переключить панель diff |

193| `Cmd` `Shift` `P` | Переключить панель предпросмотра |

194| `Cmd` `Shift` `S` | Выбрать элемент в предпросмотре |

195| `Ctrl` `` ` `` | Переключить панель терминала |

196| `Cmd` `\` | Закрыть сфокусированную панель |

197| `Cmd` `;` | Открыть боковой чат |

198| `Ctrl` `O` | Циклически переходить через режимы просмотра |

199| `Cmd` `Shift` `M` | Открыть меню режима разрешений |

200| `Cmd` `Shift` `I` | Открыть меню модели |

201| `Cmd` `Shift` `E` | Открыть меню усилия |

202| `1`–`9` | Выбрать элемент в открытом меню |

203 

204Эти сочетания клавиш применяются только к вкладке Code. Сочетания клавиш [интерактивного режима](/ru/interactive-mode#keyboard-shortcuts) на основе терминала, такие как `Shift+Tab` для циклирования режимов, не применяются в Desktop.

205 

206### Проверка использования

207 

208Нажмите на кольцо использования рядом с выбором модели, чтобы увидеть текущее использование окна контекста и использование вашего плана за период. Использование контекста — это за сеанс; использование плана — это общее для всех ваших поверхностей Claude Code.

209 

210## Позвольте Claude использовать ваш компьютер

211 

212Использование компьютера позволяет Claude открывать ваши приложения, управлять вашим экраном и работать непосредственно на вашей машине так, как вы бы это делали. Попросите Claude протестировать нативное приложение в симуляторе мобильного устройства, взаимодействовать с инструментом рабочего стола, который не имеет CLI, или автоматизировать что-то, что работает только через GUI.

213 

214<Note>

215 Использование компьютера — это исследовательский предпросмотр на macOS и Windows, который требует плана Pro или Max. Он недоступен на планах Team или Enterprise. Приложение Claude Desktop должно быть запущено.

216</Note>

217 

218Использование компьютера отключено по умолчанию. [Включите его в Settings](#enable-computer-use) перед тем, как Claude сможет управлять вашим экраном. На macOS вам также нужно предоставить разрешения Accessibility и Screen Recording.

219 

220<Warning>

221 В отличие от [изолированного инструмента Bash](/ru/sandboxing), использование компьютера работает на вашем реальном рабочем столе с доступом к тому, что вы одобрите. Claude проверяет каждое действие и отмечает потенциальную инъекцию подсказок из содержимого на экране, но граница доверия отличается. См. [руководство по безопасности использования компьютера](https://support.claude.com/en/articles/14128542) для лучших практик.

222</Warning>

223 

224### Когда применяется использование компьютера

225 

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

227 

228* Если у вас есть [коннектор](#connect-external-tools) для сервиса, Claude использует коннектор.

229* Если задача — это команда shell, Claude использует Bash.

230* Если задача — это работа в браузере и у вас есть [Claude в Chrome](/ru/chrome) установлен, Claude использует это.

231* Если ничего из этого не применяется, Claude использует использование компьютера.

232 

233[Уровни доступа для каждого приложения](#app-permissions) усиливают это: браузеры ограничены только просмотром, а терминалы и IDE — только кликом, направляя Claude к выделенному инструменту даже когда использование компьютера активно. Управление экраном зарезервировано для вещей, которые ничто другое не может достичь, таких как нативные приложения, панели управления оборудованием, симуляторы мобильных устройств или собственные инструменты без API.

234 

235### Включение использования компьютера

236 

237Использование компьютера отключено по умолчанию. Если вы попросите Claude сделать что-то, что нуждается в этом, пока это отключено, Claude скажет вам, что он мог бы сделать задачу, если вы включите использование компьютера в Settings.

238 

239<Steps>

240 <Step title="Обновление приложения desktop">

241 Убедитесь, что у вас есть последняя версия Claude Desktop. Загрузите или обновите на [claude.com/download](https://claude.com/download), затем перезагрузите приложение.

242 </Step>

243 

244 <Step title="Включение переключателя">

245 В приложении desktop перейдите в **Settings > General** (под **Desktop app**). Найдите переключатель **Computer use** и включите его. На Windows переключатель вступает в силу немедленно и настройка завершена. На macOS продолжите к следующему шагу.

246 

247 Если вы не видите переключатель, подтвердите, что вы на macOS или Windows с планом Pro или Max, затем обновите и перезагрузите приложение.

248 </Step>

249 

250 <Step title="Предоставление разрешений macOS">

251 На macOS предоставьте два разрешения системы перед тем как переключатель вступит в силу:

252 

253 * **Accessibility**: позволяет Claude кликать, печатать и прокручивать

254 * **Screen Recording**: позволяет Claude видеть, что на вашем экране

255 

256 На странице Settings показан текущий статус каждого разрешения. Если какое-либо из них отклонено, нажмите на значок, чтобы открыть соответствующую панель System Settings.

257 </Step>

258</Steps>

259 

260### Разрешения приложений

261 

262В первый раз, когда Claude нужно использовать приложение, в вашем сеансе появляется подсказка. Нажмите **Allow for this session** или **Deny**. Одобрения действуют для текущего сеанса, или 30 минут в [сеансах, порождённых Dispatch](#sessions-from-dispatch).

263 

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

265 

266| Уровень | Что может делать Claude | Применяется к |

267| :----------- | :----------------------------------------------------------------------- | :--------------------------- |

268| View only | Видеть приложение на скриншотах | Браузеры, торговые платформы |

269| Click only | Кликать и прокручивать, но не печатать или использовать сочетания клавиш | Терминалы, IDE |

270| Full control | Кликать, печатать, перетаскивать и использовать сочетания клавиш | Всё остальное |

271 

272Приложения с широким охватом, такие как терминалы, Finder или File Explorer и System Settings или Settings, показывают дополнительное предупреждение в подсказке, чтобы вы знали, что даёт одобрение.

273 

274Вы можете настроить два параметра в **Settings > General** (под **Desktop app**):

275 

276* **Denied apps**: добавьте приложения сюда, чтобы отклонить их без подсказки. Claude может всё ещё косвенно влиять на отклонённое приложение через действия в разрешённом приложении, но не может взаимодействовать с отклонённым приложением напрямую.

277* **Unhide apps when Claude finishes**: пока Claude работает, ваши другие окна скрыты, чтобы он взаимодействовал только с одобренным приложением. Когда Claude заканчивает, скрытые окна восстанавливаются, если вы не отключите этот параметр.

278 

279## Управление сеансами

280 

281Каждый сеанс — это независимый разговор со своим собственным контекстом и изменениями. Вы можете запускать несколько сеансов параллельно, отправлять работу в облако или позволить Dispatch запускать сеансы для вас со своего телефона.

282 

283### Работа параллельно с сеансами

284 

285Нажмите **+ New session** в боковой панели, или нажмите **Cmd+N** на macOS или **Ctrl+N** на Windows, чтобы работать над несколькими задачами параллельно. Нажмите **Ctrl+Tab** и **Ctrl+Shift+Tab**, чтобы циклически переходить через сеансы в боковой панели. Для Git-репозиториев каждый сеанс получает свою собственную изолированную копию вашего проекта, используя [Git Worktrees](/ru/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees), поэтому изменения в одном сеансе не влияют на другие сеансы до тех пор, пока вы их не зафиксируете.

286 

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

288 

289Чтобы включить gitignored файлы, такие как `.env`, в новые worktrees, создайте [`.worktreeinclude` файл](/ru/common-workflows#copy-gitignored-files-to-worktrees) в корне вашего проекта.

290 

291<Note>

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

293</Note>

294 

295Используйте элементы управления в верхней части боковой панели для фильтрации сеансов по статусу, проекту или окружению, и для группировки сеансов по проекту. Чтобы переименовать сеанс, нажмите на название сеанса в панели инструментов в верхней части активного сеанса. Чтобы проверить использование контекста, см. [Проверка использования](#check-usage). Когда контекст заполняется, Claude автоматически суммирует разговор и продолжает работу. Вы также можете ввести `/compact` для запуска суммирования раньше и освобождения пространства контекста. См. [контекстное окно](/ru/how-claude-code-works#the-context-window) для получения подробной информации о том, как работает компактирование.

296 

297### Задайте боковой вопрос без отклонения сеанса

298 

299Боковой чат позволяет вам задать Claude вопрос, который использует контекст вашего сеанса, но не добавляет ничего обратно в основной разговор. Используйте его, когда вы хотите понять часть кода, проверить предположение или исследовать идею без отклонения сеанса от курса.

300 

301Нажмите **Cmd+;** на macOS или **Ctrl+;** на Windows, чтобы открыть боковой чат, или введите `/btw` в поле подсказки. Боковой чат может читать всё в основном потоке до этой точки. Когда вы закончите, закройте боковой чат и продолжите основной сеанс там, где вы остановились. Боковые чаты доступны в локальных и SSH-сеансах.

302 

303### Наблюдение за фоновыми задачами

304 

305Панель задач показывает фоновую работу, выполняемую внутри текущего сеанса: подагентов, фоновые команды shell и рабочие процессы. Откройте её из меню **Views** или перетащите её в ваш макет.

306 

307Нажмите на любую запись, чтобы увидеть её вывод в панели подагента или остановить её. Чтобы увидеть, что делают другие сеансы, используйте [боковую панель](#work-in-parallel-with-sessions).

308 

309### Запуск долгосрочных задач удалённо

310 

311Для больших рефакторингов, наборов тестов, миграций или других долгосрочных задач выберите **Remote** вместо **Local** при запуске сеанса. Удалённые сеансы работают на облачной инфраструктуре Anthropic и продолжают работу даже если вы закроете приложение или выключите компьютер. Проверяйте прогресс в любое время или направляйте Claude в другом направлении. Вы также можете мониторить удалённые сеансы из [claude.ai/code](https://claude.ai/code) или приложения Claude iOS.

312 

313Удалённые сеансы также поддерживают несколько репозиториев. После выбора облачного окружения нажмите кнопку **+** рядом с таблеткой репо, чтобы добавить дополнительные репозитории в сеанс. Каждый репо получает свой собственный селектор ветви. Это полезно для задач, охватывающих несколько кодовых баз, таких как обновление общей библиотеки и её потребителей.

314 

315См. [Claude Code на веб-сайте](/ru/claude-code-on-the-web) для получения дополнительной информации о том, как работают удалённые сеансы.

316 

317### Продолжение на другой поверхности

318 

319Меню **Continue in**, доступное из значка VS Code в нижнем правом углу панели инструментов сеанса, позволяет вам переместить ваш сеанс на другую поверхность:

320 

321* **Claude Code на веб-сайте**: отправляет ваш локальный сеанс для продолжения удалённого запуска. Desktop отправляет вашу ветвь, генерирует сводку разговора и создаёт новый удалённый сеанс с полным контекстом. Затем вы можете выбрать архивирование локального сеанса или его сохранение. Это требует чистого рабочего дерева и недоступно для SSH-сеансов.

322* **Ваша IDE**: открывает ваш проект в поддерживаемой IDE в текущем рабочем каталоге.

323 

324### Сеансы из Dispatch

325 

326[Dispatch](https://support.claude.com/en/articles/13947068) — это постоянный разговор с Claude, который живёт на вкладке [Cowork](https://claude.com/product/cowork#dispatch-and-computer-use). Вы отправляете Dispatch задачу, и он решает, как её обработать.

327 

328Задача может стать сеансом Code двумя способами: вы просите его напрямую, например "откройте сеанс Claude Code и исправьте ошибку входа", или Dispatch решает, что задача — это работа разработки и порождает один самостоятельно. Задачи, которые обычно маршрутизируются в Code, включают исправление ошибок, обновление зависимостей, запуск тестов или открытие pull requests. Исследование, редактирование документов и работа с электронными таблицами остаются в Cowork.

329 

330В любом случае, сеанс Code появляется в боковой панели вкладки Code с значком **Dispatch**. Вы получаете push-уведомление на своём телефоне, когда он завершится или потребует вашего одобрения.

331 

332Если у вас есть [использование компьютера](#let-claude-use-your-computer) включено, сеансы Code, порождённые Dispatch, могут использовать его тоже. Одобрения приложений в этих сеансах истекают через 30 минут и повторно запрашиваются, а не длятся весь сеанс, как в обычных сеансах Code.

333 

334Для настройки, сопряжения и параметров Dispatch см. [статью справки Dispatch](https://support.claude.com/en/articles/13947068). Dispatch требует плана Pro или Max и недоступен на планах Team или Enterprise.

335 

336Dispatch — это один из нескольких способов работы с Claude, когда вы находитесь вдали от своего терминала. См. [Платформы и интеграции](/ru/platforms#work-when-you-are-away-from-your-terminal) для сравнения с Remote Control, Channels, Slack и запланированными задачами.

337 

338## Расширение Claude Code

339 

340Подключайте внешние сервисы, добавляйте повторно используемые рабочие процессы, настраивайте поведение Claude и конфигурируйте серверы предпросмотра. Чтобы управлять коннекторами, skills и плагинами в одном месте, нажмите **Customize** на боковой панели.

341 

342### Подключение внешних инструментов

343 

344Для локальных и [SSH](#ssh-sessions) сеансов нажмите кнопку **+** рядом с полем подсказки и выберите **Connectors**, чтобы добавить интеграции, такие как Google Calendar, Slack, GitHub, Linear, Notion и другие. Вы можете добавлять коннекторы до или во время сеанса. Кнопка **+** недоступна в удалённых сеансах, но [routines](/ru/routines) конфигурируют коннекторы во время создания routine.

345 

346Чтобы управлять или отключать коннекторы, перейдите в Settings → Connectors в приложении desktop, или выберите **Manage connectors** из меню Connectors в поле подсказки.

347 

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

349 

350Коннекторы — это [MCP servers](/ru/mcp) с графическим потоком установки. Используйте их для быстрой интеграции с поддерживаемыми сервисами. Для интеграций, не указанных в Connectors, добавьте MCP servers вручную через [файлы параметров](/ru/mcp#installing-mcp-servers). Вы также можете [создать пользовательские коннекторы](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp).

351 

352### Использование skills

353 

354[Skills](/ru/skills) расширяют возможности Claude. Claude загружает их автоматически, когда они релевантны, или вы можете вызвать один напрямую: введите `/` в поле подсказки или нажмите кнопку **+** и выберите **Slash commands**, чтобы просмотреть доступные. Это включает [встроенные команды](/ru/commands), ваши [пользовательские skills](/ru/skills#create-your-first-skill), skills проекта из вашей кодовой базы и skills из любых [установленных плагинов](/ru/plugins). Выберите один, и он появится выделенным в поле ввода. Введите вашу задачу после него и отправьте как обычно.

355 

356### Установка плагинов

357 

358[Plugins](/ru/plugins) — это повторно используемые пакеты, которые добавляют skills, agents, hooks, MCP servers и конфигурации LSP в Claude Code. Вы можете устанавливать плагины из приложения desktop без использования терминала.

359 

360Для локальных и [SSH](#ssh-sessions) сеансов нажмите кнопку **+** рядом с полем подсказки и выберите **Plugins**, чтобы увидеть ваши установленные плагины и их skills. Чтобы добавить плагин, выберите **Add plugin** из подменю, чтобы открыть браузер плагинов, который показывает доступные плагины из ваших настроенных [marketplaces](/ru/plugin-marketplaces), включая официальный marketplace Anthropic. Выберите **Manage plugins**, чтобы включить, отключить или удалить плагины.

361 

362Плагины могут быть ограничены вашей учётной записью пользователя, конкретным проектом или только локально. Если ваша организация управляет плагинами централизованно, эти плагины доступны в сеансах desktop так же, как они есть в CLI. Плагины недоступны для удалённых сеансов. Для полного справочника плагинов, включая создание собственных плагинов, см. [plugins](/ru/plugins).

363 

364### Конфигурация серверов предпросмотра

365 

366Claude автоматически обнаруживает вашу установку dev-сервера и сохраняет конфигурацию в `.claude/launch.json` в корне папки, которую вы выбрали при запуске сеанса. Preview использует эту папку как свой рабочий каталог, поэтому если вы выбрали родительскую папку, подпапки с их собственными dev-серверами не будут обнаружены автоматически. Чтобы работать с сервером подпапки, либо запустите сеанс в этой папке напрямую, либо добавьте конфигурацию вручную.

367 

368Чтобы настроить, как запускается ваш сервер, например использовать `yarn dev` вместо `npm run dev` или изменить порт, отредактируйте файл вручную или нажмите **Edit configuration** в раскрывающемся списке Preview, чтобы открыть его в вашем редакторе кода. Файл поддерживает JSON с комментариями.

369 

370```json theme={null}

371{

372 "version": "0.0.1",

373 "configurations": [

374 {

375 "name": "my-app",

376 "runtimeExecutable": "npm",

377 "runtimeArgs": ["run", "dev"],

378 "port": 3000

379 }

380 ]

381}

382```

383 

384Вы можете определить несколько конфигураций для запуска разных серверов из одного проекта, таких как фронтенд и API. См. [примеры](#examples) ниже.

385 

386#### Автоматическая проверка изменений

387 

388Когда `autoVerify` включен, Claude автоматически проверяет изменения кода после редактирования файлов. Он делает скриншоты, проверяет ошибки и подтверждает работу изменений перед завершением своего ответа.

389 

390Auto-verify включен по умолчанию. Отключите его для каждого проекта, добавив `"autoVerify": false` в `.claude/launch.json`, или переключите его из меню **Preview**.

391 

392```json theme={null}

393{

394 "version": "0.0.1",

395 "autoVerify": false,

396 "configurations": [...]

397}

398```

399 

400Когда отключено, инструменты предпросмотра всё ещё доступны, и вы можете попросить Claude проверить в любое время. Auto-verify делает это автоматическим после каждого редактирования.

401 

402#### Поля конфигурации

403 

404Каждая запись в массиве `configurations` принимает следующие поля:

405 

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

407| ------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

408| `name` | string | Уникальный идентификатор для этого сервера |

409| `runtimeExecutable` | string | Команда для запуска, такая как `npm`, `yarn` или `node` |

410| `runtimeArgs` | string\[] | Аргументы, передаваемые `runtimeExecutable`, такие как `["run", "dev"]` |

411| `port` | number | Порт, на котором слушает ваш сервер. По умолчанию 3000 |

412| `cwd` | string | Рабочий каталог относительно корня вашего проекта. По умолчанию корень проекта. Используйте `${workspaceFolder}` для явной ссылки на корень проекта |

413| `env` | object | Дополнительные переменные окружения как пары ключ-значение, такие как `{ "NODE_ENV": "development" }`. Не помещайте сюда секреты, так как этот файл фиксируется в вашем репо. Чтобы передать секреты вашему dev-серверу, установите их в [локальном редакторе окружения](#local-sessions) вместо этого. |

414| `autoPort` | boolean | Как обрабатывать конфликты портов. См. ниже |

415| `program` | string | Скрипт для запуска с `node`. См. [когда использовать `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |

416| `args` | string\[] | Аргументы, передаваемые `program`. Используется только когда установлен `program` |

417 

418##### Когда использовать `program` vs `runtimeExecutable`

419 

420Используйте `runtimeExecutable` с `runtimeArgs` для запуска dev-сервера через менеджер пакетов. Например, `"runtimeExecutable": "npm"` с `"runtimeArgs": ["run", "dev"]` запускает `npm run dev`.

421 

422Используйте `program`, когда у вас есть автономный скрипт, который вы хотите запустить с `node` напрямую. Например, `"program": "server.js"` запускает `node server.js`. Передавайте дополнительные флаги с `args`.

423 

424#### Конфликты портов

425 

426Поле `autoPort` контролирует, что происходит, когда ваш предпочтительный порт уже используется:

427 

428* **`true`**: Claude находит и использует свободный порт автоматически. Подходит для большинства dev-серверов.

429* **`false`**: Claude выходит с ошибкой. Используйте это, когда ваш сервер должен использовать конкретный порт, например для обратных вызовов OAuth или списков разрешений CORS.

430* **Не установлено (по умолчанию)**: Claude спрашивает, нужен ли серверу этот точный порт, затем сохраняет ваш ответ.

431 

432Когда Claude выбирает другой порт, он передаёт назначенный порт вашему серверу через переменную окружения `PORT`.

433 

434#### Примеры

435 

436Эти конфигурации показывают общие установки для разных типов проектов:

437 

438<Tabs>

439 <Tab title="Next.js">

440 Эта конфигурация запускает приложение Next.js, используя Yarn на порту 3000:

441 

442 ```json theme={null}

443 {

444 "version": "0.0.1",

445 "configurations": [

446 {

447 "name": "web",

448 "runtimeExecutable": "yarn",

449 "runtimeArgs": ["dev"],

450 "port": 3000

451 }

452 ]

453 }

454 ```

455 </Tab>

456 

457 <Tab title="Multiple servers">

458 Для монорепо с фронтенд и API-сервером определите несколько конфигураций. Фронтенд использует `autoPort: true`, поэтому он выбирает свободный порт, если 3000 занят, в то время как API-сервер требует порт 8080 точно:

459 

460 ```json theme={null}

461 {

462 "version": "0.0.1",

463 "configurations": [

464 {

465 "name": "frontend",

466 "runtimeExecutable": "npm",

467 "runtimeArgs": ["run", "dev"],

468 "cwd": "apps/web",

469 "port": 3000,

470 "autoPort": true

471 },

472 {

473 "name": "api",

474 "runtimeExecutable": "npm",

475 "runtimeArgs": ["run", "start"],

476 "cwd": "server",

477 "port": 8080,

478 "env": { "NODE_ENV": "development" },

479 "autoPort": false

480 }

481 ]

482 }

483 ```

484 </Tab>

485 

486 <Tab title="Node.js script">

487 Чтобы запустить скрипт Node.js напрямую вместо использования команды менеджера пакетов, используйте поле `program`:

488 

489 ```json theme={null}

490 {

491 "version": "0.0.1",

492 "configurations": [

493 {

494 "name": "server",

495 "program": "server.js",

496 "args": ["--verbose"],

497 "port": 4000

498 }

499 ]

500 }

501 ```

502 </Tab>

503</Tabs>

504 

505## Конфигурация окружения

506 

507Окружение, которое вы выбираете при [запуске сеанса](#start-a-session), определяет, где Claude выполняется и как вы подключаетесь:

508 

509* **Local**: работает на вашей машине с прямым доступом к вашим файлам

510* **Remote**: работает на облачной инфраструктуре Anthropic. Сеансы продолжают работу даже если вы закроете приложение.

511* **SSH**: работает на удалённой машине, к которой вы подключаетесь через SSH, такой как ваши собственные серверы, облачные виртуальные машины или dev-контейнеры

512 

513### Локальные сеансы

514 

515Приложение desktop не всегда наследует полное окружение shell. На macOS, когда вы запускаете приложение из Dock или Finder, оно читает ваш профиль shell, такой как `~/.zshrc` или `~/.bashrc`, для извлечения `PATH` и фиксированного набора переменных Claude Code, но другие переменные, которые вы экспортируете там, не подхватываются. На Windows приложение наследует переменные окружения пользователя и системы, но не читает профили PowerShell.

516 

517Чтобы установить переменные окружения для локальных сеансов и dev-серверов на любой платформе, откройте раскрывающийся список окружения в поле подсказки, наведите курсор на **Local** и нажмите значок шестерёнки, чтобы открыть локальный редактор окружения. Переменные, которые вы сохраняете здесь, хранятся в зашифрованном виде на вашей машине и применяются к каждому локальному сеансу и серверу предпросмотра, который вы запускаете. Вы также можете добавить переменные к ключу `env` в вашем файле `~/.claude/settings.json`, хотя они достигают только сеансов Claude, а не dev-серверов. См. [переменные окружения](/ru/env-vars) для полного списка поддерживаемых переменных.

518 

519[Extended thinking](/ru/common-workflows#use-extended-thinking-thinking-mode) включен по умолчанию, что улучшает производительность на сложных задачах рассуждения, но использует дополнительные токены. Чтобы полностью отключить thinking, установите `MAX_THINKING_TOKENS` на `0` в локальном редакторе окружения. На моделях с [адаптивным рассуждением](/ru/model-config#adjust-effort-level) любое другое значение `MAX_THINKING_TOKENS` игнорируется, потому что адаптивное рассуждение контролирует глубину thinking вместо этого. На Opus 4.6 и Sonnet 4.6 установите `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` на `1`, чтобы использовать фиксированный бюджет thinking; Opus 4.7 всегда использует адаптивное рассуждение и не имеет режима фиксированного бюджета.

520 

521### Удалённые сеансы

522 

523Удалённые сеансы продолжают работу в фоне даже если вы закроете приложение. Использование считается в пределах [лимитов вашего плана подписки](/ru/costs) без отдельных расходов на вычисления.

524 

525Вы можете создавать пользовательские облачные окружения с разными уровнями доступа к сети и переменными окружения. Выберите раскрывающийся список окружения при запуске удалённого сеанса и выберите **Add environment**. См. [облачное окружение](/ru/claude-code-on-the-web#the-cloud-environment) для получения подробной информации о конфигурации доступа к сети и переменных окружения.

526 

527### SSH-сеансы

528 

529SSH-сеансы позволяют вам запускать Claude Code на удалённой машине, используя приложение desktop как ваш интерфейс. Это полезно для работы с кодовыми базами, которые живут на облачных виртуальных машинах, dev-контейнерах или серверах со специфическим оборудованием или зависимостями.

530 

531Чтобы добавить SSH-соединение, нажмите раскрывающийся список окружения перед запуском сеанса и выберите **+ Add SSH connection**. Диалог запрашивает:

532 

533* **Name**: дружественный ярлык для этого соединения

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

535* **SSH Port**: по умолчанию 22, если оставлено пусто, или использует порт из вашего SSH config

536* **Identity File**: путь к вашему приватному ключу, такой как `~/.ssh/id_rsa`. Оставьте пусто, чтобы использовать ключ по умолчанию или ваш SSH config.

537 

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

539 

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

541 

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

543 

544Администраторы могут распространять SSH-соединения членам команды, добавляя `sshConfigs` в файл [управляемых параметров](/ru/settings#settings-precedence). Соединения, определённые таким образом, появляются в раскрывающемся списке окружения каждого пользователя автоматически и отображаются как управляемые, поэтому пользователи могут выбирать их, но не могут редактировать или удалять их в приложении.

545 

546Следующий пример предварительно конфигурирует одно соединение, которое открывается в `~/projects` на удалённом хосте:

547 

548```json theme={null}

549{

550 "sshConfigs": [

551 {

552 "id": "shared-dev-vm",

553 "name": "Shared Dev VM",

554 "sshHost": "user@dev.example.com",

555 "sshPort": 22,

556 "sshIdentityFile": "~/.ssh/id_ed25519",

557 "startDirectory": "~/projects"

558 }

559 ]

560}

561```

562 

563Каждая запись требует `id`, `name` и `sshHost`. Поля `sshPort`, `sshIdentityFile` и `startDirectory` являются необязательными. Пользователи также могут добавить `sshConfigs` в свой собственный `~/.claude/settings.json`, где хранятся соединения, добавленные через диалог.

564 

565## Конфигурация предприятия

566 

567Организации на планах Team или Enterprise могут управлять поведением приложения desktop через элементы управления консоли администратора, управляемые файлы параметров и политики управления устройствами.

568 

569### Элементы управления консоли администратора

570 

571Эти параметры настраиваются через [консоль параметров администратора](https://claude.ai/admin-settings/claude-code):

572 

573* **Code in the desktop**: контролируйте, могут ли пользователи в вашей организации получать доступ к Claude Code в приложении desktop

574* **Code in the web**: включите или отключите [веб-сеансы](/ru/claude-code-on-the-web) для вашей организации

575* **Remote Control**: включите или отключите [Remote Control](/ru/remote-control) для вашей организации

576* **Disable Bypass permissions mode**: предотвратите пользователей в вашей организации от включения режима bypass permissions

577 

578### Управляемые параметры

579 

580Управляемые параметры переопределяют параметры проекта и пользователя и применяются, когда Desktop порождает сеансы CLI. Вы можете установить эти ключи в файле [управляемых параметров](/ru/settings#settings-precedence) вашей организации или отправить их удалённо через консоль администратора.

581 

582| Ключ | Описание |

583| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

584| `permissions.disableBypassPermissionsMode` | установите на `"disable"`, чтобы предотвратить пользователей от включения режима bypass permissions. |

585| `disableAutoMode` | установите на `"disable"`, чтобы предотвратить пользователей от включения режима [Auto](/ru/permission-modes#eliminate-prompts-with-auto-mode). Удаляет Auto из селектора режима. Также принимается под `permissions`. |

586| `autoMode` | настройте, что классификатор auto mode доверяет и блокирует во всей вашей организации. См. [Configure auto mode](/ru/auto-mode-config). |

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

588 

589Управляемый файл параметров, развёрнутый на диск на каждой машине, применяется к сеансам Desktop. Управляемые параметры, отправленные удалённо через консоль администратора, в настоящее время достигают только сеансов CLI и IDE, поэтому для развёртываний Desktop либо распространяйте файл через MDM, либо используйте [элементы управления консоли администратора](#admin-console-controls) выше.

590 

591`permissions.disableBypassPermissionsMode` и `disableAutoMode` также работают в параметрах пользователя и проекта, но размещение их в управляемых параметрах предотвращает пользователей от их переопределения. `autoMode` читается из параметров пользователя, `.claude/settings.local.json` и управляемых параметров, но не из проверенного `.claude/settings.json`: клонированный репо не может внедрить свои собственные правила классификатора. Для полного списка управляемых параметров, включая `allowManagedPermissionRulesOnly` и `allowManagedHooksOnly`, см. [managed-only settings](/ru/permissions#managed-only-settings).

592 

593### Политики управления устройствами

594 

595IT-команды могут управлять приложением desktop через MDM на macOS или групповую политику на Windows. Доступные политики включают включение или отключение функции Claude Code, контроль автоматических обновлений и установку пользовательского URL развёртывания.

596 

597* **macOS**: настройте через домен предпочтений `com.anthropic.Claude`, используя инструменты, такие как Jamf или Kandji

598* **Windows**: настройте через реестр в `SOFTWARE\Policies\Claude`

599 

600### Аутентификация и SSO

601 

602Организации предприятия могут требовать SSO для всех пользователей. См. [аутентификация](/ru/authentication) для деталей уровня плана и [Настройка SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso) для конфигурации SAML и OIDC.

603 

604### Обработка данных

605 

606Claude Code обрабатывает ваш код локально в локальных сеансах или на облачной инфраструктуре Anthropic в удалённых сеансах. Разговоры и контекст кода отправляются в API Anthropic для обработки. См. [обработка данных](/ru/data-usage) для получения подробной информации о сохранении данных, конфиденциальности и соответствии.

607 

608### Развёртывание

609 

610Desktop можно распространять через инструменты развёртывания предприятия:

611 

612* **macOS**: распространяйте через MDM, такой как Jamf или Kandji, используя установщик `.dmg`

613* **Windows**: развёртывайте через пакет MSIX или установщик `.exe`. См. [Deploy Claude Desktop for Windows](https://support.claude.com/en/articles/12622703-deploy-claude-desktop-for-windows) для опций развёртывания предприятия, включая автоматическую установку

614 

615Для конфигурации сети, такой как параметры прокси, разрешение брандмауэра и шлюзы LLM, см. [конфигурация сети](/ru/network-config).

616 

617Для полного справочника конфигурации предприятия см. [руководство конфигурации предприятия](https://support.claude.com/en/articles/12622667-enterprise-configuration).

618 

619## Переход с CLI?

620 

621Если вы уже используете Claude Code CLI, Desktop запускает тот же базовый механизм с графическим интерфейсом. Вы можете запускать оба одновременно на одной машине, даже на одном проекте. Каждый поддерживает отдельную историю сеансов, но они делят конфигурацию и память проекта через файлы CLAUDE.md.

622 

623Чтобы переместить сеанс CLI в Desktop, запустите `/desktop` в терминале. Claude сохраняет ваш сеанс и открывает его в приложении desktop, затем выходит из CLI. Эта команда доступна только на macOS и Windows.

624 

625<Tip>

626 Когда использовать Desktop vs CLI: используйте Desktop, когда вы хотите управлять параллельными сеансами в одном окне, организовать панели рядом или просмотреть изменения визуально. Используйте CLI, когда вам нужны скрипты, автоматизация или вы предпочитаете рабочий процесс терминала.

627</Tip>

628 

629### Эквиваленты флагов CLI

630 

631Эта таблица показывает эквивалент приложения desktop для общих флагов CLI. Флаги, не указанные, не имеют эквивалента desktop, потому что они предназначены для скриптов или автоматизации.

632 

633| CLI | Эквивалент Desktop |

634| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |

635| `--model sonnet` | Раскрывающийся список модели рядом с кнопкой отправки |

636| `--resume`, `--continue` | Нажмите на сеанс в боковой панели |

637| `--permission-mode` | Селектор режима рядом с кнопкой отправки |

638| `--dangerously-skip-permissions` | Режим Bypass permissions. Включите в Settings → Claude Code → "Allow bypass permissions mode". Администраторы предприятия могут отключить этот параметр. |

639| `--add-dir` | Добавьте несколько репо с кнопкой **+** в удалённых сеансах |

640| `--allowedTools`, `--disallowedTools` | Нет эквивалента для каждого сеанса. Правила разрешений в [файлах параметров](/ru/settings) по-прежнему применяются. |

641| `--verbose` | [Verbose view mode](#switch-view-modes) в раскрывающемся списке Transcript view |

642| `--print`, `--output-format` | Недоступно. Desktop только интерактивный. |

643| `ANTHROPIC_MODEL` переменная окружения | Раскрывающийся список модели рядом с кнопкой отправки |

644| `MAX_THINKING_TOKENS` переменная окружения | Установите в локальном редакторе окружения. См. [конфигурация окружения](#environment-configuration). |

645 

646### Общая конфигурация

647 

648Desktop и CLI читают одни и те же файлы конфигурации, поэтому ваша установка переносится:

649 

650* **[CLAUDE.md](/ru/memory)** и `CLAUDE.local.md` файлы в вашем проекте используются обоими

651* **[MCP servers](/ru/mcp)** настроенные в `~/.claude.json` или `.mcp.json` работают в обоих

652* **[Hooks](/ru/hooks)** и **[skills](/ru/skills)** определённые в параметрах применяются к обоим

653* **[Settings](/ru/settings)** в `~/.claude.json` и `~/.claude/settings.json` общие. Правила разрешений, разрешённые инструменты и другие параметры в `settings.json` применяются к сеансам Desktop.

654* **Models**: Sonnet, Opus и Haiku доступны в обоих. В Desktop выберите модель из раскрывающегося списка рядом с кнопкой отправки. Вы можете изменить модель во время сеанса из того же раскрывающегося списка.

655 

656<Note>

657 **MCP servers: приложение desktop chat vs Claude Code**: MCP servers настроенные для приложения Claude Desktop chat в `claude_desktop_config.json` отделены от Claude Code и не будут появляться на вкладке Code. Чтобы использовать MCP servers в Claude Code, настройте их в `~/.claude.json` или файле `.mcp.json` вашего проекта. См. [конфигурация MCP](/ru/mcp#installing-mcp-servers) для получения подробной информации.

658</Note>

659 

660### Сравнение функций

661 

662Эта таблица сравнивает основные возможности между CLI и Desktop. Для полного списка флагов CLI см. [справочник CLI](/ru/cli-reference).

663 

664| Функция | CLI | Desktop |

665| ---------------------------------------------------- | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

666| Режимы разрешений | Все режимы, включая `dontAsk` | Ask permissions, Auto accept edits, Plan mode, Auto и Bypass permissions через Settings |

667| `--dangerously-skip-permissions` | Флаг CLI | Режим Bypass permissions. Включите в Settings → Claude Code → "Allow bypass permissions mode" |

668| [Сторонние провайдеры](/ru/third-party-integrations) | Bedrock, Vertex, Foundry | Anthropic's API по умолчанию. Развёртывания предприятия могут конфигурировать Vertex AI и провайдеров шлюза. См. [руководство конфигурации предприятия](https://support.claude.com/en/articles/12622667-enterprise-configuration). |

669| [MCP servers](/ru/mcp) | Настройте в файлах параметров | UI Connectors для локальных и SSH-сеансов, или файлы параметров |

670| [Plugins](/ru/plugins) | Команда `/plugin` | UI менеджера плагинов |

671| @mention файлы | Текстовые | С автодополнением; локальные и SSH-сеансы только |

672| Вложения файлов | Недоступно | Изображения, PDF |

673| Изоляция сеанса | Флаг [`--worktree`](/ru/cli-reference) | Автоматические worktrees |

674| Несколько сеансов | Отдельные терминалы | Вкладки боковой панели |

675| Повторяющиеся задачи | Cron jobs, CI pipelines | [Запланированные задачи](/ru/desktop-scheduled-tasks) |

676| Использование компьютера | [Включение через `/mcp`](/ru/computer-use) на macOS | [Управление приложениями и экраном](#let-claude-use-your-computer) на macOS и Windows |

677| Dispatch интеграция | Недоступно | [Сеансы Dispatch](#sessions-from-dispatch) в боковой панели |

678| Скрипты и автоматизация | [`--print`](/ru/cli-reference), [Agent SDK](/ru/headless) | Недоступно |

679 

680### Что недоступно в Desktop

681 

682Следующие функции доступны только в CLI или расширении VS Code:

683 

684* **Сторонние провайдеры**: Desktop подключается к API Anthropic по умолчанию. Развёртывания предприятия могут конфигурировать Vertex AI и провайдеров шлюза через [управляемые параметры](https://support.claude.com/en/articles/12622667-enterprise-configuration). Для Bedrock или Foundry используйте [CLI](/ru/quickstart).

685* **Linux**: приложение desktop доступно только на macOS и Windows. На Linux используйте [CLI](/ru/quickstart).

686* **Встроенные предложения кода**: Desktop не предоставляет предложения в стиле автодополнения. Это работает через разговорные подсказки и явные изменения кода.

687* **Команды агентов**: оркестровка мультиагентов доступна через [CLI](/ru/agent-teams) и [Agent SDK](/ru/headless), не в Desktop.

688 

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

690 

691Разделы ниже охватывают проблемы, специфичные для приложения desktop. Для ошибок API времени выполнения, которые появляются в чате, такие как `API Error: 500`, `529 Overloaded`, `429` или `Prompt is too long`, см. [справочник ошибок](/ru/errors). Эти ошибки и их исправления одинаковы для CLI, desktop и веб.

692 

693### Проверка вашей версии

694 

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

696 

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

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

699 

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

701 

702### Ошибки 403 или аутентификации на вкладке Code

703 

704Если вы видите `Error 403: Forbidden` или другие сбои аутентификации при использовании вкладки Code:

705 

7061. Выйдите и снова войдите из меню приложения. Это наиболее частое исправление.

7072. Проверьте, что у вас есть активная платная подписка: Pro, Max, Team или Enterprise.

7083. Если CLI работает, но Desktop нет, полностью закройте приложение desktop, не просто закрывайте окно, затем снова откройте и войдите.

7094. Проверьте ваше интернет-соединение и параметры прокси.

710 

711### Пустой или зависший экран при запуске

712 

713Если приложение открывается, но показывает пустой или неответный экран:

714 

7151. Перезагрузите приложение.

7162. Проверьте наличие ожидающих обновлений. Приложение автоматически обновляется при запуске.

7173. На Windows проверьте Event Viewer на логи сбоев под **Windows Logs → Application**.

718 

719### "Failed to load session"

720 

721Если вы видите `Failed to load session`, выбранная папка может больше не существовать, Git-репозиторий может требовать Git LFS, который не установлен, или разрешения файлов могут предотвратить доступ. Попробуйте выбрать другую папку или перезагрузить приложение.

722 

723### Сеанс не находит установленные инструменты

724 

725Если Claude не может найти инструменты, такие как `npm`, `node` или другие команды CLI, проверьте, что инструменты работают в вашем обычном терминале, проверьте, что ваш профиль оболочки правильно устанавливает PATH, и перезагрузите приложение desktop для перезагрузки переменных окружения.

726 

727### Ошибки Git и Git LFS

728 

729На Windows Git требуется для запуска локальных сеансов на вкладке Code. Если вы видите "Git is required," установите [Git для Windows](https://git-scm.com/downloads/win) и перезагрузите приложение.

730 

731Если вы видите "Git LFS is required by this repository but is not installed," установите Git LFS из [git-lfs.com](https://git-lfs.com/), запустите `git lfs install` и перезагрузите приложение.

732 

733### MCP servers не работают на Windows

734 

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

736 

737### Приложение не закрывается

738 

739* **macOS**: нажмите Cmd+Q. Если приложение не реагирует, используйте Force Quit с Cmd+Option+Esc, выберите Claude и нажмите Force Quit.

740* **Windows**: используйте Task Manager с Ctrl+Shift+Esc, чтобы завершить процесс Claude.

741 

742### Проблемы, специфичные для Windows

743 

744* **PATH не обновлён после установки**: откройте новое окно терминала. Обновления PATH применяются только к новым сеансам терминала.

745* **Ошибка одновременной установки**: если вы видите ошибку о другой установке в процессе, но её нет, попробуйте запустить установщик от имени администратора.

746 

747### "Branch doesn't exist yet" при открытии в CLI

748 

749Удалённые сеансы могут создавать ветви, которые не существуют на вашей локальной машине. Нажмите на имя ветви в панели инструментов сеанса, чтобы скопировать его, затем получите его локально:

750 

751```bash theme={null}

752git fetch origin <branch-name>

753git checkout <branch-name>

754```

755 

756### Всё ещё застряли?

757 

758* Поищите или подайте отчёт об ошибке на [GitHub Issues](https://github.com/anthropics/claude-code/issues)

759* Посетите [центр поддержки Claude](https://support.claude.com/)

760 

761При подаче отчёта об ошибке включите версию приложения desktop, вашу операционную систему, точное сообщение об ошибке и соответствующие логи. На macOS проверьте Console.app. На Windows проверьте Event Viewer → Windows Logs → Application.

desktop-quickstart.md +129 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Начало работы с настольным приложением

6 

7> Установите Claude Code на рабочий стол и начните свой первый сеанс кодирования

8 

9Настольное приложение предоставляет вам Claude Code с графическим интерфейсом, созданным для запуска нескольких сеансов рядом: боковая панель для управления параллельной работой, макет с перетаскиванием с интегрированным терминалом и редактором файлов, визуальный просмотр различий, предпросмотр приложения в реальном времени, мониторинг GitHub PR с автоматическим слиянием и запланированные задачи. Терминал не требуется.

10 

11<CardGroup cols={2}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon

14 </Card>

15 

16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors

18 </Card>

19</CardGroup>

20 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.

22 

23<Note>

24 Claude Code требует [подписку Pro, Max, Team или Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_pricing).

25</Note>

26 

27На этой странице описывается установка приложения и начало вашего первого сеанса. Если вы уже настроены, см. [Использование Claude Code Desktop](/ru/desktop) для полного справочника.

28 

29Настольное приложение имеет три вкладки:

30 

31* **Chat**: Общее общение без доступа к файлам, аналогично claude.ai.

32* **Cowork**: Автономный фоновый агент, который работает над задачами в облачной виртуальной машине с собственной средой. Он может работать независимо, пока вы занимаетесь другой работой.

33* **Code**: Интерактивный помощник по кодированию с прямым доступом к вашим локальным файлам. Вы просматриваете и одобряете каждое изменение в реальном времени.

34 

35Chat и Cowork рассматриваются в [статьях поддержки Claude Desktop](https://support.claude.com/en/collections/16163169-claude-desktop). На этой странице основное внимание уделяется вкладке **Code**.

36 

37## Установка

38 

39<Steps>

40 <Step title="Установка и вход в систему">

41 Загрузите установщик для вашей платформы по ссылкам выше и запустите его. Запустите Claude из папки Applications на macOS или из меню Start на Windows, затем войдите со своей учетной записью Anthropic.

42 </Step>

43 

44 <Step title="Откройте вкладку Code">

45 Нажмите на вкладку **Code** в верхнем центре. Если нажатие на Code предлагает вам обновиться, вам необходимо сначала [подписаться на платный план](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_upgrade). Если он предлагает вам войти в систему онлайн, завершите вход и перезагрузите приложение. Если вы видите ошибку 403, см. [устранение неполадок аутентификации](/ru/desktop#403-or-authentication-errors-in-the-code-tab).

46 </Step>

47</Steps>

48 

49Настольное приложение включает Claude Code. Вам не нужно устанавливать Node.js или CLI отдельно. Чтобы использовать `claude` из терминала, установите CLI отдельно. См. [Начало работы с CLI](/ru/quickstart).

50 

51## Начните свой первый сеанс

52 

53С открытой вкладкой Code выберите проект и дайте Claude что-нибудь сделать.

54 

55<Steps>

56 <Step title="Выберите среду и папку">

57 Выберите **Local**, чтобы запустить Claude на вашем компьютере, используя ваши файлы напрямую. Нажмите **Select folder** и выберите каталог вашего проекта.

58 

59 <Tip>

60 Начните с небольшого проекта, который вы хорошо знаете. Это самый быстрый способ увидеть, что может делать Claude Code. На Windows [Git](https://git-scm.com/downloads/win) должен быть установлен для работы локальных сеансов. На большинстве Mac Git включен по умолчанию.

61 </Tip>

62 

63 Вы также можете выбрать:

64 

65 * **Remote**: Запуск сеансов на облачной инфраструктуре Anthropic, которые продолжаются даже если вы закроете приложение. Удаленные сеансы используют ту же инфраструктуру, что и [Claude Code в веб-версии](/ru/claude-code-on-the-web).

66 * **SSH**: Подключитесь к удаленной машине через SSH (ваши собственные серверы, облачные виртуальные машины или dev containers). Claude Code должен быть установлен на удаленной машине.

67 </Step>

68 

69 <Step title="Выберите модель">

70 Выберите модель из раскрывающегося списка рядом с кнопкой отправки. См. [модели](/ru/model-config#available-models) для сравнения Opus, Sonnet и Haiku. Вы можете изменить модель позже из того же раскрывающегося списка.

71 </Step>

72 

73 <Step title="Скажите Claude, что делать">

74 Введите, что вы хотите, чтобы Claude сделал:

75 

76 * `Find a TODO comment and fix it`

77 * `Add tests for the main function`

78 * `Create a CLAUDE.md with instructions for this codebase`

79 

80 [Сеанс](/ru/desktop#work-in-parallel-with-sessions) — это беседа с Claude о вашем коде. Каждый сеанс отслеживает свой собственный контекст и изменения, поэтому вы можете работать над несколькими задачами без их взаимного влияния.

81 </Step>

82 

83 <Step title="Просмотрите и примите изменения">

84 По умолчанию вкладка Code запускается в [режиме Ask permissions](/ru/desktop#choose-a-permission-mode), где Claude предлагает изменения и ждет вашего одобрения перед их применением. Вы увидите:

85 

86 1. [Представление различий](/ru/desktop#review-changes-with-diff-view), показывающее точно, что изменится в каждом файле

87 2. Кнопки Accept/Reject для одобрения или отклонения каждого изменения

88 3. Обновления в реальном времени по мере работы Claude над вашим запросом

89 

90 Если вы отклоните изменение, Claude спросит, как вы хотели бы действовать иначе. Ваши файлы не будут изменены, пока вы не примете их.

91 </Step>

92</Steps>

93 

94## Что дальше?

95 

96Вы сделали свое первое редактирование. Для полного справочника по всему, что может делать Desktop, см. [Использование Claude Code Desktop](/ru/desktop). Вот несколько вещей, которые стоит попробовать дальше.

97 

98**Прерывайте и направляйте.** Вы можете прервать Claude в любой момент. Если он идет по неправильному пути, нажмите кнопку остановки или введите свое исправление и нажмите **Enter**. Claude останавливает то, что он делает, и корректирует на основе вашего ввода. Вам не нужно ждать, пока он закончит, или начинать заново.

99 

100**Дайте Claude больше контекста.** Введите `@filename` в поле подсказки, чтобы вытащить конкретный файл в беседу, прикрепите изображения и PDF-файлы с помощью кнопки вложения или перетащите файлы прямо в подсказку. Чем больше контекста у Claude, тем лучше результаты. См. [Добавление файлов и контекста](/ru/desktop#add-files-and-context-to-prompts).

101 

102**Используйте skills для повторяющихся задач.** Введите `/` или нажмите **+** → **Slash commands**, чтобы просмотреть [встроенные команды](/ru/commands), [пользовательские skills](/ru/skills) и skills плагинов. Skills — это переиспользуемые подсказки, которые вы можете вызывать всякий раз, когда они вам нужны, например контрольные списки проверки кода или этапы развертывания.

103 

104**Просмотрите изменения перед фиксацией.** После того как Claude отредактирует файлы, появляется индикатор `+12 -1`. Нажмите на него, чтобы открыть [представление различий](/ru/desktop#review-changes-with-diff-view), просмотрите изменения файл за файлом и оставляйте комментарии к определенным строкам. Claude читает ваши комментарии и пересматривает. Нажмите **Review code**, чтобы Claude оценил различия сам и оставил встроенные предложения.

105 

106**Отрегулируйте, сколько контроля у вас есть.** Ваш [режим разрешений](/ru/desktop#choose-a-permission-mode) контролирует баланс. Ask permissions (по умолчанию) требует одобрения перед каждым редактированием. Auto accept edits автоматически принимает редактирование файлов для более быстрой итерации. Plan mode позволяет Claude наметить подход без касания каких-либо файлов, что полезно перед крупным рефакторингом.

107 

108**Добавьте плагины для большей функциональности.** Нажмите кнопку **+** рядом с полем подсказки и выберите **Plugins**, чтобы просмотреть и установить [плагины](/ru/desktop#install-plugins), которые добавляют skills, агентов, MCP servers и многое другое.

109 

110**Расположите вашу рабочую область.** Перетащите панели чата, различий, терминала, файла и предпросмотра в любой макет, который вам нужен. Откройте терминал с помощью **Ctrl+\`**, чтобы запускать команды рядом с вашим сеансом, или нажмите на путь файла, чтобы открыть его в панели файлов. См. [Расположение вашей рабочей области](/ru/desktop#arrange-your-workspace).

111 

112**Предпросмотрите ваше приложение.** Нажмите на раскрывающееся меню **Preview**, чтобы запустить ваш dev server прямо в настольном приложении. Claude может просмотреть работающее приложение, протестировать конечные точки, проверить журналы и повторить то, что он видит. См. [Предпросмотр вашего приложения](/ru/desktop#preview-your-app).

113 

114**Отслеживайте ваш pull request.** После открытия PR, Claude Code отслеживает результаты проверок CI и может автоматически исправить сбои или объединить PR после прохождения всех проверок. См. [Мониторинг статуса pull request](/ru/desktop#monitor-pull-request-status).

115 

116**Поставьте Claude по расписанию.** Установите [запланированные задачи](/ru/desktop-scheduled-tasks) для автоматического запуска Claude на повторяющейся основе: ежедневный обзор кода каждое утро, еженедельный аудит зависимостей или брифинг, который извлекает данные из ваших подключенных инструментов.

117 

118**Масштабируйте, когда будете готовы.** Откройте [параллельные сеансы](/ru/desktop#work-in-parallel-with-sessions) из боковой панели, чтобы работать над несколькими задачами одновременно, каждая в своем собственном Git worktree, и откройте [панель задач](/ru/desktop#watch-background-tasks), чтобы наблюдать за подагентами и фоновыми командами, которые запускает сеанс. Откройте [боковой чат](/ru/desktop#ask-a-side-question-without-derailing-the-session), чтобы задать вопрос без отклонения основной темы. Отправьте [долгосрочную работу в облако](/ru/desktop#run-long-running-tasks-remotely), чтобы она продолжалась даже если вы закроете приложение, или [продолжите сеанс в веб-версии или в вашей IDE](/ru/desktop#continue-in-another-surface), если задача займет больше времени, чем ожидалось. [Подключите внешние инструменты](/ru/desktop#extend-claude-code), такие как GitHub, Slack и Linear, чтобы объединить ваш рабочий процесс.

119 

120## Переходите с CLI?

121 

122Desktop запускает тот же движок, что и CLI, с графическим интерфейсом. Вы можете запускать оба одновременно на одном проекте, и они совместно используют конфигурацию (файлы CLAUDE.md, MCP servers, hooks, skills и параметры). Для полного сравнения функций, эквивалентов флагов и того, что недоступно в Desktop, см. [Сравнение CLI](/ru/desktop#coming-from-the-cli).

123 

124## Что дальше

125 

126* [Использование Claude Code Desktop](/ru/desktop): режимы разрешений, параллельные сеансы, представление различий, соединители и конфигурация предприятия

127* [Устранение неполадок](/ru/desktop#troubleshooting): решения для распространенных ошибок и проблем с настройкой

128* [Лучшие практики](/ru/best-practices): советы по написанию эффективных подсказок и максимальному использованию Claude Code

129* [Распространенные рабочие процессы](/ru/common-workflows): учебники по отладке, рефакторингу, тестированию и многому другому

devcontainer.md +194 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Контейнеры разработки

6 

7> Запустите Claude Code внутри контейнера разработки для согласованных, изолированных сред во всей вашей команде.

8 

9[Контейнер разработки](https://containers.dev/), или dev container, позволяет вам определить идентичную, изолированную среду, которую каждый инженер в вашей команде может запустить. С установленным Claude Code в этом контейнере команды, которые запускает Claude, выполняются внутри него, а не на хост-машине, при этом редактирование файлов вашего проекта отображается в локальном репозитории по мере работы.

10 

11На этой странице рассматривается [установка Claude Code в контейнер разработки](#add-claude-code-to-your-dev-container) и следующие темы конфигурации. Каждая тема является самостоятельной, поэтому переходите к тем, которые соответствуют тому, что вам нужно настроить:

12 

13* [Сохранение аутентификации и параметров при перестроении](#persist-authentication-and-settings-across-rebuilds)

14* [Применение политики организации](#enforce-organization-policy)

15* [Ограничение исходящего сетевого трафика](#restrict-network-egress)

16* [Запуск без запросов разрешений](#run-without-permission-prompts)

17 

18<Warning>

19 Хотя контейнер разработки обеспечивает существенную защиту, ни одна система полностью не защищена от всех атак.

20 При выполнении с `--dangerously-skip-permissions` контейнеры разработки не предотвращают утечку данных из вредоносного проекта, включая учетные данные Claude Code, хранящиеся в [`~/.claude`](/ru/claude-directory).

21 Используйте контейнеры разработки только при разработке с доверенными репозиториями и отслеживайте деятельность Claude.

22 Избегайте монтирования хост-секретов, таких как `~/.ssh` или файлы облачных учетных данных, в контейнер; предпочитайте токены с областью действия репозитория или краткосрочные токены.

23</Warning>

24 

25<Accordion title="Как контейнеры разработки работают с вашим редактором">

26 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=9017b1d16a446c6cc37ba562f35b9aae" className="dark:hidden" alt="Диаграмма, показывающая редактор на хосте, подключающийся к Docker контейнеру разработки. Claude Code, терминал и инструменты сборки работают внутри контейнера. Репозиторий хоста привязан к контейнеру как рабочее пространство." width="640" height="300" data-path="images/devcontainer-architecture.svg" />

27 

28 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture-dark.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=ef00c8e25b1ea7a3a152895f1488831b" className="hidden dark:block" alt="Диаграмма, показывающая редактор на хосте, подключающийся к Docker контейнеру разработки. Claude Code, терминал и инструменты сборки работают внутри контейнера. Репозиторий хоста привязан к контейнеру как рабочее пространство." width="640" height="300" data-path="images/devcontainer-architecture-dark.svg" />

29 

30 Контейнер разработки работает как Docker контейнер, либо на вашей машине, либо на облачном хосте, таком как GitHub Codespaces. Редактор, поддерживающий спецификацию Dev Containers, такой как VS Code, GitHub Codespaces, JetBrains IDE или Cursor, подключается к этому контейнеру: вы просматриваете и редактируете файлы в редакторе как обычно, но интегрированный терминал, языковые серверы и инструменты сборки все работают внутри контейнера, а не на вашем хосте. Редакторы без поддержки контейнеров разработки, такие как простой Vim, не являются частью этого рабочего процесса.

31 

32 Claude Code работает внутри контейнера, поэтому он видит те же файлы, зависимости и инструменты, что и остальная часть цепочки инструментов вашего проекта. В VS Code вы можете использовать либо [панель расширения Claude Code](/ru/vs-code), либо запустить `claude` в интегрированном терминале; оба работают внутри контейнера и используют одну и ту же конфигурацию `~/.claude`.

33</Accordion>

34 

35## Добавление Claude Code в контейнер разработки

36 

37Claude Code устанавливается в любой контейнер разработки через [Claude Code Dev Container Feature](https://github.com/anthropics/devcontainer-features/tree/main/src/claude-code).

38 

39Параметры работают с любым инструментом, поддерживающим спецификацию Dev Containers, таким как VS Code, GitHub Codespaces или JetBrains IDEs. Шаги ниже используют VS Code в качестве примера.

40 

41Когда вы открываете контейнер в VS Code или Codespaces, функция также добавляет расширение Claude Code VS Code; другие редакторы игнорируют эту часть.

42 

43<Tip>

44 Новичок в контейнерах разработки? [Учебное пособие VS Code Dev Containers](https://code.visualstudio.com/docs/devcontainers/tutorial) проходит через установку Docker, расширения и открытие вашего первого контейнера. Для более полного усиленного примера с брандмауэром и постоянными томами см. [Попробуйте контейнер-образец](#try-the-reference-container).

45</Tip>

46 

47<Steps>

48 <Step title="Создание или обновление devcontainer.json">

49 Сохраните следующее как `.devcontainer/devcontainer.json` в вашем репозитории или добавьте блок `features` в ваш существующий файл.

50 

51 Тег версии в конце, такой как `:1.0`, закрепляет скрипт установки функции, а не выпуск Claude Code. Функция устанавливает последнюю версию Claude Code, и Claude Code автоматически обновляется внутри контейнера по умолчанию.

52 

53 Чтобы закрепить версию CLI или отключить автоматическое обновление, см. [Применение политики организации](#enforce-organization-policy).

54 

55 ```json .devcontainer/devcontainer.json theme={null}

56 {

57 "image": "mcr.microsoft.com/devcontainers/base:ubuntu",

58 "features": {

59 "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}

60 }

61 }

62 ```

63 

64 Замените строку `image` на базовый образ вашего проекта или удалите ее, если ваш существующий файл использует Dockerfile.

65 </Step>

66 

67 <Step title="Перестроение контейнера">

68 Откройте палитру команд VS Code с помощью `Cmd+Shift+P` на Mac или `Ctrl+Shift+P` на Windows и Linux и запустите **Dev Containers: Rebuild Container**.

69 

70 Для других инструментов следуйте действию перестроения этого инструмента: см. [перестроение в GitHub Codespaces](https://docs.github.com/en/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace), [Dev Containers CLI](https://github.com/devcontainers/cli) или документацию контейнеров разработки вашей IDE.

71 </Step>

72 

73 <Step title="Вход в Claude Code">

74 Откройте терминал в перестроенном контейнере и запустите `claude`, затем следуйте подсказке аутентификации.

75 </Step>

76</Steps>

77 

78То, что вы видите в подсказке аутентификации, зависит от вашего поставщика:

79 

80* **Anthropic**: вход через браузер с вашей учетной записью Claude или Anthropic Console

81* **[Amazon Bedrock, Google Vertex AI или Microsoft Foundry](/ru/third-party-integrations)**: Claude Code использует учетные данные вашего облачного поставщика без подсказки браузера

82 

83Для облачных поставщиков передавайте учетные данные в контейнер как переменные окружения через `containerEnv`, секрет Codespaces или удостоверение рабочей нагрузки вашего облака, а не монтируйте файлы учетных данных с хоста. См. [Amazon Bedrock](/ru/amazon-bedrock), [Google Vertex AI](/ru/google-vertex-ai) или [Microsoft Foundry](/ru/microsoft-foundry) для цепочки учетных данных, которую читает Claude Code.

84 

85См. [Выбор поставщика API](/ru/admin-setup#choose-your-api-provider), чтобы решить, какой путь подходит вашей организации.

86 

87<Note>

88 Если вход через браузер завершен, но обратный вызов никогда не достигает контейнер, скопируйте код, показанный в браузере, и вставьте его в подсказку `Paste code here if prompted` в терминале. Это может произойти, когда переадресация портов редактора не маршрутизирует обратный вызов localhost.

89</Note>

90 

91## Сохранение аутентификации и параметров при перестроении

92 

93По умолчанию домашний каталог контейнера отбрасывается при перестроении, поэтому инженеры должны снова входить каждый раз. Claude Code хранит свой токен аутентификации, параметры пользователя и историю сеанса в [`~/.claude`](/ru/claude-directory). Смонтируйте именованный том в этом пути, чтобы сохранить это состояние при перестроении.

94 

95Следующий пример монтирует том в домашний каталог пользователя `node`:

96 

97```json devcontainer.json theme={null}

98"mounts": [

99 "source=claude-code-config,target=/home/node/.claude,type=volume"

100]

101```

102 

103Замените `/home/node` на домашний каталог `remoteUser` вашего контейнера. Если вы монтируете том в другое место, чем `~/.claude`, установите [`CLAUDE_CONFIG_DIR`](/ru/env-vars) на путь монтирования, чтобы Claude Code читал и писал там.

104 

105Чтобы изолировать состояние для каждого проекта, а не делиться одним томом во всех репозиториях, включите переменную `${devcontainerId}` в имя источника. [Справочная конфигурация](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) использует `source=claude-code-config-${devcontainerId}` для этой цели.

106 

107В GitHub Codespaces `~/.claude` сохраняется при остановке и запуске codespace, но все еще очищается при перестроении контейнера, поэтому монтирование тома выше применяется и там. Чтобы перенести аутентификацию между codespaces, сохраните `ANTHROPIC_API_KEY` или `CLAUDE_CODE_OAUTH_TOKEN` из [`claude setup-token`](/ru/authentication#generate-a-long-lived-token) как [секрет Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces); Codespaces автоматически делает секреты доступными как переменные окружения внутри контейнера.

108 

109## Применение политики организации

110 

111Контейнер разработки — это удобное место для применения политики организации, потому что один и тот же образ и конфигурация работают на машине каждого инженера.

112 

113Claude Code читает `/etc/claude-code/managed-settings.json` на Linux и применяет его с наивысшим приоритетом в [иерархии параметров](/ru/settings#how-scopes-interact), поэтому значения там переопределяют все, что инженер устанавливает в `~/.claude` или в каталоге `.claude/` проекта. Скопируйте файл на место из вашего Dockerfile:

114 

115```dockerfile Dockerfile theme={null}

116RUN mkdir -p /etc/claude-code

117COPY managed-settings.json /etc/claude-code/managed-settings.json

118```

119 

120Поскольку Dockerfile находится в репозитории, любой, у кого есть доступ на запись, может изменить или удалить этот шаг. Для политики, которую инженеры не могут обойти, редактируя файлы репозитория, доставляйте управляемые параметры через [параметры, управляемые сервером](/ru/server-managed-settings) или ваш MDM вместо этого. См. [файлы управляемых параметров](/ru/settings#settings-files) для доступных ключей и других путей доставки.

121 

122Чтобы установить [переменные окружения](/ru/env-vars), которые применяются к каждому сеансу Claude Code в контейнере, добавьте их в `containerEnv` в вашем `devcontainer.json`. Следующий пример отказывается от телеметрии и отчетов об ошибках и предотвращает автоматическое обновление Claude Code после установки:

123 

124```json devcontainer.json theme={null}

125"containerEnv": {

126 "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",

127 "DISABLE_AUTOUPDATER": "1"

128}

129```

130 

131Функция Dev Container Feature всегда устанавливает последний выпуск Claude Code. Чтобы закрепить определенную версию Claude Code для воспроизводимых сборок, установите ее из вашего Dockerfile с помощью `npm install -g @anthropic-ai/claude-code@X.Y.Z` вместо использования функции и установите `DISABLE_AUTOUPDATER`, как показано выше.

132 

133Для полного списка элементов управления политикой, включая правила разрешений, ограничения инструментов и списки разрешений серверов MCP, см. [Настройка Claude Code для вашей организации](/ru/admin-setup).

134 

135Чтобы сделать [серверы MCP](/ru/mcp) доступными внутри контейнера, определите их в [области проекта](/ru/mcp#mcp-installation-scopes) в файле `.mcp.json` в корне репозитория, чтобы они были зарегистрированы вместе с конфигурацией контейнера разработки. Установите любые двоичные файлы, от которых зависят локальные серверы stdio, в вашем Dockerfile и добавьте домены удаленных серверов в ваш список разрешений сети.

136 

137## Ограничение исходящего сетевого трафика

138 

139Вы можете ограничить исходящий трафик контейнера только доменами, которые нужны Claude Code. См. [Требования к сетевому доступу](/ru/network-config#network-access-requirements) для доменов вывода и аутентификации и [Услуги телеметрии](/ru/data-usage#telemetry-services) для дополнительных соединений телеметрии и отчетов об ошибках и способов их отключения.

140 

141Контейнер-образец включает скрипт [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh), который блокирует весь исходящий трафик, кроме доменов, которые нужны Claude Code и вашим инструментам разработки. Запуск брандмауэра внутри контейнера требует дополнительных разрешений, поэтому образец добавляет возможности `NET_ADMIN` и `NET_RAW` через `runArgs`. Скрипт брандмауэра и эти возможности не требуются для самого Claude Code: вы можете оставить их и вместо этого полагаться на ваши собственные элементы управления сетью.

142 

143## Запуск без запросов разрешений

144 

145Поскольку контейнер запускает Claude Code как непривилегированный пользователь и ограничивает выполнение команд контейнером, вы можете передать `--dangerously-skip-permissions` для автоматического выполнения. CLI отклоняет этот флаг при запуске от root, поэтому подтвердите, что `remoteUser` установлен на непривилегированную учетную запись.

146 

147Пропуск запросов разрешений удаляет вашу возможность просмотреть вызовы инструментов перед их запуском. Claude все еще может изменять любой файл в привязанном рабочем пространстве, который отображается непосредственно на вашем хосте, и достичь всего, что позволяет политика сети контейнера. Объедините этот флаг с [ограничениями исходящего сетевого трафика](#restrict-network-egress) выше, чтобы ограничить то, что может достичь обойденный сеанс.

148 

149Если вы хотите меньше подсказок без отключения проверок безопасности, рассмотрите вместо этого [автоматический режим](/ru/permission-modes#eliminate-prompts-with-auto-mode), который имеет классификатор для проверки действий перед их запуском. Чтобы предотвратить использование инженерами `--dangerously-skip-permissions` вообще, установите `permissions.disableBypassPermissionsMode` на `"disable"` в [управляемых параметрах](/ru/settings#permission-settings).

150 

151## Попробуйте контейнер-образец

152 

153Репозиторий [`anthropics/claude-code`](https://github.com/anthropics/claude-code/tree/main/.devcontainer) включает пример контейнера разработки, который объединяет CLI, брандмауэр исходящего трафика, постоянные тома и оболочку на основе Zsh. Он предоставляется как рабочий пример, а не как поддерживаемый базовый образ; используйте его, чтобы увидеть, как части подходят друг к другу, прежде чем применять их к вашей собственной конфигурации.

154 

155<Steps>

156 <Step title="Установка предварительных условий">

157 Установите VS Code и [расширение Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers).

158 </Step>

159 

160 <Step title="Клонирование образца">

161 Клонируйте [репозиторий Claude Code](https://github.com/anthropics/claude-code) и откройте его в VS Code.

162 </Step>

163 

164 <Step title="Повторное открытие в контейнере">

165 Когда будет предложено, нажмите **Reopen in Container**, или запустите **Dev Containers: Reopen in Container** из палитры команд.

166 </Step>

167 

168 <Step title="Запуск Claude Code">

169 После завершения сборки контейнера откройте терминал с помощью `` Ctrl+` `` и запустите `claude` для входа и запуска вашего первого сеанса.

170 </Step>

171</Steps>

172 

173Чтобы использовать эту конфигурацию с вашим собственным проектом, скопируйте каталог `.devcontainer/` в ваш репозиторий и отрегулируйте Dockerfile для вашей цепочки инструментов, или вернитесь к [Добавление Claude Code в контейнер разработки](#add-claude-code-to-your-dev-container), чтобы добавить только функцию в уже имеющуюся установку.

174 

175Справочная конфигурация состоит из трех файлов. Ни один из них не требуется при добавлении Claude Code в ваш собственный контейнер разработки через функцию, но они показывают один способ объединения частей.

176 

177| Файл | Назначение |

178| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |

179| [`devcontainer.json`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) | Монтирование томов, возможности `runArgs`, расширения VS Code и `containerEnv` |

180| [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/Dockerfile) | Базовый образ, инструменты разработки и установка Claude Code |

181| [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) | Блокирует весь исходящий сетевой трафик, кроме разрешенных доменов |

182 

183## Следующие шаги

184 

185После того как Claude Code работает в вашем контейнере разработки, страницы ниже охватывают остальную часть развертывания организации: выбор пути аутентификации, доставка управляемой политики вне репозитория, мониторинг использования и понимание того, что Claude Code хранит и отправляет.

186 

187* [Настройка Claude Code для вашей организации](/ru/admin-setup): выбор поставщика аутентификации, решение о том, как политика достигает устройств, и планирование развертывания

188* [Параметры, управляемые сервером](/ru/server-managed-settings): доставка управляемой политики из консоли администратора Claude.ai, чтобы инженеры не могли обойти ее, редактируя файлы репозитория

189* [Мониторинг использования и аудит деятельности](/ru/monitoring-usage): экспорт метрик OpenTelemetry и просмотр того, что запускает ваша команда

190* [Требования к сетевому доступу](/ru/network-config#network-access-requirements): полный список доменов для прокси и брандмауэров

191* [Услуги телеметрии и отказ](/ru/data-usage#telemetry-services): что Claude Code отправляет по умолчанию и переменные окружения, которые это отключают

192* [Изучение каталога `.claude`](/ru/claude-directory): что содержит монтирование тома, включая учетные данные, параметры и историю сеанса

193* [Модель безопасности](/ru/security): как система разрешений Claude Code, sandboxing и защита от внедрения подсказок работают вместе

194* [Режимы разрешений](/ru/permission-modes): полный диапазон от режима плана к автоматическому режиму к обходу и когда использовать каждый

discover-plugins.md +427 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Откройте и установите готовые плагины через маркетплейсы

6 

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

8 

9Плагины расширяют Claude Code с помощью skills, agents, hooks и MCP servers. Маркетплейсы плагинов — это каталоги, которые помогают вам обнаруживать и устанавливать эти расширения без необходимости создавать их самостоятельно.

10 

11Ищете способ создать и распространять свой собственный маркетплейс? См. [Создание и распространение маркетплейса плагинов](/ru/plugin-marketplaces).

12 

13## Как работают маркетплейсы

14 

15Маркетплейс — это каталог плагинов, которые кто-то другой создал и поделился. Использование маркетплейса — это двухэтапный процесс:

16 

17<Steps>

18 <Step title="Добавьте маркетплейс">

19 Это регистрирует каталог в Claude Code, чтобы вы могли просмотреть доступные плагины. Никакие плагины еще не установлены.

20 </Step>

21 

22 <Step title="Установите отдельные плагины">

23 Просмотрите каталог и установите нужные вам плагины.

24 </Step>

25</Steps>

26 

27Думайте об этом как о добавлении магазина приложений: добавление магазина дает вам доступ к просмотру его коллекции, но вы все равно выбираете, какие приложения загружать отдельно.

28 

29## Официальный маркетплейс Anthropic

30 

31Официальный маркетплейс Anthropic (`claude-plugins-official`) автоматически доступен при запуске Claude Code. Запустите `/plugin` и перейдите на вкладку **Discover**, чтобы просмотреть доступные плагины, или просмотрите каталог на [claude.com/plugins](https://claude.com/plugins).

32 

33Чтобы установить плагин из официального маркетплейса, используйте `/plugin install <name>@claude-plugins-official`. Например, чтобы установить интеграцию GitHub:

34 

35```shell theme={null}

36/plugin install github@claude-plugins-official

37```

38 

39<Note>

40 Официальный маркетплейс поддерживается компанией Anthropic. Чтобы отправить плагин в официальный маркетплейс, используйте одну из встроенных форм отправки:

41 

42 * **Claude.ai**: [claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)

43 * **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

44 

45 Чтобы распространять плагины независимо, [создайте свой собственный маркетплейс](/ru/plugin-marketplaces) и поделитесь им с пользователями.

46</Note>

47 

48Официальный маркетплейс включает несколько категорий плагинов:

49 

50### Code intelligence

51 

52Плагины code intelligence включают встроенный инструмент LSP в Claude Code, предоставляя Claude возможность переходить к определениям, находить ссылки и видеть ошибки типов сразу после редактирования. Эти плагины настраивают подключения [Language Server Protocol](https://microsoft.github.io/language-server-protocol/), той же технологии, которая обеспечивает code intelligence в VS Code.

53 

54Эти плагины требуют установки двоичного файла языкового сервера в вашей системе. Если у вас уже установлен языковой сервер, Claude может предложить вам установить соответствующий плагин при открытии проекта.

55 

56| Язык | Plugin | Требуемый двоичный файл |

57| :--------- | :------------------ | :--------------------------- |

58| C/C++ | `clangd-lsp` | `clangd` |

59| C# | `csharp-lsp` | `csharp-ls` |

60| Go | `gopls-lsp` | `gopls` |

61| Java | `jdtls-lsp` | `jdtls` |

62| Kotlin | `kotlin-lsp` | `kotlin-language-server` |

63| Lua | `lua-lsp` | `lua-language-server` |

64| PHP | `php-lsp` | `intelephense` |

65| Python | `pyright-lsp` | `pyright-langserver` |

66| Rust | `rust-analyzer-lsp` | `rust-analyzer` |

67| Swift | `swift-lsp` | `sourcekit-lsp` |

68| TypeScript | `typescript-lsp` | `typescript-language-server` |

69 

70Вы также можете [создать свой собственный LSP plugin](/ru/plugins-reference#lsp-servers) для других языков.

71 

72<Note>

73 Если вы видите `Executable not found in $PATH` на вкладке `/plugin` Errors после установки плагина, установите требуемый двоичный файл из таблицы выше.

74</Note>

75 

76#### Что Claude получает от плагинов code intelligence

77 

78После установки плагина code intelligence и доступности его двоичного файла языкового сервера Claude получает две возможности:

79 

80* **Автоматическая диагностика**: после каждого редактирования файла, которое делает Claude, языковой сервер анализирует изменения и автоматически сообщает об ошибках и предупреждениях. Claude видит ошибки типов, отсутствующие импорты и проблемы синтаксиса без необходимости запуска компилятора или линтера. Если Claude вводит ошибку, он замечает и исправляет проблему в том же ходу. Это не требует никакой конфигурации, кроме установки плагина. Вы можете видеть диагностику встроенной, нажав **Ctrl+O**, когда появляется индикатор "diagnostics found".

81* **Code navigation**: Claude может использовать языковой сервер для перехода к определениям, поиска ссылок, получения информации о типе при наведении, списка символов, поиска реализаций и отслеживания иерархий вызовов. Эти операции дают Claude более точную навигацию, чем поиск на основе grep, хотя доступность может варьироваться в зависимости от языка и окружения.

82 

83Если у вас возникли проблемы, см. [Code intelligence troubleshooting](#code-intelligence-issues).

84 

85### External integrations

86 

87Эти плагины объединяют предварительно настроенные [MCP servers](/ru/mcp), чтобы вы могли подключить Claude к внешним сервисам без ручной настройки:

88 

89* **Source control**: `github`, `gitlab`

90* **Project management**: `atlassian` (Jira/Confluence), `asana`, `linear`, `notion`

91* **Design**: `figma`

92* **Infrastructure**: `vercel`, `firebase`, `supabase`

93* **Communication**: `slack`

94* **Monitoring**: `sentry`

95 

96### Development workflows

97 

98Плагины, которые добавляют команды и агентов для общих задач разработки:

99 

100* **commit-commands**: рабочие процессы Git commit, включая commit, push и создание PR

101* **pr-review-toolkit**: специализированные агенты для проверки pull requests

102* **agent-sdk-dev**: инструменты для разработки с Claude Agent SDK

103* **plugin-dev**: набор инструментов для создания собственных плагинов

104 

105### Output styles

106 

107Настройте способ ответа Claude:

108 

109* **explanatory-output-style**: образовательные сведения о выборе реализации

110* **learning-output-style**: интерактивный режим обучения для развития навыков

111 

112## Попробуйте: добавьте демо-маркетплейс

113 

114Anthropic также поддерживает [демо-маркетплейс плагинов](https://github.com/anthropics/claude-code/tree/main/plugins) (`claude-code-plugins`) с примерами плагинов, которые показывают, что возможно с системой плагинов. В отличие от официального маркетплейса, вам нужно добавить этот вручную.

115 

116<Steps>

117 <Step title="Добавьте маркетплейс">

118 Из Claude Code запустите команду `plugin marketplace add` для маркетплейса `anthropics/claude-code`:

119 

120 ```shell theme={null}

121 /plugin marketplace add anthropics/claude-code

122 ```

123 

124 Это загружает каталог маркетплейса и делает его плагины доступными для вас.

125 </Step>

126 

127 <Step title="Просмотрите доступные плагины">

128 Запустите `/plugin`, чтобы открыть менеджер плагинов. Это открывает интерфейс с вкладками с четырьмя вкладками, по которым вы можете переходить, используя **Tab** (или **Shift+Tab** для перемещения назад):

129 

130 * **Discover**: просмотрите доступные плагины из всех ваших маркетплейсов

131 * **Installed**: просмотрите и управляйте установленными плагинами

132 * **Marketplaces**: добавляйте, удаляйте или обновляйте добавленные маркетплейсы

133 * **Errors**: просмотрите любые ошибки загрузки плагинов

134 

135 Перейдите на вкладку **Discover**, чтобы увидеть плагины из маркетплейса, который вы только что добавили.

136 </Step>

137 

138 <Step title="Установите плагин">

139 Выберите плагин для просмотра его деталей, затем выберите область установки:

140 

141 * **User scope**: установите для себя во всех проектах

142 * **Project scope**: установите для всех сотрудников в этом репозитории

143 * **Local scope**: установите для себя только в этом репозитории

144 

145 Например, выберите **commit-commands** (плагин, который добавляет команды рабочего процесса git) и установите его в область пользователя.

146 

147 Вы также можете установить непосредственно из командной строки:

148 

149 ```shell theme={null}

150 /plugin install commit-commands@anthropics-claude-code

151 ```

152 

153 См. [Configuration scopes](/ru/settings#configuration-scopes), чтобы узнать больше об областях.

154 </Step>

155 

156 <Step title="Используйте свой новый плагин">

157 После установки запустите `/reload-plugins` для активации плагина. Команды плагина имеют пространство имен по имени плагина, поэтому **commit-commands** предоставляет команды вроде `/commit-commands:commit`.

158 

159 Попробуйте, внеся изменение в файл и запустив:

160 

161 ```shell theme={null}

162 /commit-commands:commit

163 ```

164 

165 Это подготавливает ваши изменения, генерирует сообщение commit и создает commit.

166 

167 Каждый плагин работает по-разному. Проверьте описание плагина на вкладке **Discover** или на его домашней странице, чтобы узнать, какие команды и возможности он предоставляет.

168 </Step>

169</Steps>

170 

171Остальная часть этого руководства охватывает все способы добавления маркетплейсов, установки плагинов и управления вашей конфигурацией.

172 

173## Add marketplaces

174 

175Используйте команду `/plugin marketplace add` для добавления маркетплейсов из разных источников.

176 

177<Tip>

178 **Shortcuts**: вы можете использовать `/plugin market` вместо `/plugin marketplace` и `rm` вместо `remove`.

179</Tip>

180 

181* **GitHub repositories**: формат `owner/repo` (например, `anthropics/claude-code`)

182* **Git URLs**: любой URL репозитория git (GitLab, Bitbucket, самостоятельно размещенные)

183* **Local paths**: каталоги или прямые пути к файлам `marketplace.json`

184* **Remote URLs**: прямые URL к размещенным файлам `marketplace.json`

185 

186### Add from GitHub

187 

188Добавьте репозиторий GitHub, который содержит файл `.claude-plugin/marketplace.json`, используя формат `owner/repo` — где `owner` — это имя пользователя GitHub или организация, а `repo` — это имя репозитория.

189 

190Например, `anthropics/claude-code` относится к репозиторию `claude-code`, принадлежащему `anthropics`:

191 

192```shell theme={null}

193/plugin marketplace add anthropics/claude-code

194```

195 

196### Add from other Git hosts

197 

198Добавьте любой репозиторий git, предоставив полный URL. Это работает с любым хостом Git, включая GitLab, Bitbucket и самостоятельно размещенные серверы:

199 

200Используя HTTPS:

201 

202```shell theme={null}

203/plugin marketplace add https://gitlab.com/company/plugins.git

204```

205 

206Используя SSH:

207 

208```shell theme={null}

209/plugin marketplace add git@gitlab.com:company/plugins.git

210```

211 

212Чтобы добавить конкретную ветку или тег, добавьте `#`, за которым следует ref:

213 

214```shell theme={null}

215/plugin marketplace add https://gitlab.com/company/plugins.git#v1.0.0

216```

217 

218### Add from local paths

219 

220Добавьте локальный каталог, который содержит файл `.claude-plugin/marketplace.json`:

221 

222```shell theme={null}

223/plugin marketplace add ./my-marketplace

224```

225 

226Вы также можете добавить прямой путь к файлу `marketplace.json`:

227 

228```shell theme={null}

229/plugin marketplace add ./path/to/marketplace.json

230```

231 

232### Add from remote URLs

233 

234Добавьте удаленный файл `marketplace.json` через URL:

235 

236```shell theme={null}

237/plugin marketplace add https://example.com/marketplace.json

238```

239 

240<Note>

241 Маркетплейсы на основе URL имеют некоторые ограничения по сравнению с маркетплейсами на основе Git. Если вы столкнулись с ошибками "path not found" при установке плагинов, см. [Troubleshooting](/ru/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).

242</Note>

243 

244## Install plugins

245 

246После добавления маркетплейсов вы можете установить плагины напрямую (по умолчанию устанавливается в область пользователя):

247 

248```shell theme={null}

249/plugin install plugin-name@marketplace-name

250```

251 

252Чтобы выбрать другую [installation scope](/ru/settings#configuration-scopes), используйте интерактивный интерфейс: запустите `/plugin`, перейдите на вкладку **Discover** и нажмите **Enter** на плагине. Вы увидите опции для:

253 

254* **User scope** (по умолчанию): установите для себя во всех проектах

255* **Project scope**: установите для всех сотрудников в этом репозитории (добавляет в `.claude/settings.json`)

256* **Local scope**: установите для себя только в этом репозитории (не делится с сотрудниками)

257 

258Вы также можете увидеть плагины с областью **managed** — они установлены администраторами через [managed settings](/ru/settings#settings-files) и не могут быть изменены.

259 

260Запустите `/plugin` и перейдите на вкладку **Installed**, чтобы увидеть ваши плагины, сгруппированные по области.

261 

262<Warning>

263 Убедитесь, что вы доверяете плагину перед его установкой. Anthropic не контролирует, какие MCP servers, файлы или другое программное обеспечение включены в плагины, и не может проверить, что они работают как предполагается. Проверьте домашнюю страницу каждого плагина для получения дополнительной информации.

264</Warning>

265 

266## Manage installed plugins

267 

268Запустите `/plugin` и перейдите на вкладку **Installed**, чтобы просмотреть, включить, отключить или удалить ваши плагины. Введите текст для фильтрации списка по имени плагина или описанию.

269 

270Вы также можете управлять плагинами с помощью прямых команд.

271 

272Отключите плагин без удаления:

273 

274```shell theme={null}

275/plugin disable plugin-name@marketplace-name

276```

277 

278Повторно включите отключенный плагин:

279 

280```shell theme={null}

281/plugin enable plugin-name@marketplace-name

282```

283 

284Полностью удалите плагин:

285 

286```shell theme={null}

287/plugin uninstall plugin-name@marketplace-name

288```

289 

290Опция `--scope` позволяет вам нацелить определенную область с помощью команд CLI:

291 

292```shell theme={null}

293claude plugin install formatter@your-org --scope project

294claude plugin uninstall formatter@your-org --scope project

295```

296 

297### Apply plugin changes without restarting

298 

299Когда вы устанавливаете, включаете или отключаете плагины во время сеанса, запустите `/reload-plugins` для активации всех изменений без перезагрузки:

300 

301```shell theme={null}

302/reload-plugins

303```

304 

305Claude Code перезагружает все активные плагины и показывает количество плагинов, skills, agents, hooks, plugin MCP servers и plugin LSP servers.

306 

307## Manage marketplaces

308 

309Вы можете управлять маркетплейсами через интерактивный интерфейс `/plugin` или с помощью команд CLI.

310 

311### Use the interactive interface

312 

313Запустите `/plugin` и перейдите на вкладку **Marketplaces** для:

314 

315* Просмотра всех добавленных маркетплейсов с их источниками и статусом

316* Добавления новых маркетплейсов

317* Обновления списков маркетплейсов для получения последних плагинов

318* Удаления маркетплейсов, которые вам больше не нужны

319 

320### Use CLI commands

321 

322Вы также можете управлять маркетплейсами с помощью прямых команд.

323 

324Список всех настроенных маркетплейсов:

325 

326```shell theme={null}

327/plugin marketplace list

328```

329 

330Обновите списки плагинов из маркетплейса:

331 

332```shell theme={null}

333/plugin marketplace update marketplace-name

334```

335 

336Удалите маркетплейс:

337 

338```shell theme={null}

339/plugin marketplace remove marketplace-name

340```

341 

342<Warning>

343 Удаление маркетплейса приведет к удалению всех плагинов, которые вы установили из него.

344</Warning>

345 

346### Configure auto-updates

347 

348Claude Code может автоматически обновлять маркетплейсы и установленные плагины при запуске. Когда автоматическое обновление включено для маркетплейса, Claude Code обновляет данные маркетплейса и обновляет установленные плагины до их последних версий. Если какие-либо плагины были обновлены, вы увидите уведомление с предложением запустить `/reload-plugins`.

349 

350Переключайте автоматическое обновление для отдельных маркетплейсов через интерфейс:

351 

3521. Запустите `/plugin`, чтобы открыть менеджер плагинов

3532. Выберите **Marketplaces**

3543. Выберите маркетплейс из списка

3554. Выберите **Enable auto-update** или **Disable auto-update**

356 

357Официальные маркетплейсы Anthropic имеют автоматическое обновление, включенное по умолчанию. Маркетплейсы третьих сторон и локальной разработки имеют автоматическое обновление, отключенное по умолчанию.

358 

359Чтобы полностью отключить все автоматические обновления для Claude Code и всех плагинов, установите переменную окружения `DISABLE_AUTOUPDATER`. См. [Auto updates](/ru/setup#auto-updates) для получения подробной информации.

360 

361Чтобы сохранить автоматические обновления плагинов включенными при отключении автоматических обновлений Claude Code, установите `FORCE_AUTOUPDATE_PLUGINS=1` вместе с `DISABLE_AUTOUPDATER`:

362 

363```bash theme={null}

364export DISABLE_AUTOUPDATER=1

365export FORCE_AUTOUPDATE_PLUGINS=1

366```

367 

368Это полезно, когда вы хотите управлять обновлениями Claude Code вручную, но все еще получать автоматические обновления плагинов.

369 

370## Configure team marketplaces

371 

372Администраторы команды могут настроить автоматическую установку маркетплейса для проектов, добавив конфигурацию маркетплейса в `.claude/settings.json`. Когда члены команды доверяют папке репозитория, Claude Code предлагает им установить эти маркетплейсы и плагины.

373 

374Добавьте `extraKnownMarketplaces` в `.claude/settings.json` вашего проекта:

375 

376```json theme={null}

377{

378 "extraKnownMarketplaces": {

379 "my-team-tools": {

380 "source": {

381 "source": "github",

382 "repo": "your-org/claude-plugins"

383 }

384 }

385 }

386}

387```

388 

389Для полных опций конфигурации, включая `extraKnownMarketplaces` и `enabledPlugins`, см. [Plugin settings](/ru/settings#plugin-settings).

390 

391## Security

392 

393Плагины и маркетплейсы — это высоконадежные компоненты, которые могут выполнять произвольный код на вашей машине с вашими привилегиями пользователя. Устанавливайте плагины и добавляйте маркетплейсы только из источников, которым вы доверяете. Организации могут ограничить, какие маркетплейсы пользователям разрешено добавлять, используя [managed marketplace restrictions](/ru/plugin-marketplaces#managed-marketplace-restrictions).

394 

395## Troubleshooting

396 

397### /plugin command not recognized

398 

399Если вы видите "unknown command" или команда `/plugin` не появляется:

400 

4011. **Check your version**: запустите `claude --version`, чтобы увидеть, что установлено.

4022. **Update Claude Code**:

403 * **Homebrew**: `brew upgrade claude-code`

404 * **npm**: `npm update -g @anthropic-ai/claude-code`

405 * **Native installer**: повторно запустите команду установки из [Setup](/ru/setup)

4063. **Restart Claude Code**: после обновления перезагрузите терминал и снова запустите `claude`.

407 

408### Common issues

409 

410* **Marketplace not loading**: проверьте, что URL доступен и что `.claude-plugin/marketplace.json` существует по пути

411* **Plugin installation failures**: проверьте, что URL источника плагина доступны и репозитории являются общедоступными (или у вас есть доступ)

412* **Files not found after installation**: плагины копируются в кэш, поэтому пути, ссылающиеся на файлы вне каталога плагина, не будут работать

413* **Plugin skills not appearing**: очистите кэш с помощью `rm -rf ~/.claude/plugins/cache`, перезагрузите Claude Code и переустановите плагин.

414 

415Для подробного устранения неполадок с решениями см. [Troubleshooting](/ru/plugin-marketplaces#troubleshooting) в руководстве маркетплейса. Для инструментов отладки см. [Debugging and development tools](/ru/plugins-reference#debugging-and-development-tools).

416 

417### Code intelligence issues

418 

419* **Language server not starting**: проверьте, что двоичный файл установлен и доступен в вашем `$PATH`. Проверьте вкладку `/plugin` Errors для получения подробной информации.

420* **High memory usage**: языковые серверы, такие как `rust-analyzer` и `pyright`, могут потреблять значительную память на больших проектах. Если вы испытываете проблемы с памятью, отключите плагин с помощью `/plugin disable <plugin-name>` и вместо этого полагайтесь на встроенные инструменты поиска Claude.

421* **False positive diagnostics in monorepos**: языковые серверы могут сообщать об ошибках неразрешенного импорта для внутренних пакетов, если рабочее пространство не настроено правильно. Это не влияет на способность Claude редактировать код.

422 

423## Next steps

424 

425* **Build your own plugins**: см. [Plugins](/ru/plugins) для создания skills, agents и hooks

426* **Create a marketplace**: см. [Create a plugin marketplace](/ru/plugin-marketplaces) для распространения плагинов вашей команде или сообществу

427* **Technical reference**: см. [Plugins reference](/ru/plugins-reference) для полных спецификаций

env-vars.md +238 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Переменные окружения

6 

7> Полный справочник переменных окружения, которые управляют поведением Claude Code.

8 

9Claude Code поддерживает следующие переменные окружения для управления его поведением. Установите их в вашей оболочке перед запуском `claude`, или настройте их в [`settings.json`](/ru/settings#available-settings) под ключом `env`, чтобы применить их к каждой сессии или развернуть их по всей команде.

10 

11| Variable | Purpose |

12| :------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

13| `ANTHROPIC_API_KEY` | Ключ API, отправляемый как заголовок `X-Api-Key`. При установке этот ключ используется вместо вашей подписки Claude Pro, Max, Team или Enterprise, даже если вы вошли в систему. В неинтерактивном режиме (`-p`) ключ всегда используется при наличии. В интерактивном режиме вам предлагается одобрить ключ один раз перед тем, как он переопределит вашу подписку. Чтобы использовать вашу подписку вместо этого, запустите `unset ANTHROPIC_API_KEY` |

14| `ANTHROPIC_AUTH_TOKEN` | Пользовательское значение для заголовка `Authorization` (значение, которое вы установите здесь, будет дополнено префиксом `Bearer `) |

15| `ANTHROPIC_BASE_URL` | Переопределить конечную точку API для маршрутизации запросов через прокси или шлюз. При установке на хост, не являющийся хостом первой стороны, [поиск инструментов MCP](/ru/mcp#scale-with-mcp-tool-search) отключен по умолчанию. Установите `ENABLE_TOOL_SEARCH=true`, если ваш прокси пересылает блоки `tool_reference` |

16| `ANTHROPIC_BEDROCK_BASE_URL` | Переопределить URL конечной точки Bedrock. Используйте для пользовательских конечных точек Bedrock или при маршрутизации через [шлюз LLM](/ru/llm-gateway). См. [Amazon Bedrock](/ru/amazon-bedrock) |

17| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Переопределить URL конечной точки Bedrock Mantle. См. [конечная точка Mantle](/ru/amazon-bedrock#use-the-mantle-endpoint) |

18| `ANTHROPIC_BEDROCK_SERVICE_TIER` | Bedrock [уровень обслуживания](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html) (`default`, `flex` или `priority`). Отправляется как заголовок `X-Amzn-Bedrock-Service-Tier`. См. [Amazon Bedrock](/ru/amazon-bedrock#service-tiers) |

19| `ANTHROPIC_BETAS` | Разделённый запятыми список дополнительных значений заголовка `anthropic-beta` для включения в запросы API. Claude Code уже отправляет необходимые ему заголовки beta; используйте это, чтобы согласиться на [бета-версию Anthropic API](https://platform.claude.com/docs/en/api/beta-headers) перед тем, как Claude Code добавит встроенную поддержку. В отличие от [флага `--betas`](/ru/cli-reference#cli-flags), который требует аутентификации с помощью ключа API, эта переменная работает со всеми методами аутентификации, включая подписку Claude.ai |

20| `ANTHROPIC_CUSTOM_HEADERS` | Пользовательские заголовки для добавления к запросам (формат `Name: Value`, разделённые новой строкой для нескольких заголовков) |

21| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID модели для добавления в качестве пользовательской записи в средство выбора `/model`. Используйте это, чтобы сделать нестандартную или специфичную для шлюза модель выбираемой без замены встроенных псевдонимов. См. [Конфигурация модели](/ru/model-config#add-a-custom-model-option) |

22| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Описание отображения для пользовательской записи модели в средстве выбора `/model`. По умолчанию `Custom model (<model-id>)` при отсутствии установки |

23| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Имя отображения для пользовательской записи модели в средстве выбора `/model`. По умолчанию ID модели при отсутствии установки |

24| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | См. [Конфигурация модели](/ru/model-config#customize-pinned-model-display-and-capabilities) |

25| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | См. [Конфигурация модели](/ru/model-config#environment-variables) |

26| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | См. [Конфигурация модели](/ru/model-config#customize-pinned-model-display-and-capabilities) |

27| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | См. [Конфигурация модели](/ru/model-config#customize-pinned-model-display-and-capabilities) |

28| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | См. [Конфигурация модели](/ru/model-config#customize-pinned-model-display-and-capabilities) |

29| `ANTHROPIC_DEFAULT_OPUS_MODEL` | См. [Конфигурация модели](/ru/model-config#environment-variables) |

30| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | См. [Конфигурация модели](/ru/model-config#customize-pinned-model-display-and-capabilities) |

31| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | См. [Конфигурация модели](/ru/model-config#customize-pinned-model-display-and-capabilities) |

32| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | См. [Конфигурация модели](/ru/model-config#customize-pinned-model-display-and-capabilities) |

33| `ANTHROPIC_DEFAULT_SONNET_MODEL` | См. [Конфигурация модели](/ru/model-config#environment-variables) |

34| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | См. [Конфигурация модели](/ru/model-config#customize-pinned-model-display-and-capabilities) |

35| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | См. [Конфигурация модели](/ru/model-config#customize-pinned-model-display-and-capabilities) |

36| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | См. [Конфигурация модели](/ru/model-config#customize-pinned-model-display-and-capabilities) |

37| `ANTHROPIC_FOUNDRY_API_KEY` | Ключ API для аутентификации Microsoft Foundry (см. [Microsoft Foundry](/ru/microsoft-foundry)) |

38| `ANTHROPIC_FOUNDRY_BASE_URL` | Полный базовый URL для ресурса Foundry (например, `https://my-resource.services.ai.azure.com/anthropic`). Альтернатива `ANTHROPIC_FOUNDRY_RESOURCE` (см. [Microsoft Foundry](/ru/microsoft-foundry)) |

39| `ANTHROPIC_FOUNDRY_RESOURCE` | Имя ресурса Foundry (например, `my-resource`). Требуется, если `ANTHROPIC_FOUNDRY_BASE_URL` не установлен (см. [Microsoft Foundry](/ru/microsoft-foundry)) |

40| `ANTHROPIC_MODEL` | Имя параметра модели для использования (см. [Конфигурация модели](/ru/model-config#environment-variables)) |

41| `ANTHROPIC_SMALL_FAST_MODEL` | \[DEPRECATED] Имя [модели класса Haiku для фоновых задач](/ru/costs) |

42| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Переопределить регион AWS для модели класса Haiku при использовании Bedrock или Bedrock Mantle |

43| `ANTHROPIC_VERTEX_BASE_URL` | Переопределить URL конечной точки Vertex AI. Используйте для пользовательских конечных точек Vertex или при маршрутизации через [шлюз LLM](/ru/llm-gateway). См. [Google Vertex AI](/ru/google-vertex-ai) |

44| `ANTHROPIC_VERTEX_PROJECT_ID` | ID проекта GCP для Vertex AI. Требуется при использовании [Google Vertex AI](/ru/google-vertex-ai) |

45| `API_TIMEOUT_MS` | Тайм-аут для запросов API в миллисекундах (по умолчанию: 600000, или 10 минут; максимум: 2147483647). Увеличьте это значение, когда запросы истекают на медленных сетях или при маршрутизации через прокси. Значения выше максимума переполняют базовый таймер и вызывают немедленный отказ запросов |

46| `AWS_BEARER_TOKEN_BEDROCK` | Ключ API Bedrock для аутентификации (см. [Ключи API Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

47| `BASH_DEFAULT_TIMEOUT_MS` | Тайм-аут по умолчанию для долгоживущих команд bash (по умолчанию: 120000, или 2 минуты) |

48| `BASH_MAX_OUTPUT_LENGTH` | Максимальное количество символов в выводе bash перед их усечением в середине |

49| `BASH_MAX_TIMEOUT_MS` | Максимальный тайм-аут, который модель может установить для долгоживущих команд bash (по умолчанию: 600000, или 10 минут) |

50| `CCR_FORCE_BUNDLE` | Установите на `1`, чтобы принудительно [`claude --remote`](/ru/claude-code-on-the-web#send-local-repositories-without-github) объединить и загрузить ваш локальный репозиторий, даже когда доступ GitHub доступен |

51| `CLAUDECODE` | Установите на `1` в оболочках, которые порождает Claude Code (инструмент Bash, сессии tmux). Не установлено в [hooks](/ru/hooks) или командах [строки состояния](/ru/statusline). Используйте для обнаружения, когда скрипт выполняется внутри оболочки, порождённой Claude Code |

52| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Установите на `1`, чтобы отключить все встроенные типы [subagent](/ru/sub-agents), такие как Explore и Plan. Применяется только в неинтерактивном режиме (флаг `-p`). Полезно для пользователей SDK, которые хотят чистый лист |

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

54| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Установите процент ёмкости контекста (1-100), при котором срабатывает auto-compaction. По умолчанию auto-compaction срабатывает при примерно 95% ёмкости. Используйте меньшие значения, такие как `50`, для более раннего сжатия. Значения выше порога по умолчанию не имеют эффекта. Применяется как к основным разговорам, так и к subagents. Этот процент соответствует полю `context_window.used_percentage`, доступному в [строке состояния](/ru/statusline) |

55| `CLAUDE_AUTO_BACKGROUND_TASKS` | Установите на `1`, чтобы принудительно включить автоматическое фоновое выполнение долгоживущих задач агента. При включении subagents перемещаются в фон после выполнения примерно две минуты |

56| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Вернуться в исходный рабочий каталог после каждой команды Bash или PowerShell в основной сессии |

57| `CLAUDE_CODE_ACCESSIBILITY` | Установите на `1`, чтобы сохранить видимость собственного курсора терминала и отключить индикатор курсора с инвертированным текстом. Позволяет увеличителям экрана, таким как macOS Zoom, отслеживать позицию курсора |

58| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Установите на `1`, чтобы загружать файлы памяти из каталогов, указанных с помощью `--add-dir`. Загружает `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` и `CLAUDE.local.md`. По умолчанию дополнительные каталоги не загружают файлы памяти |

59| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Интервал в миллисекундах, при котором должны быть обновлены учётные данные (при использовании [`apiKeyHelper`](/ru/settings#available-settings)) |

60| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Установите на `0`, чтобы опустить блок атрибуции (версия клиента и отпечаток приглашения) с начала системного приглашения. Отключение его улучшает коэффициент попадания кэша приглашений при маршрутизации через [шлюз LLM](/ru/llm-gateway). Кэширование Anthropic API не затронуто |

61| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Установите ёмкость контекста в токенах, используемую для расчётов auto-compaction. По умолчанию используется контекстное окно модели: 200K для стандартных моделей или 1M для моделей с [расширенным контекстом](/ru/model-config#extended-context). Используйте меньшее значение, такое как `500000`, на модели 1M, чтобы рассматривать окно как 500K для целей сжатия. Значение ограничено фактическим контекстным окном модели. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` применяется как процент от этого значения. Установка этой переменной отделяет порог сжатия от `used_percentage` в строке состояния, который всегда использует полное контекстное окно модели |

62| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Переопределить автоматическое [подключение IDE](/ru/vs-code). По умолчанию Claude Code подключается автоматически при запуске внутри встроенного терминала поддерживаемой IDE. Установите на `false`, чтобы предотвратить это. Установите на `true`, чтобы принудительно попытаться подключиться, когда автоматическое обнаружение не удаётся, например, когда tmux скрывает родительский терминал |

63| `CLAUDE_CODE_CERT_STORE` | Разделённый запятыми список источников сертификатов CA для TLS соединений. `bundled` — это набор Mozilla CA, поставляемый с Claude Code. `system` — это хранилище доверия операционной системы. По умолчанию `bundled,system`. Для интеграции системного хранилища требуется дистрибутив нативного бинарного файла. На среде выполнения Node.js используется только набор bundled независимо от этого значения |

64| `CLAUDE_CODE_CLIENT_CERT` | Путь к файлу сертификата клиента для аутентификации mTLS |

65| `CLAUDE_CODE_CLIENT_KEY` | Путь к файлу приватного ключа клиента для аутентификации mTLS |

66| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Парольная фраза для зашифрованного CLAUDE\_CODE\_CLIENT\_KEY (опционально) |

67| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Переопределить путь к файлу журнала отладки. Несмотря на название, это путь к файлу, а не к каталогу. Требует, чтобы режим отладки был включен отдельно через `--debug` или `/debug`: установка только этой переменной не включает логирование. Флаг [`--debug-file`](/ru/cli-reference#cli-flags) делает оба сразу. По умолчанию `~/.claude/debug/<session-id>.txt` |

68| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Минимальный уровень логирования, записываемый в файл журнала отладки. Значения: `verbose`, `debug` (по умолчанию), `info`, `warn`, `error`. Установите на `verbose`, чтобы включить высокообъёмную диагностику, такую как полный вывод команды строки состояния, или повысьте до `error`, чтобы снизить шум |

69| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Установите на `1`, чтобы отключить поддержку [контекстного окна 1M](/ru/model-config#extended-context). При установке варианты модели 1M недоступны в средстве выбора модели. Полезно для корпоративных сред с требованиями соответствия |

70| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Установите на `1`, чтобы отключить [адаптивное рассуждение](/ru/model-config#adjust-effort-level) на Opus 4.6 и Sonnet 4.6 и вернуться к фиксированному бюджету мышления, контролируемому `MAX_THINKING_TOKENS`. {/* min-version: 2.1.111 */}Не влияет на Opus 4.7, который всегда использует адаптивное рассуждение |

71| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Установите на `1`, чтобы отключить обработку вложений. Упоминания файлов с синтаксисом `@` отправляются как простой текст вместо расширения в содержимое файла |

72| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Установите на `1`, чтобы отключить [автоматическую память](/ru/memory#auto-memory). Установите на `0`, чтобы принудительно включить автоматическую память во время постепенного развёртывания. При отключении Claude не создаёт и не загружает файлы автоматической памяти |

73| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Установите на `1`, чтобы отключить всю функциональность фоновых задач, включая параметр `run_in_background` на инструментах Bash и subagent, автоматическое фоновое выполнение и сочетание клавиш Ctrl+B |

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

75| `CLAUDE_CODE_DISABLE_CRON` | Установите на `1`, чтобы отключить [запланированные задачи](/ru/scheduled-tasks). Skill `/loop` и инструменты cron становятся недоступными, и все уже запланированные задачи перестают срабатывать, включая задачи, которые уже выполняются в середине сессии |

76| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Установите на `1`, чтобы удалить заголовки запроса `anthropic-beta` для Anthropic и поля схемы инструментов beta (такие как `defer_loading` и `eager_input_streaming`) из запросов API. Используйте это, когда шлюз прокси отклоняет запросы с ошибками типа "Unexpected value(s) for the `anthropic-beta` header" или "Extra inputs are not permitted". Стандартные поля (`name`, `description`, `input_schema`, `cache_control`) сохраняются. |

77| `CLAUDE_CODE_DISABLE_FAST_MODE` | Установите на `1`, чтобы отключить [быстрый режим](/ru/fast-mode) |

78| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Установите на `1`, чтобы отключить опросы качества сессии "How is Claude doing?". Опросы также отключаются, когда установлена переменная `DISABLE_TELEMETRY` или `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. См. [Опросы качества сессии](/ru/data-usage#session-quality-surveys) |

79| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Установите на `1`, чтобы отключить [checkpointing](/ru/checkpointing) файлов. Команда `/rewind` не сможет восстановить изменения кода |

80| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Установите на `1`, чтобы удалить встроенные инструкции рабочего процесса коммита и PR и снимок статуса git из системного приглашения Claude. Полезно при использовании собственных skills рабочего процесса git. Имеет приоритет над параметром [`includeGitInstructions`](/ru/settings#available-settings) при установке |

81| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Установите на `1`, чтобы предотвратить автоматическое переназначение Opus 4.0 и 4.1 на текущую версию Opus в Anthropic API. Используйте, когда вы намеренно хотите закрепить старую модель. Переназначение не выполняется на Bedrock, Vertex или Foundry |

82| `CLAUDE_CODE_DISABLE_MOUSE` | Установите на `1`, чтобы отключить отслеживание мыши в [полноэкранном режиме](/ru/fullscreen). Прокрутка с клавиатуры с помощью `PgUp` и `PgDn` по-прежнему работает. Используйте это, чтобы сохранить поведение выделения при нажатии мыши вашего терминала |

83| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Эквивалент установки `DISABLE_AUTOUPDATER`, `DISABLE_FEEDBACK_COMMAND`, `DISABLE_ERROR_REPORTING` и `DISABLE_TELEMETRY` |

84| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Установите на `1`, чтобы отключить резервный вариант без потоковой передачи, когда запрос потоковой передачи не удаётся в середине потока. Ошибки потоковой передачи распространяются на уровень повтора вместо этого. Полезно, когда прокси или шлюз вызывает резервный вариант для создания дублирующегося выполнения инструмента |

85| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Установите на `1`, чтобы пропустить автоматическое добавление официального marketplace plugin при первом запуске |

86| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Установите на `1`, чтобы пропустить загрузку skills из системного каталога управляемых skills. Полезно для сессий контейнера или CI, которые не должны загружать skills, предоставленные оператором |

87| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Установите на `1`, чтобы отключить автоматическое обновление заголовка терминала на основе контекста разговора |

88| `CLAUDE_CODE_DISABLE_THINKING` | Установите на `1`, чтобы принудительно отключить [расширенное мышление](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) независимо от поддержки модели или других параметров. Более прямой, чем `MAX_THINKING_TOKENS=0` |

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

90| `CLAUDE_CODE_EFFORT_LEVEL` | Установите уровень усилий для поддерживаемых моделей. Значения: `low`, `medium`, `high`, `xhigh`, `max` или `auto` для использования значения по умолчанию модели. Доступные уровни зависят от модели. Имеет приоритет над `/effort` и параметром `effortLevel`. См. [Отрегулировать уровень усилий](/ru/model-config#adjust-effort-level) |

91| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Переопределить доступность [сводки сессии](/ru/interactive-mode#session-recap). Установите на `0`, чтобы принудительно отключить сводки независимо от переключателя `/config`. Установите на `1`, чтобы принудительно включить сводки, когда [`awaySummaryEnabled`](/ru/settings#available-settings) имеет значение `false`. Имеет приоритет над параметром и переключателем `/config` |

92| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Установите на `1`, чтобы обновлять состояние plugin на границах хода в [неинтерактивном режиме](/ru/headless) после завершения фоновой установки. Отключено по умолчанию, потому что обновление изменяет системное приглашение в середине сессии, что делает недействительным [кэширование приглашений](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) для этого хода |

93| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Установите на `1`, чтобы принудительно включить потоковую передачу входных данных инструмента с тонкой зернистостью. Без этого API буферизирует параметры входных данных инструмента полностью перед отправкой событий delta, что может задержать отображение на больших входных данных инструмента. Только Anthropic API: не влияет на Bedrock, Vertex или Foundry |

94| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Установите на `false`, чтобы отключить предложения приглашений (переключатель "Prompt suggestions" в `/config`). Это затемнённые предсказания, которые появляются в вашем вводе приглашения после ответа Claude. См. [Предложения приглашений](/ru/interactive-mode#prompt-suggestions) |

95| `CLAUDE_CODE_ENABLE_TASKS` | Установите на `1`, чтобы включить систему отслеживания задач в неинтерактивном режиме (флаг `-p`). Задачи включены по умолчанию в интерактивном режиме. См. [Список задач](/ru/interactive-mode#task-list) |

96| `CLAUDE_CODE_ENABLE_TELEMETRY` | Установите на `1`, чтобы включить сбор данных OpenTelemetry для метрик и логирования. Требуется перед настройкой экспортёров OTel. См. [Мониторинг](/ru/monitoring-usage) |

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

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

99| `CLAUDE_CODE_EXTRA_BODY` | JSON объект для объединения на верхний уровень каждого тела запроса API. Полезно для передачи параметров, специфичных для поставщика, которые Claude Code не раскрывает напрямую |

100| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Переопределить ограничение токенов по умолчанию для чтения файлов. Полезно, когда вам нужно полностью прочитать большие файлы |

101| `CLAUDE_CODE_FORK_SUBAGENT` | Установите на `1`, чтобы включить [разветвлённые subagents](/ru/sub-agents#fork-the-current-conversation). Разветвлённый subagent наследует полный контекст разговора из основной сессии вместо начала с нуля. При включении `/fork` порождает разветвлённый subagent вместо действия как псевдоним для [`/branch`](/ru/commands), и все порождения subagent выполняются в фоне. Работает в интерактивном режиме и через SDK или `claude -p` |

102| `CLAUDE_CODE_GIT_BASH_PATH` | Только Windows: путь к исполняемому файлу Git Bash (`bash.exe`). Используйте, когда Git Bash установлен, но не в вашем PATH. См. [Настройка Windows](/ru/setup#set-up-on-windows) |

103| `CLAUDE_CODE_GLOB_HIDDEN` | Установите на `false`, чтобы исключить скрытые файлы из результатов, когда Claude вызывает [инструмент Glob](/ru/tools-reference). Включено по умолчанию. Не влияет на автодополнение файлов `@`, `ls`, Grep или Read |

104| `CLAUDE_CODE_GLOB_NO_IGNORE` | Установите на `false`, чтобы заставить [инструмент Glob](/ru/tools-reference) соблюдать шаблоны `.gitignore`. По умолчанию Glob возвращает все совпадающие файлы, включая игнорируемые git. Не влияет на автодополнение файлов `@`, которое имеет свой собственный [параметр `respectGitignore`](/ru/settings#available-settings) |

105| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Тайм-аут в секундах для обнаружения файлов инструмента Glob. По умолчанию 20 секунд на большинстве платформ и 60 секунд на WSL |

106| `CLAUDE_CODE_HIDE_CWD` | Установите на `1`, чтобы скрыть рабочий каталог в логотипе при запуске. Полезно для совместного использования экрана или записей, где путь раскрывает имя пользователя вашей ОС |

107| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Переопределить адрес хоста, используемый для подключения к расширению IDE. По умолчанию Claude Code автоматически обнаруживает правильный адрес, включая маршрутизацию WSL-to-Windows |

108| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Пропустить автоматическую установку расширений IDE. Эквивалент установки [`autoInstallIdeExtension`](/ru/settings#global-config-settings) на `false` |

109| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Установите на `1`, чтобы пропустить проверку записей файла блокировки IDE при подключении. Используйте, когда автоматическое подключение не может найти вашу IDE, несмотря на то, что она работает |

110| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Переопределить размер контекстного окна, который Claude Code предполагает для активной модели. Вступает в силу только при установке `DISABLE_COMPACT`. Используйте это при маршрутизации к модели через `ANTHROPIC_BASE_URL`, чьё контекстное окно не совпадает с встроенным размером для её имени |

111| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Установите максимальное количество выходных токенов для большинства запросов. Значения по умолчанию и максимальные значения варьируются в зависимости от модели; см. [максимальное количество выходных токенов](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Увеличение этого значения уменьшает доступное контекстное окно перед срабатыванием [auto-compaction](/ru/costs#reduce-token-usage). |

112| `CLAUDE_CODE_MAX_RETRIES` | Переопределить количество попыток повтора неудачных запросов API (по умолчанию: 10) |

113| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Максимальное количество инструментов только для чтения и subagents, которые могут выполняться параллельно (по умолчанию: 10). Более высокие значения увеличивают параллелизм, но потребляют больше ресурсов |

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

115| `CLAUDE_CODE_NEW_INIT` | Установите на `1`, чтобы `/init` запустил интерактивный поток настройки. Поток спрашивает, какие файлы генерировать, включая CLAUDE.md, skills и hooks, перед исследованием кодовой базы и их написанием. Без этой переменной `/init` автоматически генерирует CLAUDE.md без запроса. |

116| `CLAUDE_CODE_NO_FLICKER` | Установите на `1`, чтобы включить [полноэкранный режим](/ru/fullscreen), исследовательский предпросмотр, который уменьшает мерцание и сохраняет память плоской в длинных разговорах. Эквивалент параметра [`tui`](/ru/settings#available-settings); вы также можете переключаться с помощью `/tui fullscreen` |

117| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | OAuth токен обновления для аутентификации Claude.ai. При установке `claude auth login` обменивает этот токен напрямую вместо открытия браузера. Требует `CLAUDE_CODE_OAUTH_SCOPES`. Полезно для предоставления аутентификации в автоматизированных сред |

118| `CLAUDE_CODE_OAUTH_SCOPES` | Разделённые пробелом OAuth области, с которыми был выдан токен обновления, такие как `"user:profile user:inference user:sessions:claude_code"`. Требуется, когда установлен `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` |

119| `CLAUDE_CODE_OAUTH_TOKEN` | OAuth токен доступа для аутентификации Claude.ai. Альтернатива `/login` для SDK и автоматизированных сред. Имеет приоритет над учётными данными, хранящимися в цепочке ключей. Создайте один с помощью [`claude setup-token`](/ru/authentication#generate-a-long-lived-token) |

120| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Тайм-аут в миллисекундах для очистки ожидающих spans OpenTelemetry (по умолчанию: 5000). См. [Мониторинг](/ru/monitoring-usage) |

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

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

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

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

125| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Тайм-аут в миллисекундах для операций git при установке или обновлении plugins (по умолчанию: 120000). Увеличьте это значение для больших репозиториев или медленных сетевых соединений. См. [Операции Git истекают](/ru/plugin-marketplaces#git-operations-time-out) |

126| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Установите на `1`, чтобы сохранить существующий кэш marketplace, когда `git pull` не удаётся, вместо очистки и повторного клонирования. Полезно в автономных или изолированных сетях, где повторное клонирование не удалось бы таким же образом. См. [Обновления Marketplace не удаются в автономных сред](/ru/plugin-marketplaces#marketplace-updates-fail-in-offline-environments) |

127| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Путь к одному или нескольким каталогам seed plugins только для чтения, разделённым `:` на Unix или `;` на Windows. Используйте это, чтобы объединить предварительно заполненный каталог plugins в образ контейнера. Claude Code регистрирует marketplaces из этих каталогов при запуске и использует предварительно кэшированные plugins без повторного клонирования. См. [Предварительное заполнение plugins для контейнеров](/ru/plugin-marketplaces#pre-populate-plugins-for-containers) |

128| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Установлено хост-платформами, которые встраивают Claude Code и управляют маршрутизацией поставщика модели от его имени. При установке переменные выбора поставщика, конечной точки и аутентификации, такие как `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL` и `ANTHROPIC_API_KEY` в файлах параметров, игнорируются, поэтому параметры пользователя не могут переопределить маршрутизацию хоста. Автоматический отказ от телеметрии для Bedrock, Vertex и Foundry также пропускается, поэтому телеметрия следует стандартному отказу `DISABLE_TELEMETRY`. См. [Поведение по умолчанию по поставщику API](/ru/data-usage#default-behaviors-by-api-provider) |

129| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Установите на `1`, чтобы позволить прокси выполнять разрешение DNS вместо вызывающей стороны. Согласитесь для сред, где прокси должен обрабатывать разрешение имён хостов |

130| `CLAUDE_CODE_REMOTE` | Установите автоматически на `true`, когда Claude Code работает как [облачная сессия](/ru/claude-code-on-the-web). Прочитайте это из hook или скрипта настройки, чтобы обнаружить, находитесь ли вы в облачной среде |

131| `CLAUDE_CODE_REMOTE_SESSION_ID` | Установите автоматически в [облачных сессиях](/ru/claude-code-on-the-web) на ID текущей сессии. Прочитайте это, чтобы построить ссылку обратно на транскрипт сессии. См. [Ссылка артефактов обратно на сессию](/ru/claude-code-on-the-web#link-artifacts-back-to-the-session) |

132| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Установите на `1`, чтобы автоматически возобновить, если предыдущая сессия закончилась в середине хода. Используется в режиме SDK, чтобы модель продолжала работу без необходимости повторной отправки приглашения SDK |

133| `CLAUDE_CODE_SCRIPT_CAPS` | JSON объект, ограничивающий, сколько раз конкретные скрипты могут быть вызваны за сессию, когда установлен `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`. Ключи — это подстроки, сопоставленные с текстом команды; значения — это ограничения целого числа вызовов. Например, `{"deploy.sh": 2}` позволяет `deploy.sh` быть вызванным максимум дважды. Сопоставление основано на подстроке, поэтому трюки расширения оболочки, такие как `./scripts/deploy.sh $(evil)`, по-прежнему учитываются в отношении лимита. Разветвление среды выполнения через `xargs` или `find -exec` не обнаруживается; это контроль защиты в глубину |

134| `CLAUDE_CODE_SCROLL_SPEED` | Установите множитель прокрутки колеса мыши в [полноэкранном режиме](/ru/fullscreen#mouse-wheel-scrolling). Принимает значения от 1 до 20. Установите на `3`, чтобы соответствовать `vim`, если ваш терминал отправляет одно событие колеса на зубец без усиления |

135| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Переопределить бюджет времени в миллисекундах для [SessionEnd](/ru/hooks#sessionend) hooks. Применяется к выходу из сессии, `/clear` и переключению сессий через интерактивный `/resume`. По умолчанию бюджет составляет 1,5 секунды, автоматически повышается до наивысшего `timeout` для каждого hook, настроенного в файлах параметров, до 60 секунд. Тайм-ауты на hooks, предоставленные plugin, не повышают бюджет |

136| `CLAUDE_CODE_SHELL` | Переопределить автоматическое обнаружение оболочки. Полезно, когда ваша оболочка входа отличается от вашей предпочтительной рабочей оболочки (например, `bash` против `zsh`) |

137| `CLAUDE_CODE_SHELL_PREFIX` | Префикс команды для обёртывания команд bash, которые порождает Claude Code: вызовы инструмента Bash, команды [hook](/ru/hooks) и команды запуска stdio [MCP server](/ru/mcp). Полезно для логирования или аудита. Пример: установка `/path/to/logger.sh` запускает каждую команду как `/path/to/logger.sh <command>` |

138| `CLAUDE_CODE_SIMPLE` | Установите на `1`, чтобы запустить с минимальным системным приглашением и только инструментами Bash, чтения файлов и редактирования файлов. MCP tools из `--mcp-config` по-прежнему доступны. Отключает автоматическое обнаружение hooks, skills, plugins, MCP servers, автоматическую память и CLAUDE.md. Флаг CLI [`--bare`](/ru/headless#start-faster-with-bare-mode) устанавливает это |

139| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Установите на `1`, чтобы использовать минимальное системное приглашение и свёрнутые описания инструментов на Opus 4.7. Не влияет на другие модели. Полный набор инструментов, hooks, MCP servers и обнаружение CLAUDE.md остаются включены |

140| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Пропустить аутентификацию AWS для Bedrock (например, при использовании шлюза LLM) |

141| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Пропустить аутентификацию Azure для Microsoft Foundry (например, при использовании шлюза LLM) |

142| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Пропустить аутентификацию AWS для Bedrock Mantle (например, при использовании шлюза LLM) |

143| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Установите на `1`, чтобы пропустить запись истории приглашений и транскриптов сессий на диск. Сессии, запущенные с этой переменной, не появляются в `--resume`, `--continue` или истории стрелок вверх. Полезно для эфемерных скриптовых сессий |

144| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Пропустить аутентификацию Google для Vertex (например, при использовании шлюза LLM) |

145| `CLAUDE_CODE_SUBAGENT_MODEL` | См. [Конфигурация модели](/ru/model-config) |

146| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Установите на `1`, чтобы удалить учётные данные Anthropic и поставщика облачных услуг из сред подпроцессов (инструмент Bash, hooks, MCP stdio servers). Родительский процесс Claude сохраняет эти учётные данные для вызовов API, но дочерние процессы не могут их читать, снижая воздействие атак внедрения приглашений, которые пытаются экспортировать секреты через расширение оболочки. На Linux это также запускает подпроцессы Bash в изолированном пространстве имён PID, поэтому они не могут читать сред хост-процессов через `/proc`; как побочный эффект, `ps`, `pgrep` и `kill` не могут видеть или сигнализировать хост-процессам. `claude-code-action` устанавливает это автоматически, когда настроен `allowed_non_write_users` |

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

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

149| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Установите на `false`, чтобы отключить подсветку синтаксиса в выводе diff. Полезно, когда цвета мешают вашей настройке терминала |

150| `CLAUDE_CODE_TASK_LIST_ID` | Поделитесь списком задач между сессиями. Установите один и тот же ID в нескольких экземплярах Claude Code для координации общего списка задач. См. [Список задач](/ru/interactive-mode#task-list) |

151| `CLAUDE_CODE_TEAM_NAME` | Имя команды агентов, к которой принадлежит этот товарищ. Установите автоматически на членах [команды агентов](/ru/agent-teams) |

152| `CLAUDE_CODE_TMPDIR` | Переопределить временный каталог, используемый для внутренних временных файлов. Claude Code добавляет `/claude-{uid}/` (Unix) или `/claude/` (Windows) к этому пути. По умолчанию: `/tmp` на macOS, `os.tmpdir()` на Linux/Windows |

153| `CLAUDE_CODE_TMUX_TRUECOLOR` | Установите на `1`, чтобы разрешить вывод 24-битного truecolor внутри tmux. По умолчанию Claude Code ограничивает 256 цветами, когда установлена `$TMUX`, потому что tmux не пропускает последовательности выхода truecolor, если не настроен. Установите это после добавления `set -ga terminal-overrides ',*:Tc'` в ваш `~/.tmux.conf`. См. [Конфигурация терминала](/ru/terminal-config) для других параметров tmux |

154| `CLAUDE_CODE_USE_BEDROCK` | Использовать [Bedrock](/ru/amazon-bedrock) |

155| `CLAUDE_CODE_USE_FOUNDRY` | Использовать [Microsoft Foundry](/ru/microsoft-foundry) |

156| `CLAUDE_CODE_USE_MANTLE` | Использовать конечную точку Bedrock [Mantle](/ru/amazon-bedrock#use-the-mantle-endpoint) |

157| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | Установите на `1`, чтобы обнаруживать пользовательские команды, subagents и стили вывода, используя API файлов Node.js вместо ripgrep. Установите это, если встроенный бинарный файл ripgrep недоступен или заблокирован в вашей среде. Не влияет на инструменты Grep или поиск файлов |

158| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | Управляет инструментом PowerShell. На Windows без Git Bash инструмент включен автоматически; установите на `0`, чтобы отключить его. На Windows с установленным Git Bash инструмент постепенно развёртывается: установите на `1`, чтобы согласиться, или на `0`, чтобы отказаться. На Linux, macOS и WSL установите на `1`, чтобы включить его, что требует `pwsh` в вашем `PATH`. При включении на Windows Claude может запускать команды PowerShell изначально вместо маршрутизации через Git Bash. См. [Инструмент PowerShell](/ru/tools-reference#powershell-tool) |

159| `CLAUDE_CODE_USE_VERTEX` | Использовать [Vertex](/ru/google-vertex-ai) |

160| `CLAUDE_CONFIG_DIR` | Переопределить каталог конфигурации (по умолчанию: `~/.claude`). Все параметры, учётные данные, история сессии и plugins хранятся под этим путём. Полезно для запуска нескольких учётных записей рядом: например, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'` |

161| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Установите на `1`, чтобы принудительно включить сторож простоя на уровне байтов, или установите на `0`, чтобы принудительно отключить его. Если не установлено, сторож включен по умолчанию для соединений Anthropic API. Сторож байтов прерывает соединение, когда на проводе не поступают байты в течение времени, установленного `CLAUDE_STREAM_IDLE_TIMEOUT_MS`, с минимумом 5 минут, независимо от сторожа на уровне событий |

162| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Установите на `1`, чтобы включить сторож простоя потока на уровне событий. Отключено по умолчанию. Для Bedrock, Vertex и Foundry это единственный доступный сторож простоя. Настройте тайм-аут с помощью `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

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

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

165| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Тайм-аут в миллисекундах перед тем, как сторож простоя потока закроет зависшее соединение. По умолчанию и минимум `300000` (5 минут) для сторожа на уровне байтов в Anthropic API; более низкие значения молча ограничиваются, чтобы поглотить паузы расширенного мышления и буферизацию прокси. Для сторожа на уровне событий: по умолчанию `90000` (90 секунд), нет минимума. Для сторонних поставщиков требуется `CLAUDE_ENABLE_STREAM_WATCHDOG=1` |

166| `DISABLE_AUTOUPDATER` | Установите на `1`, чтобы отключить автоматические обновления в фоне. Ручная команда `claude update` по-прежнему работает. Используйте `DISABLE_UPDATES`, чтобы заблокировать оба |

167| `DISABLE_AUTO_COMPACT` | Установите на `1`, чтобы отключить автоматическое сжатие при приближении к лимиту контекста. Команда `/compact` остаётся доступной. Используйте, когда вы хотите явный контроль над тем, когда происходит сжатие |

168| `DISABLE_COMPACT` | Установите на `1`, чтобы отключить все сжатие: как автоматическое сжатие, так и команду `/compact` |

169| `DISABLE_COST_WARNINGS` | Установите на `1`, чтобы отключить сообщения предупреждения о стоимости |

170| `DISABLE_DOCTOR_COMMAND` | Установите на `1`, чтобы скрыть команду `/doctor`. Полезно для управляемых развёртываний, где пользователи не должны запускать диагностику установки |

171| `DISABLE_ERROR_REPORTING` | Установите на `1`, чтобы отказаться от отчётов об ошибках Sentry |

172| `DISABLE_EXTRA_USAGE_COMMAND` | Установите на `1`, чтобы скрыть команду `/extra-usage`, которая позволяет пользователям приобретать дополнительное использование сверх лимитов скорости |

173| `DISABLE_FEEDBACK_COMMAND` | Установите на `1`, чтобы отключить команду `/feedback`. Также принимается старое имя `DISABLE_BUG_COMMAND` |

174| `DISABLE_GROWTHBOOK` | Установите на `1`, чтобы отключить получение флагов функций GrowthBook и использовать значения по умолчанию кода для каждого флага. Логирование событий телеметрии остаётся включённым, если также не установлена переменная `DISABLE_TELEMETRY` |

175| `DISABLE_INSTALLATION_CHECKS` | Установите на `1`, чтобы отключить предупреждения об установке. Используйте только при ручном управлении местоположением установки, так как это может скрыть проблемы со стандартными установками |

176| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | Установите на `1`, чтобы скрыть команду `/install-github-app`. Уже скрыта при использовании сторонних поставщиков (Bedrock, Vertex или Foundry) |

177| `DISABLE_INTERLEAVED_THINKING` | Установите на `1`, чтобы предотвратить отправку заголовка beta interleaved-thinking. Полезно, когда ваш шлюз LLM или поставщик не поддерживает [interleaved thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) |

178| `DISABLE_LOGIN_COMMAND` | Установите на `1`, чтобы скрыть команду `/login`. Полезно, когда аутентификация обрабатывается внешне через ключи API или `apiKeyHelper` |

179| `DISABLE_LOGOUT_COMMAND` | Установите на `1`, чтобы скрыть команду `/logout` |

180| `DISABLE_PROMPT_CACHING` | Установите на `1`, чтобы отключить кэширование приглашений для всех моделей (имеет приоритет над параметрами для отдельных моделей) |

181| `DISABLE_PROMPT_CACHING_HAIKU` | Установите на `1`, чтобы отключить кэширование приглашений для моделей Haiku |

182| `DISABLE_PROMPT_CACHING_OPUS` | Установите на `1`, чтобы отключить кэширование приглашений для моделей Opus |

183| `DISABLE_PROMPT_CACHING_SONNET` | Установите на `1`, чтобы отключить кэширование приглашений для моделей Sonnet |

184| `DISABLE_TELEMETRY` | Установите на `1`, чтобы отказаться от телеметрии Statsig (обратите внимание, что события Statsig не включают данные пользователя, такие как код, пути к файлам или команды bash) |

185| `DISABLE_UPDATES` | Установите на `1`, чтобы заблокировать все обновления, включая ручную команду `claude update` и `claude install`. Более строгий, чем `DISABLE_AUTOUPDATER`. Используйте при распространении Claude Code через ваши собственные каналы и пользователи не должны самостоятельно обновляться |

186| `DISABLE_UPGRADE_COMMAND` | Установите на `1`, чтобы скрыть команду `/upgrade` |

187| `ENABLE_CLAUDEAI_MCP_SERVERS` | Установите на `false`, чтобы отключить [MCP servers claude.ai](/ru/mcp#use-mcp-servers-from-claude-ai) в Claude Code. Включено по умолчанию для вошедших в систему пользователей |

188| `ENABLE_PROMPT_CACHING_1H` | Установите на `1`, чтобы запросить TTL кэша приглашений в 1 час вместо стандартных 5 минут. Предназначено для пользователей ключа API, [Bedrock](/ru/amazon-bedrock), [Vertex](/ru/google-vertex-ai) и [Foundry](/ru/microsoft-foundry). Пользователи подписки получают TTL в 1 час автоматически. Записи кэша в 1 час выставляются по более высокой ставке |

189| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Устарело. Используйте `ENABLE_PROMPT_CACHING_1H` вместо этого |

190| `ENABLE_TOOL_SEARCH` | Управляет [поиском инструментов MCP](/ru/mcp#scale-with-mcp-tool-search). Не установлено: все инструменты MCP отложены по умолчанию, но загружены заранее на Vertex AI или когда `ANTHROPIC_BASE_URL` указывает на хост, не являющийся хостом первой стороны. Значения: `true` (всегда откладывать, включая прокси и Vertex AI), `auto` (режим порога: загружать заранее, если инструменты подходят в пределах 10% контекста), `auto:N` (пользовательский порог, например, `auto:5` для 5%), `false` (загружать все заранее) |

191| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Установите на любое непустое значение, чтобы запустить резервный вариант на [`--fallback-model`](/ru/cli-reference#cli-flags) после повторных ошибок перегрузки на любой основной модели. По умолчанию только модели Opus запускают резервный вариант |

192| `FORCE_AUTOUPDATE_PLUGINS` | Установите на `1`, чтобы принудительно обновлять plugins автоматически, даже если основной автоматический обновитель отключен через `DISABLE_AUTOUPDATER` |

193| `FORCE_PROMPT_CACHING_5M` | Установите на `1`, чтобы принудительно использовать TTL кэша приглашений в 5 минут, даже когда в противном случае применялся бы TTL в 1 час. Переопределяет `ENABLE_PROMPT_CACHING_1H` |

194| `HTTP_PROXY` | Укажите HTTP прокси-сервер для сетевых соединений |

195| `HTTPS_PROXY` | Укажите HTTPS прокси-сервер для сетевых соединений |

196| `IS_DEMO` | Установите на `1`, чтобы включить режим демонстрации: скрывает вашу электронную почту и имя организации из заголовка и вывода `/status`, и пропускает адаптацию. Полезно при потоковой передаче или записи сессии |

197| `MAX_MCP_OUTPUT_TOKENS` | Максимальное количество токенов, разрешённых в ответах инструментов MCP. Claude Code отображает предупреждение, когда вывод превышает 10 000 токенов. Инструменты, которые объявляют [`anthropic/maxResultSizeChars`](/ru/mcp#raise-the-limit-for-a-specific-tool), используют это ограничение символов для текстового содержимого вместо этого, но содержимое изображения из этих инструментов по-прежнему подлежит этой переменной (по умолчанию: 25000) |

198| `MAX_STRUCTURED_OUTPUT_RETRIES` | Количество попыток повтора, когда ответ модели не проходит проверку по [`--json-schema`](/ru/cli-reference#cli-flags) в неинтерактивном режиме (флаг `-p`). По умолчанию 5 |

199| `MAX_THINKING_TOKENS` | Переопределить бюджет токенов [расширенного мышления](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Потолок — это [максимальное количество выходных токенов](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) модели минус один. Установите на `0`, чтобы полностью отключить мышление. На моделях с [адаптивным рассуждением](/ru/model-config#adjust-effort-level) бюджет игнорируется, если адаптивное рассуждение не отключено через `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` |

200| `MCP_CLIENT_SECRET` | Секрет клиента OAuth для MCP servers, которые требуют [предварительно настроенные учётные данные](/ru/mcp#use-pre-configured-oauth-credentials). Избегает интерактивного приглашения при добавлении сервера с `--client-secret` |

201| `MCP_CONNECTION_NONBLOCKING` | Установите на `true` в неинтерактивном режиме (`-p`), чтобы полностью пропустить ожидание подключения MCP. Полезно для скриптовых конвейеров, где инструменты MCP не требуются. Без этой переменной первый запрос ждёт до 5 секунд для подключения серверов `--mcp-config` |

202| `MCP_OAUTH_CALLBACK_PORT` | Фиксированный порт для обратного вызова перенаправления OAuth, как альтернатива `--callback-port` при добавлении MCP server с [предварительно настроенными учётными данными](/ru/mcp#use-pre-configured-oauth-credentials) |

203| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Максимальное количество удалённых MCP servers (HTTP/SSE) для подключения параллельно при запуске (по умолчанию: 20) |

204| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Максимальное количество локальных MCP servers (stdio) для подключения параллельно при запуске (по умолчанию: 3) |

205| `MCP_TIMEOUT` | Тайм-аут в миллисекундах для запуска MCP server (по умолчанию: 30000, или 30 секунд) |

206| `MCP_TOOL_TIMEOUT` | Тайм-аут в миллисекундах для выполнения инструмента MCP (по умолчанию: 100000000, примерно 28 часов) |

207| `NO_PROXY` | Список доменов и IP-адресов, на которые запросы будут отправляться напрямую, обходя прокси |

208| `OTEL_LOG_RAW_API_BODIES` | Выдавать JSON запроса и ответа Anthropic Messages API как события логирования `api_request_body` / `api_response_body`. Установите на `1` для встроенных тел, усечённых на 60 КБ, или `file:<dir>` для записи неусечённых тел на диск и выдачи пути `body_ref` вместо этого. Отключено по умолчанию; тела включают всю историю разговора. См. [Мониторинг](/ru/monitoring-usage#api-request-body-event) |

209| `OTEL_LOG_TOOL_CONTENT` | Установите на `1`, чтобы включить содержимое входных и выходных данных инструмента в события span OpenTelemetry. Отключено по умолчанию для защиты конфиденциальных данных. См. [Мониторинг](/ru/monitoring-usage) |

210| `OTEL_LOG_TOOL_DETAILS` | Установите на `1`, чтобы включить аргументы входных данных инструмента, имена MCP servers, необработанные строки ошибок при сбоях инструментов и другие детали инструментов в трассировки и логи OpenTelemetry. Отключено по умолчанию для защиты PII. См. [Мониторинг](/ru/monitoring-usage) |

211| `OTEL_LOG_USER_PROMPTS` | Установите на `1`, чтобы включить текст приглашения пользователя в трассировки и логи OpenTelemetry. Отключено по умолчанию (приглашения скрыты). См. [Мониторинг](/ru/monitoring-usage) |

212| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Установите на `false`, чтобы исключить UUID учётной записи из атрибутов метрик (по умолчанию: включено). См. [Мониторинг](/ru/monitoring-usage) |

213| `OTEL_METRICS_INCLUDE_SESSION_ID` | Установите на `false`, чтобы исключить ID сессии из атрибутов метрик (по умолчанию: включено). См. [Мониторинг](/ru/monitoring-usage) |

214| `OTEL_METRICS_INCLUDE_VERSION` | Установите на `true`, чтобы включить версию Claude Code в атрибуты метрик (по умолчанию: исключено). См. [Мониторинг](/ru/monitoring-usage) |

215| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Переопределить бюджет символов для метаданных skills, показанных [инструменту Skill](/ru/skills#control-who-invokes-a-skill). Бюджет масштабируется динамически на 1% контекстного окна с резервным значением 8 000 символов. Устаревшее имя сохранено для обратной совместимости |

216| `TASK_MAX_OUTPUT_LENGTH` | Максимальное количество символов в выводе [subagent](/ru/sub-agents) перед усечением (по умолчанию: 32000, максимум: 160000). При усечении полный вывод сохраняется на диск и путь включается в усечённый ответ |

217| `USE_BUILTIN_RIPGREP` | Установите на `0`, чтобы использовать установленный в системе `rg` вместо `rg`, включённого в Claude Code |

218| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | Переопределить регион для Claude 3.5 Haiku при использовании Vertex AI |

219| `VERTEX_REGION_CLAUDE_3_5_SONNET` | Переопределить регион для Claude 3.5 Sonnet при использовании Vertex AI |

220| `VERTEX_REGION_CLAUDE_3_7_SONNET` | Переопределить регион для Claude 3.7 Sonnet при использовании Vertex AI |

221| `VERTEX_REGION_CLAUDE_4_0_OPUS` | Переопределить регион для Claude 4.0 Opus при использовании Vertex AI |

222| `VERTEX_REGION_CLAUDE_4_0_SONNET` | Переопределить регион для Claude 4.0 Sonnet при использовании Vertex AI |

223| `VERTEX_REGION_CLAUDE_4_1_OPUS` | Переопределить регион для Claude 4.1 Opus при использовании Vertex AI |

224| `VERTEX_REGION_CLAUDE_4_5_OPUS` | Переопределить регион для Claude Opus 4.5 при использовании Vertex AI |

225| `VERTEX_REGION_CLAUDE_4_5_SONNET` | Переопределить регион для Claude Sonnet 4.5 при использовании Vertex AI |

226| `VERTEX_REGION_CLAUDE_4_6_OPUS` | Переопределить регион для Claude Opus 4.6 при использовании Vertex AI |

227| `VERTEX_REGION_CLAUDE_4_6_SONNET` | Переопределить регион для Claude Sonnet 4.6 при использовании Vertex AI |

228| `VERTEX_REGION_CLAUDE_4_7_OPUS` | {/* min-version: 2.1.111 */}Переопределить регион для Claude Opus 4.7 при использовании Vertex AI |

229| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | Переопределить регион для Claude Haiku 4.5 при использовании Vertex AI |

230 

231Также поддерживаются стандартные переменные экспортёра OpenTelemetry (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES` и варианты для конкретных сигналов). См. [Мониторинг](/ru/monitoring-usage) для деталей конфигурации.

232 

233## См. также

234 

235* [Параметры](/ru/settings): настройте переменные окружения в `settings.json`, чтобы они применялись к каждой сессии

236* [Справочник CLI](/ru/cli-reference): флаги времени запуска

237* [Конфигурация сети](/ru/network-config): настройка прокси и TLS

238* [Мониторинг](/ru/monitoring-usage): конфигурация OpenTelemetry

errors.md +536 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Справочник по ошибкам

6 

7> Найдите сообщения об ошибках runtime Claude Code, узнайте, что они означают и как их исправить.

8 

9На этой странице перечислены ошибки runtime, которые отображает Claude Code, и способы восстановления после каждой из них, а также что проверить, когда ответы кажутся неправильными без ошибки. Для ошибок установки, таких как `command not found` или сбои TLS во время установки, см. [Troubleshooting installation and login](/ru/troubleshoot-install).

10 

11Эти ошибки и команды восстановления применяются во всех интерфейсах: CLI, [Desktop app](/ru/desktop) и [Claude Code on the web](/ru/claude-code-on-the-web), поскольку все три используют один и тот же Claude Code CLI. Для проблем, специфичных для конкретного интерфейса, см. раздел troubleshooting на странице этого интерфейса.

12 

13<Note>

14 Claude Code вызывает Claude API для получения ответов модели, поэтому большинство ошибок runtime соответствуют базовому коду ошибки API. На этой странице описано, что каждая ошибка означает в Claude Code и как восстановиться. Для определений кодов состояния HTTP в исходном виде см. [Claude Platform error reference](https://platform.claude.com/docs/en/api/errors).

15</Note>

16 

17## Найдите вашу ошибку

18 

19Сопоставьте сообщение, которое вы видите в терминале, с разделом ниже.

20 

21| Сообщение | Раздел |

22| :----------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- |

23| `API Error: 500 ... Internal server error` | [Server errors](#api-error-500-internal-server-error) |

24| `API Error: Repeated 529 Overloaded errors` | [Server errors](#api-error-repeated-529-overloaded-errors) |

25| `Request timed out` | [Server errors](#request-timed-out), или [Network](#unable-to-connect-to-api), если сообщение упоминает вашу интернет-соединение |

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

27| `You've hit your session limit` / `You've hit your weekly limit` | [Usage limits](#youve-hit-your-session-limit) |

28| `Server is temporarily limiting requests` | [Usage limits](#server-is-temporarily-limiting-requests) |

29| `Request rejected (429)` | [Usage limits](#request-rejected-429) |

30| `Credit balance is too low` | [Usage limits](#credit-balance-is-too-low) |

31| `Not logged in · Please run /login` | [Authentication](#not-logged-in) |

32| `Invalid API key` | [Authentication](#invalid-api-key) |

33| `This organization has been disabled` | [Authentication](#this-organization-has-been-disabled) |

34| `OAuth token revoked` / `OAuth token has expired` | [Authentication](#oauth-token-revoked-or-expired) |

35| `does not meet scope requirement user:profile` | [Authentication](#oauth-scope-requirement) |

36| `Unable to connect to API` | [Network](#unable-to-connect-to-api) |

37| `SSL certificate verification failed` | [Network](#ssl-certificate-errors) |

38| `Prompt is too long` | [Request errors](#prompt-is-too-long) |

39| `Error during compaction: Conversation too long` | [Request errors](#error-during-compaction-conversation-too-long) |

40| `Request too large` | [Request errors](#request-too-large) |

41| `Image was too large` | [Request errors](#image-was-too-large) |

42| `PDF too large` / `PDF is password protected` | [Request errors](#pdf-errors) |

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

44| `There's an issue with the selected model` | [Request errors](#theres-an-issue-with-the-selected-model) |

45| `Claude Opus is not available with the Claude Pro plan` | [Request errors](#claude-opus-is-not-available-with-the-claude-pro-plan) |

46| `thinking.type.enabled is not supported for this model` | [Request errors](#thinking-type-enabled-is-not-supported-for-this-model) |

47| `max_tokens must be greater than thinking.budget_tokens` | [Request errors](#thinking-budget-exceeds-output-limit) |

48| `API Error: 400 due to tool use concurrency issues` | [Request errors](#tool-use-or-thinking-block-mismatch) |

49| Responses seem lower quality than usual | [Response quality](#responses-seem-lower-quality-than-usual) |

50 

51## Автоматические повторные попытки

52 

53Claude Code повторяет попытки при временных сбоях перед отображением ошибки. Ошибки сервера, перегруженные ответы, тайм-ауты запросов, временные дроссели 429 и разорванные соединения повторяются до 10 раз с экспоненциальной задержкой. Во время повторных попыток спиннер показывает обратный отсчет `Retrying in Ns · attempt x/y`.

54 

55Когда вы видите одну из ошибок на этой странице, эти повторные попытки уже исчерпаны. Вы можете настроить поведение с помощью двух переменных окружения:

56 

57| Переменная | По умолчанию | Эффект |

58| :---------------------------------------- | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------- |

59| [`CLAUDE_CODE_MAX_RETRIES`](/ru/env-vars) | 10 | Количество попыток повтора. Снизьте его, чтобы быстрее выявлять сбои в скриптах; повысьте его, чтобы ждать более длительных инцидентов. |

60| [`API_TIMEOUT_MS`](/ru/env-vars) | 600000 | Тайм-аут для каждого запроса в миллисекундах. Повысьте его для медленных сетей или прокси. |

61 

62## Ошибки сервера

63 

64Эти ошибки исходят от инфраструктуры Anthropic, а не от вашей учетной записи или запроса.

65 

66### API Error: 500 Internal server error

67 

68Claude Code отображает исходное тело ответа API для любого статуса 5xx. Пример ниже показывает ответ 500:

69 

70```text theme={null}

71API Error: 500 {"type":"error","error":{"type":"api_error","message":"Internal server error"}} · check status.claude.com

72```

73 

74Это указывает на неожиданный сбой внутри API. Это не вызвано вашим запросом, настройками или учетной записью.

75 

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

77 

78* Проверьте [status.claude.com](https://status.claude.com) на наличие активных инцидентов

79* Подождите минуту, затем отправьте сообщение еще раз. Ваше исходное сообщение все еще находится в разговоре, поэтому для длинного запроса вы можете ввести `try again` вместо вставки всего текста.

80* Если ошибка сохраняется без опубликованного инцидента, запустите `/feedback`, чтобы Anthropic могла расследовать детали вашего запроса. См. [Report an error](#report-an-error), если `/feedback` недоступна у вашего провайдера.

81 

82### API Error: Repeated 529 Overloaded errors

83 

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

85 

86```text theme={null}

87API Error: Repeated 529 Overloaded errors · check status.claude.com

88```

89 

90529 — это не ваш лимит использования и не учитывается в вашей квоте.

91 

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

93 

94* Проверьте [status.claude.com](https://status.claude.com) на наличие уведомлений о емкости

95* Попробуйте еще раз через несколько минут

96* Запустите `/model` и переключитесь на другую модель, чтобы продолжить работу, так как емкость отслеживается для каждой модели. Claude Code предлагает вам это сделать, когда одна модель испытывает особенно высокую нагрузку, например `Opus is experiencing high load, please use /model to switch to Sonnet`.

97 

98### Request timed out

99 

100API не ответила до истечения срока соединения.

101 

102```text theme={null}

103Request timed out

104```

105 

106Это может произойти в периоды высокой нагрузки или когда генерируется очень большой ответ. Тайм-аут запроса по умолчанию составляет 10 минут.

107 

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

109 

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

111* Для долгосрочных задач разбейте работу на более мелкие запросы

112* Если причина в медленной сети или прокси, повысьте `API_TIMEOUT_MS`, как описано в [Automatic retries](#automatic-retries)

113* Если тайм-ауты частые и ваша сеть в остальном здорова, см. [Network and connection errors](#network-and-connection-errors) ниже

114 

115### Auto mode cannot determine the safety of an action

116 

117Модель, которую [auto mode](/ru/permission-modes#eliminate-prompts-with-auto-mode) использует для классификации действий, перегружена, поэтому auto mode заблокировала действие вместо его одобрения без проверки.

118 

119```text theme={null}

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

121```

122 

123Чтения, поиски и редактирования в вашем рабочем каталоге пропускают классификатор, поэтому они продолжают работать во время сбоя.

124 

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

126 

127* Повторите попытку через несколько секунд; Claude видит то же сообщение и обычно повторяет попытку самостоятельно

128* Если повторные попытки продолжают не удаваться, продолжайте с задачами только для чтения и вернитесь к заблокированному действию позже

129* Это временно и не связано с [auto mode eligibility](/ru/permission-modes#eliminate-prompts-with-auto-mode); вам не нужно менять настройки

130 

131## Лимиты использования

132 

133Эти ошибки означают, что квота, привязанная к вашей учетной записи или плану, была достигнута. Они отличаются от [server errors](#server-errors), которые влияют на всех.

134 

135### You've hit your session limit

136 

137Планы подписки включают скользящий лимит использования. Когда он заканчивается, вы видите одно из этих сообщений:

138 

139```text theme={null}

140You've hit your session limit · resets 3:45pm

141You've hit your weekly limit · resets Mon 12:00am

142You've hit your Opus limit · resets 3:45pm

143```

144 

145Claude Code блокирует дальнейшие запросы до времени сброса, показанного в сообщении.

146 

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

148 

149* Дождитесь времени сброса, показанного в ошибке

150* Запустите `/usage`, чтобы увидеть лимиты вашего плана и когда они сбрасываются

151* Запустите `/extra-usage`, чтобы купить дополнительное использование на Pro и Max, или запросить его у администратора на Team и Enterprise. См. [Extra usage for paid plans](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) для информации о том, как это выставляется счетом.

152* Чтобы обновить ваш план для более высоких базовых лимитов, см. [claude.com/pricing](https://claude.com/pricing)

153 

154Чтобы отслеживать оставшийся лимит перед его достижением, добавьте поля `rate_limits` в [custom status line](/ru/statusline#rate-limit-usage), или в Desktop app нажмите [usage ring](/ru/desktop#check-usage) рядом с выбором модели.

155 

156### Server is temporarily limiting requests

157 

158API применила краткосрочный дроссель, который не связан с квотой вашего плана.

159 

160```text theme={null}

161API Error: Server is temporarily limiting requests (not your usage limit)

162```

163 

164Это [retried automatically](#automatic-retries) перед отображением.

165 

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

167 

168* Подождите немного и попробуйте еще раз

169* Проверьте [status.claude.com](https://status.claude.com), если это сохраняется

170 

171### Request rejected (429)

172 

173Вы достигли лимита скорости, настроенного для вашего ключа API, проекта Amazon Bedrock или проекта Google Vertex AI.

174 

175```text theme={null}

176API Error: Request rejected (429) · this may be a temporary capacity issue

177```

178 

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

180 

181* Запустите `/status` и подтвердите, что активные учетные данные — это те, которые вы ожидаете. Случайный `ANTHROPIC_API_KEY` в вашей среде может маршрутизировать запросы через низкоуровневый ключ вместо вашей подписки.

182* Проверьте консоль вашего провайдера на предмет активных лимитов и запросите более высокий уровень, если необходимо

183* Для ключей Anthropic API см. [rate limits reference](https://platform.claude.com/docs/en/api/rate-limits) для информации о том, как работают уровни и как установить лимиты для каждого рабочего пространства

184* Снизьте параллелизм: понизьте [`CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY`](/ru/env-vars), избегайте запуска множества параллельных подагентов или переключитесь на меньшую модель с `/model` для высокообъемных скриптовых запусков

185 

186### Credit balance is too low

187 

188Ваша организация Console исчерпала предоплаченные кредиты.

189 

190```text theme={null}

191Credit balance is too low

192```

193 

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

195 

196* Добавьте кредиты на [platform.claude.com/settings/billing](https://platform.claude.com/settings/billing) и рассмотрите возможность включения автоматической перезагрузки там, чтобы баланс пополнялся перед тем, как он упадет до нуля

197* Переключитесь на аутентификацию подписки с помощью `/login`, если у вас есть план Pro, Max, Team или Enterprise

198* Установите лимиты расходов для каждого рабочего пространства в Console, чтобы предотвратить истощение баланса организации одним проектом. См. [Manage costs effectively](/ru/costs).

199 

200## Ошибки аутентификации

201 

202Эти ошибки означают, что Claude Code не может доказать вашу личность API. Запустите `/status` в любое время, чтобы увидеть, какие учетные данные в настоящее время активны.

203 

204### Not logged in

205 

206Для этого сеанса нет доступных действительных учетных данных.

207 

208```text theme={null}

209Not logged in · Please run /login

210```

211 

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

213 

214* Запустите `/login` для аутентификации с помощью вашей подписки Claude или учетной записи Console

215* Если вы ожидали, что переменная окружения будет аутентифицировать вас, подтвердите, что `ANTHROPIC_API_KEY` установлена и экспортирована в оболочке, где вы запустили `claude`

216* Для CI или автоматизации, где интерактивный вход невозможен, настройте скрипт [`apiKeyHelper`](/ru/settings#available-settings), который получает ключ при запуске

217* См. [Authentication precedence](/ru/authentication#authentication-precedence), чтобы понять, какие учетные данные выигрывают, когда присутствуют несколько

218 

219Если вас просят войти повторно, см. [Not logged in or token expired](/ru/troubleshoot-install#not-logged-in-or-token-expired) для исправлений системных часов и macOS Keychain.

220 

221### Invalid API key

222 

223Переменная окружения `ANTHROPIC_API_KEY` или скрипт `apiKeyHelper` вернули ключ, который API отклонила.

224 

225```text theme={null}

226Invalid API key · Fix external API key

227```

228 

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

230 

231* Проверьте опечатки и подтвердите, что ключ не был отозван в [Console](https://platform.claude.com/settings/keys)

232* Запустите `env | grep ANTHROPIC` в той же оболочке. Такие инструменты, как direnv, dotenv shell plugins и IDE terminals, могут загружать устаревший ключ из файла `.env` в вашем проекте без явной установки.

233* Отмените установку `ANTHROPIC_API_KEY` и запустите `/login`, чтобы вместо этого использовать аутентификацию подписки

234* Если ключ поступает из скрипта [`apiKeyHelper`](/ru/settings#available-settings), запустите скрипт напрямую, чтобы подтвердить, что он выводит действительный ключ на stdout

235* Запустите `/status`, чтобы подтвердить, какой источник учетных данных Claude Code фактически использует

236 

237### This organization has been disabled

238 

239Устаревший `ANTHROPIC_API_KEY` из отключенной организации Console переопределяет вашу подписку входа.

240 

241```text theme={null}

242Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your other credentials

243API Error: 400 ... This organization has been disabled.

244```

245 

246Переменные окружения имеют приоритет над `/login`, поэтому ключ, экспортированный в профиль вашей оболочки или загруженный из файла `.env`, используется даже если у вас есть работающая подписка Pro или Max. В неинтерактивном режиме (`-p`) ключ всегда используется, когда он присутствует.

247 

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

249 

250* Отмените установку `ANTHROPIC_API_KEY` в текущей оболочке и удалите его из профиля вашей оболочки, затем перезапустите `claude`

251* Запустите `/status` после этого, чтобы подтвердить, что активные учетные данные — это ваша подписка

252* Если переменная окружения не установлена и ошибка сохраняется, отключенная организация — это та, которая привязана к вашему `/login`. Свяжитесь с поддержкой или войдите с другой учетной записью.

253 

254### OAuth token revoked or expired

255 

256Ваш сохраненный вход больше не действителен. Отозванный токен означает, что вы вышли везде или администратор удалил доступ; истекший токен означает, что автоматическое обновление не удалось в середине сеанса.

257 

258```text theme={null}

259OAuth token revoked · Please run /login

260OAuth token has expired · Please run /login

261API Error: 401 ... authentication_error

262```

263 

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

265 

266* Запустите `/login`, чтобы войти снова

267* Если ошибка возвращается в том же сеансе после повторной аутентификации, сначала запустите `/logout`, чтобы полностью очистить сохраненный токен, затем `/login`

268* Для повторных запросов на вход между запусками см. проверки системных часов и macOS Keychain в [Troubleshooting](/ru/troubleshoot-install#not-logged-in-or-token-expired)

269* Для других сбоев, включая `403 Forbidden` и проблемы с браузером OAuth, см. [Login and authentication](/ru/troubleshoot-install#login-and-authentication)

270 

271### OAuth scope requirement

272 

273Сохраненный токен предшествует требованию области разрешений, которое требует более новая функция. Вы видите это чаще всего из `/usage` и индикатора использования строки состояния:

274 

275```text theme={null}

276OAuth token does not meet scope requirement: user:profile

277```

278 

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

280 

281* Запустите `/login`, чтобы создать новый токен с текущими областями. Вам не нужно сначала выходить.

282 

283## Ошибки сети и соединения

284 

285Эти ошибки означают, что Claude Code вообще не смогла достичь API. Они почти всегда исходят из вашей локальной сети, прокси или брандмауэра, а не из инфраструктуры Anthropic.

286 

287### Unable to connect to API

288 

289Соединение TCP с API не удалось или никогда не завершилось.

290 

291```text theme={null}

292Unable to connect to API. Check your internet connection

293Unable to connect to API (ECONNREFUSED)

294Unable to connect to API (ECONNRESET)

295Unable to connect to API (ETIMEDOUT)

296fetch failed

297Request timed out. Check your internet connection and proxy settings

298```

299 

300Распространенные причины включают отсутствие доступа в Интернет, VPN, который блокирует `api.anthropic.com`, или требуемый корпоративный прокси, который не настроен.

301 

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

303 

304* Подтвердите, что вы можете достичь хоста API из той же оболочки, запустив `curl -I https://api.anthropic.com`. На Windows PowerShell используйте `curl.exe -I https://api.anthropic.com`, чтобы встроенный псевдоним `Invoke-WebRequest` не использовался.

305* Если вы находитесь за корпоративным прокси, установите `HTTPS_PROXY` перед запуском Claude Code и см. [Network configuration](/ru/network-config)

306* Если вы маршрутизируете через шлюз LLM или ретранслятор, установите [`ANTHROPIC_BASE_URL`](/ru/env-vars) на его адрес. См. [LLM gateway configuration](/ru/llm-gateway) для настройки.

307* Убедитесь, что ваш брандмауэр разрешает хосты, перечисленные в [Network access requirements](/ru/network-config#network-access-requirements)

308* Прерывистые сбои [retried automatically](#automatic-retries); постоянные сбои указывают на проблему локальной сети

309 

310Если `curl` успешен, но Claude Code все еще не работает, причина обычно находится между Node.js и сетью, а не в самой сети:

311 

312* На Linux и WSL проверьте `/etc/resolv.conf` на недостижимый сервер имен. WSL в частности может наследовать неработающий распознаватель от хоста.

313* На macOS клиент VPN, который был отключен или удален, может оставить интерфейс туннеля или правило маршрутизации. Проверьте `ifconfig` на устаревшие интерфейсы `utun` и удалите расширение сети VPN в System Settings.

314* Docker Desktop и аналогичные среды выполнения контейнеров могут перехватывать исходящий трафик. Закройте их и повторите попытку, чтобы исключить это.

315 

316### SSL certificate errors

317 

318Прокси или устройство безопасности в вашей сети перехватывает трафик TLS с собственным сертификатом, и Node.js ему не доверяет.

319 

320```text theme={null}

321Unable to connect to API: SSL certificate verification failed. Check your proxy or corporate SSL certificates

322Unable to connect to API: Self-signed certificate detected

323```

324 

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

326 

327* Экспортируйте пакет CA вашей организации и укажите Node на него с помощью `NODE_EXTRA_CA_CERTS=/path/to/ca-bundle.pem`

328* См. [Network configuration](/ru/network-config#custom-ca-certificates) для полных инструкций по настройке

329* Не устанавливайте `NODE_TLS_REJECT_UNAUTHORIZED=0`, что полностью отключает проверку сертификата

330 

331## Ошибки запроса

332 

333Эти ошибки означают, что API получила ваш запрос, но отклонила его содержимое.

334 

335### Prompt is too long

336 

337Разговор плюс прикрепленные файлы превышают контекстное окно модели.

338 

339```text theme={null}

340Prompt is too long

341```

342 

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

344 

345* Запустите `/compact`, чтобы суммировать более ранние ходы и освободить место, или `/clear`, чтобы начать заново

346* Запустите `/context`, чтобы увидеть разбивку того, что потребляет окно: системный запрос, инструменты, файлы памяти и сообщения

347* Отключите MCP servers, которые вы не используете, с помощью `/mcp disable <name>`, чтобы удалить их определения инструментов из контекста

348* Обрежьте большие файлы памяти `CLAUDE.md`, или переместите инструкции в [path-scoped rules](/ru/memory#path-specific-rules), которые загружаются только при необходимости

349* Подагенты наследуют каждое определение инструмента MCP от родительского сеанса, что может заполнить их контекстное окно перед первым ходом. Отключите MCP servers, которые вы не используете, перед созданием подагентов.

350* Auto-compact включен по умолчанию и обычно предотвращает эту ошибку. Если вы установили [`DISABLE_AUTO_COMPACT`](/ru/env-vars), повторно включите его или запустите `/compact` вручную перед заполнением окна.

351 

352См. [Explore the context window](/ru/context-window) для интерактивного просмотра того, как заполняется контекст.

353 

354### Error during compaction: Conversation too long

355 

356`/compact` сама не удалась, потому что недостаточно свободного контекста для хранения создаваемого ею резюме.

357 

358```text theme={null}

359Error during compaction: Conversation too long. Press esc twice to go up a few messages and try again.

360```

361 

362Это может произойти, когда окно уже полно в момент срабатывания auto-compact, или когда вы запускаете `/compact` после просмотра `Prompt is too long`.

363 

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

365 

366* Нажмите Esc дважды, чтобы открыть список сообщений и вернуться на несколько ходов назад. Это удаляет самые последние сообщения из контекста. Затем запустите `/compact` снова.

367* Если отступление не освобождает достаточно места, запустите `/clear`, чтобы начать свежий сеанс. Ваш предыдущий разговор сохраняется и может быть переоткрыт с помощью `/resume`.

368 

369### Request too large

370 

371Исходное тело запроса превысило лимит байтов API перед токенизацией, обычно из-за большого вставленного файла или вложения.

372 

373```text theme={null}

374Request too large (max 30 MB). Double press esc to go back and remove or shrink the attached content.

375```

376 

377Это лимит размера на HTTP запрос, отдельный от [context window limit](#prompt-is-too-long).

378 

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

380 

381* Нажмите Esc дважды и вернитесь назад перед ходом, который добавил переразмеренное содержимое

382* Ссылайтесь на большие файлы по пути вместо вставки их содержимого, чтобы Claude могла читать их по частям

383* Для изображений см. [Image was too large](#image-was-too-large) ниже

384 

385### Image was too large

386 

387Вставленное или прикрепленное изображение превышает лимиты размера или размеров API.

388 

389```text theme={null}

390Image was too large. Double press esc to go back and try again with a smaller image.

391API Error: 400 ... image dimensions exceed max allowed size

392```

393 

394Изображение остается в истории разговора после ошибки, поэтому каждое последующее сообщение не удается с той же ошибкой, пока вы его не удалите.

395 

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

397 

398* Нажмите Esc дважды и вернитесь назад перед ходом, где было добавлено изображение

399* Измените размер изображения перед вставкой. API принимает изображения до 8000 пикселей на самой длинной стороне для одного изображения или 2000 пикселей, когда в контексте много изображений.

400* Сделайте более плотный скриншот соответствующего региона вместо полного экрана

401 

402### PDF errors

403 

404PDF, который вы прикрепили, не удалось обработать.

405 

406```text theme={null}

407PDF too large (max 100 pages, 32 MB). Try splitting it or extracting text first.

408PDF is password protected. Try removing protection or extracting text first.

409The PDF file was not valid. Try converting to a different format first.

410```

411 

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

413 

414* Для больших PDF-файлов попросите Claude прочитать диапазон страниц с помощью инструмента Read вместо прикрепления всего файла, или извлеките текст с помощью инструмента, такого как `pdftotext`, и ссылайтесь на выходной файл по пути

415* Для защищенных или недействительных PDF-файлов удалите пароль или повторно экспортируйте файл из исходного приложения, затем попробуйте еще раз

416 

417### Extra inputs are not permitted

418 

419Прокси или шлюз LLM между Claude Code и API удалили заголовок запроса `anthropic-beta`, поэтому API отклонила поля, которые от него зависят.

420 

421```text theme={null}

422API Error: 400 ... Extra inputs are not permitted ... context_management

423API Error: 400 ... Extra inputs are not permitted ... tools.0.custom.input_examples

424API Error: 400 ... Unexpected value(s) for the `anthropic-beta` header

425```

426 

427Claude Code отправляет поля, доступные только в бета-версии, такие как `context_management`, `effort` и инструмент `input_examples`, вместе с заголовком `anthropic-beta`, который их включает. Когда шлюз пересылает тело, но удаляет заголовок, API видит поля, которые она не распознает.

428 

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

430 

431* Настройте ваш шлюз для пересылки заголовка `anthropic-beta`. См. [LLM gateway configuration](/ru/llm-gateway).

432* В качестве резервного варианта установите [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/ru/env-vars) перед запуском. Это отключает функции, требующие заголовка бета-версии, чтобы запросы успешно проходили через шлюз, который не может его пересылать.

433 

434### There's an issue with the selected model

435 

436Настроенное имя модели не было распознано или ваша учетная запись не имеет доступа к ней.

437 

438```text theme={null}

439There's an issue with the selected model (claude-...). It may not exist or you may not have access to it. Run /model to select a different one.

440```

441 

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

443 

444* Запустите `/model`, чтобы выбрать из моделей, доступных вашей учетной записи

445* Используйте псевдоним, такой как `sonnet` или `opus`, вместо полного версионного ID. Псевдонимы отслеживают последний выпуск, поэтому они не устаревают. См. [Model configuration](/ru/model-config).

446* Если неправильная модель продолжает возвращаться, где-то установлен устаревший ID. Проверьте в [порядке приоритета](/ru/model-config#setting-your-model): флаг `--model`, переменная окружения `ANTHROPIC_MODEL`, затем поле `model` в `.claude/settings.local.json`, файл `.claude/settings.json` вашего проекта и `~/.claude/settings.json`. Удалите устаревшее значение, и Claude Code вернется к стандартной модели вашей учетной записи.

447* Для развертываний Vertex AI см. [Vertex AI troubleshooting](/ru/google-vertex-ai#troubleshooting).

448 

449### Claude Opus is not available with the Claude Pro plan

450 

451Ваш активный план подписки не включает выбранную модель.

452 

453```text theme={null}

454Claude Opus is not available with the Claude Pro plan · Select a different model in /model

455```

456 

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

458 

459* Запустите `/model` и выберите модель, которую включает ваш план

460* Если вы недавно обновили свой план и все еще видите это, запустите `/logout`, затем `/login`. Сохраненный токен отражает ваш план на момент входа, поэтому обновление в Интернете не вступает в силу в существующем сеансе, пока вы не повторно аутентифицируетесь.

461* См. [claude.com/pricing](https://claude.com/pricing) для информации о том, какие модели включает каждый план

462 

463### thinking.type.enabled is not supported for this model

464 

465Ваша версия Claude Code старше минимальной для Opus 4.7. CLI отправила конфигурацию thinking, которую модель больше не принимает.

466 

467```text theme={null}

468API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.

469```

470 

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

472 

473* Запустите `claude update`, чтобы обновиться до v2.1.111 или позже, затем перезапустите Claude Code

474* Если вы не можете обновиться, запустите `/model` и выберите Opus 4.6 или Sonnet вместо этого

475* Если вы столкнулись с этим в Agent SDK, см. [SDK troubleshooting](/ru/agent-sdk/quickstart#troubleshooting)

476 

477### Thinking budget exceeds output limit

478 

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

480 

481```text theme={null}

482API Error: 400 ... max_tokens must be greater than thinking.budget_tokens

483```

484 

485Claude Code автоматически регулирует эти значения на Anthropic API. Вы обычно видите эту ошибку на Amazon Bedrock или Google Vertex AI, когда [`MAX_THINKING_TOKENS`](/ru/env-vars) установлена выше лимита вывода провайдера, или когда Plan Mode повышает бюджет thinking.

486 

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

488 

489* Понизьте `MAX_THINKING_TOKENS`, или повысьте [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](/ru/env-vars) выше бюджета thinking

490* См. [Extended thinking](/ru/common-workflows#use-extended-thinking-thinking-mode) для информации о том, как бюджет взаимодействует с длиной вывода

491 

492### Tool use or thinking block mismatch

493 

494История разговора достигла API в несогласованном состоянии, обычно после того, как вызов инструмента был прерван или ход был отредактирован в середине потока.

495 

496```text theme={null}

497API Error: 400 due to tool use concurrency issues. Run /rewind to recover the conversation.

498API Error: 400 ... unexpected `tool_use_id` found in `tool_result` blocks

499API Error: 400 ... thinking blocks ... cannot be modified

500```

501 

502Все три варианта означают одно и то же: последовательность блоков `tool_use`, `tool_result` и `thinking` в истории больше не соответствует тому, что ожидает API.

503 

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

505 

506* Запустите `/rewind`, или нажмите Esc дважды, чтобы вернуться к контрольной точке перед поврежденным ходом и продолжить оттуда. См. [Checkpointing](/ru/checkpointing) для информации о том, как создаются и восстанавливаются контрольные точки.

507 

508## Responses seem lower quality than usual

509 

510Если ответы Claude кажутся менее способными, чем вы ожидаете, но ошибка не отображается, причина обычно в состоянии разговора, а не в самой модели. Claude Code не молча меняет версии моделей. Она может переключиться на резервную модель в конкретных случаях, таких как достижение квоты Opus или отсутствие вашей модели в регионе Bedrock или Vertex AI; проверка Model selection ниже ловит оба, и [Model configuration](/ru/model-config) объясняет, когда применяется резервная версия.

511 

512Сначала проверьте эти пункты:

513 

514* **Model selection**: запустите `/model`, чтобы подтвердить, что вы находитесь на модели, которую ожидаете. Предыдущий выбор `/model` или переменная окружения `ANTHROPIC_MODEL` могут поместить вас на меньшую модель, чем вы предполагали.

515* **Effort level**: запустите `/effort`, чтобы проверить текущий уровень рассуждений и повысить его для сложной отладки или работы по дизайну. Значения по умолчанию варьируются в зависимости от модели, поэтому проверьте перед предположением, что вы ниже максимума. См. [Adjust effort level](/ru/model-config#adjust-effort-level) для значений по умолчанию для каждой модели и ярлыка `ultrathink`.

516* **Context pressure**: запустите `/context`, чтобы увидеть, насколько полно окно. Если оно близко к емкости, запустите `/compact` в естественной точке разрыва или `/clear`, чтобы начать заново. См. [Explore the context window](/ru/context-window) для информации о том, как auto-compact влияет на более ранние ходы.

517* **Stale instructions**: большие или устаревшие файлы `CLAUDE.md` и определения инструментов MCP потребляют контекст и могут направлять ответы. `/doctor` отмечает переразмеренные файлы памяти и определения подагентов; `/context` показывает использование токенов инструментов MCP.

518 

519Когда ответ идет неправильно, откат обычно работает лучше, чем ответ с исправлениями. Нажмите Esc дважды или запустите `/rewind`, чтобы вернуться перед плохим ходом, затем переформулируйте запрос с большей конкретикой. Исправление в потоке сохраняет неправильную попытку в контексте, что может привязать более поздние ответы к ней. См. [Checkpointing](/ru/checkpointing).

520 

521Если качество все еще кажется неправильным после проверки вышеуказанного, запустите `/feedback` и опишите, что вы ожидали в сравнении с тем, что вы получили. Обратная связь, отправленная таким образом, включает стенограмму разговора, что является самым быстрым способом для Anthropic диагностировать реальную регрессию. См. [Report an error](#report-an-error), если `/feedback` недоступна у вашего провайдера.

522 

523## Сообщить об ошибке

524 

525На этой странице рассматриваются ошибки из Claude API. Для ошибок из других компонентов Claude Code см. соответствующее руководство:

526 

527* MCP server не удалось подключиться или аутентифицироваться: [MCP](/ru/mcp)

528* Скрипт hook не удалось или заблокировал инструмент: [Debug hooks](/ru/hooks#debug-hooks)

529* Permission denied или ошибки файловой системы во время установки: [Troubleshoot installation and login](/ru/troubleshoot-install)

530 

531Если ошибка не указана здесь или предложенное исправление не помогает:

532 

533* Запустите `/feedback` внутри Claude Code, чтобы отправить стенограмму и описание в Anthropic. Команда также предлагает открыть предварительно заполненную проблему GitHub. Обратная связь недоступна на развертываниях Bedrock, Vertex AI и Foundry.

534* Запустите `/doctor`, чтобы проверить проблемы локальной конфигурации

535* Проверьте [status.claude.com](https://status.claude.com) на наличие активных инцидентов

536* Поищите [existing issues](https://github.com/anthropics/claude-code/issues) на GitHub

fast-mode.md +151 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Ускорьте ответы с помощью быстрого режима

6 

7> Получайте более быстрые ответы Opus 4.6 в Claude Code, включив быстрый режим.

8 

9<Note>

10 Быстрый режим находится в [исследовательском превью](#research-preview). Функция, цены и доступность могут измениться на основе отзывов.

11</Note>

12 

13Быстрый режим — это высокоскоростная конфигурация для Claude Opus 4.6, которая делает модель в 2,5 раза быстрее при более высокой стоимости за токен. Включайте его с помощью `/fast`, когда вам нужна скорость для интерактивной работы, такой как быстрая итерация или живая отладка, и отключайте, когда стоимость важнее, чем задержка.

14 

15Быстрый режим — это не другая модель. Он использует тот же Opus 4.6 с другой конфигурацией API, которая приоритизирует скорость над экономичностью. Вы получаете идентичное качество и возможности, просто более быстрые ответы.

16 

17<Note>

18 Быстрый режим требует Claude Code v2.1.36 или позже. Проверьте вашу версию с помощью `claude --version`.

19</Note>

20 

21Что нужно знать:

22 

23* Используйте `/fast` для включения быстрого режима в Claude Code CLI. Также доступно через `/fast` в расширении Claude Code VS Code.

24* Цены на быстрый режим для Opus 4.6 начинаются с \$30/150 MTok. Быстрый режим доступен со скидкой 50% для всех планов до 23:59 PT 16 февраля.

25* Доступно всем пользователям Claude Code на планах подписки (Pro/Max/Team/Enterprise) и Claude Console.

26* Для пользователей Claude Code на планах подписки (Pro/Max/Team/Enterprise) быстрый режим доступен только через дополнительное использование и не включен в лимиты использования подписки.

27 

28На этой странице рассматривается, как [включить быстрый режим](#toggle-fast-mode), его [компромисс стоимости](#understand-the-cost-tradeoff), [когда его использовать](#decide-when-to-use-fast-mode), [требования](#requirements), [обязательное согласие за сеанс](#require-per-session-opt-in) и [поведение лимитов скорости](#handle-rate-limits).

29 

30## Включение быстрого режима

31 

32Включайте быстрый режим одним из следующих способов:

33 

34* Введите `/fast` и нажмите Tab для включения или отключения

35* Установите `"fastMode": true` в вашем [файле пользовательских настроек](/ru/settings)

36 

37По умолчанию быстрый режим сохраняется между сеансами. Администраторы могут настроить быстрый режим на сброс каждого сеанса. Подробности см. в разделе [обязательное согласие за сеанс](#require-per-session-opt-in).

38 

39Для лучшей экономичности включайте быстрый режим в начале сеанса, а не переключайтесь в середине разговора. Подробности см. в разделе [понимание компромисса стоимости](#understand-the-cost-tradeoff).

40 

41Когда вы включаете быстрый режим:

42 

43* Если вы используете другую модель, Claude Code автоматически переключается на Opus 4.6

44* Вы увидите сообщение подтверждения: "Fast mode ON"

45* Рядом с приглашением появляется небольшой значок `↯` во время активного быстрого режима

46* Запустите `/fast` снова в любое время, чтобы проверить, включен или отключен быстрый режим

47 

48Когда вы отключаете быстрый режим с помощью `/fast` снова, вы остаетесь на Opus 4.6. Модель не возвращается к вашей предыдущей модели. Чтобы переключиться на другую модель, используйте `/model`.

49 

50## Понимание компромисса стоимости

51 

52Быстрый режим имеет более высокую цену за токен, чем стандартный Opus 4.6:

53 

54| Режим | Входные данные (MTok) | Выходные данные (MTok) |

55| ---------------------------------- | --------------------- | ---------------------- |

56| Быстрый режим на Opus 4.6 (\<200K) | \$30 | \$150 |

57| Быстрый режим на Opus 4.6 (>200K) | \$60 | \$225 |

58 

59Быстрый режим совместим с расширенным контекстным окном из 1M токенов.

60 

61Когда вы переключаетесь в быстрый режим в середине разговора, вы платите полную цену быстрого режима без кэша за входные токены для всего контекста разговора. Это стоит дороже, чем если бы вы включили быстрый режим с самого начала.

62 

63## Решение о том, когда использовать быстрый режим

64 

65Быстрый режим лучше всего подходит для интерактивной работы, где задержка ответа важнее стоимости:

66 

67* Быстрая итерация изменений кода

68* Сеансы живой отладки

69* Работа, чувствительная ко времени, с жесткими сроками

70 

71Стандартный режим лучше для:

72 

73* Долгих автономных задач, где скорость менее важна

74* Пакетной обработки или конвейеров CI/CD

75* Рабочих нагрузок, чувствительных к стоимости

76 

77### Быстрый режим в сравнении с уровнем усилий

78 

79Быстрый режим и уровень усилий оба влияют на скорость ответа, но по-разному:

80 

81| Параметр | Эффект |

82| ------------------------------- | ---------------------------------------------------------------------------------------------------------- |

83| **Быстрый режим** | Одинаковое качество модели, меньшая задержка, более высокая стоимость |

84| **Более низкий уровень усилий** | Меньше времени на размышление, более быстрые ответы, потенциально более низкое качество на сложных задачах |

85 

86Вы можете комбинировать оба: используйте быстрый режим с более низким [уровнем усилий](/ru/model-config#adjust-effort-level) для максимальной скорости на простых задачах.

87 

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

89 

90Быстрый режим требует всех следующих условий:

91 

92* **Недоступно у сторонних облачных провайдеров**: быстрый режим недоступен на Amazon Bedrock, Google Vertex AI или Microsoft Azure Foundry. Быстрый режим доступен через API Anthropic Console и для планов подписки Claude с использованием дополнительного использования.

93* **Включено дополнительное использование**: ваша учетная запись должна иметь включенное дополнительное использование, которое позволяет выставлять счета сверх включенного использования вашего плана. Для индивидуальных учетных записей включите это в [параметрах выставления счетов Console](https://platform.claude.com/settings/organization/billing). Для Teams и Enterprise администратор должен включить дополнительное использование для организации.

94 

95<Note>

96 Использование быстрого режима выставляется непосредственно на дополнительное использование, даже если у вас осталось использование в вашем плане. Это означает, что токены быстрого режима не учитываются в отношении включенного использования вашего плана и взимаются по цене быстрого режима с первого токена.

97</Note>

98 

99* **Включение администратором для Teams и Enterprise**: быстрый режим отключен по умолчанию для организаций Teams и Enterprise. Администратор должен явно [включить быстрый режим](#enable-fast-mode-for-your-organization) перед тем, как пользователи смогут получить к нему доступ.

100 

101<Note>

102 Если ваш администратор не включил быстрый режим для вашей организации, команда `/fast` покажет "Fast mode has been disabled by your organization."

103</Note>

104 

105### Включение быстрого режима для вашей организации

106 

107Администраторы могут включить быстрый режим в:

108 

109* **Console** (клиенты API): [Параметры Claude Code](https://platform.claude.com/claude-code/preferences)

110* **Claude AI** (Teams и Enterprise): [Admin Settings > Claude Code](https://claude.ai/admin-settings/claude-code)

111 

112Другой вариант полного отключения быстрого режима — установить `CLAUDE_CODE_DISABLE_FAST_MODE=1`. См. [Переменные окружения](/ru/env-vars).

113 

114### Обязательное согласие за сеанс

115 

116По умолчанию быстрый режим сохраняется между сеансами: если пользователь включает быстрый режим, он остается включенным в будущих сеансах. Администраторы на планах [Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_teams#team-&-enterprise) или [Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_enterprise) могут предотвратить это, установив `fastModePerSessionOptIn` на `true` в [управляемых параметрах](/ru/settings#settings-files) или [параметрах, управляемых сервером](/ru/server-managed-settings). Это приводит к тому, что каждый сеанс начинается с отключенным быстрым режимом, требуя от пользователей явного включения его с помощью `/fast`.

117 

118```json theme={null}

119{

120 "fastModePerSessionOptIn": true

121}

122```

123 

124Это полезно для контроля затрат в организациях, где пользователи запускают несколько одновременных сеансов. Пользователи все еще могут включить быстрый режим с помощью `/fast`, когда им нужна скорость, но он сбрасывается в начале каждого нового сеанса. Предпочтение пользователя для быстрого режима все еще сохраняется, поэтому удаление этого параметра восстанавливает поведение по умолчанию с сохранением.

125 

126## Обработка лимитов скорости

127 

128Быстрый режим имеет отдельные лимиты скорости от стандартного Opus 4.6. Когда вы достигаете лимита скорости быстрого режима или исчерпываете кредиты дополнительного использования:

129 

1301. Быстрый режим автоматически переключается на стандартный Opus 4.6

1312. Значок `↯` становится серым, указывая на охлаждение

1323. Вы продолжаете работать с стандартной скоростью и ценами

1334. Когда охлаждение истекает, быстрый режим автоматически повторно включается

134 

135Чтобы вместо этого отключить быстрый режим вручную, запустите `/fast` снова.

136 

137## Исследовательское превью

138 

139Быстрый режим — это функция исследовательского превью. Это означает:

140 

141* Функция может измениться на основе отзывов

142* Доступность и цены могут измениться

143* Базовая конфигурация API может развиваться

144 

145Сообщайте о проблемах или отзывах через ваши обычные каналы поддержки Anthropic.

146 

147## См. также

148 

149* [Конфигурация модели](/ru/model-config): переключение моделей и регулировка уровней усилий

150* [Эффективное управление затратами](/ru/costs): отслеживание использования токенов и снижение затрат

151* [Конфигурация строки состояния](/ru/statusline): отображение информации о модели и контексте

features-overview.md +294 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Расширение Claude Code

6 

7> Узнайте, когда использовать CLAUDE.md, Skills, subagents, hooks, MCP и plugins.

8 

9Claude Code объединяет модель, которая рассуждает о вашем коде, с [встроенными инструментами](/ru/how-claude-code-works#tools) для операций с файлами, поиска, выполнения и веб-доступа. Встроенные инструменты охватывают большинство задач кодирования. Это руководство охватывает уровень расширения: функции, которые вы добавляете для настройки того, что знает Claude, подключения его к внешним сервисам и автоматизации рабочих процессов.

10 

11<Note>

12 Информацию о том, как работает основной цикл агента, см. в разделе [How Claude Code works](/ru/how-claude-code-works).

13</Note>

14 

15**Новичок в Claude Code?** Начните с [CLAUDE.md](/ru/memory) для соглашений проекта. Добавляйте другие расширения по мере необходимости.

16 

17## Обзор

18 

19Расширения подключаются к различным частям цикла агента:

20 

21* **[CLAUDE.md](/ru/memory)** добавляет постоянный контекст, который Claude видит в каждой сессии

22* **[Skills](/ru/skills)** добавляют переиспользуемые знания и вызываемые рабочие процессы

23* **[MCP](/ru/mcp)** подключает Claude к внешним сервисам и инструментам

24* **[Subagents](/ru/sub-agents)** запускают свои собственные циклы в изолированном контексте, возвращая резюме

25* **[Agent teams](/ru/agent-teams)** координируют несколько независимых сессий с общими задачами и обменом сообщениями между участниками

26* **[Hooks](/ru/hooks)** работают полностью вне цикла как детерминированные скрипты

27* **[Plugins](/ru/plugins)** и **[marketplaces](/ru/plugin-marketplaces)** упаковывают и распространяют эти функции

28 

29[Skills](/ru/skills) — это наиболее гибкое расширение. Skill — это файл markdown, содержащий знания, рабочие процессы или инструкции. Вы можете вызывать skills с помощью команды типа `/deploy`, или Claude может загружать их автоматически, когда они релевантны. Skills могут работать в вашем текущем разговоре или в изолированном контексте через subagents.

30 

31## Сопоставьте функции с вашей целью

32 

33Функции варьируются от всегда включённого контекста, который Claude видит в каждой сессии, до возможностей по требованию, которые вы или Claude можете вызвать, до фоновой автоматизации, которая работает при определённых событиях. Таблица ниже показывает, что доступно и когда каждое имеет смысл.

34 

35| Функция | Что она делает | Когда её использовать | Пример |

36| ---------------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |

37| **CLAUDE.md** | Постоянный контекст, загружаемый в каждом разговоре | Соглашения проекта, правила "всегда делай X" | "Используйте pnpm, а не npm. Запускайте тесты перед коммитом." |

38| **Skill** | Инструкции, знания и рабочие процессы, которые может использовать Claude | Переиспользуемый контент, справочные документы, повторяющиеся задачи | `/deploy` запускает ваш контрольный список развёртывания; skill с документацией API с шаблонами конечных точек |

39| **Subagent** | Изолированный контекст выполнения, который возвращает обобщённые результаты | Изоляция контекста, параллельные задачи, специализированные работники | Задача исследования, которая читает много файлов, но возвращает только ключевые выводы |

40| **[Agent teams](/ru/agent-teams)** | Координируют несколько независимых сессий Claude Code | Параллельное исследование, разработка новых функций, отладка с конкурирующими гипотезами | Запустите рецензентов для одновременной проверки безопасности, производительности и тестов |

41| **MCP** | Подключение к внешним сервисам | Внешние данные или действия | Запрос к вашей базе данных, отправка в Slack, управление браузером |

42| **Hook** | Детерминированный скрипт, который работает при событиях | Предсказуемая автоматизация, без участия LLM | Запуск ESLint после каждого редактирования файла |

43 

44**[Plugins](/ru/plugins)** — это уровень упаковки. Plugin объединяет skills, hooks, subagents и MCP servers в единый устанавливаемый модуль. Plugin skills имеют пространство имён (например, `/my-plugin:review`), поэтому несколько plugins могут сосуществовать. Используйте plugins, когда вы хотите переиспользовать одну и ту же настройку в нескольких репозиториях или распространять другим через **[marketplace](/ru/plugin-marketplaces)**.

45 

46### Сравните похожие функции

47 

48Некоторые функции могут казаться похожими. Вот как их различить.

49 

50<Tabs>

51 <Tab title="Skill vs Subagent">

52 Skills и subagents решают разные проблемы:

53 

54 * **Skills** — это переиспользуемый контент, который вы можете загрузить в любой контекст

55 * **Subagents** — это изолированные работники, которые работают отдельно от вашего основного разговора

56 

57 | Аспект | Skill | Subagent |

58 | ------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------------- |

59 | **Что это** | Переиспользуемые инструкции, знания или рабочие процессы | Изолированный работник со своим собственным контекстом |

60 | **Ключевое преимущество** | Поделитесь контентом между контекстами | Изоляция контекста. Работа происходит отдельно, возвращается только резюме |

61 | **Лучше всего для** | Справочный материал, вызываемые рабочие процессы | Задачи, которые читают много файлов, параллельная работа, специализированные работники |

62 

63 **Skills могут быть справочными или действенными.** Справочные skills предоставляют знания, которые Claude использует на протяжении вашей сессии (например, ваше руководство по стилю API). Action skills говорят Claude сделать что-то конкретное (например, `/deploy`, который запускает ваш рабочий процесс развёртывания).

64 

65 **Используйте subagent**, когда вам нужна изоляция контекста или когда ваше окно контекста переполняется. Subagent может читать десятки файлов или выполнять обширные поиски, но ваш основной разговор получает только резюме. Поскольку работа subagent не потребляет ваш основной контекст, это также полезно, когда вам не нужно, чтобы промежуточная работа оставалась видимой. Пользовательские subagents могут иметь свои собственные инструкции и могут предварительно загружать skills.

66 

67 **Они могут объединяться.** Subagent может предварительно загружать определённые skills (поле `skills:`). Skill может работать в изолированном контексте, используя `context: fork`. Подробнее см. в разделе [Skills](/ru/skills).

68 </Tab>

69 

70 <Tab title="CLAUDE.md vs Skill">

71 Оба хранят инструкции, но они загружаются по-разному и служат разным целям.

72 

73 | Аспект | CLAUDE.md | Skill |

74 | ------------------------------------ | ---------------------------- | ------------------------------------------------ |

75 | **Загружается** | Каждая сессия, автоматически | По требованию |

76 | **Может включать файлы** | Да, с импортами `@path` | Да, с импортами `@path` |

77 | **Может запускать рабочие процессы** | Нет | Да, с `/<name>` |

78 | **Лучше всего для** | Правила "всегда делай X" | Справочный материал, вызываемые рабочие процессы |

79 

80 **Поместите в CLAUDE.md**, если Claude должен всегда это знать: соглашения кодирования, команды сборки, структура проекта, правила "никогда не делай X".

81 

82 **Поместите в skill**, если это справочный материал, который Claude иногда нужен (документация API, руководства по стилю) или рабочий процесс, который вы запускаете с помощью `/<name>` (развёртывание, рецензирование, выпуск).

83 

84 **Практическое правило:** Держите CLAUDE.md под 200 строк. Если он растёт, переместите справочный контент в skills или разделите на файлы [`.claude/rules/`](/ru/memory#organize-rules-with-clauderules).

85 </Tab>

86 

87 <Tab title="CLAUDE.md vs Rules vs Skills">

88 Все три хранят инструкции, но они загружаются по-разному:

89 

90 | Аспект | CLAUDE.md | `.claude/rules/` | Skill |

91 | ------------------- | ------------------------------------ | ---------------------------------------------------------- | --------------------------------------------------- |

92 | **Загружается** | Каждая сессия | Каждая сессия, или когда открываются соответствующие файлы | По требованию, при вызове или релевантности |

93 | **Область** | Весь проект | Может быть ограничена путями файлов | Специфична для задачи |

94 | **Лучше всего для** | Основные соглашения и команды сборки | Рекомендации, специфичные для языка или каталога | Справочный материал, повторяющиеся рабочие процессы |

95 

96 **Используйте CLAUDE.md** для инструкций, которые нужны каждой сессии: команды сборки, соглашения тестирования, архитектура проекта.

97 

98 **Используйте rules**, чтобы сосредоточить CLAUDE.md. Rules с [frontmatter `paths`](/ru/memory#path-specific-rules) загружаются только, когда Claude работает с соответствующими файлами, экономя контекст.

99 

100 **Используйте skills** для контента, который Claude нужен только иногда, например документация API или контрольный список развёртывания, который вы запускаете с помощью `/<name>`.

101 </Tab>

102 

103 <Tab title="Subagent vs Agent team">

104 Оба параллелизируют работу, но они архитектурно различны:

105 

106 * **Subagents** работают внутри вашей сессии и сообщают результаты обратно в ваш основной контекст

107 * **Agent teams** — это независимые сессии Claude Code, которые общаются друг с другом

108 

109 | Аспект | Subagent | Agent team |

110 | --------------------- | --------------------------------------------------------------- | ---------------------------------------------------------------- |

111 | **Контекст** | Собственное окно контекста; результаты возвращаются вызывающему | Собственное окно контекста; полностью независимый |

112 | **Коммуникация** | Сообщает результаты только основному агенту | Товарищи по команде обмениваются сообщениями напрямую |

113 | **Координация** | Основной агент управляет всей работой | Общий список задач с самокоординацией |

114 | **Лучше всего для** | Сосредоточенные задачи, где имеет значение только результат | Сложная работа, требующая обсуждения и сотрудничества |

115 | **Стоимость токенов** | Ниже: результаты обобщены обратно в основной контекст | Выше: каждый товарищ по команде — это отдельный экземпляр Claude |

116 

117 **Используйте subagent**, когда вам нужен быстрый, сосредоточенный работник: исследуйте вопрос, проверьте утверждение, рецензируйте файл. Subagent выполняет работу и возвращает резюме. Ваш основной разговор остаётся чистым.

118 

119 **Используйте agent team**, когда товарищи по команде должны делиться выводами, оспаривать друг друга и координироваться независимо. Agent teams лучше всего подходят для исследования с конкурирующими гипотезами, параллельного рецензирования кода и разработки новых функций, где каждый товарищ по команде владеет отдельной частью.

120 

121 **Точка перехода:** Если вы запускаете параллельные subagents, но достигаете пределов контекста, или если ваши subagents должны общаться друг с другом, agent teams — это естественный следующий шаг.

122 

123 <Note>

124 Agent teams экспериментальны и отключены по умолчанию. Подробнее см. в разделе [agent teams](/ru/agent-teams) для настройки и текущих ограничений.

125 </Note>

126 </Tab>

127 

128 <Tab title="MCP vs Skill">

129 MCP подключает Claude к внешним сервисам. Skills расширяют то, что знает Claude, включая то, как эффективно использовать эти сервисы.

130 

131 | Аспект | MCP | Skill |

132 | ----------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |

133 | **Что это** | Протокол для подключения к внешним сервисам | Знания, рабочие процессы и справочный материал |

134 | **Предоставляет** | Инструменты и доступ к данным | Знания, рабочие процессы, справочный материал |

135 | **Примеры** | Интеграция Slack, запросы к базе данных, управление браузером | Контрольный список рецензирования кода, рабочий процесс развёртывания, руководство по стилю API |

136 

137 Они решают разные проблемы и хорошо работают вместе:

138 

139 **MCP** даёт Claude возможность взаимодействовать с внешними системами. Без MCP Claude не может запросить вашу базу данных или отправить сообщение в Slack.

140 

141 **Skills** дают Claude знания о том, как эффективно использовать эти инструменты, плюс рабочие процессы, которые вы можете запустить с помощью `/<name>`. Skill может включать схему базы данных вашей команды и шаблоны запросов, или рабочий процесс `/post-to-slack` с правилами форматирования сообщений вашей команды.

142 

143 Пример: MCP server подключает Claude к вашей базе данных. Skill учит Claude вашу модель данных, общие шаблоны запросов и какие таблицы использовать для разных задач.

144 </Tab>

145</Tabs>

146 

147### Поймите, как функции слоятся

148 

149Функции могут быть определены на нескольких уровнях: для всех пользователей, для каждого проекта, через plugins или через управляемые политики. Вы также можете вложить файлы CLAUDE.md в подкаталоги или разместить skills в определённых пакетах monorepo. Когда одна и та же функция существует на нескольких уровнях, вот как они слоятся:

150 

151* **Файлы CLAUDE.md** являются аддитивными: все уровни одновременно вносят контент в контекст Claude. Файлы из вашего рабочего каталога и выше загружаются при запуске; подкаталоги загружаются по мере работы в них. Когда инструкции конфликтуют, Claude использует суждение для их согласования, при этом более специфичные инструкции обычно имеют приоритет. Подробнее см. в разделе [как загружаются файлы CLAUDE.md](/ru/memory#how-claudemd-files-load).

152* **Skills и subagents** переопределяют по имени: когда одно и то же имя существует на нескольких уровнях, одно определение побеждает на основе приоритета (управляемый > пользователь > проект для skills; управляемый > флаг CLI > проект > пользователь > plugin для subagents). Plugin skills имеют [пространство имён](/ru/plugins#add-skills-to-your-plugin) для избежания конфликтов. Подробнее см. в разделах [обнаружение skills](/ru/skills#where-skills-live) и [область subagent](/ru/sub-agents#choose-the-subagent-scope).

153* **MCP servers** переопределяют по имени: локальный > проект > пользователь. Подробнее см. в разделе [область MCP](/ru/mcp#scope-hierarchy-and-precedence).

154* **Hooks** объединяются: все зарегистрированные hooks срабатывают для своих соответствующих событий независимо от источника. Подробнее см. в разделе [Hooks](/ru/hooks).

155 

156### Объедините функции

157 

158Каждое расширение решает разную проблему: CLAUDE.md обрабатывает всегда включённый контекст, skills обрабатывают знания и рабочие процессы по требованию, MCP обрабатывает внешние подключения, subagents обрабатывают изоляцию, а hooks обрабатывают автоматизацию. Реальные настройки объединяют их на основе вашего рабочего процесса.

159 

160Например, вы можете использовать CLAUDE.md для соглашений проекта, skill для вашего рабочего процесса развёртывания, MCP для подключения к вашей базе данных и hook для запуска линтинга после каждого редактирования. Каждая функция обрабатывает то, в чём она лучше всего.

161 

162| Паттерн | Как это работает | Пример |

163| ---------------------- | ------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- |

164| **Skill + MCP** | MCP обеспечивает подключение; skill учит Claude, как его хорошо использовать | MCP подключается к вашей базе данных, skill документирует вашу схему и шаблоны запросов |

165| **Skill + Subagent** | Skill запускает subagents для параллельной работы | Skill `/audit` запускает subagents безопасности, производительности и стиля, которые работают в изолированном контексте |

166| **CLAUDE.md + Skills** | CLAUDE.md содержит всегда включённые правила; skills содержат справочный материал, загружаемый по требованию | CLAUDE.md говорит "следуйте нашим соглашениям API", skill содержит полное руководство по стилю API |

167| **Hook + MCP** | Hook запускает внешние действия через MCP | Hook после редактирования отправляет уведомление Slack, когда Claude изменяет критические файлы |

168 

169## Поймите стоимость контекста

170 

171Каждая функция, которую вы добавляете, потребляет часть контекста Claude. Слишком много может заполнить ваше окно контекста, но это также может добавить шум, который делает Claude менее эффективным; skills могут не срабатывать правильно, или Claude может потерять из виду ваши соглашения. Понимание этих компромиссов помогает вам построить эффективную настройку.

172 

173### Стоимость контекста по функциям

174 

175Каждая функция имеет разную стратегию загрузки и стоимость контекста:

176 

177| Функция | Когда загружается | Что загружается | Стоимость контекста |

178| --------------- | --------------------------------- | --------------------------------------------------- | ----------------------------------------------------- |

179| **CLAUDE.md** | Начало сессии | Полный контент | Каждый запрос |

180| **Skills** | Начало сессии + при использовании | Описания в начале, полный контент при использовании | Низкая (описания каждый запрос)\* |

181| **MCP servers** | Начало сессии | Все определения инструментов и схемы | Каждый запрос |

182| **Subagents** | При запуске | Свежий контекст с указанными skills | Изолирован от основной сессии |

183| **Hooks** | При срабатывании | Ничего (работает внешне) | Ноль, если hook не возвращает дополнительный контекст |

184 

185\*По умолчанию описания skills загружаются в начале сессии, чтобы Claude мог решить, когда их использовать. Установите `disable-model-invocation: true` в frontmatter skill, чтобы скрыть его от Claude полностью до тех пор, пока вы не вызовете его вручную. Это снижает стоимость контекста до нуля для skills, которые вы только вызываете сами.

186 

187### Поймите, как загружаются функции

188 

189Каждая функция загружается в разные точки вашей сессии. Вкладки ниже объясняют, когда загружается каждая и что входит в контекст.

190 

191<img src="https://mintcdn.com/claude-code/6yTCYq1p37ZB8-CQ/images/context-loading.svg?fit=max&auto=format&n=6yTCYq1p37ZB8-CQ&q=85&s=5a58ce953a35a2412892015e2ad6cb67" alt="Загрузка контекста: CLAUDE.md и MCP загружаются в начале сессии и остаются в каждом запросе. Skills загружают описания в начале, полный контент при вызове. Subagents получают изолированный контекст. Hooks работают внешне." width="720" height="410" data-path="images/context-loading.svg" />

192 

193<Tabs>

194 <Tab title="CLAUDE.md">

195 **Когда:** Начало сессии

196 

197 **Что загружается:** Полный контент всех файлов CLAUDE.md (управляемые, пользовательские и уровни проекта).

198 

199 **Наследование:** Claude читает файлы CLAUDE.md из вашего рабочего каталога вверх до корня и обнаруживает вложенные в подкаталогах по мере доступа к этим файлам. Подробнее см. в разделе [How CLAUDE.md files load](/ru/memory#how-claudemd-files-load).

200 

201 <Tip>Держите CLAUDE.md под 200 строк. Переместите справочный материал в skills, которые загружаются по требованию.</Tip>

202 </Tab>

203 

204 <Tab title="Skills">

205 Skills — это дополнительные возможности в наборе инструментов Claude. Они могут быть справочным материалом (например, руководство по стилю API) или вызываемыми рабочими процессами, которые вы запускаете с помощью `/<name>` (например, `/deploy`). Claude Code поставляется с [встроенными skills](/ru/skills#bundled-skills) типа `/simplify`, `/batch` и `/debug`, которые работают из коробки. Вы также можете создавать свои собственные. Claude использует skills, когда это уместно, или вы можете вызвать один напрямую.

206 

207 **Когда:** Зависит от конфигурации skill. По умолчанию описания загружаются в начале сессии, а полный контент загружается при использовании. Для skills только пользователя (`disable-model-invocation: true`) ничего не загружается до тех пор, пока вы их не вызовете.

208 

209 **Что загружается:** Для skills, вызываемых моделью, Claude видит имена и описания в каждом запросе. Когда вы вызываете skill с помощью `/<name>` или Claude загружает его автоматически, полный контент загружается в ваш разговор.

210 

211 **Как Claude выбирает skills:** Claude сопоставляет вашу задачу с описаниями skills, чтобы решить, какие релевантны. Если описания расплывчаты или перекрываются, Claude может загрузить неправильный skill или пропустить тот, который помог бы. Чтобы сказать Claude использовать определённый skill, вызовите его с помощью `/<name>`. Skills с `disable-model-invocation: true` невидимы для Claude до тех пор, пока вы их не вызовете.

212 

213 **Стоимость контекста:** Низкая до использования. Skills только пользователя имеют нулевую стоимость до вызова.

214 

215 **В subagents:** Skills работают по-другому в subagents. Вместо загрузки по требованию, skills, переданные subagent, полностью предварительно загружаются в его контекст при запуске. Subagents не наследуют skills из основной сессии; вы должны указать их явно.

216 

217 <Tip>Используйте `disable-model-invocation: true` для skills с побочными эффектами. Это экономит контекст и гарантирует, что только вы их запускаете.</Tip>

218 </Tab>

219 

220 <Tab title="MCP servers">

221 **Когда:** Начало сессии.

222 

223 **Что загружается:** Все определения инструментов и JSON схемы из подключённых серверов.

224 

225 **Стоимость контекста:** [Tool search](/ru/mcp#scale-with-mcp-tool-search) (включён по умолчанию) загружает MCP инструменты до 10% контекста и откладывает остальное до необходимости.

226 

227 **Примечание о надёжности:** MCP подключения могут молча отказать в середине сессии. Если сервер отключится, его инструменты исчезнут без предупреждения. Claude может попытаться использовать инструмент, который больше не существует. Если вы заметили, что Claude не может использовать MCP инструмент, который он раньше мог использовать, проверьте подключение с помощью `/mcp`.

228 

229 <Tip>Запустите `/mcp`, чтобы увидеть стоимость токенов на сервер. Отключите серверы, которые вы не активно используете.</Tip>

230 </Tab>

231 

232 <Tab title="Subagents">

233 **Когда:** По требованию, когда вы или Claude запускаете один для задачи.

234 

235 **Что загружается:** Свежий, изолированный контекст, содержащий:

236 

237 * Системный prompt (общий с родителем для эффективности кэша)

238 * Полный контент skills, указанных в поле `skills:` агента

239 * CLAUDE.md и статус git (унаследованы от родителя)

240 * Любой контекст, который основной агент передаёт в prompt

241 

242 **Стоимость контекста:** Изолирована от основной сессии. Subagents не наследуют историю вашего разговора или вызванные skills.

243 

244 <Tip>Используйте subagents для работы, которая не нуждается в вашем полном контексте разговора. Их изоляция предотвращает раздувание вашей основной сессии.</Tip>

245 </Tab>

246 

247 <Tab title="Hooks">

248 **Когда:** При срабатывании. Hooks срабатывают при определённых событиях жизненного цикла, таких как выполнение инструмента, границы сессии, отправка prompt, запросы разрешений и компактирование. Полный список см. в разделе [Hooks](/ru/hooks).

249 

250 **Что загружается:** Ничего по умолчанию. Hooks работают как внешние скрипты.

251 

252 **Стоимость контекста:** Ноль, если hook не возвращает вывод, который добавляется как сообщения в ваш разговор.

253 

254 <Tip>Hooks идеальны для побочных эффектов (линтинг, логирование), которые не должны влиять на контекст Claude.</Tip>

255 </Tab>

256</Tabs>

257 

258## Узнайте больше

259 

260Каждая функция имеет своё собственное руководство с инструкциями по настройке, примерами и параметрами конфигурации.

261 

262<CardGroup cols={2}>

263 <Card title="CLAUDE.md" icon="file-lines" href="/ru/memory">

264 Сохраняйте контекст проекта, соглашения и инструкции

265 </Card>

266 

267 <Card title="Skills" icon="brain" href="/ru/skills">

268 Дайте Claude экспертизу в области и переиспользуемые рабочие процессы

269 </Card>

270 

271 <Card title="Subagents" icon="users" href="/ru/sub-agents">

272 Перенесите работу в изолированный контекст

273 </Card>

274 

275 <Card title="Agent teams" icon="network" href="/ru/agent-teams">

276 Координируйте несколько сессий, работающих параллельно

277 </Card>

278 

279 <Card title="MCP" icon="plug" href="/ru/mcp">

280 Подключите Claude к внешним сервисам

281 </Card>

282 

283 <Card title="Hooks" icon="bolt" href="/ru/hooks-guide">

284 Автоматизируйте рабочие процессы с помощью hooks

285 </Card>

286 

287 <Card title="Plugins" icon="puzzle-piece" href="/ru/plugins">

288 Упакуйте и поделитесь наборами функций

289 </Card>

290 

291 <Card title="Marketplaces" icon="store" href="/ru/plugin-marketplaces">

292 Размещайте и распространяйте коллекции plugins

293 </Card>

294</CardGroup>

fullscreen.md +159 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Полноэкранная визуализация

6 

7> Включите более плавный режим визуализации без мерцания с поддержкой мыши и стабильным использованием памяти в длительных диалогах.

8 

9<Note>

10 Полноэкранная визуализация — это добровольный [исследовательский предпросмотр](#research-preview) и требует Claude Code v2.1.89 или более поздней версии. Запустите `/tui fullscreen` для переключения в текущем диалоге или установите `CLAUDE_CODE_NO_FLICKER=1` в версиях до v2.1.110. Поведение может измениться на основе обратной связи.

11</Note>

12 

13Полноэкранная визуализация — это альтернативный путь визуализации для Claude Code CLI, который устраняет мерцание, поддерживает использование памяти на постоянном уровне в длительных диалогах и добавляет поддержку мыши. Она рисует интерфейс на альтернативном буфере экрана терминала, как `vim` или `htop`, и отображает только видимые в данный момент сообщения. Это снижает объём данных, отправляемых на ваш терминал при каждом обновлении.

14 

15Различие наиболее заметно в эмуляторах терминала, где пропускная способность визуализации является узким местом, таких как встроенный терминал VS Code, tmux и iTerm2. Если позиция прокрутки вашего терминала прыгает в начало, пока Claude работает, или экран мигает при потоковой передаче выходных данных инструмента, этот режим решает эту проблему.

16 

17<Note>

18 Термин «полноэкранная» описывает то, как Claude Code захватывает поверхность рисования терминала, так же как это делает `vim`. Это не имеет никакого отношения к максимизации окна вашего терминала и работает при любом размере окна.

19</Note>

20 

21## Включение полноэкранной визуализации

22 

23Запустите `/tui fullscreen` в любом диалоге Claude Code. CLI сохраняет параметр [`tui`](/ru/settings#available-settings) и перезагружается в полноэкранный режим с вашим диалогом в целости, поэтому вы можете переключаться в середине сеанса без потери контекста. Запустите `/tui` без аргумента для вывода информации о том, какой рендерер активен.

24 

25Вы также можете установить переменную окружения `CLAUDE_CODE_NO_FLICKER` перед запуском Claude Code:

26 

27```bash theme={null}

28CLAUDE_CODE_NO_FLICKER=1 claude

29```

30 

31Параметр `tui` и переменная окружения эквивалентны. Команда `/tui` очищает `CLAUDE_CODE_NO_FLICKER` из перезагруженного процесса, чтобы вступил в силу записанный параметр.

32 

33## Что изменилось

34 

35Полноэкранная визуализация изменяет способ, которым CLI рисует на вашем терминале. Поле ввода остаётся зафиксированным в нижней части экрана вместо того, чтобы перемещаться при потоковой передаче выходных данных. Если поле ввода остаётся на месте, пока Claude работает, полноэкранная визуализация активна. В дереве визуализации сохраняются только видимые сообщения, поэтому память остаётся постоянной независимо от длины диалога.

36 

37Поскольку диалог находится в альтернативном буфере экрана вместо истории прокрутки вашего терминала, несколько вещей работают по-другому:

38 

39| До | Сейчас | Подробности |

40| :---------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :-------------------------------------------------------------- |

41| `Cmd+f` или поиск tmux для поиска текста | `Ctrl+o` для режима стенограммы, затем `/` для поиска или `[` для записи в историю прокрутки | [Поиск и просмотр диалога](#search-and-review-the-conversation) |

42| Встроенное выделение и копирование нажатием и перетаскиванием терминала | Встроенное выделение, копирование автоматически при отпускании мыши | [Использование мыши](#use-the-mouse) |

43| `Cmd`-клик для открытия URL | Клик по URL | [Использование мыши](#use-the-mouse) |

44 

45Если захват мыши мешает вашему рабочему процессу, вы можете [отключить его](#keep-native-text-selection), сохраняя визуализацию без мерцания.

46 

47## Использование мыши

48 

49Полноэкранная визуализация захватывает события мыши и обрабатывает их внутри Claude Code:

50 

51* **Клик в поле ввода подсказки** для позиционирования курсора в любом месте вводимого вами текста.

52* **Клик по свёрнутому результату инструмента** для его развёртывания и просмотра полного выходного сигнала. Клик снова для свёртывания. Вызов инструмента и его результат развёртываются вместе. Кликабельны только сообщения, которые имеют больше для отображения.

53* **Клик по URL или пути к файлу** для его открытия. Пути к файлам в выходных данных инструмента, такие как те, которые выводятся после Edit или Write, открываются в вашем приложении по умолчанию. Простые `http://` и `https://` URL открываются в вашем браузере. В большинстве терминалов это заменяет встроенный `Cmd`-клик или `Ctrl`-клик, который захват мыши перехватывает. Во встроенном терминале VS Code и аналогичных терминалах на основе xterm.js продолжайте использовать `Cmd`-клик. Claude Code уступает собственному обработчику ссылок терминала там, чтобы избежать открытия ссылок дважды.

54* **Клик и перетаскивание** для выделения текста в любом месте диалога. Двойной клик выделяет слово, соответствуя границам слов iTerm2, поэтому путь к файлу выделяется как одна единица. Тройной клик выделяет строку.

55* **Прокрутка колесом мыши** для перемещения по диалогу.

56 

57Выделенный текст копируется в буфер обмена автоматически при отпускании мыши. Чтобы отключить это, переключите Copy on select в `/config`. Если это отключено, нажмите `Ctrl+Shift+c` для ручного копирования. На терминалах, поддерживающих протокол клавиатуры kitty, таких как kitty, WezTerm, Ghostty и iTerm2, `Cmd+c` также работает. Если у вас активно выделение, `Ctrl+c` копирует вместо отмены.

58 

59С активным выделением удерживайте `Shift` и нажимайте клавиши со стрелками для его расширения с клавиатуры. `Shift+↑` и `Shift+↓` прокручивают область просмотра, когда выделение достигает верхнего или нижнего края. `Shift+Home` и `Shift+End` расширяют до начала или конца текущей строки.

60 

61## Прокрутка диалога

62 

63Полноэкранная визуализация обрабатывает прокрутку внутри приложения. Используйте эти сочетания клавиш для навигации:

64 

65| Сочетание клавиш | Действие |

66| :--------------- | :------------------------------------------------------------------ |

67| `PgUp` / `PgDn` | Прокрутка вверх или вниз на половину экрана |

68| `Ctrl+Home` | Переход в начало диалога |

69| `Ctrl+End` | Переход к последнему сообщению и повторное включение автоследования |

70| Колесо мыши | Прокрутка на несколько строк за раз |

71 

72На клавиатурах без выделенных клавиш `PgUp`, `PgDn`, `Home` или `End`, таких как клавиатуры MacBook, удерживайте `Fn` с клавишами со стрелками: `Fn+↑` отправляет `PgUp`, `Fn+↓` отправляет `PgDn`, `Fn+←` отправляет `Home`, и `Fn+→` отправляет `End`. Это делает `Ctrl+Fn+→` сочетанием клавиш для перехода в конец. Если это кажется неудобным, прокрутите в конец колесом мыши для возобновления следования, или переназначьте `scroll:bottom` на что-то более доступное.

73 

74Эти действия переназначаемы. Смотрите [Scroll actions](/ru/keybindings#scroll-actions) для полного списка имён действий, включая варианты с половиной страницы и полной страницей, которые не имеют привязки по умолчанию.

75 

76### Автоследование

77 

78Прокрутка вверх приостанавливает автоследование, чтобы новый выходной сигнал не тянул вас обратно в конец. Нажмите `Ctrl+End` или прокрутите в конец для возобновления следования.

79 

80Чтобы полностью отключить автоследование, чтобы представление оставалось там, где вы его оставили, откройте `/config` и установите Auto-scroll на off. С отключённой автопрокруткой представление никогда не прыгает в конец самостоятельно. Диалоги запроса разрешения и другие диалоги, требующие ответа, всё ещё прокручиваются в поле зрения независимо от этого параметра.

81 

82### Прокрутка колесом мыши

83 

84Прокрутка колесом мыши требует, чтобы ваш терминал пересылал события мыши в Claude Code. Большинство терминалов делают это всякий раз, когда приложение это запрашивает. iTerm2 делает это параметром для каждого профиля: если колесо ничего не делает, но `PgUp` и `PgDn` работают, откройте Settings → Profiles → Terminal и включите Enable mouse reporting. Этот же параметр также требуется для работы клика для развёртывания и выделения текста.

85 

86Если прокрутка колесом мыши кажется медленной, ваш терминал может отправлять одно событие прокрутки на физический щелчок без множителя. Некоторые терминалы, такие как Ghostty и iTerm2 с включённой более быстрой прокруткой, уже усиливают события колеса. Другие, включая встроенный терминал VS Code, отправляют ровно одно событие на щелчок. Claude Code не может определить, какой из них.

87 

88Установите `CLAUDE_CODE_SCROLL_SPEED` для умножения базового расстояния прокрутки:

89 

90```bash theme={null}

91export CLAUDE_CODE_SCROLL_SPEED=3

92```

93 

94Значение `3` соответствует значению по умолчанию в `vim` и аналогичных приложениях. Параметр принимает значения от 1 до 20.

95 

96## Поиск и просмотр диалога

97 

98`Ctrl+o` переключается между обычной подсказкой и режимом стенограммы. Для более спокойного представления, которое показывает только вашу последнюю подсказку, однострочное резюме вызовов инструментов с diffstats редактирования и финальный ответ, запустите `/focus`. Параметр сохраняется между сеансами. Запустите `/focus` снова для его отключения.

99 

100Режим стенограммы получает навигацию и поиск в стиле `less`:

101 

102| Клавиша | Действие |

103| :------------------------------------ | :---------------------------------------------------------------------------------------------------------------------- |

104| `/` | Открыть поиск. Введите для поиска совпадений, `Enter` для принятия, `Esc` для отмены и восстановления позиции прокрутки |

105| `n` / `N` | Переход к следующему или предыдущему совпадению. Работает после закрытия строки поиска |

106| `j` / `k` или `↑` / `↓` | Прокрутка на одну строку |

107| `g` / `G` или `Home` / `End` | Переход в начало или конец |

108| `Ctrl+u` / `Ctrl+d` | Прокрутка на половину страницы |

109| `Ctrl+b` / `Ctrl+f` или `Space` / `b` | Прокрутка на полную страницу |

110| `Ctrl+o`, `Esc` или `q` | Выход из режима стенограммы и возврат к подсказке |

111 

112`Cmd+f` вашего терминала и поиск tmux не видят диалог, потому что он находится в альтернативном буфере экрана, а не в собственной истории прокрутки. Чтобы вернуть содержимое вашему терминалу, нажмите `Ctrl+o` для входа в режим стенограммы сначала, затем:

113 

114* **`[`**: записывает полный диалог в собственный буфер истории прокрутки вашего терминала со всеми развёрнутыми выходными данными инструмента. Диалог теперь является обычным текстом в вашем терминале, поэтому `Cmd+f`, режим копирования tmux и любой другой встроенный инструмент могут искать или выбирать его. Длительные сеансы могут на момент приостановиться, пока это происходит. Это длится до выхода из режима стенограммы с помощью `Esc` или `q`, что возвращает вас к полноэкранной визуализации. Следующий `Ctrl+o` начинается заново.

115* **`v`**: записывает диалог во временный файл и открывает его в `$VISUAL` или `$EDITOR`.

116 

117Нажмите `Esc` или `q` для возврата к подсказке.

118 

119## Очистка диалога

120 

121Нажмите `Ctrl+L` дважды в течение двух секунд для запуска `/clear` и начала нового диалога. Первое нажатие перерисовывает экран и показывает подсказку; второе нажатие очищает диалог. На macOS двойное нажатие `Cmd+K` также запускает `/clear`.

122 

123## Использование с tmux

124 

125Полноэкранная визуализация работает внутри tmux с двумя оговорками.

126 

127Прокрутка колесом мыши требует режима мыши tmux. Если ваш `~/.tmux.conf` ещё не включает его, добавьте эту строку и перезагрузите конфигурацию:

128 

129```bash theme={null}

130set -g mouse on

131```

132 

133Без режима мыши события колеса идут в tmux вместо Claude Code. Прокрутка с клавиатуры с помощью `PgUp` и `PgDn` работает в любом случае. Claude Code выводит однократную подсказку при запуске, если обнаруживает tmux с отключённым режимом мыши.

134 

135Полноэкранная визуализация несовместима с режимом интеграции tmux в iTerm2, который является режимом, в который вы входите с помощью `tmux -CC`. В режиме интеграции iTerm2 отображает каждую панель tmux как встроенное разделение вместо того, чтобы позволить tmux рисовать на терминале. Альтернативный буфер экрана и отслеживание мыши не работают правильно там: колесо мыши ничего не делает, и двойной клик может повредить состояние терминала. Не включайте полноэкранную визуализацию в сеансах `tmux -CC`. Обычный tmux внутри iTerm2 без `-CC` работает нормально.

136 

137## Сохранение встроенного выделения текста

138 

139Захват мыши — наиболее частая точка трения, особенно по SSH или внутри tmux. Когда Claude Code захватывает события мыши, встроенное копирование при выделении вашего терминала перестаёт работать. Выделение, которое вы делаете с помощью нажатия и перетаскивания, существует внутри Claude Code, а не в буфере выделения вашего терминала, поэтому режим копирования tmux, подсказки Kitty и аналогичные инструменты его не видят.

140 

141Claude Code пытается записать выделение в буфер обмена, но путь, который он использует, зависит от вашей установки. Внутри tmux он записывает в буфер вставки tmux. По SSH он возвращается к последовательностям escape OSC 52, которые некоторые терминалы блокируют по умолчанию. iTerm2 блокирует их до тех пор, пока вы не включите Settings → General → Selection → Applications in terminal may access clipboard. Запуск [`/terminal-setup`](/ru/terminal-config) в iTerm2 включает это для вас. Claude Code выводит уведомление после каждого копирования, сообщая вам, какой путь он использовал.

142 

143Для одноразового встроенного выделения удерживайте модификатор обхода вашего терминала во время нажатия и перетаскивания: `Option` в iTerm2 или `Shift` в большинстве терминалов Linux и Windows. Модификатор указывает вашему терминалу обрабатывать выделение самостоятельно вместо передачи событий мыши в Claude Code, поэтому `Cmd+C` и другие сочетания клавиш копирования вашего терминала работают на нём.

144 

145Если вы полагаетесь на встроенное выделение всё время, установите `CLAUDE_CODE_DISABLE_MOUSE=1` для отказа от захвата мыши, сохраняя визуализацию без мерцания и плоскую память:

146 

147```bash theme={null}

148CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude

149```

150 

151С отключённым захватом мыши прокрутка с клавиатуры с помощью `PgUp`, `PgDn`, `Ctrl+Home` и `Ctrl+End` всё ещё работает, и ваш терминал обрабатывает выделение встроенным образом. Вы теряете клик для позиционирования курсора, клик для развёртывания выходных данных инструмента, клик по URL и прокрутку колесом внутри Claude Code.

152 

153## Исследовательский предпросмотр

154 

155Полноэкранная визуализация — это функция исследовательского предпросмотра. Она была протестирована на распространённых эмуляторах терминала, но вы можете столкнуться с проблемами визуализации на менее распространённых терминалах или необычных конфигурациях.

156 

157Если вы столкнулись с проблемой, запустите `/feedback` внутри Claude Code для её сообщения, или откройте проблему в [репозитории claude-code на GitHub](https://github.com/anthropics/claude-code/issues). Включите название и версию вашего эмулятора терминала.

158 

159Чтобы отключить полноэкранную визуализацию, запустите `/tui default` или отмените установку переменной окружения, если вы включили её таким образом.

github-actions.md +670 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Claude Code GitHub Actions

6 

7> Узнайте об интеграции Claude Code в ваш рабочий процесс разработки с помощью Claude Code GitHub Actions

8 

9Claude Code GitHub Actions привносит автоматизацию на основе ИИ в ваш рабочий процесс GitHub. С простым упоминанием `@claude` в любом PR или issue, Claude может анализировать ваш код, создавать pull requests, реализовывать функции и исправлять ошибки — всё при соблюдении стандартов вашего проекта. Для автоматических проверок, размещаемых на каждом PR без триггера, см. [GitHub Code Review](/ru/code-review).

10 

11<Note>

12 Claude Code GitHub Actions построен на основе [Claude Agent SDK](/ru/agent-sdk/overview), который обеспечивает программную интеграцию Claude Code в ваши приложения. Вы можете использовать SDK для создания пользовательских рабочих процессов автоматизации за пределами GitHub Actions.

13</Note>

14 

15<Info>

16 **Claude Opus 4.7 теперь доступен.** Claude Code GitHub Actions по умолчанию используют Sonnet. Для использования Opus 4.7 настройте [параметр модели](#breaking-changes-reference) на использование `claude-opus-4-7`.

17</Info>

18 

19## Зачем использовать Claude Code GitHub Actions?

20 

21* **Мгновенное создание PR**: Опишите, что вам нужно, и Claude создаст полный PR со всеми необходимыми изменениями

22* **Автоматизированная реализация кода**: Превратите issues в рабочий код одной командой

23* **Соблюдение ваших стандартов**: Claude уважает ваши рекомендации `CLAUDE.md` и существующие паттерны кода

24* **Простая настройка**: Начните работу за несколько минут с нашим установщиком и API ключом

25* **Безопасность по умолчанию**: Ваш код остаётся на серверах Github

26 

27## Что может делать Claude?

28 

29Claude Code предоставляет мощный GitHub Action, который преобразует способ работы с кодом:

30 

31### Claude Code Action

32 

33Этот GitHub Action позволяет вам запускать Claude Code в ваших рабочих процессах GitHub Actions. Вы можете использовать это для создания любого пользовательского рабочего процесса на основе Claude Code.

34 

35[Просмотреть репозиторий →](https://github.com/anthropics/claude-code-action)

36 

37## Настройка

38 

39## Быстрая настройка

40 

41Самый простой способ настроить это действие — через Claude Code в терминале. Просто откройте claude и запустите `/install-github-app`.

42 

43Эта команда проведёт вас через процесс настройки GitHub app и необходимых секретов.

44 

45<Note>

46 * Вы должны быть администратором репозитория для установки GitHub app и добавления секретов

47 * GitHub app будет запрашивать права на чтение и запись для Contents, Issues и Pull requests

48 * Этот метод быстрого старта доступен только для прямых пользователей Claude API. Если вы используете Amazon Bedrock или Google Vertex AI, см. раздел [Использование с Amazon Bedrock и Google Vertex AI](#using-with-amazon-bedrock-%26-google-vertex-ai).

49</Note>

50 

51## Ручная настройка

52 

53Если команда `/install-github-app` не сработала или вы предпочитаете ручную настройку, следуйте этим инструкциям ручной настройки:

54 

551. **Установите Claude GitHub app** в ваш репозиторий: [https://github.com/apps/claude](https://github.com/apps/claude)

56 

57 Claude GitHub app требует следующих разрешений репозитория:

58 

59 * **Contents**: Чтение и запись (для изменения файлов репозитория)

60 * **Issues**: Чтение и запись (для ответа на issues)

61 * **Pull requests**: Чтение и запись (для создания PR и отправки изменений)

62 

63 Для получения дополнительной информации о безопасности и разрешениях см. [документацию по безопасности](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md).

642. **Добавьте ANTHROPIC\_API\_KEY** в секреты вашего репозитория ([Узнайте, как использовать секреты в GitHub Actions](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions))

653. **Скопируйте файл рабочего процесса** из [examples/claude.yml](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml) в папку `.github/workflows/` вашего репозитория

66 

67<Tip>

68 После завершения быстрой настройки или ручной настройки протестируйте действие, отметив `@claude` в комментарии issue или PR.

69</Tip>

70 

71## Обновление с бета-версии

72 

73<Warning>

74 Claude Code GitHub Actions v1.0 вводит критические изменения, которые требуют обновления ваших файлов рабочего процесса для обновления с бета-версии на v1.0.

75</Warning>

76 

77Если вы в настоящее время используете бета-версию Claude Code GitHub Actions, мы рекомендуем обновить ваши рабочие процессы для использования версии GA. Новая версия упрощает конфигурацию, добавляя мощные новые функции, такие как автоматическое обнаружение режима.

78 

79### Существенные изменения

80 

81Все пользователи бета-версии должны внести эти изменения в свои файлы рабочего процесса для обновления:

82 

831. **Обновите версию действия**: Измените `@beta` на `@v1`

842. **Удалите конфигурацию режима**: Удалите `mode: "tag"` или `mode: "agent"` (теперь автоматически обнаруживается)

853. **Обновите входные данные prompt**: Замените `direct_prompt` на `prompt`

864. **Переместите параметры CLI**: Преобразуйте `max_turns`, `model`, `custom_instructions` и т.д. в `claude_args`

87 

88### Справочник критических изменений

89 

90| Старый вход бета-версии | Новый вход v1.0 |

91| ----------------------- | ------------------------------------------ |

92| `mode` | *(Удалено - автоматически обнаруживается)* |

93| `direct_prompt` | `prompt` |

94| `override_prompt` | `prompt` с переменными GitHub |

95| `custom_instructions` | `claude_args: --append-system-prompt` |

96| `max_turns` | `claude_args: --max-turns` |

97| `model` | `claude_args: --model` |

98| `allowed_tools` | `claude_args: --allowedTools` |

99| `disallowed_tools` | `claude_args: --disallowedTools` |

100| `claude_env` | `settings` формат JSON |

101 

102### Пример до и после

103 

104**Бета-версия:**

105 

106```yaml theme={null}

107- uses: anthropics/claude-code-action@beta

108 with:

109 mode: "tag"

110 direct_prompt: "Review this PR for security issues"

111 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

112 custom_instructions: "Follow our coding standards"

113 max_turns: "10"

114 model: "claude-sonnet-4-6"

115```

116 

117**Версия GA (v1.0):**

118 

119```yaml theme={null}

120- uses: anthropics/claude-code-action@v1

121 with:

122 prompt: "Review this PR for security issues"

123 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

124 claude_args: |

125 --append-system-prompt "Follow our coding standards"

126 --max-turns 10

127 --model claude-sonnet-4-6

128```

129 

130<Tip>

131 Действие теперь автоматически обнаруживает, следует ли запускать в интерактивном режиме (отвечает на упоминания `@claude`) или в режиме автоматизации (запускается немедленно с prompt) на основе вашей конфигурации.

132</Tip>

133 

134## Примеры использования

135 

136Claude Code GitHub Actions может помочь вам с различными задачами. [Каталог примеров](https://github.com/anthropics/claude-code-action/tree/main/examples) содержит готовые к использованию рабочие процессы для различных сценариев.

137 

138### Базовый рабочий процесс

139 

140```yaml theme={null}

141name: Claude Code

142on:

143 issue_comment:

144 types: [created]

145 pull_request_review_comment:

146 types: [created]

147jobs:

148 claude:

149 runs-on: ubuntu-latest

150 steps:

151 - uses: anthropics/claude-code-action@v1

152 with:

153 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

154 # Responds to @claude mentions in comments

155```

156 

157### Использование skills

158 

159```yaml theme={null}

160name: Code Review

161on:

162 pull_request:

163 types: [opened, synchronize]

164jobs:

165 review:

166 runs-on: ubuntu-latest

167 steps:

168 - uses: anthropics/claude-code-action@v1

169 with:

170 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

171 prompt: "Review this pull request for code quality, correctness, and security. Analyze the diff, then post your findings as review comments."

172 claude_args: "--max-turns 5"

173```

174 

175### Пользовательская автоматизация с prompts

176 

177```yaml theme={null}

178name: Daily Report

179on:

180 schedule:

181 - cron: "0 9 * * *"

182jobs:

183 report:

184 runs-on: ubuntu-latest

185 steps:

186 - uses: anthropics/claude-code-action@v1

187 with:

188 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

189 prompt: "Generate a summary of yesterday's commits and open issues"

190 claude_args: "--model opus"

191```

192 

193### Распространённые случаи использования

194 

195В комментариях issue или PR:

196 

197```text theme={null}

198@claude implement this feature based on the issue description

199@claude how should I implement user authentication for this endpoint?

200@claude fix the TypeError in the user dashboard component

201```

202 

203Claude автоматически проанализирует контекст и ответит соответствующим образом.

204 

205## Лучшие практики

206 

207### Конфигурация CLAUDE.md

208 

209Создайте файл `CLAUDE.md` в корне вашего репозитория для определения рекомендаций по стилю кода, критериев проверки, правил, специфичных для проекта, и предпочитаемых паттернов. Этот файл направляет понимание Claude стандартов вашего проекта.

210 

211### Соображения безопасности

212 

213<Warning>Никогда не коммитьте API ключи непосредственно в ваш репозиторий.</Warning>

214 

215Для полного руководства по безопасности, включая разрешения, аутентификацию и лучшие практики, см. [документацию по безопасности Claude Code Action](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md).

216 

217Всегда используйте GitHub Secrets для API ключей:

218 

219* Добавьте ваш API ключ как секрет репозитория с именем `ANTHROPIC_API_KEY`

220* Ссылайтесь на него в рабочих процессах: `anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}`

221* Ограничьте разрешения действия только необходимыми

222* Проверьте предложения Claude перед слиянием

223 

224Всегда используйте GitHub Secrets (например, `${{ secrets.ANTHROPIC_API_KEY }}`) вместо жёсткого кодирования API ключей непосредственно в ваши файлы рабочего процесса.

225 

226### Оптимизация производительности

227 

228Используйте шаблоны issues для предоставления контекста, держите ваш `CLAUDE.md` кратким и сосредоточенным, и настройте соответствующие тайм-ауты для ваших рабочих процессов.

229 

230### Затраты CI

231 

232При использовании Claude Code GitHub Actions помните о связанных затратах:

233 

234**Затраты GitHub Actions:**

235 

236* Claude Code работает на размещённых GitHub серверах, которые потребляют ваши минуты GitHub Actions

237* См. [документацию по выставлению счётов GitHub](https://docs.github.com/en/billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions) для получения подробной информации о ценах и лимитах минут

238 

239**Затраты API:**

240 

241* Каждое взаимодействие Claude потребляет токены API на основе длины prompts и ответов

242* Использование токенов варьируется в зависимости от сложности задачи и размера кодовой базы

243* См. [страницу цен Claude](https://claude.com/platform/api) для получения текущих ставок токенов

244 

245**Советы по оптимизации затрат:**

246 

247* Используйте специфичные команды `@claude` для уменьшения ненужных вызовов API

248* Настройте соответствующий `--max-turns` в `claude_args` для предотвращения чрезмерных итераций

249* Установите тайм-ауты на уровне рабочего процесса, чтобы избежать неконтролируемых заданий

250* Рассмотрите использование элементов управления параллелизмом GitHub для ограничения параллельных запусков

251 

252## Примеры конфигурации

253 

254Claude Code Action v1 упрощает конфигурацию с унифицированными параметрами:

255 

256```yaml theme={null}

257- uses: anthropics/claude-code-action@v1

258 with:

259 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

260 prompt: "Your instructions here" # Optional

261 claude_args: "--max-turns 5" # Optional CLI arguments

262```

263 

264Ключевые функции:

265 

266* **Унифицированный интерфейс prompt** - Используйте `prompt` для всех инструкций

267* **Skills** - Вызывайте установленные [skills](/ru/skills) непосредственно из prompt

268* **Passthrough CLI** - Любой аргумент Claude Code CLI через `claude_args`

269* **Гибкие триггеры** - Работает с любым событием GitHub

270 

271Посетите [каталог примеров](https://github.com/anthropics/claude-code-action/tree/main/examples) для полных файлов рабочего процесса.

272 

273<Tip>

274 При ответе на комментарии issue или PR, Claude автоматически отвечает на упоминания @claude. Для других событий используйте параметр `prompt` для предоставления инструкций.

275</Tip>

276 

277## Использование с Amazon Bedrock и Google Vertex AI

278 

279Для корпоративных сред вы можете использовать Claude Code GitHub Actions с вашей собственной облачной инфраструктурой. Этот подход даёт вам контроль над местоположением данных и выставлением счётов при сохранении той же функциональности.

280 

281### Предварительные требования

282 

283Перед настройкой Claude Code GitHub Actions с облачными провайдерами вам нужно:

284 

285#### Для Google Cloud Vertex AI:

286 

2871. Проект Google Cloud с включённым Vertex AI

2882. Workload Identity Federation, настроенный для GitHub Actions

2893. Сервисный аккаунт с необходимыми разрешениями

2904. GitHub App (рекомендуется) или использование стандартного GITHUB\_TOKEN

291 

292#### Для AWS Bedrock:

293 

2941. Аккаунт AWS с включённым Amazon Bedrock

2952. GitHub OIDC Identity Provider, настроенный в AWS

2963. IAM роль с разрешениями Bedrock

2974. GitHub App (рекомендуется) или использование стандартного GITHUB\_TOKEN

298 

299<Steps>

300 <Step title="Создайте пользовательский GitHub App (Рекомендуется для 3P провайдеров)">

301 Для лучшего контроля и безопасности при использовании 3P провайдеров, таких как Vertex AI или Bedrock, мы рекомендуем создать свой собственный GitHub App:

302 

303 1. Перейдите на [https://github.com/settings/apps/new](https://github.com/settings/apps/new)

304 2. Заполните основную информацию:

305 * **GitHub App name**: Выберите уникальное имя (например, "YourOrg Claude Assistant")

306 * **Homepage URL**: Веб-сайт вашей организации или URL репозитория

307 3. Настройте параметры приложения:

308 * **Webhooks**: Снимите флажок "Active" (не требуется для этой интеграции)

309 4. Установите необходимые разрешения:

310 * **Repository permissions**:

311 * Contents: Read & Write

312 * Issues: Read & Write

313 * Pull requests: Read & Write

314 5. Нажмите "Create GitHub App"

315 6. После создания нажмите "Generate a private key" и сохраните загруженный файл `.pem`

316 7. Запишите ID вашего приложения со страницы параметров приложения

317 8. Установите приложение в ваш репозиторий:

318 * Со страницы параметров вашего приложения нажмите "Install App" в левой боковой панели

319 * Выберите ваш аккаунт или организацию

320 * Выберите "Only select repositories" и выберите конкретный репозиторий

321 * Нажмите "Install"

322 9. Добавьте приватный ключ как секрет в ваш репозиторий:

323 * Перейдите в Settings вашего репозитория → Secrets and variables → Actions

324 * Создайте новый секрет с именем `APP_PRIVATE_KEY` с содержимым файла `.pem`

325 10. Добавьте ID приложения как секрет:

326 

327 * Создайте новый секрет с именем `APP_ID` с ID вашего GitHub App

328 

329 <Note>

330 Это приложение будет использоваться с действием [actions/create-github-app-token](https://github.com/actions/create-github-app-token) для генерации токенов аутентификации в ваших рабочих процессах.

331 </Note>

332 

333 **Альтернатива для Claude API или если вы не хотите настраивать свой Github app**: Используйте официальное приложение Anthropic:

334 

335 1. Установите из: [https://github.com/apps/claude](https://github.com/apps/claude)

336 2. Дополнительная конфигурация для аутентификации не требуется

337 </Step>

338 

339 <Step title="Настройте аутентификацию облачного провайдера">

340 Выберите вашего облачного провайдера и установите безопасную аутентификацию:

341 

342 <AccordionGroup>

343 <Accordion title="Amazon Bedrock">

344 **Настройте AWS, чтобы разрешить GitHub Actions безопасно аутентифицироваться без сохранения учётных данных.**

345 

346 > **Примечание по безопасности**: Используйте конфигурации, специфичные для репозитория, и предоставляйте только минимально необходимые разрешения.

347 

348 **Требуемая настройка**:

349 

350 1. **Включите Amazon Bedrock**:

351 * Запросите доступ к моделям Claude в Amazon Bedrock

352 * Для кроссрегиональных моделей запросите доступ во всех необходимых регионах

353 

354 2. **Установите GitHub OIDC Identity Provider**:

355 * Provider URL: `https://token.actions.githubusercontent.com`

356 * Audience: `sts.amazonaws.com`

357 

358 3. **Создайте IAM Role для GitHub Actions**:

359 * Trusted entity type: Web identity

360 * Identity provider: `token.actions.githubusercontent.com`

361 * Permissions: политика `AmazonBedrockFullAccess`

362 * Настройте политику доверия для вашего конкретного репозитория

363 

364 **Требуемые значения**:

365 

366 После настройки вам понадобятся:

367 

368 * **AWS\_ROLE\_TO\_ASSUME**: ARN IAM роли, которую вы создали

369 

370 <Tip>

371 OIDC более безопасен, чем использование статических AWS ключей доступа, потому что учётные данные являются временными и автоматически ротируются.

372 </Tip>

373 

374 См. [документацию AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html) для получения подробных инструкций по настройке OIDC.

375 </Accordion>

376 

377 <Accordion title="Google Vertex AI">

378 **Настройте Google Cloud, чтобы разрешить GitHub Actions безопасно аутентифицироваться без сохранения учётных данных.**

379 

380 > **Примечание по безопасности**: Используйте конфигурации, специфичные для репозитория, и предоставляйте только минимально необходимые разрешения.

381 

382 **Требуемая настройка**:

383 

384 1. **Включите API** в вашем проекте Google Cloud:

385 * IAM Credentials API

386 * Security Token Service (STS) API

387 * Vertex AI API

388 

389 2. **Создайте ресурсы Workload Identity Federation**:

390 * Создайте Workload Identity Pool

391 * Добавьте GitHub OIDC провайдера с:

392 * Issuer: `https://token.actions.githubusercontent.com`

393 * Attribute mappings для репозитория и владельца

394 * **Рекомендация по безопасности**: Используйте условия атрибутов, специфичные для репозитория

395 

396 3. **Создайте сервисный аккаунт**:

397 * Предоставьте только роль `Vertex AI User`

398 * **Рекомендация по безопасности**: Создайте выделенный сервисный аккаунт для каждого репозитория

399 

400 4. **Настройте IAM привязки**:

401 * Разрешите Workload Identity Pool олицетворять сервисный аккаунт

402 * **Рекомендация по безопасности**: Используйте наборы принципалов, специфичные для репозитория

403 

404 **Требуемые значения**:

405 

406 После настройки вам понадобятся:

407 

408 * **GCP\_WORKLOAD\_IDENTITY\_PROVIDER**: Полное имя ресурса провайдера

409 * **GCP\_SERVICE\_ACCOUNT**: Адрес электронной почты сервисного аккаунта

410 

411 <Tip>

412 Workload Identity Federation исключает необходимость в загружаемых ключах сервисного аккаунта, улучшая безопасность.

413 </Tip>

414 

415 Для получения подробных инструкций по настройке обратитесь к [документации Google Cloud Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation).

416 </Accordion>

417 </AccordionGroup>

418 </Step>

419 

420 <Step title="Добавьте необходимые секреты">

421 Добавьте следующие секреты в ваш репозиторий (Settings → Secrets and variables → Actions):

422 

423 #### Для Claude API (Direct):

424 

425 1. **Для аутентификации API**:

426 * `ANTHROPIC_API_KEY`: Ваш Claude API ключ из [console.anthropic.com](https://console.anthropic.com)

427 

428 2. **Для GitHub App (если используете свой app)**:

429 * `APP_ID`: ID вашего GitHub App

430 * `APP_PRIVATE_KEY`: Содержимое приватного ключа (.pem)

431 

432 #### Для Google Cloud Vertex AI

433 

434 1. **Для аутентификации GCP**:

435 * `GCP_WORKLOAD_IDENTITY_PROVIDER`

436 * `GCP_SERVICE_ACCOUNT`

437 

438 2. **Для GitHub App (если используете свой app)**:

439 * `APP_ID`: ID вашего GitHub App

440 * `APP_PRIVATE_KEY`: Содержимое приватного ключа (.pem)

441 

442 #### Для AWS Bedrock

443 

444 1. **Для аутентификации AWS**:

445 * `AWS_ROLE_TO_ASSUME`

446 

447 2. **Для GitHub App (если используете свой app)**:

448 * `APP_ID`: ID вашего GitHub App

449 * `APP_PRIVATE_KEY`: Содержимое приватного ключа (.pem)

450 </Step>

451 

452 <Step title="Создайте файлы рабочего процесса">

453 Создайте файлы рабочего процесса GitHub Actions, которые интегрируются с вашим облачным провайдером. Примеры ниже показывают полные конфигурации как для AWS Bedrock, так и для Google Vertex AI:

454 

455 <AccordionGroup>

456 <Accordion title="AWS Bedrock workflow">

457 **Предварительные требования:**

458 

459 * Доступ AWS Bedrock включён с разрешениями модели Claude

460 * GitHub настроен как OIDC поставщик идентификации в AWS

461 * IAM роль с разрешениями Bedrock, которая доверяет GitHub Actions

462 

463 **Требуемые секреты GitHub:**

464 

465 | Имя секрета | Описание |

466 | -------------------- | -------------------------------------------------------- |

467 | `AWS_ROLE_TO_ASSUME` | ARN IAM роли для доступа к Bedrock |

468 | `APP_ID` | ID вашего GitHub App (из параметров приложения) |

469 | `APP_PRIVATE_KEY` | Приватный ключ, который вы создали для вашего GitHub App |

470 

471 ```yaml theme={null}

472 name: Claude PR Action

473 

474 permissions:

475 contents: write

476 pull-requests: write

477 issues: write

478 id-token: write

479 

480 on:

481 issue_comment:

482 types: [created]

483 pull_request_review_comment:

484 types: [created]

485 issues:

486 types: [opened, assigned]

487 

488 jobs:

489 claude-pr:

490 if: |

491 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

492 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

493 (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))

494 runs-on: ubuntu-latest

495 env:

496 AWS_REGION: us-west-2

497 steps:

498 - name: Checkout repository

499 uses: actions/checkout@v4

500 

501 - name: Generate GitHub App token

502 id: app-token

503 uses: actions/create-github-app-token@v2

504 with:

505 app-id: ${{ secrets.APP_ID }}

506 private-key: ${{ secrets.APP_PRIVATE_KEY }}

507 

508 - name: Configure AWS Credentials (OIDC)

509 uses: aws-actions/configure-aws-credentials@v4

510 with:

511 role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}

512 aws-region: us-west-2

513 

514 - uses: anthropics/claude-code-action@v1

515 with:

516 github_token: ${{ steps.app-token.outputs.token }}

517 use_bedrock: "true"

518 claude_args: '--model us.anthropic.claude-sonnet-4-6 --max-turns 10'

519 ```

520 

521 <Tip>

522 Формат ID модели для Bedrock включает префикс региона (например, `us.anthropic.claude-sonnet-4-6`).

523 </Tip>

524 </Accordion>

525 

526 <Accordion title="Google Vertex AI workflow">

527 **Предварительные требования:**

528 

529 * Vertex AI API включён в вашем проекте GCP

530 * Workload Identity Federation настроена для GitHub

531 * Сервисный аккаунт с разрешениями Vertex AI

532 

533 **Требуемые секреты GitHub:**

534 

535 | Имя секрета | Описание |

536 | -------------------------------- | ------------------------------------------------------------------ |

537 | `GCP_WORKLOAD_IDENTITY_PROVIDER` | Имя ресурса поставщика рабочей идентификации |

538 | `GCP_SERVICE_ACCOUNT` | Адрес электронной почты сервисного аккаунта с доступом к Vertex AI |

539 | `APP_ID` | ID вашего GitHub App (из параметров приложения) |

540 | `APP_PRIVATE_KEY` | Приватный ключ, который вы создали для вашего GitHub App |

541 

542 ```yaml theme={null}

543 name: Claude PR Action

544 

545 permissions:

546 contents: write

547 pull-requests: write

548 issues: write

549 id-token: write

550 

551 on:

552 issue_comment:

553 types: [created]

554 pull_request_review_comment:

555 types: [created]

556 issues:

557 types: [opened, assigned]

558 

559 jobs:

560 claude-pr:

561 if: |

562 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||

563 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||

564 (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))

565 runs-on: ubuntu-latest

566 steps:

567 - name: Checkout repository

568 uses: actions/checkout@v4

569 

570 - name: Generate GitHub App token

571 id: app-token

572 uses: actions/create-github-app-token@v2

573 with:

574 app-id: ${{ secrets.APP_ID }}

575 private-key: ${{ secrets.APP_PRIVATE_KEY }}

576 

577 - name: Authenticate to Google Cloud

578 id: auth

579 uses: google-github-actions/auth@v2

580 with:

581 workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}

582 service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}

583 

584 - uses: anthropics/claude-code-action@v1

585 with:

586 github_token: ${{ steps.app-token.outputs.token }}

587 trigger_phrase: "@claude"

588 use_vertex: "true"

589 claude_args: '--model claude-sonnet-4-5@20250929 --max-turns 10'

590 env:

591 ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}

592 CLOUD_ML_REGION: us-east5

593 VERTEX_REGION_CLAUDE_4_5_SONNET: us-east5

594 ```

595 

596 <Tip>

597 ID проекта автоматически извлекается из шага аутентификации Google Cloud, поэтому вам не нужно жёстко кодировать его.

598 </Tip>

599 </Accordion>

600 </AccordionGroup>

601 </Step>

602</Steps>

603 

604## Troubleshooting

605 

606### Claude не отвечает на команды @claude

607 

608Проверьте, что GitHub App установлен правильно, убедитесь, что рабочие процессы включены, убедитесь, что API ключ установлен в секретах репозитория, и подтвердите, что комментарий содержит `@claude` (не `/claude`).

609 

610### CI не запускается на коммитах Claude

611 

612Убедитесь, что вы используете GitHub App или пользовательское приложение (не пользователя Actions), проверьте, что триггеры рабочего процесса включают необходимые события, и проверьте, что разрешения приложения включают триггеры CI.

613 

614### Ошибки аутентификации

615 

616Подтвердите, что API ключ действителен и имеет достаточные разрешения. Для Bedrock/Vertex проверьте конфигурацию учётных данных и убедитесь, что секреты правильно названы в рабочих процессах.

617 

618## Расширенная конфигурация

619 

620### Параметры действия

621 

622Claude Code Action v1 использует упрощённую конфигурацию:

623 

624| Параметр | Описание | Требуется |

625| ------------------- | ----------------------------------------------------------------- | --------- |

626| `prompt` | Инструкции для Claude (простой текст или имя [skill](/ru/skills)) | Нет\* |

627| `claude_args` | Аргументы CLI, передаваемые в Claude Code | Нет |

628| `anthropic_api_key` | Claude API ключ | Да\*\* |

629| `github_token` | GitHub токен для доступа к API | Нет |

630| `trigger_phrase` | Пользовательская фраза триггера (по умолчанию: "@claude") | Нет |

631| `use_bedrock` | Использовать AWS Bedrock вместо Claude API | Нет |

632| `use_vertex` | Использовать Google Vertex AI вместо Claude API | Нет |

633 

634\*Prompt опционален — при пропуске для комментариев issue/PR, Claude отвечает на фразу триггера\

635\*\*Требуется для прямого Claude API, не требуется для Bedrock/Vertex

636 

637#### Передайте аргументы CLI

638 

639Параметр `claude_args` принимает любые аргументы Claude Code CLI:

640 

641```yaml theme={null}

642claude_args: "--max-turns 5 --model claude-sonnet-4-6 --mcp-config /path/to/config.json"

643```

644 

645Распространённые аргументы:

646 

647* `--max-turns`: Максимальное количество ходов разговора (по умолчанию: 10)

648* `--model`: Модель для использования (например, `claude-sonnet-4-6`)

649* `--mcp-config`: Путь к конфигурации MCP

650* `--allowedTools`: Список разрешённых инструментов, разделённый запятыми. Также работает псевдоним `--allowed-tools`.

651* `--debug`: Включить вывод отладки

652 

653### Альтернативные методы интеграции

654 

655Хотя команда `/install-github-app` является рекомендуемым подходом, вы также можете:

656 

657* **Пользовательский GitHub App**: Для организаций, нуждающихся в фирменных именах пользователей или пользовательских потоках аутентификации. Создайте свой собственный GitHub App с необходимыми разрешениями (contents, issues, pull requests) и используйте действие actions/create-github-app-token для генерации токенов в ваших рабочих процессах.

658* **Ручные GitHub Actions**: Прямая конфигурация рабочего процесса для максимальной гибкости

659* **Конфигурация MCP**: Динамическая загрузка серверов Model Context Protocol

660 

661См. [документацию Claude Code Action](https://github.com/anthropics/claude-code-action/blob/main/docs) для получения подробных руководств по аутентификации, безопасности и расширенной конфигурации.

662 

663### Настройка поведения Claude

664 

665Вы можете настроить поведение Claude двумя способами:

666 

6671. **CLAUDE.md**: Определите стандарты кодирования, критерии проверки и правила, специфичные для проекта, в файле `CLAUDE.md` в корне вашего репозитория. Claude будет следовать этим рекомендациям при создании PR и ответе на запросы. Ознакомьтесь с нашей [документацией Memory](/ru/memory) для получения дополнительной информации.

6682. **Пользовательские prompts**: Используйте параметр `prompt` в файле рабочего процесса для предоставления инструкций, специфичных для рабочего процесса. Это позволяет вам настроить поведение Claude для различных рабочих процессов или задач.

669 

670Claude будет следовать этим рекомендациям при создании PR и ответе на запросы.

gitlab-ci-cd.md +466 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Claude Code GitLab CI/CD

6 

7> Узнайте об интеграции Claude Code в ваш рабочий процесс разработки с GitLab CI/CD

8 

9<Info>

10 Claude Code для GitLab CI/CD в настоящее время находится в бета-версии. Функции и возможности могут развиваться по мере совершенствования опыта.

11 

12 Эта интеграция поддерживается GitLab. Для получения поддержки см. следующий [вопрос GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/573776).

13</Info>

14 

15<Note>

16 Эта интеграция построена на основе [Claude Code CLI и Agent SDK](/ru/agent-sdk/overview), обеспечивая программное использование Claude в ваших заданиях CI/CD и пользовательских рабочих процессах автоматизации.

17</Note>

18 

19## Почему использовать Claude Code с GitLab?

20 

21* **Мгновенное создание MR**: Опишите, что вам нужно, и Claude предложит полный MR с изменениями и объяснением

22* **Автоматизированная реализация**: Превратите проблемы в рабочий код с помощью одной команды или упоминания

23* **Осведомленность о проекте**: Claude следует вашим рекомендациям `CLAUDE.md` и существующим шаблонам кода

24* **Простая настройка**: Добавьте одно задание в `.gitlab-ci.yml` и замаскированную переменную CI/CD

25* **Готово для предприятия**: Выберите Claude API, Amazon Bedrock или Google Vertex AI для соответствия требованиям к месторасположению данных и закупкам

26* **Безопасно по умолчанию**: Работает на ваших GitLab runners с вашей защитой ветвей и утверждениями

27 

28## Как это работает

29 

30Claude Code использует GitLab CI/CD для запуска задач AI в изолированных заданиях и фиксации результатов обратно через MR:

31 

321. **Оркестровка, управляемая событиями**: GitLab прослушивает выбранные вами триггеры (например, комментарий, упоминающий `@claude` в проблеме, MR или потоке рецензирования). Задание собирает контекст из потока и репозитория, создает подсказки из этого ввода и запускает Claude Code.

33 

342. **Абстракция поставщика**: Используйте поставщика, который подходит для вашей среды:

35 * Claude API (SaaS)

36 * Amazon Bedrock (доступ на основе IAM, опции между регионами)

37 * Google Vertex AI (собственный GCP, Workload Identity Federation)

38 

393. **Изолированное выполнение**: Каждое взаимодействие выполняется в контейнере со строгими правилами сети и файловой системы. Claude Code обеспечивает разрешения с областью действия рабочего пространства для ограничения записей. Каждое изменение проходит через MR, чтобы рецензенты видели diff и применялись утверждения.

40 

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

42 

43## Что может делать Claude?

44 

45Claude Code обеспечивает мощные рабочие процессы CI/CD, которые преобразуют способ работы с кодом:

46 

47* Создание и обновление MR из описаний проблем или комментариев

48* Анализ регрессий производительности и предложение оптимизаций

49* Прямая реализация функций в ветви, затем открытие MR

50* Исправление ошибок и регрессий, выявленных тестами или комментариями

51* Ответ на последующие комментарии для итерации по запрошенным изменениям

52 

53## Настройка

54 

55### Быстрая настройка

56 

57Самый быстрый способ начать работу — добавить минимальное задание в ваш `.gitlab-ci.yml` и установить ваш ключ API как замаскированную переменную.

58 

591. **Добавьте замаскированную переменную CI/CD**

60 * Перейдите в **Settings** → **CI/CD** → **Variables**

61 * Добавьте `ANTHROPIC_API_KEY` (замаскирована, защищена по мере необходимости)

62 

632. **Добавьте задание Claude в `.gitlab-ci.yml`**

64 

65```yaml theme={null}

66stages:

67 - ai

68 

69claude:

70 stage: ai

71 image: node:24-alpine3.21

72 # Отрегулируйте правила в соответствии с тем, как вы хотите запустить задание:

73 # - ручные запуски

74 # - события merge request

75 # - веб/API триггеры, когда комментарий содержит '@claude'

76 rules:

77 - if: '$CI_PIPELINE_SOURCE == "web"'

78 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

79 variables:

80 GIT_STRATEGY: fetch

81 before_script:

82 - apk update

83 - apk add --no-cache git curl bash

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

85 script:

86 # Опционально: запустите сервер GitLab MCP, если ваша настройка его предоставляет

87 - /bin/gitlab-mcp-server || true

88 # Используйте переменные AI_FLOW_* при вызове через веб/API триггеры с полезными нагрузками контекста

89 - echo "$AI_FLOW_INPUT for $AI_FLOW_CONTEXT on $AI_FLOW_EVENT"

90 - >

91 claude

92 -p "${AI_FLOW_INPUT:-'Review this MR and implement the requested changes'}"

93 --permission-mode acceptEdits

94 --allowedTools "Bash Read Edit Write mcp__gitlab"

95 --debug

96```

97 

98После добавления задания и переменной `ANTHROPIC_API_KEY` протестируйте, запустив задание вручную из **CI/CD** → **Pipelines**, или запустите его из MR, чтобы позволить Claude предложить обновления в ветви и открыть MR при необходимости.

99 

100<Note>

101 Для запуска на Amazon Bedrock или Google Vertex AI вместо Claude API см. раздел [Использование с Amazon Bedrock и Google Vertex AI](#using-with-amazon-bedrock--google-vertex-ai) ниже для настройки аутентификации и окружения.

102</Note>

103 

104### Ручная настройка (рекомендуется для производства)

105 

106Если вы предпочитаете более контролируемую настройку или вам нужны поставщики для предприятия:

107 

1081. **Настройте доступ поставщика**:

109 * **Claude API**: Создайте и сохраните `ANTHROPIC_API_KEY` как замаскированную переменную CI/CD

110 * **Amazon Bedrock**: **Настройте GitLab** → **AWS OIDC** и создайте роль IAM для Bedrock

111 * **Google Vertex AI**: **Настройте Workload Identity Federation для GitLab** → **GCP**

112 

1132. **Добавьте учетные данные проекта для операций GitLab API**:

114 * Используйте `CI_JOB_TOKEN` по умолчанию или создайте Project Access Token с областью `api`

115 * Сохраните как `GITLAB_ACCESS_TOKEN` (замаскирована), если используете PAT

116 

1173. **Добавьте задание Claude в `.gitlab-ci.yml`** (см. примеры ниже)

118 

1194. **(Опционально) Включите триггеры, управляемые упоминаниями**:

120 * Добавьте webhook проекта для "Comments (notes)" к вашему прослушивателю событий (если вы его используете)

121 * Попросите прослушиватель вызвать API триггера конвейера с переменными, такими как `AI_FLOW_INPUT` и `AI_FLOW_CONTEXT`, когда комментарий содержит `@claude`

122 

123## Примеры использования

124 

125### Превратите проблемы в MR

126 

127В комментарии проблемы:

128 

129```text theme={null}

130@claude implement this feature based on the issue description

131```

132 

133Claude анализирует проблему и кодовую базу, записывает изменения в ветви и открывает MR для рецензирования.

134 

135### Получите помощь в реализации

136 

137В обсуждении MR:

138 

139```text theme={null}

140@claude suggest a concrete approach to cache the results of this API call

141```

142 

143Claude предлагает изменения, добавляет код с соответствующим кешированием и обновляет MR.

144 

145### Быстро исправляйте ошибки

146 

147В комментарии проблемы или MR:

148 

149```text theme={null}

150@claude fix the TypeError in the user dashboard component

151```

152 

153Claude находит ошибку, реализует исправление и обновляет ветвь или открывает новый MR.

154 

155## Использование с Amazon Bedrock и Google Vertex AI

156 

157Для корпоративных сред вы можете запустить Claude Code полностью на вашей облачной инфраструктуре с тем же опытом разработчика.

158 

159<Tabs>

160 <Tab title="Amazon Bedrock">

161 ### Предварительные требования

162 

163 Перед настройкой Claude Code с Amazon Bedrock вам потребуется:

164 

165 1. Учетная запись AWS с доступом Amazon Bedrock к желаемым моделям Claude

166 2. GitLab, настроенный как поставщик идентификации OIDC в AWS IAM

167 3. Роль IAM с разрешениями Bedrock и политикой доверия, ограниченной вашим проектом/ссылками GitLab

168 4. Переменные GitLab CI/CD для предположения роли:

169 * `AWS_ROLE_TO_ASSUME` (ARN роли)

170 * `AWS_REGION` (регион Bedrock)

171 

172 ### Инструкции по настройке

173 

174 Настройте AWS, чтобы позволить заданиям GitLab CI предположить роль IAM через OIDC (без статических ключей).

175 

176 **Требуемая настройка:**

177 

178 1. Включите Amazon Bedrock и запросите доступ к целевым моделям Claude

179 2. Создайте поставщика IAM OIDC для GitLab, если он еще не присутствует

180 3. Создайте роль IAM, доверяющую поставщику GitLab OIDC, ограниченную вашим проектом и защищенными ссылками

181 4. Прикрепите разрешения с наименьшими привилегиями для API вызова Bedrock

182 

183 **Требуемые значения для сохранения в переменных CI/CD:**

184 

185 * `AWS_ROLE_TO_ASSUME`

186 * `AWS_REGION`

187 

188 Добавьте переменные в Settings → CI/CD → Variables:

189 

190 ```yaml theme={null}

191 # Для Amazon Bedrock:

192 - AWS_ROLE_TO_ASSUME

193 - AWS_REGION

194 ```

195 

196 Используйте пример задания Amazon Bedrock выше для обмена токена задания GitLab на временные учетные данные AWS во время выполнения.

197 </Tab>

198 

199 <Tab title="Google Vertex AI">

200 ### Предварительные требования

201 

202 Перед настройкой Claude Code с Google Vertex AI вам потребуется:

203 

204 1. Проект Google Cloud с:

205 * Включенным API Vertex AI

206 * Настроенной Workload Identity Federation для доверия GitLab OIDC

207 2. Выделенная учетная запись сервиса только с требуемыми ролями Vertex AI

208 3. Переменные GitLab CI/CD для WIF:

209 * `GCP_WORKLOAD_IDENTITY_PROVIDER` (полное имя ресурса)

210 * `GCP_SERVICE_ACCOUNT` (адрес электронной почты учетной записи сервиса)

211 

212 ### Инструкции по настройке

213 

214 Настройте Google Cloud, чтобы позволить заданиям GitLab CI олицетворять учетную запись сервиса через Workload Identity Federation.

215 

216 **Требуемая настройка:**

217 

218 1. Включите IAM Credentials API, STS API и Vertex AI API

219 2. Создайте пул Workload Identity и поставщика для GitLab OIDC

220 3. Создайте выделенную учетную запись сервиса с ролями Vertex AI

221 4. Предоставьте основному принципу WIF разрешение на олицетворение учетной записи сервиса

222 

223 **Требуемые значения для сохранения в переменных CI/CD:**

224 

225 * `GCP_WORKLOAD_IDENTITY_PROVIDER`

226 * `GCP_SERVICE_ACCOUNT`

227 

228 Добавьте переменные в Settings → CI/CD → Variables:

229 

230 ```yaml theme={null}

231 # Для Google Vertex AI:

232 - GCP_WORKLOAD_IDENTITY_PROVIDER

233 - GCP_SERVICE_ACCOUNT

234 - CLOUD_ML_REGION (например, us-east5)

235 ```

236 

237 Используйте пример задания Google Vertex AI выше для аутентификации без сохранения ключей.

238 </Tab>

239</Tabs>

240 

241## Примеры конфигурации

242 

243Ниже приведены готовые к использованию фрагменты, которые вы можете адаптировать к вашему конвейеру.

244 

245### Базовый .gitlab-ci.yml (Claude API)

246 

247```yaml theme={null}

248stages:

249 - ai

250 

251claude:

252 stage: ai

253 image: node:24-alpine3.21

254 rules:

255 - if: '$CI_PIPELINE_SOURCE == "web"'

256 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

257 variables:

258 GIT_STRATEGY: fetch

259 before_script:

260 - apk update

261 - apk add --no-cache git curl bash

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

263 script:

264 - /bin/gitlab-mcp-server || true

265 - >

266 claude

267 -p "${AI_FLOW_INPUT:-'Summarize recent changes and suggest improvements'}"

268 --permission-mode acceptEdits

269 --allowedTools "Bash Read Edit Write mcp__gitlab"

270 --debug

271 # Claude Code будет использовать ANTHROPIC_API_KEY из переменных CI/CD

272```

273 

274### Пример задания Amazon Bedrock (OIDC)

275 

276**Предварительные требования:**

277 

278* Amazon Bedrock включен с доступом к выбранной модели Claude

279* GitLab OIDC настроен в AWS с ролью, которая доверяет вашему проекту GitLab и ссылкам

280* Роль IAM с разрешениями Bedrock (рекомендуется наименьшие привилегии)

281 

282**Требуемые переменные CI/CD:**

283 

284* `AWS_ROLE_TO_ASSUME`: ARN роли IAM для доступа к Bedrock

285* `AWS_REGION`: Регион Bedrock (например, `us-west-2`)

286 

287```yaml theme={null}

288claude-bedrock:

289 stage: ai

290 image: node:24-alpine3.21

291 rules:

292 - if: '$CI_PIPELINE_SOURCE == "web"'

293 before_script:

294 - apk add --no-cache bash curl jq git python3 py3-pip

295 - pip install --no-cache-dir awscli

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

297 # Обменяйте токен GitLab OIDC на учетные данные AWS

298 - export AWS_WEB_IDENTITY_TOKEN_FILE="${CI_JOB_JWT_FILE:-/tmp/oidc_token}"

299 - if [ -n "${CI_JOB_JWT_V2}" ]; then printf "%s" "$CI_JOB_JWT_V2" > "$AWS_WEB_IDENTITY_TOKEN_FILE"; fi

300 - >

301 aws sts assume-role-with-web-identity

302 --role-arn "$AWS_ROLE_TO_ASSUME"

303 --role-session-name "gitlab-claude-$(date +%s)"

304 --web-identity-token "file://$AWS_WEB_IDENTITY_TOKEN_FILE"

305 --duration-seconds 3600 > /tmp/aws_creds.json

306 - export AWS_ACCESS_KEY_ID="$(jq -r .Credentials.AccessKeyId /tmp/aws_creds.json)"

307 - export AWS_SECRET_ACCESS_KEY="$(jq -r .Credentials.SecretAccessKey /tmp/aws_creds.json)"

308 - export AWS_SESSION_TOKEN="$(jq -r .Credentials.SessionToken /tmp/aws_creds.json)"

309 script:

310 - /bin/gitlab-mcp-server || true

311 - >

312 claude

313 -p "${AI_FLOW_INPUT:-'Implement the requested changes and open an MR'}"

314 --permission-mode acceptEdits

315 --allowedTools "Bash Read Edit Write mcp__gitlab"

316 --debug

317 variables:

318 AWS_REGION: "us-west-2"

319```

320 

321<Note>

322 Идентификаторы моделей для Bedrock включают префиксы, специфичные для региона (например, `us.anthropic.claude-sonnet-4-6`). Передайте желаемую модель через конфигурацию задания или подсказку, если ваш рабочий процесс это поддерживает.

323</Note>

324 

325### Пример задания Google Vertex AI (Workload Identity Federation)

326 

327**Предварительные требования:**

328 

329* API Vertex AI включен в вашем проекте GCP

330* Workload Identity Federation настроена для доверия GitLab OIDC

331* Учетная запись сервиса с разрешениями Vertex AI

332 

333**Требуемые переменные CI/CD:**

334 

335* `GCP_WORKLOAD_IDENTITY_PROVIDER`: Полное имя ресурса поставщика

336* `GCP_SERVICE_ACCOUNT`: Адрес электронной почты учетной записи сервиса

337* `CLOUD_ML_REGION`: Регион Vertex (например, `us-east5`)

338 

339```yaml theme={null}

340claude-vertex:

341 stage: ai

342 image: gcr.io/google.com/cloudsdktool/google-cloud-cli:slim

343 rules:

344 - if: '$CI_PIPELINE_SOURCE == "web"'

345 before_script:

346 - apt-get update && apt-get install -y git && apt-get clean

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

348 # Аутентифицируйтесь в Google Cloud через WIF (без загруженных ключей)

349 - >

350 gcloud auth login --cred-file=<(cat <<EOF

351 {

352 "type": "external_account",

353 "audience": "${GCP_WORKLOAD_IDENTITY_PROVIDER}",

354 "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",

355 "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/${GCP_SERVICE_ACCOUNT}:generateAccessToken",

356 "token_url": "https://sts.googleapis.com/v1/token"

357 }

358 EOF

359 )

360 - gcloud config set project "$(gcloud projects list --format='value(projectId)' --filter="name:${CI_PROJECT_NAMESPACE}" | head -n1)" || true

361 script:

362 - /bin/gitlab-mcp-server || true

363 - >

364 CLOUD_ML_REGION="${CLOUD_ML_REGION:-us-east5}"

365 claude

366 -p "${AI_FLOW_INPUT:-'Review and update code as requested'}"

367 --permission-mode acceptEdits

368 --allowedTools "Bash Read Edit Write mcp__gitlab"

369 --debug

370 variables:

371 CLOUD_ML_REGION: "us-east5"

372```

373 

374<Note>

375 С Workload Identity Federation вам не нужно сохранять ключи учетной записи сервиса. Используйте условия доверия, специфичные для репозитория, и учетные записи сервиса с наименьшими привилегиями.

376</Note>

377 

378## Лучшие практики

379 

380### Конфигурация CLAUDE.md

381 

382Создайте файл `CLAUDE.md` в корне репозитория, чтобы определить стандарты кодирования, критерии рецензирования и правила, специфичные для проекта. Claude читает этот файл во время запусков и следует вашим соглашениям при предложении изменений.

383 

384### Соображения безопасности

385 

386**Никогда не фиксируйте ключи API или учетные данные облака в вашем репозитории**. Всегда используйте переменные GitLab CI/CD:

387 

388* Добавьте `ANTHROPIC_API_KEY` как замаскированную переменную (и защитите ее при необходимости)

389* Используйте OIDC, специфичный для поставщика, где возможно (без долгоживущих ключей)

390* Ограничьте разрешения задания и исходящий трафик сети

391* Рецензируйте MR Claude, как любого другого участника

392 

393### Оптимизация производительности

394 

395* Держите `CLAUDE.md` сосредоточенным и кратким

396* Предоставляйте четкие описания проблем/MR, чтобы снизить количество итераций

397* Настройте разумные тайм-ауты заданий, чтобы избежать неконтролируемых запусков

398* Кешируйте npm и установки пакетов на runners, где возможно

399 

400### Затраты CI

401 

402При использовании Claude Code с GitLab CI/CD помните о связанных затратах:

403 

404* **Время GitLab Runner**:

405 * Claude работает на ваших GitLab runners и потребляет минуты вычислений

406 * Подробности о выставлении счетов за runner см. в плане GitLab

407 

408* **Затраты на API**:

409 * Каждое взаимодействие Claude потребляет токены на основе размера подсказки и ответа

410 * Использование токенов варьируется в зависимости от сложности задачи и размера кодовой базы

411 * Подробности см. в [ценообразовании Anthropic](https://platform.claude.com/docs/ru/about-claude/pricing)

412 

413* **Советы по оптимизации затрат**:

414 * Используйте конкретные команды `@claude` для снижения ненужных ходов

415 * Установите соответствующие значения `max_turns` и тайм-аут задания

416 * Ограничьте параллелизм для управления параллельными запусками

417 

418## Безопасность и управление

419 

420* Каждое задание выполняется в изолированном контейнере с ограниченным доступом в сеть

421* Изменения Claude проходят через MR, чтобы рецензенты видели каждый diff

422* Правила защиты ветвей и утверждения применяются к коду, созданному AI

423* Claude Code использует разрешения с областью действия рабочего пространства для ограничения записей

424* Затраты остаются под вашим контролем, потому что вы приносите свои собственные учетные данные поставщика

425 

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

427 

428### Claude не отвечает на команды @claude

429 

430* Убедитесь, что ваш конвейер запускается (вручную, событие MR или через прослушиватель событий/webhook примечания)

431* Убедитесь, что переменные CI/CD (`ANTHROPIC_API_KEY` или параметры облачного поставщика) присутствуют и не замаскированы

432* Проверьте, что комментарий содержит `@claude` (не `/claude`) и что ваш триггер упоминания настроен

433 

434### Задание не может писать комментарии или открывать MR

435 

436* Убедитесь, что `CI_JOB_TOKEN` имеет достаточные разрешения для проекта, или используйте Project Access Token с областью `api`

437* Проверьте, что инструмент `mcp__gitlab` включен в `--allowedTools`

438* Подтвердите, что задание выполняется в контексте MR или имеет достаточный контекст через переменные `AI_FLOW_*`

439 

440### Ошибки аутентификации

441 

442* **Для Claude API**: Подтвердите, что `ANTHROPIC_API_KEY` действителен и не истек

443* **Для Bedrock/Vertex**: Проверьте конфигурацию OIDC/WIF, олицетворение роли и имена секретов; подтвердите доступность региона и модели

444 

445## Расширенная конфигурация

446 

447### Общие параметры и переменные

448 

449Claude Code поддерживает эти часто используемые входные данные:

450 

451* `prompt` / `prompt_file`: Предоставьте инструкции встроенно (`-p`) или через файл

452* `max_turns`: Ограничьте количество взаимных итераций

453* `timeout_minutes`: Ограничьте общее время выполнения

454* `ANTHROPIC_API_KEY`: Требуется для Claude API (не используется для Bedrock/Vertex)

455* Окружение, специфичное для поставщика: `AWS_REGION`, переменные проекта/региона для Vertex

456 

457<Note>

458 Точные флаги и параметры могут варьироваться в зависимости от версии `@anthropic-ai/claude-code`. Запустите `claude --help` в вашем задании, чтобы увидеть поддерживаемые опции.

459</Note>

460 

461### Настройка поведения Claude

462 

463Вы можете направлять Claude двумя основными способами:

464 

4651. **CLAUDE.md**: Определите стандарты кодирования, требования безопасности и соглашения проекта. Claude читает это во время запусков и следует вашим правилам.

4662. **Пользовательские подсказки**: Передайте инструкции, специфичные для задачи, через `prompt`/`prompt_file` в задании. Используйте разные подсказки для разных заданий (например, рецензирование, реализация, рефакторинг).

glossary.md +307 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Глоссарий

6 

7> Определения терминологии Claude Code. Узнайте, что означают agentic loop, compaction, CLAUDE.md, hooks, subagents, MCP и другие основные концепции.

8 

9Этот глоссарий определяет терминологию Claude Code. Каждая запись ссылается на страницу, где концепция рассматривается подробно. Для концепций уровня модели, таких как tokens, temperature и RAG, см. [глоссарий платформы](https://platform.claude.com/docs/ru/about-claude/glossary).

10 

11## A

12 

13### Agent teams

14 

15Несколько независимых сеансов Claude Code, координируемых лидером команды, с общим списком задач и обменом сообщениями между участниками. В отличие от [subagents](#subagent), которые работают в одном сеансе и отчитываются только перед родительским агентом, члены команды имеют собственное окно контекста, и вы можете взаимодействовать с любым из них напрямую. Agent teams являются экспериментальной функцией и должны быть включены путём установки `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`.

16 

17Подробнее: [Run agent teams](/ru/agent-teams)

18 

19### Agentic coding

20 

21Рабочий процесс, при котором ИИ может автономно читать файлы, выполнять команды и вносить изменения, пока вы наблюдаете, перенаправляете или отсутствуете, в отличие от чат-ассистентов на основе текста, которые только отвечают текстом, который вы должны применить сами. Claude Code является agentic, потому что он имеет [tools](#tool), которые позволяют ему действовать, а не только давать советы.

22 

23Подробнее: [How Claude Code works](/ru/how-claude-code-works)

24 

25### Agentic harness

26 

27Инструменты, управление контекстом и среда выполнения, которые превращают языковую модель в способного агента кодирования. Claude Code — это harness; Claude — это модель внутри него. Harness предоставляет доступ к файлам, выполнение shell-команд, управление разрешениями, загрузку памяти и цикл, который связывает действия вместе.

28 

29Подробнее: [How Claude Code works](/ru/how-claude-code-works)

30 

31### Agentic loop

32 

33Цикл, через который проходит Claude для каждой задачи: собрать контекст, предпринять действие, проверить результаты и повторять до завершения. Каждое использование tool возвращает информацию, которая информирует следующий шаг. Вы можете прервать цикл в любой момент для перенаправления. Большинство точек расширения, включая [hooks](#hook), [skills](#skill) и [MCP](#mcp-model-context-protocol), подключаются к определённым фазам этого цикла.

34 

35Подробнее: [How Claude Code works](/ru/how-claude-code-works#the-agentic-loop)

36 

37### Auto memory

38 

39Заметки, которые Claude пишет для себя на основе ваших исправлений и предпочтений, хранящиеся в репозитории git в `~/.claude/projects/`. Все worktrees одного репозитория используют один каталог auto memory. Первые 200 строк или 25 КБ индекса `MEMORY.md` загружаются в начале каждого сеанса. Auto memory — это написанный Claude аналог [CLAUDE.md](#claude-md), который вы пишете.

40 

41Подробнее: [Auto memory](/ru/memory#auto-memory)

42 

43### Auto mode

44 

45[permission mode](#permission-mode), где отдельная модель классификатора проверяет каждое действие в фоновом режиме вместо отображения вам запросов на одобрение. Классификатор блокирует расширение области, ненадёжную инфраструктуру и [prompt injection](#prompt-injection). Он никогда не видит результаты tool, поэтому внедрённые инструкции не могут повлиять на его решения. Auto mode — это исследовательский предпросмотр, доступный на планах Max, Team, Enterprise и API.

46 

47Подробнее: [Eliminate prompts with auto mode](/ru/permission-modes#eliminate-prompts-with-auto-mode)

48 

49## B

50 

51### Bare mode

52 

53Флаг запуска, `--bare`, который пропускает автоматическое обнаружение hooks, skills, plugins, MCP servers, auto memory и CLAUDE.md. Действуют только явно переданные флаги. Рекомендуется для CI и скриптовых вызовов, где вам нужно одинаковое поведение на разных машинах независимо от локальной конфигурации.

54 

55Подробнее: [Start faster with bare mode](/ru/headless#start-faster-with-bare-mode)

56 

57### Bundled skills

58 

59Основанные на prompt playbooks, включённые в Claude Code, такие как `/batch`, `/simplify`, `/debug` и `/loop`. В отличие от встроенных команд, которые выполняют фиксированную логику, bundled skills дают Claude подробный prompt и позволяют ему организовать работу, поэтому они могут порождать агентов, читать файлы и адаптироваться к вашей кодовой базе.

60 

61Подробнее: [Bundled skills](/ru/skills#bundled-skills)

62 

63## C

64 

65### Channel

66 

67[MCP server](#mcp-model-context-protocol), который отправляет события в ваш работающий сеанс, чтобы Claude мог реагировать на события, происходящие, пока вы отсутствуете в терминале. Channels могут быть двусторонними: Claude читает входящее событие и отвечает через тот же channel. Telegram, Discord и iMessage включены в исследовательский предпросмотр.

68 

69Подробнее: [Channels](/ru/channels)

70 

71### Checkpoint

72 

73Автоматический снимок вашего кода, сделанный перед каждым редактированием, которое делает Claude. Нажмите `Esc` дважды или запустите `/rewind`, чтобы восстановить код, разговор или оба на более ранний момент. Checkpoints локальны для сеанса, отделены от git и не отслеживают изменения, сделанные через Bash tool.

74 

75Подробнее: [Checkpointing](/ru/checkpointing)

76 

77### `.claude` directory

78 

79Каталог, из которого Claude Code читает конфигурацию, ограниченную проектом: settings, hooks, skills, subagents, rules и auto memory. Проект имеет `.claude/` в своём корне; ваши пользовательские значения по умолчанию находятся в `~/.claude/`.

80 

81Подробнее: [The `.claude` directory](/ru/claude-directory)

82 

83### CLAUDE.md

84 

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

86 

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

88 

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

90 

91### Command

92 

93Переиспользуемая инструкция, которую вы вызываете, введя `/name` в prompt. Встроенные команды, такие как `/clear`, `/model` и `/compact`, управляют сеансом. Вы можете определить свои собственные команды как файлы в `.claude/commands/` или установить их из [plugin](#plugin). [Skills](#skill) — это рекомендуемый способ упаковки многошаговых команд.

94 

95Подробнее: [Commands](/ru/commands) · [Skills](/ru/skills)

96 

97### Compaction

98 

99Автоматическое резюмирование вашего разговора, когда [context window](#context-window) приближается к своему пределу. Сначала очищаются старые выходы tool, затем разговор резюмируется. CLAUDE.md в корне проекта и auto memory сохраняются при compaction и перезагружаются с диска; инструкции, данные только в разговоре, могут быть потеряны. Запустите `/compact` для ручного запуска, опционально с фокусом, например `/compact focus on the API changes`.

100 

101Подробнее: [What survives compaction](/ru/context-window#what-survives-compaction) · [When context fills up](/ru/how-claude-code-works#when-context-fills-up)

102 

103### Context window

104 

105Рабочая память для сеанса, содержащая историю разговора, содержимое файлов, выходы команд, CLAUDE.md, auto memory, загруженные skills и системные инструкции. По мере работы контекст заполняется до [compaction](#compaction), который его резюмирует. Запустите `/context`, чтобы увидеть, что использует пространство. Для базовой концепции модели см. [глоссарий платформы](https://platform.claude.com/docs/ru/about-claude/glossary#context-window).

106 

107Подробнее: [Explore the context window](/ru/context-window)

108 

109## D

110 

111### Dispatch

112 

113Инициируемый телефоном маршрутизатор задач, который порождает сеанс Claude Code в приложении Desktop, когда вы отправляете задачу кодирования из мобильного приложения Claude. Ваш prompt маршрутизируется к правильному tool автоматически. Доступно на планах Pro и Max.

114 

115Подробнее: [Sessions from Dispatch](/ru/desktop#sessions-from-dispatch)

116 

117## E

118 

119### Effort level

120 

121Параметр, который управляет тем, сколько адаптивного бюджета thinking Claude использует на каждый ход. Более высокий effort означает больше thinking tokens и более глубокое рассуждение; более низкий effort быстрее и дешевле. Effort поддерживается на Opus 4.7, Opus 4.6 и Sonnet 4.6.

122 

123Подробнее: [Adjust effort level](/ru/model-config#adjust-effort-level)

124 

125### Extended thinking

126 

127Видимое пошаговое рассуждение, которое модель выполняет перед ответом. Вы можете ограничить thinking tokens с помощью `MAX_THINKING_TOKENS` или отрегулировать [effort level](#effort-level). Thinking появляется серым курсивным текстом в терминале.

128 

129Подробнее: [Use extended thinking](/ru/common-workflows#use-extended-thinking-thinking-mode)

130 

131## H

132 

133### Hook

134 

135Определённый пользователем обработчик, который выполняется автоматически в определённой точке жизненного цикла Claude Code, например перед запуском tool, после редактирования файла или при запуске сеанса. Обработчики могут быть shell-командой, HTTP endpoint, MCP tool, LLM prompt или subagent. Hooks являются детерминированными: они срабатывают в фиксированных точках жизненного цикла, а не по усмотрению модели.

136 

137Конфигурация hook имеет три уровня:

138 

139* **Hook event**: точка жизненного цикла

140* **Matcher**: фильтрует, какие события его срабатывают

141* **Hook handler**: что запускается

142 

143Подробнее: [Get started with hooks](/ru/hooks-guide) · [Hooks reference](/ru/hooks)

144 

145## M

146 

147### Managed settings

148 

149Файл settings, применяемый организацией IT или DevOps, размещённый в пути уровня ОС вне `~/.claude`. Пользователи не могут переопределять или исключать managed settings. Используйте это для политик безопасности, требований соответствия или стандартизированного инструментария на всём парке.

150 

151Подробнее: [Server-managed settings](/ru/server-managed-settings)

152 

153### MCP (Model Context Protocol)

154 

155Открытый стандарт для подключения инструментов ИИ к внешним источникам данных и сервисам. MCP servers дают Claude новые tools для Slack, Jira, баз данных, браузеров и сотен других интеграций. Вы подключаете servers через `/mcp` или добавляя их в `.mcp.json`. Для самого протокола см. [глоссарий платформы](https://platform.claude.com/docs/ru/about-claude/glossary#mcp-model-context-protocol).

156 

157Подробнее: [Model Context Protocol](/ru/mcp)

158 

159### MCP Tool Search

160 

161Механизм сохранения контекста, который откладывает схемы MCP tool до необходимости. Только имена tool загружаются при запуске; Claude получает полную схему по требованию, когда решает использовать определённый tool. Это предотвращает потребление большого контекста неиспользуемыми MCP servers.

162 

163Подробнее: [Scale with MCP Tool Search](/ru/mcp#scale-with-mcp-tool-search)

164 

165## N

166 

167### Non-interactive mode

168 

169Режим, который выполняет один prompt и выходит без разговорного сеанса, вызываемый с `-p` или `--print`. Используется для CI, скриптов и piping. [Agent SDK](/ru/agent-sdk/overview) — это эквивалент Python и TypeScript. Ранее называлось headless mode.

170 

171Подробнее: [Run Claude Code programmatically](/ru/headless)

172 

173## O

174 

175### Output style

176 

177Конфигурация, которая изменяет системный prompt Claude для изменения поведения ответа, тона или формата. Output styles отключают части системного prompt, специфичные для разработки программного обеспечения, в отличие от [CLAUDE.md](#claude-md), который доставляется как пользовательское сообщение, следующее за системным prompt. Встроенные стили включают Default, Explanatory и Learning.

178 

179Подробнее: [Output styles](/ru/output-styles)

180 

181## P

182 

183### Permission mode

184 

185Базовое поведение одобрения для сеанса. Переключайтесь с `Shift+Tab` в CLI или используйте селектор режима в VS Code, Desktop и claude.ai. Доступные режимы: `default`, `acceptEdits`, `plan`, `auto`, `dontAsk` и `bypassPermissions`.

186 

187Подробнее: [Choose a permission mode](/ru/permission-modes)

188 

189### Permission rule

190 

191Запись settings, которая разрешает, спрашивает или отрицает вызов tool на основе имени tool и шаблона аргумента. Правила оцениваются deny→ask→allow, первое совпадение побеждает. Permission rules — это детальные элементы управления, наложенные на более широкий [permission mode](#permission-mode).

192 

193Подробнее: [Configure permissions](/ru/permissions)

194 

195### Plan mode

196 

197[permission mode](#permission-mode), где Claude исследует и предлагает изменения без редактирования ваших исходных файлов. Он может читать, искать и выполнять команды исследования, затем представляет план для одобрения перед тем, как что-либо трогать. Войдите в plan mode с `/plan` или нажав `Shift+Tab`.

198 

199Подробнее: [Analyze before you edit with plan mode](/ru/permission-modes#analyze-before-you-edit-with-plan-mode)

200 

201### Plugin

202 

203Пакет skills, hooks, subagents и MCP servers, упакованный как единица установки. Plugin skills имеют пространство имён как `plugin-name:skill-name`, поэтому несколько plugins сосуществуют. Распределяйте plugins по командам через [marketplace](/ru/plugin-marketplaces).

204 

205Подробнее: [Plugins](/ru/plugins)

206 

207### Project trust

208 

209Одноразовый диалог, принимающий каталог перед загрузкой Claude Code его конфигурации. Trust gates автоматическую установку marketplace plugins и выполнение определённых проектом hooks. Доверие к каталогу означает, что его `.claude/settings.json`, `.mcp.json` и другие файлы конфигурации вступают в силу.

210 

211Подробнее: [The `.claude` directory](/ru/claude-directory)

212 

213### Prompt injection

214 

215Враждебные инструкции, встроенные в файл, веб-страницу или результат tool, которые пытаются перенаправить Claude к действиям, которые вы никогда не просили. Защита Claude Code включает систему разрешений, чёрные списки команд и проверку доверия. [Auto mode](#auto-mode) добавляет зонд на стороне сервера, который сканирует результаты tool на предмет подозрительного содержимого, и классификатор, который никогда не видит результаты tool, поэтому внедрённый текст не может повлиять на его решения об одобрении.

216 

217Подробнее: [Protect against prompt injection](/ru/security#protect-against-prompt-injection)

218 

219## R

220 

221### Remote Control

222 

223Способ продолжить локальный сеанс Claude Code с вашего телефона или браузера через claude.ai. Ваш код остаётся на вашей машине; только UI является удалённым. Отличается от Claude Code в веб-версии, который работает в облачной песочнице.

224 

225Подробнее: [Remote Control](/ru/remote-control)

226 

227### Rules

228 

229Модульные файлы инструкций в `.claude/rules/`, которые загружаются вместе с CLAUDE.md. Правило может быть ограничено по пути с помощью YAML frontmatter `paths:`, поэтому оно загружается только, когда Claude читает соответствующий файл, сохраняя контекст стройным до тех пор, пока он не станет релевантным.

230 

231Подробнее: [Organize rules with `.claude/rules/`](/ru/memory#organize-rules-with-claude/rules/)

232 

233## S

234 

235### Sandboxing

236 

237Изоляция файловой системы и сети уровня ОС для Bash tool. Команды выполняются внутри границы, которую вы определяете заранее, поэтому Claude может свободно работать внутри неё без запросов на одобрение для каждой команды. Sandboxing — это отдельный слой от [permission rules](#permission-rule).

238 

239Подробнее: [Sandboxing](/ru/sandboxing)

240 

241### Session

242 

243Разговор, привязанный к вашему текущему каталогу, с собственным независимым [context window](#context-window). Сеансы можно возобновить с помощью `claude -c`, разветвить с помощью `--fork-session` для сохранения истории под новым ID сеанса или запустить параллельно на разных терминалах. Запуск `/clear` начинает новый сеанс; предыдущий остаётся сохранённым и доступен через `/resume`. Стенограмма каждого сеанса хранится в `~/.claude/projects/`.

244 

245Подробнее: [Work with sessions](/ru/how-claude-code-works#work-with-sessions)

246 

247### Settings layers

248 

249Иерархия, из которой Claude Code читает конфигурацию, в порядке приоритета от наивысшего к наинизшему: [managed policy](#managed-settings), аргументы командной строки, локальные settings в `.claude/settings.local.json`, settings проекта в `.claude/settings.json`, затем пользовательские settings в `~/.claude/settings.json`. Массивы объединяются по слоям; скаляры на более высоком слое переопределяют более низкие.

250 

251Подробнее: [Settings files](/ru/settings#settings-files)

252 

253### Skill

254 

255Файл `SKILL.md`, содержащий инструкции, знания или рабочий процесс, который Claude добавляет в свой набор инструментов. Claude загружает skill автоматически, когда это релевантно, или вы вызываете его напрямую с помощью `/skill-name`. Skills следуют открытому стандарту Agent Skills; Claude Code расширяет его с помощью управления вызовом и выполнения subagent.

256 

257Skills — это рекомендуемый преемник пользовательских команд. Файл в `.claude/commands/deploy.md` и один в `.claude/skills/deploy/SKILL.md` оба создают `/deploy` и работают одинаково; существующие файлы команд продолжают работать.

258 

259Подробнее: [Extend Claude with skills](/ru/skills)

260 

261### Subagent

262 

263Специализированный ИИ-ассистент, который работает в собственном окне контекста с пользовательским системным prompt, определённым доступом к tool и независимыми разрешениями. Он работает над делегированной задачей и возвращает резюме в основной разговор. Используйте subagents, чтобы держать большие исследования вне вашего основного контекста или запускать параллельные исследования. Отличается от [agent teams](#agent-teams), где каждый агент — это полный независимый сеанс, с которым вы можете разговаривать напрямую.

264 

265Встроенные subagents включают Explore, Plan и общего назначения.

266 

267Подробнее: [Create custom subagents](/ru/sub-agents)

268 

269### Surface

270 

271Любое место, где вы получаете доступ к Claude Code: CLI, VS Code, JetBrains, Desktop или claude.ai. Все surfaces используют один и тот же engine, поэтому ваш CLAUDE.md, settings и skills работают одинаково на всех них. Slack и расширение Chrome — это интеграции, которые подключаются к surface, а не сами surfaces.

272 

273Подробнее: [Platforms and integrations](/ru/platforms)

274 

275## T

276 

277### Teleport

278 

279Команда, `/teleport`, которая вытягивает облачный сеанс Claude Code в ваш локальный терминал. Claude получает ветку, загружает историю разговора и возобновляет с последнего состояния веб-сеанса. Обратное направление — `--remote`, которое отправляет локальную задачу для запуска в веб-версии.

280 

281Подробнее: [From web to terminal](/ru/claude-code-on-the-web#from-web-to-terminal)

282 

283### Tool

284 

285Действие, которое может предпринять Claude: прочитать файл, отредактировать код, выполнить shell-команду, поискать в веб-сети, порождать subagent. Tools — это то, что делает Claude Code agentic. Без них Claude может только отвечать текстом. Каждое использование tool возвращает результат, который информирует следующее решение Claude в [agentic loop](#agentic-loop).

286 

287Подробнее: [Tools available to Claude](/ru/tools-reference)

288 

289## W

290 

291### Worktree isolation

292 

293Режим изоляции, который запускает Claude в отдельном git worktree в `.claude/worktrees/`, включаемый флагом `-w` или `isolation: worktree` в конфигурации subagent. Изменения остаются на отдельной ветке в отдельном каталоге, поэтому параллельные агенты не перезаписывают файлы друг друга.

294 

295Подробнее: [Run parallel sessions with git worktrees](/ru/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees)

296 

297***

298 

299## Deprecated and renamed terms

300 

301Эти термины появляются в старых документах, постах блога и содержимом сообщества. Используйте текущее имя при поиске на этом сайте.

302 

303| Old term | Now called | Notes |

304| --------------- | --------------------------------------------- | ------------------------------------ |

305| Headless mode | [Non-interactive mode](#non-interactive-mode) | Same `-p` flag, same behavior |

306| Custom commands | [Skills](#skill) | `.claude/commands/` files still work |

307| Slash commands | Commands | "Slash" dropped from product copy |

google-vertex-ai.md +387 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Claude Code на Google Vertex AI

6 

7> Узнайте о настройке Claude Code через Google Vertex AI, включая установку, конфигурацию IAM и устранение неполадок.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="vertex" />} />

190 

191## Предварительные требования

192 

193Перед настройкой Claude Code с Vertex AI убедитесь, что у вас есть:

194 

195* Учетная запись Google Cloud Platform (GCP) с включенной биллингом

196* Проект GCP с включенным API Vertex AI

197* Доступ к нужным моделям Claude (например, Claude Sonnet 4.6)

198* Установленный и настроенный Google Cloud SDK (`gcloud`)

199* Квота, выделенная в нужном регионе GCP

200 

201Чтобы войти со своими учетными данными Vertex AI, следуйте инструкциям [Вход с Vertex AI](#sign-in-with-vertex-ai) ниже. Чтобы развернуть Claude Code для команды, используйте шаги [ручной установки](#set-up-manually) и [закрепите версии ваших моделей](#5-pin-model-versions) перед развертыванием.

202 

203## Вход с Vertex AI

204 

205Если у вас есть учетные данные Google Cloud и вы хотите начать использовать Claude Code через Vertex AI, мастер входа проведет вас через этот процесс. Вы выполняете предварительные требования на стороне GCP один раз для каждого проекта; мастер обрабатывает сторону Claude Code.

206 

207<Note>

208 Мастер установки Vertex AI требует Claude Code v2.1.98 или более поздней версии. Запустите `claude --version` для проверки.

209</Note>

210 

211<Steps>

212 <Step title="Включите модели Claude в вашем проекте GCP">

213 [Включите API Vertex AI](#1-enable-vertex-ai-api) для вашего проекта, затем запросите доступ к моделям Claude, которые вам нужны, в [Vertex AI Model Garden](https://console.cloud.google.com/vertex-ai/model-garden). См. [Конфигурация IAM](#iam-configuration) для разрешений, которые требуются вашей учетной записи.

214 </Step>

215 

216 <Step title="Запустите Claude Code и выберите Vertex AI">

217 Запустите `claude`. В приглашении входа выберите **3rd-party platform**, затем **Google Vertex AI**.

218 </Step>

219 

220 <Step title="Следуйте подсказкам мастера">

221 Выберите способ аутентификации в Google Cloud: Application Default Credentials из `gcloud`, файл ключа сервисного аккаунта или учетные данные, уже находящиеся в вашей среде. Мастер обнаруживает ваш проект и регион, проверяет, какие модели Claude может вызывать ваш проект, и позволяет вам их закрепить. Результат сохраняется в блок `env` вашего [файла пользовательских настроек](/ru/settings), поэтому вам не нужно самостоятельно экспортировать переменные окружения.

222 </Step>

223</Steps>

224 

225После входа запустите `/setup-vertex` в любое время, чтобы снова открыть мастер и изменить учетные данные, проект, регион или закрепления моделей.

226 

227## Конфигурация региона

228 

229Claude Code поддерживает [глобальные](https://cloud.google.com/blog/products/ai-machine-learning/global-endpoint-for-claude-models-generally-available-on-vertex-ai), многорегиональные и региональные конечные точки Vertex AI. Установите `CLOUD_ML_REGION` на `global`, многорегиональное местоположение, такое как `eu` или `us`, или конкретный регион, такой как `us-east5`. Claude Code выбирает правильное имя хоста Vertex AI для каждой формы, включая хосты `aiplatform.eu.rep.googleapis.com` и `aiplatform.us.rep.googleapis.com` для многорегиональных местоположений.

230 

231<Note>

232 Vertex AI может не поддерживать модели Claude Code по умолчанию на каждом типе конечной точки. Доступность моделей варьируется в зависимости от [конкретных регионов](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations#genai-partner-models), многорегиональных местоположений и [глобальных конечных точек](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#supported_models). Вам может потребоваться переключиться на поддерживаемое местоположение или указать поддерживаемую модель.

233</Note>

234 

235## Ручная установка

236 

237Чтобы настроить Vertex AI через переменные окружения вместо мастера, например в CI или при развертывании в масштабах предприятия, следуйте приведенным ниже шагам.

238 

239### 1. Включите API Vertex AI

240 

241Включите API Vertex AI в вашем проекте GCP:

242 

243```bash theme={null}

244# Установите ID вашего проекта

245gcloud config set project YOUR-PROJECT-ID

246 

247# Включите API Vertex AI

248gcloud services enable aiplatform.googleapis.com

249```

250 

251### 2. Запросите доступ к модели

252 

253Запросите доступ к моделям Claude в Vertex AI:

254 

2551. Перейдите в [Vertex AI Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)

2562. Найдите модели "Claude"

2573. Запросите доступ к нужным моделям Claude (например, Claude Sonnet 4.6)

2584. Дождитесь одобрения (может занять 24-48 часов)

259 

260### 3. Настройте учетные данные GCP

261 

262Claude Code использует стандартную аутентификацию Google Cloud.

263 

264Для получения дополнительной информации см. [документацию по аутентификации Google Cloud](https://cloud.google.com/docs/authentication).

265 

266Claude Code версии 2.1.121 или позже поддерживает [Федерацию рабочих нагрузок на основе сертификатов X.509](https://cloud.google.com/iam/docs/workload-identity-federation-with-x509-certificates) через ту же цепочку Application Default Credentials. Установите `GOOGLE_APPLICATION_CREDENTIALS` на путь к файлу конфигурации учетных данных.

267 

268<Note>

269 При аутентификации Claude Code автоматически будет использовать ID проекта из переменной окружения `ANTHROPIC_VERTEX_PROJECT_ID`. Чтобы переопределить это, установите одну из этих переменных окружения: `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT` или `GOOGLE_APPLICATION_CREDENTIALS`.

270</Note>

271 

272### 4. Настройте Claude Code

273 

274Установите следующие переменные окружения:

275 

276```bash theme={null}

277# Включите интеграцию Vertex AI

278export CLAUDE_CODE_USE_VERTEX=1

279export CLOUD_ML_REGION=global

280export ANTHROPIC_VERTEX_PROJECT_ID=YOUR-PROJECT-ID

281 

282# Опционально: переопределите URL конечной точки Vertex для пользовательских конечных точек или шлюзов

283# export ANTHROPIC_VERTEX_BASE_URL=https://aiplatform.googleapis.com

284 

285# Опционально: отключите кэширование запросов, если необходимо

286export DISABLE_PROMPT_CACHING=1

287 

288# Опционально: запросите TTL кэша запросов на 1 час вместо стандартного 5-минутного

289export ENABLE_PROMPT_CACHING_1H=1

290 

291# Когда CLOUD_ML_REGION=global, переопределите регион для моделей, которые не поддерживают глобальные конечные точки

292export VERTEX_REGION_CLAUDE_HAIKU_4_5=us-east5

293export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1

294```

295 

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

297 

298[Кэширование запросов](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) включается автоматически. Чтобы отключить его, установите `DISABLE_PROMPT_CACHING=1`. Чтобы запросить TTL кэша на 1 час вместо стандартного 5-минутного, установите `ENABLE_PROMPT_CACHING_1H=1`; записи кэша с TTL на 1 час тарифицируются по более высокому тарифу. Для повышенных лимитов скорости обратитесь в поддержку Google Cloud. При использовании Vertex AI команды `/login` и `/logout` отключены, так как аутентификация обрабатывается через учетные данные Google Cloud.

299 

300[Поиск инструментов MCP](/ru/mcp#scale-with-mcp-tool-search) отключен по умолчанию на Vertex AI, так как конечная точка не принимает требуемый бета-заголовок. Вместо этого все определения инструментов MCP загружаются заранее. Чтобы включить эту функцию, установите `ENABLE_TOOL_SEARCH=true`.

301 

302### 5. Закрепите версии моделей

303 

304<Warning>

305 Закрепите конкретные версии моделей при развертывании для нескольких пользователей. Без закрепления псевдонимы моделей, такие как `sonnet` и `opus`, разрешаются в последнюю версию, которая может быть еще не включена в вашем проекте Vertex AI при выпуске Anthropic обновления. Claude Code [откатывается](#startup-model-checks) на предыдущую версию при запуске, когда последняя недоступна, но закрепление позволяет вам контролировать, когда ваши пользователи переходят на новую модель.

306</Warning>

307 

308Установите эти переменные окружения на конкретные ID моделей Vertex AI.

309 

310Без `ANTHROPIC_DEFAULT_OPUS_MODEL` псевдоним `opus` на Vertex разрешается в Opus 4.6. Установите его на ID Opus 4.7, чтобы использовать последнюю модель:

311 

312```bash theme={null}

313export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'

314export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'

315export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

316```

317 

318Для текущих и устаревших ID моделей см. [Обзор моделей](https://platform.claude.com/docs/en/about-claude/models/overview). Полный список переменных окружения см. в разделе [Конфигурация моделей](/ru/model-config#pin-models-for-third-party-deployments).

319 

320Claude Code использует эти модели по умолчанию, когда переменные закрепления не установлены:

321 

322| Тип модели | Значение по умолчанию |

323| :------------------- | :--------------------------- |

324| Основная модель | `claude-sonnet-4-5@20250929` |

325| Малая/быстрая модель | `claude-haiku-4-5@20251001` |

326 

327Для дальнейшей настройки моделей:

328 

329```bash theme={null}

330export ANTHROPIC_MODEL='claude-opus-4-7'

331export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

332```

333 

334## Проверки моделей при запуске

335 

336Когда Claude Code запускается с настроенным Vertex AI, он проверяет, что модели, которые он намеревается использовать, доступны в вашем проекте. Эта проверка требует Claude Code v2.1.98 или более поздней версии.

337 

338Если вы закрепили версию модели, которая старше текущего значения по умолчанию Claude Code, и ваш проект может вызывать более новую версию, Claude Code предлагает вам обновить закрепление. Принятие записывает новый ID модели в ваш [файл пользовательских настроек](/ru/settings) и перезапускает Claude Code. Отклонение запоминается до следующего изменения версии по умолчанию.

339 

340Если вы не закрепили модель и текущее значение по умолчанию недоступно в вашем проекте, Claude Code откатывается на предыдущую версию для текущего сеанса и показывает уведомление. Откат не сохраняется. Включите более новую модель в [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) или [закрепите версию](#5-pin-model-versions), чтобы сделать выбор постоянным.

341 

342## Конфигурация IAM

343 

344Назначьте требуемые разрешения IAM:

345 

346Роль `roles/aiplatform.user` включает требуемые разрешения:

347 

348* `aiplatform.endpoints.predict` - требуется для вызова модели и подсчета токенов

349 

350Для более строгих разрешений создайте пользовательскую роль только с указанными выше разрешениями.

351 

352Для получения дополнительной информации см. [документацию Vertex IAM](https://cloud.google.com/vertex-ai/docs/general/access-control).

353 

354<Note>

355 Создайте выделенный проект GCP для Claude Code, чтобы упростить отслеживание затрат и контроль доступа.

356</Note>

357 

358## Контекстное окно с 1M токенов

359 

360Claude Opus 4.7, Opus 4.6 и Sonnet 4.6 поддерживают [контекстное окно с 1M токенов](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) на Vertex AI. Claude Code автоматически включает расширенное контекстное окно при выборе варианта модели с 1M.

361 

362[Мастер установки](#sign-in-with-vertex-ai) предлагает опцию контекстного окна с 1M при закреплении моделей. Чтобы включить его для вручную закрепленной модели, добавьте `[1m]` к ID модели. Подробности см. в разделе [Закрепите модели для развертываний третьих сторон](/ru/model-config#pin-models-for-third-party-deployments).

363 

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

365 

366Если вы столкнулись с проблемами квоты:

367 

368* Проверьте текущие квоты или запросите увеличение квоты через [Cloud Console](https://cloud.google.com/docs/quotas/view-manage)

369 

370Если вы столкнулись с ошибками "model not found" 404:

371 

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

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

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

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

376 * Установите регион или многорегиональное местоположение, используя переменные окружения `VERTEX_REGION_<MODEL_NAME>`

377 

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

379 

380* Для региональных конечных точек убедитесь, что основная модель и малая/быстрая модель поддерживаются в выбранном регионе

381* Рассмотрите возможность переключения на `CLOUD_ML_REGION=global` для лучшей доступности

382 

383## Дополнительные ресурсы

384 

385* [Документация Vertex AI](https://cloud.google.com/vertex-ai/docs)

386* [Цены Vertex AI](https://cloud.google.com/vertex-ai/pricing)

387* [Квоты и лимиты Vertex AI](https://cloud.google.com/vertex-ai/docs/quotas)

headless.md +225 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Запуск Claude Code программно

6 

7> Используйте Agent SDK для программного запуска Claude Code из CLI, Python или TypeScript.

8 

9[Agent SDK](/ru/agent-sdk/overview) предоставляет вам те же инструменты, цикл агента и управление контекстом, которые питают Claude Code. Он доступен как CLI для скриптов и CI/CD, или как пакеты [Python](/ru/agent-sdk/python) и [TypeScript](/ru/agent-sdk/typescript) для полного программного управления.

10 

11<Note>

12 CLI ранее назывался "headless mode". Флаг `-p` и все параметры CLI работают так же.

13</Note>

14 

15Чтобы запустить Claude Code программно из CLI, передайте `-p` с вашим запросом и любыми [параметрами CLI](/ru/cli-reference):

16 

17```bash theme={null}

18claude -p "Find and fix the bug in auth.py" --allowedTools "Read,Edit,Bash"

19```

20 

21На этой странице рассматривается использование Agent SDK через CLI (`claude -p`). Для пакетов Python и TypeScript SDK со структурированными выходами, обратными вызовами одобрения инструментов и собственными объектами сообщений см. [полную документацию Agent SDK](/ru/agent-sdk/overview).

22 

23## Базовое использование

24 

25Добавьте флаг `-p` (или `--print`) к любой команде `claude` для запуска её в неинтерактивном режиме. Все [параметры CLI](/ru/cli-reference) работают с `-p`, включая:

26 

27* `--continue` для [продолжения разговоров](#continue-conversations)

28* `--allowedTools` для [автоматического одобрения инструментов](#auto-approve-tools)

29* `--output-format` для [структурированного вывода](#get-structured-output)

30 

31Этот пример задаёт Claude вопрос о вашей кодовой базе и выводит ответ:

32 

33```bash theme={null}

34claude -p "What does the auth module do?"

35```

36 

37### Начните быстрее с режимом bare

38 

39Добавьте `--bare` для сокращения времени запуска путём пропуска автоматического обнаружения hooks, skills, plugins, MCP серверов, автоматической памяти и CLAUDE.md. Без этого `claude -p` загружает тот же [контекст](/ru/how-claude-code-works#the-context-window), что и интерактивная сессия, включая всё, что настроено в рабочем каталоге или `~/.claude`.

40 

41Режим bare полезен для CI и скриптов, где вам нужен одинаковый результат на каждой машине. Hook в `~/.claude` коллеги или MCP сервер в `.mcp.json` проекта не будут запущены, потому что режим bare никогда их не читает. Действуют только явно переданные флаги.

42 

43Этот пример запускает одноразовую задачу суммирования в режиме bare и предварительно одобряет инструмент Read, чтобы вызов завершился без запроса разрешения:

44 

45```bash theme={null}

46claude --bare -p "Summarize this file" --allowedTools "Read"

47```

48 

49В режиме bare Claude имеет доступ к инструментам Bash, чтения файлов и редактирования файлов. Передайте любой необходимый контекст с флагом:

50 

51| Для загрузки | Используйте |

52| ----------------------------- | ------------------------------------------------------- |

53| Дополнения системного запроса | `--append-system-prompt`, `--append-system-prompt-file` |

54| Параметры | `--settings <file-or-json>` |

55| MCP серверы | `--mcp-config <file-or-json>` |

56| Пользовательские агенты | `--agents <json>` |

57| Каталог плагина | `--plugin-dir <path>` |

58 

59Режим bare пропускает OAuth и чтение из связки ключей. Аутентификация Anthropic должна поступать из `ANTHROPIC_API_KEY` или `apiKeyHelper` в JSON, переданном в `--settings`. Bedrock, Vertex и Foundry используют обычные учётные данные поставщика.

60 

61<Note>

62 `--bare` — это рекомендуемый режим для скриптовых и SDK вызовов, и он станет режимом по умолчанию для `-p` в будущем выпуске.

63</Note>

64 

65## Примеры

66 

67Эти примеры выделяют общие паттерны CLI. Для CI и других скриптовых вызовов добавьте [`--bare`](#start-faster-with-bare-mode), чтобы они не подхватывали то, что случайно настроено локально.

68 

69### Получение структурированного вывода

70 

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

72 

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

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

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

76 

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

78 

79```bash theme={null}

80claude -p "Summarize this project" --output-format json

81```

82 

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

84 

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

86 

87```bash theme={null}

88claude -p "Extract the main function names from auth.py" \

89 --output-format json \

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

91```

92 

93<Tip>

94 Используйте инструмент вроде [jq](https://jqlang.github.io/jq/) для анализа ответа и извлечения определённых полей:

95 

96 ```bash theme={null}

97 # Extract the text result

98 claude -p "Summarize this project" --output-format json | jq -r '.result'

99 

100 # Extract structured output

101 claude -p "Extract function names from auth.py" \

102 --output-format json \

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

104 | jq '.structured_output'

105 ```

106</Tip>

107 

108### Потоковая передача ответов

109 

110Используйте `--output-format stream-json` с `--verbose` и `--include-partial-messages` для получения токенов по мере их генерации. Каждая строка — это объект JSON, представляющий событие:

111 

112```bash theme={null}

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

114```

115 

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

117 

118```bash theme={null}

119claude -p "Write a poem" --output-format stream-json --verbose --include-partial-messages | \

120 jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'

121```

122 

123Когда запрос API завершается с повторяемой ошибкой, Claude Code выдаёт событие `system/api_retry` перед повторной попыткой. Вы можете использовать это для отображения прогресса повторной попытки или реализации пользовательской логики отката.

124 

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

126| ---------------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

128| `subtype` | `"api_retry"` | определяет это как событие повторной попытки |

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

130| `max_retries` | целое число | всего разрешённых повторных попыток |

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

132| `error_status` | целое число или null | код состояния HTTP или `null` для ошибок соединения без HTTP ответа |

133| `error` | строка | категория ошибки: `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `rate_limit`, `invalid_request`, `server_error`, `max_output_tokens` или `unknown` |

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

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

136 

137Событие `system/init` сообщает метаданные сессии, включая модель, инструменты, MCP серверы и загруженные плагины. Это первое событие в потоке, если не установлена [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/ru/env-vars), в этом случае события `plugin_install` предшествуют ему. Используйте поля плагина для отказа CI, когда плагин не загрузился:

138 

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

140| --------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

142| `plugin_errors` | массив | ошибки загрузки плагина, такие как неудовлетворённая версия зависимости, каждая с `plugin`, `type` и `message`. Затронутые плагины понижены в приоритете и отсутствуют в `plugins`. Ключ опускается, когда ошибок нет |

143 

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

145 

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

147| ------------ | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |

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

149| `subtype` | `"plugin_install"` | определяет это как событие установки плагина |

150| `status` | `"started"`, `"installed"`, `"failed"` или `"completed"` | `started` и `completed` охватывают общую установку; `installed` и `failed` сообщают об отдельных marketplaces |

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

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

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

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

155 

156Для программной потоковой передачи с обратными вызовами и объектами сообщений см. [Stream responses in real-time](/ru/agent-sdk/streaming-output) в документации Agent SDK.

157 

158### Автоматическое одобрение инструментов

159 

160Используйте `--allowedTools` для разрешения Claude использовать определённые инструменты без запроса. Этот пример запускает набор тестов и исправляет ошибки, позволяя Claude выполнять команды Bash и читать/редактировать файлы без запроса разрешения:

161 

162```bash theme={null}

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

164 --allowedTools "Bash,Read,Edit"

165```

166 

167Чтобы установить базовый уровень для всей сессии вместо перечисления отдельных инструментов, передайте [режим разрешений](/ru/permission-modes). `dontAsk` отклоняет всё, что не входит в ваши правила `permissions.allow` или [набор команд только для чтения](/ru/permissions#read-only-commands), что полезно для заблокированных CI запусков. `acceptEdits` позволяет Claude писать файлы без запроса и также автоматически одобряет общие команды файловой системы, такие как `mkdir`, `touch`, `mv` и `cp`. Другие команды оболочки и сетевые запросы по-прежнему требуют записи `--allowedTools` или правила `permissions.allow`, иначе запуск прерывается при попытке выполнить одну из них:

168 

169```bash theme={null}

170claude -p "Apply the lint fixes" --permission-mode acceptEdits

171```

172 

173### Создание коммита

174 

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

176 

177```bash theme={null}

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

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

180```

181 

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

183 

184<Note>

185 Вызываемые пользователем [skills](/ru/skills) вроде `/commit` и [встроенные команды](/ru/commands) доступны только в интерактивном режиме. В режиме `-p` опишите задачу, которую вы хотите выполнить.

186</Note>

187 

188### Настройка системного запроса

189 

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

191 

192```bash theme={null}

193gh pr diff "$1" | claude -p \

194 --append-system-prompt "You are a security engineer. Review for vulnerabilities." \

195 --output-format json

196```

197 

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

199 

200### Продолжение разговоров

201 

202Используйте `--continue` для продолжения самого последнего разговора или `--resume` с ID сессии для продолжения определённого разговора. Этот пример запускает проверку, а затем отправляет дополнительные запросы:

203 

204```bash theme={null}

205# First request

206claude -p "Review this codebase for performance issues"

207 

208# Continue the most recent conversation

209claude -p "Now focus on the database queries" --continue

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

211```

212 

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

214 

215```bash theme={null}

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

217claude -p "Continue that review" --resume "$session_id"

218```

219 

220## Следующие шаги

221 

222* [Agent SDK quickstart](/ru/agent-sdk/quickstart): создайте своего первого агента с помощью Python или TypeScript

223* [CLI reference](/ru/cli-reference): все флаги и параметры CLI

224* [GitHub Actions](/ru/github-actions): используйте Agent SDK в рабочих процессах GitHub

225* [GitLab CI/CD](/ru/gitlab-ci-cd): используйте Agent SDK в конвейерах GitLab

hooks.md +2653 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Справочник по hooks

6 

7> Справочник по событиям hook Claude Code, схеме конфигурации, форматам JSON входа/выхода, кодам выхода, асинхронным hooks, HTTP hooks, prompt hooks и MCP tool hooks.

8 

9<Tip>

10 Для краткого руководства с примерами см. [Автоматизация рабочих процессов с помощью hooks](/ru/hooks-guide).

11</Tip>

12 

13Hooks — это определяемые пользователем команды оболочки, конечные точки HTTP или подсказки LLM, которые выполняются автоматически в определённых точках жизненного цикла Claude Code. Используйте этот справочник для поиска схем событий, параметров конфигурации, форматов JSON входа/выхода и расширенных функций, таких как асинхронные hooks, HTTP hooks и MCP tool hooks. Если вы настраиваете hooks впервые, начните с [руководства](/ru/hooks-guide).

14 

15## Жизненный цикл hook

16 

17Hooks срабатывают в определённых точках во время сеанса Claude Code. Когда событие срабатывает и совпадает с фильтром, Claude Code передаёт JSON-контекст события вашему обработчику hook. Для command hooks входные данные поступают на stdin. Для HTTP hooks они поступают как тело POST-запроса. Ваш обработчик может затем проверить входные данные, выполнить действие и опционально вернуть решение. События срабатывают в трёх ритмах: один раз за сеанс (`SessionStart`, `SessionEnd`), один раз за ход (`UserPromptSubmit`, `Stop`, `StopFailure`) и при каждом вызове инструмента внутри агентного цикла (`PreToolUse`, `PostToolUse`):

18 

19<div style={{maxWidth: "500px", margin: "0 auto"}}>

20 <Frame>

21 <img src="https://mintcdn.com/claude-code/ZIW26Z9pnpsXLhbS/images/hooks-lifecycle.svg?fit=max&auto=format&n=ZIW26Z9pnpsXLhbS&q=85&s=ee23691324deb6501df09bfdae560b64" alt="Диаграмма жизненного цикла hook, показывающая опциональный Setup, переходящий в SessionStart, затем цикл за ход, содержащий UserPromptSubmit, UserPromptExpansion для slash commands, вложенный агентный цикл (PreToolUse, PermissionRequest, PostToolUse, PostToolUseFailure, PostToolBatch, SubagentStart/Stop, TaskCreated, TaskCompleted) и Stop или StopFailure, за которым следуют TeammateIdle, PreCompact, PostCompact и SessionEnd, с Elicitation и ElicitationResult вложенными внутри выполнения MCP tool, PermissionDenied как боковая ветвь от PermissionRequest для автоматических отказов, и WorktreeCreate, WorktreeRemove, Notification, ConfigChange, InstructionsLoaded, CwdChanged и FileChanged как отдельные асинхронные события" width="520" height="1228" data-path="images/hooks-lifecycle.svg" />

22 </Frame>

23</div>

24 

25Таблица ниже суммирует, когда срабатывает каждое событие. Раздел [Hook events](#hook-events) документирует полную схему входа и параметры управления решением для каждого события.

26 

27| Event | When it fires |

28| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

29| `SessionStart` | When a session begins or resumes |

30| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |

31| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

32| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

33| `PreToolUse` | Before a tool call executes. Can block it |

34| `PermissionRequest` | When a permission dialog appears |

35| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

36| `PostToolUse` | After a tool call succeeds |

37| `PostToolUseFailure` | After a tool call fails |

38| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

39| `Notification` | When Claude Code sends a notification |

40| `SubagentStart` | When a subagent is spawned |

41| `SubagentStop` | When a subagent finishes |

42| `TaskCreated` | When a task is being created via `TaskCreate` |

43| `TaskCompleted` | When a task is being marked as completed |

44| `Stop` | When Claude finishes responding |

45| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

46| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |

47| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

48| `ConfigChange` | When a configuration file changes during a session |

49| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

50| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

51| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

52| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

53| `PreCompact` | Before context compaction |

54| `PostCompact` | After context compaction completes |

55| `Elicitation` | When an MCP server requests user input during a tool call |

56| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

57| `SessionEnd` | When a session terminates |

58 

59### Как разрешается hook

60 

61Чтобы увидеть, как эти части работают вместе, рассмотрим этот hook `PreToolUse`, который блокирует деструктивные команды оболочки. Фильтр `matcher` сужает область до вызовов инструмента Bash, а условие `if` сужает её дальше до команд Bash, совпадающих с `rm *`, поэтому `block-rm.sh` запускается только когда оба фильтра совпадают:

62 

63```json theme={null}

64{

65 "hooks": {

66 "PreToolUse": [

67 {

68 "matcher": "Bash",

69 "hooks": [

70 {

71 "type": "command",

72 "if": "Bash(rm *)",

73 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-rm.sh"

74 }

75 ]

76 }

77 ]

78 }

79}

80```

81 

82Скрипт читает JSON входные данные из stdin, извлекает команду и возвращает `permissionDecision` со значением `"deny"`, если она содержит `rm -rf`:

83 

84```bash theme={null}

85#!/bin/bash

86# .claude/hooks/block-rm.sh

87COMMAND=$(jq -r '.tool_input.command')

88 

89if echo "$COMMAND" | grep -q 'rm -rf'; then

90 jq -n '{

91 hookSpecificOutput: {

92 hookEventName: "PreToolUse",

93 permissionDecision: "deny",

94 permissionDecisionReason: "Destructive command blocked by hook"

95 }

96 }'

97else

98 exit 0 # allow the command

99fi

100```

101 

102Теперь предположим, что Claude Code решает запустить `Bash "rm -rf /tmp/build"`. Вот что происходит:

103 

104<Frame>

105 <img src="https://mintcdn.com/claude-code/-tYw1BD_DEqfyyOZ/images/hook-resolution.svg?fit=max&auto=format&n=-tYw1BD_DEqfyyOZ&q=85&s=c73ebc1eeda2037570427d7af1e0a891" alt="Поток разрешения hook: срабатывает событие PreToolUse, фильтр проверяет совпадение Bash, условие if проверяет совпадение Bash(rm *), запускается обработчик hook, результат возвращается в Claude Code" width="930" height="290" data-path="images/hook-resolution.svg" />

106</Frame>

107 

108<Steps>

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

110 Событие `PreToolUse` срабатывает. Claude Code отправляет входные данные инструмента как JSON на stdin hook:

111 

112 ```json theme={null}

113 { "tool_name": "Bash", "tool_input": { "command": "rm -rf /tmp/build" }, ... }

114 ```

115 </Step>

116 

117 <Step title="Фильтр проверяет">

118 Фильтр `"Bash"` совпадает с именем инструмента, поэтому эта группа hook активируется. Если вы опустите фильтр или используете `"*"`, группа активируется при каждом возникновении события.

119 </Step>

120 

121 <Step title="Условие if проверяет">

122 Условие `if` `"Bash(rm *)"` совпадает, потому что `rm -rf /tmp/build` — это подкоманда, совпадающая с `rm *`, поэтому этот обработчик запускается. Если бы команда была `npm test`, проверка `if` не удалась бы и `block-rm.sh` никогда не запустился бы, избегая затрат на порождение процесса. Поле `if` опционально; без него каждый обработчик в совпадающей группе запускается.

123 </Step>

124 

125 <Step title="Обработчик hook запускается">

126 Скрипт проверяет полную команду и находит `rm -rf`, поэтому выводит решение на stdout:

127 

128 ```json theme={null}

129 {

130 "hookSpecificOutput": {

131 "hookEventName": "PreToolUse",

132 "permissionDecision": "deny",

133 "permissionDecisionReason": "Destructive command blocked by hook"

134 }

135 }

136 ```

137 

138 Если бы команда была более безопасным вариантом `rm`, таким как `rm file.txt`, скрипт выполнил бы `exit 0` вместо этого, что говорит Claude Code разрешить вызов инструмента без дополнительных действий.

139 </Step>

140 

141 <Step title="Claude Code действует на основе результата">

142 Claude Code читает JSON решение, блокирует вызов инструмента и показывает Claude причину.

143 </Step>

144</Steps>

145 

146Раздел [Configuration](#configuration) ниже документирует полную схему, и каждый раздел [hook event](#hook-events) документирует, какой входной JSON получает ваша команда и какой выход она может вернуть.

147 

148## Конфигурация

149 

150Hooks определяются в JSON файлах настроек. Конфигурация имеет три уровня вложенности:

151 

1521. Выберите [hook event](#hook-events) для ответа, например `PreToolUse` или `Stop`

1532. Добавьте [matcher group](#matcher-patterns) для фильтрации срабатывания, например "только для инструмента Bash"

1543. Определите один или несколько [hook handlers](#hook-handler-fields) для запуска при совпадении

155 

156См. [Как разрешается hook](#how-a-hook-resolves) выше для полного пошагового руководства с аннотированным примером.

157 

158<Note>

159 На этой странице используются специальные термины для каждого уровня: **hook event** для точки жизненного цикла, **matcher group** для фильтра и **hook handler** для команды оболочки, конечной точки HTTP, инструмента MCP, подсказки или агента, который запускается. "Hook" сам по себе относится к общей функции.

160</Note>

161 

162### Расположение hook

163 

164Место, где вы определяете hook, определяет его область действия:

165 

166| Расположение | Область действия | Общий доступ |

167| :---------------------------------------------------------- | :--------------------- | :------------------------------------ |

168| `~/.claude/settings.json` | Все ваши проекты | Нет, локально на вашей машине |

169| `.claude/settings.json` | Один проект | Да, можно зафиксировать в репозитории |

170| `.claude/settings.local.json` | Один проект | Нет, игнорируется git |

171| Управляемые параметры политики | Организация | Да, контролируется администратором |

172| [Plugin](/ru/plugins) `hooks/hooks.json` | Когда плагин включен | Да, поставляется с плагином |

173| [Skill](/ru/skills) или [agent](/ru/sub-agents) frontmatter | Пока компонент активен | Да, определено в файле компонента |

174 

175Для получения подробной информации о разрешении файлов настроек см. [settings](/ru/settings). Администраторы предприятия могут использовать `allowManagedHooksOnly` для блокировки пользовательских, проектных и плагинных hooks. Hooks из плагинов, принудительно включённых в управляемых параметрах `enabledPlugins`, исключены, поэтому администраторы могут распространять проверенные hooks через организационный marketplace. См. [Hook configuration](/ru/settings#hook-configuration).

176 

177### Matcher patterns

178 

179Поле `matcher` фильтрует срабатывание hooks. Способ оценки фильтра зависит от содержащихся в нём символов:

180 

181| Значение фильтра | Оценивается как | Пример |

182| :------------------------------ | :------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------- |

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

184| Только буквы, цифры, `_` и `\|` | Точная строка или список точных строк, разделённых `\|` | `Bash` совпадает только с инструментом Bash; `Edit\|Write` совпадает с любым инструментом точно |

185| Содержит любой другой символ | Регулярное выражение JavaScript | `^Notebook` совпадает с любым инструментом, начинающимся с Notebook; `mcp__memory__.*` совпадает с каждым инструментом с сервера `memory` |

186 

187Событие `FileChanged` не следует этим правилам при построении своего списка наблюдения. См. [FileChanged](#filechanged).

188 

189Каждый тип события совпадает с другим полем:

190 

191| Событие | На что фильтр влияет | Примеры значений фильтра |

192| :------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |

193| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | имя инструмента | `Bash`, `Edit\|Write`, `mcp__.*` |

194| `SessionStart` | как сеанс начался | `startup`, `resume`, `clear`, `compact` |

195| `Setup` | какой флаг CLI запустил setup | `init`, `maintenance` |

196| `SessionEnd` | почему сеанс закончился | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

197| `Notification` | тип уведомления | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |

198| `SubagentStart` | тип агента | `general-purpose`, `Explore`, `Plan` или пользовательские имена агентов |

199| `PreCompact`, `PostCompact` | что вызвало компактирование | `manual`, `auto` |

200| `SubagentStop` | тип агента | те же значения, что и `SubagentStart` |

201| `ConfigChange` | источник конфигурации | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

202| `CwdChanged` | поддержка фильтра отсутствует | всегда срабатывает при каждом изменении каталога |

203| `FileChanged` | буквальные имена файлов для наблюдения (см. [FileChanged](#filechanged)) | `.envrc\|.env` |

204| `StopFailure` | тип ошибки | `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens`, `unknown` |

205| `InstructionsLoaded` | причина загрузки | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |

206| `UserPromptExpansion` | имя команды | ваши имена skills или команд |

207| `Elicitation` | имя MCP сервера | ваши настроенные имена MCP серверов |

208| `ElicitationResult` | имя MCP сервера | те же значения, что и `Elicitation` |

209| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove` | поддержка фильтра отсутствует | всегда срабатывает при каждом вхождении |

210 

211Фильтр запускается против поля из [JSON входа](#hook-input-and-output), который Claude Code отправляет вашему hook на stdin. Для событий инструмента это поле — `tool_name`. Каждый раздел [hook event](#hook-events) перечисляет полный набор значений фильтра и схему входа для этого события.

212 

213Этот пример запускает скрипт линтинга только когда Claude пишет или редактирует файл:

214 

215```json theme={null}

216{

217 "hooks": {

218 "PostToolUse": [

219 {

220 "matcher": "Edit|Write",

221 "hooks": [

222 {

223 "type": "command",

224 "command": "/path/to/lint-check.sh"

225 }

226 ]

227 }

228 ]

229 }

230}

231```

232 

233`UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove` и `CwdChanged` не поддерживают фильтры и всегда срабатывают при каждом вхождении. Если вы добавите поле `matcher` к этим событиям, оно будет молча проигнорировано.

234 

235Для событий инструмента вы можете фильтровать более узко, установив поле [`if`](#common-fields) на отдельных обработчиках hook. `if` использует [синтаксис правила разрешения](/ru/permissions) для совпадения с именем инструмента и аргументами вместе, поэтому `"Bash(git *)"` запускается когда любая подкоманда входа Bash совпадает с `git *` и `"Edit(*.ts)"` запускается только для файлов TypeScript.

236 

237#### Match MCP tools

238 

239[MCP](/ru/mcp) server инструменты отображаются как обычные инструменты в событиях инструментов (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied`), поэтому вы можете совпадать с ними так же, как с любым другим именем инструмента.

240 

241MCP инструменты следуют шаблону именования `mcp__<server>__<tool>`, например:

242 

243* `mcp__memory__create_entities`: инструмент create entities сервера Memory

244* `mcp__filesystem__read_file`: инструмент read file сервера Filesystem

245* `mcp__github__search_repositories`: инструмент поиска сервера GitHub

246 

247Чтобы совпадать с каждым инструментом с сервера, добавьте `.*` к префиксу сервера. `.*` требуется: фильтр, такой как `mcp__memory`, содержит только буквы и подчёркивания, поэтому он сравнивается как точная строка и не совпадает ни с одним инструментом.

248 

249* `mcp__memory__.*` совпадает со всеми инструментами сервера `memory`

250* `mcp__.*__write.*` совпадает с любым инструментом, чьё имя начинается с `write` из любого сервера

251 

252Этот пример логирует все операции сервера memory и проверяет операции записи из любого MCP сервера:

253 

254```json theme={null}

255{

256 "hooks": {

257 "PreToolUse": [

258 {

259 "matcher": "mcp__memory__.*",

260 "hooks": [

261 {

262 "type": "command",

263 "command": "echo 'Memory operation initiated' >> ~/mcp-operations.log"

264 }

265 ]

266 },

267 {

268 "matcher": "mcp__.*__write.*",

269 "hooks": [

270 {

271 "type": "command",

272 "command": "/home/user/scripts/validate-mcp-write.py"

273 }

274 ]

275 }

276 ]

277 }

278}

279```

280 

281### Hook handler fields

282 

283Каждый объект во внутреннем массиве `hooks` — это hook handler: команда оболочки, конечная точка HTTP, инструмент MCP, подсказка LLM или агент, который запускается при совпадении фильтра. Есть пять типов:

284 

285* **[Command hooks](#command-hook-fields)** (`type: "command"`): запускают команду оболочки. Ваш скрипт получает [JSON входные данные](#hook-input-and-output) события на stdin и передаёт результаты обратно через коды выхода и stdout.

286* **[HTTP hooks](#http-hook-fields)** (`type: "http"`): отправляют JSON входные данные события как HTTP POST запрос на URL. Конечная точка передаёт результаты обратно через тело ответа, используя тот же [JSON формат выхода](#json-output), что и command hooks.

287* **[MCP tool hooks](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): вызывают инструмент на уже подключённом [MCP сервере](/ru/mcp). Текстовый вывод инструмента обрабатывается как stdout command hook.

288* **[Prompt hooks](#prompt-and-agent-hook-fields)** (`type: "prompt"`): отправляют подсказку модели Claude для однооборотной оценки. Модель возвращает решение да/нет как JSON. См. [Prompt-based hooks](#prompt-based-hooks).

289* **[Agent hooks](#prompt-and-agent-hook-fields)** (`type: "agent"`): порождают subagent, который может использовать инструменты, такие как Read, Grep и Glob, для проверки условий перед возвратом решения. Agent hooks являются экспериментальными и могут измениться. См. [Agent-based hooks](#agent-based-hooks).

290 

291#### Common fields

292 

293Эти поля применяются ко всем типам hooks:

294 

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

296| :-------------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

297| `type` | да | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` или `"agent"` |

298| `if` | нет | Синтаксис правила разрешения для фильтрации срабатывания этого hook, такой как `"Bash(git *)"` или `"Edit(*.ts)"`. Hook запускается только если вызов инструмента совпадает с шаблоном, или если команда Bash слишком сложна для анализа. Оценивается только на событиях инструмента: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` и `PermissionDenied`. На других событиях hook с установленным `if` никогда не запускается. Использует тот же синтаксис, что и [правила разрешения](/ru/permissions) |

299| `timeout` | нет | Секунды перед отменой. Значения по умолчанию: 600 для command, 30 для prompt, 60 для agent |

300| `statusMessage` | нет | Пользовательское сообщение спиннера, отображаемое во время выполнения hook |

301| `once` | нет | Если `true`, запускается один раз за сеанс, затем удаляется. Только для hooks, объявленных в [skill frontmatter](#hooks-in-skills-and-agents); игнорируется в файлах настроек и agent frontmatter |

302 

303Поле `if` содержит ровно одно правило разрешения. Нет синтаксиса `&&`, `||` или списка для объединения правил; чтобы применить несколько условий, определите отдельный обработчик hook для каждого. Для Bash правило сравнивается с каждой подкомандой входа инструмента после удаления ведущих присваиваний `VAR=value`, поэтому `if: "Bash(git push *)"` совпадает как с `FOO=bar git push`, так и с `npm test && git push`. Hook запускается если любая подкоманда совпадает, и всегда запускается когда команда слишком сложна для анализа.

304 

305#### Command hook fields

306 

307В дополнение к [общим полям](#common-fields), command hooks принимают эти поля:

308 

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

310| :------------ | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

311| `command` | да | Команда оболочки для выполнения |

312| `async` | нет | Если `true`, запускается в фоне без блокировки. См. [Run hooks in the background](#run-hooks-in-the-background) |

313| `asyncRewake` | нет | Если `true`, запускается в фоне и пробуждает Claude при коде выхода 2. Подразумевает `async`. Stderr hook или stdout, если stderr пусто, показывается Claude как системное напоминание, чтобы он мог реагировать на долгоживущий фоновый сбой |

314| `shell` | нет | Оболочка для использования для этого hook. Принимает `"bash"` (по умолчанию) или `"powershell"`. Установка `"powershell"` запускает команду через PowerShell на Windows. Не требует `CLAUDE_CODE_USE_POWERSHELL_TOOL`, так как hooks порождают PowerShell напрямую |

315 

316#### HTTP hook fields

317 

318В дополнение к [общим полям](#common-fields), HTTP hooks принимают эти поля:

319 

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

321| :--------------- | :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

322| `url` | да | URL для отправки POST запроса |

323| `headers` | нет | Дополнительные HTTP заголовки как пары ключ-значение. Значения поддерживают интерполяцию переменных окружения с использованием синтаксиса `$VAR_NAME` или `${VAR_NAME}`. Разрешены только переменные, указанные в `allowedEnvVars` |

324| `allowedEnvVars` | нет | Список имён переменных окружения, которые могут быть интерполированы в значения заголовков. Ссылки на неуказанные переменные заменяются пустыми строками. Требуется для любой интерполяции переменных окружения |

325 

326Claude Code отправляет [JSON входные данные](#hook-input-and-output) hook как тело POST запроса с `Content-Type: application/json`. Тело ответа использует тот же [JSON формат выхода](#json-output), что и command hooks.

327 

328Обработка ошибок отличается от command hooks: ответы не 2xx, сбои соединения и таймауты все производят неблокирующие ошибки, которые позволяют выполнению продолжаться. Чтобы заблокировать вызов инструмента или отклонить разрешение, верните ответ 2xx с JSON телом, содержащим `decision: "block"` или `hookSpecificOutput` с `permissionDecision: "deny"`.

329 

330Этот пример отправляет события `PreToolUse` на локальный сервис валидации, аутентифицируясь с токеном из переменной окружения `MY_TOKEN`:

331 

332```json theme={null}

333{

334 "hooks": {

335 "PreToolUse": [

336 {

337 "matcher": "Bash",

338 "hooks": [

339 {

340 "type": "http",

341 "url": "http://localhost:8080/hooks/pre-tool-use",

342 "timeout": 30,

343 "headers": {

344 "Authorization": "Bearer $MY_TOKEN"

345 },

346 "allowedEnvVars": ["MY_TOKEN"]

347 }

348 ]

349 }

350 ]

351 }

352}

353```

354 

355#### MCP tool hook fields

356 

357В дополнение к [общим полям](#common-fields), MCP tool hooks принимают эти поля:

358 

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

360| :------- | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

361| `server` | да | Имя настроенного MCP сервера. Сервер должен быть уже подключён; hook никогда не запускает поток OAuth или подключения |

362| `tool` | да | Имя инструмента для вызова на этом сервере |

363| `input` | нет | Аргументы, передаваемые инструменту. Строковые значения поддерживают подстановку `${path}` из [JSON входа](#hook-input-and-output) hook, такую как `"${tool_input.file_path}"` |

364 

365Текстовое содержимое инструмента обрабатывается как stdout command hook: если оно анализируется как действительный [JSON выход](#json-output), оно обрабатывается как решение, в противном случае оно показывается как простой текст. Если названный сервер не подключён или инструмент возвращает `isError: true`, hook производит неблокирующую ошибку и выполнение продолжается.

366 

367MCP tool hooks доступны на каждом hook событии после того, как Claude Code подключился к вашим MCP серверам. `SessionStart` и `Setup` обычно срабатывают до завершения подключения серверов, поэтому hooks на этих событиях должны ожидать ошибку "не подключено" при первом запуске.

368 

369Этот пример вызывает инструмент `security_scan` на MCP сервере `my_server` после каждого `Write` или `Edit`, передавая путь отредактированного файла:

370 

371```json theme={null}

372{

373 "hooks": {

374 "PostToolUse": [

375 {

376 "matcher": "Write|Edit",

377 "hooks": [

378 {

379 "type": "mcp_tool",

380 "server": "my_server",

381 "tool": "security_scan",

382 "input": { "file_path": "${tool_input.file_path}" }

383 }

384 ]

385 }

386 ]

387 }

388}

389```

390 

391#### Prompt and agent hook fields

392 

393В дополнение к [общим полям](#common-fields), prompt и agent hooks принимают эти поля:

394 

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

396| :------- | :---------- | :------------------------------------------------------------------------------------------------ |

397| `prompt` | да | Текст подсказки для отправки модели. Используйте `$ARGUMENTS` как заполнитель для JSON входа hook |

398| `model` | нет | Модель для использования при оценке. По умолчанию быстрая модель |

399 

400Все совпадающие hooks запускаются параллельно, и идентичные обработчики автоматически дедублируются. Command hooks дедублируются по строке команды, а HTTP hooks дедублируются по URL. Обработчики запускаются в текущем каталоге с окружением Claude Code. Переменная окружения `$CLAUDE_CODE_REMOTE` устанавливается на `"true"` в удалённых веб-окружениях и не устанавливается в локальном CLI.

401 

402### Reference scripts by path

403 

404Используйте переменные окружения для ссылки на скрипты hook относительно корня проекта или плагина, независимо от рабочего каталога при запуске hook:

405 

406* `$CLAUDE_PROJECT_DIR`: корень проекта. Оберните в кавычки для обработки путей с пробелами.

407* `${CLAUDE_PLUGIN_ROOT}`: корневой каталог плагина для скриптов, поставляемых с [плагином](/ru/plugins). Изменяется при каждом обновлении плагина.

408* `${CLAUDE_PLUGIN_DATA}`: [каталог постоянных данных](/ru/plugins-reference#persistent-data-directory) плагина для зависимостей и состояния, которые должны пережить обновления плагина.

409 

410<Tabs>

411 <Tab title="Project scripts">

412 Этот пример использует `$CLAUDE_PROJECT_DIR` для запуска проверки стиля из каталога `.claude/hooks/` проекта после любого вызова инструмента `Write` или `Edit`:

413 

414 ```json theme={null}

415 {

416 "hooks": {

417 "PostToolUse": [

418 {

419 "matcher": "Write|Edit",

420 "hooks": [

421 {

422 "type": "command",

423 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/check-style.sh"

424 }

425 ]

426 }

427 ]

428 }

429 }

430 ```

431 </Tab>

432 

433 <Tab title="Plugin scripts">

434 Определите plugin hooks в `hooks/hooks.json` с опциональным полем `description` верхнего уровня. Когда плагин включен, его hooks объединяются с вашими пользовательскими и проектными hooks.

435 

436 Этот пример запускает скрипт форматирования, поставляемый с плагином:

437 

438 ```json theme={null}

439 {

440 "description": "Automatic code formatting",

441 "hooks": {

442 "PostToolUse": [

443 {

444 "matcher": "Write|Edit",

445 "hooks": [

446 {

447 "type": "command",

448 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format.sh",

449 "timeout": 30

450 }

451 ]

452 }

453 ]

454 }

455 }

456 ```

457 

458 См. [plugin components reference](/ru/plugins-reference#hooks) для получения подробной информации о создании plugin hooks.

459 </Tab>

460</Tabs>

461 

462### Hooks in skills and agents

463 

464В дополнение к файлам настроек и плагинам, hooks могут быть определены непосредственно в [skills](/ru/skills) и [subagents](/ru/sub-agents) с использованием frontmatter. Эти hooks ограничены жизненным циклом компонента и запускаются только когда этот компонент активен.

465 

466Поддерживаются все hook события. Для subagents, `Stop` hooks автоматически преобразуются в `SubagentStop`, так как это событие, которое срабатывает при завершении subagent.

467 

468Hooks используют тот же формат конфигурации, что и hooks на основе настроек, но ограничены жизненным циклом компонента и очищаются при его завершении.

469 

470Этот skill определяет hook `PreToolUse`, который запускает скрипт проверки безопасности перед каждой командой `Bash`:

471 

472```yaml theme={null}

473---

474name: secure-operations

475description: Perform operations with security checks

476hooks:

477 PreToolUse:

478 - matcher: "Bash"

479 hooks:

480 - type: command

481 command: "./scripts/security-check.sh"

482---

483```

484 

485Agents используют тот же формат в своём YAML frontmatter.

486 

487### Меню `/hooks`

488 

489Введите `/hooks` в Claude Code, чтобы открыть браузер только для чтения ваших настроенных hooks. Меню показывает каждое hook событие с количеством настроенных hooks, позволяет вам углубиться в фильтры и показывает полные детали каждого hook обработчика. Используйте его для проверки конфигурации, проверки того, из какого файла настроек пришёл hook, или проверки команды, подсказки или URL hook.

490 

491Меню отображает все пять типов hook: `command`, `prompt`, `agent`, `http` и `mcp_tool`. Каждый hook помечен префиксом `[type]` и источником, указывающим, где он был определён:

492 

493* `User`: из `~/.claude/settings.json`

494* `Project`: из `.claude/settings.json`

495* `Local`: из `.claude/settings.local.json`

496* `Plugin`: из `hooks/hooks.json` плагина

497* `Session`: зарегистрирован в памяти для текущего сеанса

498* `Built-in`: зарегистрирован внутри Claude Code

499 

500Выбор hook открывает представление деталей, показывающее его событие, фильтр, тип, исходный файл и полную команду, подсказку или URL. Меню только для чтения: чтобы добавить, изменить или удалить hooks, отредактируйте JSON настроек напрямую или попросите Claude сделать изменение.

501 

502### Disable or remove hooks

503 

504Чтобы удалить hook, удалите его запись из JSON файла настроек.

505 

506Чтобы временно отключить все hooks без их удаления, установите `"disableAllHooks": true` в файле настроек. Нет способа отключить отдельный hook, сохраняя его в конфигурации.

507 

508Параметр `disableAllHooks` соблюдает иерархию управляемых настроек. Если администратор настроил hooks через управляемые параметры политики, `disableAllHooks`, установленный в пользовательских, проектных или локальных настройках, не может отключить эти управляемые hooks. Только `disableAllHooks`, установленный на уровне управляемых настроек, может отключить управляемые hooks.

509 

510Прямые редактирования hooks в файлах настроек обычно захватываются автоматически наблюдателем файлов.

511 

512## Hook input and output

513 

514Command hooks получают JSON данные через stdin и передают результаты через коды выхода, stdout и stderr. HTTP hooks получают тот же JSON как тело POST запроса и передают результаты через тело HTTP ответа. Этот раздел охватывает поля и поведение, общие для всех событий. Каждый раздел события под [Hook events](#hook-events) включает его специфическую схему входа и параметры управления решением.

515 

516### Common input fields

517 

518Hook события получают эти поля как JSON, в дополнение к полям, специфичным для события, документированным в каждом разделе [hook event](#hook-events). Для command hooks этот JSON поступает через stdin. Для HTTP hooks он поступает как тело POST запроса.

519 

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

521| :---------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

522| `session_id` | Текущий идентификатор сеанса |

523| `transcript_path` | Путь к JSON разговора |

524| `cwd` | Текущий рабочий каталог при вызове hook |

525| `permission_mode` | Текущий [режим разрешения](/ru/permissions#permission-modes): `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"` или `"bypassPermissions"`. Не все события получают это поле: см. пример JSON каждого события ниже для проверки |

526| `hook_event_name` | Имя события, которое сработало |

527 

528При запуске с `--agent` или внутри subagent включаются два дополнительных поля:

529 

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

531| :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

532| `agent_id` | Уникальный идентификатор для subagent. Присутствует только когда hook срабатывает внутри вызова subagent. Используйте это для различения вызовов hook subagent от вызовов основного потока. |

533| `agent_type` | Имя агента (например, `"Explore"` или `"security-reviewer"`). Присутствует когда сеанс использует `--agent` или hook срабатывает внутри subagent. Для subagents тип subagent имеет приоритет над значением `--agent` сеанса. |

534 

535Например, hook `PreToolUse` для команды Bash получает это на stdin:

536 

537```json theme={null}

538{

539 "session_id": "abc123",

540 "transcript_path": "/home/user/.claude/projects/.../transcript.jsonl",

541 "cwd": "/home/user/my-project",

542 "permission_mode": "default",

543 "hook_event_name": "PreToolUse",

544 "tool_name": "Bash",

545 "tool_input": {

546 "command": "npm test"

547 }

548}

549```

550 

551Поля `tool_name` и `tool_input` специфичны для события. Каждый раздел [hook event](#hook-events) документирует дополнительные поля для этого события.

552 

553### Exit code output

554 

555Код выхода из вашей команды hook говорит Claude Code, должно ли действие продолжаться, быть заблокировано или быть проигнорировано.

556 

557**Exit 0** означает успех. Claude Code анализирует stdout для [JSON полей выхода](#json-output). JSON выход обрабатывается только при exit 0. Для большинства событий stdout записывается в журнал отладки, но не показывается в транскрипте. Исключения — `UserPromptSubmit`, `UserPromptExpansion` и `SessionStart`, где stdout добавляется как контекст, который Claude может видеть и действовать.

558 

559**Exit 2** означает блокирующую ошибку. Claude Code игнорирует stdout и любой JSON в нём. Вместо этого текст stderr передаётся обратно Claude как сообщение об ошибке. Эффект зависит от события: `PreToolUse` блокирует вызов инструмента, `UserPromptSubmit` отклоняет подсказку и так далее. См. [exit code 2 behavior](#exit-code-2-behavior-per-event) для полного списка.

560 

561**Любой другой код выхода** — это неблокирующая ошибка для большинства событий hook. Транскрипт показывает уведомление об ошибке `<hook name> hook error`, за которым следует первая строка stderr, поэтому вы можете определить причину без `--debug`. Выполнение продолжается и полный stderr записывается в журнал отладки.

562 

563Например, скрипт команды hook, который блокирует опасные команды Bash:

564 

565```bash theme={null}

566#!/bin/bash

567# Читает JSON входные данные из stdin, проверяет команду

568command=$(jq -r '.tool_input.command' < /dev/stdin)

569 

570if [[ "$command" == rm* ]]; then

571 echo "Blocked: rm commands are not allowed" >&2

572 exit 2 # Blocking error: tool call is prevented

573fi

574 

575exit 0 # Success: tool call proceeds

576```

577 

578<Warning>

579 Для большинства событий hook только exit code 2 блокирует действие. Claude Code рассматривает exit code 1 как неблокирующую ошибку и продолжает действие, даже хотя 1 — это обычный код отказа Unix. Если ваш hook предназначен для обеспечения политики, используйте `exit 2`. Исключение — `WorktreeCreate`, где любой ненулевой код выхода прерывает создание worktree.

580</Warning>

581 

582#### Exit code 2 behavior per event

583 

584Exit code 2 — это способ hook сигнализировать "стоп, не делай этого". Эффект зависит от события, потому что некоторые события представляют действия, которые могут быть заблокированы (например, вызов инструмента, который ещё не произошёл), а другие представляют вещи, которые уже произошли или не могут быть предотвращены.

585 

586| Hook событие | Может блокировать? | Что происходит при exit 2 |

587| :-------------------- | :----------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- |

588| `PreToolUse` | Да | Блокирует вызов инструмента |

589| `PermissionRequest` | Да | Отклоняет разрешение |

590| `UserPromptSubmit` | Да | Блокирует обработку подсказки и стирает подсказку |

591| `UserPromptExpansion` | Да | Блокирует расширение |

592| `Stop` | Да | Предотвращает остановку Claude, продолжает разговор |

593| `SubagentStop` | Да | Предотвращает остановку subagent |

594| `TeammateIdle` | Да | Предотвращает переход товарища в режим ожидания (товарищ продолжает работать) |

595| `TaskCreated` | Да | Откатывает создание задачи |

596| `TaskCompleted` | Да | Предотвращает отметку задачи как завершённой |

597| `ConfigChange` | Да | Блокирует применение изменения конфигурации (кроме `policy_settings`) |

598| `StopFailure` | Нет | Выход и код выхода игнорируются |

599| `PostToolUse` | Нет | Показывает stderr Claude (инструмент уже запустился) |

600| `PostToolUseFailure` | Нет | Показывает stderr Claude (инструмент уже не удался) |

601| `PostToolBatch` | Да | Останавливает цикл агента перед следующим вызовом модели |

602| `PermissionDenied` | Нет | Код выхода и stderr игнорируются (отказ уже произошёл). Используйте JSON `hookSpecificOutput.retry: true` для сообщения модели, что она может повторить попытку |

603| `Notification` | Нет | Показывает stderr только пользователю |

604| `SubagentStart` | Нет | Показывает stderr только пользователю |

605| `SessionStart` | Нет | Показывает stderr только пользователю |

606| `Setup` | Нет | Показывает stderr только пользователю |

607| `SessionEnd` | Нет | Показывает stderr только пользователю |

608| `CwdChanged` | Нет | Показывает stderr только пользователю |

609| `FileChanged` | Нет | Показывает stderr только пользователю |

610| `PreCompact` | Да | Блокирует компактирование |

611| `PostCompact` | Нет | Показывает stderr только пользователю |

612| `Elicitation` | Да | Отклоняет elicitation |

613| `ElicitationResult` | Да | Блокирует ответ (действие становится decline) |

614| `WorktreeCreate` | Да | Любой ненулевой код выхода вызывает сбой создания worktree |

615| `WorktreeRemove` | Нет | Сбои логируются только в режиме отладки |

616| `InstructionsLoaded` | Нет | Код выхода игнорируется |

617 

618### HTTP response handling

619 

620HTTP hooks используют коды статуса HTTP и тела ответов вместо кодов выхода и stdout:

621 

622* **2xx с пустым телом**: успех, эквивалентно exit code 0 без выхода

623* **2xx с телом простого текста**: успех, текст добавляется как контекст

624* **2xx с JSON телом**: успех, анализируется с использованием той же [JSON выхода](#json-output) схемы, что и command hooks

625* **Статус не 2xx**: неблокирующая ошибка, выполнение продолжается

626* **Сбой соединения или таймаут**: неблокирующая ошибка, выполнение продолжается

627 

628В отличие от command hooks, HTTP hooks не могут сигнализировать блокирующую ошибку только через коды статуса. Чтобы заблокировать вызов инструмента или отклонить разрешение, верните ответ 2xx с JSON телом, содержащим соответствующие поля решения.

629 

630### JSON output

631 

632Коды выхода позволяют вам разрешить или заблокировать, но JSON выход даёт вам более точное управление. Вместо выхода с кодом 2 для блокировки, выйдите с 0 и выведите JSON объект на stdout. Claude Code читает специфические поля из этого JSON для управления поведением, включая [decision control](#decision-control) для блокировки, разрешения или эскалации пользователю.

633 

634<Note>

635 Вы должны выбрать один подход на hook, не оба: либо используйте коды выхода отдельно для сигнализации, либо выйдите с 0 и выведите JSON для структурированного управления. Claude Code обрабатывает JSON только при exit 0. Если вы выйдете с 2, любой JSON игнорируется.

636</Note>

637 

638Stdout вашего hook должен содержать только JSON объект. Если ваш профиль оболочки выводит текст при запуске, это может помешать анализу JSON. См. [JSON validation failed](/ru/hooks-guide#json-validation-failed) в руководстве по устранению неполадок.

639 

640JSON выход, внедрённый в контекст (`additionalContext`, `systemMessage` или простой stdout), ограничен 10 000 символами. Выход, превышающий этот лимит, сохраняется в файл и заменяется предпросмотром и путём к файлу, так же как обрабатываются большие результаты инструментов.

641 

642JSON объект поддерживает три вида полей:

643 

644* **Универсальные поля** как `continue` работают во всех событиях. Они перечислены в таблице ниже.

645* **Верхнеуровневые `decision` и `reason`** используются некоторыми событиями для блокировки или предоставления обратной связи.

646* **`hookSpecificOutput`** — это вложенный объект для событий, которым нужно более богатое управление. Он требует поле `hookEventName`, установленное на имя события.

647 

648| Поле | По умолчанию | Описание |

649| :--------------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------ |

650| `continue` | `true` | Если `false`, Claude полностью прекращает обработку после запуска hook. Имеет приоритет над любыми полями решения, специфичными для события |

651| `stopReason` | нет | Сообщение, показываемое пользователю при `continue` равном `false`. Не показывается Claude |

652| `suppressOutput` | `false` | Если `true`, скрывает stdout из журнала отладки |

653| `systemMessage` | нет | Предупреждающее сообщение, показываемое пользователю |

654 

655Чтобы полностью остановить Claude независимо от типа события:

656 

657```json theme={null}

658{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }

659```

660 

661#### Add context for Claude

662 

663Поле `additionalContext` передаёт строку из вашего hook в контекстное окно Claude. Claude Code оборачивает строку в системное напоминание и вставляет её в разговор в точке, где сработал hook. Claude читает напоминание при следующем запросе модели, но оно не появляется как сообщение чата в интерфейсе.

664 

665Верните `additionalContext` внутри `hookSpecificOutput` рядом с именем события:

666 

667```json theme={null}

668{

669 "hookSpecificOutput": {

670 "hookEventName": "PostToolUse",

671 "additionalContext": "This file is generated. Edit src/schema.ts and run `bun generate` instead."

672 }

673}

674```

675 

676Где появляется напоминание, зависит от события:

677 

678* [SessionStart](#sessionstart), [Setup](#setup) и [SubagentStart](#subagentstart): в начале разговора, перед первой подсказкой

679* [UserPromptSubmit](#userpromptsubmit) и [UserPromptExpansion](#userpromptexpansion): рядом с отправленной подсказкой

680* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure) и [PostToolBatch](#posttoolbatch): рядом с результатом инструмента

681 

682Когда несколько hooks возвращают `additionalContext` для одного события, Claude получает все значения. Если значение превышает 10 000 символов, Claude Code записывает полный текст в файл в каталоге сеанса и передаёт Claude путь к файлу с кратким предпросмотром вместо этого.

683 

684Используйте `additionalContext` для информации, которую Claude должен знать о текущем состоянии вашей среды или операции, которая только что запустилась:

685 

686* **Состояние среды**: текущая ветка, цель развёртывания или активные флаги функций

687* **Условные правила проекта**: какая команда тестирования применяется к только что отредактированному файлу, какие каталоги доступны только для чтения в этом worktree

688* **Внешние данные**: открытые проблемы, назначенные вам, недавние результаты CI, содержимое, полученное из внутреннего сервиса

689 

690Для инструкций, которые никогда не меняются, предпочитайте [CLAUDE.md](/ru/memory). Он загружается без запуска скрипта и является стандартным местом для статических соглашений проекта.

691 

692Напишите текст как фактические утверждения, а не как императивные системные инструкции. Формулировки такие как "Цель развёртывания — production" или "Этот репозиторий использует `bun test`" читаются как информация о проекте. Текст, сформулированный как внеполосные системные команды, может активировать защиту Claude от внедрения подсказок, что заставляет Claude вывести текст вам вместо того, чтобы рассматривать его как контекст.

693 

694После внедрения текст сохраняется в транскрипте сеанса. Для событий в середине сеанса, таких как `PostToolUse` или `UserPromptSubmit`, возобновление с `--continue` или `--resume` воспроизводит сохранённый текст вместо повторного запуска hook для прошлых ходов, поэтому значения, такие как временные метки или SHA коммитов, становятся устаревшими при возобновлении. Hooks `SessionStart` запускаются снова при возобновлении с `source` установленным на `"resume"`, поэтому они могут обновить свой контекст.

695 

696#### Decision control

697 

698Не каждое событие поддерживает блокировку или управление поведением через JSON. События, которые это делают, каждое использует другой набор полей для выражения этого решения. Используйте эту таблицу как быструю ссылку перед написанием hook:

699 

700| События | Шаблон решения | Ключевые поля |

701| :---------------------------------------------------------------------------------------------------------------------------------- | :------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

702| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | Верхнеуровневое `decision` | `decision: "block"`, `reason` |

703| TeammateIdle, TaskCreated, TaskCompleted | Exit code или `continue: false` | Exit code 2 блокирует действие с обратной связью stderr. JSON `{"continue": false, "stopReason": "..."}` также полностью останавливает товарища, соответствуя поведению hook `Stop` |

704| PreToolUse | `hookSpecificOutput` | `permissionDecision` (allow/deny/ask/defer), `permissionDecisionReason` |

705| PermissionRequest | `hookSpecificOutput` | `decision.behavior` (allow/deny) |

706| PermissionDenied | `hookSpecificOutput` | `retry: true` говорит модели, что она может повторить попытку отклонённого вызова инструмента |

707| WorktreeCreate | path return | Command hook выводит путь на stdout; HTTP hook возвращает `hookSpecificOutput.worktreePath`. Сбой hook или отсутствие пути вызывает сбой создания |

708| Elicitation | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (значения полей формы для accept) |

709| ElicitationResult | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (переопределение значений полей формы) |

710| WorktreeRemove, Notification, SessionEnd, PostCompact, InstructionsLoaded, StopFailure, CwdChanged, FileChanged | Нет | Нет управления решением. Используется для побочных эффектов, таких как логирование или очистка |

711 

712Вот примеры каждого шаблона в действии:

713 

714<Tabs>

715 <Tab title="Top-level decision">

716 Используется `UserPromptSubmit`, `UserPromptExpansion`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`, `Stop`, `SubagentStop`, `ConfigChange` и `PreCompact`. Единственное значение — `"block"`. Чтобы разрешить действию продолжаться, опустите `decision` из вашего JSON или выйдите с 0 без какого-либо JSON вообще:

717 

718 ```json theme={null}

719 {

720 "decision": "block",

721 "reason": "Test suite must pass before proceeding"

722 }

723 ```

724 </Tab>

725 

726 <Tab title="PreToolUse">

727 Использует `hookSpecificOutput` для более богатого управления: разрешить, отклонить или отложить. Вы также можете изменить входные данные инструмента перед его запуском или внедрить дополнительный контекст для Claude. См. [PreToolUse decision control](#pretooluse-decision-control) для полного набора параметров.

728 

729 ```json theme={null}

730 {

731 "hookSpecificOutput": {

732 "hookEventName": "PreToolUse",

733 "permissionDecision": "deny",

734 "permissionDecisionReason": "Database writes are not allowed"

735 }

736 }

737 ```

738 </Tab>

739 

740 <Tab title="PermissionRequest">

741 Использует `hookSpecificOutput` для разрешения или отклонения запроса разрешения от имени пользователя. При разрешении вы также можете изменить входные данные инструмента или применить правила разрешения, чтобы пользователю не было предложено снова. См. [PermissionRequest decision control](#permissionrequest-decision-control) для полного набора параметров.

742 

743 ```json theme={null}

744 {

745 "hookSpecificOutput": {

746 "hookEventName": "PermissionRequest",

747 "decision": {

748 "behavior": "allow",

749 "updatedInput": {

750 "command": "npm run lint"

751 }

752 }

753 }

754 }

755 ```

756 </Tab>

757</Tabs>

758 

759Для расширенных примеров, включая валидацию команд Bash, фильтрацию подсказок и скрипты автоматического одобрения, см. [What you can automate](/ru/hooks-guide#what-you-can-automate) в руководстве и [Bash command validator reference implementation](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).

760 

761## Hook events

762 

763Каждое событие соответствует точке в жизненном цикле Claude Code, где могут запускаться hooks. Разделы ниже упорядочены в соответствии с жизненным циклом: от настройки сеанса через агентный цикл к концу сеанса. Каждый раздел описывает, когда срабатывает событие, какие фильтры оно поддерживает, JSON входные данные, которые оно получает, и как управлять поведением через выход.

764 

765### SessionStart

766 

767Запускается при запуске Claude Code нового сеанса или возобновлении существующего сеанса. Полезно для загрузки контекста разработки, такого как существующие проблемы или недавние изменения в вашей кодовой базе, или установки переменных окружения. Для статического контекста, который не требует скрипта, используйте [CLAUDE.md](/ru/memory) вместо этого.

768 

769SessionStart запускается при каждом сеансе, поэтому держите эти hooks быстрыми. Поддерживаются только hooks `type: "command"` и `type: "mcp_tool"`.

770 

771Значение фильтра соответствует тому, как был инициирован сеанс:

772 

773| Фильтр | Когда он срабатывает |

774| :-------- | :---------------------------------------- |

775| `startup` | Новый сеанс |

776| `resume` | `--resume`, `--continue` или `/resume` |

777| `clear` | `/clear` |

778| `compact` | Автоматическое или ручное компактирование |

779 

780#### SessionStart input

781 

782В дополнение к [общим полям входа](#common-input-fields), SessionStart hooks получают `source`, `model` и опционально `agent_type`. Поле `source` указывает, как был запущен сеанс: `"startup"` для новых сеансов, `"resume"` для возобновлённых сеансов, `"clear"` после `/clear` или `"compact"` после компактирования. Поле `model` содержит идентификатор модели. Если вы запустите Claude Code с `claude --agent <name>`, поле `agent_type` содержит имя агента.

783 

784```json theme={null}

785{

786 "session_id": "abc123",

787 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

788 "cwd": "/Users/...",

789 "hook_event_name": "SessionStart",

790 "source": "startup",

791 "model": "claude-sonnet-4-6"

792}

793```

794 

795#### SessionStart decision control

796 

797Любой текст, который ваш скрипт hook выводит на stdout, добавляется как контекст для Claude. В дополнение к [JSON полям выхода](#json-output), доступным для всех hooks, вы можете вернуть эти поля, специфичные для события:

798 

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

800| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

801| `additionalContext` | Строка, добавленная в контекст Claude в начале разговора, перед первой подсказкой. См. [Add context for Claude](#add-context-for-claude) для того, как текст доставляется и что в него поместить |

802 

803```json theme={null}

804{

805 "hookSpecificOutput": {

806 "hookEventName": "SessionStart",

807 "additionalContext": "Current branch: feat/auth-refactor\nUncommitted changes: src/auth.ts, src/login.tsx\nActive issue: #4211 Migrate to OAuth2"

808 }

809}

810```

811 

812Поскольку простой stdout уже достигает Claude для этого события, hook, который только загружает контекст, может выводить на stdout напрямую без построения JSON. Используйте форму JSON, когда вам нужно объединить контекст с другими полями, такими как `suppressOutput`.

813 

814#### Persist environment variables

815 

816SessionStart hooks имеют доступ к переменной окружения `CLAUDE_ENV_FILE`, которая предоставляет путь к файлу, где вы можете сохранять переменные окружения для последующих команд Bash.

817 

818Чтобы установить отдельные переменные окружения, напишите операторы `export` в `CLAUDE_ENV_FILE`. Используйте добавление (`>>`) для сохранения переменных, установленных другими hooks:

819 

820```bash theme={null}

821#!/bin/bash

822 

823if [ -n "$CLAUDE_ENV_FILE" ]; then

824 echo 'export NODE_ENV=production' >> "$CLAUDE_ENV_FILE"

825 echo 'export DEBUG_LOG=true' >> "$CLAUDE_ENV_FILE"

826 echo 'export PATH="$PATH:./node_modules/.bin"' >> "$CLAUDE_ENV_FILE"

827fi

828 

829exit 0

830```

831 

832Чтобы захватить все изменения окружения из команд настройки, сравните экспортированные переменные до и после:

833 

834```bash theme={null}

835#!/bin/bash

836 

837ENV_BEFORE=$(export -p | sort)

838 

839# Run your setup commands that modify the environment

840source ~/.nvm/nvm.sh

841nvm use 20

842 

843if [ -n "$CLAUDE_ENV_FILE" ]; then

844 ENV_AFTER=$(export -p | sort)

845 comm -13 <(echo "$ENV_BEFORE") <(echo "$ENV_AFTER") >> "$CLAUDE_ENV_FILE"

846fi

847 

848exit 0

849```

850 

851Любые переменные, написанные в этот файл, будут доступны во всех последующих командах Bash, которые Claude Code выполняет во время сеанса.

852 

853<Note>

854 `CLAUDE_ENV_FILE` доступен для SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged) и [FileChanged](#filechanged) hooks. Другие типы hooks не имеют доступа к этой переменной.

855</Note>

856 

857### Setup

858 

859Срабатывает только при запуске Claude Code с `--init-only` или с `--init` или `--maintenance` в режиме печати (`-p`). Не срабатывает при нормальном запуске. Используйте это для одноразовой установки зависимостей или запланированной очистки, которую вы запускаете явно из CI или скриптов, отдельно от нормального запуска сеанса. Для инициализации для каждого сеанса используйте [SessionStart](#sessionstart) вместо этого.

860 

861Значение фильтра соответствует флагу CLI, который запустил hook:

862 

863| Фильтр | Когда он срабатывает |

864| :------------ | :------------------------------------------ |

865| `init` | `claude --init-only` или `claude -p --init` |

866| `maintenance` | `claude -p --maintenance` |

867 

868`--init-only` запускает Setup hooks и SessionStart hooks с фильтром `startup`, затем выходит без запуска разговора. `--init` и `--maintenance` срабатывают Setup hooks только при объединении с `-p` (режим печати); в интерактивном сеансе эти два флага в настоящее время не срабатывают Setup hooks.

869 

870Поскольку Setup не срабатывает при каждом запуске, плагин, которому нужна установленная зависимость, не может полагаться только на Setup. Практический паттерн — проверить зависимость при первом использовании и установить при отсутствии, например hook или skill, который проверяет `${CLAUDE_PLUGIN_DATA}/node_modules` и запускает `npm install` при отсутствии. См. [persistent data directory](/ru/plugins-reference#persistent-data-directory) для того, где хранить установленные зависимости.

871 

872#### Setup input

873 

874В дополнение к [общим полям входа](#common-input-fields), Setup hooks получают поле `trigger`, установленное на `"init"` или `"maintenance"`:

875 

876```json theme={null}

877{

878 "session_id": "abc123",

879 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

880 "cwd": "/Users/...",

881 "hook_event_name": "Setup",

882 "trigger": "init"

883}

884```

885 

886#### Setup decision control

887 

888Setup hooks не могут блокировать. При exit code 2 stderr показывается пользователю; при любом другом ненулевом exit code stderr появляется только при запуске с `--verbose`. В обоих случаях выполнение продолжается. Чтобы передать информацию в контекст Claude, верните `additionalContext` в JSON выходе; простой stdout записывается только в журнал отладки. В дополнение к [JSON полям выхода](#json-output), доступным для всех hooks, вы можете вернуть эти поля, специфичные для события:

889 

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

891| :------------------ | :---------------------------------------------------------------------------- |

892| `additionalContext` | Строка, добавленная в контекст Claude. Значения нескольких hooks объединяются |

893 

894```json theme={null}

895{

896 "hookSpecificOutput": {

897 "hookEventName": "Setup",

898 "additionalContext": "Dependencies installed: node_modules, .venv"

899 }

900}

901```

902 

903Setup hooks имеют доступ к `CLAUDE_ENV_FILE`. Переменные, написанные в этот файл, сохраняются в последующих командах Bash для сеанса, как и в [SessionStart hooks](#persist-environment-variables). Поддерживаются только hooks `type: "command"` и `type: "mcp_tool"`.

904 

905### InstructionsLoaded

906 

907Срабатывает при загрузке файла `CLAUDE.md` или `.claude/rules/*.md` в контекст. Это событие срабатывает при запуске сеанса для нетерпеливо загруженных файлов и снова позже при ленивой загрузке, например когда Claude получает доступ к подкаталогу, содержащему вложенный `CLAUDE.md`, или когда условные правила с frontmatter `paths:` совпадают. Hook не поддерживает блокировку или управление решением. Он запускается асинхронно в целях наблюдаемости.

908 

909Фильтр запускается против `load_reason`. Например, используйте `"matcher": "session_start"` для срабатывания только для файлов, загруженных при запуске сеанса, или `"matcher": "path_glob_match|nested_traversal"` для срабатывания только для ленивых загрузок.

910 

911#### InstructionsLoaded input

912 

913В дополнение к [общим полям входа](#common-input-fields), InstructionsLoaded hooks получают эти поля:

914 

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

916| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

917| `file_path` | Абсолютный путь к файлу инструкций, который был загружен |

918| `memory_type` | Область действия файла: `"User"`, `"Project"`, `"Local"` или `"Managed"` |

919| `load_reason` | Почему файл был загружен: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"` или `"compact"`. Значение `"compact"` срабатывает при перезагрузке файлов инструкций после события компактирования |

920| `globs` | Шаблоны glob пути из frontmatter `paths:` файла, если есть. Присутствует только для загрузок `path_glob_match` |

921| `trigger_file_path` | Путь к файлу, доступ к которому вызвал эту загрузку, для ленивых загрузок |

922| `parent_file_path` | Путь к родительскому файлу инструкций, который включил этот, для загрузок `include` |

923 

924```json theme={null}

925{

926 "session_id": "abc123",

927 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

928 "cwd": "/Users/my-project",

929 "hook_event_name": "InstructionsLoaded",

930 "file_path": "/Users/my-project/CLAUDE.md",

931 "memory_type": "Project",

932 "load_reason": "session_start"

933}

934```

935 

936#### InstructionsLoaded decision control

937 

938InstructionsLoaded hooks не имеют управления решением. Они не могут блокировать или изменять загрузку инструкций. Используйте это событие для аудита логирования, отслеживания соответствия или наблюдаемости.

939 

940### UserPromptSubmit

941 

942Запускается при отправке пользователем подсказки, перед обработкой Claude. Это позволяет вам добавить дополнительный контекст на основе подсказки/разговора, проверить подсказки или заблокировать определённые типы подсказок.

943 

944#### UserPromptSubmit input

945 

946В дополнение к [общим полям входа](#common-input-fields), UserPromptSubmit hooks получают поле `prompt`, содержащее текст, отправленный пользователем.

947 

948```json theme={null}

949{

950 "session_id": "abc123",

951 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

952 "cwd": "/Users/...",

953 "permission_mode": "default",

954 "hook_event_name": "UserPromptSubmit",

955 "prompt": "Write a function to calculate the factorial of a number"

956}

957```

958 

959#### UserPromptSubmit decision control

960 

961Hooks `UserPromptSubmit` могут управлять тем, обрабатывается ли подсказка пользователя, и добавлять контекст. Доступны все [JSON поля выхода](#json-output).

962 

963Есть два способа добавить контекст в разговор при exit code 0:

964 

965* **Простой текст stdout**: любой текст, не являющийся JSON, написанный на stdout, добавляется как контекст

966* **JSON с `additionalContext`**: используйте формат JSON ниже для большего управления. Поле `additionalContext` добавляется как контекст

967 

968Простой stdout показывается как выход hook в транскрипте. Поле `additionalContext` добавляется более дискретно.

969 

970Чтобы заблокировать подсказку, верните JSON объект с `decision`, установленным на `"block"`:

971 

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

973| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------ |

974| `decision` | `"block"` предотвращает обработку подсказки и стирает её из контекста. Опустите, чтобы разрешить подсказке продолжаться |

975| `reason` | Показывается пользователю при `decision` равном `"block"`. Не добавляется в контекст |

976| `additionalContext` | Строка, добавленная в контекст Claude наряду с отправленной подсказкой. См. [Add context for Claude](#add-context-for-claude) |

977| `sessionTitle` | Устанавливает название сеанса, тот же эффект, что и `/rename`. Используйте для автоматического именования сеансов на основе содержимого подсказки |

978 

979```json theme={null}

980{

981 "decision": "block",

982 "reason": "Explanation for decision",

983 "hookSpecificOutput": {

984 "hookEventName": "UserPromptSubmit",

985 "additionalContext": "My additional context here",

986 "sessionTitle": "My session title"

987 }

988}

989```

990 

991<Note>

992 Формат JSON не требуется для простых случаев использования. Чтобы добавить контекст, вы можете вывести простой текст на stdout с exit code 0. Используйте JSON, когда вам нужно блокировать подсказки или вам нужно более структурированное управление.

993</Note>

994 

995### UserPromptExpansion

996 

997Запускается, когда пользователь вводит slash command, который расширяется в подсказку перед достижением Claude. Используйте это для блокировки определённых команд от прямого вызова, внедрения контекста для определённого skill или логирования, какие команды вызывают пользователи. Например, hook, соответствующий `deploy`, может заблокировать `/deploy`, если файл одобрения отсутствует, или hook, соответствующий skill проверки, может добавить контрольный список проверки команды как `additionalContext`.

998 

999Это событие охватывает путь, который `PreToolUse` не охватывает: hook `PreToolUse`, соответствующий инструменту `Skill`, срабатывает только когда Claude вызывает инструмент, но ввод `/skillname` напрямую обходит `PreToolUse`. `UserPromptExpansion` срабатывает на этом прямом пути.

1000 

1001Совпадает с `command_name`. Оставьте фильтр пустым для срабатывания на каждой подсказке-типе slash command.

1002 

1003#### UserPromptExpansion input

1004 

1005В дополнение к [общим полям входа](#common-input-fields), UserPromptExpansion hooks получают `expansion_type`, `command_name`, `command_args`, `command_source` и исходную строку `prompt`. Поле `expansion_type` равно `slash_command` для skill и пользовательских команд или `mcp_prompt` для подсказок MCP сервера.

1006 

1007```json theme={null}

1008{

1009 "session_id": "abc123",

1010 "transcript_path": "/Users/.../00893aaf.jsonl",

1011 "cwd": "/Users/...",

1012 "permission_mode": "default",

1013 "hook_event_name": "UserPromptExpansion",

1014 "expansion_type": "slash_command",

1015 "command_name": "example-skill",

1016 "command_args": "arg1 arg2",

1017 "command_source": "plugin",

1018 "prompt": "/example-skill arg1 arg2"

1019}

1020```

1021 

1022#### UserPromptExpansion decision control

1023 

1024Hooks `UserPromptExpansion` могут блокировать расширение или добавлять контекст. Доступны все [JSON поля выхода](#json-output).

1025 

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

1027| :------------------ | :--------------------------------------------------------------------------------------------------------------------------- |

1028| `decision` | `"block"` предотвращает расширение slash command. Опустите, чтобы разрешить ему продолжаться |

1029| `reason` | Показывается пользователю при `decision` равном `"block"` |

1030| `additionalContext` | Строка, добавленная в контекст Claude наряду с расширенной подсказкой. См. [Add context for Claude](#add-context-for-claude) |

1031 

1032```json theme={null}

1033{

1034 "decision": "block",

1035 "reason": "This slash command is not available",

1036 "hookSpecificOutput": {

1037 "hookEventName": "UserPromptExpansion",

1038 "additionalContext": "Additional context for this expansion"

1039 }

1040}

1041```

1042 

1043### PreToolUse

1044 

1045Запускается после того, как Claude создаёт параметры инструмента и перед обработкой вызова инструмента. Совпадает с именем инструмента: `Bash`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `WebFetch`, `WebSearch`, `AskUserQuestion`, `ExitPlanMode` и любые [имена MCP инструментов](#match-mcp-tools).

1046 

1047Используйте [PreToolUse decision control](#pretooluse-decision-control) для разрешения, отклонения, запроса или отложения вызова инструмента.

1048 

1049#### PreToolUse input

1050 

1051В дополнение к [общим полям входа](#common-input-fields), PreToolUse hooks получают `tool_name`, `tool_input` и `tool_use_id`. Поля `tool_input` зависят от инструмента:

1052 

1053##### Bash

1054 

1055Выполняет команды оболочки.

1056 

1057| Поле | Тип | Пример | Описание |

1058| :------------------ | :------ | :----------------- | :--------------------------------------------- |

1059| `command` | string | `"npm test"` | Команда оболочки для выполнения |

1060| `description` | string | `"Run test suite"` | Опциональное описание того, что делает команда |

1061| `timeout` | number | `120000` | Опциональный таймаут в миллисекундах |

1062| `run_in_background` | boolean | `false` | Запускать ли команду в фоне |

1063 

1064##### Write

1065 

1066Создаёт или перезаписывает файл.

1067 

1068| Поле | Тип | Пример | Описание |

1069| :---------- | :----- | :-------------------- | :--------------------------------- |

1070| `file_path` | string | `"/path/to/file.txt"` | Абсолютный путь к файлу для записи |

1071| `content` | string | `"file content"` | Содержимое для записи в файл |

1072 

1073##### Edit

1074 

1075Заменяет строку в существующем файле.

1076 

1077| Поле | Тип | Пример | Описание |

1078| :------------ | :------ | :-------------------- | :----------------------------------------- |

1079| `file_path` | string | `"/path/to/file.txt"` | Абсолютный путь к файлу для редактирования |

1080| `old_string` | string | `"original text"` | Текст для поиска и замены |

1081| `new_string` | string | `"replacement text"` | Текст замены |

1082| `replace_all` | boolean | `false` | Заменять ли все вхождения |

1083 

1084##### Read

1085 

1086Читает содержимое файла.

1087 

1088| Поле | Тип | Пример | Описание |

1089| :---------- | :----- | :-------------------- | :------------------------------------------ |

1090| `file_path` | string | `"/path/to/file.txt"` | Абсолютный путь к файлу для чтения |

1091| `offset` | number | `10` | Опциональный номер строки для начала чтения |

1092| `limit` | number | `50` | Опциональное количество строк для чтения |

1093 

1094##### Glob

1095 

1096Находит файлы, соответствующие шаблону glob.

1097 

1098| Поле | Тип | Пример | Описание |

1099| :-------- | :----- | :--------------- | :-------------------------------------------------------------------- |

1100| `pattern` | string | `"**/*.ts"` | Шаблон glob для совпадения файлов |

1101| `path` | string | `"/path/to/dir"` | Опциональный каталог для поиска. По умолчанию текущий рабочий каталог |

1102 

1103##### Grep

1104 

1105Ищет содержимое файла с регулярными выражениями.

1106 

1107| Поле | Тип | Пример | Описание |

1108| :------------ | :------ | :--------------- | :------------------------------------------------------------------------------------- |

1109| `pattern` | string | `"TODO.*fix"` | Шаблон регулярного выражения для поиска |

1110| `path` | string | `"/path/to/dir"` | Опциональный файл или каталог для поиска |

1111| `glob` | string | `"*.ts"` | Опциональный шаблон glob для фильтрации файлов |

1112| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"` или `"count"`. По умолчанию `"files_with_matches"` |

1113| `-i` | boolean | `true` | Поиск без учёта регистра |

1114| `multiline` | boolean | `false` | Включить многострочное совпадение |

1115 

1116##### WebFetch

1117 

1118Получает и обрабатывает веб-содержимое.

1119 

1120| Поле | Тип | Пример | Описание |

1121| :------- | :----- | :---------------------------- | :--------------------------------------------- |

1122| `url` | string | `"https://example.com/api"` | URL для получения содержимого |

1123| `prompt` | string | `"Extract the API endpoints"` | Подсказка для запуска на полученном содержимом |

1124 

1125##### WebSearch

1126 

1127Ищет в веб.

1128 

1129| Поле | Тип | Пример | Описание |

1130| :---------------- | :----- | :----------------------------- | :------------------------------------------------------ |

1131| `query` | string | `"react hooks best practices"` | Поисковый запрос |

1132| `allowed_domains` | array | `["docs.example.com"]` | Опциональный: включать результаты только с этих доменов |

1133| `blocked_domains` | array | `["spam.example.com"]` | Опциональный: исключить результаты с этих доменов |

1134 

1135##### Agent

1136 

1137Порождает [subagent](/ru/sub-agents).

1138 

1139| Поле | Тип | Пример | Описание |

1140| :-------------- | :----- | :------------------------- | :------------------------------------------------------------- |

1141| `prompt` | string | `"Find all API endpoints"` | Задача для выполнения агентом |

1142| `description` | string | `"Find API endpoints"` | Краткое описание задачи |

1143| `subagent_type` | string | `"Explore"` | Тип специализированного агента для использования |

1144| `model` | string | `"sonnet"` | Опциональный псевдоним модели для переопределения по умолчанию |

1145 

1146##### AskUserQuestion

1147 

1148Задаёт пользователю один-четыре вопроса с множественным выбором.

1149 

1150| Поле | Тип | Пример | Описание |

1151| :---------- | :----- | :----------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1152| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Вопросы для представления, каждый с текстом `question`, коротким `header`, массивом `options` и опциональным флагом `multiSelect` |

1153| `answers` | object | `{"Which framework?": "React"}` | Опциональный. Соответствует текст вопроса выбранному ярлыку опции. Ответы с множественным выбором объединяют ярлыки запятыми. Claude не устанавливает это поле; предоставьте его через `updatedInput` для программного ответа |

1154 

1155#### PreToolUse decision control

1156 

1157Hooks `PreToolUse` могут управлять тем, продолжается ли вызов инструмента. В отличие от других hooks, которые используют верхнеуровневое поле `decision`, PreToolUse возвращает своё решение внутри объекта `hookSpecificOutput`. Это даёт ему более богатое управление: четыре результата (разрешить, отклонить, спросить или отложить) плюс возможность изменить входные данные инструмента перед выполнением.

1158 

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

1160| :------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1161| `permissionDecision` | `"allow"` пропускает диалог разрешения. `"deny"` предотвращает вызов инструмента. `"ask"` предлагает пользователю подтвердить. `"defer"` выходит корректно, чтобы инструмент мог быть возобновлён позже. [Правила отклонения и запроса](/ru/permissions#manage-permissions) всё ещё применяются независимо от того, что возвращает hook |

1162| `permissionDecisionReason` | Для `"allow"` и `"ask"`, показывается пользователю, но не Claude. Для `"deny"`, показывается Claude. Для `"defer"`, игнорируется |

1163| `updatedInput` | Изменяет параметры входа инструмента перед выполнением. Заменяет весь объект входа, поэтому включите неизменённые поля наряду с изменёнными. Объедините с `"allow"` для автоматического одобрения или `"ask"` для показа изменённого входа пользователю. Для `"defer"`, игнорируется |

1164| `additionalContext` | Строка, добавленная в контекст Claude наряду с результатом инструмента. Игнорируется при `permissionDecision` равном `"defer"`. См. [Add context for Claude](#add-context-for-claude) |

1165 

1166Когда несколько PreToolUse hooks возвращают разные решения, приоритет — `deny` > `defer` > `ask` > `allow`.

1167 

1168Когда hook возвращает `"ask"`, диалог разрешения, отображаемый пользователю, включает метку, идентифицирующую источник hook: например, `[User]`, `[Project]`, `[Plugin]` или `[Local]`. Это помогает пользователям понять, какой источник конфигурации запрашивает подтверждение.

1169 

1170```json theme={null}

1171{

1172 "hookSpecificOutput": {

1173 "hookEventName": "PreToolUse",

1174 "permissionDecision": "allow",

1175 "permissionDecisionReason": "My reason here",

1176 "updatedInput": {

1177 "field_to_modify": "new value"

1178 },

1179 "additionalContext": "Current environment: production. Proceed with caution."

1180 }

1181}

1182```

1183 

1184`AskUserQuestion` и `ExitPlanMode` требуют взаимодействия пользователя и обычно блокируют в [неинтерактивном режиме](/ru/headless) с флагом `-p`. Возврат `permissionDecision: "allow"` вместе с `updatedInput` удовлетворяет этому требованию: hook читает входные данные инструмента из stdin, собирает ответ через ваш собственный UI и возвращает его в `updatedInput`, чтобы инструмент запустился без запроса. Возврат только `"allow"` недостаточен для этих инструментов. Для `AskUserQuestion` повторите исходный массив `questions` и добавьте объект [`answers`](#askuserquestion), соответствующий тексту каждого вопроса выбранному ответу.

1185 

1186<Note>

1187 PreToolUse ранее использовал верхнеуровневые поля `decision` и `reason`, но они устарели для этого события. Используйте `hookSpecificOutput.permissionDecision` и `hookSpecificOutput.permissionDecisionReason` вместо этого. Устаревшие значения `"approve"` и `"block"` соответствуют `"allow"` и `"deny"` соответственно. Другие события, такие как PostToolUse и Stop, продолжают использовать верхнеуровневые `decision` и `reason` как их текущий формат.

1188</Note>

1189 

1190#### Defer a tool call for later

1191 

1192`"defer"` предназначен для интеграций, которые запускают `claude -p` как подпроцесс и читают его JSON выход, таких как приложение Agent SDK или пользовательский UI, построенный на основе Claude Code. Это позволяет этому вызывающему процессу приостановить Claude при вызове инструмента, собрать входные данные через его собственный интерфейс и возобновить с того же места. Claude Code соблюдает это значение только в [неинтерактивном режиме](/ru/headless) с флагом `-p`. В интерактивных сеансах он логирует предупреждение и игнорирует результат hook.

1193 

1194<Note>

1195 Значение `defer` требует Claude Code v2.1.89 или позже. Более ранние версии не распознают его и инструмент проходит через обычный поток разрешений.

1196</Note>

1197 

1198Инструмент `AskUserQuestion` — это типичный случай: Claude хочет что-то спросить у пользователя, но нет терминала для ответа. Круговой путь работает так:

1199 

12001. Claude вызывает `AskUserQuestion`. Срабатывает hook `PreToolUse`.

12012. Hook возвращает `permissionDecision: "defer"`. Инструмент не выполняется. Процесс выходит с `stop_reason: "tool_deferred"` и отложенный вызов инструмента сохраняется в транскрипте.

12023. Вызывающий процесс читает `deferred_tool_use` из результата SDK, выводит вопрос в своём UI и ждёт ответа.

12034. Вызывающий процесс запускает `claude -p --resume <session-id>`. Тот же вызов инструмента срабатывает `PreToolUse` снова.

12045. Hook возвращает `permissionDecision: "allow"` с ответом в `updatedInput`. Инструмент выполняется и Claude продолжает.

1205 

1206Поле `deferred_tool_use` содержит `id`, `name` и `input` инструмента. `input` — это параметры, которые Claude сгенерировал для вызова инструмента, захваченные перед выполнением:

1207 

1208```json theme={null}

1209{

1210 "type": "result",

1211 "subtype": "success",

1212 "stop_reason": "tool_deferred",

1213 "session_id": "abc123",

1214 "deferred_tool_use": {

1215 "id": "toolu_01abc",

1216 "name": "AskUserQuestion",

1217 "input": { "questions": [{ "question": "Which framework?", "header": "Framework", "options": [{"label": "React"}, {"label": "Vue"}], "multiSelect": false }] }

1218 }

1219}

1220```

1221 

1222Нет таймаута или лимита повторных попыток. Сеанс остаётся на диске до возобновления, в соответствии с операцией очистки [`cleanupPeriodDays`](/ru/settings#available-settings), которая удаляет файлы сеанса через 30 дней по умолчанию. Если ответ не готов при возобновлении, hook может вернуть `"defer"` снова и процесс выходит так же. Вызывающий процесс управляет тем, когда разорвать цикл, в конечном итоге возвращая `"allow"` или `"deny"` из hook.

1223 

1224`"defer"` работает только когда Claude делает один вызов инструмента в ходе. Если Claude делает несколько вызовов инструментов одновременно, `"defer"` игнорируется с предупреждением и инструмент проходит через обычный поток разрешений. Ограничение существует потому что возобновление может только повторно запустить один инструмент: нет способа отложить один вызов из пакета без оставления других неразрешённых.

1225 

1226Если отложенный инструмент больше не доступен при возобновлении, процесс выходит с `stop_reason: "tool_deferred_unavailable"` и `is_error: true` перед срабатыванием hook. Это происходит когда MCP сервер, который предоставил инструмент, не подключен для возобновлённого сеанса. Полезная нагрузка `deferred_tool_use` всё ещё включена, чтобы вы могли идентифицировать, какой инструмент исчез.

1227 

1228<Warning>

1229 `--resume` не восстанавливает режим разрешения из предыдущего сеанса. Передайте тот же флаг `--permission-mode` при возобновлении, который был активен при отложении инструмента. Claude Code логирует предупреждение, если режимы отличаются.

1230</Warning>

1231 

1232### PermissionRequest

1233 

1234Запускается при показе пользователю диалога разрешения.

1235Используйте [PermissionRequest decision control](#permissionrequest-decision-control) для разрешения или отклонения от имени пользователя.

1236 

1237Совпадает с именем инструмента, те же значения, что и PreToolUse.

1238 

1239#### PermissionRequest input

1240 

1241PermissionRequest hooks получают поля `tool_name` и `tool_input` как PreToolUse hooks, но без `tool_use_id`. Опциональный массив `permission_suggestions` содержит параметры "всегда разрешить", которые пользователь обычно видит в диалоге разрешения. Разница в том, когда срабатывает hook: PermissionRequest hooks запускаются при показе диалога разрешения пользователю, в то время как PreToolUse hooks запускаются перед выполнением инструмента независимо от статуса разрешения.

1242 

1243```json theme={null}

1244{

1245 "session_id": "abc123",

1246 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1247 "cwd": "/Users/...",

1248 "permission_mode": "default",

1249 "hook_event_name": "PermissionRequest",

1250 "tool_name": "Bash",

1251 "tool_input": {

1252 "command": "rm -rf node_modules",

1253 "description": "Remove node_modules directory"

1254 },

1255 "permission_suggestions": [

1256 {

1257 "type": "addRules",

1258 "rules": [{ "toolName": "Bash", "ruleContent": "rm -rf node_modules" }],

1259 "behavior": "allow",

1260 "destination": "localSettings"

1261 }

1262 ]

1263}

1264```

1265 

1266#### PermissionRequest decision control

1267 

1268Hooks `PermissionRequest` могут разрешить или отклонить запросы разрешения. В дополнение к [JSON полям выхода](#json-output), доступным для всех hooks, ваш скрипт hook может вернуть объект `decision` с этими полями, специфичными для события:

1269 

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

1271| :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1272| `behavior` | `"allow"` предоставляет разрешение, `"deny"` отклоняет его. [Правила отклонения и запроса](/ru/permissions#manage-permissions) всё ещё применяются, поэтому hook, возвращающий `"allow"`, не переопределяет совпадающее правило отклонения |

1273| `updatedInput` | Только для `"allow"`: изменяет параметры входа инструмента перед выполнением. Заменяет весь объект входа, поэтому включите неизменённые поля наряду с изменёнными. Изменённый вход повторно оценивается против правил отклонения и запроса |

1274| `updatedPermissions` | Только для `"allow"`: массив [записей обновления разрешения](#permission-update-entries) для применения, таких как добавление правила разрешения или изменение режима разрешения сеанса |

1275| `message` | Только для `"deny"`: говорит Claude, почему разрешение было отклонено |

1276| `interrupt` | Только для `"deny"`: если `true`, останавливает Claude |

1277 

1278```json theme={null}

1279{

1280 "hookSpecificOutput": {

1281 "hookEventName": "PermissionRequest",

1282 "decision": {

1283 "behavior": "allow",

1284 "updatedInput": {

1285 "command": "npm run lint"

1286 }

1287 }

1288 }

1289}

1290```

1291 

1292#### Permission update entries

1293 

1294Поле выхода `updatedPermissions` и поле входа [`permission_suggestions`](#permissionrequest-input) оба используют один и тот же массив объектов записей. Каждая запись имеет `type`, который определяет её другие поля, и `destination`, который управляет тем, где применяется изменение.

1295 

1296| `type` | Поля | Эффект |

1297| :------------------ | :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1298| `addRules` | `rules`, `behavior`, `destination` | Добавляет правила разрешения. `rules` — это массив объектов `{toolName, ruleContent?}`. Опустите `ruleContent` для совпадения со всем инструментом. `behavior` — это `"allow"`, `"deny"` или `"ask"` |

1299| `replaceRules` | `rules`, `behavior`, `destination` | Заменяет все правила данного `behavior` в `destination` предоставленными `rules` |

1300| `removeRules` | `rules`, `behavior`, `destination` | Удаляет совпадающие правила данного `behavior` |

1301| `setMode` | `mode`, `destination` | Изменяет режим разрешения. Допустимые режимы — `default`, `acceptEdits`, `dontAsk`, `bypassPermissions` и `plan` |

1302| `addDirectories` | `directories`, `destination` | Добавляет рабочие каталоги. `directories` — это массив строк пути |

1303| `removeDirectories` | `directories`, `destination` | Удаляет рабочие каталоги |

1304 

1305<Note>

1306 `setMode` с `bypassPermissions` только вступает в силу, если сеанс был запущен с режимом обхода, уже доступным: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` или `permissions.defaultMode: "bypassPermissions"` в настройках, и режим не отключен [`permissions.disableBypassPermissionsMode`](/ru/permissions#managed-settings). В противном случае обновление — это no-op. `bypassPermissions` никогда не сохраняется как `defaultMode` независимо от `destination`.

1307</Note>

1308 

1309Поле `destination` на каждой записи определяет, остаётся ли изменение в памяти или сохраняется в файл настроек.

1310 

1311| `destination` | Записывает в |

1312| :---------------- | :--------------------------------------------------- |

1313| `session` | только в памяти, отбрасывается при завершении сеанса |

1314| `localSettings` | `.claude/settings.local.json` |

1315| `projectSettings` | `.claude/settings.json` |

1316| `userSettings` | `~/.claude/settings.json` |

1317 

1318Hook может вывести одно из `permission_suggestions`, которые он получил, как свой собственный выход `updatedPermissions`, что эквивалентно выбору пользователем этого параметра "всегда разрешить" в диалоге.

1319 

1320### PostToolUse

1321 

1322Запускается сразу после успешного завершения инструмента.

1323 

1324Совпадает с именем инструмента, те же значения, что и PreToolUse.

1325 

1326#### PostToolUse input

1327 

1328Hooks `PostToolUse` срабатывают после того, как инструмент уже выполнился успешно. Входные данные включают как `tool_input`, аргументы, отправленные инструменту, так и `tool_response`, результат, который он вернул. Точная схема для обоих зависит от инструмента.

1329 

1330```json theme={null}

1331{

1332 "session_id": "abc123",

1333 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1334 "cwd": "/Users/...",

1335 "permission_mode": "default",

1336 "hook_event_name": "PostToolUse",

1337 "tool_name": "Write",

1338 "tool_input": {

1339 "file_path": "/path/to/file.txt",

1340 "content": "file content"

1341 },

1342 "tool_response": {

1343 "filePath": "/path/to/file.txt",

1344 "success": true

1345 },

1346 "tool_use_id": "toolu_01ABC123...",

1347 "duration_ms": 12

1348}

1349```

1350 

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

1352| :------------ | :-------------------------------------------------------------------------------------------------------------------------------- |

1353| `duration_ms` | Опциональный. Время выполнения инструмента в миллисекундах. Исключает время, потраченное на диалоги разрешения и hooks PreToolUse |

1354 

1355#### PostToolUse decision control

1356 

1357Hooks `PostToolUse` могут предоставить обратную связь Claude после выполнения инструмента. В дополнение к [JSON полям выхода](#json-output), доступным для всех hooks, ваш скрипт hook может вернуть эти поля, специфичные для события:

1358 

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

1360| :--------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |

1361| `decision` | `"block"` предлагает Claude с `reason`. Опустите, чтобы разрешить действию продолжаться |

1362| `reason` | Объяснение, показываемое Claude при `decision` равном `"block"` |

1363| `additionalContext` | Строка, добавленная в контекст Claude наряду с результатом инструмента. См. [Add context for Claude](#add-context-for-claude) |

1364| `updatedToolOutput` | Заменяет выход инструмента предоставленным значением перед отправкой Claude. Значение должно соответствовать форме выхода инструмента |

1365| `updatedMCPToolOutput` | Заменяет выход только для [MCP инструментов](#match-mcp-tools). Предпочитайте `updatedToolOutput`, который работает для всех инструментов |

1366 

1367Пример ниже заменяет выход вызова `Bash`. Значение замены соответствует форме выхода инструмента `Bash`:

1368 

1369```json theme={null}

1370{

1371 "hookSpecificOutput": {

1372 "hookEventName": "PostToolUse",

1373 "additionalContext": "Additional information for Claude",

1374 "updatedToolOutput": {

1375 "stdout": "[redacted]",

1376 "stderr": "",

1377 "interrupted": false,

1378 "isImage": false

1379 }

1380 }

1381}

1382```

1383 

1384<Warning>

1385 `updatedToolOutput` только изменяет то, что видит Claude. Инструмент уже запустился к моменту срабатывания hook, поэтому любые написанные файлы, выполненные команды или отправленные сетевые запросы уже вступили в силу. Телеметрия, такая как spans инструментов OpenTelemetry и события аналитики, также захватывает исходный выход перед запуском hook. Чтобы предотвратить или изменить вызов инструмента перед его запуском, используйте hook [PreToolUse](#pretooluse) вместо этого.

1386 

1387 Значение замены должно соответствовать форме выхода инструмента. Встроенные инструменты возвращают структурированные объекты, а не простые строки. Например, `Bash` возвращает объект с полями `stdout`, `stderr`, `interrupted` и `isImage`. Для встроенных инструментов значение, которое не соответствует схеме выхода инструмента, игнорируется и используется исходный выход. Выход инструмента MCP передаётся без проверки схемы. Удаление деталей ошибок, которые нужны Claude, может привести к тому, что он продолжит с неправильным предположением.

1388</Warning>

1389 

1390### PostToolUseFailure

1391 

1392Запускается при сбое выполнения инструмента. Это событие срабатывает для вызовов инструментов, которые выбрасывают ошибки или возвращают результаты сбоя. Используйте это для логирования сбоев, отправки оповещений или предоставления исправляющей обратной связи Claude.

1393 

1394Совпадает с именем инструмента, те же значения, что и PreToolUse.

1395 

1396#### PostToolUseFailure input

1397 

1398PostToolUseFailure hooks получают те же поля `tool_name` и `tool_input`, что и PostToolUse, вместе с информацией об ошибке как верхнеуровневые поля:

1399 

1400```json theme={null}

1401{

1402 "session_id": "abc123",

1403 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1404 "cwd": "/Users/...",

1405 "permission_mode": "default",

1406 "hook_event_name": "PostToolUseFailure",

1407 "tool_name": "Bash",

1408 "tool_input": {

1409 "command": "npm test",

1410 "description": "Run test suite"

1411 },

1412 "tool_use_id": "toolu_01ABC123...",

1413 "error": "Command exited with non-zero status code 1",

1414 "is_interrupt": false,

1415 "duration_ms": 4187

1416}

1417```

1418 

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

1420| :------------- | :-------------------------------------------------------------------------------------------------------------------------------- |

1421| `error` | Строка, описывающая, что пошло не так |

1422| `is_interrupt` | Опциональное логическое значение, указывающее, был ли сбой вызван прерыванием пользователя |

1423| `duration_ms` | Опциональный. Время выполнения инструмента в миллисекундах. Исключает время, потраченное на диалоги разрешения и hooks PreToolUse |

1424 

1425#### PostToolUseFailure decision control

1426 

1427Hooks `PostToolUseFailure` могут предоставить контекст Claude после сбоя инструмента. В дополнение к [JSON полям выхода](#json-output), доступным для всех hooks, ваш скрипт hook может вернуть эти поля, специфичные для события:

1428 

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

1430| :------------------ | :------------------------------------------------------------------------------------------------------------ |

1431| `additionalContext` | Строка, добавленная в контекст Claude наряду с ошибкой. См. [Add context for Claude](#add-context-for-claude) |

1432 

1433```json theme={null}

1434{

1435 "hookSpecificOutput": {

1436 "hookEventName": "PostToolUseFailure",

1437 "additionalContext": "Additional information about the failure for Claude"

1438 }

1439}

1440```

1441 

1442### PostToolBatch

1443 

1444Запускается один раз после разрешения каждого вызова инструмента в пакете, перед отправкой Claude Code следующего запроса модели. `PostToolUse` срабатывает один раз за инструмент, что означает, что он срабатывает одновременно, когда Claude делает параллельные вызовы инструментов. `PostToolBatch` срабатывает ровно один раз со всем пакетом, поэтому это правильное место для внедрения контекста, который зависит от набора инструментов, которые запустились, а не от какого-либо одного инструмента. Нет фильтра для этого события.

1445 

1446#### PostToolBatch input

1447 

1448В дополнение к [общим полям входа](#common-input-fields), PostToolBatch hooks получают `tool_calls`, массив, описывающий каждый вызов инструмента в пакете:

1449 

1450```json theme={null}

1451{

1452 "session_id": "abc123",

1453 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1454 "cwd": "/Users/...",

1455 "permission_mode": "default",

1456 "hook_event_name": "PostToolBatch",

1457 "tool_calls": [

1458 {

1459 "tool_name": "Read",

1460 "tool_input": {"file_path": "/.../ledger/accounts.py"},

1461 "tool_use_id": "toolu_01...",

1462 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."

1463 },

1464 {

1465 "tool_name": "Read",

1466 "tool_input": {"file_path": "/.../ledger/transactions.py"},

1467 "tool_use_id": "toolu_02...",

1468 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."

1469 }

1470 ]

1471}

1472```

1473 

1474`tool_response` содержит то же содержимое, которое модель получает в соответствующем блоке `tool_result`. Значение — это сериализованная строка или массив блоков содержимого, ровно как инструмент его выдал. Для `Read` это означает текст с префиксом номера строки, а не необработанное содержимое файла. Ответы могут быть большими, поэтому анализируйте только нужные вам поля.

1475 

1476<Note>

1477 Форма `tool_response` отличается от `PostToolUse`. `PostToolUse` передаёт структурированный объект `Output` инструмента, такой как `{filePath: "...", success: true}` для `Write`; `PostToolBatch` передаёт сериализованное содержимое `tool_result`, которое видит модель.

1478</Note>

1479 

1480#### PostToolBatch decision control

1481 

1482Hooks `PostToolBatch` могут внедрить контекст для Claude. В дополнение к [JSON полям выхода](#json-output), доступным для всех hooks, ваш скрипт hook может вернуть эти поля, специфичные для события:

1483 

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

1485| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

1486| `additionalContext` | Строка контекста, внедрённая один раз перед следующим вызовом модели. См. [Add context for Claude](#add-context-for-claude) для деталей доставки, что в неё поместить и как возобновлённые сеансы обрабатывают прошлые значения |

1487 

1488```json theme={null}

1489{

1490 "hookSpecificOutput": {

1491 "hookEventName": "PostToolBatch",

1492 "additionalContext": "These files are part of the ledger module. Run pytest before marking the task complete."

1493 }

1494}

1495```

1496 

1497Возврат `decision: "block"` или `continue: false` останавливает агентный цикл перед следующим вызовом модели.

1498 

1499### PermissionDenied

1500 

1501Запускается когда классификатор [auto mode](/ru/permission-modes#eliminate-prompts-with-auto-mode) отклоняет вызов инструмента. Этот hook срабатывает только в auto mode: он не запускается когда вы вручную отклоняете диалог разрешения, когда hook `PreToolUse` блокирует вызов или когда совпадает правило `deny`. Используйте это для логирования отказов классификатора, корректировки конфигурации или сообщения модели, что она может повторить попытку вызова инструмента.

1502 

1503Совпадает с именем инструмента, те же значения, что и PreToolUse.

1504 

1505#### PermissionDenied input

1506 

1507В дополнение к [общим полям входа](#common-input-fields), PermissionDenied hooks получают `tool_name`, `tool_input`, `tool_use_id` и `reason`.

1508 

1509```json theme={null}

1510{

1511 "session_id": "abc123",

1512 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1513 "cwd": "/Users/...",

1514 "permission_mode": "auto",

1515 "hook_event_name": "PermissionDenied",

1516 "tool_name": "Bash",

1517 "tool_input": {

1518 "command": "rm -rf /tmp/build",

1519 "description": "Clean build directory"

1520 },

1521 "tool_use_id": "toolu_01ABC123...",

1522 "reason": "Auto mode denied: command targets a path outside the project"

1523}

1524```

1525 

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

1527| :------- | :-------------------------------------------------------------------- |

1528| `reason` | Объяснение классификатора того, почему вызов инструмента был отклонён |

1529 

1530#### PermissionDenied decision control

1531 

1532PermissionDenied hooks могут сообщить модели, что она может повторить попытку отклонённого вызова инструмента. Верните JSON объект с `hookSpecificOutput.retry`, установленным на `true`:

1533 

1534```json theme={null}

1535{

1536 "hookSpecificOutput": {

1537 "hookEventName": "PermissionDenied",

1538 "retry": true

1539 }

1540}

1541```

1542 

1543Когда `retry` равно `true`, Claude Code добавляет сообщение в разговор, говорящее модели, что она может повторить попытку вызова инструмента. Отказ сам по себе не отменяется. Если ваш hook не возвращает JSON или возвращает `retry: false`, отказ остаётся и модель получает исходное сообщение об отклонении.

1544 

1545### Notification

1546 

1547Запускается при отправке Claude Code уведомлений. Совпадает с типом уведомления: `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response`. Опустите фильтр для запуска hooks для всех типов уведомлений.

1548 

1549Используйте отдельные фильтры для запуска разных обработчиков в зависимости от типа уведомления. Эта конфигурация запускает скрипт оповещения, специфичный для разрешения, когда Claude нуждается в одобрении разрешения, и другое уведомление, когда Claude был неактивен:

1550 

1551```json theme={null}

1552{

1553 "hooks": {

1554 "Notification": [

1555 {

1556 "matcher": "permission_prompt",

1557 "hooks": [

1558 {

1559 "type": "command",

1560 "command": "/path/to/permission-alert.sh"

1561 }

1562 ]

1563 },

1564 {

1565 "matcher": "idle_prompt",

1566 "hooks": [

1567 {

1568 "type": "command",

1569 "command": "/path/to/idle-notification.sh"

1570 }

1571 ]

1572 }

1573 ]

1574 }

1575}

1576```

1577 

1578#### Notification input

1579 

1580В дополнение к [общим полям входа](#common-input-fields), Notification hooks получают `message` с текстом уведомления, опциональный `title` и `notification_type`, указывающий, какой тип сработал.

1581 

1582```json theme={null}

1583{

1584 "session_id": "abc123",

1585 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1586 "cwd": "/Users/...",

1587 "hook_event_name": "Notification",

1588 "message": "Claude needs your permission to use Bash",

1589 "title": "Permission needed",

1590 "notification_type": "permission_prompt"

1591}

1592```

1593 

1594Notification hooks не могут блокировать или изменять уведомления. Они предназначены для побочных эффектов, таких как пересылка уведомления во внешний сервис. [Общие JSON поля выхода](#json-output) такие как `systemMessage` применяются.

1595 

1596### SubagentStart

1597 

1598Запускается при порождении Claude Code subagent через инструмент Agent. Поддерживает фильтры для фильтрации по имени типа агента (встроенные агенты, такие как `general-purpose`, `Explore`, `Plan`, или пользовательские имена агентов из `.claude/agents/`).

1599 

1600#### SubagentStart input

1601 

1602В дополнение к [общим полям входа](#common-input-fields), SubagentStart hooks получают `agent_id` с уникальным идентификатором для subagent и `agent_type` с именем агента (встроенные агенты, такие как `"general-purpose"`, `"Explore"`, `"Plan"` или пользовательские имена агентов).

1603 

1604```json theme={null}

1605{

1606 "session_id": "abc123",

1607 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1608 "cwd": "/Users/...",

1609 "hook_event_name": "SubagentStart",

1610 "agent_id": "agent-abc123",

1611 "agent_type": "Explore"

1612}

1613```

1614 

1615SubagentStart hooks не могут блокировать создание subagent, но они могут внедрить контекст в subagent. В дополнение к [JSON полям выхода](#json-output), доступным для всех hooks, вы можете вернуть:

1616 

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

1618| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------- |

1619| `additionalContext` | Строка, добавленная в контекст subagent в начале его разговора, перед его первой подсказкой. См. [Add context for Claude](#add-context-for-claude) |

1620 

1621```json theme={null}

1622{

1623 "hookSpecificOutput": {

1624 "hookEventName": "SubagentStart",

1625 "additionalContext": "Follow security guidelines for this task"

1626 }

1627}

1628```

1629 

1630### SubagentStop

1631 

1632Запускается при завершении ответа Claude Code subagent. Совпадает с типом агента, те же значения, что и SubagentStart.

1633 

1634#### SubagentStop input

1635 

1636В дополнение к [общим полям входа](#common-input-fields), SubagentStop hooks получают `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path` и `last_assistant_message`. Поле `agent_type` — это значение, используемое для фильтрации фильтра. `transcript_path` — это транскрипт основного сеанса, в то время как `agent_transcript_path` — это собственный транскрипт subagent, хранящийся в вложенной папке `subagents/`. Поле `last_assistant_message` содержит текстовое содержимое финального ответа subagent, поэтому hooks могут получить к нему доступ без анализа файла транскрипта.

1637 

1638```json theme={null}

1639{

1640 "session_id": "abc123",

1641 "transcript_path": "~/.claude/projects/.../abc123.jsonl",

1642 "cwd": "/Users/...",

1643 "permission_mode": "default",

1644 "hook_event_name": "SubagentStop",

1645 "stop_hook_active": false,

1646 "agent_id": "def456",

1647 "agent_type": "Explore",

1648 "agent_transcript_path": "~/.claude/projects/.../abc123/subagents/agent-def456.jsonl",

1649 "last_assistant_message": "Analysis complete. Found 3 potential issues..."

1650}

1651```

1652 

1653SubagentStop hooks используют тот же формат управления решением, что и [Stop hooks](#stop-decision-control).

1654 

1655### TaskCreated

1656 

1657Запускается при создании задачи через инструмент `TaskCreate`. Используйте это для обеспечения соглашений об именовании, требования описаний задач или предотвращения создания определённых задач.

1658 

1659Когда hook `TaskCreated` выходит с кодом 2, задача не создаётся и сообщение stderr передаётся обратно модели как обратная связь. Чтобы полностью остановить товарища вместо его повторного запуска, верните JSON с `{"continue": false, "stopReason": "..."}`. TaskCreated hooks не поддерживают фильтры и срабатывают при каждом вхождении.

1660 

1661#### TaskCreated input

1662 

1663В дополнение к [общим полям входа](#common-input-fields), TaskCreated hooks получают `task_id`, `task_subject` и опционально `task_description`, `teammate_name` и `team_name`.

1664 

1665```json theme={null}

1666{

1667 "session_id": "abc123",

1668 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1669 "cwd": "/Users/...",

1670 "permission_mode": "default",

1671 "hook_event_name": "TaskCreated",

1672 "task_id": "task-001",

1673 "task_subject": "Implement user authentication",

1674 "task_description": "Add login and signup endpoints",

1675 "teammate_name": "implementer",

1676 "team_name": "my-project"

1677}

1678```

1679 

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

1681| :----------------- | :--------------------------------------------------- |

1682| `task_id` | Идентификатор создаваемой задачи |

1683| `task_subject` | Название задачи |

1684| `task_description` | Подробное описание задачи. Может отсутствовать |

1685| `teammate_name` | Имя товарища, создающего задачу. Может отсутствовать |

1686| `team_name` | Имя команды. Может отсутствовать |

1687 

1688#### TaskCreated decision control

1689 

1690TaskCreated hooks поддерживают два способа управления созданием задачи:

1691 

1692* **Exit code 2**: задача не создаётся и сообщение stderr передаётся обратно модели как обратная связь.

1693* **JSON `{"continue": false, "stopReason": "..."}`**: полностью останавливает товарища, соответствуя поведению hook `Stop`. `stopReason` показывается пользователю.

1694 

1695Этот пример блокирует задачи, чьи названия не следуют требуемому формату:

1696 

1697```bash theme={null}

1698#!/bin/bash

1699INPUT=$(cat)

1700TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

1701 

1702if [[ ! "$TASK_SUBJECT" =~ ^\[TICKET-[0-9]+\] ]]; then

1703 echo "Task subject must start with a ticket number, e.g. '[TICKET-123] Add feature'" >&2

1704 exit 2

1705fi

1706 

1707exit 0

1708```

1709 

1710### TaskCompleted

1711 

1712Запускается при отметке задачи как завершённой. Это срабатывает в двух ситуациях: когда любой агент явно отмечает задачу как завершённую через инструмент TaskUpdate, или когда товарищ [agent team](/ru/agent-teams) завершает свой ход с незавершёнными задачами. Используйте это для обеспечения критериев завершения, таких как прохождение тестов или проверок линтинга перед закрытием задачи.

1713 

1714Когда hook `TaskCompleted` выходит с кодом 2, задача не отмечается как завершённая и сообщение stderr передаётся обратно модели как обратная связь. Чтобы полностью остановить товарища вместо его повторного запуска, верните JSON с `{"continue": false, "stopReason": "..."}`. TaskCompleted hooks не поддерживают фильтры и срабатывают при каждом вхождении.

1715 

1716#### TaskCompleted input

1717 

1718В дополнение к [общим полям входа](#common-input-fields), TaskCompleted hooks получают `task_id`, `task_subject` и опционально `task_description`, `teammate_name` и `team_name`.

1719 

1720```json theme={null}

1721{

1722 "session_id": "abc123",

1723 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1724 "cwd": "/Users/...",

1725 "permission_mode": "default",

1726 "hook_event_name": "TaskCompleted",

1727 "task_id": "task-001",

1728 "task_subject": "Implement user authentication",

1729 "task_description": "Add login and signup endpoints",

1730 "teammate_name": "implementer",

1731 "team_name": "my-project"

1732}

1733```

1734 

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

1736| :----------------- | :----------------------------------------------------- |

1737| `task_id` | Идентификатор завершаемой задачи |

1738| `task_subject` | Название задачи |

1739| `task_description` | Подробное описание задачи. Может отсутствовать |

1740| `teammate_name` | Имя товарища, завершающего задачу. Может отсутствовать |

1741| `team_name` | Имя команды. Может отсутствовать |

1742 

1743#### TaskCompleted decision control

1744 

1745TaskCompleted hooks поддерживают два способа управления завершением задачи:

1746 

1747* **Exit code 2**: задача не отмечается как завершённая и сообщение stderr передаётся обратно модели как обратная связь.

1748* **JSON `{"continue": false, "stopReason": "..."}`**: полностью останавливает товарища, соответствуя поведению hook `Stop`. `stopReason` показывается пользователю.

1749 

1750Этот пример запускает тесты и блокирует завершение задачи, если они не пройдены:

1751 

1752```bash theme={null}

1753#!/bin/bash

1754INPUT=$(cat)

1755TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

1756 

1757# Run the test suite

1758if ! npm test 2>&1; then

1759 echo "Tests not passing. Fix failing tests before completing: $TASK_SUBJECT" >&2

1760 exit 2

1761fi

1762 

1763exit 0

1764```

1765 

1766### Stop

1767 

1768Запускается при завершении ответа основного агента Claude Code. Не запускается, если остановка произошла из-за прерывания пользователя. Ошибки API срабатывают [StopFailure](#stopfailure) вместо этого.

1769 

1770#### Stop input

1771 

1772В дополнение к [общим полям входа](#common-input-fields), Stop hooks получают `stop_hook_active` и `last_assistant_message`. Поле `stop_hook_active` равно `true`, когда Claude Code уже продолжает в результате stop hook. Проверьте это значение или обработайте транскрипт, чтобы предотвратить бесконечное выполнение Claude Code. Поле `last_assistant_message` содержит текстовое содержимое финального ответа Claude, поэтому hooks могут получить к нему доступ без анализа файла транскрипта.

1773 

1774```json theme={null}

1775{

1776 "session_id": "abc123",

1777 "transcript_path": "~/.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1778 "cwd": "/Users/...",

1779 "permission_mode": "default",

1780 "hook_event_name": "Stop",

1781 "stop_hook_active": true,

1782 "last_assistant_message": "I've completed the refactoring. Here's a summary..."

1783}

1784```

1785 

1786#### Stop decision control

1787 

1788Hooks `Stop` и `SubagentStop` могут управлять тем, продолжает ли Claude. В дополнение к [JSON полям выхода](#json-output), доступным для всех hooks, ваш скрипт hook может вернуть эти поля, специфичные для события:

1789 

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

1791| :--------- | :-------------------------------------------------------------------------------------- |

1792| `decision` | `"block"` предотвращает остановку Claude. Опустите, чтобы разрешить Claude остановиться |

1793| `reason` | Требуется при `decision` равном `"block"`. Говорит Claude, почему оно должно продолжить |

1794 

1795```json theme={null}

1796{

1797 "decision": "block",

1798 "reason": "Must be provided when Claude is blocked from stopping"

1799}

1800```

1801 

1802### StopFailure

1803 

1804Запускается вместо [Stop](#stop) когда ход заканчивается из-за ошибки API. Выход и код выхода игнорируются. Используйте это для логирования сбоев, отправки оповещений или принятия действий восстановления, когда Claude не может завершить ответ из-за ограничений скорости, проблем аутентификации или других ошибок API.

1805 

1806#### StopFailure input

1807 

1808В дополнение к [общим полям входа](#common-input-fields), StopFailure hooks получают `error`, опциональные `error_details` и `last_assistant_message`. Поле `error` определяет тип ошибки и используется для фильтрации фильтра.

1809 

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

1811| :----------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1812| `error` | Тип ошибки: `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens` или `unknown` |

1813| `error_details` | Дополнительные детали об ошибке, когда доступны |

1814| `last_assistant_message` | Отрендеренный текст ошибки, показанный в разговоре. В отличие от `Stop` и `SubagentStop`, где это поле содержит разговорный выход Claude, для `StopFailure` оно содержит строку ошибки API, такую как `"API Error: Rate limit reached"` |

1815 

1816```json theme={null}

1817{

1818 "session_id": "abc123",

1819 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1820 "cwd": "/Users/...",

1821 "hook_event_name": "StopFailure",

1822 "error": "rate_limit",

1823 "error_details": "429 Too Many Requests",

1824 "last_assistant_message": "API Error: Rate limit reached"

1825}

1826```

1827 

1828StopFailure hooks не имеют управления решением. Они запускаются только в целях уведомления и логирования.

1829 

1830### TeammateIdle

1831 

1832Запускается когда товарищ [agent team](/ru/agent-teams) собирается перейти в режим ожидания после завершения своего хода. Используйте это для обеспечения качественных ворот перед остановкой работы товарища, такие как требование прохождения проверок линтинга или проверка существования выходных файлов.

1833 

1834Когда hook `TeammateIdle` выходит с кодом 2, товарищ получает сообщение stderr как обратную связь и продолжает работать вместо перехода в режим ожидания. Чтобы полностью остановить товарища вместо его повторного запуска, верните JSON с `{"continue": false, "stopReason": "..."}`. TeammateIdle hooks не поддерживают фильтры и срабатывают при каждом вхождении.

1835 

1836#### TeammateIdle input

1837 

1838В дополнение к [общим полям входа](#common-input-fields), TeammateIdle hooks получают `teammate_name` и `team_name`.

1839 

1840```json theme={null}

1841{

1842 "session_id": "abc123",

1843 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1844 "cwd": "/Users/...",

1845 "permission_mode": "default",

1846 "hook_event_name": "TeammateIdle",

1847 "teammate_name": "researcher",

1848 "team_name": "my-project"

1849}

1850```

1851 

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

1853| :-------------- | :-------------------------------------------------------- |

1854| `teammate_name` | Имя товарища, который собирается перейти в режим ожидания |

1855| `team_name` | Имя команды |

1856 

1857#### TeammateIdle decision control

1858 

1859TeammateIdle hooks поддерживают два способа управления поведением товарища:

1860 

1861* **Exit code 2**: товарищ получает сообщение stderr как обратную связь и продолжает работать вместо перехода в режим ожидания.

1862* **JSON `{"continue": false, "stopReason": "..."}`**: полностью останавливает товарища, соответствуя поведению hook `Stop`. `stopReason` показывается пользователю.

1863 

1864Этот пример проверяет, что артефакт сборки существует перед разрешением товарищу перейти в режим ожидания:

1865 

1866```bash theme={null}

1867#!/bin/bash

1868 

1869if [ ! -f "./dist/output.js" ]; then

1870 echo "Build artifact missing. Run the build before stopping." >&2

1871 exit 2

1872fi

1873 

1874exit 0

1875```

1876 

1877### ConfigChange

1878 

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

1880 

1881ConfigChange hooks срабатывают для изменений файлов настроек, управляемых параметров политики и файлов skills. Поле `source` во входных данных говорит вам, какой тип конфигурации изменился, и опциональное поле `file_path` предоставляет путь к изменённому файлу.

1882 

1883Фильтр фильтрует по источнику конфигурации:

1884 

1885| Фильтр | Когда он срабатывает |

1886| :----------------- | :---------------------------------------- |

1887| `user_settings` | `~/.claude/settings.json` изменяется |

1888| `project_settings` | `.claude/settings.json` изменяется |

1889| `local_settings` | `.claude/settings.local.json` изменяется |

1890| `policy_settings` | Управляемые параметры политики изменяются |

1891| `skills` | Файл skill в `.claude/skills/` изменяется |

1892 

1893Этот пример логирует все изменения конфигурации для аудита безопасности:

1894 

1895```json theme={null}

1896{

1897 "hooks": {

1898 "ConfigChange": [

1899 {

1900 "hooks": [

1901 {

1902 "type": "command",

1903 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/audit-config-change.sh"

1904 }

1905 ]

1906 }

1907 ]

1908 }

1909}

1910```

1911 

1912#### ConfigChange input

1913 

1914В дополнение к [общим полям входа](#common-input-fields), ConfigChange hooks получают `source` и опционально `file_path`. Поле `source` указывает, какой тип конфигурации изменился, и `file_path` предоставляет путь к конкретному изменённому файлу.

1915 

1916```json theme={null}

1917{

1918 "session_id": "abc123",

1919 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

1920 "cwd": "/Users/...",

1921 "hook_event_name": "ConfigChange",

1922 "source": "project_settings",

1923 "file_path": "/Users/.../my-project/.claude/settings.json"

1924}

1925```

1926 

1927#### ConfigChange decision control

1928 

1929ConfigChange hooks могут блокировать применение изменений конфигурации. Используйте exit code 2 или JSON `decision` для предотвращения изменения. При блокировке новые параметры не применяются к запущенному сеансу.

1930 

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

1932| :--------- | :--------------------------------------------------------------------------------------------- |

1933| `decision` | `"block"` предотвращает применение изменения конфигурации. Опустите, чтобы разрешить изменение |

1934| `reason` | Объяснение, показываемое пользователю при `decision` равном `"block"` |

1935 

1936```json theme={null}

1937{

1938 "decision": "block",

1939 "reason": "Configuration changes to project settings require admin approval"

1940}

1941```

1942 

1943Изменения `policy_settings` не могут быть заблокированы. Hooks всё ещё срабатывают для источников `policy_settings`, поэтому вы можете использовать их для аудита логирования, но любое решение блокировки игнорируется. Это гарантирует, что управляемые предприятием параметры всегда вступают в силу.

1944 

1945### CwdChanged

1946 

1947Запускается при изменении рабочего каталога во время сеанса, например когда Claude выполняет команду `cd`. Используйте это для реакции на изменения каталога: перезагрузка переменных окружения, активация специфичных для проекта цепочек инструментов или автоматический запуск скриптов настройки. Объединяется с [FileChanged](#filechanged) для инструментов, таких как [direnv](https://direnv.net/), которые управляют окружением для каждого каталога.

1948 

1949CwdChanged hooks имеют доступ к `CLAUDE_ENV_FILE`. Переменные, написанные в этот файл, сохраняются в последующих командах Bash для сеанса, как и в [SessionStart hooks](#persist-environment-variables).

1950 

1951CwdChanged не поддерживает фильтры и срабатывает при каждом изменении каталога.

1952 

1953#### CwdChanged input

1954 

1955В дополнение к [общим полям входа](#common-input-fields), CwdChanged hooks получают `old_cwd` и `new_cwd`.

1956 

1957```json theme={null}

1958{

1959 "session_id": "abc123",

1960 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

1961 "cwd": "/Users/my-project/src",

1962 "hook_event_name": "CwdChanged",

1963 "old_cwd": "/Users/my-project",

1964 "new_cwd": "/Users/my-project/src"

1965}

1966```

1967 

1968#### CwdChanged output

1969 

1970В дополнение к [JSON полям выхода](#json-output), доступным для всех hooks, CwdChanged hooks могут вернуть `watchPaths` для динамической установки, какие пути файлов [FileChanged](#filechanged) отслеживает:

1971 

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

1973| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1974| `watchPaths` | Массив абсолютных путей. Заменяет текущий динамический список наблюдения (пути из конфигурации `matcher` всегда отслеживаются). Возврат пустого массива очищает динамический список, что типично при входе в новый каталог |

1975 

1976CwdChanged hooks не имеют управления решением. Они не могут блокировать изменение каталога.

1977 

1978### FileChanged

1979 

1980Запускается при изменении отслеживаемого файла на диске. Полезно для перезагрузки переменных окружения при изменении файлов конфигурации проекта.

1981 

1982Поле `matcher` для этого события служит двум целям:

1983 

1984* **Построение списка наблюдения**: значение разделяется на `|` и каждый сегмент регистрируется как буквальное имя файла в рабочем каталоге, поэтому `".envrc|.env"` отслеживает ровно эти два файла. Regex шаблоны здесь не полезны: значение, такое как `^\.env`, отслеживало бы файл буквально названный `^\.env`.

1985* **Фильтрация, какие hooks запускаются**: когда отслеживаемый файл изменяется, то же значение фильтрует, какие группы hook запускаются, используя стандартные [правила фильтра](#matcher-patterns) против базового имени изменённого файла.

1986 

1987FileChanged hooks имеют доступ к `CLAUDE_ENV_FILE`. Переменные, написанные в этот файл, сохраняются в последующих командах Bash для сеанса, как и в [SessionStart hooks](#persist-environment-variables).

1988 

1989#### FileChanged input

1990 

1991В дополнение к [общим полям входа](#common-input-fields), FileChanged hooks получают `file_path` и `event`.

1992 

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

1994| :---------- | :------------------------------------------------------------------------------------------- |

1995| `file_path` | Абсолютный путь к файлу, который изменился |

1996| `event` | Что произошло: `"change"` (файл изменён), `"add"` (файл создан) или `"unlink"` (файл удалён) |

1997 

1998```json theme={null}

1999{

2000 "session_id": "abc123",

2001 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

2002 "cwd": "/Users/my-project",

2003 "hook_event_name": "FileChanged",

2004 "file_path": "/Users/my-project/.envrc",

2005 "event": "change"

2006}

2007```

2008 

2009#### FileChanged output

2010 

2011В дополнение к [JSON полям выхода](#json-output), доступным для всех hooks, FileChanged hooks могут вернуть `watchPaths` для динамического обновления, какие пути файлов отслеживаются:

2012 

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

2014| :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2015| `watchPaths` | Массив абсолютных путей. Заменяет текущий динамический список наблюдения (пути из конфигурации `matcher` всегда отслеживаются). Используйте это, когда ваш скрипт hook обнаруживает дополнительные файлы для отслеживания на основе изменённого файла |

2016 

2017FileChanged hooks не имеют управления решением. Они не могут блокировать изменение файла от возникновения.

2018 

2019### WorktreeCreate

2020 

2021Когда вы запускаете `claude --worktree` или [subagent использует `isolation: "worktree"`](/ru/sub-agents#choose-the-subagent-scope), Claude Code создаёт изолированную рабочую копию, используя `git worktree`. Если вы настроите hook WorktreeCreate, он заменяет поведение git по умолчанию, позволяя вам использовать другую систему контроля версий, такую как SVN, Perforce или Mercurial.

2022 

2023Потому что hook заменяет поведение по умолчанию полностью, [`.worktreeinclude`](/ru/common-workflows#copy-gitignored-files-to-worktrees) не обрабатывается. Если вам нужно скопировать локальные файлы конфигурации, такие как `.env`, в новый worktree, сделайте это внутри вашего скрипта hook.

2024 

2025Hook должен вернуть абсолютный путь к созданному каталогу worktree. Claude Code использует этот путь как рабочий каталог для изолированного сеанса. Command hooks выводят его на stdout; HTTP hooks возвращают его через `hookSpecificOutput.worktreePath`.

2026 

2027Этот пример создаёт рабочую копию SVN и выводит путь для использования Claude Code. Замените URL репозитория на свой:

2028 

2029```json theme={null}

2030{

2031 "hooks": {

2032 "WorktreeCreate": [

2033 {

2034 "hooks": [

2035 {

2036 "type": "command",

2037 "command": "bash -c 'NAME=$(jq -r .name); DIR=\"$HOME/.claude/worktrees/$NAME\"; svn checkout https://svn.example.com/repo/trunk \"$DIR\" >&2 && echo \"$DIR\"'"

2038 }

2039 ]

2040 }

2041 ]

2042 }

2043}

2044```

2045 

2046Hook читает имя worktree `name` из JSON входа на stdin, проверяет свежую копию в новый каталог и выводит путь каталога. `echo` на последней строке — это то, что Claude Code читает как путь worktree. Перенаправьте любой другой выход на stderr, чтобы он не мешал пути.

2047 

2048#### WorktreeCreate input

2049 

2050В дополнение к [общим полям входа](#common-input-fields), WorktreeCreate hooks получают поле `name`. Это идентификатор slug для нового worktree, либо указанный пользователем, либо автоматически сгенерированный (например, `bold-oak-a3f2`).

2051 

2052```json theme={null}

2053{

2054 "session_id": "abc123",

2055 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2056 "cwd": "/Users/...",

2057 "hook_event_name": "WorktreeCreate",

2058 "name": "feature-auth"

2059}

2060```

2061 

2062#### WorktreeCreate output

2063 

2064WorktreeCreate hooks не используют стандартную модель решения разрешить/заблокировать. Вместо этого успех или сбой hook определяет результат. Hook должен вернуть абсолютный путь к созданному каталогу worktree:

2065 

2066* **Command hooks** (`type: "command"`): выводят путь на stdout.

2067* **HTTP hooks** (`type: "http"`): возвращают `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` в теле ответа.

2068 

2069Если hook не удаётся или не производит путь, создание worktree не удаётся с ошибкой.

2070 

2071### WorktreeRemove

2072 

2073Аналог очистки для [WorktreeCreate](#worktreecreate). Этот hook срабатывает при удалении worktree, либо при выходе из сеанса `--worktree` и выборе его удаления, либо при завершении subagent с `isolation: "worktree"`. Для git-based worktrees Claude обрабатывает очистку автоматически с `git worktree remove`. Если вы настроили hook WorktreeCreate для системы контроля версий, не основанной на git, объедините его с hook WorktreeRemove для обработки очистки. Без него каталог worktree остаётся на диске.

2074 

2075Claude Code передаёт путь, который WorktreeCreate вывел на stdout, как `worktree_path` во входных данных hook. Этот пример читает этот путь и удаляет каталог:

2076 

2077```json theme={null}

2078{

2079 "hooks": {

2080 "WorktreeRemove": [

2081 {

2082 "hooks": [

2083 {

2084 "type": "command",

2085 "command": "bash -c 'jq -r .worktree_path | xargs rm -rf'"

2086 }

2087 ]

2088 }

2089 ]

2090 }

2091}

2092```

2093 

2094#### WorktreeRemove input

2095 

2096В дополнение к [общим полям входа](#common-input-fields), WorktreeRemove hooks получают поле `worktree_path`, которое является абсолютным путём к удаляемому worktree.

2097 

2098```json theme={null}

2099{

2100 "session_id": "abc123",

2101 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2102 "cwd": "/Users/...",

2103 "hook_event_name": "WorktreeRemove",

2104 "worktree_path": "/Users/.../my-project/.claude/worktrees/feature-auth"

2105}

2106```

2107 

2108WorktreeRemove hooks не имеют управления решением. Они не могут блокировать удаление worktree, но могут выполнять задачи очистки, такие как удаление состояния контроля версий или архивирование изменений. Сбои hook логируются только в режиме отладки.

2109 

2110### PreCompact

2111 

2112Запускается перед тем, как Claude Code собирается запустить операцию компактирования.

2113 

2114Значение фильтра указывает, было ли компактирование запущено вручную или автоматически:

2115 

2116| Фильтр | Когда он срабатывает |

2117| :------- | :-------------------------------------------------------------- |

2118| `manual` | `/compact` |

2119| `auto` | Автоматическое компактирование при заполнении контекстного окна |

2120 

2121Exit code 2 блокирует компактирование. Для ручного `/compact` сообщение stderr показывается пользователю. Вы также можете заблокировать, возвращая JSON с `"decision": "block"`.

2122 

2123Блокировка автоматического компактирования имеет разные эффекты в зависимости от того, когда оно срабатывает. Если компактирование было запущено проактивно перед лимитом контекста, Claude Code пропускает его и разговор продолжается некомпактированным. Если компактирование было запущено для восстановления от ошибки лимита контекста, уже возвращённой API, основная ошибка выходит на поверхность и текущий запрос не удаётся.

2124 

2125#### PreCompact input

2126 

2127В дополнение к [общим полям входа](#common-input-fields), PreCompact hooks получают `trigger` и `custom_instructions`. Для `manual`, `custom_instructions` содержит то, что пользователь передаёт в `/compact`. Для `auto`, `custom_instructions` пусто.

2128 

2129```json theme={null}

2130{

2131 "session_id": "abc123",

2132 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2133 "cwd": "/Users/...",

2134 "hook_event_name": "PreCompact",

2135 "trigger": "manual",

2136 "custom_instructions": ""

2137}

2138```

2139 

2140### PostCompact

2141 

2142Запускается после завершения Claude Code операции компактирования. Используйте это событие для реакции на новое компактированное состояние, например для логирования сгенерированного резюме или обновления внешнего состояния.

2143 

2144Те же значения фильтра применяются как для `PreCompact`:

2145 

2146| Фильтр | Когда он срабатывает |

2147| :------- | :--------------------------------------------------------------------- |

2148| `manual` | После `/compact` |

2149| `auto` | После автоматического компактирования при заполнении контекстного окна |

2150 

2151#### PostCompact input

2152 

2153В дополнение к [общим полям входа](#common-input-fields), PostCompact hooks получают `trigger` и `compact_summary`. Поле `compact_summary` содержит резюме разговора, сгенерированное операцией компактирования.

2154 

2155```json theme={null}

2156{

2157 "session_id": "abc123",

2158 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2159 "cwd": "/Users/...",

2160 "hook_event_name": "PostCompact",

2161 "trigger": "manual",

2162 "compact_summary": "Summary of the compacted conversation..."

2163}

2164```

2165 

2166PostCompact hooks не имеют управления решением. Они не могут влиять на результат компактирования, но могут выполнять последующие задачи.

2167 

2168### SessionEnd

2169 

2170Запускается при завершении сеанса Claude Code. Полезно для задач очистки, логирования статистики сеанса или сохранения состояния сеанса. Поддерживает фильтры для фильтрации по причине выхода.

2171 

2172Поле `reason` во входных данных hook указывает, почему сеанс закончился:

2173 

2174| Причина | Описание |

2175| :---------------------------- | :------------------------------------------------ |

2176| `clear` | Сеанс очищен с помощью команды `/clear` |

2177| `resume` | Сеанс переключен через интерактивный `/resume` |

2178| `logout` | Пользователь вышел |

2179| `prompt_input_exit` | Пользователь вышел, пока был виден ввод подсказки |

2180| `bypass_permissions_disabled` | Режим обхода разрешений был отключен |

2181| `other` | Другие причины выхода |

2182 

2183#### SessionEnd input

2184 

2185В дополнение к [общим полям входа](#common-input-fields), SessionEnd hooks получают поле `reason`, указывающее, почему сеанс закончился. См. таблицу [reason](#sessionend) выше для всех значений.

2186 

2187```json theme={null}

2188{

2189 "session_id": "abc123",

2190 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2191 "cwd": "/Users/...",

2192 "hook_event_name": "SessionEnd",

2193 "reason": "other"

2194}

2195```

2196 

2197SessionEnd hooks не имеют управления решением. Они не могут блокировать завершение сеанса, но могут выполнять задачи очистки.

2198 

2199SessionEnd hooks имеют таймаут по умолчанию 1,5 секунды. Это применяется как к выходу из сеанса, так и к `/clear` и переключению сеансов через интерактивный `/resume`. Если hook нуждается в большем времени, установите переменную окружения `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` в миллисекундах.

2200 

2201```bash theme={null}

2202CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude

2203```

2204 

2205### Elicitation

2206 

2207Запускается, когда MCP сервер запрашивает ввод пользователя во время выполнения задачи. По умолчанию Claude Code показывает интерактивный диалог для ответа пользователя. Hooks могут перехватить этот запрос и ответить программно, полностью пропустив диалог.

2208 

2209Поле фильтра совпадает с именем MCP сервера.

2210 

2211#### Elicitation input

2212 

2213В дополнение к [общим полям входа](#common-input-fields), Elicitation hooks получают `mcp_server_name`, `message` и опциональные `mode`, `url`, `elicitation_id` и `requested_schema` поля.

2214 

2215Для form-mode elicitation (наиболее распространённый случай):

2216 

2217```json theme={null}

2218{

2219 "session_id": "abc123",

2220 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2221 "cwd": "/Users/...",

2222 "permission_mode": "default",

2223 "hook_event_name": "Elicitation",

2224 "mcp_server_name": "my-mcp-server",

2225 "message": "Please provide your credentials",

2226 "mode": "form",

2227 "requested_schema": {

2228 "type": "object",

2229 "properties": {

2230 "username": { "type": "string", "title": "Username" }

2231 }

2232 }

2233}

2234```

2235 

2236Для URL-mode elicitation (аутентификация на основе браузера):

2237 

2238```json theme={null}

2239{

2240 "session_id": "abc123",

2241 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2242 "cwd": "/Users/...",

2243 "permission_mode": "default",

2244 "hook_event_name": "Elicitation",

2245 "mcp_server_name": "my-mcp-server",

2246 "message": "Please authenticate",

2247 "mode": "url",

2248 "url": "https://auth.example.com/login"

2249}

2250```

2251 

2252#### Elicitation output

2253 

2254Чтобы ответить программно без показа диалога, верните JSON объект с `hookSpecificOutput`:

2255 

2256```json theme={null}

2257{

2258 "hookSpecificOutput": {

2259 "hookEventName": "Elicitation",

2260 "action": "accept",

2261 "content": {

2262 "username": "alice"

2263 }

2264 }

2265}

2266```

2267 

2268| Поле | Значения | Описание |

2269| :-------- | :---------------------------- | :----------------------------------------------------------------------------------- |

2270| `action` | `accept`, `decline`, `cancel` | Принять, отклонить или отменить запрос |

2271| `content` | object | Значения полей формы для отправки. Используется только когда `action` равен `accept` |

2272 

2273Exit code 2 отклоняет elicitation и показывает stderr пользователю.

2274 

2275### ElicitationResult

2276 

2277Запускается после ответа пользователя на MCP elicitation. Hooks могут наблюдать, изменять или блокировать ответ перед его отправкой обратно на MCP сервер.

2278 

2279Поле фильтра совпадает с именем MCP сервера.

2280 

2281#### ElicitationResult input

2282 

2283В дополнение к [общим полям входа](#common-input-fields), ElicitationResult hooks получают `mcp_server_name`, `action` и опциональные `mode`, `elicitation_id` и `content` поля.

2284 

2285```json theme={null}

2286{

2287 "session_id": "abc123",

2288 "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",

2289 "cwd": "/Users/...",

2290 "permission_mode": "default",

2291 "hook_event_name": "ElicitationResult",

2292 "mcp_server_name": "my-mcp-server",

2293 "action": "accept",

2294 "content": { "username": "alice" },

2295 "mode": "form",

2296 "elicitation_id": "elicit-123"

2297}

2298```

2299 

2300#### ElicitationResult output

2301 

2302Чтобы переопределить ответ пользователя, верните JSON объект с `hookSpecificOutput`:

2303 

2304```json theme={null}

2305{

2306 "hookSpecificOutput": {

2307 "hookEventName": "ElicitationResult",

2308 "action": "decline",

2309 "content": {}

2310 }

2311}

2312```

2313 

2314| Поле | Значения | Описание |

2315| :-------- | :---------------------------- | :------------------------------------------------------------------------------------ |

2316| `action` | `accept`, `decline`, `cancel` | Переопределяет действие пользователя |

2317| `content` | object | Переопределяет значения полей формы. Имеет смысл только когда `action` равен `accept` |

2318 

2319Exit code 2 блокирует ответ, изменяя эффективное действие на `decline`.

2320 

2321## Prompt-based hooks

2322 

2323В дополнение к command, HTTP и MCP tool hooks, Claude Code поддерживает prompt-based hooks (`type: "prompt"`), которые используют LLM для оценки разрешения или блокировки действия, и agent hooks (`type: "agent"`), которые порождают агентного верификатора с доступом к инструментам. Не все события поддерживают каждый тип hook.

2324 

2325События, которые поддерживают все пять типов hook (`command`, `http`, `mcp_tool`, `prompt` и `agent`):

2326 

2327* `PermissionRequest`

2328* `PostToolBatch`

2329* `PostToolUse`

2330* `PostToolUseFailure`

2331* `PreToolUse`

2332* `Stop`

2333* `SubagentStop`

2334* `TaskCompleted`

2335* `TaskCreated`

2336* `UserPromptExpansion`

2337* `UserPromptSubmit`

2338 

2339События, которые поддерживают `command`, `http` и `mcp_tool` hooks, но не `prompt` или `agent`:

2340 

2341* `ConfigChange`

2342* `CwdChanged`

2343* `Elicitation`

2344* `ElicitationResult`

2345* `FileChanged`

2346* `InstructionsLoaded`

2347* `Notification`

2348* `PermissionDenied`

2349* `PostCompact`

2350* `PreCompact`

2351* `SessionEnd`

2352* `StopFailure`

2353* `SubagentStart`

2354* `TeammateIdle`

2355* `WorktreeCreate`

2356* `WorktreeRemove`

2357 

2358`SessionStart` и `Setup` поддерживают `command` и `mcp_tool` hooks. Они не поддерживают `http`, `prompt` или `agent` hooks.

2359 

2360### How prompt-based hooks work

2361 

2362Вместо выполнения команды Bash, prompt-based hooks:

2363 

23641. Отправляют входные данные hook и вашу подсказку модели Claude, Haiku по умолчанию

23652. LLM отвечает структурированным JSON, содержащим решение

23663. Claude Code автоматически обрабатывает решение

2367 

2368### Prompt hook configuration

2369 

2370Установите `type` на `"prompt"` и предоставьте строку `prompt` вместо `command`. Используйте заполнитель `$ARGUMENTS` для внедрения данных JSON входа hook в текст вашей подсказки. Claude Code отправляет объединённую подсказку и входные данные быстрой модели Claude, которая возвращает JSON решение.

2371 

2372Этот hook `Stop` просит LLM оценить, должен ли Claude остановиться перед разрешением Claude закончить:

2373 

2374```json theme={null}

2375{

2376 "hooks": {

2377 "Stop": [

2378 {

2379 "hooks": [

2380 {

2381 "type": "prompt",

2382 "prompt": "Evaluate if Claude should stop: $ARGUMENTS. Check if all tasks are complete."

2383 }

2384 ]

2385 }

2386 ]

2387 }

2388}

2389```

2390 

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

2392| :-------- | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2393| `type` | да | Должно быть `"prompt"` |

2394| `prompt` | да | Текст подсказки для отправки LLM. Используйте `$ARGUMENTS` как заполнитель для JSON входа hook. Если `$ARGUMENTS` отсутствует, JSON входа добавляется к подсказке |

2395| `model` | нет | Модель для использования при оценке. По умолчанию быстрая модель |

2396| `timeout` | нет | Таймаут в секундах. По умолчанию: 30 |

2397 

2398### Response schema

2399 

2400LLM должен ответить JSON, содержащим:

2401 

2402```json theme={null}

2403{

2404 "ok": true | false,

2405 "reason": "Explanation for the decision"

2406}

2407```

2408 

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

2410| :------- | :----------------------------------------------------------- |

2411| `ok` | `true` разрешает действие, `false` предотвращает его |

2412| `reason` | Требуется при `ok` равном `false`. Объяснение для блокировки |

2413 

2414Что происходит при `ok: false`, зависит от события:

2415 

2416* `Stop` и `SubagentStop`: причина передаётся обратно Claude как его следующая инструкция и ход продолжается

2417* `PreToolUse`: вызов инструмента отклоняется и причина возвращается Claude как ошибка инструмента, эквивалентно `permissionDecision: "deny"` из command hook

2418* `PostToolUse`, `PostToolBatch`, `UserPromptSubmit` и `UserPromptExpansion`: ход заканчивается и причина появляется в чате как строка предупреждения, эквивалентно возврату `"continue": false` из command hook

2419* `PostToolUseFailure`, `TaskCreated` и `TaskCompleted`: причина возвращается Claude как ошибка инструмента, аналогично `PreToolUse`

2420* `PermissionRequest`: `ok: false` не имеет эффекта. Чтобы отклонить одобрение из hook, используйте [command hook](#command-hook-fields), возвращающий `hookSpecificOutput.decision.behavior: "deny"`

2421 

2422Если вам нужен более точный контроль над любым событием, используйте [command hook](#command-hook-fields) с полями для каждого события, описанными в [Decision control](#decision-control).

2423 

2424### Example: Multi-criteria Stop hook

2425 

2426Этот hook `Stop` использует подробную подсказку для проверки трёх условий перед разрешением Claude остановиться. Если `"ok"` равно `false`, Claude продолжает работать с предоставленной причиной как своей следующей инструкцией. Hooks `SubagentStop` используют тот же формат для оценки, должен ли [subagent](/ru/sub-agents) остановиться:

2427 

2428```json theme={null}

2429{

2430 "hooks": {

2431 "Stop": [

2432 {

2433 "hooks": [

2434 {

2435 "type": "prompt",

2436 "prompt": "You are evaluating whether Claude should stop working. Context: $ARGUMENTS\n\nAnalyze the conversation and determine if:\n1. All user-requested tasks are complete\n2. Any errors need to be addressed\n3. Follow-up work is needed\n\nRespond with JSON: {\"ok\": true} to allow stopping, or {\"ok\": false, \"reason\": \"your explanation\"} to continue working.",

2437 "timeout": 30

2438 }

2439 ]

2440 }

2441 ]

2442 }

2443}

2444```

2445 

2446## Agent-based hooks

2447 

2448<Warning>

2449 Agent hooks являются экспериментальными. Поведение и конфигурация могут измениться в будущих выпусках. Для рабочих процессов в производстве предпочитайте [command hooks](#command-hook-fields).

2450</Warning>

2451 

2452Agent-based hooks (`type: "agent"`) похожи на prompt-based hooks, но с многооборотным доступом к инструментам. Вместо одного вызова LLM, agent hook порождает subagent, который может читать файлы, искать код и проверять кодовую базу для проверки условий. Agent hooks поддерживают те же события, что и prompt-based hooks.

2453 

2454### How agent hooks work

2455 

2456Когда срабатывает agent hook:

2457 

24581. Claude Code порождает subagent с вашей подсказкой и JSON входом hook

24592. Subagent может использовать инструменты, такие как Read, Grep и Glob, для исследования

24603. После до 50 оборотов subagent возвращает структурированное решение `{ "ok": true/false }`

24614. Claude Code обрабатывает решение так же, как prompt hook

2462 

2463Agent hooks полезны, когда проверка требует проверки фактических файлов или выхода тестов, а не только оценки данных входа hook.

2464 

2465### Agent hook configuration

2466 

2467Установите `type` на `"agent"` и предоставьте строку `prompt`. Поля конфигурации те же, что и [prompt hooks](#prompt-hook-configuration), с более длинным таймаутом по умолчанию:

2468 

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

2470| :-------- | :---------- | :-------------------------------------------------------------------------------------------------- |

2471| `type` | да | Должно быть `"agent"` |

2472| `prompt` | да | Подсказка, описывающая, что проверять. Используйте `$ARGUMENTS` как заполнитель для JSON входа hook |

2473| `model` | нет | Модель для использования. По умолчанию быстрая модель |

2474| `timeout` | нет | Таймаут в секундах. По умолчанию: 60 |

2475 

2476Схема ответа та же, что и prompt hooks: `{ "ok": true }` для разрешения или `{ "ok": false, "reason": "..." }` для блокировки.

2477 

2478Этот hook `Stop` проверяет, что все модульные тесты проходят перед разрешением Claude закончить:

2479 

2480```json theme={null}

2481{

2482 "hooks": {

2483 "Stop": [

2484 {

2485 "hooks": [

2486 {

2487 "type": "agent",

2488 "prompt": "Verify that all unit tests pass. Run the test suite and check the results. $ARGUMENTS",

2489 "timeout": 120

2490 }

2491 ]

2492 }

2493 ]

2494 }

2495}

2496```

2497 

2498## Run hooks in the background

2499 

2500По умолчанию hooks блокируют выполнение Claude до их завершения. Для долгоживущих задач, таких как развёртывания, наборы тестов или вызовы внешних API, установите `"async": true` для запуска hook в фоне, пока Claude продолжает работать. Асинхронные hooks не могут блокировать или управлять поведением Claude: поля ответа, такие как `decision`, `permissionDecision` и `continue`, не имеют эффекта, потому что действие, которое они контролировали, уже завершено.

2501 

2502### Configure an async hook

2503 

2504Добавьте `"async": true` к конфигурации command hook для запуска его в фоне без блокировки Claude. Это поле доступно только на hooks `type: "command"`.

2505 

2506Этот hook запускает скрипт тестирования после каждого вызова инструмента `Write`. Claude продолжает работать немедленно, пока `run-tests.sh` выполняется до 120 секунд. Когда скрипт завершается, его выход доставляется на следующий ход разговора:

2507 

2508```json theme={null}

2509{

2510 "hooks": {

2511 "PostToolUse": [

2512 {

2513 "matcher": "Write",

2514 "hooks": [

2515 {

2516 "type": "command",

2517 "command": "/path/to/run-tests.sh",

2518 "async": true,

2519 "timeout": 120

2520 }

2521 ]

2522 }

2523 ]

2524 }

2525}

2526```

2527 

2528Поле `timeout` устанавливает максимальное время в секундах для фонового процесса. Если не указано, асинхронные hooks используют тот же 10-минутный таймаут по умолчанию, что и синхронные hooks.

2529 

2530### How async hooks execute

2531 

2532Когда срабатывает асинхронный hook, Claude Code запускает процесс hook и немедленно продолжает без ожидания его завершения. Hook получает те же JSON входные данные через stdin, что и синхронный hook.

2533 

2534После выхода фонового процесса, если hook произвёл JSON ответ с полем `systemMessage` или `additionalContext`, это содержимое доставляется Claude как контекст на следующем ходу разговора.

2535 

2536Уведомления о завершении асинхронного hook подавляются по умолчанию. Чтобы их увидеть, включите подробный режим с помощью `Ctrl+O` или запустите Claude Code с `--verbose`.

2537 

2538### Example: run tests after file changes

2539 

2540Этот hook запускает набор тестов в фоне всякий раз, когда Claude пишет файл, затем сообщает результаты обратно Claude при завершении тестов. Сохраните этот скрипт в `.claude/hooks/run-tests-async.sh` в вашем проекте и сделайте его исполняемым с помощью `chmod +x`:

2541 

2542```bash theme={null}

2543#!/bin/bash

2544# run-tests-async.sh

2545 

2546# Read hook input from stdin

2547INPUT=$(cat)

2548FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

2549 

2550# Only run tests for source files

2551if [[ "$FILE_PATH" != *.ts && "$FILE_PATH" != *.js ]]; then

2552 exit 0

2553fi

2554 

2555# Run tests and report results via systemMessage

2556RESULT=$(npm test 2>&1)

2557EXIT_CODE=$?

2558 

2559if [ $EXIT_CODE -eq 0 ]; then

2560 echo "{\"systemMessage\": \"Tests passed after editing $FILE_PATH\"}"

2561else

2562 echo "{\"systemMessage\": \"Tests failed after editing $FILE_PATH: $RESULT\"}"

2563fi

2564```

2565 

2566Затем добавьте эту конфигурацию в `.claude/settings.json` в корне вашего проекта. Флаг `async: true` позволяет Claude продолжать работу, пока тесты запускаются:

2567 

2568```json theme={null}

2569{

2570 "hooks": {

2571 "PostToolUse": [

2572 {

2573 "matcher": "Write|Edit",

2574 "hooks": [

2575 {

2576 "type": "command",

2577 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/run-tests-async.sh",

2578 "async": true,

2579 "timeout": 300

2580 }

2581 ]

2582 }

2583 ]

2584 }

2585}

2586```

2587 

2588### Limitations

2589 

2590Асинхронные hooks имеют несколько ограничений по сравнению с синхронными hooks:

2591 

2592* Только hooks `type: "command"` поддерживают `async`. Prompt-based hooks не могут запускаться асинхронно.

2593* Асинхронные hooks не могут блокировать вызовы инструментов или возвращать решения. К моменту завершения hook действие, вызвавшее его, уже произошло.

2594* Выход hook доставляется на следующий ход разговора. Если сеанс неактивен, ответ ждёт до следующего взаимодействия пользователя. Исключение: hook `asyncRewake`, который выходит с кодом 2, пробуждает Claude немедленно даже когда сеанс неактивен.

2595* Каждое выполнение создаёт отдельный фоновый процесс. Нет дедупликации между несколькими срабатываниями одного и того же асинхронного hook.

2596 

2597## Security considerations

2598 

2599### Disclaimer

2600 

2601Command hooks запускаются с полными разрешениями системного пользователя.

2602 

2603<Warning>

2604 Command hooks выполняют команды оболочки с вашими полными разрешениями пользователя. Они могут изменять, удалять или получать доступ к любым файлам, к которым может получить доступ ваша учётная запись пользователя. Проверьте и протестируйте все команды hook перед добавлением их в вашу конфигурацию.

2605</Warning>

2606 

2607### Security best practices

2608 

2609Помните об этих практиках при написании hooks:

2610 

2611* **Проверяйте и санитизируйте входные данные**: никогда не доверяйте входным данным вслепую

2612* **Всегда заключайте переменные оболочки в кавычки**: используйте `"$VAR"` не `$VAR`

2613* **Блокируйте обход пути**: проверяйте наличие `..` в путях файлов

2614* **Используйте абсолютные пути**: указывайте полные пути для скриптов, используя `"$CLAUDE_PROJECT_DIR"` для корня проекта

2615* **Пропускайте чувствительные файлы**: избегайте `.env`, `.git/`, ключей и т. д.

2616 

2617## Windows PowerShell tool

2618 

2619На Windows вы можете запустить отдельные hooks в PowerShell, установив `"shell": "powershell"` на command hook. Hooks порождают PowerShell напрямую, поэтому это работает независимо от того, установлен ли `CLAUDE_CODE_USE_POWERSHELL_TOOL`. Claude Code автоматически обнаруживает `pwsh.exe` (PowerShell 7+) с резервным вариантом на `powershell.exe` (5.1).

2620 

2621```json theme={null}

2622{

2623 "hooks": {

2624 "PostToolUse": [

2625 {

2626 "matcher": "Write",

2627 "hooks": [

2628 {

2629 "type": "command",

2630 "shell": "powershell",

2631 "command": "Write-Host 'File written'"

2632 }

2633 ]

2634 }

2635 ]

2636 }

2637}

2638```

2639 

2640## Debug hooks

2641 

2642Детали выполнения hooks, включая информацию о том, какие hooks совпали, их коды выхода и полный stdout и stderr, записываются в файл отладочного журнала. Запустите Claude Code с `claude --debug-file <path>` для записи журнала в известное расположение, или запустите `claude --debug` и прочитайте журнал в `~/.claude/debug/<session-id>.txt`. Флаг `--debug` не выводит на терминал.

2643 

2644```text theme={null}

2645[DEBUG] Executing hooks for PostToolUse:Write

2646[DEBUG] Found 1 hook commands to execute

2647[DEBUG] Executing hook command: <Your command> with timeout 600000ms

2648[DEBUG] Hook command completed with status 0: <Your stdout>

2649```

2650 

2651Для более детальной информации о совпадении hooks установите `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` для просмотра дополнительных строк логирования, таких как количество совпадений фильтра hook и совпадение запроса.

2652 

2653Для устранения неполадок распространённых проблем, таких как hooks, которые не срабатывают, бесконечные циклы Stop hook или ошибки конфигурации, см. [Limitations and troubleshooting](/ru/hooks-guide#limitations-and-troubleshooting) в руководстве. Для более широкого диагностического пошагового руководства, охватывающего `/context`, `/doctor` и приоритет параметров, см. [Debug your config](/ru/debug-your-config).

hooks-guide.md +927 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Автоматизация рабочих процессов с помощью hooks

6 

7> Запускайте команды оболочки автоматически, когда Claude Code редактирует файлы, завершает задачи или требует ввода. Форматируйте код, отправляйте уведомления, проверяйте команды и применяйте правила проекта.

8 

9Hooks — это определяемые пользователем команды оболочки, которые выполняются в определённых точках жизненного цикла Claude Code. Они обеспечивают детерминированное управление поведением Claude Code, гарантируя, что определённые действия всегда происходят, а не полагаясь на то, что LLM выберет их запуск. Используйте hooks для применения правил проекта, автоматизации повторяющихся задач и интеграции Claude Code с вашими существующими инструментами.

10 

11Для решений, требующих суждения, а не детерминированных правил, вы также можете использовать [hooks на основе подсказок](#prompt-based-hooks) или [hooks на основе агентов](#agent-based-hooks), которые используют модель Claude для оценки условий.

12 

13Для других способов расширения Claude Code см. [skills](/ru/skills) для предоставления Claude дополнительных инструкций и исполняемых команд, [subagents](/ru/sub-agents) для запуска задач в изолированных контекстах и [plugins](/ru/plugins) для упаковки расширений для совместного использования в проектах.

14 

15<Tip>

16 Это руководство охватывает распространённые варианты использования и как начать работу. Для полных схем событий, форматов JSON ввода/вывода и расширенных функций, таких как асинхронные hooks и MCP tool hooks, см. [справочник Hooks](/ru/hooks).

17</Tip>

18 

19## Настройка вашего первого hook

20 

21Чтобы создать hook, добавьте блок `hooks` в [файл параметров](#configure-hook-location). Это пошаговое руководство создаёт hook для уведомлений на рабочем столе, чтобы вы получали оповещение всякий раз, когда Claude ждёт вашего ввода вместо того, чтобы смотреть на терминал.

22 

23<Steps>

24 <Step title="Добавьте hook в ваши параметры">

25 Откройте `~/.claude/settings.json` и добавьте hook `Notification`. Пример ниже использует `osascript` для macOS; см. [Получайте уведомления, когда Claude требует ввода](#get-notified-when-claude-needs-input) для команд Linux и Windows.

26 

27 ```json theme={null}

28 {

29 "hooks": {

30 "Notification": [

31 {

32 "matcher": "",

33 "hooks": [

34 {

35 "type": "command",

36 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

37 }

38 ]

39 }

40 ]

41 }

42 }

43 ```

44 

45 Если ваш файл параметров уже имеет ключ `hooks`, добавьте `Notification` как соседний элемент существующих ключей событий, а не заменяйте весь объект. Каждое имя события — это ключ внутри единственного объекта `hooks`:

46 

47 ```json theme={null}

48 {

49 "hooks": {

50 "PostToolUse": [

51 {

52 "matcher": "Edit|Write",

53 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write" }]

54 }

55 ],

56 "Notification": [

57 {

58 "matcher": "",

59 "hooks": [{ "type": "command", "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'" }]

60 }

61 ]

62 }

63 }

64 ```

65 

66 Вы также можете попросить Claude написать hook для вас, описав то, что вы хотите, в CLI.

67 </Step>

68 

69 <Step title="Проверьте конфигурацию">

70 Введите `/hooks` для открытия браузера hooks. Вы увидите список всех доступных событий hook с количеством рядом с каждым событием, которое имеет настроенные hooks. Выберите `Notification` для подтверждения того, что ваш новый hook появляется в списке. Выбор hook показывает его детали: событие, matcher, тип, исходный файл и команду.

71 </Step>

72 

73 <Step title="Протестируйте hook">

74 Нажмите `Esc` для возврата в CLI. Попросите Claude сделать что-то, требующее разрешения, затем переключитесь с терминала. Вы должны получить уведомление на рабочем столе.

75 </Step>

76</Steps>

77 

78<Tip>

79 Меню `/hooks` доступно только для чтения. Чтобы добавить, изменить или удалить hooks, отредактируйте JSON параметров напрямую или попросите Claude сделать изменение.

80</Tip>

81 

82## Что вы можете автоматизировать

83 

84Hooks позволяют запускать код в ключевых точках жизненного цикла Claude Code: форматировать файлы после редактирования, блокировать команды перед их выполнением, отправлять уведомления, когда Claude требует ввода, внедрять контекст при запуске сеанса и многое другое. Для полного списка событий hook см. [справочник Hooks](/ru/hooks#hook-lifecycle).

85 

86Каждый пример включает готовый к использованию блок конфигурации, который вы добавляете в [файл параметров](#configure-hook-location). Наиболее распространённые шаблоны:

87 

88* [Получайте уведомления, когда Claude требует ввода](#get-notified-when-claude-needs-input)

89* [Автоматическое форматирование кода после редактирования](#auto-format-code-after-edits)

90* [Блокировка редактирования защищённых файлов](#block-edits-to-protected-files)

91* [Повторное внедрение контекста после компактирования](#re-inject-context-after-compaction)

92* [Аудит изменений конфигурации](#audit-configuration-changes)

93* [Перезагрузка окружения при изменении каталога или файлов](#reload-environment-when-directory-or-files-change)

94* [Автоматическое одобрение определённых запросов разрешений](#auto-approve-specific-permission-prompts)

95 

96### Получайте уведомления, когда Claude требует ввода

97 

98Получайте уведомление на рабочем столе всякий раз, когда Claude завершает работу и требует вашего ввода, чтобы вы могли переключиться на другие задачи без проверки терминала.

99 

100Этот hook использует событие `Notification`, которое срабатывает, когда Claude ждёт ввода или разрешения. Каждая вкладка ниже использует собственную команду уведомления платформы. Добавьте это в `~/.claude/settings.json`:

101 

102<Tabs>

103 <Tab title="macOS">

104 ```json theme={null}

105 {

106 "hooks": {

107 "Notification": [

108 {

109 "matcher": "",

110 "hooks": [

111 {

112 "type": "command",

113 "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"

114 }

115 ]

116 }

117 ]

118 }

119 }

120 ```

121 

122 <Accordion title="Если уведомление не появляется">

123 `osascript` маршрутизирует уведомления через встроенное приложение Script Editor. Если Script Editor не имеет разрешения на уведомления, команда молча не выполняется, и macOS не будет вас просить предоставить его. Запустите это в Terminal один раз, чтобы Script Editor появился в ваших параметрах уведомлений:

124 

125 ```bash theme={null}

126 osascript -e 'display notification "test"'

127 ```

128 

129 Ничего не появится пока. Откройте **System Settings > Notifications**, найдите **Script Editor** в списке и включите **Allow Notifications**. Запустите команду снова, чтобы подтвердить, что тестовое уведомление появляется.

130 </Accordion>

131 </Tab>

132 

133 <Tab title="Linux">

134 ```json theme={null}

135 {

136 "hooks": {

137 "Notification": [

138 {

139 "matcher": "",

140 "hooks": [

141 {

142 "type": "command",

143 "command": "notify-send 'Claude Code' 'Claude Code needs your attention'"

144 }

145 ]

146 }

147 ]

148 }

149 }

150 ```

151 </Tab>

152 

153 <Tab title="Windows (PowerShell)">

154 ```json theme={null}

155 {

156 "hooks": {

157 "Notification": [

158 {

159 "matcher": "",

160 "hooks": [

161 {

162 "type": "command",

163 "command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""

164 }

165 ]

166 }

167 ]

168 }

169 }

170 ```

171 </Tab>

172</Tabs>

173 

174Пустой `matcher` срабатывает на все типы уведомлений. Чтобы срабатывать только на определённые события, установите его на одно из этих значений:

175 

176| Matcher | Срабатывает когда |

177| :--------------------- | :-------------------------------------------------------- |

178| `permission_prompt` | Claude требует вашего одобрения использования инструмента |

179| `idle_prompt` | Claude завершил работу и ждёт вашего следующего запроса |

180| `auth_success` | Аутентификация завершена |

181| `elicitation_dialog` | Сервер MCP открывает форму выяснения |

182| `elicitation_complete` | Форма выяснения MCP отправлена или закрыта |

183| `elicitation_response` | Ответ выяснения MCP отправлен обратно на сервер |

184 

185Введите `/hooks` и выберите `Notification`, чтобы подтвердить, что hook зарегистрирован. Для полной схемы события см. [справочник Notification](/ru/hooks#notification).

186 

187### Автоматическое форматирование кода после редактирования

188 

189Автоматически запускайте [Prettier](https://prettier.io/) на каждом файле, который редактирует Claude, чтобы форматирование оставалось согласованным без ручного вмешательства.

190 

191Этот hook использует событие `PostToolUse` с matcher `Edit|Write`, поэтому он запускается только после инструментов редактирования файлов. Команда извлекает путь отредактированного файла с помощью [`jq`](https://jqlang.github.io/jq/) и передаёт его в Prettier. Добавьте это в `.claude/settings.json` в корне вашего проекта:

192 

193```json theme={null}

194{

195 "hooks": {

196 "PostToolUse": [

197 {

198 "matcher": "Edit|Write",

199 "hooks": [

200 {

201 "type": "command",

202 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"

203 }

204 ]

205 }

206 ]

207 }

208}

209```

210 

211<Note>

212 Примеры Bash на этой странице используют `jq` для анализа JSON. Установите его с помощью `brew install jq` (macOS), `apt-get install jq` (Debian/Ubuntu) или см. [загрузки `jq`](https://jqlang.github.io/jq/download/).

213</Note>

214 

215### Блокировка редактирования защищённых файлов

216 

217Предотвратите изменение Claude чувствительных файлов, таких как `.env`, `package-lock.json` или что-либо в `.git/`. Claude получает обратную связь, объясняющую, почему редактирование было заблокировано, чтобы он мог скорректировать свой подход.

218 

219Этот пример использует отдельный файл скрипта, который вызывает hook. Скрипт проверяет путь целевого файла против списка защищённых шаблонов и выходит с кодом 2 для блокировки редактирования.

220 

221<Steps>

222 <Step title="Создайте скрипт hook">

223 Сохраните это в `.claude/hooks/protect-files.sh`:

224 

225 ```bash theme={null}

226 #!/bin/bash

227 # protect-files.sh

228 

229 INPUT=$(cat)

230 FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

231 

232 PROTECTED_PATTERNS=(".env" "package-lock.json" ".git/")

233 

234 for pattern in "${PROTECTED_PATTERNS[@]}"; do

235 if [[ "$FILE_PATH" == *"$pattern"* ]]; then

236 echo "Blocked: $FILE_PATH matches protected pattern '$pattern'" >&2

237 exit 2

238 fi

239 done

240 

241 exit 0

242 ```

243 </Step>

244 

245 <Step title="Сделайте скрипт исполняемым (macOS/Linux)">

246 Скрипты hook должны быть исполняемыми для запуска Claude Code:

247 

248 ```bash theme={null}

249 chmod +x .claude/hooks/protect-files.sh

250 ```

251 </Step>

252 

253 <Step title="Зарегистрируйте hook">

254 Добавьте hook `PreToolUse` в `.claude/settings.json`, который запускает скрипт перед любым вызовом инструмента `Edit` или `Write`:

255 

256 ```json theme={null}

257 {

258 "hooks": {

259 "PreToolUse": [

260 {

261 "matcher": "Edit|Write",

262 "hooks": [

263 {

264 "type": "command",

265 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/protect-files.sh"

266 }

267 ]

268 }

269 ]

270 }

271 }

272 ```

273 </Step>

274</Steps>

275 

276### Повторное внедрение контекста после компактирования

277 

278Когда контекстное окно Claude заполняется, компактирование суммирует разговор для освобождения места. Это может привести к потере важных деталей. Используйте hook `SessionStart` с matcher `compact` для повторного внедрения критического контекста после каждого компактирования.

279 

280Любой текст, который ваша команда выводит в stdout, добавляется в контекст Claude. Этот пример напоминает Claude о соглашениях проекта и недавней работе. Добавьте это в `.claude/settings.json` в корне вашего проекта:

281 

282```json theme={null}

283{

284 "hooks": {

285 "SessionStart": [

286 {

287 "matcher": "compact",

288 "hooks": [

289 {

290 "type": "command",

291 "command": "echo 'Reminder: use Bun, not npm. Run bun test before committing. Current sprint: auth refactor.'"

292 }

293 ]

294 }

295 ]

296 }

297}

298```

299 

300Вы можете заменить `echo` любой командой, которая производит динамический вывод, например `git log --oneline -5` для отображения недавних коммитов. Для внедрения контекста при каждом запуске сеанса рассмотрите использование [CLAUDE.md](/ru/memory) вместо этого. Для переменных окружения см. [`CLAUDE_ENV_FILE`](/ru/hooks#persist-environment-variables) в справочнике.

301 

302### Аудит изменений конфигурации

303 

304Отслеживайте, когда файлы параметров или skills изменяются во время сеанса. Событие `ConfigChange` срабатывает, когда внешний процесс или редактор изменяет файл конфигурации, поэтому вы можете регистрировать изменения для соответствия или блокировать несанкционированные изменения.

305 

306Этот пример добавляет каждое изменение в журнал аудита. Добавьте это в `~/.claude/settings.json`:

307 

308```json theme={null}

309{

310 "hooks": {

311 "ConfigChange": [

312 {

313 "matcher": "",

314 "hooks": [

315 {

316 "type": "command",

317 "command": "jq -c '{timestamp: now | todate, source: .source, file: .file_path}' >> ~/claude-config-audit.log"

318 }

319 ]

320 }

321 ]

322 }

323}

324```

325 

326Matcher фильтрует по типу конфигурации: `user_settings`, `project_settings`, `local_settings`, `policy_settings` или `skills`. Для блокировки вступления изменения в силу выйдите с кодом 2 или верните `{"decision": "block"}`. См. [справочник ConfigChange](/ru/hooks#configchange) для полной схемы ввода.

327 

328### Перезагрузка окружения при изменении каталога или файлов

329 

330Некоторые проекты устанавливают разные переменные окружения в зависимости от того, в каком каталоге вы находитесь. Инструменты, такие как [direnv](https://direnv.net/), делают это автоматически в вашей оболочке, но инструмент Bash Claude не подхватывает эти изменения самостоятельно.

331 

332Сочетание hook `SessionStart` с hook `CwdChanged` исправляет это. `SessionStart` загружает переменные для каталога, в котором вы запускаетесь, а `CwdChanged` перезагружает их каждый раз, когда Claude меняет каталог. Оба записывают в `CLAUDE_ENV_FILE`, который Claude Code запускает как преамбулу скрипта перед каждой командой Bash. Добавьте это в `~/.claude/settings.json`:

333 

334```json theme={null}

335{

336 "hooks": {

337 "SessionStart": [

338 {

339 "hooks": [

340 {

341 "type": "command",

342 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

343 }

344 ]

345 }

346 ],

347 "CwdChanged": [

348 {

349 "hooks": [

350 {

351 "type": "command",

352 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

353 }

354 ]

355 }

356 ]

357 }

358}

359```

360 

361Запустите `direnv allow` один раз в каждом каталоге, который имеет `.envrc`, чтобы direnv был разрешён загружать его. Если вы используете devbox или nix вместо direnv, тот же шаблон работает с `devbox shellenv` или `devbox global shellenv` вместо `direnv export bash`.

362 

363Чтобы реагировать на определённые файлы вместо каждого изменения каталога, используйте `FileChanged` с matcher, указывающим имена файлов для наблюдения, разделённые `|`. Для построения списка наблюдения это значение разбивается на буквальные имена файлов, а не оценивается как regex. См. [FileChanged](/ru/hooks#filechanged) для того, как то же значение также фильтрует, какие группы hook запускаются при изменении файла. Этот пример наблюдает `.envrc` и `.env` в рабочем каталоге:

364 

365```json theme={null}

366{

367 "hooks": {

368 "FileChanged": [

369 {

370 "matcher": ".envrc|.env",

371 "hooks": [

372 {

373 "type": "command",

374 "command": "direnv export bash > \"$CLAUDE_ENV_FILE\""

375 }

376 ]

377 }

378 ]

379 }

380}

381```

382 

383См. справочные записи [CwdChanged](/ru/hooks#cwdchanged) и [FileChanged](/ru/hooks#filechanged) для схем ввода, вывода `watchPaths` и деталей `CLAUDE_ENV_FILE`.

384 

385### Автоматическое одобрение определённых запросов разрешений

386 

387Пропустите диалог одобрения для вызовов инструментов, которые вы всегда разрешаете. Этот пример автоматически одобряет `ExitPlanMode`, инструмент, который Claude вызывает, когда он завершает представление плана и просит продолжить, чтобы вас не спрашивали каждый раз, когда план готов.

388 

389В отличие от примеров с кодом выхода выше, автоматическое одобрение требует, чтобы ваш hook написал решение JSON в stdout. Hook `PermissionRequest` срабатывает, когда Claude Code собирается показать диалог разрешения, и возврат `"behavior": "allow"` отвечает на него от вашего имени.

390 

391Matcher ограничивает hook только `ExitPlanMode`, поэтому никакие другие запросы не затрагиваются. Добавьте это в `~/.claude/settings.json`:

392 

393```json theme={null}

394{

395 "hooks": {

396 "PermissionRequest": [

397 {

398 "matcher": "ExitPlanMode",

399 "hooks": [

400 {

401 "type": "command",

402 "command": "echo '{\"hookSpecificOutput\": {\"hookEventName\": \"PermissionRequest\", \"decision\": {\"behavior\": \"allow\"}}}'"

403 }

404 ]

405 }

406 ]

407 }

408}

409```

410 

411Когда hook одобряет, Claude Code выходит из режима плана и восстанавливает любой режим разрешения, который был активен перед входом в режим плана. Стенограмма показывает "Allowed by PermissionRequest hook" там, где появился бы диалог. Путь hook всегда сохраняет текущий разговор: он не может очистить контекст и начать свежий сеанс реализации так, как может диалог.

412 

413Чтобы установить определённый режим разрешения вместо этого, вывод вашего hook может включать массив `updatedPermissions` с записью `setMode`. Значение `mode` — это любой режим разрешения, такой как `default`, `acceptEdits` или `bypassPermissions`, и `destination: "session"` применяет его только для текущего сеанса.

414 

415<Note>

416 `bypassPermissions` применяется только если сеанс был запущен с уже доступным режимом обхода: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` или `permissions.defaultMode: "bypassPermissions"` в параметрах, и не отключено [`permissions.disableBypassPermissionsMode`](/ru/permissions#managed-settings). Это никогда не сохраняется как `defaultMode`.

417</Note>

418 

419Чтобы переключить сеанс на `acceptEdits`, ваш hook пишет этот JSON в stdout:

420 

421```json theme={null}

422{

423 "hookSpecificOutput": {

424 "hookEventName": "PermissionRequest",

425 "decision": {

426 "behavior": "allow",

427 "updatedPermissions": [

428 { "type": "setMode", "mode": "acceptEdits", "destination": "session" }

429 ]

430 }

431 }

432}

433```

434 

435Держите matcher как можно более узким. Соответствие `.*` или оставление matcher пустым автоматически одобрит каждый запрос разрешения, включая записи файлов и команды оболочки. См. [справочник PermissionRequest](/ru/hooks#permissionrequest-decision-control) для полного набора полей решения.

436 

437## Как работают hooks

438 

439События hook срабатывают в определённых точках жизненного цикла Claude Code. Когда событие срабатывает, все соответствующие hooks запускаются параллельно, и идентичные команды hook автоматически дедублируются. Таблица ниже показывает каждое событие и когда оно срабатывает:

440 

441| Event | When it fires |

442| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

443| `SessionStart` | When a session begins or resumes |

444| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |

445| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

446| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

447| `PreToolUse` | Before a tool call executes. Can block it |

448| `PermissionRequest` | When a permission dialog appears |

449| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

450| `PostToolUse` | After a tool call succeeds |

451| `PostToolUseFailure` | After a tool call fails |

452| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

453| `Notification` | When Claude Code sends a notification |

454| `SubagentStart` | When a subagent is spawned |

455| `SubagentStop` | When a subagent finishes |

456| `TaskCreated` | When a task is being created via `TaskCreate` |

457| `TaskCompleted` | When a task is being marked as completed |

458| `Stop` | When Claude finishes responding |

459| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

460| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |

461| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

462| `ConfigChange` | When a configuration file changes during a session |

463| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

464| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

465| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

466| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

467| `PreCompact` | Before context compaction |

468| `PostCompact` | After context compaction completes |

469| `Elicitation` | When an MCP server requests user input during a tool call |

470| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

471| `SessionEnd` | When a session terminates |

472 

473Когда несколько hooks совпадают, каждый возвращает свой собственный результат. Для решений Claude Code выбирает наиболее ограничивающий ответ. Hook `PreToolUse`, возвращающий `deny`, отменяет вызов инструмента независимо от того, что возвращают остальные. Один hook, возвращающий `ask`, вынуждает запрос разрешения, даже если остальные возвращают `allow`. Текст из `additionalContext` сохраняется от каждого hook и передаётся Claude вместе.

474 

475Каждый hook имеет `type`, который определяет, как он запускается. Большинство hooks используют `"type": "command"`, который запускает команду оболочки. Доступны четыре других типа:

476 

477* `"type": "http"`: POST данные события на URL. См. [HTTP hooks](#http-hooks).

478* `"type": "mcp_tool"`: вызвать инструмент на уже подключённом MCP сервере. См. [MCP tool hooks](/ru/hooks#mcp-tool-hook-fields).

479* `"type": "prompt"`: однооборотная оценка LLM. См. [Hooks на основе подсказок](#prompt-based-hooks).

480* `"type": "agent"`: многооборотная проверка с доступом к инструментам. Hooks агентов являются экспериментальными и могут измениться. См. [Hooks на основе агентов](#agent-based-hooks).

481 

482### Чтение ввода и возврат вывода

483 

484Hooks взаимодействуют с Claude Code через stdin, stdout, stderr и коды выхода. Когда событие срабатывает, Claude Code передаёт данные, специфичные для события, в виде JSON в stdin вашего скрипта. Ваш скрипт читает эти данные, выполняет свою работу и сообщает Claude Code, что делать дальше, через код выхода.

485 

486#### Ввод hook

487 

488Каждое событие включает общие поля, такие как `session_id` и `cwd`, но каждый тип события добавляет разные данные. Например, когда Claude запускает команду Bash, hook `PreToolUse` получает что-то вроде этого на stdin:

489 

490```json theme={null}

491{

492 "session_id": "abc123", // уникальный ID для этого сеанса

493 "cwd": "/Users/sarah/myproject", // рабочий каталог при срабатывании события

494 "hook_event_name": "PreToolUse", // какое событие запустило этот hook

495 "tool_name": "Bash", // инструмент, который Claude собирается использовать

496 "tool_input": { // аргументы, которые Claude передал инструменту

497 "command": "npm test" // для Bash это команда оболочки

498 }

499}

500```

501 

502Ваш скрипт может анализировать этот JSON и действовать на основе любого из этих полей. Hooks `UserPromptSubmit` получают текст `prompt` вместо этого, hooks `SessionStart` получают `source` (startup, resume, clear, compact) и так далее. См. [Общие поля ввода](/ru/hooks#common-input-fields) в справочнике для общих полей и раздел каждого события для схем, специфичных для события.

503 

504#### Вывод hook

505 

506Ваш скрипт сообщает Claude Code, что делать дальше, записывая в stdout или stderr и выходя с определённым кодом. Например, hook `PreToolUse`, который хочет заблокировать команду:

507 

508```bash theme={null}

509#!/bin/bash

510INPUT=$(cat)

511COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command')

512 

513if echo "$COMMAND" | grep -q "drop table"; then

514 echo "Blocked: dropping tables is not allowed" >&2 # stderr становится обратной связью Claude

515 exit 2 # exit 2 = блокировать действие

516fi

517 

518exit 0 # exit 0 = позволить продолжить

519```

520 

521Код выхода определяет, что происходит дальше:

522 

523* **Exit 0**: действие продолжается. Для hooks `UserPromptSubmit`, `UserPromptExpansion` и `SessionStart` всё, что вы пишете в stdout, добавляется в контекст Claude.

524* **Exit 2**: действие блокируется. Напишите причину в stderr, и Claude получит её как обратную связь, чтобы он мог скорректировать. Некоторые события не могут быть заблокированы: для `SessionStart`, `Setup`, `Notification` и других, exit 2 показывает stderr пользователю и выполнение продолжается. См. [поведение кода выхода 2 для каждого события](/ru/hooks#exit-code-2-behavior-per-event) для полного списка.

525* **Любой другой код выхода**: действие продолжается. Стенограмма показывает уведомление об ошибке `<hook name> hook error`, за которым следует первая строка stderr; полный stderr переходит в [журнал отладки](/ru/hooks#debug-hooks).

526 

527#### Структурированный вывод JSON

528 

529Коды выхода дают вам два варианта: разрешить или заблокировать. Для большего контроля выйдите с 0 и выведите объект JSON в stdout вместо этого.

530 

531<Note>

532 Используйте exit 2 для блокировки с сообщением stderr или exit 0 с JSON для структурированного управления. Не смешивайте их: Claude Code игнорирует JSON при выходе 2.

533</Note>

534 

535Например, hook `PreToolUse` может отклонить вызов инструмента и сказать Claude почему, или передать его пользователю на одобрение:

536 

537```json theme={null}

538{

539 "hookSpecificOutput": {

540 "hookEventName": "PreToolUse",

541 "permissionDecision": "deny",

542 "permissionDecisionReason": "Use rg instead of grep for better performance"

543 }

544}

545```

546 

547С `"deny"` Claude Code отменяет вызов инструмента и передаёт `permissionDecisionReason` обратно Claude. Эти значения `permissionDecision` специфичны для `PreToolUse`:

548 

549* `"allow"`: пропустить интерактивный запрос разрешения. Правила отказа и запроса, включая управляемые списки отказов предприятия, по-прежнему применяются

550* `"deny"`: отменить вызов инструмента и отправить причину Claude

551* `"ask"`: показать запрос разрешения пользователю как обычно

552 

553Четвёртое значение, `"defer"`, доступно в [неинтерактивном режиме](/ru/headless) с флагом `-p`. Оно выходит из процесса с сохранённым вызовом инструмента, чтобы обёртка Agent SDK могла собрать ввод и возобновить. См. [Отложить вызов инструмента на потом](/ru/hooks#defer-a-tool-call-for-later) в справочнике.

554 

555Возврат `"allow"` пропускает интерактивный запрос, но не переопределяет [правила разрешений](/ru/permissions#manage-permissions). Если правило отказа соответствует вызову инструмента, вызов блокируется даже когда ваш hook возвращает `"allow"`. Если правило запроса соответствует, пользователь по-прежнему получает запрос. Это означает, что правила отказа из любой области параметров, включая [управляемые параметры](/ru/settings#settings-files), всегда имеют приоритет над одобрениями hook.

556 

557Другие события используют разные шаблоны решений. Например, hooks `PostToolUse` и `Stop` используют поле `decision: "block"` верхнего уровня, а `PermissionRequest` использует `hookSpecificOutput.decision.behavior`. См. [таблицу сводки](/ru/hooks#decision-control) в справочнике для полного разбора по событиям.

558 

559Для hooks `UserPromptSubmit` используйте `additionalContext` вместо этого для внедрения текста в контекст Claude. Hooks на основе подсказок (`type: "prompt"`) обрабатывают вывод иначе: см. [Hooks на основе подсказок](#prompt-based-hooks).

560 

561### Фильтрация hooks с помощью matchers

562 

563Без matcher hook срабатывает при каждом возникновении его события. Matchers позволяют вам сузить это. Например, если вы хотите запустить форматер только после редактирования файлов (не после каждого вызова инструмента), добавьте matcher к вашему hook `PostToolUse`:

564 

565```json theme={null}

566{

567 "hooks": {

568 "PostToolUse": [

569 {

570 "matcher": "Edit|Write",

571 "hooks": [

572 { "type": "command", "command": "prettier --write ..." }

573 ]

574 }

575 ]

576 }

577}

578```

579 

580Matcher `"Edit|Write"` срабатывает только, когда Claude использует инструмент `Edit` или `Write`, а не когда он использует `Bash`, `Read` или любой другой инструмент. См. [Шаблоны Matcher](/ru/hooks#matcher-patterns) для того, как простые имена и регулярные выражения оцениваются.

581 

582<Note>

583 Claude может также создавать или изменять файлы, запуская команды оболочки через инструмент `Bash`. Если ваш hook должен видеть каждое изменение файла, например для сканирования соответствия или логирования аудита, добавьте hook [`Stop`](/ru/hooks#stop), который сканирует рабочее дерево один раз за ход. Для покрытия за вызов вместо этого также соответствуйте `Bash` и пусть ваш скрипт перечисляет изменённые и неотслеживаемые файлы с помощью `git status --porcelain`.

584</Note>

585 

586Каждый тип события соответствует определённому полю:

587 

588| Событие | Что фильтрует matcher | Примеры значений matcher |

589| :-------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |

590| `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied` | имя инструмента | `Bash`, `Edit\|Write`, `mcp__.*` |

591| `SessionStart` | как начался сеанс | `startup`, `resume`, `clear`, `compact` |

592| `Setup` | какой флаг CLI запустил setup | `init`, `maintenance` |

593| `SessionEnd` | почему закончился сеанс | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

594| `Notification` | тип уведомления | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |

595| `SubagentStart` | тип агента | `general-purpose`, `Explore`, `Plan` или пользовательские имена агентов |

596| `PreCompact`, `PostCompact` | что запустило компактирование | `manual`, `auto` |

597| `SubagentStop` | тип агента | те же значения, что и `SubagentStart` |

598| `ConfigChange` | источник конфигурации | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

599| `StopFailure` | тип ошибки | `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `server_error`, `max_output_tokens`, `unknown` |

600| `InstructionsLoaded` | причина загрузки | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |

601| `Elicitation` | имя MCP сервера | ваши настроенные имена MCP серверов |

602| `ElicitationResult` | имя MCP сервера | те же значения, что и `Elicitation` |

603| `FileChanged` | буквальные имена файлов для наблюдения (см. [FileChanged](/ru/hooks#filechanged)) | `.envrc\|.env` |

604| `UserPromptExpansion` | имя команды | ваши имена skill или команд |

605| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `CwdChanged` | поддержка matcher отсутствует | всегда срабатывает при каждом возникновении |

606 

607Несколько дополнительных примеров, показывающих matchers на разных типах событий:

608 

609<Tabs>

610 <Tab title="Регистрируйте каждую команду Bash">

611 Соответствуйте только вызовам инструмента `Bash` и регистрируйте каждую команду в файл. Событие `PostToolUse` срабатывает после завершения команды, поэтому `tool_input.command` содержит то, что запустилось. Hook получает данные события в виде JSON на stdin, и `jq -r '.tool_input.command'` извлекает только строку команды, которую `>>` добавляет в файл журнала:

612 

613 ```json theme={null}

614 {

615 "hooks": {

616 "PostToolUse": [

617 {

618 "matcher": "Bash",

619 "hooks": [

620 {

621 "type": "command",

622 "command": "jq -r '.tool_input.command' >> ~/.claude/command-log.txt"

623 }

624 ]

625 }

626 ]

627 }

628 }

629 ```

630 </Tab>

631 

632 <Tab title="Соответствие MCP инструментам">

633 MCP инструменты используют другое соглашение об именовании, чем встроенные инструменты: `mcp__<server>__<tool>`, где `<server>` — имя MCP сервера, а `<tool>` — инструмент, который он предоставляет. Например, `mcp__github__search_repositories` или `mcp__filesystem__read_file`. Используйте matcher regex для нацеливания на все инструменты с определённого сервера, или соответствуйте серверам с шаблоном, таким как `mcp__.*__write.*`. См. [Соответствие MCP инструментам](/ru/hooks#match-mcp-tools) в справочнике для полного списка примеров.

634 

635 Команда ниже извлекает имя инструмента из JSON ввода hook с помощью `jq` и записывает его в stderr. Запись в stderr сохраняет stdout чистым для вывода JSON и отправляет сообщение в [журнал отладки](/ru/hooks#debug-hooks):

636 

637 ```json theme={null}

638 {

639 "hooks": {

640 "PreToolUse": [

641 {

642 "matcher": "mcp__github__.*",

643 "hooks": [

644 {

645 "type": "command",

646 "command": "echo \"GitHub tool called: $(jq -r '.tool_name')\" >&2"

647 }

648 ]

649 }

650 ]

651 }

652 }

653 ```

654 </Tab>

655 

656 <Tab title="Очистка при завершении сеанса">

657 Событие `SessionEnd` поддерживает matchers на причину завершения сеанса. Этот hook срабатывает только на `clear` (когда вы запускаете `/clear`), а не на нормальные выходы:

658 

659 ```json theme={null}

660 {

661 "hooks": {

662 "SessionEnd": [

663 {

664 "matcher": "clear",

665 "hooks": [

666 {

667 "type": "command",

668 "command": "rm -f /tmp/claude-scratch-*.txt"

669 }

670 ]

671 }

672 ]

673 }

674 }

675 ```

676 </Tab>

677</Tabs>

678 

679Для полного синтаксиса matcher см. [справочник Hooks](/ru/hooks#configuration).

680 

681#### Фильтрация по имени инструмента и аргументам с помощью поля `if`

682 

683<Note>

684 Поле `if` требует Claude Code v2.1.85 или позже. Более ранние версии игнорируют его и запускают hook при каждом совпадении.

685</Note>

686 

687Поле `if` использует [синтаксис правил разрешений](/ru/permissions) для фильтрации hooks по имени инструмента и аргументам вместе, поэтому процесс hook порождается только когда вызов инструмента совпадает, или когда команда Bash слишком сложна для анализа. Это выходит за рамки `matcher`, который фильтрует на уровне группы только по имени инструмента.

688 

689Например, чтобы запустить hook только когда Claude использует команды `git` вместо всех команд Bash:

690 

691```json theme={null}

692{

693 "hooks": {

694 "PreToolUse": [

695 {

696 "matcher": "Bash",

697 "hooks": [

698 {

699 "type": "command",

700 "if": "Bash(git *)",

701 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/check-git-policy.sh"

702 }

703 ]

704 }

705 ]

706 }

707}

708```

709 

710Процесс hook порождается только когда подкоманда команды Bash совпадает с `git *`, или когда команда слишком сложна для анализа в подкоманды. Для составных команд, таких как `npm test && git push`, Claude Code оценивает каждую подкоманду и запускает hook, потому что `git push` совпадает. Поле `if` принимает те же шаблоны, что и правила разрешений: `"Bash(git *)"`, `"Edit(*.ts)"` и так далее. Для соответствия нескольким именам инструментов используйте отдельные обработчики каждый со своим значением `if`, или соответствуйте на уровне `matcher`, где поддерживается чередование трубой.

711 

712`if` работает только на событиях инструментов: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` и `PermissionDenied`. Добавление его к любому другому событию предотвращает запуск hook.

713 

714### Настройка местоположения hook

715 

716Где вы добавляете hook, определяет его область:

717 

718| Местоположение | Область | Общий доступ |

719| :---------------------------------------------------------- | :--------------------------- | :--------------------------------- |

720| `~/.claude/settings.json` | Все ваши проекты | Нет, локально на вашей машине |

721| `.claude/settings.json` | Один проект | Да, можно зафиксировать в репо |

722| `.claude/settings.local.json` | Один проект | Нет, gitignored |

723| Управляемые параметры политики | Организация | Да, контролируется администратором |

724| [Plugin](/ru/plugins) `hooks/hooks.json` | Когда плагин включен | Да, упакован с плагином |

725| [Skill](/ru/skills) или [agent](/ru/sub-agents) frontmatter | Пока skill или agent активны | Да, определено в файле компонента |

726 

727Запустите [`/hooks`](/ru/hooks#the-hooks-menu) в Claude Code для просмотра всех настроенных hooks, сгруппированных по событиям. Чтобы отключить все hooks сразу, установите `"disableAllHooks": true` в вашем файле параметров.

728 

729Если вы редактируете файлы параметров напрямую во время работы Claude Code, наблюдатель файлов обычно автоматически подхватывает изменения hook.

730 

731## Hooks на основе подсказок

732 

733Для решений, требующих суждения, а не детерминированных правил, используйте hooks `type: "prompt"`. Вместо запуска команды оболочки Claude Code отправляет вашу подсказку и данные ввода hook модели Claude (Haiku по умолчанию) для принятия решения. Вы можете указать другую модель с полем `model`, если вам нужна большая возможность.

734 

735Единственная работа модели — вернуть решение да/нет в виде JSON:

736 

737* `"ok": true`: действие продолжается

738* `"ok": false`: что происходит, зависит от события:

739 * `Stop` и `SubagentStop`: значение `reason` передаётся обратно Claude, чтобы он продолжал работать

740 * `PreToolUse`: вызов инструмента отклоняется и значение `reason` возвращается Claude как ошибка инструмента, чтобы он мог скорректировать и продолжить

741 * `PostToolUse`, `PostToolBatch`, `UserPromptSubmit` и `UserPromptExpansion`: ход завершается и значение `reason` появляется в чате как строка предупреждения

742 

743Этот пример использует hook `Stop` для запроса модели, завершены ли все запрошенные задачи. Если модель возвращает `"ok": false`, Claude продолжает работать и использует `reason` как свою следующую инструкцию:

744 

745```json theme={null}

746{

747 "hooks": {

748 "Stop": [

749 {

750 "hooks": [

751 {

752 "type": "prompt",

753 "prompt": "Check if all tasks are complete. If not, respond with {\"ok\": false, \"reason\": \"what remains to be done\"}."

754 }

755 ]

756 }

757 ]

758 }

759}

760```

761 

762Для полных параметров конфигурации см. [Hooks на основе подсказок](/ru/hooks#prompt-based-hooks) в справочнике.

763 

764## Hooks на основе агентов

765 

766<Warning>

767 Hooks агентов являются экспериментальными. Поведение и конфигурация могут измениться в будущих выпусках. Для производственных рабочих процессов предпочитайте [command hooks](/ru/hooks#command-hook-fields).

768</Warning>

769 

770Когда проверка требует проверки файлов или запуска команд, используйте hooks `type: "agent"`. В отличие от hooks подсказок, которые делают один вызов LLM, hooks агентов порождают subagent, который может читать файлы, искать код и использовать другие инструменты для проверки условий перед возвратом решения.

771 

772Hooks агентов используют тот же формат ответа `"ok"` / `"reason"`, что и hooks подсказок, но с более длинным временем ожидания по умолчанию 60 секунд и до 50 оборотов использования инструмента.

773 

774Этот пример проверяет, что тесты проходят перед тем, как позволить Claude остановиться:

775 

776```json theme={null}

777{

778 "hooks": {

779 "Stop": [

780 {

781 "hooks": [

782 {

783 "type": "agent",

784 "prompt": "Verify that all unit tests pass. Run the test suite and check the results. $ARGUMENTS",

785 "timeout": 120

786 }

787 ]

788 }

789 ]

790 }

791}

792```

793 

794Используйте hooks подсказок, когда данных ввода hook достаточно для принятия решения. Используйте hooks агентов, когда вам нужно проверить что-то против фактического состояния кодовой базы.

795 

796Для полных параметров конфигурации см. [Hooks на основе агентов](/ru/hooks#agent-based-hooks) в справочнике.

797 

798## HTTP hooks

799 

800Используйте hooks `type: "http"` для POST данных события на HTTP конечную точку вместо запуска команды оболочки. Конечная точка получает тот же JSON, который hook команды получил бы на stdin, и возвращает результаты через тело ответа HTTP, используя тот же формат JSON.

801 

802HTTP hooks полезны, когда вы хотите, чтобы веб-сервер, облачная функция или внешний сервис обрабатывали логику hook: например, общий сервис аудита, который регистрирует события использования инструмента в команде.

803 

804Этот пример отправляет каждое использование инструмента на локальный сервис логирования:

805 

806```json theme={null}

807{

808 "hooks": {

809 "PostToolUse": [

810 {

811 "hooks": [

812 {

813 "type": "http",

814 "url": "http://localhost:8080/hooks/tool-use",

815 "headers": {

816 "Authorization": "Bearer $MY_TOKEN"

817 },

818 "allowedEnvVars": ["MY_TOKEN"]

819 }

820 ]

821 }

822 ]

823 }

824}

825```

826 

827Конечная точка должна вернуть тело ответа JSON, используя тот же [формат вывода](/ru/hooks#json-output), что и hooks команд. Для блокировки вызова инструмента верните ответ 2xx с соответствующими полями `hookSpecificOutput`. Коды состояния HTTP сами по себе не могут блокировать действия.

828 

829Значения заголовков поддерживают интерполяцию переменных окружения, используя синтаксис `$VAR_NAME` или `${VAR_NAME}`. Разрешены только переменные, указанные в массиве `allowedEnvVars`; все остальные ссылки `$VAR` остаются пустыми.

830 

831Для полных параметров конфигурации и обработки ответов см. [HTTP hooks](/ru/hooks#http-hook-fields) в справочнике.

832 

833## Ограничения и устранение неполадок

834 

835### Ограничения

836 

837* Hooks команд взаимодействуют только через stdout, stderr и коды выхода. Они не могут запускать команды `/` или вызовы инструментов. Текст, возвращённый через `additionalContext`, внедряется как системное напоминание, которое Claude читает как простой текст. HTTP hooks взаимодействуют через тело ответа вместо этого.

838* Время ожидания hook составляет 10 минут по умолчанию, настраивается для каждого hook с помощью поля `timeout` (в секундах).

839* Hooks `PostToolUse` не могут отменить действия, так как инструмент уже выполнен.

840* Hooks `PermissionRequest` не срабатывают в [неинтерактивном режиме](/ru/headless) (`-p`). Используйте hooks `PreToolUse` для автоматизированных решений разрешений.

841* Hooks `Stop` срабатывают всякий раз, когда Claude завершает ответ, а не только при завершении задачи. Они не срабатывают при прерывании пользователем. Ошибки API срабатывают [StopFailure](/ru/hooks#stopfailure) вместо этого.

842* Когда несколько hooks PreToolUse возвращают [`updatedInput`](/ru/hooks#pretooluse) для переписания аргументов инструмента, последний завершённый побеждает. Поскольку hooks запускаются параллельно, порядок недетерминирован. Избегайте наличия более одного hook, изменяющего ввод одного и того же инструмента.

843 

844### Hooks и режимы разрешений

845 

846Hooks PreToolUse срабатывают перед любой проверкой режима разрешений. Hook, возвращающий `permissionDecision: "deny"`, блокирует инструмент даже в режиме `bypassPermissions` или с `--dangerously-skip-permissions`. Это позволяет вам применять политику, которую пользователи не могут обойти, изменив свой режим разрешений.

847 

848Обратное неверно: hook, возвращающий `"allow"`, не обходит правила отказа из параметров. Hooks могут ужесточить ограничения, но не ослабить их сверх того, что разрешают правила разрешений.

849 

850### Hook не срабатывает

851 

852Hook настроен, но никогда не выполняется.

853 

854* Запустите `/hooks` и подтвердите, что hook появляется под правильным событием

855* Проверьте, что шаблон matcher точно соответствует имени инструмента (matchers чувствительны к регистру)

856* Убедитесь, что вы запускаете правильный тип события (например, `PreToolUse` срабатывает перед выполнением инструмента, `PostToolUse` срабатывает после)

857* Если используете hooks `PermissionRequest` в неинтерактивном режиме (`-p`), переключитесь на `PreToolUse` вместо этого

858 

859### Ошибка hook в выводе

860 

861Вы видите сообщение вроде "PreToolUse hook error: ..." в стенограмме.

862 

863* Ваш скрипт неожиданно вышел с ненулевым кодом. Протестируйте его вручную, передав образец JSON:

864 ```bash theme={null}

865 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh

866 echo $? # Проверьте код выхода

867 ```

868* Если вы видите "command not found", используйте абсолютные пути или `$CLAUDE_PROJECT_DIR` для ссылки на скрипты

869* Если вы видите "jq: command not found", установите `jq` или используйте Python/Node.js для анализа JSON

870* Если скрипт вообще не запускается, сделайте его исполняемым: `chmod +x ./my-hook.sh`

871 

872### `/hooks` показывает, что hooks не настроены

873 

874Вы отредактировали файл параметров, но hooks не появляются в меню.

875 

876* Редактирования файлов обычно подхватываются автоматически. Если они не появились через несколько секунд, наблюдатель файлов мог пропустить изменение: перезагрузите сеанс для принудительной перезагрузки.

877* Убедитесь, что ваш JSON действителен (конечные запятые и комментарии не допускаются)

878* Подтвердите, что файл параметров находится в правильном месте: `.claude/settings.json` для hooks проекта, `~/.claude/settings.json` для глобальных hooks

879 

880### Stop hook работает вечно

881 

882Claude продолжает работать в бесконечном цикле вместо остановки.

883 

884Ваш скрипт Stop hook должен проверить, не срабатывал ли он уже. Проанализируйте поле `stop_hook_active` из JSON ввода и выйдите рано, если оно `true`:

885 

886```bash theme={null}

887#!/bin/bash

888INPUT=$(cat)

889if [ "$(echo "$INPUT" | jq -r '.stop_hook_active')" = "true" ]; then

890 exit 0 # Позволить Claude остановиться

891fi

892# ... остальная логика вашего hook

893```

894 

895### Ошибка валидации JSON

896 

897Claude Code показывает ошибку анализа JSON, даже если ваш скрипт hook выводит действительный JSON.

898 

899Когда Claude Code запускает hook, он порождает оболочку, которая источает ваш профиль (`~/.zshrc` или `~/.bashrc`). Если ваш профиль содержит безусловные операторы `echo`, этот вывод добавляется к JSON вашего hook:

900 

901```text theme={null}

902Shell ready on arm64

903{"decision": "block", "reason": "Not allowed"}

904```

905 

906Claude Code пытается проанализировать это как JSON и не удаётся. Чтобы исправить это, оберните операторы echo в вашем профиле оболочки, чтобы они запускались только в интерактивных оболочках:

907 

908```bash theme={null}

909# В ~/.zshrc или ~/.bashrc

910if [[ $- == *i* ]]; then

911 echo "Shell ready"

912fi

913```

914 

915Переменная `$-` содержит флаги оболочки, и `i` означает интерактивный. Hooks запускаются в неинтерактивных оболочках, поэтому echo пропускается.

916 

917### Методы отладки

918 

919Представление стенограммы, переключаемое с помощью `Ctrl+O`, показывает однострочную сводку для каждого hook, который срабатывал: успех молчит, блокирующие ошибки показывают stderr, и неблокирующие ошибки показывают уведомление об ошибке `<hook name> hook error`, за которым следует первая строка stderr.

920 

921Для полных деталей выполнения, включая какие hooks совпали, их коды выхода, stdout и stderr, прочитайте журнал отладки. Запустите Claude Code с `claude --debug-file /tmp/claude.log` для записи в известный путь, затем `tail -f /tmp/claude.log` в другом терминале. Если вы запустили без этого флага, запустите `/debug` во время сеанса для включения логирования и поиска пути журнала.

922 

923## Узнайте больше

924 

925* [Справочник Hooks](/ru/hooks): полные схемы событий, формат вывода JSON, асинхронные hooks и MCP tool hooks

926* [Соображения безопасности](/ru/hooks#security-considerations): просмотрите перед развёртыванием hooks в общих или производственных средах

927* [Пример валидатора команд Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py): полная справочная реализация

how-claude-code-works.md +263 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Как работает Claude Code

6 

7> Поймите агентивный цикл, встроенные инструменты и то, как Claude Code взаимодействует с вашим проектом.

8 

9Claude Code — это агентивный помощник, который работает в вашем терминале. Хотя он отлично справляется с кодированием, он может помочь с чем угодно, что вы можете делать из командной строки: писать документацию, запускать сборки, искать файлы, исследовать темы и многое другое.

10 

11Это руководство охватывает основную архитектуру, встроенные возможности и [советы по эффективной работе с Claude Code](#work-effectively-with-claude-code). Пошаговые инструкции см. в разделе [Типичные рабочие процессы](/ru/common-workflows). Информацию о функциях расширяемости, таких как skills, MCP и hooks, см. в разделе [Расширение Claude Code](/ru/features-overview).

12 

13## Агентивный цикл

14 

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

16 

17<img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/agentic-loop.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=5f1827dec8539f38adee90ead3a85a38" alt="Агентивный цикл: ваш запрос приводит к тому, что Claude собирает контекст, выполняет действия, проверяет результаты и повторяет процесс до завершения задачи. Вы можете прервать процесс в любой момент." width="720" height="280" data-path="images/agentic-loop.svg" />

18 

19Цикл адаптируется к тому, что вы просите. Вопрос о вашей кодовой базе может потребовать только сбора контекста. Исправление ошибки проходит через все три фазы повторно. Рефакторинг может включать обширную проверку. Claude решает, что требуется на каждом этапе, на основе того, что он узнал на предыдущем этапе, объединяя десятки действий вместе и корректируя курс по ходу дела.

20 

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

22 

23Агентивный цикл питается двумя компонентами: [моделями](#models), которые рассуждают, и [инструментами](#tools), которые действуют. Claude Code служит **агентивной оболочкой** вокруг Claude: он предоставляет инструменты, управление контекстом и среду выполнения, которые превращают языковую модель в способного агента кодирования.

24 

25### Модели

26 

27Claude Code использует модели Claude для понимания вашего кода и рассуждения о задачах. Claude может читать код на любом языке, понимать, как компоненты связаны, и выяснять, что нужно изменить для достижения вашей цели. Для сложных задач он разбивает работу на этапы, выполняет их и корректирует на основе того, что узнаёт.

28 

29[Доступны несколько моделей](/ru/model-config) с различными компромиссами. Sonnet хорошо справляется с большинством задач кодирования. Opus обеспечивает более сильное рассуждение для сложных архитектурных решений. Переключайтесь с помощью `/model` во время сеанса или начните с `claude --model <name>`.

30 

31Когда в этом руководстве говорится «Claude выбирает» или «Claude решает», это модель, которая выполняет рассуждение.

32 

33### Инструменты

34 

35Инструменты — это то, что делает Claude Code агентивным. Без инструментов Claude может только отвечать текстом. С инструментами Claude может действовать: читать ваш код, редактировать файлы, запускать команды, искать в Интернете и взаимодействовать с внешними сервисами. Каждое использование инструмента возвращает информацию, которая поступает обратно в цикл, информируя следующее решение Claude.

36 

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

38 

39| Категория | Что может делать Claude |

40| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

41| **Операции с файлами** | Читать файлы, редактировать код, создавать новые файлы, переименовывать и реорганизовывать |

42| **Поиск** | Находить файлы по шаблону, искать содержимое с помощью regex, исследовать кодовые базы |

43| **Выполнение** | Запускать команды shell, запускать серверы, запускать тесты, использовать git |

44| **Веб** | Искать в Интернете, получать документацию, искать сообщения об ошибках |

45| **Интеллект кода** | Видеть ошибки типов и предупреждения после редактирования, переходить к определениям, находить ссылки (требует [плагины интеллекта кода](/ru/discover-plugins#code-intelligence)) |

46 

47Это основные возможности. Claude также имеет инструменты для создания subagents, задания вам вопросов и других задач оркестрации. Полный список см. в разделе [Инструменты, доступные Claude](/ru/tools-reference).

48 

49Claude выбирает, какие инструменты использовать, на основе вашего запроса и того, что он узнаёт по ходу дела. Когда вы говорите «исправьте неудачные тесты», Claude может:

50 

511. Запустить набор тестов, чтобы увидеть, что не работает

522. Прочитать вывод ошибки

533. Найти соответствующие исходные файлы

544. Прочитать эти файлы, чтобы понять код

555. Отредактировать файлы, чтобы исправить проблему

566. Снова запустить тесты для проверки

57 

58Каждое использование инструмента даёт Claude новую информацию, которая информирует следующий шаг. Это агентивный цикл в действии.

59 

60**Расширение базовых возможностей:** Встроенные инструменты — это основа. Вы можете расширить то, что знает Claude, с помощью [skills](/ru/skills), подключиться к внешним сервисам с помощью [MCP](/ru/mcp), автоматизировать рабочие процессы с помощью [hooks](/ru/hooks) и делегировать задачи [subagents](/ru/sub-agents). Эти расширения образуют слой поверх основного агентивного цикла. Руководство по выбору правильного расширения для ваших потребностей см. в разделе [Расширение Claude Code](/ru/features-overview).

61 

62## Что Claude может получить доступ

63 

64Это руководство сосредоточено на терминале. Claude Code также работает в [VS Code](/ru/vs-code), [JetBrains IDEs](/ru/jetbrains) и других средах.

65 

66Когда вы запускаете `claude` в каталоге, Claude Code получает доступ к:

67 

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

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

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

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

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

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

74 

75Поскольку Claude видит весь ваш проект, он может работать по всему проекту. Когда вы просите Claude «исправить ошибку аутентификации», он ищет соответствующие файлы, читает несколько файлов для понимания контекста, вносит скоординированные изменения в них, запускает тесты для проверки исправления и фиксирует изменения, если вы попросите. Это отличается от встроенных помощников кода, которые видят только текущий файл.

76 

77## Среды и интерфейсы

78 

79Агентивный цикл, инструменты и возможности, описанные выше, одинаковы везде, где вы используете Claude Code. Что меняется, так это то, где выполняется код и как вы с ним взаимодействуете.

80 

81### Среды выполнения

82 

83Claude Code работает в трёх средах, каждая с различными компромиссами для того, где выполняется ваш код.

84 

85| Среда | Где выполняется код | Вариант использования |

86| ------------------------ | ---------------------------------------- | ------------------------------------------------------------------------- |

87| **Локальная** | Ваша машина | По умолчанию. Полный доступ к вашим файлам, инструментам и среде |

88| **Облако** | Управляемые Anthropic виртуальные машины | Делегировать задачи, работать с репозиториями, которые у вас нет локально |

89| **Удалённое управление** | Ваша машина, управляемая из браузера | Использовать веб-интерфейс, сохраняя всё локально |

90 

91### Интерфейсы

92 

93Вы можете получить доступ к Claude Code через терминал, [настольное приложение](/ru/desktop), [расширения IDE](/ru/vs-code), [claude.ai/code](https://claude.ai/code), [Remote Control](/ru/remote-control), [Slack](/ru/slack) и [CI/CD pipelines](/ru/github-actions). Интерфейс определяет, как вы видите и взаимодействуете с Claude, но основной агентивный цикл идентичен. Полный список см. в разделе [Используйте Claude Code везде](/ru/overview#use-claude-code-everywhere).

94 

95## Работа с сеансами

96 

97Claude Code сохраняет вашу беседу локально по мере работы. Каждое сообщение, использование инструмента и результат сохраняются, что позволяет [откатывать](#undo-changes-with-checkpoints), [возобновлять и разветвлять](#resume-or-fork-sessions) сеансы. Перед тем как Claude вносит изменения в код, он также создаёт снимок затронутых файлов, чтобы вы могли откатить, если потребуется.

98 

99**Сеансы независимы.** Каждый новый сеанс начинается со свежего context window, без истории беседы из предыдущих сеансов. Claude может сохранять обучение между сеансами, используя [автоматическую память](/ru/memory#auto-memory), и вы можете добавить свои собственные постоянные инструкции в [CLAUDE.md](/ru/memory).

100 

101### Работа между ветвями

102 

103Каждая беседа Claude Code — это сеанс, привязанный к вашему текущему каталогу. Когда вы возобновляете, вы видите только сеансы из этого каталога.

104 

105Claude видит файлы вашей текущей ветви. Когда вы переключаетесь между ветвями, Claude видит файлы новой ветви, но история вашей беседы остаётся той же. Claude помнит, что вы обсуждали, даже после переключения.

106 

107Поскольку сеансы привязаны к каталогам, вы можете запускать параллельные сеансы Claude Code, используя [git worktrees](/ru/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees), которые создают отдельные каталоги для отдельных ветвей.

108 

109### Возобновление или разветвление сеансов

110 

111Когда вы возобновляете сеанс с помощью `claude --continue` или `claude --resume`, вы продолжаете с того же места, используя тот же ID сеанса. Новые сообщения добавляются к существующей беседе. Полная история вашей беседы восстанавливается, но разрешения, ограниченные сеансом, нет. Вам нужно будет повторно одобрить их.

112 

113<img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/session-continuity.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=fa41d12bfb57579cabfeece907151d30" alt="Непрерывность сеанса: возобновление продолжает тот же сеанс, разветвление создаёт новую ветвь с новым ID." width="560" height="280" data-path="images/session-continuity.svg" />

114 

115Чтобы разветвиться и попробовать другой подход без влияния на исходный сеанс, используйте флаг `--fork-session`:

116 

117```bash theme={null}

118claude --continue --fork-session

119```

120 

121Это создаёт новый ID сеанса, сохраняя историю беседы до этого момента. Исходный сеанс остаётся неизменным. Как и при возобновлении, разветвлённые сеансы не наследуют разрешения, ограниченные сеансом.

122 

123**Один и тот же сеанс в нескольких терминалах**: Если вы возобновляете один и тот же сеанс в нескольких терминалах, оба терминала записывают в один и тот же файл сеанса. Сообщения из обоих чередуются, как если бы два человека писали в одном блокноте. Ничего не повреждается, но беседа становится запутанной. Каждый терминал видит только свои собственные сообщения во время сеанса, но если вы возобновите этот сеанс позже, вы увидите всё чередующимся. Для параллельной работы с одной и той же начальной точки используйте `--fork-session`, чтобы дать каждому терминалу свой чистый сеанс.

124 

125### Context window

126 

127Context window Claude содержит историю вашей беседы, содержимое файлов, выходы команд, [CLAUDE.md](/ru/memory), [автоматическую память](/ru/memory#auto-memory), загруженные skills и системные инструкции. По мере работы контекст заполняется. Claude автоматически компактирует, но инструкции с начала беседы могут быть потеряны. Поместите постоянные правила в CLAUDE.md и запустите `/context`, чтобы увидеть, что использует место.

128 

129Для интерактивного пошагового руководства по тому, что загружается и когда, см. [Исследуйте context window](/ru/context-window).

130 

131#### Когда контекст заполняется

132 

133Claude Code управляет контекстом автоматически по мере приближения к лимиту. Он сначала очищает старые выходы инструментов, затем суммирует беседу, если потребуется. Ваши запросы и ключевые фрагменты кода сохраняются; подробные инструкции с начала беседы могут быть потеряны. Поместите постоянные правила в CLAUDE.md, а не полагайтесь на историю беседы.

134 

135Чтобы контролировать, что сохраняется во время компактирования, добавьте раздел «Compact Instructions» в CLAUDE.md или запустите `/compact` с фокусом (например, `/compact focus on the API changes`).

136 

137Запустите `/context`, чтобы увидеть, что использует место. Определения инструментов MCP отложены по умолчанию и загружаются по требованию через [поиск инструментов](/ru/mcp#scale-with-mcp-tool-search), поэтому только имена инструментов потребляют контекст, пока Claude не использует конкретный инструмент. Запустите `/mcp`, чтобы проверить затраты на каждый сервер.

138 

139#### Управление контекстом с помощью skills и subagents

140 

141Помимо компактирования, вы можете использовать другие функции для контроля того, что загружается в контекст.

142 

143[Skills](/ru/skills) загружаются по требованию. Claude видит описания skills в начале сеанса, но полное содержимое загружается только при использовании skill. Для skills, которые вы вызываете вручную, установите `disable-model-invocation: true`, чтобы описания не попадали в контекст, пока они вам не понадобятся.

144 

145[Subagents](/ru/sub-agents) получают свой собственный свежий контекст, полностью отделённый от вашей основной беседы. Их работа не раздувает ваш контекст. По завершении они возвращают резюме. Эта изоляция — причина, по которой subagents помогают при длительных сеансах.

146 

147Информацию о том, что стоит каждая функция, см. в разделе [затраты контекста](/ru/features-overview#understand-context-costs), а советы по управлению контекстом см. в разделе [снижение использования токенов](/ru/costs#reduce-token-usage).

148 

149## Оставайтесь в безопасности с контрольными точками и разрешениями

150 

151Claude имеет два механизма безопасности: контрольные точки позволяют откатывать изменения файлов, а разрешения контролируют, что Claude может делать без запроса.

152 

153### Откат изменений с контрольными точками

154 

155**Каждое редактирование файла обратимо.** Перед редактированием любого файла Claude создаёт снимок текущего содержимого. Если что-то пойдёт не так, нажмите `Esc` дважды, чтобы откатиться к предыдущему состоянию, или попросите Claude отменить.

156 

157Контрольные точки локальны для вашего сеанса, отделены от git. Они охватывают только изменения файлов. Действия, которые влияют на удалённые системы (базы данных, API, развёртывания), не могут быть контрольными точками, поэтому Claude спрашивает перед запуском команд с внешними побочными эффектами.

158 

159### Контролируйте, что может делать Claude

160 

161Нажмите `Shift+Tab`, чтобы циклически переключаться между режимами разрешений:

162 

163* **По умолчанию**: Claude спрашивает перед редактированием файлов и командами shell

164* **Автоматическое принятие редактирования**: Claude редактирует файлы без запроса, всё ещё спрашивает для команд

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

166* **Auto mode**: Claude оценивает все действия с проверками безопасности в фоновом режиме. В настоящее время это исследовательский предпросмотр

167 

168Вы также можете разрешить определённые команды в `.claude/settings.json`, чтобы Claude не спрашивал каждый раз. Это полезно для доверенных команд, таких как `npm test` или `git status`. Параметры могут быть ограничены от политик на уровне организации до личных предпочтений. Подробности см. в разделе [Разрешения](/ru/permissions).

169 

170***

171 

172## Эффективная работа с Claude Code

173 

174Эти советы помогут вам получить лучшие результаты от Claude Code.

175 

176### Попросите помощь у Claude Code

177 

178Claude Code может научить вас, как его использовать. Задавайте вопросы типа «как мне настроить hooks?» или «какой лучший способ структурировать мой CLAUDE.md?» и Claude объяснит.

179 

180Встроенные команды также помогут вам в настройке:

181 

182* `/init` проведёт вас через создание CLAUDE.md для вашего проекта

183* `/agents` помогает вам настроить пользовательские subagents

184* `/doctor` диагностирует распространённые проблемы с вашей установкой

185 

186### Это беседа

187 

188Claude Code — это беседа. Вам не нужны идеальные запросы. Начните с того, что вы хотите, затем уточните:

189 

190```text theme={null}

191Исправьте ошибку входа

192```

193 

194\[Claude исследует, пробует что-то]

195 

196```text theme={null}

197Это не совсем правильно. Проблема в обработке сеанса.

198```

199 

200\[Claude корректирует подход]

201 

202Когда первая попытка не удалась, вы не начинаете заново. Вы итерируете.

203 

204#### Прерывание и управление

205 

206Вы можете прервать Claude в любой момент. Если он идёт по неправильному пути, просто введите свою коррекцию и нажмите Enter. Claude остановится и скорректирует свой подход на основе вашего ввода. Вам не нужно ждать, пока он закончит, или начинать заново.

207 

208### Будьте конкретны с самого начала

209 

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

211 

212```text theme={null}

213Процесс оформления заказа сломан для пользователей с истёкшими картами.

214Проверьте src/payments/ на предмет проблемы, особенно обновление токена.

215Сначала напишите неудачный тест, затем исправьте его.

216```

217 

218Расплывчатые запросы работают, но вы потратите больше времени на управление. Конкретные запросы, подобные приведённому выше, часто успешны с первой попытки.

219 

220### Дайте Claude что-то для проверки

221 

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

223 

224```text theme={null}

225Реализуйте validateEmail. Тестовые случаи: 'user@example.com' → true,

226'invalid' → false, 'user@.com' → false. Запустите тесты после.

227```

228 

229Для визуальной работы вставьте скриншот дизайна и попросите Claude сравнить его реализацию с ним.

230 

231### Исследуйте перед реализацией

232 

233Для сложных проблем отделите исследование от кодирования. Используйте режим плана (`Shift+Tab` дважды) для первого анализа кодовой базы:

234 

235```text theme={null}

236Прочитайте src/auth/ и поймите, как мы обрабатываем сеансы.

237Затем создайте план добавления поддержки OAuth.

238```

239 

240Просмотрите план, уточните его через беседу, затем позвольте Claude реализовать. Этот двухфазный подход даёт лучшие результаты, чем прямой переход к коду.

241 

242### Делегируйте, не диктуйте

243 

244Думайте о делегировании способному коллеге. Дайте контекст и направление, затем доверьте Claude разобраться с деталями:

245 

246```text theme={null}

247Процесс оформления заказа сломан для пользователей с истёкшими картами.

248Соответствующий код находится в src/payments/. Можете ли вы исследовать и исправить это?

249```

250 

251Вам не нужно указывать, какие файлы читать или какие команды запускать. Claude это выясняет.

252 

253## Что дальше

254 

255<CardGroup cols={2}>

256 <Card title="Расширение с функциями" icon="puzzle-piece" href="/ru/features-overview">

257 Добавьте Skills, подключения MCP и пользовательские команды

258 </Card>

259 

260 <Card title="Типичные рабочие процессы" icon="graduation-cap" href="/ru/common-workflows">

261 Пошаговые руководства для типичных задач

262 </Card>

263</CardGroup>

interactive-mode.md +361 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Интерактивный режим

6 

7> Полный справочник по сочетаниям клавиш, режимам ввода и интерактивным функциям в сеансах Claude Code.

8 

9## Сочетания клавиш

10 

11<Note>

12 Сочетания клавиш могут отличаться в зависимости от платформы и терминала. Нажмите `?`, чтобы увидеть доступные сочетания клавиш для вашей среды.

13 

14 **Пользователи macOS**: сочетания клавиш с клавишей Option/Alt (`Alt+B`, `Alt+F`, `Alt+Y`, `Alt+M`, `Alt+P`, `Alt+T`) требуют настройки Option как Meta в вашем терминале:

15 

16 * **iTerm2**: Settings → Profiles → Keys → General → установите Left/Right Option key на "Esc+"

17 * **Apple Terminal**: Settings → Profiles → Keyboard → отметьте "Use Option as Meta Key"

18 * **VS Code**: установите `"terminal.integrated.macOptionIsMeta": true` в параметрах VS Code

19 

20 Подробнее см. в разделе [Конфигурация терминала](/ru/terminal-config).

21</Note>

22 

23### Основные управления

24 

25| Сочетание клавиш | Описание | Контекст |

26| :-------------------------------------------------- | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

27| `Ctrl+C` | Отменить текущий ввод или генерацию | Стандартное прерывание |

28| `Ctrl+X Ctrl+K` | Завершить всех фоновых агентов. Нажмите дважды в течение 3 секунд для подтверждения | Управление фоновыми агентами |

29| `Ctrl+D` | Выход из сеанса Claude Code | Сигнал EOF |

30| `Ctrl+G` или `Ctrl+X Ctrl+E` | Открыть в текстовом редакторе по умолчанию | Отредактируйте ваш запрос или пользовательский ответ в текстовом редакторе по умолчанию. `Ctrl+X Ctrl+E` — это встроенная привязка readline. Включите Show last response in external editor в `/config` для добавления предыдущего ответа Claude в виде контекста с комментариями `#` выше вашего запроса; блок комментариев удаляется при сохранении |

31| `Ctrl+L` | Перерисовать экран | Принудительно выполняет полную перерисовку терминала. Ввод и история разговора сохраняются. Используйте это для восстановления, если дисплей становится искаженным или частично пустым |

32| `Ctrl+O` | Переключить просмотр транскрипции | Показывает детальное использование инструментов и выполнение. Также расширяет вызовы MCP, которые по умолчанию сворачиваются в одну строку, например "Called slack 3 times" |

33| `Ctrl+R` | Поиск в истории команд в обратном порядке | Интерактивный поиск по предыдущим командам |

34| `Ctrl+V` или `Cmd+V` (iTerm2) или `Alt+V` (Windows) | Вставить изображение из буфера обмена | Вставляет чип `[Image #N]` в позицию курсора, чтобы вы могли ссылаться на него позиционно в вашем запросе |

35| `Ctrl+B` | Фоновое выполнение задач | Переводит bash команды и агентов в фоновый режим. Пользователи Tmux нажимают дважды |

36| `Ctrl+T` | Переключить список задач | Показать или скрыть [список задач](#task-list) в области статуса терминала |

37| `Left/Right arrows` | Переключение между вкладками диалога | Навигация между вкладками в диалогах разрешений и меню |

38| `Up/Down arrows` или `Ctrl+P`/`Ctrl+N` | Переместить курсор или навигировать по истории команд | В многострочном вводе сначала перемещает курсор внутри запроса. Когда курсор уже находится на верхнем или нижнем краю, повторное нажатие навигирует по истории команд |

39| `Esc` + `Esc` | Перемотка или резюме | Восстановите код и/или разговор до предыдущей точки, или создайте резюме из выбранного сообщения |

40| `Shift+Tab` или `Alt+M` (некоторые конфигурации) | Переключить режимы разрешений | Переключайтесь между `default`, `acceptEdits`, `plan` и любыми включенными вами режимами, такими как `auto` или `bypassPermissions`. См. [режимы разрешений](/ru/permission-modes). |

41| `Option+P` (macOS) или `Alt+P` (Windows/Linux) | Переключить модель | Переключайте модели без очистки вашего запроса |

42| `Option+T` (macOS) или `Alt+T` (Windows/Linux) | Переключить расширенное мышление | Включите или отключите режим расширенного мышления. На macOS настройте ваш терминал для отправки Option как Meta для работы этого сочетания клавиш |

43| `Option+O` (macOS) или `Alt+O` (Windows/Linux) | Переключить быстрый режим | Включите или отключите [быстрый режим](/ru/fast-mode) |

44 

45### Редактирование текста

46 

47| Сочетание клавиш | Описание | Контекст |

48| :----------------------- | :----------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

49| `Ctrl+A` | Переместить курсор в начало текущей строки | В многострочном вводе перемещает в начало текущей логической строки |

50| `Ctrl+E` | Переместить курсор в конец текущей строки | В многострочном вводе перемещает в конец текущей логической строки |

51| `Ctrl+K` | Удалить до конца строки | Сохраняет удаленный текст для вставки |

52| `Ctrl+U` | Удалить от курсора до начала строки | Сохраняет удаленный текст для вставки. Повторите для очистки по строкам в многострочном вводе. На macOS эмуляторы терминала, включая iTerm2 и Terminal.app, отображают `Cmd+Backspace` на это сочетание клавиш |

53| `Ctrl+W` | Удалить предыдущее слово | Сохраняет удаленный текст для вставки. На Windows `Ctrl+Backspace` также удаляет предыдущее слово |

54| `Ctrl+Y` | Вставить удаленный текст | Вставьте текст, удаленный с помощью `Ctrl+K`, `Ctrl+U` или `Ctrl+W` |

55| `Alt+Y` (после `Ctrl+Y`) | Циклический просмотр истории вставок | После вставки циклически просмотрите ранее удаленный текст. Требует [Option как Meta](#keyboard-shortcuts) на macOS |

56| `Alt+B` | Переместить курсор на одно слово назад | Навигация по словам. Требует [Option как Meta](#keyboard-shortcuts) на macOS |

57| `Alt+F` | Переместить курсор на одно слово вперед | Навигация по словам. Требует [Option как Meta](#keyboard-shortcuts) на macOS |

58 

59### Тема и отображение

60 

61| Сочетание клавиш | Описание | Контекст |

62| :--------------- | :----------------------------------------------- | :------------------------------------------------------------------------------------------------------------------ |

63| `Ctrl+T` | Переключить подсветку синтаксиса для блоков кода | Работает только внутри меню выбора `/theme`. Управляет тем, использует ли код в ответах Claude раскраску синтаксиса |

64 

65### Многострочный ввод

66 

67| Метод | Сочетание клавиш | Контекст |

68| :----------------------------- | :---------------- | :--------------------------------------------------------------------------------------------------- |

69| Быстрый выход | `\` + `Enter` | Работает во всех терминалах |

70| Клавиша Option | `Option+Enter` | После включения [Option как Meta](/ru/terminal-config#enable-option-key-shortcuts-on-macos) на macOS |

71| Shift+Enter | `Shift+Enter` | Встроено в iTerm2, WezTerm, Ghostty, Kitty, Warp, Apple Terminal |

72| Управляющая последовательность | `Ctrl+J` | Работает в любом терминале без конфигурации |

73| Режим вставки | Вставить напрямую | Для блоков кода, логов |

74 

75<Tip>

76 Shift+Enter работает без конфигурации в iTerm2, WezTerm, Ghostty, Kitty, Warp и Apple Terminal. Для VS Code, Cursor, Windsurf, Alacritty и Zed запустите `/terminal-setup` для установки привязки.

77</Tip>

78 

79### Быстрые команды

80 

81| Сочетание клавиш | Описание | Примечания |

82| :--------------- | :---------------------- | :---------------------------------------------------------------- |

83| `/` в начале | Команда или skill | См. [команды](#commands) и [skills](/ru/skills) |

84| `!` в начале | Режим Bash | Запускайте команды напрямую и добавляйте вывод выполнения в сеанс |

85| `@` | Упоминание пути к файлу | Запустить автодополнение пути к файлу |

86 

87### Просмотр транскрипции

88 

89Когда просмотр транскрипции открыт (переключается с помощью `Ctrl+O`), доступны эти сочетания клавиш. `Ctrl+E` можно переназначить через [`transcript:toggleShowAll`](/ru/keybindings).

90 

91| Сочетание клавиш | Описание |

92| :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

93| `Ctrl+E` | Переключить показ всего содержимого |

94| `[` | Записать полный разговор в собственный буфер прокрутки вашего терминала, чтобы `Cmd+F`, режим копирования tmux и другие встроенные инструменты могли его искать. Требует [полноэкранного отображения](/ru/fullscreen#search-and-review-the-conversation) |

95| `v` | Записать разговор во временный файл и открыть его в `$VISUAL` или `$EDITOR`. Требует [полноэкранного отображения](/ru/fullscreen) |

96| `q`, `Ctrl+C`, `Esc` | Выход из просмотра транскрипции. Все три можно переназначить через [`transcript:exit`](/ru/keybindings) |

97 

98### Голосовой ввод

99 

100| Сочетание клавиш | Описание | Примечания |

101| :-------------------------------- | :----------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

102| Удерживайте или нажимайте `Space` | Голосовая диктовка | Требует включения [голосовой диктовки](/ru/voice-dictation). Удерживайте для записи, или запустите `/voice tap` для переключения нажатием. [Переназначаемо](/ru/voice-dictation#rebind-the-dictation-key) |

103 

104## Команды

105 

106Введите `/` в Claude Code, чтобы увидеть все доступные команды, или введите `/` с последующими буквами для фильтрации. Меню `/` показывает все, что вы можете вызвать: встроенные команды, встроенные и созданные пользователем [skills](/ru/skills), и команды, предоставленные [plugins](/ru/plugins) и [MCP servers](/ru/mcp#use-mcp-prompts-as-commands). Не все встроенные команды видны каждому пользователю, так как некоторые зависят от вашей платформы или плана.

107 

108Полный список команд, включенных в Claude Code, см. в [справочнике команд](/ru/commands).

109 

110## Режим редактора Vim

111 

112Включите редактирование в стиле vim через `/config` → Editor mode.

113 

114### Переключение режимов

115 

116| Команда | Действие | Из режима |

117| :------ | :--------------------------------------- | :------------- |

118| `Esc` | Войти в режим NORMAL | INSERT, VISUAL |

119| `i` | Вставить перед курсором | NORMAL |

120| `I` | Вставить в начало строки | NORMAL |

121| `a` | Вставить после курсора | NORMAL |

122| `A` | Вставить в конец строки | NORMAL |

123| `o` | Открыть строку ниже | NORMAL |

124| `O` | Открыть строку выше | NORMAL |

125| `v` | Начать посимвольное визуальное выделение | NORMAL |

126| `V` | Начать построчное визуальное выделение | NORMAL |

127 

128### Навигация (режим NORMAL)

129 

130| Команда | Действие |

131| :-------------- | :------------------------------------------------------ |

132| `h`/`j`/`k`/`l` | Переместиться влево/вниз/вверх/вправо |

133| `w` | Следующее слово |

134| `e` | Конец слова |

135| `b` | Предыдущее слово |

136| `0` | Начало строки |

137| `$` | Конец строки |

138| `^` | Первый непустой символ |

139| `gg` | Начало ввода |

140| `G` | Конец ввода |

141| `f{char}` | Перейти к следующему вхождению символа |

142| `F{char}` | Перейти к предыдущему вхождению символа |

143| `t{char}` | Перейти прямо перед следующим вхождением символа |

144| `T{char}` | Перейти прямо после предыдущего вхождения символа |

145| `;` | Повторить последнее движение f/F/t/T |

146| `,` | Повторить последнее движение f/F/t/T в обратном порядке |

147 

148<Note>

149 В режиме vim normal, если курсор находится в начале или конце ввода и не может двигаться дальше, клавиши `j`/`k` и стрелки вместо этого навигируют по истории команд.

150</Note>

151 

152### Редактирование (режим NORMAL)

153 

154| Команда | Действие |

155| :------------- | :------------------------------- |

156| `x` | Удалить символ |

157| `dd` | Удалить строку |

158| `D` | Удалить до конца строки |

159| `dw`/`de`/`db` | Удалить слово/до конца/назад |

160| `cc` | Изменить строку |

161| `C` | Изменить до конца строки |

162| `cw`/`ce`/`cb` | Изменить слово/до конца/назад |

163| `yy`/`Y` | Скопировать строку |

164| `yw`/`ye`/`yb` | Скопировать слово/до конца/назад |

165| `p` | Вставить после курсора |

166| `P` | Вставить перед курсором |

167| `>>` | Увеличить отступ строки |

168| `<<` | Уменьшить отступ строки |

169| `J` | Объединить строки |

170| `u` | Отменить |

171| `.` | Повторить последнее изменение |

172 

173### Текстовые объекты (режим NORMAL)

174 

175Текстовые объекты работают с операторами такими как `d`, `c` и `y`:

176 

177| Команда | Действие |

178| :-------- | :------------------------------------------ |

179| `iw`/`aw` | Внутри/вокруг слова |

180| `iW`/`aW` | Внутри/вокруг СЛОВА (разделенного пробелом) |

181| `i"`/`a"` | Внутри/вокруг двойных кавычек |

182| `i'`/`a'` | Внутри/вокруг одиночных кавычек |

183| `i(`/`a(` | Внутри/вокруг скобок |

184| `i[`/`a[` | Внутри/вокруг квадратных скобок |

185| `i{`/`a{` | Внутри/вокруг фигурных скобок |

186 

187### Визуальный режим

188 

189Нажмите `v` для посимвольного выделения или `V` для построчного выделения. Движения расширяют выделение, а операторы действуют на него напрямую.

190 

191| Команда | Действие |

192| :--------------- | :---------------------------------------------------------------- |

193| `d`/`x` | Удалить выделение |

194| `y` | Скопировать выделение |

195| `c`/`s` | Изменить выделение |

196| `p` | Заменить выделение содержимым регистра |

197| `r{char}` | Заменить каждый выделенный символ на `{char}` |

198| `~`/`u`/`U` | Переключить, преобразовать в нижний или верхний регистр выделение |

199| `>`/`<` | Увеличить или уменьшить отступ выделенных строк |

200| `J` | Объединить выделенные строки |

201| `o` | Поменять местами курсор и якорь |

202| `iw`/`aw`/`i"`/… | Выделить текстовый объект |

203| `v`/`V` | Переключиться между посимвольным и построчным, или выйти |

204 

205Блочный визуальный режим с `Ctrl+V` не поддерживается.

206 

207## История команд

208 

209Claude Code сохраняет историю команд для текущего сеанса:

210 

211* История ввода хранится для каждого рабочего каталога

212* История ввода сбрасывается при запуске `/clear` для начала нового сеанса. Разговор предыдущего сеанса сохраняется и может быть возобновлен.

213* Используйте стрелки вверх/вниз для навигации (см. сочетания клавиш выше)

214* **Примечание**: расширение истории (`!`) отключено по умолчанию

215 

216### Поиск в обратном порядке с Ctrl+R

217 

218Нажмите `Ctrl+R` для интерактивного поиска по истории команд:

219 

2201. **Начать поиск**: нажмите `Ctrl+R` для активации поиска в обратном порядке по истории

2212. **Введите запрос**: введите текст для поиска в предыдущих командах. Поисковый термин выделяется в совпадающих результатах

2223. **Навигация по совпадениям**: нажмите `Ctrl+R` снова для циклического просмотра более старых совпадений

2234. **Принять совпадение**:

224 * Нажмите `Tab` или `Esc` для принятия текущего совпадения и продолжения редактирования

225 * Нажмите `Enter` для принятия и немедленного выполнения команды

2265. **Отменить поиск**:

227 * Нажмите `Ctrl+C` для отмены и восстановления вашего исходного ввода

228 * Нажмите `Backspace` на пустом поиске для отмены

229 

230Поиск отображает совпадающие команды с выделенным поисковым термином, поэтому вы можете найти и повторно использовать предыдущие вводы.

231 

232## Фоновые bash команды

233 

234Claude Code поддерживает запуск bash команд в фоновом режиме, позволяя вам продолжать работу, пока долгоживущие процессы выполняются.

235 

236### Как работает фоновое выполнение

237 

238Когда Claude Code запускает команду в фоновом режиме, он запускает команду асинхронно и немедленно возвращает ID фоновой задачи. Claude Code может отвечать на новые запросы, пока команда продолжает выполняться в фоновом режиме.

239 

240Для запуска команд в фоновом режиме вы можете либо:

241 

242* Попросить Claude Code запустить команду в фоновом режиме

243* Нажать Ctrl+B для перемещения обычного вызова инструмента Bash в фоновый режим. (Пользователи Tmux должны нажать Ctrl+B дважды из-за префиксной клавиши tmux.)

244 

245**Ключевые особенности:**

246 

247* Вывод записывается в файл и Claude может получить его с помощью инструмента Read

248* Фоновые задачи имеют уникальные ID для отслеживания и получения вывода

249* Фоновые задачи автоматически очищаются при выходе из Claude Code

250* Фоновые задачи автоматически завершаются, если вывод превышает 5GB, с примечанием в stderr, объясняющим почему

251 

252Чтобы отключить всю функциональность фоновых задач, установите переменную окружения `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` на `1`. Подробнее см. в разделе [Переменные окружения](/ru/env-vars).

253 

254**Обычные фоновые команды:**

255 

256* Инструменты сборки (webpack, vite, make)

257* Менеджеры пакетов (npm, yarn, pnpm)

258* Запускатели тестов (jest, pytest)

259* Серверы разработки

260* Долгоживущие процессы (docker, terraform)

261 

262### Режим Bash с префиксом `!`

263 

264Запускайте bash команды напрямую без прохождения через Claude, добавив префикс `!` к вашему вводу:

265 

266```bash theme={null}

267! npm test

268! git status

269! ls -la

270```

271 

272Режим Bash:

273 

274* Добавляет команду и её вывод в контекст разговора

275* Показывает прогресс и вывод в реальном времени

276* Поддерживает то же самое `Ctrl+B` фоновое выполнение для долгоживущих команд

277* Не требует интерпретации или одобрения команды Claude

278* Поддерживает автодополнение на основе истории: введите частичную команду и нажмите **Tab** для завершения из предыдущих команд `!` в текущем проекте

279* Выход с помощью `Escape`, `Backspace` или `Ctrl+U` на пустом запросе

280* Вставка текста, начинающегося с `!`, в пустой запрос автоматически входит в режим bash, соответствуя поведению введенного `!`

281 

282Это полезно для быстрых операций оболочки при сохранении контекста разговора.

283 

284## Предложения запросов

285 

286Когда вы впервые открываете сеанс, в поле ввода запроса появляется затемненный пример команды, чтобы помочь вам начать. Claude Code выбирает это из истории git вашего проекта, поэтому оно отражает файлы, над которыми вы недавно работали.

287 

288После ответа Claude предложения продолжают появляться на основе истории вашего разговора, такие как следующий шаг из многочастного запроса или естественное продолжение вашего рабочего процесса.

289 

290* Нажмите **Tab** или **Right arrow** для принятия предложения, или нажмите **Enter** для принятия и отправки

291* Начните печатать для отклонения

292 

293Предложение запускается как фоновый запрос, который повторно использует кэш запроса родительского разговора, поэтому дополнительная стоимость минимальна. Claude Code пропускает генерацию предложений, когда кэш холодный, чтобы избежать ненужных затрат.

294 

295Предложения автоматически пропускаются после первого хода разговора, в неинтерактивном режиме и в режиме плана.

296 

297Чтобы полностью отключить предложения запросов, установите переменную окружения или переключите параметр в `/config`:

298 

299```bash theme={null}

300export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false

301```

302 

303## Боковые вопросы с /btw

304 

305Используйте `/btw` для быстрого вопроса о вашей текущей работе без добавления в историю разговора. Это полезно, когда вы хотите быстрый ответ, но не хотите загромождать основной контекст или отвлекать Claude от долгоживущей задачи.

306 

307```

308/btw what was the name of that config file again?

309```

310 

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

312 

313* **Доступно во время работы Claude**: вы можете запустить `/btw` даже во время обработки Claude ответа. Боковой вопрос запускается независимо и не прерывает основной ход.

314* **Без доступа к инструментам**: боковые вопросы отвечают только из того, что уже находится в контексте. Claude не может читать файлы, запускать команды или искать при ответе на боковой вопрос.

315* **Один ответ**: нет последующих ходов. Если вам нужен диалог, используйте вместо этого обычный запрос.

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

317 

318Нажмите **Space**, **Enter** или **Escape** для отклонения ответа и возврата к запросу.

319 

320`/btw` является противоположностью [subagent](/ru/sub-agents): он видит ваш полный разговор, но не имеет инструментов, в то время как subagent имеет полные инструменты, но начинает с пустым контекстом. Используйте `/btw` для вопросов о том, что Claude уже знает из этого сеанса; используйте subagent для поиска чего-то нового.

321 

322## Список задач

323 

324При работе над сложной многошаговой работой Claude создает список задач для отслеживания прогресса. Задачи появляются в области статуса вашего терминала с индикаторами, показывающими, что ожидает выполнения, выполняется или завершено.

325 

326* Нажмите `Ctrl+T` для переключения представления списка задач. Отображение показывает до 5 задач одновременно

327* Чтобы увидеть все задачи или очистить их, спросите Claude напрямую: "show me all tasks" или "clear all tasks"

328* Задачи сохраняются при компактировании контекста, помогая Claude оставаться организованным на более крупных проектах

329* Чтобы поделиться списком задач между сеансами, установите `CLAUDE_CODE_TASK_LIST_ID` для использования именованного каталога в `~/.claude/tasks/`: `CLAUDE_CODE_TASK_LIST_ID=my-project claude`

330 

331## Резюме сеанса

332 

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

334 

335Запустите `/recap` для создания резюме по требованию. Чтобы отключить автоматические резюме, откройте `/config` и отключите **Session recap**.

336 

337Резюме сеанса включено по умолчанию для каждого плана и провайдера. Резюме всегда пропускается в неинтерактивном режиме.

338 

339## Статус проверки PR

340 

341При работе на ветке с открытым pull request, Claude Code отображает кликабельную ссылку PR в нижнем колонтитуле (например, "PR #446"). Ссылка имеет цветное подчеркивание, указывающее на состояние проверки:

342 

343* Зеленый: одобрено

344* Желтый: ожидание проверки

345* Красный: запрошены изменения

346* Серый: черновик

347* Фиолетовый: объединено

348 

349`Cmd+click` (Mac) или `Ctrl+click` (Windows/Linux) на ссылку для открытия pull request в вашем браузере. Статус обновляется автоматически каждые 60 секунд.

350 

351<Note>

352 Статус PR требует установки и аутентификации CLI `gh` (`gh auth login`).

353</Note>

354 

355## См. также

356 

357* [Skills](/ru/skills) - Пользовательские запросы и рабочие процессы

358* [Checkpointing](/ru/checkpointing) - Перемотка редактирования Claude и восстановление предыдущих состояний

359* [Справочник CLI](/ru/cli-reference) - Флаги и опции командной строки

360* [Параметры](/ru/settings) - Опции конфигурации

361* [Управление памятью](/ru/memory) - Управление файлами CLAUDE.md

jetbrains.md +192 −0 created

Details

1> ## Documentation Index

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

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

4 

5# JetBrains IDEs

6 

7> Используйте Claude Code с JetBrains IDEs, включая IntelliJ, PyCharm, WebStorm и другие

8 

9Claude Code интегрируется с JetBrains IDEs через специальный плагин, предоставляя функции, такие как интерактивный просмотр различий, совместное использование контекста выделения и многое другое.

10 

11## Поддерживаемые IDE

12 

13Плагин Claude Code работает с большинством JetBrains IDE, включая:

14 

15* IntelliJ IDEA

16* PyCharm

17* Android Studio

18* WebStorm

19* PhpStorm

20* GoLand

21 

22## Функции

23 

24* **Быстрый запуск**: используйте `Cmd+Esc` (Mac) или `Ctrl+Esc` (Windows/Linux) для открытия Claude Code непосредственно из редактора, или нажмите кнопку Claude Code в интерфейсе

25* **Просмотр различий**: изменения кода могут отображаться непосредственно в средстве просмотра различий IDE вместо терминала

26* **Контекст выделения**: текущее выделение или вкладка в IDE автоматически передаются в Claude Code

27* **Ярлыки ссылок на файлы**: используйте `Cmd+Option+K` (Mac) или `Alt+Ctrl+K` (Linux/Windows) для вставки ссылок на файлы, такие как `@src/auth.ts#L1-99`

28* **Совместное использование диагностики**: диагностические ошибки из IDE, такие как ошибки lint и синтаксиса, автоматически передаются в Claude по мере работы

29 

30## Установка

31 

32### Установка из Marketplace

33 

34Найдите и установите [плагин Claude Code](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) из marketplace JetBrains и перезагрузите вашу IDE.

35 

36Если вы еще не установили Claude Code, см. [руководство по быстрому старту](/ru/quickstart) для получения инструкций по установке.

37 

38<Note>

39 После установки плагина может потребоваться полностью перезагрузить IDE, чтобы он вступил в силу.

40</Note>

41 

42## Использование

43 

44### Из вашей IDE

45 

46Запустите `claude` из встроенного терминала вашей IDE, и все функции интеграции будут активны.

47 

48### Из внешних терминалов

49 

50Используйте команду `/ide` в любом внешнем терминале для подключения Claude Code к вашей JetBrains IDE и активации всех функций:

51 

52```bash theme={null}

53claude

54```

55 

56```text theme={null}

57/ide

58```

59 

60Если вы хотите, чтобы Claude имел доступ к тем же файлам, что и ваша IDE, запустите Claude Code из того же каталога, что и корень проекта вашей IDE.

61 

62## Конфигурация

63 

64### Параметры Claude Code

65 

66Настройте интеграцию IDE через параметры Claude Code:

67 

681. Запустите `claude`

692. Введите команду `/config`

703. Установите инструмент diff на `auto` для отображения различий в IDE, или `terminal` для сохранения их в терминале

71 

72### Параметры плагина

73 

74Настройте плагин Claude Code, перейдя в **Settings → Tools → Claude Code \[Beta]**:

75 

76#### Общие параметры

77 

78* **Claude command**: укажите пользовательскую команду для запуска Claude, например `claude`, `/usr/local/bin/claude` или `npx @anthropic-ai/claude-code`

79* **Suppress notification for Claude command not found**: пропустить уведомления об отсутствии команды Claude

80* **Enable using Option+Enter for multi-line prompts**: только на macOS. Если включено, Option+Enter вставляет новые строки в подсказки Claude Code. Отключите, если клавиша Option захватывается неожиданно. Требуется перезагрузка терминала.

81* **Enable automatic updates**: автоматически проверять и устанавливать обновления плагина, применяемые при перезагрузке

82 

83<Tip>

84 Для пользователей WSL: установите `wsl -d Ubuntu -- bash -lic "claude"` в качестве команды Claude (замените `Ubuntu` на имя вашего дистрибутива WSL)

85</Tip>

86 

87#### Конфигурация клавиши ESC

88 

89Если клавиша ESC не прерывает операции Claude Code в терминалах JetBrains:

90 

911. Перейдите в **Settings → Tools → Terminal**

922. Либо:

93 * Снимите флажок "Move focus to the editor with Escape", либо

94 * Нажмите "Configure terminal keybindings" и удалите ярлык "Switch focus to Editor"

953. Примените изменения

96 

97Это позволит клавише ESC правильно прерывать операции Claude Code.

98 

99## Специальные конфигурации

100 

101### Удаленная разработка

102 

103<Warning>

104 При использовании JetBrains Remote Development необходимо установить плагин на удаленном хосте через **Settings → Plugin (Host)**.

105</Warning>

106 

107Плагин должен быть установлен на удаленном хосте, а не на вашей локальной клиентской машине.

108 

109### Конфигурация WSL

110 

111Если вы используете Claude Code на WSL2 с JetBrains IDE и видите "No available IDEs detected", причина обычно заключается в NAT-сетевом взаимодействии WSL2 или брандмауэре Windows, блокирующем соединение между WSL2 и IDE, работающей на хосте Windows. WSL1 использует сеть хоста напрямую и не подвержена этой проблеме.

112 

113#### Разрешить трафик WSL2 через брандмауэр Windows

114 

115Это рекомендуемое исправление, так как оно сохраняет ваш существующий режим сетевого взаимодействия WSL2.

116 

117<Steps>

118 <Step title="Найдите ваш IP-адрес WSL2">

119 Из вашей оболочки WSL запустите:

120 

121 ```bash theme={null}

122 hostname -I

123 ```

124 

125 Запомните подсеть, например `172.21.123.45` находится в `172.21.0.0/16`.

126 </Step>

127 

128 <Step title="Создайте правило брандмауэра">

129 Откройте PowerShell от имени администратора и запустите следующее, отрегулировав диапазон IP в соответствии с вашей подсетью:

130 

131 ```powershell theme={null}

132 New-NetFirewallRule -DisplayName "Allow WSL2 Internal Traffic" -Direction Inbound -Protocol TCP -Action Allow -RemoteAddress 172.21.0.0/16 -LocalAddress 172.21.0.0/16

133 ```

134 </Step>

135 

136 <Step title="Перезагрузите вашу IDE и Claude Code">

137 Закройте и снова откройте оба приложения, чтобы новое правило вступило в силу.

138 </Step>

139</Steps>

140 

141#### Переключите WSL2 на зеркальное сетевое взаимодействие

142 

143Зеркальное сетевое взаимодействие требует Windows 11 22H2 или более поздней версии. Если вы используете Windows 10, используйте вместо этого правило брандмауэра выше.

144 

145Добавьте это в `.wslconfig` в вашем каталоге пользователя Windows:

146 

147```ini theme={null}

148[wsl2]

149networkingMode=mirrored

150```

151 

152Затем перезагрузите WSL с помощью `wsl --shutdown` из PowerShell.

153 

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

155 

156### Плагин не работает

157 

158Если плагин установлен, но функции Claude Code не отображаются в вашей IDE:

159 

160* Убедитесь, что вы запускаете Claude Code из корневого каталога проекта

161* Проверьте, что плагин JetBrains включен в параметрах IDE

162* Полностью перезагрузите IDE (может потребоваться сделать это несколько раз)

163* Для Remote Development убедитесь, что плагин установлен на удаленном хосте

164 

165### IDE не обнаружена

166 

167Если запуск `claude` показывает "No available IDEs detected":

168 

169* Проверьте, что плагин установлен и включен

170* Полностью перезагрузите IDE

171* Проверьте, что вы запускаете Claude Code из встроенного терминала

172* Для пользователей WSL см. [конфигурацию WSL](#конфигурация-wsl) выше

173 

174### Команда не найдена

175 

176Если нажатие на значок Claude показывает "command not found":

177 

1781. Проверьте, что Claude Code установлен, запустив `claude --version` в терминале

1792. Настройте путь команды Claude в параметрах плагина

1803. Для пользователей WSL используйте формат команды WSL, упомянутый в разделе конфигурации

181 

182## Соображения безопасности

183 

184Когда Claude Code работает в JetBrains IDE с включенными разрешениями на автоматическое редактирование, он может быть в состоянии изменять файлы конфигурации IDE, которые могут быть автоматически выполнены вашей IDE. Это может увеличить риск запуска Claude Code в режиме автоматического редактирования и позволить обойти подсказки разрешений Claude Code для выполнения bash.

185 

186При запуске в JetBrains IDEs учитывайте:

187 

188* Использование режима ручного одобрения для редактирования

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

190* Осведомленность о том, какие файлы Claude Code имеет доступ для изменения

191 

192Для проблем с установкой или входом в Claude Code вне IDE см. [Устранение неполадок установки и входа](/ru/troubleshoot-install).

keybindings.md +463 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Настройка сочетаний клавиш

6 

7> Настройте сочетания клавиш в Claude Code с помощью файла конфигурации keybindings.

8 

9<Note>

10 Настраиваемые сочетания клавиш требуют Claude Code v2.1.18 или более поздней версии. Проверьте вашу версию с помощью `claude --version`.

11</Note>

12 

13Claude Code поддерживает настраиваемые сочетания клавиш. Запустите `/keybindings` для создания или открытия файла конфигурации в `~/.claude/keybindings.json`.

14 

15## Файл конфигурации

16 

17Файл конфигурации keybindings — это объект с массивом `bindings`. Каждый блок указывает контекст и карту нажатий клавиш на действия.

18 

19<Note>Изменения в файле keybindings автоматически обнаруживаются и применяются без перезагрузки Claude Code.</Note>

20 

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

22| :--------- | :---------------------------------------------------------- |

23| `$schema` | Необязательный URL JSON Schema для автодополнения редактора |

24| `$docs` | Необязательный URL документации |

25| `bindings` | Массив блоков привязок по контексту |

26 

27Этот пример привязывает `Ctrl+E` к открытию внешнего редактора в контексте чата и отменяет привязку `Ctrl+U`:

28 

29```json theme={null}

30{

31 "$schema": "https://www.schemastore.org/claude-code-keybindings.json",

32 "$docs": "https://code.claude.com/docs/ru/keybindings",

33 "bindings": [

34 {

35 "context": "Chat",

36 "bindings": {

37 "ctrl+e": "chat:externalEditor",

38 "ctrl+u": null

39 }

40 }

41 ]

42}

43```

44 

45## Контексты

46 

47Каждый блок привязки указывает **контекст**, где применяются привязки:

48 

49| Контекст | Описание |

50| :---------------- | :------------------------------------------------------------------ |

51| `Global` | Применяется везде в приложении |

52| `Chat` | Основная область ввода чата |

53| `Autocomplete` | Меню автодополнения открыто |

54| `Settings` | Меню параметров |

55| `Confirmation` | Диалоги разрешений и подтверждений |

56| `Tabs` | Компоненты навигации по вкладкам |

57| `Help` | Меню справки видимо |

58| `Transcript` | Средство просмотра стенограммы |

59| `HistorySearch` | Режим поиска истории (Ctrl+R) |

60| `Task` | Выполняется фоновая задача |

61| `ThemePicker` | Диалог выбора темы |

62| `Attachments` | Навигация по вложениям изображений в диалогах выбора |

63| `Footer` | Навигация по индикатору нижнего колонтитула (задачи, команды, diff) |

64| `MessageSelector` | Выбор сообщения в диалоге перемотки и резюме |

65| `DiffDialog` | Навигация по средству просмотра diff |

66| `ModelPicker` | Уровень усилий выбора модели |

67| `Select` | Универсальные компоненты выбора/списка |

68| `Plugin` | Диалог plugin (обзор, обнаружение, управление) |

69| `Scroll` | Прокрутка разговора и выделение текста в полноэкранном режиме |

70| `Doctor` | Экран диагностики `/doctor` |

71 

72## Доступные действия

73 

74Действия следуют формату `namespace:action`, например `chat:submit` для отправки сообщения или `app:toggleTodos` для отображения списка задач. Каждый контекст имеет определённые доступные действия.

75 

76### Действия приложения

77 

78Действия, доступные в контексте `Global`:

79 

80| Действие | По умолчанию | Описание |

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

82| `app:interrupt` | Ctrl+C | Отменить текущую операцию |

83| `app:exit` | Ctrl+D | Выход из Claude Code |

84| `app:redraw` | (не привязано) | Принудительно перерисовать терминал |

85| `app:toggleTodos` | Ctrl+T | Переключить видимость списка задач |

86| `app:toggleTranscript` | Ctrl+O | Переключить подробную стенограмму |

87 

88### Действия истории

89 

90Действия для навигации по истории команд:

91 

92| Действие | По умолчанию | Описание |

93| :----------------- | :----------- | :------------------------- |

94| `history:search` | Ctrl+R | Открыть поиск истории |

95| `history:previous` | Up | Предыдущий элемент истории |

96| `history:next` | Down | Следующий элемент истории |

97 

98### Действия чата

99 

100Действия, доступные в контексте `Chat`:

101 

102| Действие | По умолчанию | Описание |

103| :-------------------- | :------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

104| `chat:cancel` | Escape | Отменить текущий ввод |

105| `chat:clearInput` | Ctrl+L | Принудительно перерисовать весь экран, сохраняя ввод. В [полноэкранном рендеринге](/ru/fullscreen#clear-the-conversation) нажмите дважды в течение двух секунд для запуска `/clear` |

106| `chat:clearScreen` | Cmd+K | В [полноэкранном рендеринге](/ru/fullscreen#clear-the-conversation) нажмите дважды в течение двух секунд для запуска `/clear` |

107| `chat:killAgents` | Ctrl+X Ctrl+K | Завершить всех фоновых агентов |

108| `chat:cycleMode` | Shift+Tab\* | Циклический перебор режимов разрешений |

109| `chat:modelPicker` | Meta+P | Открыть выбор модели |

110| `chat:fastMode` | Meta+O | Переключить быстрый режим |

111| `chat:thinkingToggle` | Meta+T | Переключить расширенное мышление |

112| `chat:submit` | Enter | Отправить сообщение |

113| `chat:newline` | Ctrl+J | Вставить новую строку без отправки |

114| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | Отменить последнее действие |

115| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Открыть во внешнем редакторе |

116| `chat:stash` | Ctrl+S | Спрятать текущий запрос |

117| `chat:imagePaste` | Ctrl+V (Alt+V на Windows) | Вставить изображение |

118 

119\*На Windows без режима VT (Node \<24.2.0/\<22.17.0, Bun \<1.2.23) по умолчанию используется Meta+M.

120 

121### Действия автодополнения

122 

123Действия, доступные в контексте `Autocomplete`:

124 

125| Действие | По умолчанию | Описание |

126| :---------------------- | :----------- | :--------------------- |

127| `autocomplete:accept` | Tab | Принять предложение |

128| `autocomplete:dismiss` | Escape | Закрыть меню |

129| `autocomplete:previous` | Up | Предыдущее предложение |

130| `autocomplete:next` | Down | Следующее предложение |

131 

132### Действия подтверждения

133 

134Действия, доступные в контексте `Confirmation`:

135 

136| Действие | По умолчанию | Описание |

137| :-------------------------- | :------------- | :------------------------------------- |

138| `confirm:yes` | Y, Enter | Подтвердить действие |

139| `confirm:no` | N, Escape | Отклонить действие |

140| `confirm:previous` | Up | Предыдущий вариант |

141| `confirm:next` | Down | Следующий вариант |

142| `confirm:nextField` | Tab | Следующее поле |

143| `confirm:previousField` | (не привязано) | Предыдущее поле |

144| `confirm:toggle` | Space | Переключить выбор |

145| `confirm:cycleMode` | Shift+Tab | Циклический перебор режимов разрешений |

146| `confirm:toggleExplanation` | Ctrl+E | Переключить объяснение разрешения |

147 

148### Действия разрешений

149 

150Действия, доступные в контексте `Confirmation` для диалогов разрешений:

151 

152| Действие | По умолчанию | Описание |

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

154| `permission:toggleDebug` | Ctrl+D | Переключить информацию отладки разрешения |

155 

156### Действия стенограммы

157 

158Действия, доступные в контексте `Transcript`:

159 

160| Действие | По умолчанию | Описание |

161| :------------------------- | :---------------- | :---------------------------------------- |

162| `transcript:toggleShowAll` | Ctrl+E | Переключить отображение всего содержимого |

163| `transcript:exit` | q, Ctrl+C, Escape | Выход из просмотра стенограммы |

164 

165### Действия поиска истории

166 

167Действия, доступные в контексте `HistorySearch`:

168 

169| Действие | По умолчанию | Описание |

170| :------------------------- | :----------- | :------------------------------------------------ |

171| `historySearch:next` | Ctrl+R | Следующее совпадение |

172| `historySearch:accept` | Escape, Tab | Принять выбор |

173| `historySearch:cancel` | Ctrl+C | Отменить поиск |

174| `historySearch:execute` | Enter | Выполнить выбранную команду |

175| `historySearch:cycleScope` | Ctrl+S | Циклический перебор области: сеанс, проект, везде |

176 

177### Действия задачи

178 

179Действия, доступные в контексте `Task`:

180 

181| Действие | По умолчанию | Описание |

182| :---------------- | :----------- | :------------------------------- |

183| `task:background` | Ctrl+B | Переместить текущую задачу в фон |

184 

185### Действия темы

186 

187Действия, доступные в контексте `ThemePicker`:

188 

189| Действие | По умолчанию | Описание |

190| :------------------------------- | :----------- | :------------------------------- |

191| `theme:toggleSyntaxHighlighting` | Ctrl+T | Переключить подсветку синтаксиса |

192 

193### Действия справки

194 

195Действия, доступные в контексте `Help`:

196 

197| Действие | По умолчанию | Описание |

198| :------------- | :----------- | :------------------- |

199| `help:dismiss` | Escape | Закрыть меню справки |

200 

201### Действия вкладок

202 

203Действия, доступные в контексте `Tabs`:

204 

205| Действие | По умолчанию | Описание |

206| :-------------- | :-------------- | :----------------- |

207| `tabs:next` | Tab, Right | Следующая вкладка |

208| `tabs:previous` | Shift+Tab, Left | Предыдущая вкладка |

209 

210### Действия вложений

211 

212Действия, доступные в контексте `Attachments`:

213 

214| Действие | По умолчанию | Описание |

215| :--------------------- | :---------------- | :------------------------------ |

216| `attachments:next` | Right | Следующее вложение |

217| `attachments:previous` | Left | Предыдущее вложение |

218| `attachments:remove` | Backspace, Delete | Удалить выбранное вложение |

219| `attachments:exit` | Down, Escape | Выход из навигации по вложениям |

220 

221### Действия нижнего колонтитула

222 

223Действия, доступные в контексте `Footer`:

224 

225| Действие | По умолчанию | Описание |

226| :---------------------- | :----------- | :------------------------------------------------------------------- |

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

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

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

230| `footer:down` | Down | Навигация вниз в нижнем колонтитуле |

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

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

233 

234### Действия выбора сообщения

235 

236Действия, доступные в контексте `MessageSelector`:

237 

238| Действие | По умолчанию | Описание |

239| :----------------------- | :---------------------------------------- | :--------------------------- |

240| `messageSelector:up` | Up, K, Ctrl+P | Переместиться вверх в списке |

241| `messageSelector:down` | Down, J, Ctrl+N | Переместиться вниз в списке |

242| `messageSelector:top` | Ctrl+Up, Shift+Up, Meta+Up, Shift+K | Перейти в начало |

243| `messageSelector:bottom` | Ctrl+Down, Shift+Down, Meta+Down, Shift+J | Перейти в конец |

244| `messageSelector:select` | Enter | Выбрать сообщение |

245 

246### Действия diff

247 

248Действия, доступные в контексте `DiffDialog`:

249 

250| Действие | По умолчанию | Описание |

251| :-------------------- | :--------------------- | :---------------------------------- |

252| `diff:dismiss` | Escape | Закрыть средство просмотра diff |

253| `diff:previousSource` | Left | Предыдущий источник diff |

254| `diff:nextSource` | Right | Следующий источник diff |

255| `diff:previousFile` | Up | Предыдущий файл в diff |

256| `diff:nextFile` | Down | Следующий файл в diff |

257| `diff:viewDetails` | Enter | Просмотреть детали diff |

258| `diff:back` | (зависит от контекста) | Вернуться в средстве просмотра diff |

259 

260### Действия выбора модели

261 

262Действия, доступные в контексте `ModelPicker`:

263 

264| Действие | По умолчанию | Описание |

265| :--------------------------- | :----------- | :----------------------- |

266| `modelPicker:decreaseEffort` | Left | Уменьшить уровень усилий |

267| `modelPicker:increaseEffort` | Right | Увеличить уровень усилий |

268 

269### Действия выбора

270 

271Действия, доступные в контексте `Select`:

272 

273| Действие | По умолчанию | Описание |

274| :---------------- | :-------------- | :----------------- |

275| `select:next` | Down, J, Ctrl+N | Следующий вариант |

276| `select:previous` | Up, K, Ctrl+P | Предыдущий вариант |

277| `select:accept` | Enter | Принять выбор |

278| `select:cancel` | Escape | Отменить выбор |

279 

280### Действия plugin

281 

282Действия, доступные в контексте `Plugin`:

283 

284| Действие | По умолчанию | Описание |

285| :---------------- | :----------- | :--------------------------------------------------------------------------------------------------- |

286| `plugin:toggle` | Space | Переключить выбор plugin |

287| `plugin:install` | I | Установить выбранные plugins |

288| `plugin:favorite` | F | Добавить выбранный plugin в избранное, чтобы он сортировался ближе к верхней части вкладки Installed |

289 

290### Действия параметров

291 

292Действия, доступные в контексте `Settings`:

293 

294| Действие | По умолчанию | Описание |

295| :---------------- | :----------- | :--------------------------------------------------------------------------------------- |

296| `settings:search` | / | Перейти в режим поиска |

297| `settings:retry` | R | Повторить загрузку данных об использовании (при ошибке) |

298| `settings:close` | Enter | Сохранить изменения и закрыть панель конфигурации. Escape отменяет изменения и закрывает |

299 

300### Действия Doctor

301 

302Действия, доступные в контексте `Doctor`:

303 

304| Действие | По умолчанию | Описание |

305| :----------- | :----------- | :------------------------------------------------------------------------------------------------------------ |

306| `doctor:fix` | F | Отправить отчёт диагностики Claude для исправления сообщённых проблем. Активно только при обнаружении проблем |

307 

308### Действия голоса

309 

310Действия, доступные в контексте `Chat` при включённой [диктовке голосом](/ru/voice-dictation):

311 

312| Действие | По умолчанию | Описание |

313| :----------------- | :----------- | :--------------------------------------------------------------------------- |

314| `voice:pushToTalk` | Space | Диктовать запрос. Удерживайте или нажимайте в зависимости от режима `/voice` |

315 

316### Действия прокрутки

317 

318Действия, доступные в контексте `Scroll` при включённом [полноэкранном рендеринге](/ru/fullscreen):

319 

320| Действие | По умолчанию | Описание |

321| :-------------------------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |

322| `scroll:lineUp` | (не привязано) | Прокрутить вверх на одну строку. Прокрутка колесом мыши запускает это действие |

323| `scroll:lineDown` | (не привязано) | Прокрутить вниз на одну строку. Прокрутка колесом мыши запускает это действие |

324| `scroll:pageUp` | PageUp | Прокрутить вверх на половину высоты окна просмотра |

325| `scroll:pageDown` | PageDown | Прокрутить вниз на половину высоты окна просмотра |

326| `scroll:top` | Ctrl+Home | Перейти в начало разговора |

327| `scroll:bottom` | Ctrl+End | Перейти к последнему сообщению и повторно включить автоследование |

328| `scroll:halfPageUp` | (не привязано) | Прокрутить вверх на половину высоты окна просмотра. То же поведение, что и `scroll:pageUp`, предоставляется для переназначений в стиле vi |

329| `scroll:halfPageDown` | (не привязано) | Прокрутить вниз на половину высоты окна просмотра. То же поведение, что и `scroll:pageDown`, предоставляется для переназначений в стиле vi |

330| `scroll:fullPageUp` | (не привязано) | Прокрутить вверх на полную высоту окна просмотра |

331| `scroll:fullPageDown` | (не привязано) | Прокрутить вниз на полную высоту окна просмотра |

332| `selection:copy` | Ctrl+Shift+C / Cmd+C | Скопировать выделённый текст в буфер обмена |

333| `selection:clear` | (не привязано) | Очистить активное выделение текста |

334| `selection:extendLeft` | Shift+Left | Расширить активное выделение на один столбец влево |

335| `selection:extendRight` | Shift+Right | Расширить активное выделение на один столбец вправо |

336| `selection:extendUp` | Shift+Up | Расширить активное выделение на одну строку вверх. Прокручивает окно просмотра, когда выделение достигает верхнего края |

337| `selection:extendDown` | Shift+Down | Расширить активное выделение на одну строку вниз. Прокручивает окно просмотра, когда выделение достигает нижнего края |

338| `selection:extendLineStart` | Shift+Home | Расширить активное выделение до начала строки |

339| `selection:extendLineEnd` | Shift+End | Расширить активное выделение до конца строки |

340 

341## Синтаксис нажатия клавиш

342 

343### Модификаторы

344 

345Используйте клавиши-модификаторы с разделителем `+`:

346 

347* `ctrl` или `control` - клавиша Control

348* `shift` - клавиша Shift

349* `alt`, `opt`, `option` или `meta` - клавиша Alt в Windows и Linux, клавиша Option в macOS

350* `cmd`, `command`, `super` или `win` - клавиша Command в macOS, клавиша Windows в Windows, клавиша Super в Linux

351 

352Группа `cmd` обнаруживается только в терминалах, которые сообщают о модификаторе Super, таких как те, которые поддерживают протокол клавиатуры Kitty или режим `modifyOtherKeys` xterm. Большинство терминалов его не отправляют, поэтому используйте `ctrl` или `meta` для привязок, которые вы хотите использовать везде.

353 

354Например:

355 

356```text theme={null}

357ctrl+k Ctrl + K

358shift+tab Shift + Tab

359meta+p Option + P в macOS, Alt + P в других местах

360ctrl+shift+c Несколько модификаторов

361```

362 

363### Прописные буквы

364 

365Отдельная прописная буква подразумевает Shift. Например, `K` эквивалентна `shift+k`. Это полезно для привязок в стиле vim, где прописные и строчные клавиши имеют разные значения.

366 

367Прописные буквы с модификаторами (например, `ctrl+K`) рассматриваются как стилистические и **не** подразумевают Shift: `ctrl+K` то же самое, что `ctrl+k`.

368 

369### Аккорды

370 

371Аккорды — это последовательности нажатий клавиш, разделённые пробелами:

372 

373```text theme={null}

374ctrl+k ctrl+s Нажмите Ctrl+K, отпустите, затем Ctrl+S

375```

376 

377### Специальные клавиши

378 

379* `escape` или `esc` - клавиша Escape

380* `enter` или `return` - клавиша Enter

381* `tab` - клавиша Tab

382* `space` - пробел

383* `up`, `down`, `left`, `right` - клавиши со стрелками

384* `backspace`, `delete` - клавиши удаления

385 

386## Отмена привязки сочетаний по умолчанию

387 

388Установите действие на `null` для отмены привязки сочетания по умолчанию:

389 

390```json theme={null}

391{

392 "bindings": [

393 {

394 "context": "Chat",

395 "bindings": {

396 "ctrl+s": null

397 }

398 }

399 ]

400}

401```

402 

403Это также работает для привязок аккордов. Отмена привязки каждого аккорда, который использует префикс, освобождает этот префикс для использования в качестве привязки с одной клавишей:

404 

405```json theme={null}

406{

407 "bindings": [

408 {

409 "context": "Chat",

410 "bindings": {

411 "ctrl+x ctrl+k": null,

412 "ctrl+x ctrl+e": null,

413 "ctrl+x": "chat:newline"

414 }

415 }

416 ]

417}

418```

419 

420Если вы отмените привязку некоторых, но не всех аккордов на префиксе, нажатие префикса всё ещё переводит в режим ожидания аккорда для оставшихся привязок.

421 

422## Зарезервированные сочетания клавиш

423 

424Эти сочетания клавиш не могут быть переназначены:

425 

426| Сочетание клавиш | Причина |

427| :--------------- | :----------------------------------------------- |

428| Ctrl+C | Жёстко закодированное прерывание/отмена |

429| Ctrl+D | Жёстко закодированный выход |

430| Ctrl+M | Идентично Enter в терминалах (оба отправляют CR) |

431| Caps Lock | Не передаётся в приложения терминала |

432 

433## Конфликты терминала

434 

435Некоторые сочетания могут конфликтовать с мультиплексорами терминала:

436 

437| Сочетание | Конфликт |

438| :-------- | :----------------------------------------- |

439| Ctrl+B | Префикс tmux (нажмите дважды для отправки) |

440| Ctrl+A | Префикс GNU screen |

441| Ctrl+Z | Приостановка процесса Unix (SIGTSTP) |

442 

443## Взаимодействие с режимом vim

444 

445Когда включен режим vim через `/config` → Editor mode, keybindings и режим vim работают независимо:

446 

447* **Режим vim** обрабатывает ввод на уровне текстового ввода (движение курсора, режимы, движения)

448* **Keybindings** обрабатывают действия на уровне компонента (переключение задач, отправка и т. д.)

449* Клавиша Escape в режиме vim переключает INSERT в NORMAL режим; она не запускает `chat:cancel`

450* Большинство сочетаний Ctrl+клавиша проходят через режим vim в систему keybindings

451* В режиме vim NORMAL `?` показывает меню справки (поведение vim)

452 

453## Валидация

454 

455Claude Code проверяет ваши keybindings и показывает предупреждения для:

456 

457* Ошибок разбора (неверный JSON или структура)

458* Неверных имён контекстов

459* Конфликтов зарезервированных сочетаний

460* Конфликтов мультиплексоров терминала

461* Дублирующихся привязок в одном контексте

462 

463Запустите `/doctor` для просмотра любых предупреждений keybindings.

llm-gateway.md +196 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Конфигурация LLM gateway

6 

7> Узнайте, как настроить Claude Code для работы с решениями LLM gateway. Охватывает требования к шлюзу, конфигурацию аутентификации, выбор модели и настройку конечных точек для конкретных поставщиков.

8 

9LLM gateways предоставляют централизованный прокси-слой между Claude Code и поставщиками моделей, часто предоставляя:

10 

11* **Централизованная аутентификация** - Единая точка управления ключами API

12* **Отслеживание использования** - Мониторинг использования в командах и проектах

13* **Контроль затрат** - Реализация бюджетов и ограничений скорости

14* **Логирование аудита** - Отслеживание всех взаимодействий с моделью для соответствия требованиям

15* **Маршрутизация моделей** - Переключение между поставщиками без изменения кода

16 

17## Требования к шлюзу

18 

19Чтобы LLM gateway работал с Claude Code, он должен соответствовать следующим требованиям:

20 

21**Формат API**

22 

23Шлюз должен предоставлять клиентам по крайней мере один из следующих форматов API:

24 

251. **Anthropic Messages**: `/v1/messages`, `/v1/messages/count_tokens`

26 * Должен перенаправлять заголовки запроса: `anthropic-beta`, `anthropic-version`

27 

282. **Bedrock InvokeModel**: `/invoke`, `/invoke-with-response-stream`

29 * Должен сохранять поля тела запроса: `anthropic_beta`, `anthropic_version`

30 

313. **Vertex rawPredict**: `:rawPredict`, `:streamRawPredict`, `/count-tokens:rawPredict`

32 * Должен перенаправлять заголовки запроса: `anthropic-beta`, `anthropic-version`

33 

34Невозможность перенаправления заголовков или сохранения полей тела может привести к снижению функциональности или невозможности использования функций Claude Code.

35 

36<Note>

37 Claude Code определяет, какие функции включить, на основе формата API. При использовании формата Anthropic Messages с Bedrock или Vertex может потребоваться установить переменную окружения `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`.

38</Note>

39 

40**Заголовки запроса**

41 

42Claude Code включает следующие заголовки в каждый запрос API:

43 

44| Заголовок | Описание |

45| :------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |

46| `X-Claude-Code-Session-Id` | Уникальный идентификатор текущего сеанса Claude Code. Прокси могут использовать это для агрегирования всех запросов API из одного сеанса без анализа тела запроса. |

47 

48Claude Code также добавляет короткий блок атрибуции в системный запрос, содержащий версию клиента и отпечаток, полученный из разговора. API Anthropic удаляет этот блок перед обработкой, поэтому он не влияет на кэширование запросов первой стороны. Если ваш шлюз реализует собственный кэш запросов, основанный на полном теле запроса, установите [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/ru/env-vars), чтобы опустить его.

49 

50## Конфигурация

51 

52### Выбор модели

53 

54По умолчанию Claude Code использует стандартные имена моделей для выбранного формата API.

55 

56Когда `ANTHROPIC_BASE_URL` указывает на шлюз, который предоставляет формат Anthropic Messages, Claude Code запрашивает конечную точку `/v1/models` шлюза при запуске и добавляет возвращённые модели в средство выбора `/model`. Каждая обнаруженная запись помечена как "From gateway" и использует поле `display_name` из ответа, если оно предоставлено. Это требует Claude Code версии 2.1.126 или более поздней.

57 

58Обнаружение применяется только к формату Anthropic Messages. Оно не выполняется для конечных точек Bedrock или Vertex pass-through, и оно не выполняется, когда `ANTHROPIC_BASE_URL` не установлен или указывает на `api.anthropic.com`.

59 

60Запрос обнаружения аутентифицируется так же, как запросы вывода: он отправляет `ANTHROPIC_AUTH_TOKEN` как токен bearer, или `ANTHROPIC_API_KEY` как заголовок `x-api-key`, когда токен аутентификации не установлен, вместе с любыми заголовками из `ANTHROPIC_CUSTOM_HEADERS`. Только модели, чьи идентификаторы начинаются с `claude` или `anthropic`, добавляются в средство выбора. Результаты кэшируются в `~/.claude/cache/gateway-models.json` и обновляются при каждом запуске. Если запрос не удаётся или шлюз не реализует `/v1/models`, средство выбора возвращается к кэшированному списку из предыдущего запуска или к встроенному списку моделей.

61 

62Если ваш шлюз использует имена моделей, которые не соответствуют фильтру обнаружения, используйте переменные окружения, описанные в [Конфигурация модели](/ru/model-config), чтобы добавить их вручную.

63 

64## Конфигурация LiteLLM

65 

66<Warning>

67 LiteLLM версии PyPI 1.82.7 и 1.82.8 были скомпрометированы вредоносным ПО для кражи учетных данных. Не устанавливайте эти версии. Если вы уже установили их:

68 

69 * Удалите пакет

70 * Измените все учетные данные на затронутых системах

71 * Следуйте шагам восстановления в [BerriAI/litellm#24518](https://github.com/BerriAI/litellm/issues/24518)

72 

73 LiteLLM - это сторонний прокси-сервис. Anthropic не одобряет, не поддерживает и не проверяет безопасность или функциональность LiteLLM. Это руководство предоставляется в информационных целях и может устаревать. Используйте на свой риск.

74</Warning>

75 

76### Предварительные требования

77 

78* Claude Code обновлен до последней версии

79* LiteLLM Proxy Server развернут и доступен

80* Доступ к моделям Claude через выбранного поставщика

81 

82### Базовая настройка LiteLLM

83 

84**Конфигурация Claude Code**:

85 

86#### Методы аутентификации

87 

88##### Статический ключ API

89 

90Самый простой метод с использованием фиксированного ключа API:

91 

92```bash theme={null}

93# Установить в окружении

94export ANTHROPIC_AUTH_TOKEN=sk-litellm-static-key

95 

96# Или в настройках Claude Code

97{

98 "env": {

99 "ANTHROPIC_AUTH_TOKEN": "sk-litellm-static-key"

100 }

101}

102```

103 

104Это значение будет отправлено как заголовок `Authorization`.

105 

106##### Динамический ключ API с помощником

107 

108Для ротации ключей или аутентификации для каждого пользователя:

109 

1101. Создайте скрипт помощника ключа API:

111 

112```bash theme={null}

113#!/bin/bash

114# ~/bin/get-litellm-key.sh

115 

116# Пример: Получить ключ из хранилища

117vault kv get -field=api_key secret/litellm/claude-code

118 

119# Пример: Сгенерировать JWT токен

120jwt encode \

121 --secret="${JWT_SECRET}" \

122 --exp="+1h" \

123 '{"user":"'${USER}'","team":"engineering"}'

124```

125 

1262. Настройте параметры Claude Code для использования помощника:

127 

128```json theme={null}

129{

130 "apiKeyHelper": "~/bin/get-litellm-key.sh"

131}

132```

133 

1343. Установите интервал обновления токена:

135 

136```bash theme={null}

137# Обновлять каждый час (3600000 мс)

138export CLAUDE_CODE_API_KEY_HELPER_TTL_MS=3600000

139```

140 

141Это значение будет отправлено как заголовки `Authorization` и `X-Api-Key`. `apiKeyHelper` имеет более низкий приоритет, чем `ANTHROPIC_AUTH_TOKEN` или `ANTHROPIC_API_KEY`.

142 

143#### Унифицированная конечная точка (рекомендуется)

144 

145Использование [конечной точки формата Anthropic](https://docs.litellm.ai/docs/anthropic_unified) LiteLLM:

146 

147```bash theme={null}

148export ANTHROPIC_BASE_URL=https://litellm-server:4000

149```

150 

151**Преимущества унифицированной конечной точки над сквозными конечными точками:**

152 

153* Балансировка нагрузки

154* Резервные варианты

155* Последовательная поддержка отслеживания затрат и отслеживания конечного пользователя

156 

157#### Конечные точки сквозного прохода для конкретных поставщиков (альтернатива)

158 

159##### Claude API через LiteLLM

160 

161Использование [сквозной конечной точки](https://docs.litellm.ai/docs/pass_through/anthropic_completion):

162 

163```bash theme={null}

164export ANTHROPIC_BASE_URL=https://litellm-server:4000/anthropic

165```

166 

167##### Amazon Bedrock через LiteLLM

168 

169Использование [сквозной конечной точки](https://docs.litellm.ai/docs/pass_through/bedrock):

170 

171```bash theme={null}

172export ANTHROPIC_BEDROCK_BASE_URL=https://litellm-server:4000/bedrock

173export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1

174export CLAUDE_CODE_USE_BEDROCK=1

175```

176 

177##### Google Vertex AI через LiteLLM

178 

179Использование [сквозной конечной точки](https://docs.litellm.ai/docs/pass_through/vertex_ai):

180 

181```bash theme={null}

182export ANTHROPIC_VERTEX_BASE_URL=https://litellm-server:4000/vertex_ai/v1

183export ANTHROPIC_VERTEX_PROJECT_ID=your-gcp-project-id

184export CLAUDE_CODE_SKIP_VERTEX_AUTH=1

185export CLAUDE_CODE_USE_VERTEX=1

186export CLOUD_ML_REGION=us-east5

187```

188 

189Для получения более подробной информации обратитесь к [документации LiteLLM](https://docs.litellm.ai/).

190 

191## Дополнительные ресурсы

192 

193* [Документация LiteLLM](https://docs.litellm.ai/)

194* [Параметры Claude Code](/ru/settings)

195* [Конфигурация корпоративной сети](/ru/network-config)

196* [Обзор интеграций третьих сторон](/ru/third-party-integrations)

mcp.md +1451 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Подключите Claude Code к инструментам через MCP

6 

7> Узнайте, как подключить Claude Code к вашим инструментам с помощью Model Context Protocol.

8 

9export const MCPServersTable = ({platform = "all"}) => {

10 const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs';

11 const [servers, setServers] = useState([]);

12 const [loading, setLoading] = useState(true);

13 const [error, setError] = useState(null);

14 useEffect(() => {

15 const fetchServers = async () => {

16 try {

17 setLoading(true);

18 const allServers = [];

19 let cursor = null;

20 do {

21 const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers');

22 url.searchParams.set('version', 'latest');

23 url.searchParams.set('visibility', 'commercial');

24 url.searchParams.set('limit', '100');

25 if (cursor) {

26 url.searchParams.set('cursor', cursor);

27 }

28 const response = await fetch(url);

29 if (!response.ok) {

30 throw new Error(`Failed to fetch MCP registry: ${response.status}`);

31 }

32 const data = await response.json();

33 allServers.push(...data.servers);

34 cursor = data.metadata?.nextCursor || null;

35 } while (cursor);

36 const transformedServers = allServers.map(item => {

37 const server = item.server;

38 const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({});

39 const worksWith = meta.worksWith || [];

40 const availability = {

41 claudeCode: worksWith.includes('claude-code'),

42 mcpConnector: worksWith.includes('claude-api'),

43 claudeDesktop: worksWith.includes('claude-desktop')

44 };

45 const remotes = server.remotes || [];

46 const httpRemote = remotes.find(r => r.type === 'streamable-http');

47 const sseRemote = remotes.find(r => r.type === 'sse');

48 const preferredRemote = httpRemote || sseRemote;

49 const remoteUrl = preferredRemote?.url || meta.url;

50 const remoteType = preferredRemote?.type;

51 const isTemplatedUrl = remoteUrl?.includes('{');

52 let setupUrl;

53 if (isTemplatedUrl && meta.requiredFields) {

54 const urlField = meta.requiredFields.find(f => f.field === 'url');

55 setupUrl = urlField?.sourceUrl || meta.documentation;

56 }

57 const urls = {};

58 if (!isTemplatedUrl) {

59 if (remoteType === 'streamable-http') {

60 urls.http = remoteUrl;

61 } else if (remoteType === 'sse') {

62 urls.sse = remoteUrl;

63 }

64 }

65 let envVars = [];

66 if (server.packages && server.packages.length > 0) {

67 const npmPackage = server.packages.find(p => p.registryType === 'npm');

68 if (npmPackage) {

69 urls.stdio = `npx -y ${npmPackage.identifier}`;

70 if (npmPackage.environmentVariables) {

71 envVars = npmPackage.environmentVariables;

72 }

73 }

74 }

75 return {

76 name: meta.displayName || server.title || server.name,

77 description: meta.oneLiner || server.description,

78 documentation: meta.documentation,

79 urls: urls,

80 envVars: envVars,

81 availability: availability,

82 customCommands: meta.claudeCodeCopyText ? {

83 claudeCode: meta.claudeCodeCopyText

84 } : undefined,

85 setupUrl: setupUrl

86 };

87 });

88 setServers(transformedServers);

89 setError(null);

90 } catch (err) {

91 setError(err.message);

92 console.error('Error fetching MCP registry:', err);

93 } finally {

94 setLoading(false);

95 }

96 };

97 fetchServers();

98 }, []);

99 const generateClaudeCodeCommand = server => {

100 if (server.customCommands && server.customCommands.claudeCode) {

101 return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http');

102 }

103 const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-');

104 if (server.urls.http) {

105 return `claude mcp add ${serverSlug} --transport http ${server.urls.http}`;

106 }

107 if (server.urls.sse) {

108 return `claude mcp add ${serverSlug} --transport sse ${server.urls.sse}`;

109 }

110 if (server.urls.stdio) {

111 const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => `--env ${v.name}=YOUR_${v.name}`).join(' ') : '';

112 const baseCommand = `claude mcp add ${serverSlug} --transport stdio`;

113 return envFlags ? `${baseCommand} ${envFlags} -- ${server.urls.stdio}` : `${baseCommand} -- ${server.urls.stdio}`;

114 }

115 return null;

116 };

117 if (loading) {

118 return <div>Loading MCP servers...</div>;

119 }

120 if (error) {

121 return <div>Error loading MCP servers: {error}</div>;

122 }

123 const filteredServers = servers.filter(server => {

124 if (platform === "claudeCode") {

125 return server.availability.claudeCode;

126 } else if (platform === "mcpConnector") {

127 return server.availability.mcpConnector;

128 } else if (platform === "claudeDesktop") {

129 return server.availability.claudeDesktop;

130 } else if (platform === "all") {

131 return true;

132 } else {

133 throw new Error(`Unknown platform: ${platform}`);

134 }

135 });

136 return <>

137 <style jsx>{`

138 .cards-container {

139 display: grid;

140 gap: 1rem;

141 margin-bottom: 2rem;

142 }

143 .server-card {

144 border: 1px solid var(--border-color, #e5e7eb);

145 border-radius: 6px;

146 padding: 1rem;

147 }

148 .command-row {

149 display: flex;

150 align-items: center;

151 gap: 0.25rem;

152 }

153 .command-row code {

154 font-size: 0.75rem;

155 overflow-x: auto;

156 }

157 `}</style>

158 

159 <div className="cards-container">

160 {filteredServers.map(server => {

161 const claudeCodeCommand = generateClaudeCodeCommand(server);

162 const mcpUrl = server.urls.http || server.urls.sse;

163 const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;

164 return <div key={server.name} className="server-card">

165 <div>

166 {server.documentation ? <a href={server.documentation}>

167 <strong>{server.name}</strong>

168 </a> : <strong>{server.name}</strong>}

169 </div>

170 

171 <p style={{

172 margin: '0.5rem 0',

173 fontSize: '0.9rem'

174 }}>

175 {server.description}

176 </p>

177 

178 {server.setupUrl && <p style={{

179 margin: '0.25rem 0',

180 fontSize: '0.8rem',

181 fontStyle: 'italic',

182 opacity: 0.7

183 }}>

184 Requires user-specific URL.{' '}

185 <a href={server.setupUrl} style={{

186 textDecoration: 'underline'

187 }}>

188 Get your URL here

189 </a>.

190 </p>}

191 

192 {commandToShow && !server.setupUrl && <>

193 <p style={{

194 display: 'block',

195 fontSize: '0.75rem',

196 fontWeight: 500,

197 minWidth: 'fit-content',

198 marginTop: '0.5rem',

199 marginBottom: 0

200 }}>

201 {platform === "claudeCode" ? "Command" : "URL"}

202 </p>

203 <div className="command-row">

204 <code>

205 {commandToShow}

206 </code>

207 </div>

208 </>}

209 </div>;

210 })}

211 </div>

212 </>;

213};

214 

215Claude Code может подключаться к сотням внешних инструментов и источников данных через [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), открытый стандарт для интеграции AI с инструментами. MCP servers предоставляют Claude Code доступ к вашим инструментам, базам данных и API.

216 

217Подключите server, когда вы обнаружите, что копируете данные в чат из другого инструмента, например из трекера проблем или панели мониторинга. После подключения Claude может читать и действовать на этой системе напрямую вместо работы с тем, что вы вставляете.

218 

219## Что вы можете делать с MCP

220 

221С подключенными MCP servers вы можете попросить Claude Code:

222 

223* **Реализовать функции из трекеров проблем**: "Добавьте функцию, описанную в задаче JIRA ENG-4521, и создайте PR на GitHub."

224* **Анализировать данные мониторинга**: "Проверьте Sentry и Statsig, чтобы проверить использование функции, описанной в ENG-4521."

225* **Запрашивать базы данных**: "Найдите адреса электронной почты 10 случайных пользователей, которые использовали функцию ENG-4521, на основе нашей базы данных PostgreSQL."

226* **Интегрировать дизайны**: "Обновите наш стандартный шаблон электронного письма на основе новых дизайнов Figma, которые были опубликованы в Slack"

227* **Автоматизировать рабочие процессы**: "Создайте черновики Gmail, приглашающие этих 10 пользователей на сеанс обратной связи о новой функции."

228* **Реагировать на внешние события**: MCP server также может действовать как [канал](/ru/channels), который отправляет сообщения в вашу сессию, поэтому Claude реагирует на сообщения Telegram, чаты Discord или события webhook, пока вас нет.

229 

230## Популярные MCP servers

231 

232Вот некоторые часто используемые MCP servers, которые вы можете подключить к Claude Code:

233 

234<Warning>

235 Используйте сторонние MCP servers на свой риск - Anthropic не проверил

236 корректность или безопасность всех этих servers.

237 Убедитесь, что вы доверяете MCP servers, которые устанавливаете.

238 Будьте особенно осторожны при использовании MCP servers, которые могут получать ненадежный

239 контент, так как это может подвергнуть вас риску prompt injection.

240</Warning>

241 

242<MCPServersTable platform="claudeCode" />

243 

244<Note>

245 **Нужна конкретная интеграция?** [Найдите сотни других MCP servers на GitHub](https://github.com/modelcontextprotocol/servers), или создайте свой собственный, используя [MCP SDK](https://modelcontextprotocol.io/quickstart/server).

246</Note>

247 

248## Установка MCP servers

249 

250MCP servers можно настроить тремя различными способами в зависимости от ваших потребностей:

251 

252### Вариант 1: Добавьте удаленный HTTP server

253 

254HTTP servers — это рекомендуемый вариант для подключения к удаленным MCP servers. Это наиболее широко поддерживаемый транспорт для облачных сервисов.

255 

256```bash theme={null}

257# Базовый синтаксис

258claude mcp add --transport http <name> <url>

259 

260# Реальный пример: подключение к Notion

261claude mcp add --transport http notion https://mcp.notion.com/mcp

262 

263# Пример с токеном Bearer

264claude mcp add --transport http secure-api https://api.example.com/mcp \

265 --header "Authorization: Bearer your-token"

266```

267 

268### Вариант 2: Добавьте удаленный SSE server

269 

270<Warning>

271 Транспорт SSE (Server-Sent Events) устарел. Используйте вместо этого HTTP servers, где они доступны.

272</Warning>

273 

274```bash theme={null}

275# Базовый синтаксис

276claude mcp add --transport sse <name> <url>

277 

278# Реальный пример: подключение к Asana

279claude mcp add --transport sse asana https://mcp.asana.com/sse

280 

281# Пример с заголовком аутентификации

282claude mcp add --transport sse private-api https://api.company.com/sse \

283 --header "X-API-Key: your-key-here"

284```

285 

286### Вариант 3: Добавьте локальный stdio server

287 

288Stdio servers работают как локальные процессы на вашей машине. Они идеальны для инструментов, которым требуется прямой доступ к системе или пользовательские скрипты.

289 

290```bash theme={null}

291# Базовый синтаксис

292claude mcp add [options] <name> -- <command> [args...]

293 

294# Реальный пример: добавление Airtable server

295claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \

296 -- npx -y airtable-mcp-server

297```

298 

299<Note>

300 **Важно: порядок опций**

301 

302 Все опции (`--transport`, `--env`, `--scope`, `--header`) должны идти **перед** именем server. Затем `--` (двойной дефис) отделяет имя server от команды и аргументов, которые передаются MCP server.

303 

304 Например:

305 

306 * `claude mcp add --transport stdio myserver -- npx server` → запускает `npx server`

307 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` → запускает `python server.py --port 8080` с `KEY=value` в окружении

308 

309 Это предотвращает конфликты между флагами Claude и флагами server.

310</Note>

311 

312### Управление вашими servers

313 

314После настройки вы можете управлять своими MCP servers с помощью этих команд:

315 

316```bash theme={null}

317# Список всех настроенных servers

318claude mcp list

319 

320# Получить детали для конкретного server

321claude mcp get github

322 

323# Удалить server

324claude mcp remove github

325 

326# (в Claude Code) Проверить статус server

327/mcp

328```

329 

330### Динамические обновления инструментов

331 

332Claude Code поддерживает MCP `list_changed` уведомления, позволяя MCP servers динамически обновлять свои доступные инструменты, подсказки и ресурсы без необходимости отключения и переподключения. Когда MCP server отправляет уведомление `list_changed`, Claude Code автоматически обновляет доступные возможности от этого server.

333 

334### Автоматическое переподключение

335 

336Если HTTP или SSE server отключится во время сеанса, Claude Code автоматически переподключится с экспоненциальной задержкой: до пяти попыток, начиная с задержки в одну секунду и удваивая каждый раз. Server отображается как ожидающий в `/mcp` во время переподключения. После пяти неудачных попыток server помечается как неудачный, и вы можете повторить попытку вручную из `/mcp`. Stdio servers — это локальные процессы и не переподключаются автоматически.

337 

338Та же задержка применяется, когда HTTP или SSE server не может подключиться при запуске. Начиная с версии 2.1.121, Claude Code повторяет попытку начального подключения до трех раз при временных ошибках, таких как ответ 5xx, отказ в соединении или timeout, а затем помечает server как неудачный, если он все еще не может подключиться. Ошибки аутентификации и ошибки не найдено не повторяются, так как они требуют изменения конфигурации для разрешения.

339 

340### Отправка сообщений через каналы

341 

342MCP server также может отправлять сообщения непосредственно в вашу сессию, чтобы Claude мог реагировать на внешние события, такие как результаты CI, оповещения мониторинга или сообщения чата. Чтобы включить это, ваш server объявляет возможность `claude/channel` и вы включаете ее с флагом `--channels` при запуске. См. [Каналы](/ru/channels) для использования официально поддерживаемого канала или [Справочник каналов](/ru/channels-reference) для создания собственного.

343 

344<Tip>

345 Советы:

346 

347 * Используйте флаг `--scope` для указания места хранения конфигурации:

348 * `local` (по умолчанию): доступно только вам в текущем проекте (в старых версиях называлось `project`)

349 * `project`: общий доступ для всех в проекте через файл `.mcp.json`

350 * `user`: доступно вам во всех проектах (в старых версиях называлось `global`)

351 * Установите переменные окружения с флагами `--env` (например, `--env KEY=value`)

352 * Настройте timeout запуска MCP server, используя переменную окружения MCP\_TIMEOUT (например, `MCP_TIMEOUT=10000 claude` устанавливает timeout в 10 секунд)

353 * Claude Code отобразит предупреждение, когда выход инструмента MCP превышает 10 000 токенов. Чтобы увеличить этот лимит, установите переменную окружения `MAX_MCP_OUTPUT_TOKENS` (например, `MAX_MCP_OUTPUT_TOKENS=50000`)

354 * Используйте `/mcp` для аутентификации с удаленными servers, которые требуют аутентификацию OAuth 2.0

355</Tip>

356 

357### MCP servers, предоставляемые плагинами

358 

359[Плагины](/ru/plugins) могут включать MCP servers, автоматически предоставляя инструменты и интеграции при включении плагина. Plugin MCP servers работают идентично пользовательским настроенным servers.

360 

361**Как работают plugin MCP servers**:

362 

363* Плагины определяют MCP servers в `.mcp.json` в корне плагина или встроенные в `plugin.json`

364* Когда плагин включен, его MCP servers запускаются автоматически

365* Plugin MCP tools отображаются рядом с вручную настроенными MCP tools

366* Plugin servers управляются через установку плагина (не через команды `/mcp`)

367 

368**Пример конфигурации plugin MCP**:

369 

370В `.mcp.json` в корне плагина:

371 

372```json theme={null}

373{

374 "mcpServers": {

375 "database-tools": {

376 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

377 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],

378 "env": {

379 "DB_URL": "${DB_URL}"

380 }

381 }

382 }

383}

384```

385 

386Или встроенные в `plugin.json`:

387 

388```json theme={null}

389{

390 "name": "my-plugin",

391 "mcpServers": {

392 "plugin-api": {

393 "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",

394 "args": ["--port", "8080"]

395 }

396 }

397}

398```

399 

400**Функции plugin MCP**:

401 

402* **Автоматический жизненный цикл**: При запуске сеанса servers для включенных плагинов подключаются автоматически. Если вы включите или отключите плагин во время сеанса, запустите `/reload-plugins` для подключения или отключения его MCP servers

403* **Переменные окружения**: используйте `${CLAUDE_PLUGIN_ROOT}` для файлов плагина и `${CLAUDE_PLUGIN_DATA}` для [постоянного состояния](/ru/plugins-reference#persistent-data-directory), которое сохраняется при обновлении плагина

404* **Доступ к переменным окружения пользователя**: доступ к тем же переменным окружения, что и вручную настроенные servers

405* **Несколько типов транспорта**: поддержка stdio, SSE и HTTP транспортов (поддержка транспорта может варьироваться в зависимости от server)

406 

407**Просмотр plugin MCP servers**:

408 

409```bash theme={null}

410# В Claude Code, см. все MCP servers, включая plugin ones

411/mcp

412```

413 

414Plugin servers отображаются в списке с индикаторами, показывающими, что они поступают из плагинов.

415 

416**Преимущества plugin MCP servers**:

417 

418* **Упакованное распределение**: инструменты и servers упакованы вместе

419* **Автоматическая настройка**: не требуется ручная конфигурация MCP

420* **Согласованность команды**: все получают одинаковые инструменты при установке плагина

421 

422См. [справочник компонентов плагина](/ru/plugins-reference#mcp-servers) для получения подробной информации о включении MCP servers в плагины.

423 

424## Области установки MCP

425 

426MCP servers можно настроить на трех различных уровнях области. Область, которую вы выбираете, контролирует, в каких проектах загружается server и является ли конфигурация общей с вашей командой.

427 

428| Область | Загружается в | Общий доступ с командой | Хранится в |

429| --------------------------- | --------------------- | ------------------------- | --------------------------- |

430| [Локальная](#local-scope) | Только текущий проект | Нет | `~/.claude.json` |

431| [Проект](#project-scope) | Только текущий проект | Да, через контроль версий | `.mcp.json` в корне проекта |

432| [Пользователь](#user-scope) | Все ваши проекты | Нет | `~/.claude.json` |

433 

434### Локальная область

435 

436Локальная область — это область по умолчанию. Server с локальной областью загружается только в проекте, где вы его добавили, и остается приватным для вас. Claude Code хранит его в `~/.claude.json` в пути вашего проекта, поэтому один и тот же server не будет отображаться в ваших других проектах. Используйте локальную область для личных development servers, экспериментальных конфигураций или servers с учетными данными, которые вы не хотите в контроле версий.

437 

438<Note>

439 Термин "локальная область" для MCP servers отличается от общих локальных параметров. MCP servers с локальной областью хранятся в `~/.claude.json` (ваш домашний каталог), в то время как общие локальные параметры используют `.claude/settings.local.json` (в каталоге проекта). См. [Параметры](/ru/settings#settings-files) для получения подробной информации о расположении файлов параметров.

440</Note>

441 

442```bash theme={null}

443# Добавить server с локальной областью (по умолчанию)

444claude mcp add --transport http stripe https://mcp.stripe.com

445 

446# Явно указать локальную область

447claude mcp add --transport http stripe --scope local https://mcp.stripe.com

448```

449 

450Команда записывает server в запись для вашего текущего проекта внутри `~/.claude.json`. Пример ниже показывает результат при запуске из `/path/to/your/project`:

451 

452```json theme={null}

453{

454 "projects": {

455 "/path/to/your/project": {

456 "mcpServers": {

457 "stripe": {

458 "type": "http",

459 "url": "https://mcp.stripe.com"

460 }

461 }

462 }

463 }

464}

465```

466 

467### Область проекта

468 

469Servers с областью проекта позволяют командной работе, сохраняя конфигурации в файле `.mcp.json` в корневом каталоге вашего проекта. Этот файл предназначен для проверки в систему контроля версий, обеспечивая всем членам команды доступ к одним и тем же MCP tools и сервисам. Когда вы добавляете server с областью проекта, Claude Code автоматически создает или обновляет этот файл с соответствующей структурой конфигурации.

470 

471```bash theme={null}

472# Добавить server с областью проекта

473claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp

474```

475 

476Результирующий файл `.mcp.json` следует стандартизированному формату:

477 

478```json theme={null}

479{

480 "mcpServers": {

481 "shared-server": {

482 "command": "/path/to/server",

483 "args": [],

484 "env": {}

485 }

486 }

487}

488```

489 

490По соображениям безопасности Claude Code запрашивает одобрение перед использованием servers с областью проекта из файлов `.mcp.json`. Если вам нужно сбросить эти выборы одобрения, используйте команду `claude mcp reset-project-choices`.

491 

492### Область пользователя

493 

494Servers с областью пользователя хранятся в `~/.claude.json` и обеспечивают доступность между проектами, делая их доступными во всех проектах на вашей машине, оставаясь приватными для вашей учетной записи пользователя. Эта область хорошо работает для личных utility servers, инструментов разработки или сервисов, которые вы часто используете в разных проектах.

495 

496```bash theme={null}

497# Добавить server пользователя

498claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

499```

500 

501### Иерархия области и приоритет

502 

503Когда один и тот же server определен в более чем одном месте, Claude Code подключается к нему один раз, используя определение из источника с наивысшим приоритетом:

504 

5051. Локальная область

5062. Область проекта

5073. Область пользователя

5084. [Plugin-provided servers](/ru/plugins)

5095. [claude.ai connectors](#use-mcp-servers-from-claude-ai)

510 

511Три области совпадают дубликаты по имени. Плагины и соединители совпадают по конечной точке, поэтому тот, который указывает на тот же URL или команду, что и server выше, рассматривается как дубликат.

512 

513### Расширение переменных окружения в `.mcp.json`

514 

515Claude Code поддерживает расширение переменных окружения в файлах `.mcp.json`, позволяя командам делиться конфигурациями, сохраняя гибкость для путей, специфичных для машины, и чувствительных значений, таких как ключи API.

516 

517**Поддерживаемый синтаксис:**

518 

519* `${VAR}` - расширяется до значения переменной окружения `VAR`

520* `${VAR:-default}` - расширяется до `VAR`, если установлена, иначе использует `default`

521 

522**Места расширения:**

523Переменные окружения могут быть расширены в:

524 

525* `command` - путь к исполняемому файлу server

526* `args` - аргументы командной строки

527* `env` - переменные окружения, передаваемые server

528* `url` - для типов HTTP server

529* `headers` - для аутентификации HTTP server

530 

531**Пример с расширением переменных:**

532 

533```json theme={null}

534{

535 "mcpServers": {

536 "api-server": {

537 "type": "http",

538 "url": "${API_BASE_URL:-https://api.example.com}/mcp",

539 "headers": {

540 "Authorization": "Bearer ${API_KEY}"

541 }

542 }

543 }

544}

545```

546 

547Если требуемая переменная окружения не установлена и не имеет значения по умолчанию, Claude Code не сможет разобрать конфигурацию.

548 

549## Практические примеры

550 

551{/* ### Пример: автоматизация тестирования браузера с помощью Playwright

552 

553```bash

554claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest

555```

556 

557Затем напишите и запустите тесты браузера:

558 

559```text

560Проверьте, работает ли поток входа с test@example.com

561```

562```text

563Сделайте снимок экрана страницы оформления заказа на мобильном устройстве

564```

565```text

566Убедитесь, что функция поиска возвращает результаты

567``` */}

568 

569### Пример: мониторинг ошибок с помощью Sentry

570 

571```bash theme={null}

572claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

573```

574 

575Аутентифицируйтесь с помощью вашей учетной записи Sentry:

576 

577```text theme={null}

578/mcp

579```

580 

581Затем отладьте проблемы в production:

582 

583```text theme={null}

584Какие наиболее распространенные ошибки за последние 24 часа?

585```

586 

587```text theme={null}

588Покажите мне трассировку стека для ошибки ID abc123

589```

590 

591```text theme={null}

592Какое развертывание внесло эти новые ошибки?

593```

594 

595### Пример: подключение к GitHub для проверки кода

596 

597GitHub's remote MCP server аутентифицируется с помощью токена личного доступа GitHub, переданного как заголовок. Чтобы получить его, откройте [параметры токена GitHub](https://github.com/settings/personal-access-tokens), создайте новый детальный токен с доступом к репозиториям, с которыми вы хотите, чтобы Claude работал, затем добавьте server:

598 

599```bash theme={null}

600claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \

601 --header "Authorization: Bearer YOUR_GITHUB_PAT"

602```

603 

604Затем работайте с GitHub:

605 

606```text theme={null}

607Проверьте PR #456 и предложите улучшения

608```

609 

610```text theme={null}

611Создайте новую проблему для найденной нами ошибки

612```

613 

614```text theme={null}

615Покажите мне все открытые PR, назначенные мне

616```

617 

618### Пример: запрос к базе данных PostgreSQL

619 

620```bash theme={null}

621claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \

622 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"

623```

624 

625Затем запрашивайте вашу базу данных естественным образом:

626 

627```text theme={null}

628Какой у нас общий доход в этом месяце?

629```

630 

631```text theme={null}

632Покажите мне схему для таблицы orders

633```

634 

635```text theme={null}

636Найдите клиентов, которые не совершали покупку в течение 90 дней

637```

638 

639## Аутентификация с удаленными MCP servers

640 

641Многие облачные MCP servers требуют аутентификации. Claude Code поддерживает OAuth 2.0 для безопасных соединений.

642 

643<Steps>

644 <Step title="Добавьте server, который требует аутентификации">

645 Например:

646 

647 ```bash theme={null}

648 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

649 ```

650 </Step>

651 

652 <Step title="Используйте команду /mcp в Claude Code">

653 В Claude Code используйте команду:

654 

655 ```text theme={null}

656 /mcp

657 ```

658 

659 Затем следуйте инструкциям в вашем браузере для входа.

660 </Step>

661</Steps>

662 

663<Tip>

664 Советы:

665 

666 * Токены аутентификации хранятся безопасно и автоматически обновляются

667 * Используйте "Clear authentication" в меню `/mcp` для отзыва доступа

668 * Если ваш браузер не открывается автоматически, скопируйте предоставленный URL и откройте его вручную

669 * Если перенаправление браузера не удается с ошибкой соединения после аутентификации, вставьте полный URL обратного вызова из адресной строки браузера в приглашение URL, которое появляется в Claude Code

670 * Аутентификация OAuth работает с HTTP servers

671</Tip>

672 

673### Используйте фиксированный порт обратного вызова OAuth

674 

675Некоторые MCP servers требуют конкретный URI перенаправления, зарегистрированный заранее. По умолчанию Claude Code выбирает случайный доступный порт для обратного вызова OAuth. Используйте `--callback-port` для фиксации порта, чтобы он соответствовал предварительно зарегистрированному URI перенаправления формы `http://localhost:PORT/callback`.

676 

677Вы можете использовать `--callback-port` самостоятельно (с динамической регистрацией клиента) или вместе с `--client-id` (с предварительно настроенными учетными данными).

678 

679```bash theme={null}

680# Фиксированный порт обратного вызова с динамической регистрацией клиента

681claude mcp add --transport http \

682 --callback-port 8080 \

683 my-server https://mcp.example.com/mcp

684```

685 

686### Используйте предварительно настроенные учетные данные OAuth

687 

688Некоторые MCP servers не поддерживают автоматическую настройку OAuth через Dynamic Client Registration. Если вы видите ошибку типа "Incompatible auth server: does not support dynamic client registration", server требует предварительно настроенные учетные данные. Claude Code также поддерживает servers, которые используют Client ID Metadata Document (CIMD) вместо Dynamic Client Registration, и обнаруживает их автоматически. Если автоматическое обнаружение не удается, сначала зарегистрируйте приложение OAuth через портал разработчика server, затем предоставьте учетные данные при добавлении server.

689 

690<Steps>

691 <Step title="Зарегистрируйте приложение OAuth с помощью server">

692 Создайте приложение через портал разработчика server и запишите ваш client ID и client secret.

693 

694 Многие servers также требуют URI перенаправления. Если это так, выберите порт и зарегистрируйте URI перенаправления в формате `http://localhost:PORT/callback`. Используйте тот же порт с `--callback-port` на следующем шаге.

695 </Step>

696 

697 <Step title="Добавьте server с вашими учетными данными">

698 Выберите один из следующих методов. Порт, используемый для `--callback-port`, может быть любым доступным портом. Он просто должен соответствовать URI перенаправления, который вы зарегистрировали на предыдущем шаге.

699 

700 <Tabs>

701 <Tab title="claude mcp add">

702 Используйте `--client-id` для передачи client ID вашего приложения. Флаг `--client-secret` запрашивает secret с замаскированным вводом:

703 

704 ```bash theme={null}

705 claude mcp add --transport http \

706 --client-id your-client-id --client-secret --callback-port 8080 \

707 my-server https://mcp.example.com/mcp

708 ```

709 </Tab>

710 

711 <Tab title="claude mcp add-json">

712 Включите объект `oauth` в конфигурацию JSON и передайте `--client-secret` как отдельный флаг:

713 

714 ```bash theme={null}

715 claude mcp add-json my-server \

716 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \

717 --client-secret

718 ```

719 </Tab>

720 

721 <Tab title="claude mcp add-json (только порт обратного вызова)">

722 Используйте `--callback-port` без client ID для фиксации порта при использовании динамической регистрации клиента:

723 

724 ```bash theme={null}

725 claude mcp add-json my-server \

726 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'

727 ```

728 </Tab>

729 

730 <Tab title="CI / переменная окружения">

731 Установите secret через переменную окружения, чтобы пропустить интерактивное приглашение:

732 

733 ```bash theme={null}

734 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \

735 --client-id your-client-id --client-secret --callback-port 8080 \

736 my-server https://mcp.example.com/mcp

737 ```

738 </Tab>

739 </Tabs>

740 </Step>

741 

742 <Step title="Аутентифицируйтесь в Claude Code">

743 Запустите `/mcp` в Claude Code и следуйте потоку входа браузера.

744 </Step>

745</Steps>

746 

747<Tip>

748 Советы:

749 

750 * Client secret хранится безопасно в вашей системной связке ключей (macOS) или файле учетных данных, а не в вашей конфигурации

751 * Если server использует публичный OAuth клиент без secret, используйте только `--client-id` без `--client-secret`

752 * `--callback-port` можно использовать с `--client-id` или без него

753 * Эти флаги применяются только к HTTP и SSE транспортам. Они не влияют на stdio servers

754 * Используйте `claude mcp get <name>` для проверки того, что учетные данные OAuth настроены для server

755</Tip>

756 

757### Переопределите обнаружение метаданных OAuth

758 

759Укажите Claude Code на конкретный URL метаданных сервера авторизации OAuth, чтобы обойти цепочку обнаружения по умолчанию. Установите `authServerMetadataUrl`, когда стандартные конечные точки MCP server выдают ошибку, или когда вы хотите направить обнаружение через внутренний прокси. По умолчанию Claude Code сначала проверяет метаданные защищенного ресурса RFC 9728 на `/.well-known/oauth-protected-resource`, затем возвращается к метаданным сервера авторизации RFC 8414 на `/.well-known/oauth-authorization-server`.

760 

761Установите `authServerMetadataUrl` в объекте `oauth` конфигурации вашего server в `.mcp.json`:

762 

763```json theme={null}

764{

765 "mcpServers": {

766 "my-server": {

767 "type": "http",

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

769 "oauth": {

770 "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"

771 }

772 }

773 }

774}

775```

776 

777URL должен использовать `https://`. `authServerMetadataUrl` требует Claude Code v2.1.64 или позже. `scopes_supported` URL метаданных переопределяет области, которые объявляет upstream server.

778 

779### Ограничьте области OAuth

780 

781Установите `oauth.scopes` для фиксации областей, которые Claude Code запрашивает во время потока авторизации. Это поддерживаемый способ ограничить MCP server подмножеством, одобренным командой безопасности, когда upstream сервер авторизации объявляет больше областей, чем вы хотите предоставить. Значение — это одна строка, разделенная пробелами, соответствующая формату параметра `scope` в RFC 6749 §3.3.

782 

783```json theme={null}

784{

785 "mcpServers": {

786 "slack": {

787 "type": "http",

788 "url": "https://mcp.slack.com/mcp",

789 "oauth": {

790 "scopes": "channels:read chat:write search:read"

791 }

792 }

793 }

794}

795```

796 

797`oauth.scopes` имеет приоритет над `authServerMetadataUrl` и областями, которые server обнаруживает на `/.well-known`. Оставьте его неустановленным, чтобы позволить MCP server определить запрашиваемый набор областей.

798 

799Если сервер авторизации объявляет `offline_access` в `scopes_supported`, Claude Code добавляет его к фиксированным областям, чтобы токен доступа мог быть обновлен без нового входа в браузер.

800 

801Если server позже возвращает 403 `insufficient_scope` для вызова инструмента, Claude Code переаутентифицируется с теми же фиксированными областями. Расширьте `oauth.scopes`, когда инструмент, который вам нужен, требует область вне фиксации.

802 

803### Используйте динамические заголовки для пользовательской аутентификации

804 

805Если ваш MCP server использует схему аутентификации, отличную от OAuth (такую как Kerberos, краткосрочные токены или внутреннее SSO), используйте `headersHelper` для генерации заголовков запроса во время подключения. Claude Code запускает команду и объединяет ее выход в заголовки подключения.

806 

807```json theme={null}

808{

809 "mcpServers": {

810 "internal-api": {

811 "type": "http",

812 "url": "https://mcp.internal.example.com",

813 "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"

814 }

815 }

816}

817```

818 

819Команда также может быть встроенной:

820 

821```json theme={null}

822{

823 "mcpServers": {

824 "internal-api": {

825 "type": "http",

826 "url": "https://mcp.internal.example.com",

827 "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"

828 }

829 }

830}

831```

832 

833**Требования:**

834 

835* Команда должна записать объект JSON пар строк ключ-значение в stdout

836* Команда запускается в оболочке с timeout в 10 секунд

837* Динамические заголовки переопределяют любые статические `headers` с тем же именем

838 

839Помощник запускается заново при каждом подключении (при запуске сеанса и при переподключении). Кэширования нет, поэтому ваш скрипт отвечает за любое повторное использование токена.

840 

841Claude Code устанавливает эти переменные окружения при выполнении помощника:

842 

843| Переменная | Значение |

844| :---------------------------- | :------------- |

845| `CLAUDE_CODE_MCP_SERVER_NAME` | имя MCP server |

846| `CLAUDE_CODE_MCP_SERVER_URL` | URL MCP server |

847 

848Используйте их для написания одного скрипта помощника, который служит нескольким MCP servers.

849 

850<Note>

851 `headersHelper` выполняет произвольные команды оболочки. Когда определено в области проекта или локальной области, он запускается только после того, как вы примете диалог доверия рабочей области.

852</Note>

853 

854## Добавьте MCP servers из конфигурации JSON

855 

856Если у вас есть конфигурация JSON для MCP server, вы можете добавить ее напрямую:

857 

858<Steps>

859 <Step title="Добавьте MCP server из JSON">

860 ```bash theme={null}

861 # Базовый синтаксис

862 claude mcp add-json <name> '<json>'

863 

864 # Пример: добавление HTTP server с конфигурацией JSON

865 claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'

866 

867 # Пример: добавление stdio server с конфигурацией JSON

868 claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'

869 

870 # Пример: добавление HTTP server с предварительно настроенными учетными данными OAuth

871 claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret

872 ```

873 </Step>

874 

875 <Step title="Проверьте, что server был добавлен">

876 ```bash theme={null}

877 claude mcp get weather-api

878 ```

879 </Step>

880</Steps>

881 

882<Tip>

883 Советы:

884 

885 * Убедитесь, что JSON правильно экранирован в вашей оболочке

886 * JSON должен соответствовать схеме конфигурации MCP server

887 * Вы можете использовать `--scope user` для добавления server в вашу конфигурацию пользователя вместо конфигурации, специфичной для проекта

888</Tip>

889 

890## Импортируйте MCP servers из Claude Desktop

891 

892Если вы уже настроили MCP servers в Claude Desktop, вы можете их импортировать:

893 

894<Steps>

895 <Step title="Импортируйте servers из Claude Desktop">

896 ```bash theme={null}

897 # Базовый синтаксис

898 claude mcp add-from-claude-desktop

899 ```

900 </Step>

901 

902 <Step title="Выберите, какие servers импортировать">

903 После запуска команды вы увидите интерактивный диалог, который позволяет вам выбрать, какие servers вы хотите импортировать.

904 </Step>

905 

906 <Step title="Проверьте, что servers были импортированы">

907 ```bash theme={null}

908 claude mcp list

909 ```

910 </Step>

911</Steps>

912 

913<Tip>

914 Советы:

915 

916 * Эта функция работает только на macOS и Windows Subsystem for Linux (WSL)

917 * Она читает файл конфигурации Claude Desktop из его стандартного расположения на этих платформах

918 * Используйте флаг `--scope user` для добавления servers в вашу конфигурацию пользователя

919 * Импортированные servers будут иметь те же имена, что и в Claude Desktop

920 * Если servers с одинаковыми именами уже существуют, они получат числовой суффикс (например, `server_1`)

921</Tip>

922 

923## Используйте MCP servers из Claude.ai

924 

925Если вы вошли в Claude Code с учетной записью [Claude.ai](https://claude.ai), MCP servers, которые вы добавили в Claude.ai, автоматически доступны в Claude Code:

926 

927<Steps>

928 <Step title="Настройте MCP servers в Claude.ai">

929 Добавьте servers на [claude.ai/customize/connectors](https://claude.ai/customize/connectors). В планах Team и Enterprise только администраторы могут добавлять servers.

930 </Step>

931 

932 <Step title="Аутентифицируйте MCP server">

933 Завершите все необходимые шаги аутентификации в Claude.ai.

934 </Step>

935 

936 <Step title="Просмотрите и управляйте servers в Claude Code">

937 В Claude Code используйте команду:

938 

939 ```text theme={null}

940 /mcp

941 ```

942 

943 Claude.ai servers отображаются в списке с индикаторами, показывающими, что они поступают из Claude.ai.

944 </Step>

945</Steps>

946 

947Чтобы отключить MCP servers claude.ai в Claude Code, установите переменную окружения `ENABLE_CLAUDEAI_MCP_SERVERS` на `false`:

948 

949```bash theme={null}

950ENABLE_CLAUDEAI_MCP_SERVERS=false claude

951```

952 

953## Используйте Claude Code как MCP server

954 

955Вы можете использовать сам Claude Code как MCP server, к которому могут подключаться другие приложения:

956 

957```bash theme={null}

958# Запустите Claude как stdio MCP server

959claude mcp serve

960```

961 

962Вы можете использовать это в Claude Desktop, добавив эту конфигурацию в claude\_desktop\_config.json:

963 

964```json theme={null}

965{

966 "mcpServers": {

967 "claude-code": {

968 "type": "stdio",

969 "command": "claude",

970 "args": ["mcp", "serve"],

971 "env": {}

972 }

973 }

974}

975```

976 

977<Warning>

978 **Настройка пути к исполняемому файлу**: поле `command` должно ссылаться на исполняемый файл Claude Code. Если команда `claude` не находится в PATH вашей системы, вам нужно указать полный путь к исполняемому файлу.

979 

980 Чтобы найти полный путь:

981 

982 ```bash theme={null}

983 which claude

984 ```

985 

986 Затем используйте полный путь в вашей конфигурации:

987 

988 ```json theme={null}

989 {

990 "mcpServers": {

991 "claude-code": {

992 "type": "stdio",

993 "command": "/full/path/to/claude",

994 "args": ["mcp", "serve"],

995 "env": {}

996 }

997 }

998 }

999 ```

1000 

1001 Без правильного пути к исполняемому файлу вы столкнетесь с ошибками типа `spawn claude ENOENT`.

1002</Warning>

1003 

1004<Tip>

1005 Советы:

1006 

1007 * Server предоставляет доступ к инструментам Claude, таким как View, Edit, LS и т. д.

1008 * В Claude Desktop попробуйте попросить Claude прочитать файлы в каталоге, внести изменения и многое другое.

1009 * Обратите внимание, что этот MCP server только предоставляет инструменты Claude Code вашему MCP клиенту, поэтому ваш собственный клиент отвечает за реализацию подтверждения пользователя для отдельных вызовов инструментов.

1010</Tip>

1011 

1012## Лимиты выхода MCP и предупреждения

1013 

1014Когда инструменты MCP производят большие выходы, Claude Code помогает управлять использованием токенов, чтобы предотвратить перегрузку контекста вашего разговора:

1015 

1016* **Порог предупреждения выхода**: Claude Code отображает предупреждение, когда выход любого инструмента MCP превышает 10 000 токенов

1017* **Настраиваемый лимит**: вы можете отрегулировать максимальное количество разрешенных токенов выхода MCP, используя переменную окружения `MAX_MCP_OUTPUT_TOKENS`

1018* **Лимит по умолчанию**: максимум по умолчанию составляет 25 000 токенов

1019* **Область**: переменная окружения применяется к инструментам, которые не объявляют свой собственный лимит. Инструменты, которые устанавливают [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool), используют это значение вместо этого для текстового контента, независимо от того, что установлено `MAX_MCP_OUTPUT_TOKENS`. Инструменты, которые возвращают данные изображения, все еще подлежат `MAX_MCP_OUTPUT_TOKENS`

1020 

1021Чтобы увеличить лимит для инструментов, которые производят большие выходы:

1022 

1023```bash theme={null}

1024export MAX_MCP_OUTPUT_TOKENS=50000

1025claude

1026```

1027 

1028Это особенно полезно при работе с MCP servers, которые:

1029 

1030* запрашивают большие наборы данных или базы данных

1031* генерируют подробные отчеты или документацию

1032* обрабатывают обширные файлы журналов или информацию отладки

1033 

1034### Повысьте лимит для конкретного инструмента

1035 

1036Если вы создаете MCP server, вы можете позволить отдельным инструментам возвращать результаты больше, чем порог сохранения на диск по умолчанию, установив `_meta["anthropic/maxResultSizeChars"]` в записи инструмента в ответе `tools/list`. Claude Code повышает порог этого инструмента до аннотированного значения, вплоть до жесткого потолка в 500 000 символов.

1037 

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

1039 

1040```json theme={null}

1041{

1042 "name": "get_schema",

1043 "description": "Returns the full database schema",

1044 "_meta": {

1045 "anthropic/maxResultSizeChars": 200000

1046 }

1047}

1048```

1049 

1050Аннотация применяется независимо от `MAX_MCP_OUTPUT_TOKENS` для текстового контента, поэтому пользователям не нужно повышать переменную окружения для инструментов, которые ее объявляют. Инструменты, которые возвращают данные изображения, все еще подлежат лимиту токенов.

1051 

1052<Warning>

1053 Если вы часто сталкиваетесь с предупреждениями выхода с конкретными MCP servers, которые вы не контролируете, рассмотрите возможность увеличения лимита `MAX_MCP_OUTPUT_TOKENS`. Вы также можете попросить автора server добавить аннотацию `anthropic/maxResultSizeChars` или разбить на страницы свои ответы. Аннотация не влияет на инструменты, которые возвращают содержимое изображения; для них повышение `MAX_MCP_OUTPUT_TOKENS` — единственный вариант.

1054</Warning>

1055 

1056## Ответьте на запросы MCP elicitation

1057 

1058MCP servers могут запрашивать структурированный ввод от вас во время выполнения задачи, используя elicitation. Когда server нуждается в информации, которую он не может получить самостоятельно, Claude Code отображает интерактивный диалог и передает ваш ответ обратно server. На вашей стороне не требуется никакой конфигурации: диалоги elicitation появляются автоматически, когда server их запрашивает.

1059 

1060Servers могут запрашивать ввод двумя способами:

1061 

1062* **Режим формы**: Claude Code показывает диалог с полями формы, определенными server (например, приглашение имени пользователя и пароля). Заполните поля и отправьте.

1063* **Режим URL**: Claude Code открывает URL браузера для аутентификации или одобрения. Завершите процесс в браузере, затем подтвердите в CLI.

1064 

1065Чтобы автоматически ответить на запросы elicitation без отображения диалога, используйте [`Elicitation` hook](/ru/hooks#Elicitation).

1066 

1067Если вы создаете MCP server, который использует elicitation, см. [спецификацию MCP elicitation](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) для деталей протокола и примеров схемы.

1068 

1069## Используйте MCP ресурсы

1070 

1071MCP servers могут предоставлять ресурсы, на которые вы можете ссылаться, используя упоминания @, аналогично тому, как вы ссылаетесь на файлы.

1072 

1073### Ссылка на MCP ресурсы

1074 

1075<Steps>

1076 <Step title="Список доступных ресурсов">

1077 Введите `@` в вашу подсказку, чтобы увидеть доступные ресурсы от всех подключенных MCP servers. Ресурсы отображаются рядом с файлами в меню автодополнения.

1078 </Step>

1079 

1080 <Step title="Ссылка на конкретный ресурс">

1081 Используйте формат `@server:protocol://resource/path` для ссылки на ресурс:

1082 

1083 ```text theme={null}

1084 Можете ли вы проанализировать @github:issue://123 и предложить исправление?

1085 ```

1086 

1087 ```text theme={null}

1088 Пожалуйста, проверьте документацию API на @docs:file://api/authentication

1089 ```

1090 </Step>

1091 

1092 <Step title="Несколько ссылок на ресурсы">

1093 Вы можете ссылаться на несколько ресурсов в одной подсказке:

1094 

1095 ```text theme={null}

1096 Сравните @postgres:schema://users с @docs:file://database/user-model

1097 ```

1098 </Step>

1099</Steps>

1100 

1101<Tip>

1102 Советы:

1103 

1104 * Ресурсы автоматически получаются и включаются как вложения при ссылке

1105 * Пути ресурсов поддерживают нечеткий поиск в автодополнении упоминания @

1106 * Claude Code автоматически предоставляет инструменты для списка и чтения MCP ресурсов, когда servers их поддерживают

1107 * Ресурсы могут содержать любой тип контента, который предоставляет MCP server (текст, JSON, структурированные данные и т. д.)

1108</Tip>

1109 

1110## Масштабирование с помощью MCP Tool Search

1111 

1112Tool search сохраняет использование контекста MCP низким, откладывая определения инструментов до тех пор, пока Claude их не потребует. Только имена инструментов загружаются при запуске сеанса, поэтому добавление большего количества MCP servers имеет минимальное влияние на ваше окно контекста.

1113 

1114### Как это работает

1115 

1116Tool search включен по умолчанию. Инструменты MCP откладываются, а не загружаются в контекст заранее, и Claude использует инструмент поиска для обнаружения релевантных инструментов, когда задача их требует. Только инструменты, которые Claude действительно использует, входят в контекст. С вашей точки зрения инструменты MCP работают точно так же, как раньше.

1117 

1118Если вы предпочитаете загрузку на основе порога, установите `ENABLE_TOOL_SEARCH=auto` для загрузки схем заранее, когда они подходят в пределах 10% окна контекста, и откладывайте только переполнение. См. [Настройте tool search](#configure-tool-search) для всех опций.

1119 

1120### Для авторов MCP server

1121 

1122Если вы создаете MCP server, поле инструкций server становится более полезным с включенным Tool Search. Инструкции server помогают Claude понять, когда искать ваши инструменты, аналогично тому, как работают [skills](/ru/skills).

1123 

1124Добавьте четкие, описательные инструкции server, которые объясняют:

1125 

1126* какую категорию задач обрабатывают ваши инструменты

1127* когда Claude должен искать ваши инструменты

1128* ключевые возможности, которые предоставляет ваш server

1129 

1130Claude Code усекает описания инструментов и инструкции server на 2KB каждое. Держите их краткими, чтобы избежать усечения, и поместите критические детали в начало.

1131 

1132### Настройте tool search

1133 

1134Tool search включен по умолчанию: инструменты MCP откладываются и обнаруживаются по требованию. Он отключен по умолчанию на Vertex AI, который не принимает заголовок бета-версии tool search, и когда `ANTHROPIC_BASE_URL` указывает на хост, не являющийся первой стороной, так как большинство прокси не пересылают блоки `tool_reference`. Установите `ENABLE_TOOL_SEARCH` явно, чтобы согласиться. Эта функция требует моделей, которые поддерживают блоки `tool_reference`: Sonnet 4 и позже, или Opus 4 и позже. Модели Haiku не поддерживают tool search.

1135 

1136Управляйте поведением tool search с помощью переменной окружения `ENABLE_TOOL_SEARCH`:

1137 

1138| Значение | Поведение |

1139| :--------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1140| (не установлено) | Все инструменты MCP откладываются и загружаются по требованию. Возвращается к загрузке заранее на Vertex AI или когда `ANTHROPIC_BASE_URL` является хостом, не являющимся первой стороной |

1141| `true` | Все инструменты MCP откладываются, включая на Vertex AI и для `ANTHROPIC_BASE_URL`, не являющегося первой стороной |

1142| `auto` | Режим порога: инструменты загружаются заранее, если они подходят в пределах 10% окна контекста, откладываются иначе |

1143| `auto:<N>` | Режим порога с пользовательским процентом, где `<N>` — это 0-100 (например, `auto:5` для 5%) |

1144| `false` | Все инструменты MCP загружаются заранее, без откладывания |

1145 

1146```bash theme={null}

1147# Используйте пользовательский порог 5%

1148ENABLE_TOOL_SEARCH=auto:5 claude

1149 

1150# Полностью отключите tool search

1151ENABLE_TOOL_SEARCH=false claude

1152```

1153 

1154Или установите значение в поле `env` вашего [settings.json](/ru/settings#available-settings).

1155 

1156Вы также можете отключить инструмент ToolSearch специально:

1157 

1158```json theme={null}

1159{

1160 "permissions": {

1161 "deny": ["ToolSearch"]

1162 }

1163}

1164```

1165 

1166### Исключите server из откладывания

1167 

1168Если инструменты server должны всегда быть видны Claude без этапа поиска, установите `alwaysLoad` в значение `true` в конфигурации этого server. Каждый инструмент из этого server затем загружается в контекст при запуске сеанса независимо от параметра `ENABLE_TOOL_SEARCH`. Используйте это для небольшого количества инструментов, которые Claude требуются на каждом ходу, так как каждый предварительно загруженный инструмент потребляет контекст, который в противном случае был бы доступен для вашего разговора.

1169 

1170Следующая запись `.mcp.json` исключает один HTTP server, оставляя другие servers отложенными:

1171 

1172```json theme={null}

1173{

1174 "mcpServers": {

1175 "core-tools": {

1176 "type": "http",

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

1178 "alwaysLoad": true

1179 }

1180 }

1181}

1182```

1183 

1184Поле `alwaysLoad` доступно на всех типах server и требует Claude Code v2.1.121 или позже. MCP server также может отметить отдельные инструменты как всегда загружаемые, включив `"anthropic/alwaysLoad": true` в объект `_meta` инструмента, что имеет тот же эффект только для этого инструмента.

1185 

1186## Используйте MCP подсказки как команды

1187 

1188MCP servers могут предоставлять подсказки, которые становятся доступными как команды в Claude Code.

1189 

1190### Выполните MCP подсказки

1191 

1192<Steps>

1193 <Step title="Откройте доступные подсказки">

1194 Введите `/` для просмотра всех доступных команд, включая те из MCP servers. MCP подсказки отображаются в формате `/mcp__servername__promptname`.

1195 </Step>

1196 

1197 <Step title="Выполните подсказку без аргументов">

1198 ```text theme={null}

1199 /mcp__github__list_prs

1200 ```

1201 </Step>

1202 

1203 <Step title="Выполните подсказку с аргументами">

1204 Многие подсказки принимают аргументы. Передайте их через пробел после команды:

1205 

1206 ```text theme={null}

1207 /mcp__github__pr_review 456

1208 ```

1209 

1210 ```text theme={null}

1211 /mcp__jira__create_issue "Bug in login flow" high

1212 ```

1213 </Step>

1214</Steps>

1215 

1216<Tip>

1217 Советы:

1218 

1219 * MCP подсказки динамически обнаруживаются из подключенных servers

1220 * Аргументы анализируются на основе определенных параметров подсказки

1221 * Результаты подсказки вводятся непосредственно в разговор

1222 * Имена server и подсказки нормализуются (пробелы становятся подчеркиваниями)

1223</Tip>

1224 

1225## Управляемая конфигурация MCP

1226 

1227Для организаций, которым требуется централизованный контроль над MCP servers, Claude Code поддерживает две опции конфигурации:

1228 

12291. **Исключительный контроль с `managed-mcp.json`**: развертывание фиксированного набора MCP servers, которые пользователи не могут изменять или расширять

12302. **Контроль на основе политики с allowlists/denylists**: позволить пользователям добавлять свои собственные servers, но ограничить, какие из них разрешены

1231 

1232Эти опции позволяют IT администраторам:

1233 

1234* **Контролировать, какие MCP servers могут использовать сотрудники**: развертывание стандартизированного набора одобренных MCP servers по всей организации

1235* **Предотвратить несанкционированные MCP servers**: ограничить пользователей от добавления неодобренных MCP servers

1236* **Полностью отключить MCP**: удалить функциональность MCP, если это необходимо

1237 

1238### Вариант 1: Исключительный контроль с managed-mcp.json

1239 

1240Когда вы развертываете файл `managed-mcp.json`, он берет **исключительный контроль** над всеми MCP servers. Пользователи не могут добавлять, изменять или использовать какие-либо MCP servers, кроме определенных в этом файле. Это самый простой подход для организаций, которые хотят полный контроль.

1241 

1242Системные администраторы развертывают файл конфигурации в системный каталог:

1243 

1244* macOS: `/Library/Application Support/ClaudeCode/managed-mcp.json`

1245* Linux и WSL: `/etc/claude-code/managed-mcp.json`

1246* Windows: `C:\Program Files\ClaudeCode\managed-mcp.json`

1247 

1248<Note>

1249 Это системные пути (не домашние каталоги пользователей, такие как `~/Library/...`), которые требуют привилегий администратора. Они предназначены для развертывания IT администраторами.

1250</Note>

1251 

1252Файл `managed-mcp.json` использует тот же формат, что и стандартный файл `.mcp.json`:

1253 

1254```json theme={null}

1255{

1256 "mcpServers": {

1257 "github": {

1258 "type": "http",

1259 "url": "https://api.githubcopilot.com/mcp/"

1260 },

1261 "sentry": {

1262 "type": "http",

1263 "url": "https://mcp.sentry.dev/mcp"

1264 },

1265 "company-internal": {

1266 "type": "stdio",

1267 "command": "/usr/local/bin/company-mcp-server",

1268 "args": ["--config", "/etc/company/mcp-config.json"],

1269 "env": {

1270 "COMPANY_API_URL": "https://internal.company.com"

1271 }

1272 }

1273 }

1274}

1275```

1276 

1277### Вариант 2: Контроль на основе политики с allowlists и denylists

1278 

1279Вместо того чтобы брать исключительный контроль, администраторы могут позволить пользователям настраивать свои собственные MCP servers, одновременно применяя ограничения на то, какие servers разрешены. Этот подход использует `allowedMcpServers` и `deniedMcpServers` в [файле управляемых параметров](/ru/settings#settings-files).

1280 

1281<Note>

1282 **Выбор между вариантами**: используйте вариант 1 (`managed-mcp.json`), когда вы хотите развернуть фиксированный набор servers без настройки пользователем. Используйте вариант 2 (allowlists/denylists), когда вы хотите позволить пользователям добавлять свои собственные servers в рамках ограничений политики.

1283</Note>

1284 

1285#### Опции ограничения

1286 

1287Каждая запись в allowlist или denylist может ограничивать servers тремя способами:

1288 

12891. **По имени server** (`serverName`): соответствует настроенному имени server

12902. **По команде** (`serverCommand`): соответствует точной команде и аргументам, используемым для запуска stdio servers

12913. **По шаблону URL** (`serverUrl`): соответствует URL-адресам удаленных servers с поддержкой подстановочных символов

1292 

1293**Важно**: каждая запись должна иметь ровно одно из `serverName`, `serverCommand` или `serverUrl`.

1294 

1295#### Пример конфигурации

1296 

1297```json theme={null}

1298{

1299 "allowedMcpServers": [

1300 // Разрешить по имени server

1301 { "serverName": "github" },

1302 { "serverName": "sentry" },

1303 

1304 // Разрешить по точной команде (для stdio servers)

1305 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },

1306 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },

1307 

1308 // Разрешить по шаблону URL (для удаленных servers)

1309 { "serverUrl": "https://mcp.company.com/*" },

1310 { "serverUrl": "https://*.internal.corp/*" }

1311 ],

1312 "deniedMcpServers": [

1313 // Заблокировать по имени server

1314 { "serverName": "dangerous-server" },

1315 

1316 // Заблокировать по точной команде (для stdio servers)

1317 { "serverCommand": ["npx", "-y", "unapproved-package"] },

1318 

1319 // Заблокировать по шаблону URL (для удаленных servers)

1320 { "serverUrl": "https://*.untrusted.com/*" }

1321 ]

1322}

1323```

1324 

1325#### Как работают ограничения на основе команд

1326 

1327**Точное совпадение**:

1328 

1329* Массивы команд должны совпадать **точно** — как команда, так и все аргументы в правильном порядке

1330* Пример: `["npx", "-y", "server"]` НЕ будет совпадать с `["npx", "server"]` или `["npx", "-y", "server", "--flag"]`

1331 

1332**Поведение stdio server**:

1333 

1334* Когда allowlist содержит **любые** записи `serverCommand`, stdio servers **должны** совпадать с одной из этих команд

1335* Stdio servers не могут пройти только по имени, когда присутствуют ограничения команд

1336* Это гарантирует, что администраторы могут применять, какие команды разрешены для запуска

1337 

1338**Поведение удаленного server**:

1339 

1340* Удаленные servers (HTTP, SSE, WebSocket) используют сопоставление на основе URL, когда в allowlist существуют записи `serverUrl`

1341* Если записей URL не существует, удаленные servers возвращаются к сопоставлению на основе имени

1342* Ограничения команд не применяются к удаленным servers

1343 

1344#### Как работают ограничения на основе URL

1345 

1346Шаблоны URL поддерживают подстановочные символы, используя `*` для совпадения с любой последовательностью символов. Это полезно для разрешения целых доменов или поддоменов.

1347 

1348**Примеры подстановочных символов**:

1349 

1350* `https://mcp.company.com/*` - разрешить все пути на конкретном домене

1351* `https://*.example.com/*` - разрешить любой поддомен example.com

1352* `http://localhost:*/*` - разрешить любой порт на localhost

1353 

1354**Поведение удаленного server**:

1355 

1356* Когда allowlist содержит **любые** записи `serverUrl`, удаленные servers **должны** совпадать с одним из этих шаблонов URL

1357* Удаленные servers не могут пройти только по имени, когда присутствуют ограничения URL

1358* Это гарантирует, что администраторы могут применять, какие удаленные конечные точки разрешены

1359 

1360<Accordion title="Пример: allowlist только для URL">

1361 ```json theme={null}

1362 {

1363 "allowedMcpServers": [

1364 { "serverUrl": "https://mcp.company.com/*" },

1365 { "serverUrl": "https://*.internal.corp/*" }

1366 ]

1367 }

1368 ```

1369 

1370 **Результат**:

1371 

1372 * HTTP server на `https://mcp.company.com/api`: ✅ разрешено (совпадает с шаблоном URL)

1373 * HTTP server на `https://api.internal.corp/mcp`: ✅ разрешено (совпадает с подстановочным поддоменом)

1374 * HTTP server на `https://external.com/mcp`: ❌ заблокировано (не совпадает ни с одним шаблоном URL)

1375 * Stdio server с любой командой: ❌ заблокировано (нет записей имени или команды для совпадения)

1376</Accordion>

1377 

1378<Accordion title="Пример: allowlist только для команд">

1379 ```json theme={null}

1380 {

1381 "allowedMcpServers": [

1382 { "serverCommand": ["npx", "-y", "approved-package"] }

1383 ]

1384 }

1385 ```

1386 

1387 **Результат**:

1388 

1389 * Stdio server с `["npx", "-y", "approved-package"]`: ✅ разрешено (совпадает с командой)

1390 * Stdio server с `["node", "server.js"]`: ❌ заблокировано (не совпадает с командой)

1391 * HTTP server с именем "my-api": ❌ заблокировано (нет записей имени для совпадения)

1392</Accordion>

1393 

1394<Accordion title="Пример: смешанный allowlist имени и команды">

1395 ```json theme={null}

1396 {

1397 "allowedMcpServers": [

1398 { "serverName": "github" },

1399 { "serverCommand": ["npx", "-y", "approved-package"] }

1400 ]

1401 }

1402 ```

1403 

1404 **Результат**:

1405 

1406 * Stdio server с именем "local-tool" и `["npx", "-y", "approved-package"]`: ✅ разрешено (совпадает с командой)

1407 * Stdio server с именем "local-tool" и `["node", "server.js"]`: ❌ заблокировано (записи команд существуют, но не совпадают)

1408 * Stdio server с именем "github" и `["node", "server.js"]`: ❌ заблокировано (stdio servers должны совпадать с командами, когда существуют записи команд)

1409 * HTTP server с именем "github": ✅ разрешено (совпадает с именем)

1410 * HTTP server с именем "other-api": ❌ заблокировано (имя не совпадает)

1411</Accordion>

1412 

1413<Accordion title="Пример: allowlist только для имени">

1414 ```json theme={null}

1415 {

1416 "allowedMcpServers": [

1417 { "serverName": "github" },

1418 { "serverName": "internal-tool" }

1419 ]

1420 }

1421 ```

1422 

1423 **Результат**:

1424 

1425 * Stdio server с именем "github" и любой командой: ✅ разрешено (нет ограничений команд)

1426 * Stdio server с именем "internal-tool" и любой командой: ✅ разрешено (нет ограничений команд)

1427 * HTTP server с именем "github": ✅ разрешено (совпадает с именем)

1428 * Любой server с именем "other": ❌ заблокировано (имя не совпадает)

1429</Accordion>

1430 

1431#### Поведение allowlist (`allowedMcpServers`)

1432 

1433* `undefined` (по умолчанию): нет ограничений - пользователи могут настроить любой MCP server

1434* Пустой массив `[]`: полная блокировка - пользователи не могут настроить какие-либо MCP servers

1435* Список записей: пользователи могут настроить только servers, которые совпадают по имени, команде или шаблону URL

1436 

1437#### Поведение denylist (`deniedMcpServers`)

1438 

1439* `undefined` (по умолчанию): никакие servers не блокируются

1440* Пустой массив `[]`: никакие servers не блокируются

1441* Список записей: указанные servers явно блокируются во всех областях

1442 

1443#### Важные примечания

1444 

1445* **Вариант 1 и вариант 2 можно комбинировать**: если существует `managed-mcp.json`, он имеет исключительный контроль и пользователи не могут добавлять servers. Allowlists/denylists все еще применяются к самим управляемым servers.

1446* **Denylist имеет абсолютный приоритет**: если server совпадает с записью denylist (по имени, команде или URL), он будет заблокирован, даже если он находится в allowlist

1447* Ограничения на основе имени, команды и URL работают вместе: server проходит, если он совпадает с **либо** записью имени, записью команды, либо шаблоном URL (если не заблокирован denylist)

1448 

1449<Note>

1450 **При использовании `managed-mcp.json`**: пользователи не могут добавлять MCP servers через `claude mcp add` или файлы конфигурации. Параметры `allowedMcpServers` и `deniedMcpServers` все еще применяются для фильтрации, какие управляемые servers фактически загружаются.

1451</Note>

memory.md +408 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Как Claude запоминает ваш проект

6 

7> Дайте Claude постоянные инструкции с помощью файлов CLAUDE.md и позвольте Claude автоматически накапливать знания с помощью auto memory.

8 

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

10 

11* **Файлы CLAUDE.md**: инструкции, которые вы пишете, чтобы дать Claude постоянный контекст

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

13 

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

15 

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

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

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

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

20 

21## CLAUDE.md и auto memory

22 

23Claude Code имеет две дополняющие друг друга системы памяти. Обе загружаются в начале каждого разговора. Claude рассматривает их как контекст, а не как принудительную конфигурацию. Чем более конкретны и лаконичны ваши инструкции, тем последовательнее Claude их соблюдает.

24 

25| | Файлы CLAUDE.md | Auto memory |

26| :------------------- | :----------------------------------------------------------- | :---------------------------------------------------------------- |

27| **Кто это пишет** | Вы | Claude |

28| **Что это содержит** | Инструкции и правила | Знания и закономерности |

29| **Область действия** | Проект, пользователь или организация | Per working tree |

30| **Загружается в** | Каждый сеанс | Каждый сеанс (первые 200 строк или 25KB) |

31| **Используется для** | Стандарты кодирования, рабочие процессы, архитектура проекта | Команды сборки, инсайты отладки, предпочтения Claude обнаруживает |

32 

33Используйте файлы CLAUDE.md, когда вы хотите направить поведение Claude. Auto memory позволяет Claude учиться на ваших исправлениях без ручных усилий.

34 

35Subagents также могут поддерживать собственную auto memory. Подробнее см. в разделе [конфигурация subagent](/ru/sub-agents#enable-persistent-memory).

36 

37## Файлы CLAUDE.md

38 

39Файлы CLAUDE.md — это файлы markdown, которые дают Claude постоянные инструкции для проекта, вашего личного рабочего процесса или всей организации. Вы пишете эти файлы в виде простого текста; Claude читает их в начале каждого сеанса.

40 

41### Когда добавлять в CLAUDE.md

42 

43Рассматривайте CLAUDE.md как место, где вы записываете то, что иначе пришлось бы переобъяснять. Добавляйте в него, когда:

44 

45* Claude делает одну и ту же ошибку во второй раз

46* Проверка кода обнаруживает что-то, что Claude должен был знать об этой кодовой базе

47* Вы вводите одно и то же исправление или уточнение в чат, которое вводили в прошлом сеансе

48* Новому члену команды потребуется тот же контекст для продуктивности

49 

50Ограничивайте это фактами, которые Claude должен помнить в каждом сеансе: команды сборки, соглашения, макет проекта, правила "всегда делай X". Если запись — это многошаговая процедура или имеет значение только для одной части кодовой базы, переместите её в [skill](/ru/skills) или [правило с ограничением по пути](#organize-rules-with-claude/rules/) вместо этого. [Обзор расширений](/ru/features-overview#build-your-setup-over-time) охватывает, когда использовать каждый механизм.

51 

52### Выберите, где разместить файлы CLAUDE.md

53 

54Файлы CLAUDE.md могут находиться в нескольких местах, каждое с разной областью действия. Более конкретные местоположения имеют приоритет над более широкими.

55 

56| Область действия | Местоположение | Назначение | Примеры использования | Общий доступ с |

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

58| **Управляемая политика** | • macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`<br />• Linux и WSL: `/etc/claude-code/CLAUDE.md`<br />• Windows: `C:\Program Files\ClaudeCode\CLAUDE.md` | Инструкции на уровне организации, управляемые IT/DevOps | Стандарты кодирования компании, политики безопасности, требования соответствия | Все пользователи в организации |

59| **Инструкции проекта** | `./CLAUDE.md` или `./.claude/CLAUDE.md` | Инструкции, общие для команды проекта | Архитектура проекта, стандарты кодирования, общие рабочие процессы | Члены команды через систему контроля версий |

60| **Инструкции пользователя** | `~/.claude/CLAUDE.md` | Личные предпочтения для всех проектов | Предпочтения стиля кода, личные ярлыки инструментов | Только вы (все проекты) |

61| **Локальные инструкции** | `./CLAUDE.local.md` | Личные предпочтения, специфичные для проекта; добавьте в `.gitignore` | Ваши URL-адреса sandbox, предпочтительные тестовые данные | Только вы (текущий проект) |

62 

63Файлы CLAUDE.md и CLAUDE.local.md в иерархии каталогов выше рабочего каталога загружаются полностью при запуске. Файлы в подкаталогах загружаются по требованию, когда Claude читает файлы в этих каталогах. Полный порядок разрешения см. в разделе [Как загружаются файлы CLAUDE.md](#how-claude-md-files-load).

64 

65Для больших проектов вы можете разбить инструкции на файлы, специфичные для темы, используя [правила проекта](#organize-rules-with-claude/rules/). Правила позволяют ограничить инструкции определёнными типами файлов или подкаталогами.

66 

67### Установите CLAUDE.md проекта

68 

69CLAUDE.md проекта может быть сохранён либо в `./CLAUDE.md`, либо в `./.claude/CLAUDE.md`. Создайте этот файл и добавьте инструкции, которые применяются к любому, кто работает над проектом: команды сборки и тестирования, стандарты кодирования, архитектурные решения, соглашения об именовании и общие рабочие процессы. Эти инструкции общие для вашей команды через систему контроля версий, поэтому сосредоточьтесь на стандартах уровня проекта, а не на личных предпочтениях.

70 

71<Tip>

72 Запустите `/init` для автоматического создания начального CLAUDE.md. Claude анализирует вашу кодовую базу и создаёт файл с командами сборки, инструкциями тестирования и соглашениями проекта, которые он обнаруживает. Если CLAUDE.md уже существует, `/init` предлагает улучшения вместо перезаписи. Уточните оттуда с помощью инструкций, которые Claude не смог бы обнаружить самостоятельно.

73 

74 Установите `CLAUDE_CODE_NEW_INIT=1` для включения интерактивного многофазного потока. `/init` спрашивает, какие артефакты настроить: файлы CLAUDE.md, skills и hooks. Затем он исследует вашу кодовую базу с помощью subagent, заполняет пробелы через дополнительные вопросы и представляет проверяемое предложение перед написанием каких-либо файлов.

75</Tip>

76 

77### Пишите эффективные инструкции

78 

79Файлы CLAUDE.md загружаются в context window в начале каждого сеанса, потребляя токены наряду с вашим разговором. [Визуализация context window](/ru/context-window) показывает, где загружается CLAUDE.md относительно остального контекста при запуске. Поскольку это контекст, а не принудительная конфигурация, то, как вы пишете инструкции, влияет на то, насколько надёжно Claude их соблюдает. Лучше всего работают конкретные, лаконичные, хорошо структурированные инструкции.

80 

81**Размер**: целевой показатель менее 200 строк на файл CLAUDE.md. Более длинные файлы потребляют больше контекста и снижают соблюдение. Если ваши инструкции становятся большими, используйте [правила с ограничением по пути](#path-specific-rules), чтобы инструкции загружались только когда Claude работает с соответствующими файлами. Вы также можете разделить содержимое на [импорты](#import-additional-files) для организации, хотя импортированные файлы всё равно загружаются и входят в context window при запуске.

82 

83**Структура**: используйте заголовки markdown и маркеры для группировки связанных инструкций. Claude сканирует структуру так же, как читатели: организованные разделы легче следовать, чем плотные абзацы.

84 

85**Конкретность**: пишите инструкции, которые достаточно конкретны для проверки. Например:

86 

87* "Используйте отступ из 2 пробелов" вместо "Правильно форматируйте код"

88* "Запустите `npm test` перед фиксацией" вместо "Протестируйте ваши изменения"

89* "Обработчики API находятся в `src/api/handlers/`" вместо "Держите файлы организованными"

90 

91**Согласованность**: если два правила противоречат друг другу, Claude может выбрать одно произвольно. Периодически проверяйте ваши файлы CLAUDE.md, вложенные файлы CLAUDE.md в подкаталогах и файлы [`.claude/rules/`](#organize-rules-with-claude/rules/), чтобы удалить устаревшие или конфликтующие инструкции. В монорепозиториях используйте [`claudeMdExcludes`](#exclude-specific-claude-md-files) для пропуска файлов CLAUDE.md от других команд, которые не имеют отношения к вашей работе.

92 

93### Импортируйте дополнительные файлы

94 

95Файлы CLAUDE.md могут импортировать дополнительные файлы, используя синтаксис `@path/to/import`. Импортированные файлы расширяются и загружаются в контекст при запуске вместе с CLAUDE.md, который их ссылается.

96 

97Допускаются как относительные, так и абсолютные пути. Относительные пути разрешаются относительно файла, содержащего импорт, а не рабочего каталога. Импортированные файлы могут рекурсивно импортировать другие файлы с максимальной глубиной пять переходов.

98 

99Чтобы подтянуть README, package.json и руководство рабочего процесса, ссылайтесь на них с помощью синтаксиса `@` в любом месте вашего CLAUDE.md:

100 

101```text theme={null}

102Смотрите @README для обзора проекта и @package.json для доступных команд npm для этого проекта.

103 

104# Дополнительные инструкции

105- git workflow @docs/git-instructions.md

106```

107 

108Для личных предпочтений, которые не должны быть проверены в систему контроля версий, создайте `CLAUDE.local.md` в корне проекта. Он загружается вместе с `CLAUDE.md` и рассматривается так же. Добавьте `CLAUDE.local.md` в ваш `.gitignore`, чтобы он не был зафиксирован; запуск `/init` и выбор личного варианта делает это за вас.

109 

110Если вы работаете в нескольких git worktrees одного репозитория, игнорируемый git `CLAUDE.local.md` существует только в worktree, где вы его создали. Чтобы поделиться личными инструкциями между worktrees, импортируйте файл из вашего домашнего каталога вместо этого:

111 

112```text theme={null}

113# Личные предпочтения

114- @~/.claude/my-project-instructions.md

115```

116 

117<Warning>

118 В первый раз, когда Claude Code встречает внешние импорты в проекте, он показывает диалог одобрения со списком файлов. Если вы отклоните, импорты остаются отключёнными и диалог больше не появляется.

119</Warning>

120 

121Для более структурированного подхода к организации инструкций см. [`.claude/rules/`](#organize-rules-with-claude/rules/).

122 

123### AGENTS.md

124 

125Claude Code читает `CLAUDE.md`, не `AGENTS.md`. Если ваш репозиторий уже использует `AGENTS.md` для других кодирующих агентов, создайте `CLAUDE.md`, который импортирует его, чтобы оба инструмента читали одни и те же инструкции без их дублирования. Вы также можете добавить инструкции, специфичные для Claude, ниже импорта. Claude загружает импортированный файл при запуске сеанса, затем добавляет остальное:

126 

127```markdown CLAUDE.md theme={null}

128@AGENTS.md

129 

130## Claude Code

131 

132Используйте plan mode для изменений в `src/billing/`.

133```

134 

135### Как загружаются файлы CLAUDE.md

136 

137Claude Code читает файлы CLAUDE.md, проходя вверх по дереву каталогов из вашего текущего рабочего каталога, проверяя каждый каталог на пути для файлов `CLAUDE.md` и `CLAUDE.local.md`. Это означает, что если вы запустите Claude Code в `foo/bar/`, он загружает инструкции из `foo/bar/CLAUDE.md`, `foo/CLAUDE.md` и любых файлов `CLAUDE.local.md` рядом с ними.

138 

139Все обнаруженные файлы объединяются в контекст, а не переопределяют друг друга. Во всём дереве каталогов содержимое упорядочивается от корня файловой системы вниз к вашему рабочему каталогу. Для примера `foo/bar/` `foo/CLAUDE.md` появляется в контексте перед `foo/bar/CLAUDE.md`, поэтому инструкции ближе к месту запуска Claude читаются последними. В каждом каталоге `CLAUDE.local.md` добавляется после `CLAUDE.md`, поэтому ваши личные заметки — это последнее, что Claude читает на этом уровне.

140 

141Claude также обнаруживает файлы `CLAUDE.md` и `CLAUDE.local.md` в подкаталогах под вашим текущим рабочим каталогом. Вместо загрузки при запуске они включаются, когда Claude читает файлы в этих подкаталогах.

142 

143Если вы работаете в большом монорепозитории, где подбираются файлы CLAUDE.md других команд, используйте [`claudeMdExcludes`](#exclude-specific-claude-md-files) для их пропуска.

144 

145Блочные HTML-комментарии (`<!-- maintainer notes -->`) в файлах CLAUDE.md удаляются перед внедрением содержимого в контекст Claude. Используйте их для оставления заметок для человеческих разработчиков без траты токенов контекста на них. Комментарии внутри блоков кода сохраняются. Когда вы открываете файл CLAUDE.md напрямую с помощью инструмента Read, комментарии остаются видимыми.

146 

147#### Загрузка из дополнительных каталогов

148 

149Флаг `--add-dir` дает Claude доступ к дополнительным каталогам вне вашего основного рабочего каталога. По умолчанию файлы CLAUDE.md из этих каталогов не загружаются.

150 

151Чтобы также загружать файлы памяти из дополнительных каталогов, установите переменную окружения `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD`:

152 

153```bash theme={null}

154CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config

155```

156 

157Это загружает `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` и `CLAUDE.local.md` из дополнительного каталога. `CLAUDE.local.md` пропускается, если вы исключите `local` из [`--setting-sources`](/ru/cli-reference).

158 

159### Организуйте правила с помощью `.claude/rules/`

160 

161Для больших проектов вы можете организовать инструкции в несколько файлов, используя каталог `.claude/rules/`. Это делает инструкции модульными и облегчает их поддержку командами. Правила также могут быть [ограничены определёнными путями файлов](#path-specific-rules), поэтому они загружаются в контекст только когда Claude работает с соответствующими файлами, снижая шум и экономя пространство контекста.

162 

163<Note>

164 Правила загружаются в контекст каждый сеанс или когда открываются соответствующие файлы. Для инструкций, специфичных для задачи, которые не нужны в контексте всё время, используйте [skills](/ru/skills), которые загружаются только при их вызове или когда Claude определяет, что они имеют отношение к вашему запросу.

165</Note>

166 

167#### Установите правила

168 

169Поместите файлы markdown в каталог `.claude/rules/` вашего проекта. Каждый файл должен охватывать одну тему с описательным именем файла, например `testing.md` или `api-design.md`. Все файлы `.md` обнаруживаются рекурсивно, поэтому вы можете организовать правила в подкаталоги, такие как `frontend/` или `backend/`:

170 

171```text theme={null}

172your-project/

173├── .claude/

174│ ├── CLAUDE.md # Основные инструкции проекта

175│ └── rules/

176│ ├── code-style.md # Рекомендации по стилю кода

177│ ├── testing.md # Соглашения тестирования

178│ └── security.md # Требования безопасности

179```

180 

181Правила без [frontmatter `paths`](#path-specific-rules) загружаются при запуске с тем же приоритетом, что и `.claude/CLAUDE.md`.

182 

183#### Правила, специфичные для пути

184 

185Правила могут быть ограничены определёнными файлами с помощью YAML frontmatter с полем `paths`. Эти условные правила применяются только когда Claude работает с файлами, соответствующими указанным шаблонам.

186 

187```markdown theme={null}

188---

189paths:

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

191---

192 

193# Правила разработки API

194 

195- Все конечные точки API должны включать проверку входных данных

196- Используйте стандартный формат ответа об ошибке

197- Включите комментарии документации OpenAPI

198```

199 

200Правила без поля `paths` загружаются безусловно и применяются ко всем файлам. Правила с ограничением по пути срабатывают, когда Claude читает файлы, соответствующие шаблону, а не при каждом использовании инструмента.

201 

202Используйте glob-шаблоны в поле `paths` для сопоставления файлов по расширению, каталогу или любой комбинации:

203 

204| Шаблон | Соответствует |

205| ---------------------- | ---------------------------------------- |

206| `**/*.ts` | Все файлы TypeScript в любом каталоге |

207| `src/**/*` | Все файлы в каталоге `src/` |

208| `*.md` | Файлы Markdown в корне проекта |

209| `src/components/*.tsx` | Компоненты React в определённом каталоге |

210 

211Вы можете указать несколько шаблонов и использовать расширение скобок для сопоставления нескольких расширений в одном шаблоне:

212 

213```markdown theme={null}

214---

215paths:

216 - "src/**/*.{ts,tsx}"

217 - "lib/**/*.ts"

218 - "tests/**/*.test.ts"

219---

220```

221 

222#### Делитесь правилами между проектами с помощью symlinks

223 

224Каталог `.claude/rules/` поддерживает symlinks, поэтому вы можете поддерживать общий набор правил и связывать их с несколькими проектами. Symlinks разрешаются и загружаются нормально, а циклические symlinks обнаруживаются и обрабатываются корректно.

225 

226Этот пример связывает как общий каталог, так и отдельный файл:

227 

228```bash theme={null}

229ln -s ~/shared-claude-rules .claude/rules/shared

230ln -s ~/company-standards/security.md .claude/rules/security.md

231```

232 

233#### Правила на уровне пользователя

234 

235Личные правила в `~/.claude/rules/` применяются к каждому проекту на вашей машине. Используйте их для предпочтений, которые не зависят от проекта:

236 

237```text theme={null}

238~/.claude/rules/

239├── preferences.md # Ваши личные предпочтения кодирования

240└── workflows.md # Ваши предпочтительные рабочие процессы

241```

242 

243Правила на уровне пользователя загружаются перед правилами проекта, что даёт правилам проекта более высокий приоритет.

244 

245### Управляйте CLAUDE.md для больших команд

246 

247Для организаций, развёртывающих Claude Code в командах, вы можете централизовать инструкции и контролировать, какие файлы CLAUDE.md загружаются.

248 

249#### Развёртывание CLAUDE.md на уровне организации

250 

251Организации могут развернуть централизованно управляемый CLAUDE.md, который применяется ко всем пользователям на машине. Этот файл не может быть исключён индивидуальными настройками.

252 

253<Steps>

254 <Step title="Создайте файл в местоположении управляемой политики">

255 * macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`

256 * Linux и WSL: `/etc/claude-code/CLAUDE.md`

257 * Windows: `C:\Program Files\ClaudeCode\CLAUDE.md`

258 </Step>

259 

260 <Step title="Развёртывание с помощью вашей системы управления конфигурацией">

261 Используйте MDM, Group Policy, Ansible или аналогичные инструменты для распределения файла на машины разработчиков. Подробнее см. в разделе [управляемые настройки](/ru/permissions#managed-settings) для других параметров конфигурации на уровне организации.

262 </Step>

263</Steps>

264 

265Управляемый CLAUDE.md и [управляемые настройки](/ru/settings#settings-files) служат разным целям. Используйте настройки для технического принуждения и CLAUDE.md для поведенческого руководства:

266 

267| Проблема | Настроить в |

268| :------------------------------------------------------------ | :------------------------------------------------------------- |

269| Блокировать определённые инструменты, команды или пути файлов | Управляемые настройки: `permissions.deny` |

270| Принудительная изоляция sandbox | Управляемые настройки: `sandbox.enabled` |

271| Переменные окружения и маршрутизация поставщика API | Управляемые настройки: `env` |

272| Метод аутентификации и блокировка организации | Управляемые настройки: `forceLoginMethod`, `forceLoginOrgUUID` |

273| Рекомендации по стилю кода и качеству | Управляемый CLAUDE.md |

274| Напоминания об обработке данных и соответствии | Управляемый CLAUDE.md |

275| Поведенческие инструкции для Claude | Управляемый CLAUDE.md |

276 

277Правила настроек принудительно применяются клиентом независимо от того, что решит делать Claude. Инструкции CLAUDE.md формируют поведение Claude, но не являются жёстким уровнем принуждения.

278 

279#### Исключите определённые файлы CLAUDE.md

280 

281В больших монорепозиториях файлы CLAUDE.md предков могут содержать инструкции, которые не имеют отношения к вашей работе. Параметр `claudeMdExcludes` позволяет пропустить определённые файлы по пути или glob-шаблону.

282 

283Этот пример исключает CLAUDE.md верхнего уровня и каталог правил из родительской папки. Добавьте его в `.claude/settings.local.json`, чтобы исключение оставалось локальным для вашей машины:

284 

285```json theme={null}

286{

287 "claudeMdExcludes": [

288 "**/monorepo/CLAUDE.md",

289 "/home/user/monorepo/other-team/.claude/rules/**"

290 ]

291}

292```

293 

294Шаблоны сопоставляются с абсолютными путями файлов с использованием синтаксиса glob. Вы можете настроить `claudeMdExcludes` на любом [уровне настроек](/ru/settings#settings-files): пользователь, проект, локальный или управляемая политика. Массивы объединяются между уровнями.

295 

296Файлы CLAUDE.md управляемой политики не могут быть исключены. Это гарантирует, что инструкции на уровне организации всегда применяются независимо от индивидуальных настроек.

297 

298## Auto memory

299 

300Auto memory позволяет Claude накапливать знания между сеансами без вашего участия. Claude сохраняет заметки для себя по мере работы: команды сборки, инсайты отладки, заметки об архитектуре, предпочтения стиля кода и привычки рабочего процесса. Claude не сохраняет что-то каждый сеанс. Он решает, что стоит помнить, на основе того, будет ли информация полезна в будущем разговоре.

301 

302<Note>

303 Auto memory требует Claude Code v2.1.59 или позже. Проверьте вашу версию с помощью `claude --version`.

304</Note>

305 

306### Включите или отключите auto memory

307 

308Auto memory включена по умолчанию. Чтобы переключить её, откройте `/memory` в сеансе и используйте переключатель auto memory, или установите `autoMemoryEnabled` в настройках вашего проекта:

309 

310```json theme={null}

311{

312 "autoMemoryEnabled": false

313}

314```

315 

316Чтобы отключить auto memory через переменную окружения, установите `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`.

317 

318### Местоположение хранилища

319 

320Каждый проект получает свой собственный каталог памяти в `~/.claude/projects/<project>/memory/`. Путь `<project>` получается из репозитория git, поэтому все worktrees и подкаталоги в одном репозитории используют один каталог auto memory. Вне репозитория git вместо этого используется корень проекта.

321 

322Чтобы сохранить auto memory в другом местоположении, установите `autoMemoryDirectory` в ваших пользовательских настройках в `~/.claude/settings.json`:

323 

324```json theme={null}

325{

326 "autoMemoryDirectory": "~/my-custom-memory-dir"

327}

328```

329 

330Значение должно быть абсолютным путём или начинаться с `~/`. Этот параметр принимается из политики и пользовательских настроек, а также из флага `--settings`. Он не принимается из настроек проекта или локальных настроек, поскольку оба файла находятся внутри каталога проекта, и клонированный репозиторий может предоставить любой из них для перенаправления записей auto memory в чувствительные местоположения.

331 

332Каталог содержит точку входа `MEMORY.md` и дополнительные файлы по темам:

333 

334```text theme={null}

335~/.claude/projects/<project>/memory/

336├── MEMORY.md # Краткий индекс, загружается в каждый сеанс

337├── debugging.md # Подробные заметки о шаблонах отладки

338├── api-conventions.md # Решения по проектированию API

339└── ... # Любые другие файлы по темам, которые создаёт Claude

340```

341 

342`MEMORY.md` служит индексом каталога памяти. Claude читает и пишет файлы в этом каталоге на протяжении вашего сеанса, используя `MEMORY.md` для отслеживания того, что хранится где.

343 

344Auto memory зависит от машины. Все worktrees и подкаталоги в одном репозитории git используют один каталог auto memory. Файлы не общие между машинами или облачными окружениями.

345 

346### Как это работает

347 

348Первые 200 строк `MEMORY.md`, или первые 25KB, в зависимости от того, что наступит раньше, загружаются в начале каждого разговора. Содержимое после этого порога не загружается при запуске сеанса. Claude держит `MEMORY.md` лаконичным, перемещая подробные заметки в отдельные файлы по темам.

349 

350Это ограничение применяется только к `MEMORY.md`. Файлы CLAUDE.md загружаются полностью независимо от длины, хотя более короткие файлы дают лучшее соблюдение.

351 

352Файлы по темам, такие как `debugging.md` или `patterns.md`, не загружаются при запуске. Claude читает их по требованию, используя свои стандартные инструменты файлов, когда ему нужна информация.

353 

354Claude читает и пишет файлы памяти во время вашего сеанса. Когда вы видите "Writing memory" или "Recalled memory" в интерфейсе Claude Code, Claude активно обновляет или читает из `~/.claude/projects/<project>/memory/`.

355 

356### Проверьте и отредактируйте вашу память

357 

358Файлы auto memory — это простой markdown, который вы можете редактировать или удалять в любое время. Запустите [`/memory`](#view-and-edit-with-memory) для просмотра и открытия файлов памяти из сеанса.

359 

360## Просмотр и редактирование с помощью `/memory`

361 

362Команда `/memory` перечисляет все файлы CLAUDE.md, CLAUDE.local.md и правила, загруженные в вашем текущем сеансе, позволяет переключать auto memory включена или отключена, и предоставляет ссылку для открытия папки auto memory. Выберите любой файл для открытия его в вашем редакторе.

363 

364Когда вы просите Claude что-то запомнить, например "всегда используйте pnpm, а не npm" или "помните, что тесты API требуют локального экземпляра Redis", Claude сохраняет это в auto memory. Чтобы добавить инструкции в CLAUDE.md, попросите Claude напрямую, например "добавьте это в CLAUDE.md", или отредактируйте файл самостоятельно через `/memory`.

365 

366## Устранение неполадок с памятью

367 

368Это наиболее распространённые проблемы с CLAUDE.md и auto memory, а также шаги для их отладки.

369 

370### Claude не следует моему CLAUDE.md

371 

372Содержимое CLAUDE.md доставляется как пользовательское сообщение после системного запроса, а не как часть самого системного запроса. Claude читает его и пытается следовать ему, но нет гарантии строгого соответствия, особенно для расплывчатых или конфликтующих инструкций.

373 

374Для отладки:

375 

376* Запустите `/memory` для проверки загрузки ваших файлов CLAUDE.md и CLAUDE.local.md. Если файл не указан, Claude не может его видеть.

377* Проверьте, что соответствующий CLAUDE.md находится в местоположении, которое загружается для вашего сеанса (см. [Выберите, где разместить файлы CLAUDE.md](#choose-where-to-put-claude-md-files)).

378* Сделайте инструкции более конкретными. "Используйте отступ из 2 пробелов" работает лучше, чем "красиво форматируйте код".

379* Ищите конфликтующие инструкции в файлах CLAUDE.md. Если два файла дают разные рекомендации для одного поведения, Claude может выбрать одну произвольно.

380 

381Для инструкций, которые вы хотите на уровне системного запроса, используйте [`--append-system-prompt`](/ru/cli-reference#system-prompt-flags). Это должно быть передано при каждом вызове, поэтому оно лучше подходит для скриптов и автоматизации, чем для интерактивного использования.

382 

383<Tip>

384 Используйте hook [`InstructionsLoaded`](/ru/hooks#instructionsloaded) для логирования точно того, какие файлы инструкций загружены, когда они загружаются и почему. Это полезно для отладки правил, специфичных для пути, или ленивых загруженных файлов в подкаталогах.

385</Tip>

386 

387### Я не знаю, что сохранила auto memory

388 

389Запустите `/memory` и выберите папку auto memory для просмотра того, что Claude сохранил. Всё это простой markdown, который вы можете читать, редактировать или удалять.

390 

391### Мой CLAUDE.md слишком большой

392 

393Файлы более 200 строк потребляют больше контекста и могут снизить соблюдение. Используйте [правила с областью действия пути](#path-specific-rules) для загрузки инструкций только когда Claude работает с соответствующими файлами, или сократите содержимое, которое не требуется в каждом сеансе. Разделение на [`@path` импорты](#import-additional-files) помогает организации, но не снижает контекст, так как импортированные файлы загружаются при запуске.

394 

395### Инструкции кажутся потерянными после `/compact`

396 

397CLAUDE.md в корне проекта выживает при сжатии: после `/compact` Claude повторно читает его с диска и повторно вводит его в сеанс. Вложенные файлы CLAUDE.md в подкаталогах не повторно вводятся автоматически; они перезагружаются в следующий раз, когда Claude читает файл в этом подкаталоге.

398 

399Если инструкция исчезла после сжатия, она была дана только в разговоре или находится в вложенном CLAUDE.md, который ещё не перезагрузился. Добавьте инструкции только для разговора в CLAUDE.md, чтобы они сохранялись. Полный список см. в разделе [Что выживает при сжатии](/ru/context-window#what-survives-compaction).

400 

401Подробнее см. в разделе [Пишите эффективные инструкции](#write-effective-instructions) для рекомендаций по размеру, структуре и конкретности.

402 

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

404 

405* [Отладка вашей конфигурации](/ru/debug-your-config): диагностируйте, почему CLAUDE.md или настройки не вступают в силу

406* [Skills](/ru/skills): упакуйте повторяемые рабочие процессы, которые загружаются по требованию

407* [Settings](/ru/settings): настройте поведение Claude Code с помощью файлов настроек

408* [Subagent memory](/ru/sub-agents#enable-persistent-memory): позвольте subagents поддерживать собственную auto memory

microsoft-foundry.md +314 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Claude Code на Microsoft Foundry

6 

7> Узнайте о настройке Claude Code через Microsoft Foundry, включая установку, конфигурацию и устранение неполадок.

8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="foundry" />} />

190 

191## Предварительные требования

192 

193Перед настройкой Claude Code с Microsoft Foundry убедитесь, что у вас есть:

194 

195* Подписка Azure с доступом к Microsoft Foundry

196* Разрешения RBAC для создания ресурсов и развертываний Microsoft Foundry

197* Azure CLI установлен и настроен (опционально - требуется только если у вас нет другого механизма для получения учетных данных)

198 

199<Note>

200 Если вы развертываете Claude Code для нескольких пользователей, [закрепите версии вашей модели](#4-pin-model-versions), чтобы предотвратить сбои при выпуске Anthropic новых моделей.

201</Note>

202 

203## Установка

204 

205### 1. Подготовка ресурса Microsoft Foundry

206 

207Сначала создайте ресурс Claude в Azure:

208 

2091. Перейдите на [портал Microsoft Foundry](https://ai.azure.com/)

2102. Создайте новый ресурс, отметив имя вашего ресурса

2113. Создайте развертывания для моделей Claude:

212 * Claude Opus

213 * Claude Sonnet

214 * Claude Haiku

215 

216### 2. Настройка учетных данных Azure

217 

218Claude Code поддерживает два метода аутентификации для Microsoft Foundry. Выберите метод, который лучше всего соответствует вашим требованиям безопасности.

219 

220**Вариант A: Аутентификация по ключу API**

221 

2221. Перейдите к вашему ресурсу на портале Microsoft Foundry

2232. Перейдите в раздел **Endpoints and keys**

2243. Скопируйте **API Key**

2254. Установите переменную окружения:

226 

227```bash theme={null}

228export ANTHROPIC_FOUNDRY_API_KEY=your-azure-api-key

229```

230 

231**Вариант B: Аутентификация Microsoft Entra ID**

232 

233Когда `ANTHROPIC_FOUNDRY_API_KEY` не установлен, Claude Code автоматически использует Azure SDK [цепочку учетных данных по умолчанию](https://learn.microsoft.com/en-us/azure/developer/javascript/sdk/authentication/credential-chains#defaultazurecredential-overview).

234Это поддерживает различные методы аутентификации локальных и удаленных рабочих нагрузок.

235 

236В локальных средах вы обычно можете использовать Azure CLI:

237 

238```bash theme={null}

239az login

240```

241 

242<Note>

243 При использовании Microsoft Foundry команды `/login` и `/logout` отключены, так как аутентификация обрабатывается через учетные данные Azure.

244</Note>

245 

246### 3. Настройка Claude Code

247 

248Установите следующие переменные окружения для включения интеграции Microsoft Foundry:

249 

250```bash theme={null}

251# Enable Microsoft Foundry integration

252export CLAUDE_CODE_USE_FOUNDRY=1

253 

254# Azure resource name (replace {resource} with your resource name)

255export ANTHROPIC_FOUNDRY_RESOURCE={resource}

256# Or provide the full base URL:

257# export ANTHROPIC_FOUNDRY_BASE_URL=https://{resource}.services.ai.azure.com/anthropic

258```

259 

260### 4. Pin model versions

261 

262<Warning>

263 Закрепите конкретные версии моделей для каждого развертывания. Если вы используете псевдонимы моделей (`sonnet`, `opus`, `haiku`) без закрепления, Claude Code может попытаться использовать более новую версию модели, которая недоступна в вашей учетной записи Foundry, что приведет к сбою существующих пользователей при выпуске обновлений Anthropic. При создании развертываний Azure выберите конкретную версию модели вместо "автоматического обновления до последней версии".

264</Warning>

265 

266Установите переменные модели в соответствии с именами развертываний, которые вы создали на шаге 1.

267 

268Без `ANTHROPIC_DEFAULT_OPUS_MODEL` псевдоним `opus` на Foundry разрешается в Opus 4.6. Установите его на идентификатор Opus 4.7, чтобы использовать последнюю модель:

269 

270```bash theme={null}

271export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'

272export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'

273export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5'

274```

275 

276Для получения текущих и устаревших идентификаторов моделей см. [Обзор моделей](https://platform.claude.com/docs/en/about-claude/models/overview). Полный список переменных окружения см. в разделе [Конфигурация модели](/ru/model-config#pin-models-for-third-party-deployments).

277 

278[Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) включен автоматически. Чтобы запросить TTL кэша в 1 час вместо стандартного 5-минутного, установите следующую переменную; записи кэша с TTL в 1 час выставляются по более высокому тарифу:

279 

280```bash theme={null}

281export ENABLE_PROMPT_CACHING_1H=1

282```

283 

284## Конфигурация Azure RBAC

285 

286Роли по умолчанию `Azure AI User` и `Cognitive Services User` включают все необходимые разрешения для вызова моделей Claude.

287 

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

289 

290```json theme={null}

291{

292 "permissions": [

293 {

294 "dataActions": [

295 "Microsoft.CognitiveServices/accounts/providers/*"

296 ]

297 }

298 ]

299}

300```

301 

302Для получения дополнительной информации см. [документацию Microsoft Foundry RBAC](https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/rbac-azure-ai-foundry).

303 

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

305 

306Если вы получаете ошибку "Failed to get token from azureADTokenProvider: ChainedTokenCredential authentication failed":

307 

308* Настройте Entra ID в среде или установите `ANTHROPIC_FOUNDRY_API_KEY`.

309 

310## Дополнительные ресурсы

311 

312* [Документация Microsoft Foundry](https://learn.microsoft.com/en-us/azure/ai-foundry/what-is-azure-ai-foundry)

313* [Модели Microsoft Foundry](https://ai.azure.com/explore/models)

314* [Цены Microsoft Foundry](https://azure.microsoft.com/en-us/pricing/details/ai-foundry/)

model-config.md +382 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Конфигурация модели

6 

7> Узнайте о конфигурации модели Claude Code, включая псевдонимы моделей, такие как `opusplan`

8 

9## Доступные модели

10 

11Для параметра `model` в Claude Code вы можете настроить либо:

12 

13* **Псевдоним модели**

14* **Имя модели**

15 * Anthropic API: полное **[имя модели](https://platform.claude.com/docs/ru/about-claude/models/overview)**

16 * Bedrock: ARN профиля вывода

17 * Foundry: имя развертывания

18 * Vertex: имя версии

19 

20### Псевдонимы моделей

21 

22Псевдонимы моделей предоставляют удобный способ выбора параметров модели без необходимости запоминать точные номера версий:

23 

24| Псевдоним модели | Поведение |

25| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

26| **`default`** | Специальное значение, которое очищает любое переопределение модели и возвращается к рекомендуемой модели для типа вашей учетной записи. Сам по себе не является псевдонимом модели |

27| **`best`** | Использует наиболее мощную доступную модель, в настоящее время эквивалентную `opus` |

28| **`sonnet`** | Использует последнюю модель Sonnet для ежедневных задач кодирования |

29| **`opus`** | Использует последнюю модель Opus для сложных задач рассуждения |

30| **`haiku`** | Использует быструю и эффективную модель Haiku для простых задач |

31| **`sonnet[1m]`** | Использует Sonnet с [контекстным окном в 1 миллион токенов](https://platform.claude.com/docs/ru/build-with-claude/context-windows#1m-token-context-window) для длительных сеансов |

32| **`opus[1m]`** | Использует Opus с [контекстным окном в 1 миллион токенов](https://platform.claude.com/docs/ru/build-with-claude/context-windows#1m-token-context-window) для длительных сеансов |

33| **`opusplan`** | Специальный режим, который использует `opus` во время режима плана, а затем переключается на `sonnet` для выполнения |

34 

35На Anthropic API `opus` разрешается в Opus 4.7, а `sonnet` разрешается в Sonnet 4.6. На Bedrock, Vertex и Foundry `opus` разрешается в Opus 4.6, а `sonnet` разрешается в Sonnet 4.5; более новые модели доступны на этих поставщиках путем явного выбора полного имени модели или установки `ANTHROPIC_DEFAULT_OPUS_MODEL` или `ANTHROPIC_DEFAULT_SONNET_MODEL`.

36 

37Псевдонимы указывают на рекомендуемую версию для вашего поставщика и обновляются со временем. Чтобы закрепить определенную версию, используйте полное имя модели (например, `claude-opus-4-7`) или установите соответствующую переменную окружения, такую как `ANTHROPIC_DEFAULT_OPUS_MODEL`.

38 

39<Note>

40 Opus 4.7 требует Claude Code v2.1.111 или более поздней версии. Запустите `claude update` для обновления.

41</Note>

42 

43### Установка вашей модели

44 

45Вы можете настроить вашу модель несколькими способами, перечисленными в порядке приоритета:

46 

471. **Во время сеанса** - Используйте `/model <alias|name>` для переключения немедленно, или запустите `/model` без аргумента для открытия средства выбора. Средство выбора запрашивает подтверждение, когда в разговоре есть предыдущий вывод, так как следующий ответ перечитывает полную историю без кэшированного контекста

482. **При запуске** - Запустите с `claude --model <alias|name>`

493. **Переменная окружения** - Установите `ANTHROPIC_MODEL=<alias|name>`

504. **Параметры** - Настройте постоянно в файле параметров, используя поле `model`.

51 

52Ваш выбор `/model` сохраняется в параметры пользователя и сохраняется при перезагрузке. Начиная с версии v2.1.117, если файл `.claude/settings.json` проекта закрепляет другую модель, Claude Code также записывает ваш выбор в `.claude/settings.local.json`, чтобы он продолжал применяться в этом проекте после перезагрузки. Управляемые параметры имеют приоритет и переприменяются при следующем запуске.

53 

54Когда активная модель при запуске поступает из параметров проекта или управляемых параметров, а не из вашего собственного выбора, заголовок при запуске показывает, какой файл параметров установил его. Запустите `/model` для переопределения в текущем сеансе.

55 

56Пример использования:

57 

58```bash theme={null}

59# Запустить с Opus

60claude --model opus

61 

62# Переключиться на Sonnet во время сеанса

63/model sonnet

64```

65 

66Пример файла параметров:

67 

68```json theme={null}

69{

70 "permissions": {

71 ...

72 },

73 "model": "opus"

74}

75```

76 

77## Ограничение выбора модели

78 

79Администраторы предприятия могут использовать `availableModels` в [управляемых или политических параметрах](/ru/settings#settings-files) для ограничения того, какие модели могут выбирать пользователи.

80 

81Когда установлен `availableModels`, пользователи не могут переключаться на модели, отсутствующие в списке, через `/model`, флаг `--model` или переменную окружения `ANTHROPIC_MODEL`.

82 

83```json theme={null}

84{

85 "availableModels": ["sonnet", "haiku"]

86}

87```

88 

89### Поведение модели по умолчанию

90 

91Опция Default в средстве выбора модели не затрагивается `availableModels`. Она всегда остается доступной и представляет системное значение по умолчанию во время выполнения [на основе уровня подписки пользователя](#default-model-setting).

92 

93Даже с `availableModels: []` пользователи все еще могут использовать Claude Code с моделью Default для своего уровня.

94 

95### Управление моделью, на которой работают пользователи

96 

97Параметр `model` является начальным выбором, а не принудительным. Он устанавливает, какая модель активна при запуске сеанса, но пользователи все еще могут открыть `/model` и выбрать Default, который разрешается в системное значение по умолчанию для их уровня независимо от того, что установлено в `model`.

98 

99Для полного управления опытом работы с моделью объедините три параметра:

100 

101* **`availableModels`**: ограничивает, на какие именованные модели пользователи могут переключаться

102* **`model`**: устанавливает начальный выбор модели при запуске сеанса

103* **`ANTHROPIC_DEFAULT_SONNET_MODEL`** / **`ANTHROPIC_DEFAULT_OPUS_MODEL`** / **`ANTHROPIC_DEFAULT_HAIKU_MODEL`**: управляют тем, на что разрешаются опция Default и псевдонимы `sonnet`, `opus` и `haiku`

104 

105Этот пример запускает пользователей на Sonnet 4.5, ограничивает средство выбора Sonnet и Haiku, и закрепляет Default для разрешения на Sonnet 4.5 вместо последнего выпуска:

106 

107```json theme={null}

108{

109 "model": "claude-sonnet-4-5",

110 "availableModels": ["claude-sonnet-4-5", "haiku"],

111 "env": {

112 "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5"

113 }

114}

115```

116 

117Без блока `env` пользователь, который выбирает Default в средстве выбора, получит последний выпуск Sonnet, обходя закрепление версии в `model` и `availableModels`.

118 

119### Поведение слияния

120 

121Когда `availableModels` установлен на нескольких уровнях, таких как параметры пользователя и параметры проекта, массивы объединяются и дедублицируются. Для обеспечения строгого списка разрешений установите `availableModels` в управляемых или политических параметрах, которые имеют наивысший приоритет.

122 

123### Идентификаторы моделей Mantle

124 

125Когда включена [конечная точка Bedrock Mantle](/ru/amazon-bedrock#use-the-mantle-endpoint), записи в `availableModels`, начинающиеся с `anthropic.`, добавляются в средство выбора `/model` как пользовательские опции и маршрутизируются на конечную точку Mantle. Это исключение из сопоставления только псевдонимов, описанного в [Закрепление моделей для развертываний третьих сторон](#pin-models-for-third-party-deployments). Параметр все еще ограничивает средство выбора перечисленными записями, поэтому включите стандартные псевдонимы вместе с любыми идентификаторами Mantle.

126 

127## Специальное поведение модели

128 

129### Параметр модели `default`

130 

131Поведение `default` зависит от типа вашей учетной записи:

132 

133* **Max и Team Premium**: по умолчанию Opus 4.7

134* **Pro, Team Standard, Enterprise и Anthropic API**: по умолчанию Sonnet 4.6

135* **Bedrock, Vertex и Foundry**: по умолчанию Sonnet 4.5

136 

137Claude Code может автоматически вернуться к Sonnet, если вы достигнете порога использования с Opus.

138 

139<Note>

140 23 апреля 2026 года модель по умолчанию для пользователей Enterprise с оплатой по мере использования и Anthropic API изменится на Opus 4.7. Чтобы сохранить другое значение по умолчанию, установите `ANTHROPIC_MODEL` или поле `model` в [параметрах, управляемых сервером](/ru/server-managed-settings).

141</Note>

142 

143### Параметр модели `opusplan`

144 

145Псевдоним модели `opusplan` предоставляет автоматизированный гибридный подход:

146 

147* **В режиме плана** - Использует `opus` для сложного рассуждения и решений архитектуры

148* **В режиме выполнения** - Автоматически переключается на `sonnet` для генерации кода и реализации

149 

150Это дает вам лучшее из обоих миров: превосходное рассуждение Opus для планирования и эффективность Sonnet для выполнения.

151 

152Фаза Opus в режиме плана работает со стандартным контекстным окном 200K. Автоматическое обновление 1M, описанное в [Расширенный контекст](#extended-context), применяется к параметру модели `opus` и не распространяется на `opusplan`.

153 

154### Регулировка уровня усилий

155 

156[Уровни усилий](https://platform.claude.com/docs/en/build-with-claude/effort) управляют адаптивным рассуждением, которое позволяет модели решать, думать ли и сколько думать на каждом шаге на основе сложности задачи. Более низкие усилия работают быстрее и дешевле для простых задач, а более высокие усилия обеспечивают более глубокое рассуждение для сложных проблем.

157 

158Усилие поддерживается на Opus 4.7, Opus 4.6 и Sonnet 4.6. Доступные уровни зависят от модели:

159 

160| Модель | Уровни |

161| :-------------------- | :-------------------------------------- |

162| Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |

163| Opus 4.6 и Sonnet 4.6 | `low`, `medium`, `high`, `max` |

164 

165Если вы установите уровень, который активная модель не поддерживает, Claude Code вернется к наивысшему поддерживаемому уровню на или ниже установленного вами. Например, `xhigh` работает как `high` на Opus 4.6.

166 

167Начиная с версии 2.1.117, усилие по умолчанию составляет `xhigh` на Opus 4.7 и `high` на Opus 4.6 и Sonnet 4.6.

168 

169Когда вы впервые запускаете Opus 4.7, Claude Code применяет `xhigh`, даже если вы ранее установили другой уровень усилий для Opus 4.6 или Sonnet 4.6. Запустите `/effort` снова, чтобы выбрать другой уровень после переключения.

170 

171`low`, `medium`, `high` и `xhigh` сохраняются между сеансами. `max` обеспечивает самое глубокое рассуждение без ограничений на расходование токенов и применяется только к текущему сеансу, кроме случаев, когда установлено через переменную окружения `CLAUDE_CODE_EFFORT_LEVEL`.

172 

173#### Выбор уровня усилий

174 

175Каждый уровень обменивает расходование токенов на возможность. Значение по умолчанию подходит для большинства задач кодирования; регулируйте, когда вы хотите другой баланс.

176 

177| Уровень | Когда его использовать |

178| :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

179| `low` | Зарезервируйте для коротких, ограниченных, чувствительных к задержкам задач, которые не требуют высокого интеллекта |

180| `medium` | Снижает использование токенов для работы, чувствительной к затратам, которая может пожертвовать некоторым интеллектом |

181| `high` | Балансирует использование токенов и интеллект. Используйте как минимум для работы, чувствительной к интеллекту, или для снижения расходования токенов относительно `xhigh` |

182| `xhigh` | Лучшие результаты для большинства задач кодирования и агентских задач. Рекомендуемое значение по умолчанию на Opus 4.7 |

183| `max` | Может улучшить производительность на сложных задачах, но может показать убывающую отдачу и склонен к переосмыслению. Протестируйте перед широким внедрением |

184 

185Шкала усилий откалибрована для каждой модели, поэтому одно и то же имя уровня не представляет одно и то же базовое значение в разных моделях.

186 

187Для одноразового глубокого рассуждения без изменения параметра сеанса включите "ultrathink" в вашу подсказку. Это добавляет встроенную инструкцию, указывающую модели больше рассуждать на этом ходу; это не изменяет уровень усилий, отправляемый в API.

188 

189#### Установка уровня усилий

190 

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

192 

193* **`/effort`**: запустите `/effort` без аргументов для открытия интерактивного ползунка, `/effort` с последующим именем уровня для установки его напрямую, или `/effort auto` для сброса на значение по умолчанию модели

194* **В `/model`**: используйте клавиши со стрелками влево/вправо для регулировки ползунка усилий при выборе модели

195* **Флаг `--effort`**: передайте имя уровня для установки его на один сеанс при запуске Claude Code

196* **Переменная окружения**: установите `CLAUDE_CODE_EFFORT_LEVEL` на имя уровня или `auto`

197* **Параметры**: установите `effortLevel` в файле параметров

198* **Frontmatter skill и subagent**: установите `effort` в файле markdown [skill](/ru/skills#frontmatter-reference) или [subagent](/ru/sub-agents#supported-frontmatter-fields) для переопределения уровня усилий при запуске этого skill или subagent

199 

200Переменная окружения имеет приоритет над всеми другими методами, затем ваш настроенный уровень, затем значение по умолчанию модели. Frontmatter усилие применяется, когда этот skill или subagent активен, переопределяя уровень сеанса, но не переменную окружения.

201 

202Ползунок усилий появляется в `/model` при выборе поддерживаемой модели. Текущий уровень усилий также отображается рядом с логотипом и спиннером, например "with low effort", поэтому вы можете подтвердить, какой параметр активен, без открытия `/model`.

203 

204#### Адаптивное рассуждение и фиксированные бюджеты мышления

205 

206Адаптивное рассуждение делает мышление необязательным на каждом шаге, поэтому Claude может быстрее реагировать на рутинные подсказки и зарезервировать более глубокое мышление для шагов, которые от него выигрывают. Если вы хотите, чтобы Claude думал чаще или реже, чем производит текущий уровень, вы можете сказать об этом прямо в вашей подсказке или в `CLAUDE.md`; модель реагирует на это руководство в рамках своего параметра усилий.

207 

208Opus 4.7 всегда использует адаптивное рассуждение. Режим фиксированного бюджета мышления и `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` не применяются к нему.

209 

210На Opus 4.6 и Sonnet 4.6 вы можете установить `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` для возврата к предыдущему фиксированному бюджету мышления, контролируемому `MAX_THINKING_TOKENS`. См. [переменные окружения](/ru/env-vars).

211 

212### Расширенный контекст

213 

214Opus 4.7, Opus 4.6 и Sonnet 4.6 поддерживают [контекстное окно в 1 миллион токенов](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) для длительных сеансов с большими кодовыми базами.

215 

216Доступность варьируется в зависимости от модели и плана. На планах Max, Team и Enterprise Opus автоматически обновляется до контекста 1M без дополнительной конфигурации. Это применяется как к местам Team Standard, так и к Team Premium.

217 

218| План | Opus с контекстом 1M | Sonnet с контекстом 1M |

219| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |

220| Max, Team и Enterprise | Включено в подписку | Требует [дополнительного использования](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

221| Pro | Требует [дополнительного использования](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) | Требует [дополнительного использования](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

222| API и оплата по мере использования | Полный доступ | Полный доступ |

223 

224Чтобы полностью отключить контекст 1M, установите `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Это удаляет варианты моделей 1M из средства выбора модели. См. [переменные окружения](/ru/env-vars).

225 

226Контекстное окно 1M использует стандартное ценообразование модели без премии за токены сверх 200K. Для планов, где расширенный контекст включен в вашу подписку, использование остается покрытым вашей подпиской. Для планов, которые получают доступ к расширенному контексту через дополнительное использование, токены выставляются в счет дополнительного использования.

227 

228Если ваша учетная запись поддерживает контекст 1M, опция появляется в средстве выбора модели (`/model`) в последних версиях Claude Code. Если вы его не видите, попробуйте перезагрузить сеанс.

229 

230Вы также можете использовать суффикс `[1m]` с псевдонимами моделей или полными именами моделей:

231 

232```bash theme={null}

233# Используйте псевдоним opus[1m] или sonnet[1m]

234/model opus[1m]

235/model sonnet[1m]

236 

237# Или добавьте [1m] к полному имени модели

238/model claude-opus-4-7[1m]

239```

240 

241## Проверка вашей текущей модели

242 

243Вы можете увидеть, какую модель вы используете в настоящее время, несколькими способами:

244 

2451. В [строке состояния](/ru/statusline) (если настроено)

2462. В `/status`, который также отображает информацию вашей учетной записи.

247 

248## Добавление пользовательского варианта модели

249 

250Используйте `ANTHROPIC_CUSTOM_MODEL_OPTION` для добавления одной пользовательской записи в средство выбора `/model` без замены встроенных псевдонимов. Это полезно для тестирования идентификаторов моделей, которые Claude Code не указывает по умолчанию. Для развертываний шлюза LLM Claude Code автоматически заполняет средство выбора из конечной точки `/v1/models` шлюза, поэтому эта переменная требуется только в том случае, если обнаружение не возвращает нужную вам модель. См. [Выбор модели шлюза LLM](/ru/llm-gateway#model-selection).

251 

252Этот пример устанавливает все три переменные, чтобы сделать развертывание Opus с маршрутизацией через шлюз выбираемым:

253 

254```bash theme={null}

255export ANTHROPIC_CUSTOM_MODEL_OPTION="my-gateway/claude-opus-4-7"

256export ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="Opus via Gateway"

257export ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION="Custom deployment routed through the internal LLM gateway"

258```

259 

260Пользовательская запись появляется в нижней части средства выбора `/model`. `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` и `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` являются необязательными. Если они опущены, идентификатор модели используется как имя, а описание по умолчанию — `Custom model (<model-id>)`.

261 

262Claude Code пропускает валидацию для идентификатора модели, установленного в `ANTHROPIC_CUSTOM_MODEL_OPTION`, поэтому вы можете использовать любую строку, которую принимает ваша конечная точка API.

263 

264## Переменные окружения

265 

266Вы можете использовать следующие переменные окружения, которые должны быть полными **именами моделей** (или эквивалентом для вашего поставщика API), для управления именами моделей, на которые отображаются псевдонимы.

267 

268| Переменная окружения | Описание |

269| -------------------------------- | ------------------------------------------------------------------------------------------------------ |

270| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Модель для использования для `opus`, или для `opusplan` при активном Plan Mode. |

271| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Модель для использования для `sonnet`, или для `opusplan` при неактивном Plan Mode. |

272| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Модель для использования для `haiku`, или [фоновой функциональности](/ru/costs#background-token-usage) |

273| `CLAUDE_CODE_SUBAGENT_MODEL` | Модель для использования для [subagents](/ru/sub-agents) |

274 

275Примечание: `ANTHROPIC_SMALL_FAST_MODEL` устарел в пользу `ANTHROPIC_DEFAULT_HAIKU_MODEL`.

276 

277### Закрепление моделей для развертываний третьих сторон

278 

279При развертывании Claude Code через [Bedrock](/ru/amazon-bedrock), [Vertex AI](/ru/google-vertex-ai) или [Foundry](/ru/microsoft-foundry) закрепите версии моделей перед развертыванием для пользователей.

280 

281Без закрепления Claude Code использует псевдонимы моделей (`sonnet`, `opus`, `haiku`), которые разрешаются в последнюю версию. Когда Anthropic выпускает новую модель, которая еще не включена в учетную запись пользователя, пользователи Bedrock и Vertex AI видят уведомление и возвращаются к предыдущей версии для этого сеанса, в то время как пользователи Foundry видят ошибки, потому что Foundry не имеет эквивалентной проверки при запуске.

282 

283<Warning>

284 Установите все три переменные окружения модели на конкретные идентификаторы версий как часть вашей начальной настройки. Закрепление позволяет вам контролировать, когда ваши пользователи переходят на новую модель.

285</Warning>

286 

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

288 

289| Поставщик | Пример |

290| :-------- | :------------------------------------------------------------------- |

291| Bedrock | `export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-7'` |

292| Vertex AI | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'` |

293| Foundry | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'` |

294 

295Применяйте тот же шаблон для `ANTHROPIC_DEFAULT_SONNET_MODEL` и `ANTHROPIC_DEFAULT_HAIKU_MODEL`. Для текущих и устаревших идентификаторов моделей во всех поставщиках см. [Обзор моделей](https://platform.claude.com/docs/en/about-claude/models/overview). Чтобы обновить пользователей до новой версии модели, обновите эти переменные окружения и переразверните.

296 

297Чтобы включить [расширенный контекст](#extended-context) для закрепленной модели, добавьте `[1m]` к идентификатору модели в `ANTHROPIC_DEFAULT_OPUS_MODEL` или `ANTHROPIC_DEFAULT_SONNET_MODEL`:

298 

299```bash theme={null}

300export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7[1m]'

301```

302 

303Суффикс `[1m]` применяет контекстное окно 1M ко всему использованию этого псевдонима, включая `opusplan`. Claude Code удаляет суффикс перед отправкой идентификатора модели вашему поставщику. Добавляйте `[1m]` только когда базовая модель поддерживает контекст 1M, такая как Opus 4.7 или Sonnet 4.6.

304 

305<Note>

306 Список разрешений `settings.availableModels` все еще применяется при использовании поставщиков третьих сторон. Фильтрация соответствует псевдониму модели (`opus`, `sonnet`, `haiku`), а не идентификатору модели, специфичному для поставщика.

307</Note>

308 

309### Настройка отображения и возможностей закрепленной модели

310 

311Когда вы закрепляете модель у поставщика третьей стороны, идентификатор, специфичный для поставщика, отображается как есть в средстве выбора `/model`, и Claude Code может не распознать, какие функции поддерживает модель. Вы можете переопределить отображаемое имя и объявить возможности с помощью вспомогательных переменных окружения для каждой закрепленной модели.

312 

313Эти переменные вступают в силу у поставщиков третьих сторон, таких как Bedrock, Vertex AI и Foundry. Переменные `_NAME` и `_DESCRIPTION` также вступают в силу, когда `ANTHROPIC_BASE_URL` указывает на [LLM gateway](/ru/llm-gateway). Они не имеют эффекта при прямом подключении к `api.anthropic.com`.

314 

315| Переменная окружения | Описание |

316| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |

317| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Отображаемое имя для закрепленной модели Opus в средстве выбора `/model`. По умолчанию используется идентификатор модели, если не установлено |

318| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Отображаемое описание для закрепленной модели Opus в средстве выбора `/model`. По умолчанию используется `Custom Opus model`, если не установлено |

319| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Разделенный запятыми список возможностей, которые поддерживает закрепленная модель Opus |

320 

321Те же суффиксы `_NAME`, `_DESCRIPTION` и `_SUPPORTED_CAPABILITIES` доступны для `ANTHROPIC_DEFAULT_SONNET_MODEL`, `ANTHROPIC_DEFAULT_HAIKU_MODEL` и `ANTHROPIC_CUSTOM_MODEL_OPTION`.

322 

323Claude Code включает функции, такие как [уровни усилий](#adjust-effort-level) и [расширенное мышление](/ru/common-workflows#use-extended-thinking-thinking-mode), путем сопоставления идентификатора модели с известными шаблонами. Идентификаторы, специфичные для поставщика, такие как ARN Bedrock или пользовательские имена развертывания, часто не соответствуют этим шаблонам, оставляя поддерживаемые функции отключенными. Установите `_SUPPORTED_CAPABILITIES`, чтобы сообщить Claude Code, какие функции фактически поддерживает модель:

324 

325| Значение возможности | Включает |

326| ---------------------- | -------------------------------------------------------------------------------------------- |

327| `effort` | [Уровни усилий](#adjust-effort-level) и команду `/effort` |

328| `xhigh_effort` | {/* min-version: 2.1.111 */}Уровень усилий `xhigh` |

329| `max_effort` | Уровень усилий `max` |

330| `thinking` | [Расширенное мышление](/ru/common-workflows#use-extended-thinking-thinking-mode) |

331| `adaptive_thinking` | Адаптивное рассуждение, которое динамически распределяет мышление на основе сложности задачи |

332| `interleaved_thinking` | Мышление между вызовами инструментов |

333 

334Когда установлена `_SUPPORTED_CAPABILITIES`, перечисленные возможности включены, а неперечисленные возможности отключены для соответствующей закрепленной модели. Когда переменная не установлена, Claude Code возвращается к встроенному обнаружению на основе идентификатора модели.

335 

336Этот пример закрепляет Opus на пользовательский ARN модели Bedrock, устанавливает понятное имя и объявляет его возможности:

337 

338```bash theme={null}

339export ANTHROPIC_DEFAULT_OPUS_MODEL='arn:aws:bedrock:us-east-1:123456789012:custom-model/abc'

340export ANTHROPIC_DEFAULT_OPUS_MODEL_NAME='Opus via Bedrock'

341export ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION='Opus 4.7 routed through a Bedrock custom endpoint'

342export ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES='effort,xhigh_effort,max_effort,thinking,adaptive_thinking,interleaved_thinking'

343```

344 

345### Переопределение идентификаторов моделей для каждой версии

346 

347Переменные окружения уровня семейства выше настраивают один идентификатор модели для каждого псевдонима семейства. Если вам нужно отобразить несколько версий в одном семействе на различные идентификаторы поставщика, используйте вместо этого параметр `modelOverrides`.

348 

349`modelOverrides` отображает отдельные идентификаторы моделей Anthropic на строки, специфичные для поставщика, которые Claude Code отправляет API вашего поставщика. Когда пользователь выбирает отображаемую модель в средстве выбора `/model`, Claude Code использует ваше настроенное значение вместо встроенного значения по умолчанию.

350 

351Это позволяет администраторам предприятия маршрутизировать каждую версию модели на конкретный ARN профиля вывода Bedrock, имя версии Vertex AI или имя развертывания Foundry для управления, распределения затрат или региональной маршрутизации.

352 

353Установите `modelOverrides` в [файле параметров](/ru/settings#settings-files):

354 

355```json theme={null}

356{

357 "modelOverrides": {

358 "claude-opus-4-7": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-prod",

359 "claude-opus-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-46-prod",

360 "claude-sonnet-4-6": "arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/sonnet-prod"

361 }

362}

363```

364 

365Ключи должны быть идентификаторами моделей Anthropic, как указано в [Обзоре моделей](https://platform.claude.com/docs/en/about-claude/models/overview). Для датированных идентификаторов моделей включите суффикс даты точно так, как он там отображается. Неизвестные ключи игнорируются.

366 

367Переопределения заменяют встроенные идентификаторы моделей, которые поддерживают каждую запись в средстве выбора `/model`. На Bedrock переопределения имеют приоритет над любыми профилями вывода, которые Claude Code автоматически обнаруживает при запуске. Значения, которые вы предоставляете непосредственно через `ANTHROPIC_MODEL`, `--model` или переменные окружения `ANTHROPIC_DEFAULT_*_MODEL`, передаются поставщику как есть и не преобразуются `modelOverrides`.

368 

369`modelOverrides` работает вместе с `availableModels`. Список разрешений оценивается по идентификатору модели Anthropic, а не по значению переопределения, поэтому запись, такая как `"opus"` в `availableModels`, продолжает совпадать, даже когда версии Opus отображаются на ARN.

370 

371### Конфигурация кэширования подсказок

372 

373Claude Code автоматически использует [кэширование подсказок](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) для оптимизации производительности и снижения затрат. Вы можете отключить кэширование подсказок глобально или для конкретных уровней моделей:

374 

375| Переменная окружения | Описание |

376| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |

377| `DISABLE_PROMPT_CACHING` | Установите на `1` для отключения кэширования подсказок для всех моделей (имеет приоритет над параметрами для каждой модели) |

378| `DISABLE_PROMPT_CACHING_HAIKU` | Установите на `1` для отключения кэширования подсказок только для моделей Haiku |

379| `DISABLE_PROMPT_CACHING_SONNET` | Установите на `1` для отключения кэширования подсказок только для моделей Sonnet |

380| `DISABLE_PROMPT_CACHING_OPUS` | Установите на `1` для отключения кэширования подсказок только для моделей Opus |

381 

382Эти переменные окружения дают вам точный контроль над поведением кэширования подсказок. Глобальный параметр `DISABLE_PROMPT_CACHING` имеет приоритет над параметрами для каждой модели, позволяя вам быстро отключить все кэширование при необходимости. Параметры для каждой модели полезны для выборочного управления, например при отладке конкретных моделей или работе с облачными поставщиками, которые могут иметь различные реализации кэширования.

monitoring-usage.md +955 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Мониторинг

6 

7> Узнайте, как включить и настроить OpenTelemetry для Claude Code.

8 

9Отслеживайте использование Claude Code, затраты и активность инструментов в вашей организации, экспортируя данные телеметрии через OpenTelemetry (OTel). Claude Code экспортирует метрики как данные временных рядов через стандартный протокол метрик, события через протокол логов/событий и опционально распределенные трассировки через [протокол трассировки](#traces-beta). Настройте ваши бэкенды метрик, логов и трассировок в соответствии с требованиями мониторинга.

10 

11## Быстрый старт

12 

13Настройте OpenTelemetry с помощью переменных окружения:

14 

15```bash theme={null}

16# 1. Включить телеметрию

17export CLAUDE_CODE_ENABLE_TELEMETRY=1

18 

19# 2. Выбрать экспортеры (оба опциональны - настройте только необходимое)

20export OTEL_METRICS_EXPORTER=otlp # Опции: otlp, prometheus, console, none

21export OTEL_LOGS_EXPORTER=otlp # Опции: otlp, console, none

22 

23# 3. Настроить OTLP endpoint (для OTLP экспортера)

24export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

25export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

26 

27# 4. Установить аутентификацию (если требуется)

28export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer your-token"

29 

30# 5. Для отладки: сократить интервалы экспорта

31export OTEL_METRIC_EXPORT_INTERVAL=10000 # 10 секунд (по умолчанию: 60000ms)

32export OTEL_LOGS_EXPORT_INTERVAL=5000 # 5 секунд (по умолчанию: 5000ms)

33 

34# 6. Запустить Claude Code

35claude

36```

37 

38<Note>

39 Интервалы экспорта по умолчанию составляют 60 секунд для метрик и 5 секунд для логов. Во время настройки вы можете использовать более короткие интервалы для целей отладки. Не забудьте сбросить эти значения для использования в production.

40</Note>

41 

42Для полного списка параметров конфигурации см. [спецификацию OpenTelemetry](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options).

43 

44## Конфигурация администратора

45 

46Администраторы могут настраивать параметры OpenTelemetry для всех пользователей через [файл управляемых параметров](/ru/settings#settings-files). Это позволяет централизованно управлять параметрами телеметрии в организации. Дополнительную информацию о том, как применяются параметры, см. в разделе [приоритет параметров](/ru/settings#settings-precedence).

47 

48Пример конфигурации управляемых параметров:

49 

50```json theme={null}

51{

52 "env": {

53 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

54 "OTEL_METRICS_EXPORTER": "otlp",

55 "OTEL_LOGS_EXPORTER": "otlp",

56 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

57 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317",

58 "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer example-token"

59 }

60}

61```

62 

63<Note>

64 Управляемые параметры можно распространять через MDM (Mobile Device Management) или другие решения для управления устройствами. Переменные окружения, определенные в файле управляемых параметров, имеют высокий приоритет и не могут быть переопределены пользователями.

65</Note>

66 

67## Детали конфигурации

68 

69### Общие переменные конфигурации

70 

71| Переменная окружения | Описание | Примеры значений |

72| --------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |

73| `CLAUDE_CODE_ENABLE_TELEMETRY` | Включает сбор телеметрии (обязательно) | `1` |

74| `OTEL_METRICS_EXPORTER` | Типы экспортера метрик, разделенные запятыми. Используйте `none` для отключения | `console`, `otlp`, `prometheus`, `none` |

75| `OTEL_LOGS_EXPORTER` | Типы экспортера логов/событий, разделенные запятыми. Используйте `none` для отключения | `console`, `otlp`, `none` |

76| `OTEL_EXPORTER_OTLP_PROTOCOL` | Протокол для OTLP экспортера, применяется ко всем сигналам | `grpc`, `http/json`, `http/protobuf` |

77| `OTEL_EXPORTER_OTLP_ENDPOINT` | OTLP endpoint коллектора для всех сигналов | `http://localhost:4317` |

78| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Протокол для метрик, переопределяет общий параметр | `grpc`, `http/json`, `http/protobuf` |

79| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | OTLP endpoint метрик, переопределяет общий параметр | `http://localhost:4318/v1/metrics` |

80| `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` | Протокол для логов, переопределяет общий параметр | `grpc`, `http/json`, `http/protobuf` |

81| `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | OTLP endpoint логов, переопределяет общий параметр | `http://localhost:4318/v1/logs` |

82| `OTEL_EXPORTER_OTLP_HEADERS` | Заголовки аутентификации для OTLP | `Authorization=Bearer token` |

83| `OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY` | Ключ клиента для аутентификации mTLS | Путь к файлу ключа клиента |

84| `OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE` | Сертификат клиента для аутентификации mTLS | Путь к файлу сертификата клиента |

85| `OTEL_METRIC_EXPORT_INTERVAL` | Интервал экспорта в миллисекундах (по умолчанию: 60000) | `5000`, `60000` |

86| `OTEL_LOGS_EXPORT_INTERVAL` | Интервал экспорта логов в миллисекундах (по умолчанию: 5000) | `1000`, `10000` |

87| `OTEL_LOG_USER_PROMPTS` | Включить логирование содержимого пользовательских подсказок (по умолчанию: отключено) | `1` для включения |

88| `OTEL_LOG_TOOL_DETAILS` | Включить логирование параметров инструмента и аргументов входных данных в событиях инструментов и атрибутах span трассировки: команды Bash, имена MCP сервера и инструмента, имена навыков и входные данные инструмента. Также включает пользовательские, плагин и MCP имена команд на событиях `user_prompt` (по умолчанию: отключено) | `1` для включения |

89| `OTEL_LOG_TOOL_CONTENT` | Включить логирование входных и выходных данных инструмента в событиях span (по умолчанию: отключено). Требует [трассировку](#traces-beta). Содержимое усекается на 60 КБ | `1` для включения |

90| `OTEL_LOG_RAW_API_BODIES` | Выдавать полный JSON запроса и ответа Anthropic Messages API как события логов `api_request_body` / `api_response_body` (по умолчанию: отключено). Тела включают всю историю разговора. Включение этого подразумевает согласие со всем, что раскрыли бы `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_DETAILS` и `OTEL_LOG_TOOL_CONTENT` | `1` для встроенных тел, усеченных на 60 КБ, или `file:<dir>` для неусеченных тел на диске с указателем `body_ref` в событии |

91| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | Предпочтение временности метрик (по умолчанию: `delta`). Установите на `cumulative`, если ваш бэкенд ожидает кумулятивную временность | `delta`, `cumulative` |

92| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Интервал для обновления динамических заголовков (по умолчанию: 1740000ms / 29 минут) | `900000` |

93 

94### Управление кардинальностью метрик

95 

96Следующие переменные окружения управляют тем, какие атрибуты включены в метрики для управления кардинальностью:

97 

98| Переменная окружения | Описание | Значение по умолчанию | Пример для отключения |

99| ----------------------------------- | ----------------------------------------------------------------- | --------------------- | --------------------- |

100| `OTEL_METRICS_INCLUDE_SESSION_ID` | Включить атрибут session.id в метрики | `true` | `false` |

101| `OTEL_METRICS_INCLUDE_VERSION` | Включить атрибут app.version в метрики | `false` | `true` |

102| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Включить атрибуты user.account\_uuid и user.account\_id в метрики | `true` | `false` |

103 

104Эти переменные помогают управлять кардинальностью метрик, что влияет на требования к хранилищу и производительность запросов в вашем бэкенде метрик. Более низкая кардинальность обычно означает лучшую производительность и более низкие затраты на хранилище, но менее детальные данные для анализа.

105 

106### Traces (beta)

107 

108Распределенная трассировка экспортирует spans, которые связывают каждую пользовательскую подсказку с запросами API и выполнением инструментов, которые она вызывает, так что вы можете просмотреть полный запрос как одну трассировку в вашем бэкенде трассировки.

109 

110Трассировка отключена по умолчанию. Чтобы включить её, установите оба `CLAUDE_CODE_ENABLE_TELEMETRY=1` и `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`, затем установите `OTEL_TRACES_EXPORTER` для выбора места отправки spans. Трассировки повторно используют [общую конфигурацию OTLP](#common-configuration-variables) для endpoint, протокола и заголовков.

111 

112| Переменная окружения | Описание | Примеры значений |

113| ------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------ |

114| `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` | Включить трассировку span (обязательно). `ENABLE_ENHANCED_TELEMETRY_BETA` также принимается | `1` |

115| `OTEL_TRACES_EXPORTER` | Типы экспортера трассировок, разделенные запятыми. Используйте `none` для отключения | `console`, `otlp`, `none` |

116| `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` | Протокол для трассировок, переопределяет `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc`, `http/json`, `http/protobuf` |

117| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | OTLP endpoint трассировок, переопределяет `OTEL_EXPORTER_OTLP_ENDPOINT` | `http://localhost:4318/v1/traces` |

118| `OTEL_TRACES_EXPORT_INTERVAL` | Интервал экспорта пакета span в миллисекундах (по умолчанию: 5000) | `1000`, `10000` |

119 

120Spans скрывают текст пользовательской подсказки, детали входных данных инструмента и содержимое инструмента по умолчанию. Установите `OTEL_LOG_USER_PROMPTS=1`, `OTEL_LOG_TOOL_DETAILS=1` и `OTEL_LOG_TOOL_CONTENT=1` для их включения.

121 

122Когда трассировка активна, подпроцессы Bash и PowerShell автоматически наследуют переменную окружения `TRACEPARENT`, содержащую контекст трассировки W3C активного span выполнения инструмента. Это позволяет любому подпроцессу, который читает `TRACEPARENT`, родить свои собственные spans под той же трассировкой, обеспечивая сквозную распределенную трассировку через скрипты и команды, которые запускает Claude.

123 

124В Agent SDK и неинтерактивных сеансах, запущенных с `-p`, Claude Code также читает `TRACEPARENT` и `TRACESTATE` из своего собственного окружения при запуске каждого span взаимодействия. Это позволяет процессу встраивания передать свой активный контекст трассировки W3C в подпроцесс, так что spans Claude Code появляются как дочерние элементы трассировки вызывающей стороны. Интерактивные сеансы игнорируют входящий `TRACEPARENT`, чтобы избежать случайного наследования значений окружения из CI или контейнерных сред.

125 

126#### Иерархия span

127 

128Каждая пользовательская подсказка запускает корневой span `claude_code.interaction`. Вызовы API, вызовы инструментов и выполнения hooks записываются как его дочерние элементы. Spans инструментов имеют два собственных дочерних span: один для времени, потраченного на ожидание решения о разрешении, и один для самого выполнения. Когда инструмент Task порождает подагента, spans API и инструментов подагента вложены под span `claude_code.tool` родителя.

129 

130```text theme={null}

131claude_code.interaction

132├── claude_code.llm_request

133├── claude_code.hook (требует детальную бета-трассировку)

134└── claude_code.tool

135 ├── claude_code.tool.blocked_on_user

136 ├── claude_code.tool.execution

137 └── (инструмент Task) spans claude_code.llm_request / claude_code.tool подагента

138```

139 

140В сеансах Agent SDK и `claude -p`, `claude_code.interaction` сам становится дочерним элементом span вызывающей стороны, когда `TRACEPARENT` установлен в окружении.

141 

142#### Атрибуты span

143 

144Каждый span несет [стандартные атрибуты](#standard-attributes) плюс атрибут `span.type`, соответствующий его имени. Таблицы ниже перечисляют дополнительные атрибуты, установленные на каждом span. Spans `llm_request`, `tool.execution` и `hook` устанавливают статус OpenTelemetry `ERROR` при записи сбоя; другие spans всегда заканчиваются со статусом `UNSET`.

145 

146**`claude_code.interaction`**

147 

148| Атрибут | Описание | Управляется |

149| ------------------------- | -------------------------------------------------------------- | ----------------------- |

150| `user_prompt` | Текст подсказки. Значение `<REDACTED>` если gate не установлен | `OTEL_LOG_USER_PROMPTS` |

151| `user_prompt_length` | Длина подсказки в символах | |

152| `interaction.sequence` | Счетчик на основе 1 взаимодействий в этом сеансе | |

153| `interaction.duration_ms` | Длительность хода в реальном времени | |

154 

155**`claude_code.llm_request`**

156 

157| Атрибут | Описание | Управляется |

158| -------------------------------- | -------------------------------------------------------------------------------------------------------------------- | ----------- |

159| `model` | Идентификатор модели | |

160| `gen_ai.system` | Всегда `anthropic`. Семантическое соглашение OpenTelemetry GenAI | |

161| `gen_ai.request.model` | То же значение, что и `model`. Семантическое соглашение OpenTelemetry GenAI | |

162| `query_source` | Подсистема, которая выдала запрос, такая как `repl_main_thread` или имя подагента | |

163| `speed` | `fast` или `normal` | |

164| `llm_request.context` | `interaction`, `tool` или `standalone` в зависимости от родительского span | |

165| `duration_ms` | Длительность в реальном времени, включая повторные попытки | |

166| `ttft_ms` | Время до первого токена в миллисекундах | |

167| `input_tokens` | Количество входных токенов из блока использования API | |

168| `output_tokens` | Количество выходных токенов | |

169| `cache_read_tokens` | Токены, прочитанные из кэша подсказок | |

170| `cache_creation_tokens` | Токены, записанные в кэш подсказок | |

171| `request_id` | ID запроса Anthropic API из заголовка ответа `request-id` | |

172| `gen_ai.response.id` | То же значение, что и `request_id`. Семантическое соглашение OpenTelemetry GenAI | |

173| `client_request_id` | Сгенерированный клиентом `x-client-request-id` последней попытки | |

174| `attempt` | Всего попыток для этого запроса | |

175| `success` | `true` или `false` | |

176| `status_code` | HTTP код состояния при сбое запроса | |

177| `error` | Сообщение об ошибке при сбое запроса | |

178| `response.has_tool_call` | `true` когда ответ содержал блоки tool-use | |

179| `stop_reason` | API ответ `stop_reason`, такой как `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn` или `refusal` | |

180| `gen_ai.response.finish_reasons` | То же значение, что и `stop_reason`, обернутое в массив строк. Семантическое соглашение OpenTelemetry GenAI | |

181 

182Каждая повторная попытка также записывается как событие span `gen_ai.request.attempt` с атрибутами `attempt` и `client_request_id`.

183 

184**`claude_code.tool`**

185 

186| Атрибут | Описание | Управляется |

187| --------------- | ------------------------------------------------------------------------- | ----------------------- |

188| `tool_name` | Имя инструмента | |

189| `duration_ms` | Длительность в реальном времени, включая ожидание разрешения и выполнение | |

190| `result_tokens` | Приблизительный размер токена результата инструмента | |

191| `file_path` | Целевой путь файла для инструментов Read, Edit и Write | `OTEL_LOG_TOOL_DETAILS` |

192| `full_command` | Строка команды для инструмента Bash | `OTEL_LOG_TOOL_DETAILS` |

193| `skill_name` | Имя навыка для инструмента Skill | `OTEL_LOG_TOOL_DETAILS` |

194| `subagent_type` | Тип подагента для инструмента Task | `OTEL_LOG_TOOL_DETAILS` |

195 

196Когда `OTEL_LOG_TOOL_CONTENT=1`, этот span также записывает событие span `tool.output`, чьи атрибуты содержат входные и выходные тела инструмента, усеченные на 60 КБ на атрибут.

197 

198**`claude_code.tool.blocked_on_user`**

199 

200| Атрибут | Описание | Управляется |

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

202| `duration_ms` | Время, потраченное на ожидание решения о разрешении | |

203| `decision` | `accept` или `reject` | |

204| `source` | Источник решения, соответствующий событию [Tool decision event](#tool-decision-event) | |

205 

206**`claude_code.tool.execution`**

207 

208| Атрибут | Описание | Управляется |

209| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |

210| `duration_ms` | Время, потраченное на запуск тела инструмента | |

211| `success` | `true` или `false` | |

212| `error` | Строка категории ошибки при сбое выполнения, такая как `Error:ENOENT` или `ShellError`. Содержит полное сообщение об ошибке вместо этого, когда gate установлен | `OTEL_LOG_TOOL_DETAILS` |

213 

214**`claude_code.hook`**

215 

216Этот span выдается только при активной детальной бета-трассировке, которая требует `ENABLE_BETA_TRACING_DETAILED=1` и `BETA_TRACING_ENDPOINT` в дополнение к конфигурации экспортера трассировки выше. В интерактивных сеансах CLI это также требует, чтобы ваша организация была в списке разрешений для функции. Сеансы Agent SDK и неинтерактивные сеансы `-p` не имеют ограничений. Он не выдается, когда установлен только `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA`.

217 

218| Атрибут | Описание | Управляется |

219| ------------------------ | ------------------------------------------------------------ | ----------------------- |

220| `hook_event` | Тип события hook, такой как `PreToolUse` | |

221| `hook_name` | Полное имя hook, такой как `PreToolUse:Write` | |

222| `num_hooks` | Количество выполненных команд hook, соответствующих условиям | |

223| `hook_definitions` | JSON-сериализованная конфигурация hook | `OTEL_LOG_TOOL_DETAILS` |

224| `duration_ms` | Длительность в реальном времени всех соответствующих hooks | |

225| `num_success` | Количество hooks, которые завершились успешно | |

226| `num_blocking` | Количество hooks, которые вернули решение блокировки | |

227| `num_non_blocking_error` | Количество hooks, которые не удались без блокировки | |

228| `num_cancelled` | Количество hooks, отмененных до завершения | |

229 

230<Note>

231 Дополнительные атрибуты, содержащие содержимое, такие как `new_context`, `system_prompt_preview`, `user_system_prompt`, `tool_input` и `response.model_output`, выдаются только при активной детальной бета-трассировке. Они не являются частью стабильной схемы span. `user_system_prompt` дополнительно требует `OTEL_LOG_USER_PROMPTS=1`. Он содержит только текст системной подсказки, который вы предоставляете через опцию SDK `systemPrompt` или флаги `--system-prompt` и `--append-system-prompt`, усеченный на 60 КБ, и выдается один раз за сеанс, а не за запрос.

232</Note>

233 

234### Динамические заголовки

235 

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

237 

238#### Конфигурация параметров

239 

240Добавьте в ваш `.claude/settings.json`:

241 

242```json theme={null}

243{

244 "otelHeadersHelper": "/bin/generate_opentelemetry_headers.sh"

245}

246```

247 

248#### Требования к скрипту

249 

250Скрипт должен выводить корректный JSON с парами строк ключ-значение, представляющими HTTP заголовки:

251 

252```bash theme={null}

253#!/bin/bash

254# Пример: несколько заголовков

255echo "{\"Authorization\": \"Bearer $(get-token.sh)\", \"X-API-Key\": \"$(get-api-key.sh)\"}"

256```

257 

258#### Поведение обновления

259 

260Скрипт помощника заголовков запускается при запуске и периодически после этого для поддержки обновления токена. По умолчанию скрипт запускается каждые 29 минут. Настройте интервал с помощью переменной окружения `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`.

261 

262### Поддержка многокомандной организации

263 

264Организации с несколькими командами или отделами могут добавлять пользовательские атрибуты для различия между разными группами, используя переменную окружения `OTEL_RESOURCE_ATTRIBUTES`:

265 

266```bash theme={null}

267# Добавить пользовательские атрибуты для идентификации команды

268export OTEL_RESOURCE_ATTRIBUTES="department=engineering,team.id=platform,cost_center=eng-123"

269```

270 

271Эти пользовательские атрибуты будут включены во все метрики и события, позволяя вам:

272 

273* Фильтровать метрики по команде или отделу

274* Отслеживать затраты по центру затрат

275* Создавать панели мониторинга для конкретных команд

276* Настраивать оповещения для конкретных команд

277 

278<Warning>

279 **Важные требования к форматированию для OTEL\_RESOURCE\_ATTRIBUTES:**

280 

281 Переменная окружения `OTEL_RESOURCE_ATTRIBUTES` использует пары ключ=значение, разделенные запятыми, со строгими требованиями к форматированию:

282 

283 * **Пробелы не допускаются**: Значения не могут содержать пробелы. Например, `user.organizationName=My Company` недопустимо

284 * **Формат**: Должны быть пары ключ=значение, разделенные запятыми: `key1=value1,key2=value2`

285 * **Допустимые символы**: Только символы US-ASCII, исключая управляющие символы, пробелы, двойные кавычки, запятые, точки с запятой и обратные слэши

286 * **Специальные символы**: Символы вне допустимого диапазона должны быть закодированы в процентах

287 

288 **Примеры:**

289 

290 ```bash theme={null}

291 # ❌ Недопустимо - содержит пробелы

292 export OTEL_RESOURCE_ATTRIBUTES="org.name=John's Organization"

293 

294 # ✅ Допустимо - используйте подчеркивания или camelCase вместо этого

295 export OTEL_RESOURCE_ATTRIBUTES="org.name=Johns_Organization"

296 export OTEL_RESOURCE_ATTRIBUTES="org.name=JohnsOrganization"

297 

298 # ✅ Допустимо - закодируйте специальные символы в процентах, если необходимо

299 export OTEL_RESOURCE_ATTRIBUTES="org.name=John%27s%20Organization"

300 ```

301 

302 Примечание: заключение значений в кавычки не экранирует пробелы. Например, `org.name="My Company"` приводит к буквальному значению `"My Company"` (с кавычками включены), а не `My Company`.

303</Warning>

304 

305### Примеры конфигураций

306 

307Установите эти переменные окружения перед запуском `claude`. Каждый блок показывает полную конфигурацию для другого экспортера или сценария развертывания:

308 

309```bash theme={null}

310# Отладка консоли (интервалы 1 секунда)

311export CLAUDE_CODE_ENABLE_TELEMETRY=1

312export OTEL_METRICS_EXPORTER=console

313export OTEL_METRIC_EXPORT_INTERVAL=1000

314 

315# OTLP/gRPC

316export CLAUDE_CODE_ENABLE_TELEMETRY=1

317export OTEL_METRICS_EXPORTER=otlp

318export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

319export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

320 

321# Prometheus

322export CLAUDE_CODE_ENABLE_TELEMETRY=1

323export OTEL_METRICS_EXPORTER=prometheus

324 

325# Несколько экспортеров

326export CLAUDE_CODE_ENABLE_TELEMETRY=1

327export OTEL_METRICS_EXPORTER=console,otlp

328export OTEL_EXPORTER_OTLP_PROTOCOL=http/json

329 

330# Разные endpoints/бэкенды для метрик и логов

331export CLAUDE_CODE_ENABLE_TELEMETRY=1

332export OTEL_METRICS_EXPORTER=otlp

333export OTEL_LOGS_EXPORTER=otlp

334export OTEL_EXPORTER_OTLP_METRICS_PROTOCOL=http/protobuf

335export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://metrics.example.com:4318

336export OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=grpc

337export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://logs.example.com:4317

338 

339# Только метрики (без событий/логов)

340export CLAUDE_CODE_ENABLE_TELEMETRY=1

341export OTEL_METRICS_EXPORTER=otlp

342export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

343export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

344 

345# Только события/логи (без метрик)

346export CLAUDE_CODE_ENABLE_TELEMETRY=1

347export OTEL_LOGS_EXPORTER=otlp

348export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

349export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

350```

351 

352## Доступные метрики и события

353 

354### Стандартные атрибуты

355 

356Все метрики и события имеют эти стандартные атрибуты:

357 

358| Атрибут | Описание | Управляется |

359| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |

360| `session.id` | Уникальный идентификатор сеанса | `OTEL_METRICS_INCLUDE_SESSION_ID` (по умолчанию: true) |

361| `app.version` | Текущая версия Claude Code | `OTEL_METRICS_INCLUDE_VERSION` (по умолчанию: false) |

362| `organization.id` | UUID организации (при аутентификации) | Всегда включается, когда доступно |

363| `user.account_uuid` | UUID учетной записи (при аутентификации) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (по умолчанию: true) |

364| `user.account_id` | ID учетной записи в формате с тегами, соответствующий API администратора Anthropic (при аутентификации), такой как `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (по умолчанию: true) |

365| `user.id` | Анонимный идентификатор устройства/установки, генерируемый для каждой установки Claude Code | Всегда включается |

366| `user.email` | Адрес электронной почты пользователя (при аутентификации через OAuth) | Всегда включается, когда доступно |

367| `terminal.type` | Тип терминала, такой как `iTerm.app`, `vscode`, `cursor` или `tmux` | Всегда включается при обнаружении |

368 

369События дополнительно включают следующие атрибуты. Они никогда не прикрепляются к метрикам, потому что они вызовут неограниченную кардинальность:

370 

371* `prompt.id`: UUID, коррелирующий пользовательскую подсказку со всеми последующими событиями до следующей подсказки. См. [Атрибуты корреляции событий](#event-correlation-attributes).

372* `workspace.host_paths`: каталоги рабочей области хоста, выбранные в приложении для рабочего стола, как массив строк

373 

374### Метрики

375 

376Claude Code экспортирует следующие метрики:

377 

378| Имя метрики | Описание | Единица |

379| ------------------------------------- | --------------------------------------------------------------- | ------- |

380| `claude_code.session.count` | Количество запущенных сеансов CLI | count |

381| `claude_code.lines_of_code.count` | Количество строк кода, которые были изменены | count |

382| `claude_code.pull_request.count` | Количество созданных pull request | count |

383| `claude_code.commit.count` | Количество созданных git коммитов | count |

384| `claude_code.cost.usage` | Стоимость сеанса Claude Code | USD |

385| `claude_code.token.usage` | Количество использованных токенов | tokens |

386| `claude_code.code_edit_tool.decision` | Количество решений о разрешении инструмента редактирования кода | count |

387| `claude_code.active_time.total` | Общее активное время в секундах | s |

388 

389### Детали метрик

390 

391Каждая метрика включает стандартные атрибуты, перечисленные выше. Метрики с дополнительными контекстно-специфичными атрибутами отмечены ниже.

392 

393#### Счетчик сеансов

394 

395Увеличивается в начале каждого сеанса.

396 

397**Атрибуты**:

398 

399* Все [стандартные атрибуты](#standard-attributes)

400* `start_type`: Как был запущен сеанс. Один из `"fresh"`, `"resume"` или `"continue"`

401 

402#### Счетчик строк кода

403 

404Увеличивается при добавлении или удалении кода.

405 

406**Атрибуты**:

407 

408* Все [стандартные атрибуты](#standard-attributes)

409* `type`: (`"added"`, `"removed"`)

410 

411#### Счетчик pull request

412 

413Увеличивается при создании pull request через Claude Code.

414 

415**Атрибуты**:

416 

417* Все [стандартные атрибуты](#standard-attributes)

418 

419#### Счетчик коммитов

420 

421Увеличивается при создании git коммитов через Claude Code.

422 

423**Атрибуты**:

424 

425* Все [стандартные атрибуты](#standard-attributes)

426 

427#### Счетчик затрат

428 

429Увеличивается после каждого запроса API.

430 

431**Атрибуты**:

432 

433* Все [стандартные атрибуты](#standard-attributes)

434* `model`: Идентификатор модели (например, "claude-sonnet-4-6")

435* `query_source`: Категория подсистемы, которая выдала запрос. Один из `"main"`, `"subagent"` или `"auxiliary"`

436* `speed`: `"fast"` когда запрос использовал быстрый режим. Отсутствует в противном случае

437* `effort`: [Уровень усилий](/ru/model-config#adjust-effort-level), применяемый к запросу: `"low"`, `"medium"`, `"high"`, `"xhigh"` или `"max"`. Отсутствует, когда модель не поддерживает усилия.

438 

439#### Счетчик токенов

440 

441Увеличивается после каждого запроса API.

442 

443**Атрибуты**:

444 

445* Все [стандартные атрибуты](#standard-attributes)

446* `type`: (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`)

447* `model`: Идентификатор модели (например, "claude-sonnet-4-6")

448* `query_source`: Категория подсистемы, которая выдала запрос. Один из `"main"`, `"subagent"` или `"auxiliary"`

449* `speed`: `"fast"` когда запрос использовал быстрый режим. Отсутствует в противном случае

450* `effort`: [Уровень усилий](/ru/model-config#adjust-effort-level), применяемый к запросу. Подробности см. в разделе [Счетчик затрат](#cost-counter).

451 

452#### Счетчик решений инструмента редактирования кода

453 

454Увеличивается, когда пользователь принимает или отклоняет использование инструмента Edit, Write или NotebookEdit.

455 

456**Атрибуты**:

457 

458* Все [стандартные атрибуты](#standard-attributes)

459* `tool_name`: Имя инструмента (`"Edit"`, `"Write"`, `"NotebookEdit"`)

460* `decision`: Решение пользователя (`"accept"`, `"reject"`)

461* `source`: Источник решения. Один из `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"` или `"user_reject"`. См. [Событие решения инструмента](#tool-decision-event) для получения информации о том, что означает каждое значение.

462* `language`: Язык программирования отредактированного файла, такой как `"TypeScript"`, `"Python"`, `"JavaScript"` или `"Markdown"`. Возвращает `"unknown"` для неузнанных расширений файлов.

463 

464#### Счетчик активного времени

465 

466Отслеживает фактическое время, потраченное на активное использование Claude Code, исключая время простоя. Эта метрика увеличивается во время взаимодействия пользователя (ввод текста, чтение ответов) и во время обработки CLI (выполнение инструментов, генерация ответов AI).

467 

468**Атрибуты**:

469 

470* Все [стандартные атрибуты](#standard-attributes)

471* `type`: `"user"` для взаимодействия с клавиатурой, `"cli"` для выполнения инструментов и ответов AI

472 

473### События

474 

475Claude Code экспортирует следующие события через логи/события OpenTelemetry (когда настроен `OTEL_LOGS_EXPORTER`):

476 

477#### Атрибуты корреляции событий

478 

479Когда пользователь отправляет подсказку, Claude Code может сделать несколько вызовов API и запустить несколько инструментов. Атрибут `prompt.id` позволяет связать все эти события с одной подсказкой, которая их вызвала.

480 

481| Атрибут | Описание |

482| ----------- | -------------------------------------------------------------------------------------------------------- |

483| `prompt.id` | Идентификатор UUID v4, связывающий все события, созданные при обработке одной пользовательской подсказки |

484 

485Чтобы отследить всю активность, вызванную одной подсказкой, отфильтруйте события по определенному значению `prompt.id`. Это возвращает событие user\_prompt, любые события api\_request и любые события tool\_result, которые произошли при обработке этой подсказки.

486 

487<Note>

488 `prompt.id` намеренно исключен из метрик, потому что каждая подсказка генерирует уникальный ID, что создало бы постоянно растущее количество временных рядов. Используйте его только для анализа на уровне событий и аудита.

489</Note>

490 

491#### Событие пользовательской подсказки

492 

493Логируется, когда пользователь отправляет подсказку.

494 

495**Имя события**: `claude_code.user_prompt`

496 

497**Атрибуты**:

498 

499* Все [стандартные атрибуты](#standard-attributes)

500* `event.name`: `"user_prompt"`

501* `event.timestamp`: Временная метка ISO 8601

502* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

503* `prompt_length`: Длина подсказки

504* `prompt`: Содержимое подсказки (скрыто по умолчанию, включите с помощью `OTEL_LOG_USER_PROMPTS=1`)

505* `command_name`: Имя команды, когда подсказка вызывает одну. Встроенные и поставляемые имена команд, такие как `compact` или `debug`, выдаются как есть; псевдонимы, такие как `reset`, выдаются как введено, а не как каноническое имя. Пользовательские, плагин и MCP имена команд сворачиваются в `custom` или `mcp`, если не установлен `OTEL_LOG_TOOL_DETAILS=1`

506* `command_source`: Происхождение команды, когда присутствует: `builtin`, `custom` или `mcp`. Команды, предоставляемые плагинами, сообщают как `custom`

507 

508#### Событие результата инструмента

509 

510Логируется, когда инструмент завершает выполнение.

511 

512**Имя события**: `claude_code.tool_result`

513 

514**Атрибуты**:

515 

516* Все [стандартные атрибуты](#standard-attributes)

517* `event.name`: `"tool_result"`

518* `event.timestamp`: Временная метка ISO 8601

519* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

520* `tool_name`: Имя инструмента

521* `tool_use_id`: Уникальный идентификатор для этого вызова инструмента. Совпадает с `tool_use_id`, переданным в hooks, позволяя корреляцию между событиями OTel и данными, захваченными hooks.

522* `success`: `"true"` или `"false"`

523* `duration_ms`: Время выполнения в миллисекундах

524* `error_type`: Строка категории ошибки при сбое инструмента, такая как `"Error:ENOENT"` или `"ShellError"`

525* `error` (когда `OTEL_LOG_TOOL_DETAILS=1`): Полное сообщение об ошибке при сбое инструмента

526* `decision_type`: Либо `"accept"`, либо `"reject"`

527* `decision_source`: Источник решения. Один из `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"` или `"user_reject"`. См. [Событие решения инструмента](#tool-decision-event) для получения информации о том, что означает каждое значение.

528* `tool_input_size_bytes`: Размер JSON-сериализованного входа инструмента в байтах

529* `tool_result_size_bytes`: Размер результата инструмента в байтах

530* `mcp_server_scope`: Идентификатор области MCP сервера (для инструментов MCP)

531* `tool_parameters` (когда `OTEL_LOG_TOOL_DETAILS=1`): JSON строка, содержащая параметры, специфичные для инструмента:

532 * Для инструмента Bash: включает `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox` и `git_commit_id` (SHA коммита, когда команда `git commit` успешна)

533 * Для инструментов MCP: включает `mcp_server_name`, `mcp_tool_name`

534 * Для инструмента Skill: включает `skill_name`

535 * Для инструмента Task: включает `subagent_type`

536* `tool_input` (когда `OTEL_LOG_TOOL_DETAILS=1`): JSON-сериализованные аргументы инструмента. Отдельные значения более 512 символов усекаются, и полная нагрузка ограничена примерно 4 K символами. Применяется ко всем инструментам, включая инструменты MCP.

537 

538#### Событие запроса API

539 

540Логируется для каждого запроса API к Claude.

541 

542**Имя события**: `claude_code.api_request`

543 

544**Атрибуты**:

545 

546* Все [стандартные атрибуты](#standard-attributes)

547* `event.name`: `"api_request"`

548* `event.timestamp`: Временная метка ISO 8601

549* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

550* `model`: Используемая модель (например, "claude-sonnet-4-6")

551* `cost_usd`: Приблизительная стоимость в USD

552* `duration_ms`: Длительность запроса в миллисекундах

553* `input_tokens`: Количество входных токенов

554* `output_tokens`: Количество выходных токенов

555* `cache_read_tokens`: Количество токенов, прочитанных из кэша

556* `cache_creation_tokens`: Количество токенов, использованных для создания кэша

557* `request_id`: ID запроса Anthropic API из заголовка ответа `request-id`, такой как `"req_011..."`. Присутствует только, когда API возвращает его.

558* `speed`: `"fast"` или `"normal"`, указывающий, был ли активен быстрый режим

559* `query_source`: Подсистема, которая выдала запрос, такая как `"repl_main_thread"`, `"compact"` или имя подагента

560* `effort`: [Уровень усилий](/ru/model-config#adjust-effort-level), применяемый к запросу: `"low"`, `"medium"`, `"high"`, `"xhigh"` или `"max"`. Отсутствует, когда модель не поддерживает усилия.

561 

562#### Событие ошибки API

563 

564Логируется, когда запрос API к Claude не удается.

565 

566**Имя события**: `claude_code.api_error`

567 

568**Атрибуты**:

569 

570* Все [стандартные атрибуты](#standard-attributes)

571* `event.name`: `"api_error"`

572* `event.timestamp`: Временная метка ISO 8601

573* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

574* `model`: Используемая модель (например, "claude-sonnet-4-6")

575* `error`: Сообщение об ошибке

576* `status_code`: HTTP код состояния в виде числа. Отсутствует для ошибок, не связанных с HTTP, таких как сбои соединения.

577* `duration_ms`: Длительность запроса в миллисекундах

578* `attempt`: Общее количество попыток, включая исходный запрос (`1` означает, что повторных попыток не было)

579* `request_id`: ID запроса Anthropic API из заголовка ответа `request-id`, такой как `"req_011..."`. Присутствует только, когда API возвращает его.

580* `speed`: `"fast"` или `"normal"`, указывающий, был ли активен быстрый режим

581* `query_source`: Подсистема, которая выдала запрос, такая как `"repl_main_thread"`, `"compact"` или имя подагента

582* `effort`: [Уровень усилий](/ru/model-config#adjust-effort-level), применяемый к запросу. Отсутствует, когда модель не поддерживает усилия.

583 

584#### Событие тела запроса API

585 

586Логируется для каждой попытки запроса API, когда установлен `OTEL_LOG_RAW_API_BODIES`. Одно событие выдается за попытку, поэтому повторные попытки с скорректированными параметрами каждая производят свое собственное событие.

587 

588**Имя события**: `claude_code.api_request_body`

589 

590**Атрибуты**:

591 

592* Все [стандартные атрибуты](#standard-attributes)

593* `event.name`: `"api_request_body"`

594* `event.timestamp`: Временная метка ISO 8601

595* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

596* `body`: JSON-сериализованные параметры запроса Messages API (системная подсказка, сообщения, инструменты и т.д.), усеченные на 60 КБ. Содержимое расширенного мышления в предыдущих ходах помощника скрыто. Выдается только в встроенном режиме (`OTEL_LOG_RAW_API_BODIES=1`).

597* `body_ref`: Абсолютный путь к файлу `<dir>/<uuid>.request.json`, содержащему неусеченное тело. Выдается только в режиме файла (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

598* `body_length`: Длина неусеченного тела. UTF-8 байты, когда `OTEL_LOG_RAW_API_BODIES=file:<dir>`, или единицы кода UTF-16, когда `=1`

599* `body_truncated`: `"true"` когда произошло встроенное усечение. Отсутствует в режиме файла и когда усечение не произошло.

600* `model`: Идентификатор модели из параметров запроса

601* `query_source`: Подсистема, которая выдала запрос (например, `"compact"`)

602 

603#### Событие тела ответа API

604 

605Логируется для каждого успешного ответа API, когда установлен `OTEL_LOG_RAW_API_BODIES`.

606 

607**Имя события**: `claude_code.api_response_body`

608 

609**Атрибуты**:

610 

611* Все [стандартные атрибуты](#standard-attributes)

612* `event.name`: `"api_response_body"`

613* `event.timestamp`: Временная метка ISO 8601

614* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

615* `body`: JSON-сериализованный ответ Messages API (id, блоки содержимого, использование, причина остановки), усеченный на 60 КБ. Содержимое расширенного мышления скрыто. Выдается только в встроенном режиме (`OTEL_LOG_RAW_API_BODIES=1`).

616* `body_ref`: Абсолютный путь к файлу `<dir>/<request_id>.response.json`, содержащему неусеченное тело. Выдается только в режиме файла (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

617* `body_length`: Длина неусеченного тела. UTF-8 байты, когда `OTEL_LOG_RAW_API_BODIES=file:<dir>`, или единицы кода UTF-16, когда `=1`

618* `body_truncated`: `"true"` когда произошло встроенное усечение. Отсутствует в режиме файла и когда усечение не произошло.

619* `model`: Идентификатор модели

620* `query_source`: Подсистема, которая выдала запрос

621* `request_id`: ID запроса Anthropic API из заголовка ответа `request-id`, такой как `"req_011..."`. Присутствует только, когда API возвращает его.

622 

623#### Событие решения инструмента

624 

625Логируется, когда принимается решение о разрешении инструмента (принять/отклонить).

626 

627**Имя события**: `claude_code.tool_decision`

628 

629**Атрибуты**:

630 

631* Все [стандартные атрибуты](#standard-attributes)

632* `event.name`: `"tool_decision"`

633* `event.timestamp`: Временная метка ISO 8601

634* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

635* `tool_name`: Имя инструмента (например, "Read", "Edit", "Write", "NotebookEdit")

636* `tool_use_id`: Уникальный идентификатор для этого вызова инструмента. Совпадает с `tool_use_id`, переданным в hooks, позволяя корреляцию между событиями OTel и данными, захваченными hooks.

637* `decision`: Либо `"accept"`, либо `"reject"`

638* `source`: Источник решения:

639 * `"config"`: Решено автоматически без запроса, на основе параметров проекта, корпоративной управляемой политики, флагов `--allowedTools` или `--disallowedTools`, активного режима разрешений или потому что инструмент по своей природе безопасен.

640 * `"hook"`: Hook `PreToolUse` или `PermissionRequest` вернул решение.

641 * `"user_permanent"`: Выдается, когда пользователь выбрал "Всегда разрешить" при запросе, сохраняя правило в своих личных параметрах. Также выдается для последующих вызовов, которые соответствуют этому сохраненному правилу. Рассматривается как принятие.

642 * `"user_temporary"`: Выдается, когда пользователь выбрал "Да" или "Да, для этого сеанса" при запросе, без сохранения правила. Также выдается для последующих вызовов в том же сеансе, которые соответствуют этому разрешению в области сеанса. Рассматривается как принятие.

643 * `"user_abort"`: Выдается, когда пользователь отклонил запрос разрешения без ответа. Рассматривается как отклонение.

644 * `"user_reject"`: Выдается, когда пользователь выбрал "Нет" при запросе, или вызов соответствовал правилу отказа в их личных параметрах. Рассматривается как отклонение.

645 

646#### Событие изменения режима разрешений

647 

648Логируется, когда режим разрешений изменяется, например при циклировании Shift+Tab, выходе из Plan Mode или проверке gate автоматического режима.

649 

650**Имя события**: `claude_code.permission_mode_changed`

651 

652**Атрибуты**:

653 

654* Все [стандартные атрибуты](#standard-attributes)

655* `event.name`: `"permission_mode_changed"`

656* `event.timestamp`: Временная метка ISO 8601

657* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

658* `from_mode`: Предыдущий режим разрешений, например `"default"`, `"plan"`, `"acceptEdits"`, `"auto"` или `"bypassPermissions"`

659* `to_mode`: Новый режим разрешений

660* `trigger`: Что вызвало изменение. Один из `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"` или `"auto_opt_in"`. Отсутствует, когда переход исходит из SDK или моста

661 

662#### Событие аутентификации

663 

664Логируется, когда `/login` или `/logout` завершается.

665 

666**Имя события**: `claude_code.auth`

667 

668**Атрибуты**:

669 

670* Все [стандартные атрибуты](#standard-attributes)

671* `event.name`: `"auth"`

672* `event.timestamp`: Временная метка ISO 8601

673* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

674* `action`: `"login"` или `"logout"`

675* `success`: `"true"` или `"false"`

676* `auth_method`: Метод аутентификации, такой как `"oauth"`

677* `error_category`: Категориальный вид ошибки при сбое действия. Исходное сообщение об ошибке никогда не включается

678* `status_code`: HTTP код состояния в виде строки при сбое действия с ошибкой HTTP

679 

680#### Событие подключения MCP сервера

681 

682Логируется, когда MCP сервер подключается, отключается или не удается подключиться.

683 

684**Имя события**: `claude_code.mcp_server_connection`

685 

686**Атрибуты**:

687 

688* Все [стандартные атрибуты](#standard-attributes)

689* `event.name`: `"mcp_server_connection"`

690* `event.timestamp`: Временная метка ISO 8601

691* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

692* `status`: `"connected"`, `"failed"` или `"disconnected"`

693* `transport_type`: Транспорт сервера, такой как `"stdio"`, `"sse"` или `"http"`

694* `server_scope`: Область, в которой настроен сервер, такая как `"user"`, `"project"` или `"local"`

695* `duration_ms`: Длительность попытки подключения в миллисекундах

696* `error_code`: Код ошибки при сбое подключения

697* `server_name` (когда `OTEL_LOG_TOOL_DETAILS=1`): Настроенное имя сервера

698* `error` (когда `OTEL_LOG_TOOL_DETAILS=1`): Полное сообщение об ошибке при сбое подключения

699 

700#### Событие внутренней ошибки

701 

702Логируется, когда Claude Code перехватывает неожиданную внутреннюю ошибку. Записываются только имя класса ошибки и код в стиле errno. Сообщение об ошибке и трассировка стека никогда не включаются. Это событие не выдается при запуске против Bedrock, Vertex или Foundry, или когда установлен `DISABLE_ERROR_REPORTING`.

703 

704**Имя события**: `claude_code.internal_error`

705 

706**Атрибуты**:

707 

708* Все [стандартные атрибуты](#standard-attributes)

709* `event.name`: `"internal_error"`

710* `event.timestamp`: Временная метка ISO 8601

711* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

712* `error_name`: Имя класса ошибки, такой как `"TypeError"` или `"SyntaxError"`

713* `error_code`: Код errno Node.js, такой как `"ENOENT"`, когда присутствует в ошибке

714 

715#### Событие установки плагина

716 

717Логируется, когда плагин завершает установку, как из команды CLI `claude plugin install`, так и из интерактивного UI `/plugin`.

718 

719**Имя события**: `claude_code.plugin_installed`

720 

721**Атрибуты**:

722 

723* Все [стандартные атрибуты](#standard-attributes)

724* `event.name`: `"plugin_installed"`

725* `event.timestamp`: Временная метка ISO 8601

726* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

727* `marketplace.is_official`: `"true"` если маркетплейс является официальным маркетплейсом Anthropic, `"false"` в противном случае

728* `install.trigger`: `"cli"` или `"ui"`

729* `plugin.name`: Имя установленного плагина. Для сторонних маркетплейсов это включается только, когда `OTEL_LOG_TOOL_DETAILS=1`

730* `plugin.version`: Версия плагина, когда объявлена в записи маркетплейса. Для сторонних маркетплейсов это включается только, когда `OTEL_LOG_TOOL_DETAILS=1`

731* `marketplace.name`: Маркетплейс, из которого был установлен плагин. Для сторонних маркетплейсов это включается только, когда `OTEL_LOG_TOOL_DETAILS=1`

732 

733#### Событие активации навыка

734 

735Логируется, когда навык вызывается, будь то Claude вызывает его через инструмент Skill или вы запускаете его как команду `/`.

736 

737**Имя события**: `claude_code.skill_activated`

738 

739**Атрибуты**:

740 

741* Все [стандартные атрибуты](#standard-attributes)

742* `event.name`: `"skill_activated"`

743* `event.timestamp`: Временная метка ISO 8601

744* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

745* `skill.name`: Имя навыка. Для определяемых пользователем и сторонних плагин навыков значение является заполнителем `"custom_skill"`, если не установлен `OTEL_LOG_TOOL_DETAILS=1`

746* `invocation_trigger`: Как был вызван навык (`"user-slash"`, `"claude-proactive"` или `"nested-skill"`)

747* `skill.source`: Откуда был загружен навык (например, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)

748* `plugin.name` (когда `OTEL_LOG_TOOL_DETAILS=1` или плагин из официального маркетплейса): Имя владельца плагина, когда навык предоставляется плагином

749* `marketplace.name` (когда `OTEL_LOG_TOOL_DETAILS=1` или плагин из официального маркетплейса): Маркетплейс владельца плагина, когда навык предоставляется плагином

750 

751#### Событие упоминания @

752 

753Логируется, когда Claude Code разрешает упоминание `@` в подсказке. Не каждое упоминание выдает событие: пути раннего выхода, такие как отказ в разрешении, файлы большого размера, вложения ссылок PDF и сбои при перечислении каталогов, возвращаются без логирования.

754 

755**Имя события**: `claude_code.at_mention`

756 

757**Атрибуты**:

758 

759* Все [стандартные атрибуты](#standard-attributes)

760* `event.name`: `"at_mention"`

761* `event.timestamp`: Временная метка ISO 8601

762* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

763* `mention_type`: Тип упоминания (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`)

764* `success`: Было ли упоминание успешно разрешено (`"true"` или `"false"`)

765 

766#### Событие исчерпания повторных попыток API

767 

768Логируется один раз, когда запрос API не удается после более чем одной попытки. Выдается вместе с финальным событием `api_error`.

769 

770**Имя события**: `claude_code.api_retries_exhausted`

771 

772**Атрибуты**:

773 

774* Все [стандартные атрибуты](#standard-attributes)

775* `event.name`: `"api_retries_exhausted"`

776* `event.timestamp`: Временная метка ISO 8601

777* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

778* `model`: Используемая модель

779* `error`: Финальное сообщение об ошибке

780* `status_code`: HTTP код состояния в виде числа. Отсутствует для ошибок, не связанных с HTTP.

781* `total_attempts`: Общее количество попыток

782* `total_retry_duration_ms`: Общее время в реальном времени по всем попыткам

783* `speed`: `"fast"` или `"normal"`

784 

785#### Событие начала выполнения hook

786 

787Логируется, когда один или несколько hooks начинают выполняться для события hook.

788 

789**Имя события**: `claude_code.hook_execution_start`

790 

791**Атрибуты**:

792 

793* Все [стандартные атрибуты](#standard-attributes)

794* `event.name`: `"hook_execution_start"`

795* `event.timestamp`: Временная метка ISO 8601

796* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

797* `hook_event`: Тип события hook, такой как `"PreToolUse"` или `"PostToolUse"`

798* `hook_name`: Полное имя hook, включая matcher, такой как `"PreToolUse:Write"`

799* `num_hooks`: Количество соответствующих команд hook

800* `managed_only`: `"true"` когда разрешены только управляемые политики hooks

801* `hook_source`: `"policySettings"` или `"merged"`

802* `hook_definitions`: JSON-сериализованная конфигурация hook. Включается только, когда включены как детальная бета-трассировка, так и `OTEL_LOG_TOOL_DETAILS=1`

803 

804#### Событие завершения выполнения hook

805 

806Логируется, когда все hooks для события hook завершены.

807 

808**Имя события**: `claude_code.hook_execution_complete`

809 

810**Атрибуты**:

811 

812* Все [стандартные атрибуты](#standard-attributes)

813* `event.name`: `"hook_execution_complete"`

814* `event.timestamp`: Временная метка ISO 8601

815* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

816* `hook_event`: Тип события hook

817* `hook_name`: Полное имя hook, включая matcher

818* `num_hooks`: Количество соответствующих команд hook

819* `num_success`: Количество, которые завершились успешно

820* `num_blocking`: Количество, которые вернули решение блокировки

821* `num_non_blocking_error`: Количество, которые не удались без блокировки

822* `num_cancelled`: Количество, отмененные до завершения

823* `total_duration_ms`: Длительность в реальном времени всех соответствующих hooks

824* `managed_only`: `"true"` когда разрешены только управляемые политики hooks

825* `hook_source`: `"policySettings"` или `"merged"`

826* `hook_definitions`: JSON-сериализованная конфигурация hook. Включается только, когда включены как детальная бета-трассировка, так и `OTEL_LOG_TOOL_DETAILS=1`

827 

828#### Событие компактирования

829 

830Логируется, когда компактирование разговора завершается.

831 

832**Имя события**: `claude_code.compaction`

833 

834**Атрибуты**:

835 

836* Все [стандартные атрибуты](#standard-attributes)

837* `event.name`: `"compaction"`

838* `event.timestamp`: Временная метка ISO 8601

839* `event.sequence`: монотонно возрастающий счетчик для упорядочивания событий в сеансе

840* `trigger`: `"auto"` или `"manual"`

841* `success`: `"true"` или `"false"`

842* `duration_ms`: Длительность компактирования

843* `pre_tokens`: Приблизительное количество токенов до компактирования

844* `post_tokens`: Приблизительное количество токенов после компактирования

845* `error`: Сообщение об ошибке при сбое компактирования

846 

847## Интерпретация данных метрик и событий

848 

849Экспортируемые метрики и события поддерживают ряд анализов:

850 

851### Мониторинг использования

852 

853| Метрика | Возможность анализа |

854| ------------------------------------------------------------- | ------------------------------------------------------------------ |

855| `claude_code.token.usage` | Разбить по `type` (input/output), пользователю, команде или модели |

856| `claude_code.session.count` | Отслеживать принятие и вовлеченность с течением времени |

857| `claude_code.lines_of_code.count` | Измерить производительность, отслеживая добавления/удаления кода |

858| `claude_code.commit.count` & `claude_code.pull_request.count` | Понять влияние на рабочие процессы разработки |

859 

860### Мониторинг затрат

861 

862Метрика `claude_code.cost.usage` помогает с:

863 

864* Отслеживанием тенденций использования по командам или отдельным лицам

865* Выявлением сеансов с высоким использованием для оптимизации

866 

867<Note>

868 Метрики затрат являются приблизительными. Для официальных данных о выставлении счетов обратитесь к вашему поставщику API (Claude Console, Amazon Bedrock или Google Cloud Vertex).

869</Note>

870 

871### Оповещения и сегментация

872 

873Распространенные оповещения, которые следует рассмотреть:

874 

875* Скачки затрат

876* Необычное потребление токенов

877* Высокий объем сеансов от конкретных пользователей

878 

879Все метрики можно сегментировать по `user.account_uuid`, `user.account_id`, `organization.id`, `session.id`, `model` и `app.version`.

880 

881### Обнаружение исчерпания повторных попыток

882 

883Claude Code повторяет неудачные запросы API внутри и выдает одно событие `claude_code.api_error` только после того, как сдается, поэтому само событие является терминальным сигналом для этого запроса. Промежуточные повторные попытки не логируются как отдельные события.

884 

885Атрибут `attempt` на событии записывает, сколько попыток было сделано в общей сложности. Значение больше `CLAUDE_CODE_MAX_RETRIES` (по умолчанию `10`) указывает, что запрос исчерпал все повторные попытки при переходной ошибке. Более низкое значение указывает на неповторяемую ошибку, такую как ответ `400`.

886 

887Чтобы различить сеанс, который восстановился, от того, который застопорился, сгруппируйте события по `session.id` и проверьте, существует ли более позднее событие `api_request` после ошибки.

888 

889### Анализ событий

890 

891Данные событий предоставляют подробные сведения о взаимодействиях Claude Code:

892 

893**Паттерны использования инструментов**: анализируйте события результатов инструментов для выявления:

894 

895* Наиболее часто используемых инструментов

896* Показателей успеха инструментов

897* Среднего времени выполнения инструментов

898* Паттернов ошибок по типам инструментов

899 

900**Мониторинг производительности**: отслеживайте длительность запросов API и время выполнения инструментов для выявления узких мест производительности.

901 

902## Рассмотрения бэкенда

903 

904Выбор вашего бэкенда метрик, логов и трассировок определяет типы анализов, которые вы можете выполнять:

905 

906### Для метрик

907 

908* **Базы данных временных рядов (например, Prometheus)**: Расчеты скорости, агрегированные метрики

909* **Колончатые хранилища (например, ClickHouse)**: Сложные запросы, анализ уникальных пользователей

910* **Полнофункциональные платформы наблюдаемости (например, Honeycomb, Datadog)**: Продвинутые запросы, визуализация, оповещения

911 

912### Для событий/логов

913 

914* **Системы агрегации логов (например, Elasticsearch, Loki)**: Полнотекстовый поиск, анализ логов

915* **Колончатые хранилища (например, ClickHouse)**: Анализ структурированных событий

916* **Полнофункциональные платформы наблюдаемости (например, Honeycomb, Datadog)**: Корреляция между метриками и событиями

917 

918### Для трассировок

919 

920Выберите бэкенд, поддерживающий хранилище распределенных трассировок и корреляцию span:

921 

922* **Системы распределенной трассировки (например, Jaeger, Zipkin, Grafana Tempo)**: Визуализация span, водопады запросов, анализ задержки

923* **Полнофункциональные платформы наблюдаемости (например, Honeycomb, Datadog)**: Поиск трассировок и корреляция с метриками и логами

924 

925Для организаций, требующих метрик Daily/Weekly/Monthly Active User (DAU/WAU/MAU), рассмотрите бэкенды, поддерживающие эффективные запросы уникальных значений.

926 

927## Информация о сервисе

928 

929Все метрики и события экспортируются со следующими атрибутами ресурса:

930 

931* `service.name`: `claude-code`

932* `service.version`: Текущая версия Claude Code

933* `os.type`: Тип операционной системы (например, `linux`, `darwin`, `windows`)

934* `os.version`: Строка версии операционной системы

935* `host.arch`: Архитектура хоста (например, `amd64`, `arm64`)

936* `wsl.version`: Номер версии WSL (присутствует только при запуске на Windows Subsystem for Linux)

937* Имя счетчика: `com.anthropic.claude_code`

938 

939## Ресурсы для измерения ROI

940 

941Для полного руководства по измерению возврата инвестиций для Claude Code, включая настройку телеметрии, анализ затрат, метрики производительности и автоматизированные отчеты, см. [Руководство по измерению ROI Claude Code](https://github.com/anthropics/claude-code-monitoring-guide). Этот репозиторий предоставляет готовые конфигурации Docker Compose, настройки Prometheus и OpenTelemetry, а также шаблоны для создания отчетов о производительности, интегрированные с такими инструментами, как Linear.

942 

943## Безопасность и конфиденциальность

944 

945* Экспорт OpenTelemetry на ваш бэкенд является добровольным и требует явной конфигурации. Информацию об отдельной операционной телеметрии Anthropic и о том, как её отключить, см. в разделе [Data usage](/ru/data-usage#telemetry-services)

946* Содержимое файлов в исходном виде и фрагменты кода не включаются в метрики или события. Span трассировок — это отдельный путь данных: см. пункт `OTEL_LOG_TOOL_CONTENT` ниже

947* При аутентификации через OAuth `user.email` включается в атрибуты телеметрии. Если это вызывает беспокойство для вашей организации, работайте с вашим бэкендом телеметрии для фильтрации или редактирования этого поля

948* Содержимое пользовательской подсказки не собирается по умолчанию. Записывается только длина подсказки. Чтобы включить содержимое подсказки, установите `OTEL_LOG_USER_PROMPTS=1`

949* Аргументы входных данных инструмента и параметры не логируются по умолчанию. Чтобы включить их, установите `OTEL_LOG_TOOL_DETAILS=1`. Когда включено, события `tool_result` включают атрибут `tool_parameters` с командами Bash, именами MCP сервера и инструмента и именами навыков, плюс атрибут `tool_input` с путями к файлам, URL-адресами, шаблонами поиска и другими аргументами. События `user_prompt` включают буквальное `command_name` для пользовательских, plugin и MCP команд. Span трассировки включают тот же атрибут `tool_input` и атрибуты, полученные из входных данных, такие как `file_path`. Отдельные значения более 512 символов усекаются, и общее количество ограничено примерно 4 K символами, но аргументы могут по-прежнему содержать конфиденциальные значения. Настройте ваш бэкенд телеметрии для фильтрации или редактирования этих атрибутов по мере необходимости

950* Входные и выходные данные инструмента не логируются в span событиях по умолчанию. Чтобы включить их, установите `OTEL_LOG_TOOL_CONTENT=1`. Когда включено, события span включают полное содержимое входных и выходных данных инструмента, усеченное на 60 КБ на span. Это может включать содержимое исходного файла из результатов инструмента Read и выходные данные команды Bash. Настройте ваш бэкенд телеметрии для фильтрации или редактирования этих атрибутов по мере необходимости

951* Тела запроса и ответа Anthropic Messages API в исходном виде не логируются по умолчанию. Чтобы включить их, установите `OTEL_LOG_RAW_API_BODIES`. С `=1` каждый вызов API выдает события логов `api_request_body` и `api_response_body`, чей атрибут `body` является JSON-сериализованной нагрузкой, усеченной на 60 КБ. С `=file:<dir>`, неусеченные тела записываются в файлы `.request.json` и `.response.json` в этом каталоге, и события несут путь `body_ref` вместо встроенного тела. Отправьте каталог с коллектором логов или sidecar, а не через поток телеметрии. В обоих режимах тела содержат полную историю разговора (системная подсказка, каждый предыдущий ход пользователя и помощника, результаты инструментов), поэтому включение этого подразумевает согласие со всем, что раскрыли бы другие флаги содержимого `OTEL_LOG_*`. Содержимое расширенного мышления Claude всегда скрыто из этих тел независимо от других параметров

952 

953## Мониторинг Claude Code на Amazon Bedrock

954 

955Для подробного руководства по мониторингу использования Claude Code для Amazon Bedrock см. [Реализация мониторинга Claude Code (Bedrock)](https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock/blob/main/assets/docs/MONITORING.md).

network-config.md +132 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Конфигурация сети для предприятия

6 

7> Настройте Claude Code для корпоративных сред с прокси-серверами, пользовательскими центрами сертификации (CA) и взаимной аутентификацией Transport Layer Security (mTLS).

8 

9Claude Code поддерживает различные конфигурации сети и безопасности предприятия через переменные окружения. Это включает маршрутизацию трафика через корпоративные прокси-серверы, доверие пользовательским центрам сертификации (CA) и аутентификацию с помощью сертификатов взаимного Transport Layer Security (mTLS) для повышенной безопасности.

10 

11<Note>

12 Все переменные окружения, показанные на этой странице, также можно настроить в [`settings.json`](/ru/settings).

13</Note>

14 

15## Конфигурация прокси

16 

17### Переменные окружения

18 

19Claude Code соответствует стандартным переменным окружения прокси:

20 

21```bash theme={null}

22# HTTPS прокси (рекомендуется)

23export HTTPS_PROXY=https://proxy.example.com:8080

24 

25# HTTP прокси (если HTTPS недоступен)

26export HTTP_PROXY=http://proxy.example.com:8080

27 

28# Обход прокси для конкретных запросов - формат с разделением пробелом

29export NO_PROXY="localhost 192.168.1.1 example.com .example.com"

30# Обход прокси для конкретных запросов - формат с разделением запятой

31export NO_PROXY="localhost,192.168.1.1,example.com,.example.com"

32# Обход прокси для всех запросов

33export NO_PROXY="*"

34```

35 

36<Note>

37 Claude Code не поддерживает SOCKS прокси.

38</Note>

39 

40### Базовая аутентификация

41 

42Если ваш прокси требует базовую аутентификацию, включите учетные данные в URL прокси:

43 

44```bash theme={null}

45export HTTPS_PROXY=http://username:password@proxy.example.com:8080

46```

47 

48<Warning>

49 Избегайте жесткого кодирования паролей в скриптах. Используйте переменные окружения или безопасное хранилище учетных данных вместо этого.

50</Warning>

51 

52<Tip>

53 Для прокси, требующих расширенную аутентификацию (NTLM, Kerberos и т. д.), рассмотрите использование сервиса LLM Gateway, который поддерживает ваш метод аутентификации.

54</Tip>

55 

56## Хранилище сертификатов CA

57 

58По умолчанию Claude Code доверяет как своему встроенному набору сертификатов Mozilla CA, так и хранилищу сертификатов вашей операционной системы. Корпоративные прокси с TLS-инспекцией, такие как CrowdStrike Falcon и Zscaler, работают без дополнительной конфигурации, когда их корневой сертификат установлен в хранилище доверия ОС.

59 

60<Note>

61 Интеграция системного хранилища CA требует собственного двоичного распределения Claude Code. При запуске на среде выполнения Node.js системное хранилище CA не объединяется автоматически. В этом случае установите `NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem` для доверия корневому CA предприятия.

62</Note>

63 

64`CLAUDE_CODE_CERT_STORE` принимает список источников, разделенный запятыми. Признанные значения: `bundled` для набора Mozilla CA, поставляемого с Claude Code, и `system` для хранилища доверия операционной системы. По умолчанию используется `bundled,system`.

65 

66Для доверия только встроенному набору Mozilla CA:

67 

68```bash theme={null}

69export CLAUDE_CODE_CERT_STORE=bundled

70```

71 

72Для доверия только хранилищу сертификатов ОС:

73 

74```bash theme={null}

75export CLAUDE_CODE_CERT_STORE=system

76```

77 

78<Note>

79 `CLAUDE_CODE_CERT_STORE` не имеет выделенного ключа схемы `settings.json`. Установите его через блок `env` в `~/.claude/settings.json` или непосредственно в окружении процесса.

80</Note>

81 

82## Пользовательские сертификаты CA

83 

84Если ваша корпоративная среда использует пользовательский CA, настройте Claude Code для доверия ему напрямую:

85 

86```bash theme={null}

87export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem

88```

89 

90## Аутентификация mTLS

91 

92Для корпоративных сред, требующих аутентификацию с помощью сертификата клиента:

93 

94```bash theme={null}

95# Сертификат клиента для аутентификации

96export CLAUDE_CODE_CLIENT_CERT=/path/to/client-cert.pem

97 

98# Приватный ключ клиента

99export CLAUDE_CODE_CLIENT_KEY=/path/to/client-key.pem

100 

101# Опционально: Парольная фраза для зашифрованного приватного ключа

102export CLAUDE_CODE_CLIENT_KEY_PASSPHRASE="your-passphrase"

103```

104 

105## Требования к доступу в сети

106 

107Claude Code требует доступ к следующим URL. Добавьте их в белый список в конфигурации прокси и правилах брандмауэра, особенно в контейнеризованных или ограниченных сетевых средах.

108 

109| URL | Требуется для |

110| ------------------------------ | ------------------------------------------------------------------------------------------------------------- |

111| `api.anthropic.com` | Запросы Claude API |

112| `claude.ai` | Аутентификация учетной записи claude.ai |

113| `platform.claude.com` | Аутентификация учетной записи Anthropic Console |

114| `downloads.claude.ai` | Загрузки исполняемых файлов плагинов; встроенный установщик и встроенное автоматическое обновление |

115| `storage.googleapis.com` | {/* max-version: 2.1.115 */}Встроенный установщик и встроенное автоматическое обновление в версиях до 2.1.116 |

116| `bridge.claudeusercontent.com` | Мост WebSocket расширения [Claude в Chrome](/ru/chrome) |

117 

118Если вы устанавливаете Claude Code через npm или управляете собственным распределением бинарных файлов, конечным пользователям может не потребоваться доступ к `downloads.claude.ai` или `storage.googleapis.com`.

119 

120Claude Code также отправляет дополнительную операционную телеметрию по умолчанию, которую вы можете отключить с помощью переменных окружения. См. [Услуги телеметрии](/ru/data-usage#telemetry-services), чтобы узнать, как отключить её перед окончательным формированием вашего белого списка.

121 

122При использовании [Amazon Bedrock](/ru/amazon-bedrock), [Google Vertex AI](/ru/google-vertex-ai) или [Microsoft Foundry](/ru/microsoft-foundry) трафик модели и аутентификация идут к вашему поставщику вместо `api.anthropic.com`, `claude.ai` или `platform.claude.com`. Инструмент WebFetch по-прежнему вызывает `api.anthropic.com` для своей [проверки безопасности домена](/ru/data-usage#webfetch-domain-safety-check), если вы не установите `skipWebFetchPreflight: true` в [параметрах](/ru/settings).

123 

124[Claude Code в веб-версии](/ru/claude-code-on-the-web) и [Code Review](/ru/code-review) подключаются к вашим репозиториям из управляемой Anthropic инфраструктуры. Если ваша организация GitHub Enterprise Cloud ограничивает доступ по IP-адресу, включите [наследование списка разрешенных IP для установленных GitHub Apps](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#allowing-access-by-github-apps). GitHub App Claude регистрирует свои диапазоны IP, поэтому включение этого параметра позволяет получить доступ без ручной конфигурации. Чтобы [добавить диапазоны в список разрешенных вручную](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#adding-an-allowed-ip-address) вместо этого, или для настройки других брандмауэров, см. [IP-адреса Anthropic API](https://platform.claude.com/docs/en/api/ip-addresses).

125 

126Для самостоятельно размещаемых экземпляров [GitHub Enterprise Server](/ru/github-enterprise-server) за брандмауэром добавьте в белый список те же [IP-адреса Anthropic API](https://platform.claude.com/docs/en/api/ip-addresses), чтобы инфраструктура Anthropic могла достичь вашего хоста GHES для клонирования репозиториев и публикации комментариев к рецензиям.

127 

128## Дополнительные ресурсы

129 

130* [Параметры Claude Code](/ru/settings)

131* [Справочник переменных окружения](/ru/env-vars)

132* [Руководство по устранению неполадок](/ru/troubleshooting)

output-styles.md +90 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Output styles

6 

7> Адаптируйте Claude Code для использования за пределами разработки программного обеспечения

8 

9Output styles позволяют вам использовать Claude Code в качестве любого типа агента, сохраняя при этом его основные возможности, такие как запуск локальных скриптов, чтение/запись файлов и отслеживание TODO.

10 

11## Встроенные output styles

12 

13**Default** output style Claude Code — это существующий системный prompt, разработанный для эффективного выполнения задач разработки программного обеспечения.

14 

15Существует два дополнительных встроенных output style, сосредоточенных на обучении вас кодовой базе и тому, как работает Claude:

16 

17* **Explanatory**: предоставляет образовательные "Insights" между помощью в выполнении задач разработки программного обеспечения. Помогает вам понять выбор реализации и паттерны кодовой базы.

18 

19* **Learning**: совместный режим обучения на практике, в котором Claude не только будет делиться "Insights" во время кодирования, но также попросит вас внести небольшие, стратегические фрагменты кода самостоятельно. Claude Code добавит маркеры `TODO(human)` в ваш код для реализации.

20 

21## Как работают output styles

22 

23Output styles напрямую изменяют системный prompt Claude Code.

24 

25* Пользовательские output styles исключают инструкции по кодированию (такие как проверка кода с помощью тестов), если только `keep-coding-instructions` не установлен в true.

26* Все output styles имеют свои собственные пользовательские инструкции, добавленные в конец системного prompt.

27* Все output styles вызывают напоминания для Claude придерживаться инструкций output style во время разговора.

28 

29Использование токенов зависит от стиля. Добавление инструкций в системный prompt увеличивает входные токены, хотя prompt caching снижает эту стоимость после первого запроса в сеансе. Встроенные стили Explanatory и Learning по замыслу производят более длинные ответы, чем Default, что увеличивает выходные токены. Для пользовательских стилей использование выходных токенов зависит от того, что ваши инструкции говорят Claude производить.

30 

31## Измените ваш output style

32 

33Запустите `/config` и выберите **Output style**, чтобы выбрать стиль из меню. Ваш выбор сохраняется в `.claude/settings.local.json` на [локальном уровне проекта](/ru/settings).

34 

35Чтобы установить стиль без меню, отредактируйте поле `outputStyle` непосредственно в файле настроек:

36 

37```json theme={null}

38{

39 "outputStyle": "Explanatory"

40}

41```

42 

43Поскольку output style устанавливается в системный prompt при запуске сеанса, изменения вступают в силу при следующем запуске нового сеанса. Это сохраняет стабильность системного prompt на протяжении всего разговора, чтобы prompt caching мог снизить задержку и стоимость.

44 

45## Создайте пользовательский output style

46 

47Пользовательские output styles — это файлы Markdown с frontmatter и текстом, который будет добавлен в системный prompt:

48 

49```markdown theme={null}

50---

51name: My Custom Style

52description:

53 A brief description of what this style does, to be displayed to the user

54---

55 

56# Custom Style Instructions

57 

58You are an interactive CLI tool that helps users with software engineering

59tasks. [Your custom instructions here...]

60 

61## Specific Behaviors

62 

63[Define how the assistant should behave in this style...]

64```

65 

66Вы можете сохранять эти файлы на уровне пользователя (`~/.claude/output-styles`) или на уровне проекта (`.claude/output-styles`).

67 

68### Frontmatter

69 

70Файлы output style поддерживают frontmatter для указания метаданных:

71 

72| Frontmatter | Назначение | По умолчанию |

73| :------------------------- | :-------------------------------------------------------------------------- | :------------------------- |

74| `name` | Имя output style, если не имя файла | Наследуется из имени файла |

75| `description` | Описание output style, отображаемое в средстве выбора `/config` | Нет |

76| `keep-coding-instructions` | Сохранять ли части системного prompt Claude Code, связанные с кодированием. | false |

77 

78## Сравнения со связанными функциями

79 

80### Output Styles vs. CLAUDE.md vs. --append-system-prompt

81 

82Output styles полностью "отключают" части системного prompt Claude Code, специфичные для разработки программного обеспечения. Ни CLAUDE.md, ни `--append-system-prompt` не редактируют системный prompt Claude Code по умолчанию. CLAUDE.md добавляет содержимое как пользовательское сообщение *после* системного prompt Claude Code по умолчанию. `--append-system-prompt` добавляет содержимое в системный prompt.

83 

84### Output Styles vs. [Agents](/ru/sub-agents)

85 

86Output styles напрямую влияют на основной цикл агента и влияют только на системный prompt. Agents вызываются для обработки конкретных задач и могут включать дополнительные параметры, такие как модель для использования, доступные им инструменты и некоторый контекст о том, когда использовать агента.

87 

88### Output Styles vs. [Skills](/ru/skills)

89 

90Output styles изменяют способ ответа Claude (форматирование, тон, структура) и всегда активны после выбора. Skills — это специфичные для задач prompts, которые вы вызываете с помощью `/skill-name` или которые Claude загружает автоматически при необходимости. Используйте output styles для согласованных предпочтений форматирования; используйте skills для повторно используемых рабочих процессов и задач.

overview.md +875 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Обзор Claude Code

6 

7> Claude Code — это агентский инструмент кодирования, который читает вашу кодовую базу, редактирует файлы, выполняет команды и интегрируется с вашими инструментами разработки. Доступен в вашем терминале, IDE, приложении для рабочего стола и браузере.

8 

9export const InstallConfigurator = ({defaultSurface = 'terminal'}) => {

10 const TERM = {

11 mac: {

12 label: 'macOS / Linux',

13 cmd: 'curl -fsSL https://claude.ai/install.sh | bash'

14 },

15 win: {

16 label: 'Windows'

17 },

18 brew: {

19 label: 'Homebrew',

20 cmd: 'brew install --cask claude-code'

21 },

22 winget: {

23 label: 'WinGet',

24 cmd: 'winget install Anthropic.ClaudeCode'

25 }

26 };

27 const WIN_VARIANTS = {

28 ps: 'irm https://claude.ai/install.ps1 | iex',

29 cmd: 'curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd'

30 };

31 const TABS = [{

32 key: 'terminal',

33 label: 'Terminal'

34 }, {

35 key: 'desktop',

36 label: 'Desktop'

37 }, {

38 key: 'vscode',

39 label: 'VS Code'

40 }, {

41 key: 'jetbrains',

42 label: 'JetBrains'

43 }];

44 const ALT_TARGETS = {

45 desktop: {

46 name: 'Desktop',

47 tagline: 'The full agent in a native app for macOS and Windows.',

48 installLabel: 'Download the app',

49 installHref: 'https://claude.com/download?utm_source=claude_code&utm_medium=docs&utm_content=configurator_desktop_download',

50 guideHref: '/en/desktop-quickstart'

51 },

52 vscode: {

53 name: 'VS Code',

54 tagline: 'Review diffs, manage context, and chat without leaving your editor.',

55 installLabel: 'Install from Marketplace',

56 installHref: 'https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code',

57 altCmd: 'code --install-extension anthropic.claude-code',

58 guideHref: '/en/vs-code'

59 },

60 jetbrains: {

61 name: 'JetBrains',

62 tagline: 'Native plugin for IntelliJ, PyCharm, WebStorm, and other JetBrains IDEs.',

63 installLabel: 'Install from Marketplace',

64 installHref: 'https://plugins.jetbrains.com/plugin/27310-claude-code-beta-',

65 guideHref: '/en/jetbrains'

66 }

67 };

68 const PROVIDERS = [{

69 key: 'anthropic',

70 label: 'Anthropic'

71 }, {

72 key: 'bedrock',

73 label: 'Amazon Bedrock'

74 }, {

75 key: 'foundry',

76 label: 'Microsoft Foundry'

77 }, {

78 key: 'vertex',

79 label: 'Google Vertex AI'

80 }];

81 const PROVIDER_NOTICE = {

82 bedrock: <>

83 <strong>Configure your AWS account first.</strong> Running on Bedrock

84 requires model access enabled in the AWS console and IAM credentials.{' '}

85 <a href="/en/amazon-bedrock">Bedrock setup guide →</a>

86 </>,

87 vertex: <>

88 <strong>Configure your GCP project first.</strong> Running on Vertex AI

89 requires the Vertex API enabled and a service account with the right

90 permissions.{' '}

91 <a href="/en/google-vertex-ai">Vertex setup guide →</a>

92 </>,

93 foundry: <>

94 <strong>Configure your Azure resources first.</strong> Running on

95 Microsoft Foundry requires an Azure subscription with a Foundry resource

96 and model deployments provisioned.{' '}

97 <a href="/en/microsoft-foundry">Foundry setup guide →</a>

98 </>

99 };

100 const iconCheck = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

101 <polyline points="20 6 9 17 4 12" />

102 </svg>;

103 const iconCopy = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

104 <rect x="9" y="9" width="13" height="13" rx="2" />

105 <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />

106 </svg>;

107 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

108 <line x1="5" y1="12" x2="19" y2="12" />

109 <polyline points="12 5 19 12 12 19" />

110 </svg>;

111 const iconArrowUpRight = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

112 <line x1="7" y1="17" x2="17" y2="7" />

113 <polyline points="7 7 17 7 17 17" />

114 </svg>;

115 const iconInfo = (size = 16) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

116 <circle cx="12" cy="12" r="10" />

117 <line x1="12" y1="16" x2="12" y2="12" />

118 <line x1="12" y1="8" x2="12.01" y2="8" />

119 </svg>;

120 const [target, setTarget] = useState(defaultSurface);

121 const [team, setTeam] = useState(false);

122 const [provider, setProvider] = useState('anthropic');

123 const [pkg, setPkg] = useState(() => (/Win/).test(navigator.userAgent) ? 'win' : 'mac');

124 const [winCmd, setWinCmd] = useState(false);

125 const [copied, setCopied] = useState(null);

126 const copyTimer = useRef(null);

127 const handleCopy = async (text, key) => {

128 try {

129 await navigator.clipboard.writeText(text);

130 } catch {

131 const ta = document.createElement('textarea');

132 ta.value = text;

133 document.body.appendChild(ta);

134 ta.select();

135 document.execCommand('copy');

136 document.body.removeChild(ta);

137 }

138 clearTimeout(copyTimer.current);

139 setCopied(key);

140 copyTimer.current = setTimeout(() => setCopied(null), 1800);

141 };

142 const cardBodyCmd = (cmd, prompt) => {

143 const on = copied === 'term';

144 return <div className="cc-ic-card-body">

145 <span className="cc-ic-prompt">{prompt || '$'}</span>

146 <div className="cc-ic-cmd">{cmd}</div>

147 <button type="button" className={'cc-ic-copy' + (on ? ' cc-ic-copied' : '')} onClick={() => handleCopy(cmd, 'term')}>

148 {on ? iconCheck(13) : iconCopy(13)}

149 <span>{on ? 'Copied' : 'Copy'}</span>

150 </button>

151 </div>;

152 };

153 const isWinInstaller = pkg === 'win';

154 const isWinPrompt = pkg === 'win' || pkg === 'winget';

155 const terminalCmd = isWinInstaller ? WIN_VARIANTS[winCmd ? 'cmd' : 'ps'] : TERM[pkg].cmd;

156 const alt = ALT_TARGETS[target];

157 const showNotice = team && provider !== 'anthropic';

158 const STYLES = `

159.cc-ic {

160 --ic-slate: #141413;

161 --ic-clay: #d97757;

162 --ic-clay-deep: #c6613f;

163 --ic-gray-000: #ffffff;

164 --ic-gray-150: #f0eee6;

165 --ic-gray-550: #73726c;

166 --ic-gray-700: #3d3d3a;

167 --ic-border-subtle: rgba(31, 30, 29, 0.08);

168 --ic-border-default: rgba(31, 30, 29, 0.15);

169 --ic-border-strong: rgba(31, 30, 29, 0.3);

170 --ic-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, 'Courier New', monospace;

171 font-family: 'Anthropic Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

172 font-size: 14px; line-height: 1.5; color: var(--ic-slate);

173 margin: 8px 0 32px;

174}

175.dark .cc-ic {

176 --ic-slate: #f0eee6;

177 --ic-gray-000: #262624;

178 --ic-gray-150: #1f1e1d;

179 --ic-gray-550: #91908a;

180 --ic-gray-700: #bfbdb4;

181 --ic-border-subtle: rgba(240, 238, 230, 0.08);

182 --ic-border-default: rgba(240, 238, 230, 0.14);

183 --ic-border-strong: rgba(240, 238, 230, 0.28);

184}

185.dark .cc-ic-check { background: transparent; }

186.dark .cc-ic-card { border: 0.5px solid var(--ic-border-subtle); }

187.dark .cc-ic-p-pill.cc-ic-active { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }

188.cc-ic *, .cc-ic *::before, .cc-ic *::after { box-sizing: border-box; }

189.cc-ic a { text-decoration: none; }

190.cc-ic a:not([class]) { color: inherit; }

191.cc-ic button { font-family: inherit; cursor: pointer; }

192 

193.cc-ic-tab-strip {

194 display: inline-flex; gap: 2px;

195 padding: 4px; background: var(--ic-gray-150);

196 border-radius: 10px; overflow-x: auto;

197 max-width: 100%;

198}

199.cc-ic-tab {

200 appearance: none; background: none; border: none;

201 padding: 10px 18px; font-size: 15px; font-weight: 430;

202 color: var(--ic-gray-550); border-radius: 7px;

203 white-space: nowrap;

204 transition: color 0.12s, background-color 0.12s;

205}

206.cc-ic-tab:hover { color: var(--ic-gray-700); }

207.cc-ic-tab.cc-ic-active {

208 color: var(--ic-slate); font-weight: 500;

209 background: var(--ic-gray-000);

210 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);

211}

212.dark .cc-ic-tab.cc-ic-active { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); }

213 

214.cc-ic-team-wrap { padding: 16px 0 20px; }

215.cc-ic-team-toggle {

216 display: flex; align-items: center; gap: 12px; font-family: inherit;

217 padding: 12px 16px; font-size: 14px; font-weight: 430;

218 color: var(--ic-gray-700); cursor: pointer; user-select: none;

219 width: fit-content; background: var(--ic-gray-150);

220 border: 0.5px solid var(--ic-border-subtle); border-radius: 8px;

221 transition: border-color 0.15s;

222}

223.cc-ic-team-toggle:hover { border-color: var(--ic-border-default); }

224.cc-ic-team-toggle.cc-ic-checked {

225 background: rgba(217, 119, 87, 0.08);

226 border-color: rgba(217, 119, 87, 0.25);

227}

228.cc-ic-check {

229 width: 16px; height: 16px;

230 border: 1px solid var(--ic-border-strong); border-radius: 4px;

231 background: var(--ic-gray-000);

232 display: flex; align-items: center; justify-content: center;

233 flex-shrink: 0;

234}

235.cc-ic-check svg { color: #fff; display: none; }

236.cc-ic-team-toggle.cc-ic-checked .cc-ic-check { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); }

237.cc-ic-team-toggle.cc-ic-checked .cc-ic-check svg { display: block; }

238 

239.cc-ic-team-reveal { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }

240.cc-ic-sales {

241 display: flex; align-items: center; justify-content: space-between;

242 gap: 16px; padding: 14px 16px;

243 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

244 border-radius: 8px; flex-wrap: wrap;

245}

246.cc-ic-sales-text { font-size: 13px; color: var(--ic-gray-700); line-height: 1.5; flex: 1; min-width: 200px; }

247.cc-ic-sales-text strong { font-weight: 550; color: var(--ic-slate); }

248.cc-ic-sales-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

249.cc-ic-btn-clay {

250 display: inline-flex; align-items: center; gap: 8px;

251 background: var(--ic-clay-deep); color: #fff; border: none;

252 border-radius: 8px; padding: 8px 14px;

253 font-size: 13px; font-weight: 500;

254 transition: background-color 0.15s; white-space: nowrap;

255}

256.cc-ic-btn-clay:hover { background: var(--ic-clay); }

257.cc-ic-btn-ghost {

258 display: inline-flex; align-items: center; gap: 8px;

259 background: transparent; color: var(--ic-gray-700);

260 border: 0.5px solid var(--ic-border-default);

261 border-radius: 8px; padding: 8px 14px;

262 font-size: 13px; font-weight: 500;

263}

264.cc-ic-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

265 

266.cc-ic-provider-bar {

267 display: flex; align-items: center; gap: 12px;

268 padding: 14px 16px; background: var(--ic-gray-150);

269 border-radius: 8px; font-size: 13px; flex-wrap: wrap;

270}

271.cc-ic-provider-bar .cc-ic-label { color: var(--ic-gray-550); flex-shrink: 0; }

272.cc-ic-provider-pills { display: flex; gap: 4px; flex-wrap: wrap; }

273.cc-ic-p-pill {

274 appearance: none; border: none; background: transparent;

275 padding: 6px 12px; border-radius: 6px;

276 font-size: 13px; font-weight: 430; color: var(--ic-gray-700);

277 white-space: nowrap;

278}

279.cc-ic-p-pill:hover { background: rgba(0, 0, 0, 0.04); }

280.cc-ic-p-pill.cc-ic-active {

281 background: var(--ic-gray-000); color: var(--ic-slate);

282 font-weight: 500; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);

283}

284.cc-ic-provider-notice {

285 display: flex; padding: 16px 18px;

286 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

287 border-radius: 8px; gap: 14px; align-items: flex-start;

288}

289.cc-ic-provider-notice > svg { color: var(--ic-gray-550); margin-top: 2px; flex-shrink: 0; }

290.cc-ic-provider-notice-body { font-size: 14px; line-height: 1.55; color: var(--ic-gray-700); }

291.cc-ic-provider-notice-body strong { font-weight: 550; color: var(--ic-slate); }

292.cc-ic-provider-notice-body a { color: var(--ic-clay-deep); font-weight: 500; }

293.cc-ic-provider-notice-body a:hover { text-decoration: underline; }

294 

295.cc-ic-card { background: #141413; border-radius: 12px; overflow: hidden; }

296.cc-ic-subtabs {

297 display: flex; align-items: center;

298 background: #1a1918;

299 border-bottom: 0.5px solid rgba(255, 255, 255, 0.08);

300 padding: 0 8px; overflow-x: auto;

301}

302.cc-ic-subtab {

303 appearance: none; background: none; border: none;

304 padding: 12px 16px; font-size: 12px;

305 color: rgba(255, 255, 255, 0.5);

306 position: relative; white-space: nowrap;

307}

308.cc-ic-subtab:hover { color: rgba(255, 255, 255, 0.75); }

309.cc-ic-subtab.cc-ic-active { color: #fff; }

310.cc-ic-subtab.cc-ic-active::after {

311 content: ''; position: absolute;

312 left: 12px; right: 12px; bottom: -0.5px;

313 height: 2px; background: var(--ic-clay);

314}

315.cc-ic-shell-switch {

316 display: inline-flex; gap: 2px;

317 margin: 14px 26px 0; padding: 3px;

318 background: rgba(255, 255, 255, 0.06);

319 border: 0.5px solid rgba(255, 255, 255, 0.08);

320 border-radius: 8px;

321 font-family: inherit;

322}

323.cc-ic-shell-option {

324 font: inherit; font-size: 12px; font-weight: 500;

325 padding: 5px 12px; border-radius: 6px;

326 background: transparent; border: none;

327 color: rgba(255, 255, 255, 0.55);

328 cursor: pointer; user-select: none; white-space: nowrap;

329 transition: color 120ms ease, background-color 120ms ease;

330}

331.cc-ic-shell-option:hover { color: rgba(255, 255, 255, 0.85); }

332.cc-ic-shell-option.cc-ic-active {

333 background: rgba(255, 255, 255, 0.12);

334 color: #fff;

335 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);

336}

337 

338.cc-ic-card-body { padding: 24px 26px; display: flex; align-items: flex-start; gap: 14px; }

339.cc-ic-prompt {

340 color: var(--ic-clay); font-family: var(--ic-font-mono);

341 font-size: 17px; user-select: none; padding-top: 2px;

342}

343.cc-ic-cmd {

344 flex: 1; font-family: var(--ic-font-mono);

345 font-size: 17px; color: #f0eee6;

346 line-height: 1.55; white-space: pre-wrap; word-break: break-word;

347}

348.cc-ic-copy {

349 display: inline-flex; align-items: center; gap: 6px;

350 background: rgba(255, 255, 255, 0.08);

351 border: 0.5px solid rgba(255, 255, 255, 0.12);

352 color: rgba(255, 255, 255, 0.85);

353 padding: 7px 13px; border-radius: 8px;

354 font-size: 13px; font-weight: 500; flex-shrink: 0;

355}

356.cc-ic-copy:hover { background: rgba(255, 255, 255, 0.14); }

357.cc-ic-copy.cc-ic-copied { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); color: #fff; }

358 

359.cc-ic-below {

360 margin-top: 12px; font-size: 13px; color: var(--ic-gray-550);

361 display: flex; gap: 16px; flex-wrap: wrap; align-items: baseline;

362}

363.cc-ic-below a { color: var(--ic-gray-700); border-bottom: 0.5px solid var(--ic-border-default); }

364.cc-ic-below a:hover { color: var(--ic-clay-deep); border-bottom-color: var(--ic-clay-deep); }

365.cc-ic-handoff {

366 padding: 22px 24px;

367 background: linear-gradient(180deg, #faf9f4 0%, #f3f1e9 100%);

368 border: 0.5px solid var(--ic-border-default);

369 border-radius: 12px;

370 box-shadow: 0 1px 2px rgba(31, 30, 29, 0.04), 0 6px 16px -4px rgba(31, 30, 29, 0.06);

371}

372.dark .cc-ic-handoff {

373 background: linear-gradient(180deg, #262624 0%, #1f1e1d 100%);

374 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 6px 16px -4px rgba(0, 0, 0, 0.4);

375}

376.cc-ic-handoff-title {

377 font-size: 16px; font-weight: 550; color: var(--ic-slate);

378 letter-spacing: -0.01em; margin-bottom: 4px;

379}

380.cc-ic-handoff-sub {

381 font-size: 14px; line-height: 1.5; color: var(--ic-gray-700);

382 margin-bottom: 18px;

383}

384.cc-ic-handoff-actions { display: flex; gap: 10px; flex-wrap: wrap; }

385.cc-ic-handoff-alt {

386 margin-top: 12px; font-size: 12px; color: var(--ic-gray-550);

387}

388.cc-ic-handoff-alt code {

389 font-family: var(--ic-font-mono); font-size: 11px;

390 background: var(--ic-gray-150); padding: 2px 6px;

391 border-radius: 4px; color: var(--ic-gray-700);

392}

393.cc-ic-copy-sm {

394 appearance: none; border: none;

395 display: inline-flex; align-items: center; justify-content: center;

396 width: 22px; height: 22px;

397 margin-left: 4px; vertical-align: middle;

398 background: var(--ic-gray-150); color: var(--ic-gray-550);

399 border-radius: 4px;

400 transition: color 0.1s, background-color 0.1s;

401}

402.cc-ic-copy-sm:hover { color: var(--ic-gray-700); background: var(--ic-border-default); }

403.cc-ic-copy-sm.cc-ic-copied { background: var(--ic-clay-deep); color: #fff; }

404 

405@media (max-width: 720px) {

406 .cc-ic-tab { padding: 12px 14px; font-size: 14px; }

407 .cc-ic-sales-actions { width: 100%; }

408 .cc-ic-card-body { padding: 20px; }

409 .cc-ic-cmd { font-size: 15px; }

410}

411`;

412 return <div className="cc-ic not-prose">

413 <style>{STYLES}</style>

414 

415 {}

416 <div className="cc-ic-tab-strip" role="tablist">

417 {TABS.map(t => <button key={t.key} type="button" role="tab" aria-selected={target === t.key} className={'cc-ic-tab' + (target === t.key ? ' cc-ic-active' : '')} onClick={() => setTarget(t.key)}>

418 {t.label}

419 </button>)}

420 </div>

421 

422 {}

423 <div className="cc-ic-team-wrap">

424 <button type="button" role="switch" aria-checked={team} className={'cc-ic-team-toggle' + (team ? ' cc-ic-checked' : '')} onClick={() => setTeam(!team)}>

425 <span className="cc-ic-check">{iconCheck(11)}</span>

426 <span>

427 I’m buying for a team or company (SSO, AWS/Azure/GCP, central billing)

428 </span>

429 </button>

430 </div>

431 

432 {}

433 {team && <div className="cc-ic-team-reveal">

434 <div className="cc-ic-sales">

435 <div className="cc-ic-sales-text">

436 <strong>Set up your team:</strong> self-serve or talk to sales.

437 </div>

438 <div className="cc-ic-sales-actions">

439 <a href="https://claude.ai/upgrade?initialPlanType=team&amp;utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_get_started" className="cc-ic-btn-ghost">

440 Get started

441 </a>

442 <a href="https://www.anthropic.com/contact-sales?utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_contact_sales" className="cc-ic-btn-clay">

443 Contact sales {iconArrowRight()}

444 </a>

445 </div>

446 </div>

447 

448 <div className="cc-ic-provider-bar">

449 <span className="cc-ic-label">Run on</span>

450 <div className="cc-ic-provider-pills" role="radiogroup" aria-label="Provider">

451 {PROVIDERS.map(p => <button key={p.key} type="button" role="radio" aria-checked={provider === p.key} className={'cc-ic-p-pill' + (provider === p.key ? ' cc-ic-active' : '')} onClick={() => setProvider(p.key)}>

452 {p.label}

453 </button>)}

454 </div>

455 </div>

456 

457 {showNotice && <div className="cc-ic-provider-notice">

458 {iconInfo()}

459 <div className="cc-ic-provider-notice-body">

460 {PROVIDER_NOTICE[provider]}

461 </div>

462 </div>}

463 </div>}

464 

465 {}

466 {target === 'terminal' && <div className="cc-ic-card">

467 <div className="cc-ic-subtabs" role="tablist" aria-label="Install method">

468 {Object.keys(TERM).map(k => <button key={k} type="button" role="tab" aria-selected={pkg === k} className={'cc-ic-subtab' + (pkg === k ? ' cc-ic-active' : '')} onClick={() => setPkg(k)}>

469 {TERM[k].label}

470 </button>)}

471 </div>

472 {isWinInstaller && <div className="cc-ic-shell-switch" role="tablist" aria-label="Shell">

473 {[{

474 k: 'ps',

475 label: 'PowerShell'

476 }, {

477 k: 'cmd',

478 label: 'CMD'

479 }].map(({k, label}) => {

480 const active = k === 'cmd' === winCmd;

481 return <button key={k} type="button" role="tab" aria-selected={active} className={'cc-ic-shell-option' + (active ? ' cc-ic-active' : '')} onClick={() => setWinCmd(k === 'cmd')}>

482 {label}

483 </button>;

484 })}

485 </div>}

486 {cardBodyCmd(terminalCmd, isWinPrompt ? '>' : '$')}

487 </div>}

488 

489 {}

490 {target === 'terminal' && <div className="cc-ic-below">

491 {isWinInstaller && <span>

492 <a href="https://git-scm.com/downloads/win" target="_blank" rel="noopener">

493 Git for Windows

494 </a>{' '}

495 recommended. PowerShell is used if Git Bash is absent.

496 </span>}

497 {(pkg === 'brew' || pkg === 'winget') && <span>

498 Does not auto-update. Run{' '}

499 <code>{pkg === 'brew' ? 'brew upgrade claude-code' : 'winget upgrade Anthropic.ClaudeCode'}</code>{' '}

500 periodically.

501 </span>}

502 <a href="/en/troubleshoot-install">Installation troubleshooting</a>

503 </div>}

504 

505 {alt && <div className="cc-ic-handoff">

506 <div className="cc-ic-handoff-title">Claude Code for {alt.name}</div>

507 <div className="cc-ic-handoff-sub">{alt.tagline}</div>

508 <div className="cc-ic-handoff-actions">

509 <a href={alt.installHref} className="cc-ic-btn-clay" {...alt.installHref.startsWith('http') ? {

510 target: '_blank',

511 rel: 'noopener'

512 } : {}}>

513 {alt.installLabel} {iconArrowUpRight(13)}

514 </a>

515 <a href={alt.guideHref} className="cc-ic-btn-ghost">

516 {alt.name} guide {iconArrowRight(12)}

517 </a>

518 </div>

519 {alt.altCmd && <div className="cc-ic-handoff-alt">

520 or run <code>{alt.altCmd}</code>

521 <button type="button" className={'cc-ic-copy-sm' + (copied === 'alt' ? ' cc-ic-copied' : '')} onClick={() => handleCopy(alt.altCmd, 'alt')} aria-label="Copy command">

522 {copied === 'alt' ? iconCheck(11) : iconCopy(11)}

523 </button>

524 </div>}

525 </div>}

526 </div>;

527};

528 

529export const Experiment = ({flag, treatment, children}) => {

530 const VID_KEY = 'exp_vid';

531 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

532 const fnv1a = s => {

533 let h = 0x811c9dc5;

534 for (let i = 0; i < s.length; i++) {

535 h ^= s.charCodeAt(i);

536 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

537 }

538 return h >>> 0;

539 };

540 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

541 const [decision] = useState(() => {

542 const params = new URLSearchParams(location.search);

543 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

544 const force = params.get('gb-force');

545 if (force) {

546 for (const p of force.split(',')) {

547 const [k, v] = p.split(':');

548 if (k === flag) return {

549 variant: v || 'treatment',

550 track: false

551 };

552 }

553 }

554 if (navigator.globalPrivacyControl) {

555 return {

556 variant: 'control',

557 track: false

558 };

559 }

560 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

561 if (prefsMatch) {

562 try {

563 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

564 return {

565 variant: 'control',

566 track: false

567 };

568 }

569 } catch {

570 return {

571 variant: 'control',

572 track: false

573 };

574 }

575 } else {

576 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

577 if (!country || CONSENT_COUNTRIES.has(country)) {

578 return {

579 variant: 'control',

580 track: false

581 };

582 }

583 }

584 let vid;

585 try {

586 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

587 if (ajsMatch) {

588 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

589 } else {

590 vid = localStorage.getItem(VID_KEY);

591 if (!vid) {

592 vid = crypto.randomUUID();

593 }

594 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

595 }

596 try {

597 localStorage.setItem(VID_KEY, vid);

598 } catch {}

599 } catch {

600 return {

601 variant: 'control',

602 track: false

603 };

604 }

605 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

606 return {

607 variant,

608 track: true,

609 vid

610 };

611 });

612 useEffect(() => {

613 if (!decision.track) return;

614 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

615 method: 'POST',

616 headers: {

617 'Content-Type': 'application/json',

618 'x-service-name': 'claude_code_docs'

619 },

620 body: JSON.stringify({

621 events: [{

622 event_type: 'GrowthbookExperimentEvent',

623 event_data: {

624 device_id: decision.vid,

625 anonymous_id: decision.vid,

626 timestamp: new Date().toISOString(),

627 experiment_id: flag,

628 variation_id: decision.variant === 'treatment' ? 1 : 0,

629 environment: 'production'

630 }

631 }]

632 }),

633 keepalive: true

634 }).catch(() => {});

635 }, []);

636 return decision.variant === 'treatment' ? treatment : children;

637};

638 

639Claude Code — это AI-помощник по кодированию, который помогает вам создавать функции, исправлять ошибки и автоматизировать задачи разработки. Он понимает всю вашу кодовую базу и может работать с несколькими файлами и инструментами для выполнения задач.

640 

641<div data-gb-slot="overview-install-configurator">

642 <Experiment flag="overview-install-configurator" treatment={<InstallConfigurator />} />

643</div>

644 

645## Начало работы

646 

647Выберите вашу среду для начала работы. Большинство поверхностей требуют [подписку Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=overview_pricing) или учетную запись [Anthropic Console](https://console.anthropic.com/). Terminal CLI и VS Code также поддерживают [сторонних поставщиков](/ru/third-party-integrations).

648 

649<Tabs>

650 <Tab title="Terminal">

651 Полнофункциональный CLI для работы с Claude Code прямо в вашем терминале. Редактируйте файлы, выполняйте команды и управляйте всем проектом из командной строки.

652 

653 To install Claude Code, use one of the following methods:

654 

655 <Tabs>

656 <Tab title="Native Install (Recommended)">

657 **macOS, Linux, WSL:**

658 

659 ```bash theme={null}

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

661 ```

662 

663 **Windows PowerShell:**

664 

665 ```powershell theme={null}

666 irm https://claude.ai/install.ps1 | iex

667 ```

668 

669 **Windows CMD:**

670 

671 ```batch theme={null}

672 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

673 ```

674 

675 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.

676 

677 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.

678 

679 <Info>

680 Native installations automatically update in the background to keep you on the latest version.

681 </Info>

682 </Tab>

683 

684 <Tab title="Homebrew">

685 ```bash theme={null}

686 brew install --cask claude-code

687 ```

688 

689 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.

690 

691 <Info>

692 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.

693 </Info>

694 </Tab>

695 

696 <Tab title="WinGet">

697 ```powershell theme={null}

698 winget install Anthropic.ClaudeCode

699 ```

700 

701 <Info>

702 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

703 </Info>

704 </Tab>

705 </Tabs>

706 

707 You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

708 

709 Затем запустите Claude Code в любом проекте:

710 

711 ```bash theme={null}

712 cd your-project

713 claude

714 ```

715 

716 При первом использовании вам будет предложено войти. Вот и все! [Продолжите с Quickstart →](/ru/quickstart)

717 

718 <Tip>

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

720 </Tip>

721 </Tab>

722 

723 <Tab title="VS Code">

724 Расширение VS Code предоставляет встроенные различия, @-упоминания, просмотр плана и историю разговоров прямо в вашем редакторе.

725 

726 * [Установить для VS Code](vscode:extension/anthropic.claude-code)

727 * [Установить для Cursor](cursor:extension/anthropic.claude-code)

728 

729 Или найдите "Claude Code" в представлении Extensions (`Cmd+Shift+X` на Mac, `Ctrl+Shift+X` на Windows/Linux). После установки откройте Command Palette (`Cmd+Shift+P` / `Ctrl+Shift+P`), введите "Claude Code" и выберите **Open in New Tab**.

730 

731 [Начните работу с VS Code →](/ru/vs-code#get-started)

732 </Tab>

733 

734 <Tab title="Desktop app">

735 Автономное приложение для запуска Claude Code вне вашей IDE или терминала. Просматривайте различия визуально, запускайте несколько сеансов рядом, планируйте повторяющиеся задачи и запускайте облачные сеансы.

736 

737 Загрузите и установите:

738 

739 * [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) (Intel и Apple Silicon)

740 * [Windows](https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs) (x64)

741 * [Windows ARM64](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs)

742 

743 После установки запустите Claude, войдите и нажмите вкладку **Code** для начала кодирования. Требуется [платная подписка](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=overview_desktop_pricing).

744 

745 [Узнайте больше о приложении для рабочего стола →](/ru/desktop-quickstart)

746 </Tab>

747 

748 <Tab title="Web">

749 Запустите Claude Code в вашем браузере без локальной настройки. Запускайте долгоживущие задачи и возвращайтесь, когда они будут готовы, работайте с репозиториями, которые у вас нет локально, или запускайте несколько задач параллельно. Доступно на настольных браузерах и приложении Claude iOS.

750 

751 Начните кодирование на [claude.ai/code](https://claude.ai/code).

752 

753 [Начните работу в веб-версии →](/ru/web-quickstart)

754 </Tab>

755 

756 <Tab title="JetBrains">

757 Плагин для IntelliJ IDEA, PyCharm, WebStorm и других IDE JetBrains с интерактивным просмотром различий и совместным использованием контекста выделения.

758 

759 Установите [плагин Claude Code](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) из JetBrains Marketplace и перезагрузите вашу IDE.

760 

761 [Начните работу с JetBrains →](/ru/jetbrains)

762 </Tab>

763</Tabs>

764 

765## Что вы можете делать

766 

767Вот некоторые способы использования Claude Code:

768 

769<AccordionGroup>

770 <Accordion title="Автоматизируйте работу, которую вы постоянно откладываете" icon="wand-magic-sparkles">

771 Claude Code справляется с утомительными задачами, которые съедают ваш день: написание тестов для непроверенного кода, исправление ошибок lint по всему проекту, разрешение конфликтов слияния, обновление зависимостей и написание заметок о выпуске.

772 

773 ```bash theme={null}

774 claude "write tests for the auth module, run them, and fix any failures"

775 ```

776 </Accordion>

777 

778 <Accordion title="Создавайте функции и исправляйте ошибки" icon="hammer">

779 Опишите то, что вы хотите, на простом языке. Claude Code планирует подход, пишет код в нескольких файлах и проверяет, что он работает.

780 

781 Для ошибок вставьте сообщение об ошибке или опишите симптом. Claude Code отслеживает проблему через вашу кодовую базу, определяет основную причину и реализует исправление. Смотрите [common workflows](/ru/common-workflows) для получения дополнительных примеров.

782 </Accordion>

783 

784 <Accordion title="Создавайте коммиты и pull requests" icon="code-branch">

785 Claude Code работает непосредственно с git. Он подготавливает изменения, пишет сообщения коммитов, создает ветки и открывает pull requests.

786 

787 ```bash theme={null}

788 claude "commit my changes with a descriptive message"

789 ```

790 

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

792 </Accordion>

793 

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

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

796 </Accordion>

797 

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

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

800 

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

802 

803 [Hooks](/ru/hooks) позволяют вам запускать команды shell до или после действий Claude Code, например автоматическое форматирование после каждого редактирования файла или запуск lint перед коммитом.

804 </Accordion>

805 

806 <Accordion title="Запустите команды агентов и создавайте пользовательских агентов" icon="users">

807 Запустите [несколько агентов Claude Code](/ru/sub-agents), которые работают над разными частями задачи одновременно. Главный агент координирует работу, назначает подзадачи и объединяет результаты.

808 

809 Для полностью пользовательских рабочих процессов [Agent SDK](/ru/agent-sdk/overview) позволяет вам создавать собственных агентов, работающих на инструментах и возможностях Claude Code, с полным контролем над оркестровкой, доступом к инструментам и разрешениями.

810 </Accordion>

811 

812 <Accordion title="Передавайте, создавайте скрипты и автоматизируйте с помощью CLI" icon="terminal">

813 Claude Code является составным и следует философии Unix. Передавайте в него логи, запускайте его в CI или объединяйте его с другими инструментами:

814 

815 ```bash theme={null}

816 # Анализируйте недавний вывод логов

817 tail -200 app.log | claude -p "Slack me if you see any anomalies"

818 

819 # Автоматизируйте переводы в CI

820 claude -p "translate new strings into French and raise a PR for review"

821 

822 # Массовые операции по файлам

823 git diff main --name-only | claude -p "review these changed files for security issues"

824 ```

825 

826 Смотрите [CLI reference](/ru/cli-reference) для полного набора команд и флагов.

827 </Accordion>

828 

829 <Accordion title="Планируйте повторяющиеся задачи" icon="clock">

830 Запускайте Claude по расписанию для автоматизации работы, которая повторяется: утренние проверки PR, анализ сбоев CI в ночное время, еженедельные аудиты зависимостей или синхронизация документов после слияния PR.

831 

832 * [Routines](/ru/routines) работают на инфраструктуре, управляемой Anthropic, поэтому они продолжают работать даже когда ваш компьютер выключен. Они также могут срабатывать при вызовах API или событиях GitHub. Создавайте их из веб-версии, приложения Desktop или запустив `/schedule` в CLI.

833 * [Запланированные задачи Desktop](/ru/desktop-scheduled-tasks) работают на вашей машине с прямым доступом к вашим локальным файлам и инструментам

834 * [`/loop`](/ru/scheduled-tasks) повторяет подсказку в сеансе CLI для быстрого опроса

835 </Accordion>

836 

837 <Accordion title="Работайте откуда угодно" icon="globe">

838 Сеансы не привязаны к одной поверхности. Перемещайте работу между средами по мере изменения вашего контекста:

839 

840 * Отойдите от своего стола и продолжайте работать со своего телефона или любого браузера с помощью [Remote Control](/ru/remote-control)

841 * Отправьте сообщение [Dispatch](/ru/desktop#sessions-from-dispatch) с задачей со своего телефона и откройте сеанс Desktop, который он создает

842 * Запустите долгоживущую задачу в [веб-версии](/ru/claude-code-on-the-web) или [приложении iOS](https://apps.apple.com/app/claude-by-anthropic/id6473753684), затем перенесите ее в свой терминал с помощью `claude --teleport`

843 * Передайте сеанс терминала в [приложение Desktop](/ru/desktop) с помощью `/desktop` для визуального просмотра различий

844 * Маршрутизируйте задачи из командного чата: упомяните `@Claude` в [Slack](/ru/slack) с отчетом об ошибке и получите pull request обратно

845 </Accordion>

846</AccordionGroup>

847 

848## Используйте Claude Code везде

849 

850Каждая поверхность подключается к одному и тому же базовому механизму Claude Code, поэтому ваши файлы CLAUDE.md, параметры и MCP servers работают на всех них.

851 

852Помимо сред [Terminal](/ru/quickstart), [VS Code](/ru/vs-code), [JetBrains](/ru/jetbrains), [Desktop](/ru/desktop) и [Web](/ru/claude-code-on-the-web) выше, Claude Code интегрируется с CI/CD, чатом и рабочими процессами браузера:

853 

854| Я хочу... | Лучший вариант |

855| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |

856| Продолжить локальный сеанс со своего телефона или другого устройства | [Remote Control](/ru/remote-control) |

857| Отправить события из Telegram, Discord, iMessage или моих собственных webhooks в сеанс | [Channels](/ru/channels) |

858| Начать задачу локально, продолжить на мобильном | [Web](/ru/claude-code-on-the-web) или [приложение Claude iOS](https://apps.apple.com/app/claude-by-anthropic/id6473753684) |

859| Запустить Claude по расписанию | [Routines](/ru/routines) или [Запланированные задачи Desktop](/ru/desktop-scheduled-tasks) |

860| Автоматизировать проверки PR и сортировку проблем | [GitHub Actions](/ru/github-actions) или [GitLab CI/CD](/ru/gitlab-ci-cd) |

861| Получить автоматическую проверку кода на каждый PR | [GitHub Code Review](/ru/code-review) |

862| Маршрутизировать отчеты об ошибках из Slack в pull requests | [Slack](/ru/slack) |

863| Отладить живые веб-приложения | [Chrome](/ru/chrome) |

864| Создавайте пользовательских агентов для ваших собственных рабочих процессов | [Agent SDK](/ru/agent-sdk/overview) |

865 

866## Следующие шаги

867 

868После установки Claude Code эти руководства помогут вам углубиться.

869 

870* [Quickstart](/ru/quickstart): пройдите через вашу первую реальную задачу, от изучения кодовой базы до коммита исправления

871* [Сохраняйте инструкции и воспоминания](/ru/memory): дайте Claude постоянные инструкции с файлами CLAUDE.md и auto memory

872* [Common workflows](/ru/common-workflows) и [best practices](/ru/best-practices): шаблоны для получения максимума от Claude Code

873* [Settings](/ru/settings): настройте Claude Code для вашего рабочего процесса

874* [Troubleshooting](/ru/troubleshooting): решения для распространенных проблем

875* [code.claude.com](https://code.claude.com/): демонстрации, цены и детали продукта

permission-modes.md +290 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Выберите режим разрешений

6 

7> Контролируйте, будет ли Claude просить разрешение перед редактированием файлов или выполнением команд. Переключайте режимы с помощью Shift+Tab в CLI или используйте селектор режима в VS Code, Desktop и claude.ai.

8 

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

10 

11## Доступные режимы

12 

13Каждый режим делает разный компромисс между удобством и контролем. Таблица ниже показывает, что Claude может делать без запроса разрешения в каждом режиме.

14 

15| Режим | Что выполняется без запроса | Лучше всего для |

16| :------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |

17| `default` | Только чтение | Начало работы, чувствительная работа |

18| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Чтение, редактирование файлов и распространённые команды файловой системы (`mkdir`, `touch`, `mv`, `cp` и т.д.) | Итерация по коду, который вы проверяете |

19| [`plan`](#analyze-before-you-edit-with-plan-mode) | Только чтение | Изучение кодовой базы перед её изменением |

20| [`auto`](#eliminate-prompts-with-auto-mode) | Всё, с фоновыми проверками безопасности | Длительные задачи, снижение усталости от запросов |

21| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Только предварительно одобренные инструменты | Заблокированные CI и скрипты |

22| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Всё | Только изолированные контейнеры и виртуальные машины |

23 

24Во всех режимах, кроме `bypassPermissions`, записи в [защищённые пути](#protected-paths) никогда не одобряются автоматически, защищая состояние репозитория и собственную конфигурацию Claude от случайного повреждения.

25 

26Режимы устанавливают базовое поведение. Наложите [правила разрешений](/ru/permissions#manage-permissions) сверху, чтобы предварительно одобрить или заблокировать определённые инструменты в любом режиме, кроме `bypassPermissions`, который полностью пропускает уровень разрешений.

27 

28## Переключение режимов разрешений

29 

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

31 

32<Tabs>

33 <Tab title="CLI">

34 **Во время сеанса**: нажмите `Shift+Tab` для циклического переключения `default` → `acceptEdits` → `plan`. Текущий режим отображается в строке состояния. Не все режимы находятся в цикле по умолчанию:

35 

36 * `auto`: появляется, когда ваша учётная запись соответствует [требованиям режима auto](#eliminate-prompts-with-auto-mode); циклическое переключение на auto показывает запрос на согласие до тех пор, пока вы его не примете, или выберите **Нет, больше не спрашивать**, чтобы удалить auto из цикла

37 * `bypassPermissions`: появляется после запуска с `--permission-mode bypassPermissions`, `--dangerously-skip-permissions` или `--allow-dangerously-skip-permissions`; вариант `--allow-` добавляет режим в цикл без активации

38 * `dontAsk`: никогда не появляется в цикле; установите его с помощью `--permission-mode dontAsk`

39 

40 Включённые дополнительные режимы вставляются после `plan`, с `bypassPermissions` первым и `auto` последним. Если у вас включены оба, вы будете циклически переключаться через `bypassPermissions` на пути к `auto`.

41 

42 **При запуске**: передайте режим как флаг.

43 

44 ```bash theme={null}

45 claude --permission-mode plan

46 ```

47 

48 **По умолчанию**: установите `defaultMode` в [settings](/ru/settings#settings-files).

49 

50 ```json theme={null}

51 {

52 "permissions": {

53 "defaultMode": "acceptEdits"

54 }

55 }

56 ```

57 

58 Тот же флаг `--permission-mode` работает с `-p` для [неинтерактивных запусков](/ru/headless).

59 </Tab>

60 

61 <Tab title="VS Code">

62 **Во время сеанса**: нажмите индикатор режима в нижней части поля подсказки.

63 

64 **По умолчанию**: установите `claudeCode.initialPermissionMode` в настройках VS Code или используйте панель настроек расширения Claude Code.

65 

66 Индикатор режима показывает эти метки, соответствующие режиму, к которому каждая применяется:

67 

68 | Метка пользовательского интерфейса | Режим |

69 | :--------------------------------- | :------------------ |

70 | Ask before edits | `default` |

71 | Edit automatically | `acceptEdits` |

72 | Plan mode | `plan` |

73 | Auto mode | `auto` |

74 | Bypass permissions | `bypassPermissions` |

75 

76 Auto mode появляется в индикаторе режима после того, как вы включите **Allow dangerously skip permissions** в настройках расширения, но остаётся недоступным до тех пор, пока ваша учётная запись не соответствует всем требованиям, перечисленным в [разделе режима auto](#eliminate-prompts-with-auto-mode). Параметр `claudeCode.initialPermissionMode` не принимает `auto`; чтобы запустить в режиме auto по умолчанию, установите `defaultMode` в вашем Claude Code [`settings.json`](/ru/settings#settings-files) вместо этого.

77 

78 Bypass permissions также требует переключателя **Allow dangerously skip permissions** перед тем, как он появится в индикаторе режима.

79 

80 Подробности, специфичные для расширения, см. в [руководстве VS Code](/ru/vs-code).

81 </Tab>

82 

83 <Tab title="JetBrains">

84 Плагин JetBrains запускает Claude Code в терминале IDE, поэтому переключение режимов работает так же, как в CLI: нажмите `Shift+Tab` для циклического переключения или передайте `--permission-mode` при запуске.

85 </Tab>

86 

87 <Tab title="Desktop">

88 Используйте селектор режима рядом с кнопкой отправки. Auto и Bypass permissions появляются только после того, как вы их включите в настройках Desktop. Подробности см. в [руководстве Desktop](/ru/desktop#choose-a-permission-mode).

89 </Tab>

90 

91 <Tab title="Web and mobile">

92 Используйте раскрывающееся меню режима рядом с полем подсказки на [claude.ai/code](https://claude.ai/code) или в мобильном приложении. Запросы разрешений появляются в claude.ai для одобрения. Какие режимы появляются, зависит от того, где выполняется сеанс:

93 

94 * **Облачные сеансы** на [Claude Code в веб-версии](/ru/claude-code-on-the-web): Auto accept edits и Plan mode. Ask permissions, Auto и Bypass permissions недоступны.

95 * **Сеансы [Remote Control](/ru/remote-control)** на вашем локальном компьютере: Ask permissions, Auto accept edits и Plan mode. Auto и Bypass permissions недоступны.

96 

97 Для Remote Control вы также можете установить начальный режим при запуске хоста:

98 

99 ```bash theme={null}

100 claude remote-control --permission-mode acceptEdits

101 ```

102 </Tab>

103</Tabs>

104 

105## Автоматическое одобрение редактирования файлов с режимом acceptEdits

106 

107Режим `acceptEdits` позволяет Claude создавать и редактировать файлы в вашем рабочем каталоге без запроса. Строка состояния показывает `⏵⏵ accept edits on` пока этот режим активен.

108 

109В дополнение к редактированию файлов, режим `acceptEdits` автоматически одобряет распространённые команды Bash файловой системы: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp` и `sed`. Эти команды также автоматически одобряются при префиксе с безопасными переменными окружения, такими как `LANG=C` или `NO_COLOR=1`, или обёртками процессов, такими как `timeout`, `nice` или `nohup`. Как и редактирование файлов, автоматическое одобрение применяется только к путям внутри вашего рабочего каталога или `additionalDirectories`. Пути вне этой области, записи в [защищённые пути](#protected-paths) и все остальные команды Bash по-прежнему требуют запроса.

110 

111Когда инструмент [PowerShell](/ru/tools-reference#powershell-tool) включен, режим `acceptEdits` также автоматически одобряет `Set-Content`, `Add-Content`, `Clear-Content` и `Remove-Item` на путях в области действия, вместе с их распространёнными псевдонимами. Применяются те же правила области действия и защищённых путей.

112 

113Используйте `acceptEdits`, когда вы хотите проверить изменения в вашем редакторе или через `git diff` после того, как они будут сделаны, а не одобрять каждое редактирование в строке. Нажмите `Shift+Tab` один раз из режима по умолчанию, чтобы войти в него, или запустите его напрямую:

114 

115```bash theme={null}

116claude --permission-mode acceptEdits

117```

118 

119## Анализируйте перед редактированием с режимом plan

120 

121Plan mode указывает Claude исследовать и предложить изменения без их внесения. Claude читает файлы, запускает команды оболочки для исследования и пишет план, но не редактирует ваш исходный код. Запросы разрешений по-прежнему применяются так же, как в режиме по умолчанию.

122 

123Войдите в план mode, нажав `Shift+Tab` или добавив префикс к одной подсказке с `/plan`. Вы также можете запустить в режиме plan из CLI:

124 

125```bash theme={null}

126claude --permission-mode plan

127```

128 

129Нажмите `Shift+Tab` снова, чтобы выйти из режима plan без одобрения плана.

130 

131Когда план готов, Claude представляет его и спрашивает, как действовать дальше. Из этого запроса вы можете:

132 

133* Одобрить и запустить в режиме auto

134* Одобрить и принять редактирование

135* Одобрить и проверить каждое редактирование вручную

136* Продолжить планирование с обратной связью

137* Уточнить с помощью [Ultraplan](/ru/ultraplan) для проверки на основе браузера

138 

139Каждый вариант одобрения также предлагает сначала очистить контекст планирования.

140 

141## Исключите запросы с режимом auto

142 

143<Note>

144 Режим auto требует Claude Code v2.1.83 или позже.

145</Note>

146 

147Режим auto позволяет Claude выполнять действия без запросов разрешений. Отдельная модель классификатора проверяет действия перед их выполнением, блокируя всё, что выходит за пределы вашего запроса, нацелено на неизвестную инфраструктуру или кажется вызванным враждебным содержимым, которое Claude прочитал.

148 

149<Warning>

150 Режим auto — это исследовательский предпросмотр. Он уменьшает запросы, но не гарантирует безопасность. Используйте его для задач, в которых вы доверяете общему направлению, а не как замену проверке чувствительных операций.

151</Warning>

152 

153Режим auto доступен только когда ваша учётная запись соответствует всем этим требованиям:

154 

155* **План**: Max, Team, Enterprise или API. Недоступен на Pro.

156* **Администратор**: на Team и Enterprise администратор должен включить его в [настройках администратора Claude Code](https://claude.ai/admin-settings/claude-code) перед тем, как пользователи смогут его включить. Администраторы также могут заблокировать его, установив `permissions.disableAutoMode` на `"disable"` в [управляемых параметрах](/ru/permissions#managed-settings).

157* **Модель**: Claude Sonnet 4.6, Opus 4.6 или Opus 4.7 на планах Team, Enterprise и API; только Claude Opus 4.7 на планах Max. Другие модели, включая Haiku и модели claude-3, не поддерживаются.

158* **Поставщик**: только Anthropic API. Недоступен на Bedrock, Vertex или Foundry.

159 

160Если Claude Code сообщает, что режим auto недоступен, одно из этих требований не выполнено; это не временный сбой. Отдельное сообщение, которое называет модель и говорит, что режим auto "не может определить безопасность" действия, является временным сбоем классификатора; см. [справку по ошибкам](/ru/errors#auto-mode-cannot-determine-the-safety-of-an-action).

161 

162### Что классификатор блокирует по умолчанию

163 

164Классификатор доверяет вашему рабочему каталогу и настроенным удалённым репозиториям вашего репо. Всё остальное рассматривается как внешнее до тех пор, пока вы не [настроите доверенную инфраструктуру](/ru/auto-mode-config).

165 

166**Блокируется по умолчанию**:

167 

168* Загрузка и выполнение кода, например `curl | bash`

169* Отправка чувствительных данных на внешние конечные точки

170* Развертывание и миграция в производство

171* Массовое удаление в облачном хранилище

172* Предоставление разрешений IAM или репозитория

173* Изменение общей инфраструктуры

174* Необратимое уничтожение файлов, которые существовали до начала сеанса

175* Force push или прямая отправка на `main`

176 

177**Разрешается по умолчанию**:

178 

179* Локальные операции с файлами в вашем рабочем каталоге

180* Установка зависимостей, объявленных в ваших файлах блокировки или манифестах

181* Чтение `.env` и отправка учётных данных на соответствующий API

182* Запросы HTTP только для чтения

183* Отправка на ветвь, с которой вы начали, или на ветвь, созданную Claude

184 

185Запросы доступа к сети в песочнице маршрутизируются через классификатор, а не разрешаются по умолчанию. Запустите `claude auto-mode defaults`, чтобы увидеть полные списки правил. Если обычные действия блокируются, администратор может добавить доверенные репозитории, корзины и сервисы через параметр `autoMode.environment`: см. [Настройка режима auto](/ru/auto-mode-config).

186 

187### Границы, которые вы указываете в разговоре

188 

189Классификатор рассматривает границы, которые вы указываете в разговоре, как сигнал блокировки. Если вы скажете Claude "не отправляй" или "подожди, пока я проверю перед развёртыванием", классификатор блокирует соответствующие действия даже когда правила по умолчанию их разрешили бы. Граница остаётся в силе до тех пор, пока вы её не снимете в более позднем сообщении. Собственное суждение Claude о том, что условие было выполнено, не снимает его.

190 

191Границы не хранятся как правила. Классификатор перечитывает их из стенограммы при каждой проверке, поэтому граница может быть потеряна, если [компактирование контекста](/ru/costs#reduce-token-usage) удалит сообщение, которое её указало. Для жёсткой гарантии добавьте [правило deny](/ru/permissions#permission-rule-syntax) вместо этого.

192 

193### Когда режим auto откатывается

194 

195Каждое отклонённое действие показывает уведомление и появляется в `/permissions` на вкладке Recently denied, где вы можете нажать `r`, чтобы повторить его с ручным одобрением.

196 

197Если классификатор блокирует действие 3 раза подряд или 20 раз всего, режим auto приостанавливается и Claude Code возобновляет запрос. Одобрение запрашиваемого действия возобновляет режим auto. Эти пороги не настраиваются. Любое разрешённое действие сбрасывает счётчик последовательных блокировок, в то время как счётчик всего сохраняется для сеанса и сбрасывается только когда его собственный лимит вызывает откат.

198 

199В [неинтерактивном режиме](/ru/headless) с флагом `-p` повторные блокировки прерывают сеанс, так как нет пользователя для запроса.

200 

201Повторные блокировки обычно означают, что классификатор не имеет контекста о вашей инфраструктуре. Используйте `/feedback` для сообщения о ложных срабатываниях или попросите администратора [настроить доверенную инфраструктуру](/ru/auto-mode-config).

202 

203<AccordionGroup>

204 <Accordion title="Как классификатор оценивает действия">

205 Каждое действие проходит через фиксированный порядок решений. Первый совпадающий шаг побеждает:

206 

207 1. Действия, соответствующие вашим [правилам allow или deny](/ru/permissions#manage-permissions), разрешаются немедленно

208 2. Действия только для чтения и редактирование файлов в вашем рабочем каталоге автоматически одобряются, кроме записей в [защищённые пути](#protected-paths)

209 3. Всё остальное идёт классификатору

210 4. Если классификатор блокирует, Claude получает причину и пытается найти альтернативу

211 

212 При входе в режим auto широкие правила allow, которые предоставляют произвольное выполнение кода, отбрасываются:

213 

214 * Неограниченный `Bash(*)`

215 * Подстановочные интерпретаторы, такие как `Bash(python*)`

216 * Команды запуска менеджера пакетов

217 * Правила `Agent` allow

218 

219 Узкие правила, такие как `Bash(npm test)`, переносятся. Отброшенные правила восстанавливаются при выходе из режима auto.

220 

221 Классификатор видит сообщения пользователя, вызовы инструментов и содержимое вашего CLAUDE.md. Результаты инструментов удаляются, поэтому враждебное содержимое в файле или веб-странице не может манипулировать им напрямую. Отдельный зонд на стороне сервера сканирует входящие результаты инструментов и отмечает подозрительное содержимое перед тем, как Claude его прочитает. Для получения дополнительной информации о том, как эти слои работают вместе, см. [объявление режима auto](https://claude.com/blog/auto-mode) и [инженерный анализ](https://www.anthropic.com/engineering/claude-code-auto-mode).

222 </Accordion>

223 

224 <Accordion title="Как режим auto обрабатывает подагентов">

225 Классификатор проверяет работу [подагента](/ru/sub-agents) в трёх точках:

226 

227 1. Перед запуском подагента описание делегированной задачи оценивается, поэтому опасно выглядящая задача блокируется во время порождения.

228 2. Пока подагент работает, каждое его действие проходит через классификатор с теми же правилами, что и родительский сеанс, и любой `permissionMode` в frontmatter подагента игнорируется.

229 3. Когда подагент завершается, классификатор проверяет полную историю его действий; если эта проверка возврата выявляет проблему, предупреждение безопасности добавляется к результатам подагента.

230 </Accordion>

231 

232 <Accordion title="Стоимость и задержка">

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

234 </Accordion>

235</AccordionGroup>

236 

237## Разрешить только предварительно одобренные инструменты с режимом dontAsk

238 

239Режим `dontAsk` автоматически отклоняет каждый вызов инструмента, который иначе требовал бы запроса. Только действия, соответствующие вашим правилам `permissions.allow` и [командам Bash только для чтения](/ru/permissions#read-only-commands), могут выполняться; явные правила `ask` отклоняются, а не запрашиваются. Это делает режим полностью неинтерактивным для конвейеров CI или ограниченных сред, где вы предварительно определяете ровно то, что Claude может делать.

240 

241Установите его при запуске с флагом:

242 

243```bash theme={null}

244claude --permission-mode dontAsk

245```

246 

247## Пропустить все проверки с режимом bypassPermissions

248 

249Режим `bypassPermissions` отключает запросы разрешений и проверки безопасности, чтобы вызовы инструментов выполнялись немедленно. Начиная с версии 2.1.126, это включает записи в [защищённые пути](#protected-paths), на которые более ранние версии по-прежнему выдавали запросы. Удаления, нацеленные на корневой каталог файловой системы или домашний каталог, такие как `rm -rf /` и `rm -rf ~`, по-прежнему выдают запросы в качестве защиты от ошибок модели. Используйте этот режим только в изолированных средах, таких как контейнеры, виртуальные машины или dev containers без доступа в Интернет, где Claude Code не может повредить вашу хост-систему.

250 

251Вы не можете войти в `bypassPermissions` из сеанса, который был запущен без одного из включающих флагов; перезапустите с одним, чтобы включить его:

252 

253```bash theme={null}

254claude --permission-mode bypassPermissions

255```

256 

257Флаг `--dangerously-skip-permissions` эквивалентен.

258 

259<Warning>

260 `bypassPermissions` не обеспечивает защиту от инъекции подсказок или непредвиденных действий. Для фоновых проверок безопасности без запросов используйте [режим auto](#eliminate-prompts-with-auto-mode) вместо этого. Администраторы могут заблокировать этот режим, установив `permissions.disableBypassPermissionsMode` на `"disable"` в [управляемых параметрах](/ru/permissions#managed-settings).

261</Warning>

262 

263## Защищённые пути

264 

265Записи в небольшой набор путей никогда не одобряются автоматически, в каждом режиме, кроме `bypassPermissions`. Это предотвращает случайное повреждение состояния репозитория и собственной конфигурации Claude. В `default`, `acceptEdits` и `plan` эти записи требуют подтверждения; в `auto` они маршрутизируются классификатору; в `dontAsk` они отклоняются; в `bypassPermissions` они разрешены.

266 

267Защищённые каталоги:

268 

269* `.git`

270* `.vscode`

271* `.idea`

272* `.husky`

273* `.claude`, кроме `.claude/commands`, `.claude/agents`, `.claude/skills` и `.claude/worktrees`, где Claude регулярно создаёт содержимое

274 

275Защищённые файлы:

276 

277* `.gitconfig`, `.gitmodules`

278* `.bashrc`, `.bash_profile`, `.zshrc`, `.zprofile`, `.profile`

279* `.ripgreprc`

280* `.mcp.json`, `.claude.json`

281 

282## См. также

283 

284* [Permissions](/ru/permissions): правила allow, ask и deny; управляемые политики

285* [Configure auto mode](/ru/auto-mode-config): скажите классификатору, какую инфраструктуру ваша организация доверяет

286* [Hooks](/ru/hooks): пользовательская логика разрешений через hooks `PreToolUse` и `PermissionRequest`

287* [Ultraplan](/ru/ultraplan): запустите режим plan в сеансе Claude Code в веб-версии с проверкой на основе браузера

288* [Security](/ru/security): гарантии безопасности и лучшие практики

289* [Sandboxing](/ru/sandboxing): изоляция файловой системы и сети для команд Bash

290* [Non-interactive mode](/ru/headless): запустите Claude Code с флагом `-p`

permissions.md +358 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Настройка разрешений

6 

7> Контролируйте, что Claude Code может использовать и делать, с помощью детальных правил разрешений, режимов и управляемых политик.

8 

9Claude Code поддерживает детальные разрешения, позволяя вам точно указать, что агент может делать и что он не может. Параметры разрешений можно добавить в систему контроля версий и распространить среди всех разработчиков в вашей организации, а также настроить отдельными разработчиками.

10 

11## Система разрешений

12 

13Claude Code использует многоуровневую систему разрешений для баланса между мощностью и безопасностью:

14 

15| Тип инструмента | Пример | Требуется одобрение | Поведение "Да, не спрашивать снова" |

16| :--------------- | :------------------ | :------------------ | :----------------------------------------------- |

17| Только чтение | Чтение файлов, Grep | Нет | Н/А |

18| Bash команды | Выполнение оболочки | Да | Постоянно для каждого каталога проекта и команды |

19| Изменение файлов | Edit/Write файлы | Да | До конца сеанса |

20 

21## Управление разрешениями

22 

23Вы можете просматривать и управлять разрешениями инструментов Claude Code с помощью `/permissions`. Этот интерфейс отображает все правила разрешений и файлы settings.json, из которых они берутся.

24 

25* Правила **Allow** позволяют Claude Code использовать указанный инструмент без ручного одобрения.

26* Правила **Ask** запрашивают подтверждение каждый раз, когда Claude Code пытается использовать указанный инструмент.

27* Правила **Deny** предотвращают использование Claude Code указанного инструмента.

28 

29Правила оцениваются по порядку: **deny -> ask -> allow**. Первое совпадающее правило побеждает, поэтому правила deny всегда имеют приоритет.

30 

31## Режимы разрешений

32 

33Claude Code поддерживает несколько режимов разрешений, которые контролируют, как инструменты одобряются. См. [Permission modes](/ru/permission-modes) для определения того, когда использовать каждый из них. Установите `defaultMode` в ваших [файлах параметров](/ru/settings#settings-files):

34 

35| Режим | Описание |

36| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

37| `default` | Стандартное поведение: запрашивает разрешение при первом использовании каждого инструмента |

38| `acceptEdits` | Автоматически принимает редактирование файлов и общие команды файловой системы (`mkdir`, `touch`, `mv`, `cp` и т.д.) для путей в рабочем каталоге или `additionalDirectories` |

39| `plan` | Plan Mode: Claude может анализировать, но не может изменять файлы или выполнять команды |

40| `auto` | Автоматически одобряет вызовы инструментов с проверками безопасности в фоне, которые проверяют, соответствуют ли действия вашему запросу. В настоящее время исследовательский предпросмотр |

41| `dontAsk` | Автоматически отклоняет инструменты, если они не предварительно одобрены через `/permissions` или правила `permissions.allow` |

42| `bypassPermissions` | Пропускает все запросы разрешений. Удаления, затрагивающие корневой каталог файловой системы или домашний каталог, такие как `rm -rf /` и `rm -rf ~`, по-прежнему запрашивают подтверждение в качестве защиты от ошибок модели |

43 

44<Warning>

45 Режим `bypassPermissions` пропускает все запросы разрешений, включая записи в `.git`, `.claude`, `.vscode`, `.idea` и `.husky`. Удаления, затрагивающие корневой каталог файловой системы или домашний каталог, такие как `rm -rf /` и `rm -rf ~`, по-прежнему запрашивают подтверждение в качестве защиты от ошибок модели. Используйте этот режим только в изолированных средах, таких как контейнеры или виртуальные машины, где Claude Code не может причинить вред. Администраторы могут предотвратить этот режим, установив `permissions.disableBypassPermissionsMode` на `"disable"` в [управляемых параметрах](#managed-settings).

46</Warning>

47 

48Чтобы предотвратить использование режима `bypassPermissions` или `auto`, установите `permissions.disableBypassPermissionsMode` или `permissions.disableAutoMode` на `"disable"` в любом [файле параметров](/ru/settings#settings-files). Это наиболее полезно в [управляемых параметрах](#managed-settings), где они не могут быть переопределены.

49 

50## Синтаксис правил разрешений

51 

52Правила разрешений следуют формату `Tool` или `Tool(specifier)`.

53 

54### Совпадение всех использований инструмента

55 

56Чтобы совпадать со всеми использованиями инструмента, используйте только имя инструмента без скобок:

57 

58| Правило | Эффект |

59| :--------- | :--------------------------------------- |

60| `Bash` | Совпадает со всеми Bash командами |

61| `WebFetch` | Совпадает со всеми запросами веб-выборки |

62| `Read` | Совпадает со всеми чтениями файлов |

63 

64`Bash(*)` эквивалентен `Bash` и совпадает со всеми Bash командами.

65 

66### Используйте спецификаторы для детального контроля

67 

68Добавьте спецификатор в скобках, чтобы совпадать с конкретными использованиями инструмента:

69 

70| Правило | Эффект |

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

72| `Bash(npm run build)` | Совпадает с точной командой `npm run build` |

73| `Read(./.env)` | Совпадает с чтением файла `.env` в текущем каталоге |

74| `WebFetch(domain:example.com)` | Совпадает с запросами выборки на example.com |

75 

76### Шаблоны подстановочных символов

77 

78Правила Bash поддерживают glob-шаблоны с `*`. Подстановочные символы могут появляться в любой позиции команды. Эта конфигурация позволяет npm и git commit команды, блокируя git push:

79 

80```json theme={null}

81{

82 "permissions": {

83 "allow": [

84 "Bash(npm run *)",

85 "Bash(git commit *)",

86 "Bash(git * main)",

87 "Bash(* --version)",

88 "Bash(* --help *)"

89 ],

90 "deny": [

91 "Bash(git push *)"

92 ]

93 }

94}

95```

96 

97Пробел перед `*` имеет значение: `Bash(ls *)` совпадает с `ls -la`, но не с `lsof`, в то время как `Bash(ls*)` совпадает с обоими. Суффикс `:*` - это эквивалентный способ написания завершающего подстановочного символа, поэтому `Bash(ls:*)` совпадает с теми же командами, что и `Bash(ls *)`.

98 

99Диалог разрешений записывает форму, разделенную пробелами, когда вы выбираете "Да, не спрашивать снова" для префикса команды. Форма `:*` распознается только в конце шаблона. В шаблоне, таком как `Bash(git:* push)`, двоеточие рассматривается как буквальный символ и не будет совпадать с git командами.

100 

101## Правила разрешений для конкретных инструментов

102 

103### Bash

104 

105Правила разрешений Bash поддерживают сопоставление подстановочных символов с `*`. Подстановочные символы могут появляться в любой позиции команды, включая начало, середину или конец:

106 

107* `Bash(npm run build)` совпадает с точной Bash командой `npm run build`

108* `Bash(npm run test *)` совпадает с Bash командами, начинающимися с `npm run test`

109* `Bash(npm *)` совпадает с любой командой, начинающейся с `npm `

110* `Bash(* install)` совпадает с любой командой, заканчивающейся на ` install`

111* `Bash(git * main)` совпадает с командами, такими как `git checkout main` и `git log --oneline main`

112 

113Один `*` совпадает с любой последовательностью символов, включая пробелы, поэтому один подстановочный символ может охватывать несколько аргументов. `Bash(git *)` совпадает с `git log --oneline --all`, и `Bash(git * main)` совпадает с `git push origin main`, а также с `git merge main`.

114 

115Когда `*` появляется в конце с пробелом перед ним (например `Bash(ls *)`), это обеспечивает границу слова, требуя, чтобы префиксу предшествовал пробел или конец строки. Например, `Bash(ls *)` совпадает с `ls -la`, но не с `lsof`. В отличие от этого, `Bash(ls*)` без пробела совпадает с обоими `ls -la` и `lsof`, потому что нет ограничения границы слова.

116 

117#### Составные команды

118 

119<Tip>

120 Claude Code осведомлен об операторах оболочки, поэтому правило, такое как `Bash(safe-cmd *)`, не даст ему разрешение на выполнение команды `safe-cmd && other-cmd`. Распознаваемые разделители команд - это `&&`, `||`, `;`, `|`, `|&`, `&` и новые строки. Правило должно совпадать с каждой подкомандой независимо.

121</Tip>

122 

123Когда вы одобряете составную команду с "Да, не спрашивать снова", Claude Code сохраняет отдельное правило для каждой подкоманды, требующей одобрения, а не одно правило для полной составной строки. Например, одобрение `git status && npm test` сохраняет правило для `npm test`, поэтому будущие вызовы `npm test` распознаются независимо от того, что предшествует `&&`. Подкоманды, такие как `cd` в подкаталог, генерируют свое собственное правило Read для этого пути. Для одной составной команды может быть сохранено до 5 правил.

124 

125#### Оборачиватели процессов

126 

127Перед сопоставлением правил Bash, Claude Code удаляет фиксированный набор оборачивателей процессов, поэтому правило, такое как `Bash(npm test *)`, также совпадает с `timeout 30 npm test`. Распознаваемые оборачиватели - это `timeout`, `time`, `nice`, `nohup` и `stdbuf`.

128 

129Голый `xargs` также удаляется, поэтому `Bash(grep *)` совпадает с `xargs grep pattern`. Удаление применяется только когда `xargs` не имеет флагов: вызов, такой как `xargs -n1 grep pattern`, совпадает как команда `xargs`, поэтому правила, написанные для внутренней команды, не охватывают его.

130 

131Этот список оборачивателей встроен и не настраивается. Средства выполнения окружения разработки, такие как `direnv exec`, `devbox run`, `mise exec`, `npx` и `docker exec`, не входят в список. Потому что эти инструменты выполняют свои аргументы как команду, правило, такое как `Bash(devbox run *)`, совпадает с чем угодно после `run`, включая `devbox run rm -rf .`. Чтобы одобрить работу внутри средства выполнения окружения, напишите конкретное правило, которое включает как средство выполнения, так и внутреннюю команду, такое как `Bash(devbox run npm test)`. Добавьте одно правило для каждой внутренней команды, которую вы хотите разрешить.

132 

133Оборачиватели exec, такие как `watch`, `setsid`, `ionice` и `flock`, всегда запрашивают и не могут быть автоматически одобрены правилом префикса, таким как `Bash(watch *)`. То же самое применяется к `find` с `-exec` или `-delete`: правило `Bash(find *)` не охватывает эти формы. Чтобы одобрить конкретный вызов, напишите правило точного совпадения для полной строки команды.

134 

135#### Команды только для чтения

136 

137Claude Code распознает встроенный набор Bash команд как только для чтения и запускает их без запроса разрешения в каждом режиме. Они включают `ls`, `cat`, `head`, `tail`, `grep`, `find`, `wc`, `diff`, `stat`, `du`, `cd` и формы `git` только для чтения. Набор не настраивается; чтобы требовать запрос для одной из этих команд, добавьте правило `ask` или `deny` для нее.

138 

139Неквотированные glob-шаблоны разрешены для команд, у которых каждый флаг только для чтения, поэтому `ls *.ts` и `wc -l src/*.py` запускаются без запроса. Команды с флагами, способными к записи или выполнению, такие как `find`, `sort`, `sed` и `git`, по-прежнему запрашивают, когда присутствует неквотированный glob, потому что glob может расширяться до флага, такого как `-delete`.

140 

141`cd` в путь внутри вашего рабочего каталога или [дополнительного каталога](#working-directories) также только для чтения. Составная команда, такая как `cd packages/api && ls`, запускается без запроса, когда каждая часть квалифицируется самостоятельно. Объединение `cd` с `git` в одну составную команду всегда запрашивает, независимо от целевого каталога.

142 

143<Warning>

144 Шаблоны разрешений Bash, которые пытаются ограничить аргументы команды, хрупкие. Например, `Bash(curl http://github.com/ *)` предназначен для ограничения curl на URL-адреса GitHub, но не будет совпадать с вариациями, такими как:

145 

146 * Опции перед URL: `curl -X GET http://github.com/...`

147 * Другой протокол: `curl https://github.com/...`

148 * Перенаправления: `curl -L http://bit.ly/xyz` (перенаправляет на github)

149 * Переменные: `URL=http://github.com && curl $URL`

150 * Дополнительные пробелы: `curl http://github.com`

151 

152 Для более надежной фильтрации URL рассмотрите:

153 

154 * **Ограничение сетевых инструментов Bash**: используйте правила deny для блокировки `curl`, `wget` и подобных команд, затем используйте инструмент WebFetch с разрешением `WebFetch(domain:github.com)` для разрешенных доменов

155 * **Использование PreToolUse hooks**: реализуйте hook, который проверяет URL-адреса в Bash командах и блокирует недопустимые домены

156 * Инструктирование Claude Code о ваших разрешенных curl шаблонах через CLAUDE.md

157 

158 Обратите внимание, что использование только WebFetch не предотвращает сетевой доступ. Если Bash разрешен, Claude все еще может использовать `curl`, `wget` или другие инструменты для доступа к любому URL-адресу.

159</Warning>

160 

161### PowerShell

162 

163Правила разрешений PowerShell используют ту же форму, что и правила Bash. Подстановочные символы с `*` совпадают в любой позиции, суффикс `:*` эквивалентен конечному ` *`, и голый `PowerShell` или `PowerShell(*)` совпадает с каждой командой. Эта конфигурация позволяет команды `Get-ChildItem` и `git commit`, блокируя `Remove-Item`:

164 

165```json theme={null}

166{

167 "permissions": {

168 "allow": [

169 "PowerShell(Get-ChildItem *)",

170 "PowerShell(git commit *)"

171 ],

172 "deny": [

173 "PowerShell(Remove-Item *)"

174 ]

175 }

176}

177```

178 

179Общие псевдонимы канонизируются перед сопоставлением. Правило, написанное для имени cmdlet, также совпадает с его псевдонимами, поэтому `PowerShell(Get-ChildItem *)` совпадает с `gci`, `ls` и `dir`. Сопоставление не чувствительно к регистру.

180 

181Claude Code анализирует AST PowerShell и проверяет каждую команду в составной команде независимо. Операторы конвейера `|`, разделители операторов `;` и на PowerShell 7+ операторы цепочки `&&` и `||` разделяют составную команду на подкоманды. Правило должно совпадать с каждой подкомандой, чтобы составная команда была разрешена.

182 

183### Read и Edit

184 

185Правила `Edit` применяются ко всем встроенным инструментам, которые редактируют файлы. Claude прилагает наилучшие усилия для применения правил `Read` ко всем встроенным инструментам, которые читают файлы, таким как Grep и Glob.

186 

187<Warning>

188 Правила Read и Edit deny применяются к встроенным инструментам файлов Claude, а не к подпроцессам Bash. Правило deny `Read(./.env)` блокирует инструмент Read, но не предотвращает `cat .env` в Bash. Для принудительного применения на уровне ОС, которое блокирует все процессы от доступа к пути, [включите sandbox](/ru/sandboxing).

189</Warning>

190 

191Правила Read и Edit следуют спецификации [gitignore](https://git-scm.com/docs/gitignore) с четырьмя различными типами шаблонов:

192 

193| Шаблон | Значение | Пример | Совпадает |

194| ------------------- | --------------------------------------------- | -------------------------------- | ------------------------------ |

195| `//path` | **Абсолютный** путь от корня файловой системы | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |

196| `~/path` | Путь от **домашнего** каталога | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |

197| `/path` | Путь **относительно корня проекта** | `Edit(/src/**/*.ts)` | `<project root>/src/**/*.ts` |

198| `path` или `./path` | Путь **относительно текущего каталога** | `Read(*.env)` | `<cwd>/*.env` |

199 

200<Warning>

201 Шаблон, такой как `/Users/alice/file`, НЕ является абсолютным путем. Это относительно корня проекта. Используйте `//Users/alice/file` для абсолютных путей.

202</Warning>

203 

204На Windows пути нормализуются в форму POSIX перед сопоставлением. `C:\Users\alice` становится `/c/Users/alice`, поэтому используйте `//c/**/.env` для сопоставления файлов `.env` в любом месте на этом диске. Чтобы сопоставить все диски, используйте `//**/.env`.

205 

206Примеры:

207 

208* `Edit(/docs/**)`: редактирование в `<project>/docs/` (НЕ `/docs/` и НЕ `<project>/.claude/docs/`)

209* `Read(~/.zshrc)`: чтение `.zshrc` вашего домашнего каталога

210* `Edit(//tmp/scratch.txt)`: редактирование абсолютного пути `/tmp/scratch.txt`

211* `Read(src/**)`: чтение из `<current-directory>/src/`

212 

213<Note>

214 В шаблонах gitignore `*` совпадает с файлами в одном каталоге, а `**` совпадает рекурсивно по каталогам. Чтобы разрешить весь доступ к файлам, используйте только имя инструмента без скобок: `Read`, `Edit` или `Write`.

215</Note>

216 

217Когда Claude получает доступ к символической ссылке, правила разрешений проверяют два пути: саму символическую ссылку и файл, на который она указывает. Правила allow и deny обрабатывают эту пару по-разному: правила allow возвращаются к запросу вас, в то время как правила deny блокируют полностью.

218 

219* **Правила allow**: применяются только когда совпадают как путь символической ссылки, так и его цель. Символическая ссылка внутри разрешенного каталога, которая указывает вне его, по-прежнему запрашивает вас.

220* **Правила deny**: применяются когда совпадает либо путь символической ссылки, либо его цель. Символическая ссылка, которая указывает на запрещенный файл, сама запрещена.

221 

222Например, с `Read(./project/**)` разрешено и `Read(~/.ssh/**)` запрещено, символическая ссылка в `./project/key`, указывающая на `~/.ssh/id_rsa`, блокируется: цель не проходит правило allow и совпадает с правилом deny.

223 

224### WebFetch

225 

226* `WebFetch(domain:example.com)` совпадает с запросами выборки на example.com

227 

228### MCP

229 

230* `mcp__puppeteer` совпадает с любым инструментом, предоставленным сервером `puppeteer` (имя настроено в Claude Code)

231* `mcp__puppeteer__*` синтаксис подстановочных символов, который также совпадает со всеми инструментами с сервера `puppeteer`

232* `mcp__puppeteer__puppeteer_navigate` совпадает с инструментом `puppeteer_navigate`, предоставленным сервером `puppeteer`

233 

234### Agent (subagents)

235 

236Используйте правила `Agent(AgentName)` для контроля, какие [subagents](/ru/sub-agents) может использовать Claude:

237 

238* `Agent(Explore)` совпадает с subagent Explore

239* `Agent(Plan)` совпадает с subagent Plan

240* `Agent(my-custom-agent)` совпадает с пользовательским subagent с именем `my-custom-agent`

241 

242Добавьте эти правила в массив `deny` в ваших параметрах или используйте флаг CLI `--disallowedTools` для отключения конкретных агентов. Чтобы отключить агент Explore:

243 

244```json theme={null}

245{

246 "permissions": {

247 "deny": ["Agent(Explore)"]

248 }

249}

250```

251 

252## Расширение разрешений с помощью hooks

253 

254[Claude Code hooks](/ru/hooks-guide) предоставляют способ регистрации пользовательских команд оболочки для выполнения оценки разрешений во время выполнения. Когда Claude Code выполняет вызов инструмента, PreToolUse hooks запускаются перед запросом разрешения. Выход hook может отклонить вызов инструмента, принудить запрос или пропустить запрос, чтобы позволить вызову продолжиться.

255 

256Решения hook не обходят правила разрешений. Правила deny и ask оцениваются независимо от того, что возвращает PreToolUse hook, поэтому совпадающее правило deny блокирует вызов и совпадающее правило ask по-прежнему запрашивает даже когда hook вернул `"allow"` или `"ask"`. Это сохраняет приоритет deny-first, описанный в [Управление разрешениями](#manage-permissions), включая правила deny, установленные в управляемых параметрах.

257 

258Блокирующий hook также имеет приоритет над правилами allow. Hook, который выходит с кодом 2, останавливает вызов инструмента перед оценкой правил разрешений, поэтому блокировка применяется даже когда правило allow иначе позволило бы вызову продолжиться. Чтобы запустить все Bash команды без запросов, кроме нескольких, которые вы хотите заблокировать, добавьте `"Bash"` в список allow и зарегистрируйте PreToolUse hook, который отклоняет эти конкретные команды. См. [Block edits to protected files](/ru/hooks-guide#block-edits-to-protected-files) для скрипта hook, который вы можете адаптировать.

259 

260## Рабочие каталоги

261 

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

263 

264* **При запуске**: используйте аргумент CLI `--add-dir <path>`

265* **Во время сеанса**: используйте команду `/add-dir`

266* **Постоянная конфигурация**: добавьте в `additionalDirectories` в [файлы параметров](/ru/settings#settings-files)

267 

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

269 

270### Дополнительные каталоги предоставляют доступ к файлам, а не конфигурацию

271 

272Добавление каталога расширяет, где Claude может читать и редактировать файлы. Это не делает этот каталог полным корнем конфигурации: большинство конфигурации `.claude/` не обнаруживается из дополнительных каталогов, хотя несколько типов загружаются как исключения.

273 

274Следующие типы конфигурации загружаются из каталогов `--add-dir`:

275 

276| Конфигурация | Загружается из `--add-dir` |

277| :------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

278| [Skills](/ru/skills) в `.claude/skills/` | Да, с live reload |

279| Параметры плагина в `.claude/settings.json` | Только `enabledPlugins` и `extraKnownMarketplaces` |

280| [CLAUDE.md](/ru/memory) файлы, `.claude/rules/` и `CLAUDE.local.md` | Только когда установлено `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1`. `CLAUDE.local.md` дополнительно требует источник параметра `local`, который включен по умолчанию |

281 

282Все остальное, включая subagents, commands, output styles, hooks и другие параметры, обнаруживается только из текущего рабочего каталога и его родителей, вашего пользовательского каталога в `~/.claude/` и управляемых параметров. Чтобы поделиться этой конфигурацией между проектами, используйте один из этих подходов:

283 

284* **Конфигурация на уровне пользователя**: поместите файлы в `~/.claude/agents/`, `~/.claude/output-styles/` или `~/.claude/settings.json`, чтобы сделать их доступными в каждом проекте

285* **Плагины**: упакуйте и распространяйте конфигурацию как [плагин](/ru/plugins), который команды могут установить

286* **Запуск из каталога конфигурации**: запустите Claude Code из каталога, содержащего конфигурацию `.claude/`, которую вы хотите использовать

287 

288## Как разрешения взаимодействуют с sandboxing

289 

290Разрешения и [sandboxing](/ru/sandboxing) являются дополняющими уровнями безопасности:

291 

292* **Разрешения** контролируют, какие инструменты может использовать Claude Code и какие файлы или домены он может использовать. Они применяются ко всем инструментам (Bash, Read, Edit, WebFetch, MCP и другим).

293* **Sandboxing** обеспечивает принудительное применение на уровне ОС, которое ограничивает доступ инструмента Bash к файловой системе и сети. Это применяется только к Bash командам и их дочерним процессам.

294 

295Используйте оба для защиты в глубину:

296 

297* Правила deny разрешений блокируют Claude от попытки доступа к ограниченным ресурсам

298* Ограничения sandbox предотвращают Bash команды от доступа к ресурсам вне определенных границ, даже если инъекция подсказки обходит принятие решений Claude

299* Ограничения файловой системы в sandbox используют правила Read и Edit deny, а не отдельную конфигурацию sandbox

300* Ограничения сети объединяют правила разрешений WebFetch со списками `allowedDomains` и `deniedDomains` sandbox

301 

302Когда sandboxing включен с `autoAllowBashIfSandboxed: true`, что является значением по умолчанию, sandboxed Bash команды запускаются без запроса даже если ваши разрешения включают `ask: Bash(*)`. Граница sandbox заменяет запрос для каждой команды. Явные правила deny по-прежнему применяются, и команды `rm` или `rmdir`, которые нацелены на `/`, ваш домашний каталог или другие критические пути системы, по-прежнему вызывают запрос. См. [sandbox modes](/ru/sandboxing#sandbox-modes) для изменения этого поведения.

303 

304## Управляемые параметры

305 

306Для организаций, которым требуется централизованный контроль над конфигурацией Claude Code, администраторы могут развернуть управляемые параметры, которые не могут быть переопределены параметрами пользователя или проекта. Эти параметры политики следуют тому же формату, что и обычные файлы параметров, и могут быть доставлены через политики MDM/уровня ОС, управляемые файлы параметров или [параметры, управляемые сервером](/ru/server-managed-settings). См. [файлы параметров](/ru/settings#settings-files) для механизмов доставки и расположения файлов.

307 

308### Параметры только для управления

309 

310Следующие параметры эффективны только в управляемых параметрах. Размещение их в файлах параметров пользователя или проекта не имеет эффекта.

311 

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

313| :--------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

314| `allowedChannelPlugins` | Список разрешений плагинов канала, которые могут отправлять сообщения. Заменяет список разрешений Anthropic по умолчанию при установке. Требует `channelsEnabled: true`. См. [Ограничение того, какие плагины канала могут работать](/ru/channels#restrict-which-channel-plugins-can-run) |

315| `allowManagedHooksOnly` | Когда `true`, только управляемые hooks, SDK hooks и hooks из плагинов, принудительно включенных в управляемых параметрах `enabledPlugins`, загружаются. Hooks пользователя, проекта и всех остальных плагинов блокируются |

316| `allowManagedMcpServersOnly` | Когда `true`, только `allowedMcpServers` из управляемых параметров учитываются. `deniedMcpServers` все еще объединяется из всех источников. См. [Управляемая конфигурация MCP](/ru/mcp#managed-mcp-configuration) |

317| `allowManagedPermissionRulesOnly` | Когда `true`, предотвращает определение правил разрешений `allow`, `ask` или `deny` в параметрах пользователя и проекта. Применяются только правила в управляемых параметрах |

318| `blockedMarketplaces` | Список блокировки источников marketplace. Заблокированные источники проверяются перед загрузкой, поэтому они никогда не касаются файловой системы. См. [управляемые ограничения marketplace](/ru/plugin-marketplaces#managed-marketplace-restrictions) |

319| `channelsEnabled` | Разрешить [channels](/ru/channels) для пользователей Team и Enterprise. Если не установлено или `false`, блокирует доставку сообщений канала независимо от того, что пользователи передают в `--channels` |

320| `forceRemoteSettingsRefresh` | Когда `true`, блокирует запуск CLI до тех пор, пока удаленные управляемые параметры не будут свежо получены, и выходит, если получение не удается. См. [принудительное закрытие при запуске](/ru/server-managed-settings#enforce-fail-closed-startup) |

321| `pluginTrustMessage` | Пользовательское сообщение, добавленное к предупреждению о доверии плагина, показываемому перед установкой |

322| `sandbox.filesystem.allowManagedReadPathsOnly` | Когда `true`, только пути `filesystem.allowRead` из управляемых параметров учитываются. `denyRead` все еще объединяется из всех источников |

323| `sandbox.network.allowManagedDomainsOnly` | Когда `true`, только `allowedDomains` и правила `WebFetch(domain:...)` allow из управляемых параметров учитываются. Недопустимые домены блокируются автоматически без запроса пользователю. Запрещенные домены все еще объединяются из всех источников |

324| `strictKnownMarketplaces` | Контролирует, какие источники marketplace плагинов пользователи могут добавлять и устанавливать плагины из. См. [управляемые ограничения marketplace](/ru/plugin-marketplaces#managed-marketplace-restrictions) |

325| `wslInheritsWindowsSettings` | Когда `true` в ключе реестра Windows HKLM или `C:\Program Files\ClaudeCode\managed-settings.json`, WSL читает управляемые параметры из цепочки политики Windows в дополнение к `/etc/claude-code`. См. [Файлы параметров](/ru/settings#settings-files) |

326 

327`disableBypassPermissionsMode` обычно размещается в управляемых параметрах для обеспечения организационной политики, но работает из любой области. Пользователь может установить его в своих собственных параметрах, чтобы заблокировать себя из режима bypass.

328 

329<Note>

330 Доступ к [Remote Control](/ru/remote-control) и [веб-сеансам](/ru/claude-code-on-the-web) не контролируется ключом управляемых параметров. На планах Team и Enterprise администратор включает или отключает эти функции в [Claude Code admin settings](https://claude.ai/admin-settings/claude-code).

331</Note>

332 

333## Приоритет параметров

334 

335Правила разрешений следуют тому же [приоритету параметров](/ru/settings#settings-precedence), что и все остальные параметры Claude Code:

336 

3371. **Управляемые параметры**: не могут быть переопределены никаким другим уровнем, включая аргументы командной строки

3382. **Аргументы командной строки**: временные переопределения сеанса

3393. **Локальные параметры проекта** (`.claude/settings.local.json`)

3404. **Общие параметры проекта** (`.claude/settings.json`)

3415. **Параметры пользователя** (`~/.claude/settings.json`)

342 

343Если инструмент запрещен на любом уровне, никакой другой уровень не может его разрешить. Например, управляемый параметр deny не может быть переопределен `--allowedTools`, и `--disallowedTools` может добавить ограничения сверх того, что определяют управляемые параметры.

344 

345Если разрешение разрешено в параметрах пользователя, но запрещено в параметрах проекта, параметр проекта имеет приоритет и разрешение блокируется.

346 

347## Примеры конфигураций

348 

349Этот [репозиторий](https://github.com/anthropics/claude-code/tree/main/examples/settings) включает начальные конфигурации параметров для распространенных сценариев развертывания. Используйте их как отправные точки и настройте их в соответствии с вашими потребностями.

350 

351## См. также

352 

353* [Settings](/ru/settings): полный справочник конфигурации, включая таблицу параметров разрешений

354* [Configure auto mode](/ru/auto-mode-config): скажите классификатору режима auto, какую инфраструктуру ваша организация доверяет

355* [Sandboxing](/ru/sandboxing): изоляция файловой системы и сети на уровне ОС для Bash команд

356* [Authentication](/ru/authentication): настройка доступа пользователей к Claude Code

357* [Security](/ru/security): гарантии безопасности и лучшие практики

358* [Hooks](/ru/hooks-guide): автоматизация рабочих процессов и расширение оценки разрешений

platforms.md +78 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Платформы и интеграции

6 

7> Выберите, где запустить Claude Code и что к нему подключить. Сравните CLI, Desktop, VS Code, JetBrains, веб и интеграции, такие как Chrome, Slack и CI/CD.

8 

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

10 

11## Где запустить Claude Code

12 

13Выберите платформу в зависимости от того, как вы предпочитаете работать и где находится ваш проект.

14 

15| Платформа | Лучше всего для | Что вы получаете |

16| :-------------------------------- | :-------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

17| [CLI](/ru/quickstart) | Рабочие процессы терминала, скриптинг, удалённые серверы | Полный набор функций, [Agent SDK](/ru/headless), сторонние поставщики |

18| [Desktop](/ru/desktop) | Визуальный просмотр, параллельные сеансы, управляемая установка | Средство просмотра различий, предпросмотр приложения, [использование компьютера](/ru/desktop#let-claude-use-your-computer) и [Dispatch](/ru/desktop#sessions-from-dispatch) на Pro и Max |

19| [VS Code](/ru/vs-code) | Работа внутри VS Code без переключения на терминал | Встроенные различия, интегрированный терминал, контекст файла |

20| [JetBrains](/ru/jetbrains) | Работа внутри IntelliJ, PyCharm, WebStorm или других IDE JetBrains | Средство просмотра различий, совместное использование выделения, сеанс терминала |

21| [Web](/ru/claude-code-on-the-web) | Долгосрочные задачи, которые не требуют большого управления, или работа, которая должна продолжаться, когда вы в сети | Облако, управляемое Anthropic, продолжается после отключения |

22 

23CLI — это наиболее полная поверхность для работы, ориентированной на терминал: скриптинг, сторонние поставщики и Agent SDK доступны только в CLI. Desktop и расширения IDE обменивают некоторые функции, доступные только в CLI, на визуальный просмотр и более тесную интеграцию с редактором. Веб работает в облаке Anthropic, поэтому задачи продолжают выполняться после отключения.

24 

25Вы можете смешивать поверхности в одном проекте. Конфигурация, память проекта и MCP серверы совместно используются на локальных поверхностях.

26 

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

28 

29Интеграции позволяют Claude работать с сервисами вне вашей кодовой базы.

30 

31| Интеграция | Что она делает | Используйте для |

32| :----------------------------------- | :---------------------------------------------------------- | :--------------------------------------------------------------------------- |

33| [Chrome](/ru/chrome) | Управляет вашим браузером с вашими авторизованными сеансами | Тестирование веб-приложений, заполнение форм, автоматизация сайтов без API |

34| [GitHub Actions](/ru/github-actions) | Запускает Claude в вашем конвейере CI | Автоматические проверки PR, сортировка проблем, запланированное обслуживание |

35| [GitLab CI/CD](/ru/gitlab-ci-cd) | То же самое, что GitHub Actions для GitLab | Автоматизация, управляемая CI на GitLab |

36| [Code Review](/ru/code-review) | Автоматически проверяет каждый PR | Выявление ошибок перед проверкой человеком |

37| [Slack](/ru/slack) | Отвечает на упоминания `@Claude` в ваших каналах | Превращение отчётов об ошибках в pull requests из чата команды |

38 

39Для интеграций, не указанных здесь, [MCP серверы](/ru/mcp) и [соединители](/ru/desktop#connect-external-tools) позволяют подключить почти всё: Linear, Notion, Google Drive или ваши собственные внутренние API.

40 

41## Работайте, когда вы вдали от вашего терминала

42 

43Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.

44 

45| | Trigger | Claude runs on | Setup | Best for |

46| :--------------------------------------------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |

47| [Dispatch](/en/desktop#sessions-from-dispatch) | Message a task from the Claude mobile app | Your machine (Desktop) | [Pair the mobile app with Desktop](https://support.claude.com/en/articles/13947068) | Delegating work while you're away, minimal setup |

48| [Remote Control](/en/remote-control) | Drive a running session from [claude.ai/code](https://claude.ai/code) or the Claude mobile app | Your machine (CLI or VS Code) | Run `claude remote-control` | Steering in-progress work from another device |

49| [Channels](/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/en/channels#quickstart) or [build your own](/en/channels-reference) | Reacting to external events like CI failures or chat messages |

50| [Slack](/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |

51| [Scheduled tasks](/en/scheduled-tasks) | Set a schedule | [CLI](/en/scheduled-tasks), [Desktop](/en/desktop-scheduled-tasks), or [cloud](/en/routines) | Pick a frequency | Recurring automation like daily reviews |

52 

53Если вы не уверены, с чего начать, [установите CLI](/ru/quickstart) и запустите его в каталоге проекта. Если вы предпочитаете не использовать терминал, [Desktop](/ru/desktop-quickstart) предоставляет вам тот же движок с графическим интерфейсом.

54 

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

56 

57### Платформы

58 

59* [Быстрый старт CLI](/ru/quickstart): установка и запуск вашей первой команды в терминале

60* [Desktop](/ru/desktop): визуальный просмотр различий, параллельные сеансы, использование компьютера и Dispatch

61* [VS Code](/ru/vs-code): расширение Claude Code внутри вашего редактора

62* [JetBrains](/ru/jetbrains): расширение для IntelliJ, PyCharm и других IDE JetBrains

63* [Claude Code в веб](/ru/claude-code-on-the-web): облачные сеансы, которые продолжают работать при отключении

64 

65### Интеграции

66 

67* [Chrome](/ru/chrome): автоматизация задач браузера с вашими авторизованными сеансами

68* [GitHub Actions](/ru/github-actions): запуск Claude в вашем конвейере CI

69* [GitLab CI/CD](/ru/gitlab-ci-cd): то же самое для GitLab

70* [Code Review](/ru/code-review): автоматическая проверка при каждом pull request

71* [Slack](/ru/slack): отправка задач из чата команды, получение PR обратно

72 

73### Удалённый доступ

74 

75* [Dispatch](/ru/desktop#sessions-from-dispatch): отправьте задачу со своего телефона, и она может создать сеанс Desktop

76* [Remote Control](/ru/remote-control): управляйте работающим сеансом со своего телефона или браузера

77* [Channels](/ru/channels): отправляйте события из приложений чата или ваших собственных серверов в сеанс

78* [Scheduled tasks](/ru/scheduled-tasks): запускайте подсказки по повторяющемуся расписанию

plugin-dependencies.md +153 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Ограничение версий зависимостей плагина

6 

7> Объявляйте ограничения версий для зависимостей плагина, чтобы ваш плагин продолжал работать, когда вышестоящий плагин выпускает критическое изменение.

8 

9Плагин может зависеть от других плагинов, указав их в `plugin.json` или в записи на marketplace. По умолчанию зависимость отслеживает последнюю доступную версию, поэтому вышестоящий выпуск может изменить зависимость в вашем плагине без предупреждения. Ограничения версий позволяют удерживать зависимость на протестированном диапазоне версий до тех пор, пока вы не решите перейти на новую версию.

10 

11Когда вы устанавливаете плагин, который объявляет зависимости, Claude Code автоматически разрешает и устанавливает их, а также выводит список добавленных зависимостей в конце вывода установки. Если зависимость позже исчезнет, `/reload-plugins` и фоновое автоматическое обновление плагина переустановят её при условии, что её marketplace уже находится в ваших настроенных marketplaces. Повторный запуск `claude plugin install` для зависимого плагина или добавление marketplace с помощью `claude plugin marketplace add` также разрешит любые оставшиеся отсутствующие зависимости. Зависимости из marketplace, который вы не добавили, остаются неразрешёнными.

12 

13Это руководство предназначено для авторов плагинов, которые объявляют зависимости в `plugin.json`, и для администраторов marketplace, которые помечают выпуски. Чтобы установить плагины с зависимостями, см. [Обнаружение и установка плагинов](/ru/discover-plugins). Полную схему манифеста см. в [справочнике плагинов](/ru/plugins-reference).

14 

15<Note>

16 Ограничения версий зависимостей требуют Claude Code v2.1.110 или более поздней версии.

17</Note>

18 

19## Почему нужно ограничивать версии зависимостей

20 

21Рассмотрим внутренний marketplace, где две команды публикуют плагины. Команда платформы поддерживает `secrets-vault`, MCP-сервер, который оборачивает бэкенд секретов. Команда развертывания поддерживает `deploy-kit`, который вызывает `secrets-vault` для получения учетных данных во время развертывания.

22 

23`deploy-kit` протестирован для работы с `secrets-vault` v2.1.0. Без ограничения версии при следующем выпуске платформенной команды, который переименовывает MCP-инструмент, автоматическое обновление переместит `secrets-vault` каждого инженера на новую версию, и `deploy-kit` сломается.

24 

25С ограничением версии `deploy-kit` объявляет, что ему нужен `secrets-vault` в диапазоне `~2.1.0`. Инженеры с установленным `deploy-kit` остаются на самой высокой соответствующей версии `2.1.x`. Команда развертывания обновляется по собственному графику, публикуя новую версию `deploy-kit` с более широким ограничением.

26 

27## Объявление зависимости с ограничением версии

28 

29Перечислите зависимости в массиве `dependencies` файла `.claude-plugin/plugin.json` вашего плагина. Каждая запись — это либо имя плагина, либо объект с ограничением версии.

30 

31Следующий манифест объявляет одну зависимость без версии и одну зависимость с ограничением:

32 

33```json .claude-plugin/plugin.json theme={null}

34{

35 "name": "deploy-kit",

36 "version": "3.1.0",

37 "dependencies": [

38 "audit-logger",

39 { "name": "secrets-vault", "version": "~2.1.0" }

40 ]

41}

42```

43 

44Запись может быть простой строкой с только именем плагина, как `"audit-logger"` в примере выше, которая зависит от любой версии, которую предоставляет marketplace этого плагина. Для большего контроля используйте объект с этими полями:

45 

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

47| :------------ | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

48| `name` | string | Имя плагина. Разрешается в том же marketplace, что и объявляющий плагин. Обязательно. |

49| `version` | string | [Диапазон semver](https://github.com/npm/node-semver#ranges), такой как `~2.1.0`, `^2.0`, `>=1.4` или `=2.1.0`. Зависимость получается в самой высокой помеченной версии, которая удовлетворяет этому диапазону. |

50| `marketplace` | string | Другой marketplace для разрешения `name`. Кросс-marketplace зависимости блокируются, если целевой marketplace не указан в [`allowCrossMarketplaceDependenciesOn`](#depend-on-a-plugin-from-another-marketplace) в `marketplace.json` корневого marketplace. |

51 

52Поле `version` принимает любое выражение, поддерживаемое пакетом `semver` Node, включая диапазоны с каретой, тильдой, дефисом и компаратором. Версии предварительного выпуска, такие как `2.0.0-beta.1`, исключаются, если ваш диапазон не выбирает их с суффиксом предварительного выпуска, например `^2.0.0-0`.

53 

54## Зависимость от плагина из другого marketplace

55 

56По умолчанию Claude Code отказывается автоматически устанавливать зависимость, которая находится в другом marketplace, чем плагин, который ее объявляет. Это предотвращает молчаливое извлечение плагинов из источника, который вы не проверили.

57 

58Чтобы это разрешить, администратор корневого marketplace добавляет имя целевого marketplace в `allowCrossMarketplaceDependenciesOn` в `marketplace.json`. Корневой marketplace — это тот, который размещает плагин, который устанавливает пользователь; проверяется только его список разрешений, поэтому доверие не распространяется через промежуточные marketplace.

59 

60Следующий `marketplace.json` позволяет `deploy-kit` зависеть от плагина из `acme-shared`:

61 

62```json .claude-plugin/marketplace.json theme={null}

63{

64 "name": "acme-tools",

65 "owner": { "name": "Acme" },

66 "allowCrossMarketplaceDependenciesOn": ["acme-shared"],

67 "plugins": [

68 {

69 "name": "deploy-kit",

70 "source": "./deploy-kit",

71 "dependencies": [

72 { "name": "audit-logger", "marketplace": "acme-shared" }

73 ]

74 }

75 ]

76}

77```

78 

79Если поле отсутствует или не включает целевой marketplace, установка завершается с ошибкой `cross-marketplace`, указывающей на поле для установки. Пользователи все еще могут установить зависимость вручную в первую очередь, что удовлетворяет ограничению без изменения списка разрешений.

80 

81## Помечание выпусков плагинов для разрешения версий

82 

83Ограничения версий разрешаются относительно git-тегов в репозитории marketplace. Чтобы Claude Code мог найти доступные версии зависимости, выпуски вышестоящего плагина должны быть помечены с использованием определенного соглашения об именовании.

84 

85Помечайте каждый выпуск как `{plugin-name}--v{version}`, где `{version}` соответствует полю `version` в `plugin.json` этого коммита. Из директории плагина выполните:

86 

87```bash theme={null}

88claude plugin tag --push

89```

90 

91Команда `claude plugin tag` выводит имя тега из манифеста плагина и записи marketplace, которая его содержит. Перед созданием тега она проверяет содержимое плагина, убеждается, что `plugin.json` и запись marketplace согласны по версии, требует чистого рабочего дерева в директории плагина и отказывает, если тег уже существует. Добавьте `--dry-run`, чтобы увидеть, что будет помечено, без его создания. Прямое выполнение `git tag secrets-vault--v2.1.0` эквивалентно, если вы сами поддерживаете синхронизацию `plugin.json` и записи marketplace.

92 

93Префикс имени плагина позволяет одному репозиторию marketplace размещать несколько плагинов с независимыми линиями версий. Разделитель `--v` анализируется как совпадение префикса на полное имя плагина, поэтому имена плагинов, содержащие дефисы, обрабатываются правильно.

94 

95Когда вы устанавливаете плагин, который объявляет `{ "name": "secrets-vault", "version": "~2.1.0" }`, Claude Code выводит список тегов marketplace, фильтрует те, которые начинаются с `secrets-vault--v`, и получает самую высокую версию, удовлетворяющую `~2.1.0`. Если соответствующий тег не существует, зависимый плагин отключается с ошибкой, в которой перечислены доступные версии.

96 

97Разрешенный тег semver записывается отдельно от `version` в `plugin.json`, поэтому проверки ограничений используют тег, который был фактически получен, даже если `plugin.json` в этом коммите имеет устаревшее значение. Имя директории кэша для установки с разрешением тега включает суффикс commit-SHA из 12 символов, поэтому если разработчик принудительно переместит тег на другой коммит, следующая установка получит свежую директорию кэша вместо повторного использования устаревшего содержимого.

98 

99<Note>

100 Для источников marketplace `npm` ограничение не контролирует, какая версия получается, так как разрешение на основе тегов применяется только к источникам, поддерживаемым git. Ограничение все еще проверяется во время загрузки, и зависимый плагин отключается с `dependency-version-unsatisfied`, если установленная версия не удовлетворяет ему.

101</Note>

102 

103## Как ограничения взаимодействуют

104 

105Когда несколько установленных плагинов ограничивают одну и ту же зависимость, Claude Code пересекает их диапазоны и разрешает зависимость на самую высокую версию, которая удовлетворяет всем из них. Таблица ниже показывает, как разрешаются общие комбинации.

106 

107| Плагин A требует | Плагин B требует | Результат |

108| :--------------- | :--------------- | :------------------------------------------------------------------------------------------------------------------ |

109| `^2.0` | `>=2.1` | Одна установка на самый высокий тег `2.x` на уровне или выше `2.1.0`. Оба плагина загружаются. |

110| `~2.1` | `~3.0` | Установка плагина B завершается с ошибкой `range-conflict`. Плагин A и зависимость остаются как они были. |

111| `=2.1.0` | none | Зависимость остается на `2.1.0`. Автоматическое обновление пропускает более новые версии, пока установлен плагин A. |

112 

113Автоматическое обновление получает ограниченную зависимость на самом высоком теге git, который удовлетворяет диапазону каждого установленного плагина, а не на последней версии marketplace, поэтому зависимость продолжает получать обновления в пределах своего допустимого диапазона. Если ни один тег не удовлетворяет всем диапазонам, обновление пропускается и пропуск отображается в `/doctor` и на вкладке Errors в `/plugin`, указывая на ограничивающий плагин.

114 

115Когда вы удаляете последний плагин, который ограничивает зависимость, зависимость больше не удерживается и возобновляет отслеживание записи marketplace при следующем обновлении.

116 

117## Удаление осиротевших автоматически установленных зависимостей

118 

119Автоматически установленные зависимости остаются на диске после удаления плагинов, которые их установили, на случай, если вы переустановите зависимый плагин или захотите продолжить использование зависимости напрямую. Чтобы очистить их, запустите `claude plugin prune` для вывода списка автоматически установленных зависимостей, которые больше не требуются ни одним установленным плагином, и удалите их после подтверждения. Это требует Claude Code v2.1.121 или более поздней версии.

120 

121```bash theme={null}

122claude plugin prune

123```

124 

125По умолчанию prune работает в области пользователя. Используйте `--scope project` или `--scope local` для выбора другой области. Передайте `--dry-run` для вывода списка того, что будет удалено, без внесения изменений. Передайте `-y` для пропуска подтверждения. Когда stdin или stdout не является терминалом, prune выводит список осиротевших зависимостей и выходит без их удаления, если не передана `-y`.

126 

127Чтобы выполнить prune как часть удаления, передайте `--prune` в `claude plugin uninstall`. После удаления названного плагина Claude Code сканирует и удаляет любые автоматически установленные зависимости, которые теперь осиротели. Плагины, которые вы установили сами, никогда не удаляются, только те, которые были установлены автоматически через массив `dependencies` другого плагина.

128 

129Например, чтобы удалить `deploy-kit` и очистить зависимости, которые он оставляет:

130 

131```bash theme={null}

132claude plugin uninstall deploy-kit --prune

133```

134 

135## Разрешение ошибок зависимостей

136 

137Проблемы с зависимостями появляются в `claude plugin list`, в интерфейсе `/plugin` и в `/doctor`. Затронутый плагин отключается до тех пор, пока вы не разрешите ошибку. Наиболее распространенные ошибки и их исправления перечислены ниже.

138 

139| Ошибка | Значение | Как разрешить |

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

141| `dependency-unsatisfied` | Объявленная зависимость не установлена, или она установлена, но отключена. | Запустите команду `claude plugin install`, показанную в сообщении об ошибке. Если marketplace зависимости еще не настроен, добавьте его с помощью `claude plugin marketplace add`, и Claude Code разрешит зависимость автоматически. Если зависимость отключена, включите её. |

142| `range-conflict` | Требования к версии для зависимости не могут быть объединены. Сообщение об ошибке указывает причину: ни одна версия не удовлетворяет всем диапазонам, диапазон не является действительным синтаксисом semver, или объединенные диапазоны слишком сложны для пересечения. | Удалите или обновите один из конфликтующих плагинов, исправьте любую неправильную строку `version`, упростите длинные цепочки `\|\|` или попросите вышестоящего автора расширить его ограничение. |

143| `dependency-version-unsatisfied` | Версия установленной зависимости находится вне объявленного диапазона этого плагина. | Запустите `claude plugin install <dependency>@<marketplace>` для повторного разрешения зависимости относительно всех текущих ограничений. |

144| `no-matching-tag` | Репозиторий зависимости не имеет тега `{name}--v*`, удовлетворяющего диапазону. | Проверьте, что вышестоящий помечен выпусками, используя соглашение выше, или ослабьте ваш диапазон. |

145 

146Чтобы проверить эти ошибки программно, запустите `claude plugin list --json` и прочитайте поле `errors` для каждого плагина.

147 

148## См. также

149 

150* [Создание плагинов](/ru/plugins): создавайте плагины с skills, agents и hooks

151* [Создание и распространение marketplace плагинов](/ru/plugin-marketplaces): размещайте плагины для вашей команды

152* [Справочник плагинов](/ru/plugins-reference#plugin-manifest-schema): полная схема `plugin.json`

153* [Управление версиями](/ru/plugins-reference#version-management): как разрешается версия самого плагина и используется в качестве ключа кэша

plugin-marketplaces.md +1054 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Создание и распространение marketplace плагинов

6 

7> Создавайте и размещайте marketplace плагинов для распространения расширений Claude Code по командам и сообществам.

8 

9**plugin marketplace** — это каталог, который позволяет вам распространять плагины другим пользователям. Marketplace обеспечивают централизованное обнаружение, отслеживание версий, автоматические обновления и поддержку нескольких типов источников (репозитории Git, локальные пути и многое другое). Это руководство показывает, как создать собственный marketplace для совместного использования плагинов с вашей командой или сообществом.

10 

11Ищете способ установить плагины из существующего marketplace? См. [Обнаружение и установка готовых плагинов](/ru/discover-plugins).

12 

13## Обзор

14 

15Создание и распространение marketplace включает:

16 

171. **Создание плагинов**: создайте один или несколько плагинов с skills, агентами, hooks, MCP servers или LSP servers. Это руководство предполагает, что у вас уже есть плагины для распространения; см. [Создание плагинов](/ru/plugins) для получения подробной информации о том, как их создавать.

182. **Создание файла marketplace**: определите `marketplace.json`, который перечисляет ваши плагины и где их найти (см. [Создание файла marketplace](#create-the-marketplace-file)).

193. **Размещение marketplace**: отправьте на GitHub, GitLab или другой хост Git (см. [Размещение и распространение marketplace](#host-and-distribute-marketplaces)).

204. **Совместное использование с пользователями**: пользователи добавляют ваш marketplace с помощью `/plugin marketplace add` и устанавливают отдельные плагины (см. [Обнаружение и установка плагинов](/ru/discover-plugins)).

21 

22После того как ваш marketplace будет запущен, вы можете обновить его, отправив изменения в ваш репозиторий. Пользователи обновляют свою локальную копию с помощью `/plugin marketplace update`.

23 

24## Пошаговое руководство: создание локального marketplace

25 

26Этот пример создает marketplace с одним плагином: skill `/quality-review` для проверки кода. Вы создадите структуру каталогов, добавите skill, создадите манифест плагина и каталог marketplace, затем установите и протестируете его.

27 

28<Steps>

29 <Step title="Создание структуры каталогов">

30 ```bash theme={null}

31 mkdir -p my-marketplace/.claude-plugin

32 mkdir -p my-marketplace/plugins/quality-review-plugin/.claude-plugin

33 mkdir -p my-marketplace/plugins/quality-review-plugin/skills/quality-review

34 ```

35 </Step>

36 

37 <Step title="Создание skill">

38 Создайте файл `SKILL.md`, который определяет, что делает skill `/quality-review`.

39 

40 ```markdown my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md theme={null}

41 ---

42 description: Проверка кода на ошибки, безопасность и производительность

43 disable-model-invocation: true

44 ---

45 

46 Проверьте выбранный мной код или недавние изменения на предмет:

47 - Потенциальных ошибок или граничных случаев

48 - Проблем безопасности

49 - Проблем производительности

50 - Улучшений читаемости

51 

52 Будьте лаконичны и конкретны.

53 ```

54 </Step>

55 

56 <Step title="Создание манифеста плагина">

57 Создайте файл `plugin.json`, который описывает плагин. Манифест находится в каталоге `.claude-plugin/`.

58 

59 ```json my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json theme={null}

60 {

61 "name": "quality-review-plugin",

62 "description": "Добавляет skill /quality-review для быстрой проверки кода",

63 "version": "1.0.0"

64 }

65 ```

66 

67 <Note>

68 Установка `version` означает, что пользователи получают обновления только при изменении этого поля, поэтому увеличивайте его при каждом выпуске. Если вы опустите `version` и разместите этот marketplace в git, каждый коммит автоматически считается новой версией. См. [Разрешение версий](#version-resolution-and-release-channels), чтобы выбрать правильный подход.

69 </Note>

70 </Step>

71 

72 <Step title="Создание файла marketplace">

73 Создайте каталог marketplace, который перечисляет ваш плагин.

74 

75 ```json my-marketplace/.claude-plugin/marketplace.json theme={null}

76 {

77 "name": "my-plugins",

78 "owner": {

79 "name": "Ваше имя"

80 },

81 "plugins": [

82 {

83 "name": "quality-review-plugin",

84 "source": "./plugins/quality-review-plugin",

85 "description": "Добавляет skill /quality-review для быстрой проверки кода"

86 }

87 ]

88 }

89 ```

90 </Step>

91 

92 <Step title="Добавление и установка">

93 Добавьте marketplace и установите плагин.

94 

95 ```shell theme={null}

96 /plugin marketplace add ./my-marketplace

97 /plugin install quality-review-plugin@my-plugins

98 ```

99 </Step>

100 

101 <Step title="Попробуйте">

102 Выберите некоторый код в вашем редакторе и запустите вашу новую skill.

103 

104 ```shell theme={null}

105 /quality-review

106 ```

107 </Step>

108</Steps>

109 

110Чтобы узнать больше о том, что могут делать плагины, включая hooks, агентов, MCP servers и LSP servers, см. [Плагины](/ru/plugins).

111 

112<Note>

113 **Как устанавливаются плагины**: Когда пользователи устанавливают плагин, Claude Code копирует каталог плагина в место кэша. Это означает, что плагины не могут ссылаться на файлы вне их каталога, используя пути вроде `../shared-utils`, потому что эти файлы не будут скопированы.

114 

115 Если вам нужно совместно использовать файлы между плагинами, используйте символические ссылки. См. [Кэширование плагинов и разрешение файлов](/ru/plugins-reference#plugin-caching-and-file-resolution) для получения подробной информации.

116</Note>

117 

118## Создание файла marketplace

119 

120Создайте `.claude-plugin/marketplace.json` в корне вашего репозитория. Этот файл определяет имя вашего marketplace, информацию о владельце и список плагинов с их источниками.

121 

122Каждая запись плагина требует как минимум `name` и `source` (откуда его получить). См. [полную схему](#marketplace-schema) ниже для всех доступных полей.

123 

124```json theme={null}

125{

126 "name": "company-tools",

127 "owner": {

128 "name": "DevTools Team",

129 "email": "devtools@example.com"

130 },

131 "plugins": [

132 {

133 "name": "code-formatter",

134 "source": "./plugins/formatter",

135 "description": "Автоматическое форматирование кода при сохранении",

136 "version": "2.1.0",

137 "author": {

138 "name": "DevTools Team"

139 }

140 },

141 {

142 "name": "deployment-tools",

143 "source": {

144 "source": "github",

145 "repo": "company/deploy-plugin"

146 },

147 "description": "Инструменты автоматизации развертывания"

148 }

149 ]

150}

151```

152 

153## Схема marketplace

154 

155### Обязательные поля

156 

157| Поле | Тип | Описание | Пример |

158| :-------- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- |

159| `name` | string | Идентификатор marketplace (kebab-case, без пробелов). Это общедоступное поле: пользователи видят его при установке плагинов (например, `/plugin install my-tool@your-marketplace`). | `"acme-tools"` |

160| `owner` | object | Информация о сопровождающем marketplace ([см. поля ниже](#owner-fields)) | |

161| `plugins` | array | Список доступных плагинов | См. ниже |

162 

163<Note>

164 **Зарезервированные имена**: Следующие имена marketplace зарезервированы для официального использования Anthropic и не могут использоваться сторонними marketplace: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `knowledge-work-plugins`, `life-sciences`. Имена, которые выдают себя за официальные marketplace (например, `official-claude-plugins` или `anthropic-tools-v2`), также заблокированы.

165</Note>

166 

167### Поля владельца

168 

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

170| :------ | :----- | :---------- | :------------------------------------------------- |

171| `name` | string | Да | Имя сопровождающего или команды |

172| `email` | string | Нет | Контактный адрес электронной почты сопровождающего |

173 

174### Дополнительные поля

175 

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

177| :------------------------------------ | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

178| `$schema` | string | URL JSON Schema для автодополнения редактора и валидации. Claude Code игнорирует это поле при загрузке. |

179| `description` | string | Краткое описание marketplace |

180| `version` | string | Версия манифеста marketplace |

181| `metadata.pluginRoot` | string | Базовый каталог, добавляемый к относительным путям источников плагинов (например, `"./plugins"` позволяет вам писать `"source": "formatter"` вместо `"source": "./plugins/formatter"`) |

182| `allowCrossMarketplaceDependenciesOn` | array | Другие marketplace, на которые плагины в этом marketplace могут зависеть. Зависимости от marketplace, не указанного здесь, блокируются при установке. См. [Зависимость от плагина из другого marketplace](/ru/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |

183 

184`description` и `version` также принимаются в `metadata` для обратной совместимости.

185 

186## Записи плагинов

187 

188Каждая запись плагина в массиве `plugins` описывает плагин и где его найти. Вы можете включить любое поле из [схемы манифеста плагина](/ru/plugins-reference#plugin-manifest-schema) (например, `description`, `version`, `author`, `commands`, `hooks` и т. д.), плюс эти поля, специфичные для marketplace: `source`, `category`, `tags` и `strict`.

189 

190### Обязательные поля

191 

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

193| :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

194| `name` | string | Идентификатор плагина (kebab-case, без пробелов). Это общедоступное поле: пользователи видят его при установке (например, `/plugin install my-plugin@marketplace`). |

195| `source` | string\|object | Откуда получить плагин (см. [Источники плагинов](#plugin-sources) ниже) |

196 

197### Дополнительные поля плагина

198 

199**Поля стандартных метаданных:**

200 

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

202| :------------ | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

203| `description` | string | Краткое описание плагина |

204| `version` | string | Версия плагина. Если установлено (здесь или в `plugin.json`), плагин закреплен на этой строке и пользователи получают обновления только при её изменении. Опустите, чтобы вернуться к SHA коммита git. См. [Разрешение версий](#version-resolution-and-release-channels). |

205| `author` | object | Информация об авторе плагина (`name` обязательно, `email` опционально) |

206| `homepage` | string | URL домашней страницы или документации плагина |

207| `repository` | string | URL репозитория исходного кода |

208| `license` | string | Идентификатор лицензии SPDX (например, MIT, Apache-2.0) |

209| `keywords` | array | Теги для обнаружения и категоризации плагинов |

210| `category` | string | Категория плагина для организации |

211| `tags` | array | Теги для поиска |

212| `strict` | boolean | Контролирует, является ли `plugin.json` авторитетом для определений компонентов (по умолчанию: true). См. [Strict mode](#strict-mode) ниже. |

213 

214**Поля конфигурации компонентов:**

215 

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

217| :----------- | :------------- | :--------------------------------------------------------------------- |

218| `skills` | string\|array | Пользовательские пути к каталогам skills, содержащим `<name>/SKILL.md` |

219| `commands` | string\|array | Пользовательские пути к плоским файлам `.md` skills или каталогам |

220| `agents` | string\|array | Пользовательские пути к файлам агентов |

221| `hooks` | string\|object | Конфигурация пользовательских hooks или путь к файлу hooks |

222| `mcpServers` | string\|object | Конфигурации MCP server или путь к конфигурации MCP |

223| `lspServers` | string\|object | Конфигурации LSP server или путь к конфигурации LSP |

224 

225## Источники плагинов

226 

227Источники плагинов указывают Claude Code, откуда получить каждый отдельный плагин, указанный в вашем marketplace. Они устанавливаются в поле `source` каждой записи плагина в `marketplace.json`.

228 

229После того как плагин клонирован или скопирован на локальную машину, он копируется в локальный кэш плагинов с версией в `~/.claude/plugins/cache`.

230 

231| Источник | Тип | Поля | Примечания |

232| ------------------ | ------------------------------------ | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |

233| Относительный путь | `string` (например, `"./my-plugin"`) | — | Локальный каталог в репозитории marketplace. Должен начинаться с `./`. Разрешается относительно корня marketplace, а не каталога `.claude-plugin/` |

234| `github` | object | `repo`, `ref?`, `sha?` | |

235| `url` | object | `url`, `ref?`, `sha?` | Источник URL Git |

236| `git-subdir` | object | `url`, `path`, `ref?`, `sha?` | Подкаталог в репозитории Git. Клонирует разреженно, чтобы минимизировать пропускную способность для монорепозиториев |

237| `npm` | object | `package`, `version?`, `registry?` | Установлено через `npm install` |

238 

239<Note>

240 **Источники marketplace и источники плагинов**: Это разные концепции, которые контролируют разные вещи.

241 

242 * **Источник marketplace** — откуда получить сам каталог `marketplace.json`. Устанавливается, когда пользователи запускают `/plugin marketplace add` или в параметрах `extraKnownMarketplaces`. Поддерживает `ref` (ветка/тег), но не `sha`.

243 * **Источник плагина** — откуда получить отдельный плагин, указанный в marketplace. Устанавливается в поле `source` каждой записи плагина внутри `marketplace.json`. Поддерживает как `ref` (ветка/тег), так и `sha` (точный коммит).

244 

245 Например, marketplace, размещенный в `acme-corp/plugin-catalog` (источник marketplace), может перечислять плагин, полученный из `acme-corp/code-formatter` (источник плагина). Источник marketplace и источник плагина указывают на разные репозитории и закреплены независимо.

246</Note>

247 

248### Относительные пути

249 

250Для плагинов в одном репозитории используйте путь, начинающийся с `./`:

251 

252```json theme={null}

253{

254 "name": "my-plugin",

255 "source": "./plugins/my-plugin"

256}

257```

258 

259Пути разрешаются относительно корня marketplace, который является каталогом, содержащим `.claude-plugin/`. В приведенном выше примере `./plugins/my-plugin` указывает на `<repo>/plugins/my-plugin`, даже если `marketplace.json` находится в `<repo>/.claude-plugin/marketplace.json`. Не используйте `../` для ссылки на пути вне корня marketplace.

260 

261<Note>

262 Относительные пути работают только, когда пользователи добавляют ваш marketplace через Git (GitHub, GitLab или URL Git). Если пользователи добавляют ваш marketplace через прямой URL к файлу `marketplace.json`, относительные пути не будут разрешены правильно. Для распространения на основе URL используйте вместо этого источники GitHub, npm или URL Git. См. [Устранение неполадок](#plugins-with-relative-paths-fail-in-url-based-marketplaces) для получения подробной информации.

263</Note>

264 

265### Репозитории GitHub

266 

267```json theme={null}

268{

269 "name": "github-plugin",

270 "source": {

271 "source": "github",

272 "repo": "owner/plugin-repo"

273 }

274}

275```

276 

277Вы можете закрепить определенную ветку, тег или коммит:

278 

279```json theme={null}

280{

281 "name": "github-plugin",

282 "source": {

283 "source": "github",

284 "repo": "owner/plugin-repo",

285 "ref": "v2.0.0",

286 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

287 }

288}

289```

290 

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

292| :----- | :----- | :--------------------------------------------------------------------------------- |

293| `repo` | string | Обязательно. Репозиторий GitHub в формате `owner/repo` |

294| `ref` | string | Опционально. Ветка или тег Git (по умолчанию ветка по умолчанию репозитория) |

295| `sha` | string | Опционально. Полный 40-символьный SHA коммита Git для закрепления на точной версии |

296 

297### Репозитории Git

298 

299```json theme={null}

300{

301 "name": "git-plugin",

302 "source": {

303 "source": "url",

304 "url": "https://gitlab.com/team/plugin.git"

305 }

306}

307```

308 

309Вы можете закрепить определенную ветку, тег или коммит:

310 

311```json theme={null}

312{

313 "name": "git-plugin",

314 "source": {

315 "source": "url",

316 "url": "https://gitlab.com/team/plugin.git",

317 "ref": "main",

318 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

319 }

320}

321```

322 

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

324| :---- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |

325| `url` | string | Обязательно. Полный URL репозитория Git (`https://` или `git@`). Суффикс `.git` опционален, поэтому URL Azure DevOps и AWS CodeCommit без суффикса работают |

326| `ref` | string | Опционально. Ветка или тег Git (по умолчанию ветка по умолчанию репозитория) |

327| `sha` | string | Опционально. Полный 40-символьный SHA коммита Git для закрепления на точной версии |

328 

329### Подкаталоги Git

330 

331Используйте `git-subdir` для указания плагина, который находится в подкаталоге репозитория Git. Claude Code использует разреженный, частичный клон для получения только подкаталога, минимизируя пропускную способность для больших монорепозиториев.

332 

333```json theme={null}

334{

335 "name": "my-plugin",

336 "source": {

337 "source": "git-subdir",

338 "url": "https://github.com/acme-corp/monorepo.git",

339 "path": "tools/claude-plugin"

340 }

341}

342```

343 

344Вы можете закрепить определенную ветку, тег или коммит:

345 

346```json theme={null}

347{

348 "name": "my-plugin",

349 "source": {

350 "source": "git-subdir",

351 "url": "https://github.com/acme-corp/monorepo.git",

352 "path": "tools/claude-plugin",

353 "ref": "v2.0.0",

354 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

355 }

356}

357```

358 

359Поле `url` также принимает сокращение GitHub (`owner/repo`) или SSH URL (`git@github.com:owner/repo.git`).

360 

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

362| :----- | :----- | :------------------------------------------------------------------------------------------------- |

363| `url` | string | Обязательно. URL репозитория Git, сокращение GitHub `owner/repo` или SSH URL |

364| `path` | string | Обязательно. Путь подкаталога в репозитории, содержащий плагин (например, `"tools/claude-plugin"`) |

365| `ref` | string | Опционально. Ветка или тег Git (по умолчанию ветка по умолчанию репозитория) |

366| `sha` | string | Опционально. Полный 40-символьный SHA коммита Git для закрепления на точной версии |

367 

368### Пакеты npm

369 

370Плагины, распространяемые как пакеты npm, устанавливаются с помощью `npm install`. Это работает с любым пакетом в общедоступном реестре npm или в частном реестре, который размещает ваша команда.

371 

372```json theme={null}

373{

374 "name": "my-npm-plugin",

375 "source": {

376 "source": "npm",

377 "package": "@acme/claude-plugin"

378 }

379}

380```

381 

382Чтобы закрепить определенную версию, добавьте поле `version`:

383 

384```json theme={null}

385{

386 "name": "my-npm-plugin",

387 "source": {

388 "source": "npm",

389 "package": "@acme/claude-plugin",

390 "version": "2.1.0"

391 }

392}

393```

394 

395Для установки из частного или внутреннего реестра добавьте поле `registry`:

396 

397```json theme={null}

398{

399 "name": "my-npm-plugin",

400 "source": {

401 "source": "npm",

402 "package": "@acme/claude-plugin",

403 "version": "^2.0.0",

404 "registry": "https://npm.example.com"

405 }

406}

407```

408 

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

410| :--------- | :----- | :-------------------------------------------------------------------------------------------------- |

411| `package` | string | Обязательно. Имя пакета или область пакета (например, `@org/plugin`) |

412| `version` | string | Опционально. Версия или диапазон версий (например, `2.1.0`, `^2.0.0`, `~1.5.0`) |

413| `registry` | string | Опционально. Пользовательский URL реестра npm. По умолчанию системный реестр npm (обычно npmjs.org) |

414 

415### Расширенные записи плагинов

416 

417Этот пример показывает запись плагина, использующую множество дополнительных полей, включая пользовательские пути для команд, агентов, hooks и MCP servers:

418 

419```json theme={null}

420{

421 "name": "enterprise-tools",

422 "source": {

423 "source": "github",

424 "repo": "company/enterprise-plugin"

425 },

426 "description": "Инструменты автоматизации корпоративного рабочего процесса",

427 "version": "2.1.0",

428 "author": {

429 "name": "Enterprise Team",

430 "email": "enterprise@example.com"

431 },

432 "homepage": "https://docs.example.com/plugins/enterprise-tools",

433 "repository": "https://github.com/company/enterprise-plugin",

434 "license": "MIT",

435 "keywords": ["enterprise", "workflow", "automation"],

436 "category": "productivity",

437 "commands": [

438 "./commands/core/",

439 "./commands/enterprise/",

440 "./commands/experimental/preview.md"

441 ],

442 "agents": ["./agents/security-reviewer.md", "./agents/compliance-checker.md"],

443 "hooks": {

444 "PostToolUse": [

445 {

446 "matcher": "Write|Edit",

447 "hooks": [

448 {

449 "type": "command",

450 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"

451 }

452 ]

453 }

454 ]

455 },

456 "mcpServers": {

457 "enterprise-db": {

458 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

459 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"]

460 }

461 },

462 "strict": false

463}

464```

465 

466Ключевые моменты, на которые следует обратить внимание:

467 

468* **`commands` и `agents`**: Вы можете указать несколько каталогов или отдельные файлы. Пути относительны к корню плагина.

469* **`${CLAUDE_PLUGIN_ROOT}`**: Используйте эту переменную в hooks и конфигурациях MCP server для ссылки на файлы в каталоге установки плагина. Это необходимо, потому что плагины копируются в место кэша при установке. Для зависимостей или состояния, которое должно сохраняться при обновлениях плагина, используйте [`${CLAUDE_PLUGIN_DATA}`](/ru/plugins-reference#persistent-data-directory) вместо этого.

470* **`strict: false`**: Поскольку это установлено на false, плагину не нужен собственный `plugin.json`. Запись marketplace определяет все. См. [Strict mode](#strict-mode) ниже.

471 

472### Strict mode

473 

474Поле `strict` контролирует, является ли `plugin.json` авторитетом для определений компонентов (skills, агенты, hooks, MCP servers, стили вывода).

475 

476| Значение | Поведение |

477| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |

478| `true` (по умолчанию) | `plugin.json` является авторитетом. Запись marketplace может дополнить его дополнительными компонентами, и оба источника объединяются. |

479| `false` | Запись marketplace является полным определением. Если плагин также имеет `plugin.json`, который объявляет компоненты, это конфликт и плагин не загружается. |

480 

481**Когда использовать каждый режим:**

482 

483* **`strict: true`**: плагин имеет собственный `plugin.json` и управляет своими компонентами. Запись marketplace может добавить дополнительные skills или hooks сверху. Это значение по умолчанию и работает для большинства плагинов.

484* **`strict: false`**: оператор marketplace хочет полный контроль. Репозиторий плагина предоставляет необработанные файлы, и запись marketplace определяет, какие из этих файлов открыты как skills, агенты, hooks и т. д. Полезно, когда оператор marketplace переструктурирует или курирует компоненты плагина иначе, чем предполагал автор плагина.

485 

486## Размещение и распространение marketplace

487 

488### Размещение на GitHub (рекомендуется)

489 

490GitHub обеспечивает самый простой метод распространения:

491 

4921. **Создание репозитория**: Установите новый репозиторий для вашего marketplace

4932. **Добавление файла marketplace**: Создайте `.claude-plugin/marketplace.json` с определениями ваших плагинов

4943. **Совместное использование с командами**: Пользователи добавляют ваш marketplace с помощью `/plugin marketplace add owner/repo`

495 

496**Преимущества**: Встроенное управление версиями, отслеживание проблем и функции совместной работы команды.

497 

498### Размещение на других сервисах Git

499 

500Любой сервис хостинга Git работает, например GitLab, Bitbucket и самостоятельно размещаемые серверы. Пользователи добавляют с полным URL репозитория:

501 

502```shell theme={null}

503/plugin marketplace add https://gitlab.com/company/plugins.git

504```

505 

506### Частные репозитории

507 

508Claude Code поддерживает установку плагинов из частных репозиториев. Для ручной установки и обновлений Claude Code использует ваши существующие помощники учетных данных Git, поэтому доступ HTTPS через `gh auth login`, macOS Keychain или `git-credential-store` работает так же, как в вашем терминале. Доступ SSH работает, пока хост уже находится в вашем файле `known_hosts` и ключ загружен в `ssh-agent`, так как Claude Code подавляет интерактивные подсказки SSH для отпечатка хоста и пароля ключа.

509 

510Фоновые автоматические обновления запускаются при запуске без помощников учетных данных, так как интерактивные подсказки блокировали бы запуск Claude Code. Чтобы включить автоматические обновления для частных marketplace, установите соответствующий токен аутентификации в вашей среде:

511 

512| Поставщик | Переменные окружения | Примечания |

513| :-------- | :---------------------------- | :------------------------------------------------ |

514| GitHub | `GITHUB_TOKEN` или `GH_TOKEN` | Личный токен доступа или токен GitHub App |

515| GitLab | `GITLAB_TOKEN` или `GL_TOKEN` | Личный токен доступа или токен проекта |

516| Bitbucket | `BITBUCKET_TOKEN` | Пароль приложения или токен доступа к репозиторию |

517 

518Установите токен в конфигурацию вашей оболочки (например, `.bashrc`, `.zshrc`) или передайте его при запуске Claude Code:

519 

520```bash theme={null}

521export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx

522```

523 

524<Note>

525 Для сред CI/CD настройте токен как переменную окружения секрета. GitHub Actions автоматически предоставляет `GITHUB_TOKEN` для репозиториев в одной организации.

526</Note>

527 

528### Тестирование локально перед распространением

529 

530Протестируйте ваш marketplace локально перед совместным использованием:

531 

532```shell theme={null}

533/plugin marketplace add ./my-local-marketplace

534/plugin install test-plugin@my-local-marketplace

535```

536 

537Для полного диапазона команд добавления (GitHub, URL Git, локальные пути, удаленные URL), см. [Добавление marketplace](/ru/discover-plugins#add-marketplaces).

538 

539### Требование marketplace для вашей команды

540 

541Вы можете настроить ваш репозиторий так, чтобы члены команды автоматически получали предложение установить ваш marketplace, когда они доверяют папке проекта. Добавьте ваш marketplace в `.claude/settings.json`:

542 

543```json theme={null}

544{

545 "extraKnownMarketplaces": {

546 "company-tools": {

547 "source": {

548 "source": "github",

549 "repo": "your-org/claude-plugins"

550 }

551 }

552 }

553}

554```

555 

556Вы также можете указать, какие плагины должны быть включены по умолчанию:

557 

558```json theme={null}

559{

560 "enabledPlugins": {

561 "code-formatter@company-tools": true,

562 "deployment-tools@company-tools": true

563 }

564}

565```

566 

567Для полных параметров конфигурации см. [Параметры плагинов](/ru/settings#plugin-settings).

568 

569<Note>

570 Если вы используете локальный источник `directory` или `file` с относительным путем, путь разрешается относительно основного checkout вашего репозитория. Когда вы запускаете Claude Code из git worktree, путь все еще указывает на основной checkout, поэтому все worktrees совместно используют одно и то же расположение marketplace. Состояние marketplace хранится один раз для каждого пользователя в `~/.claude/plugins/known_marketplaces.json`, а не для каждого проекта.

571</Note>

572 

573### Предварительное заполнение плагинов для контейнеров

574 

575Для образов контейнеров и сред CI вы можете предварительно заполнить каталог плагинов во время сборки, чтобы Claude Code запускался с уже доступными marketplace и плагинами, без клонирования во время выполнения. Установите переменную окружения `CLAUDE_CODE_PLUGIN_SEED_DIR` на этот каталог.

576 

577Чтобы наслоить несколько каталогов seed, разделите пути с `:` на Unix или `;` на Windows. Claude Code ищет каждый каталог по порядку, и первый seed, содержащий данный marketplace или кэш плагина, побеждает.

578 

579Каталог seed отражает структуру `~/.claude/plugins`:

580 

581```

582$CLAUDE_CODE_PLUGIN_SEED_DIR/

583 known_marketplaces.json

584 marketplaces/<name>/...

585 cache/<marketplace>/<plugin>/<version>/...

586```

587 

588Чтобы построить каталог seed, запустите Claude Code один раз во время сборки образа, установите нужные вам плагины, затем скопируйте полученный каталог `~/.claude/plugins` в ваш образ и укажите `CLAUDE_CODE_PLUGIN_SEED_DIR` на него.

589 

590Чтобы пропустить шаг копирования, установите `CLAUDE_CODE_PLUGIN_CACHE_DIR` на путь целевого seed во время сборки, чтобы плагины устанавливались непосредственно туда:

591 

592```bash theme={null}

593CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin marketplace add your-org/plugins

594CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin install my-tool@your-plugins

595```

596 

597Затем установите `CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed` в среде выполнения вашего контейнера, чтобы Claude Code читал из seed при запуске.

598 

599При запуске Claude Code регистрирует marketplace, найденные в `known_marketplaces.json` seed, в основную конфигурацию и использует кэши плагинов, найденные под `cache/`, на месте без повторного клонирования. Это работает как в интерактивном режиме, так и в неинтерактивном режиме с флагом `-p`.

600 

601Детали поведения:

602 

603* **Только для чтения**: каталог seed никогда не записывается. Автоматические обновления отключены для seed marketplace, так как git pull не удастся на файловой системе только для чтения.

604* **Записи seed имеют приоритет**: marketplace, объявленные в seed, перезаписывают любые совпадающие записи в конфигурации пользователя при каждом запуске. Чтобы отказаться от seed плагина, используйте `/plugin disable` вместо удаления marketplace.

605* **Разрешение пути**: Claude Code находит содержимое marketplace, проверяя `$CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/` во время выполнения, а не доверяя путям, хранящимся внутри JSON seed. Это означает, что seed работает правильно, даже если он смонтирован по другому пути, чем где он был построен.

606* **Мутация заблокирована**: запуск `/plugin marketplace remove` или `/plugin marketplace update` против seed-управляемого marketplace не удается с указанием попросить вашего администратора обновить образ seed.

607* **Компонуется с параметрами**: если `extraKnownMarketplaces` или `enabledPlugins` объявляют marketplace, который уже существует в seed, Claude Code использует копию seed вместо клонирования.

608 

609### Ограничения управляемого marketplace

610 

611Для организаций, требующих строгого контроля над источниками плагинов, администраторы могут ограничить, какие marketplace плагинов пользователи могут добавлять, используя параметр [`strictKnownMarketplaces`](/ru/settings#strictknownmarketplaces) в управляемых параметрах.

612 

613Когда `strictKnownMarketplaces` настроен в управляемых параметрах, поведение ограничения зависит от значения:

614 

615| Значение | Поведение |

616| ---------------------------- | ---------------------------------------------------------------------------------------------- |

617| Не определено (по умолчанию) | Нет ограничений. Пользователи могут добавлять любой marketplace |

618| Пустой массив `[]` | Полная блокировка. Пользователи не могут добавлять новые marketplace |

619| Список источников | Пользователи могут добавлять только marketplace, которые точно совпадают со списком разрешений |

620 

621#### Общие конфигурации

622 

623Отключение всех добавлений marketplace:

624 

625```json theme={null}

626{

627 "strictKnownMarketplaces": []

628}

629```

630 

631Разрешение только определенных marketplace:

632 

633```json theme={null}

634{

635 "strictKnownMarketplaces": [

636 {

637 "source": "github",

638 "repo": "acme-corp/approved-plugins"

639 },

640 {

641 "source": "github",

642 "repo": "acme-corp/security-tools",

643 "ref": "v2.0"

644 },

645 {

646 "source": "url",

647 "url": "https://plugins.example.com/marketplace.json"

648 }

649 ]

650}

651```

652 

653Разрешение всех marketplace с внутреннего сервера Git с использованием сопоставления шаблонов регулярных выражений на хосте. Это рекомендуемый подход для [GitHub Enterprise Server](/ru/github-enterprise-server#plugin-marketplaces-on-ghes) или самостоятельно размещаемых экземпляров GitLab:

654 

655```json theme={null}

656{

657 "strictKnownMarketplaces": [

658 {

659 "source": "hostPattern",

660 "hostPattern": "^github\\.example\\.com$"

661 }

662 ]

663}

664```

665 

666Разрешение marketplace на основе файловой системы из определенного каталога с использованием сопоставления шаблонов регулярных выражений на пути:

667 

668```json theme={null}

669{

670 "strictKnownMarketplaces": [

671 {

672 "source": "pathPattern",

673 "pathPattern": "^/opt/approved/"

674 }

675 ]

676}

677```

678 

679Используйте `".*"` как `pathPattern` для разрешения любого пути файловой системы при одновременном контроле сетевых источников с помощью `hostPattern`.

680 

681<Note>

682 `strictKnownMarketplaces` ограничивает то, что пользователи могут добавлять, но не регистрирует marketplace самостоятельно. Чтобы сделать разрешенные marketplace доступными автоматически без запуска пользователями `/plugin marketplace add`, объедините его с [`extraKnownMarketplaces`](/ru/settings#extraknownmarketplaces) в одном файле `managed-settings.json`. См. [Использование обоих вместе](/ru/settings#strictknownmarketplaces).

683</Note>

684 

685#### Как работают ограничения

686 

687Ограничения проверяются перед любой сетевой или файловой операцией. Проверка выполняется при добавлении marketplace и при установке, обновлении, обновлении и автоматическом обновлении плагина. Если marketplace был добавлен до настройки политики и его источник больше не совпадает со списком разрешений, Claude Code отказывает в установке или обновлении плагинов из него. То же самое применяется к `blockedMarketplaces`.

688 

689Список разрешений использует точное сопоставление для большинства типов источников. Чтобы marketplace был разрешен, все указанные поля должны совпадать точно:

690 

691* Для источников GitHub: `repo` обязателен, и `ref` или `path` также должны совпадать, если указаны в списке разрешений

692* Для источников URL: полный URL должен совпадать точно

693* Для источников `hostPattern`: хост marketplace сопоставляется с шаблоном регулярного выражения

694* Для источников `pathPattern`: путь файловой системы marketplace сопоставляется с шаблоном регулярного выражения

695 

696Поскольку `strictKnownMarketplaces` установлен в [управляемых параметрах](/ru/settings#settings-files), отдельные пользователи и конфигурации проекта не могут переопределить эти ограничения.

697 

698Для полных деталей конфигурации, включая все поддерживаемые типы источников и сравнение с `extraKnownMarketplaces`, см. [справку strictKnownMarketplaces](/ru/settings#strictknownmarketplaces).

699 

700### Разрешение версий и каналы выпуска

701 

702Версии плагинов определяют пути кэша и обнаружение обновлений: если разрешенная версия совпадает с тем, что уже есть у пользователя, `/plugin update` и автоматическое обновление пропускают плагин.

703 

704Claude Code разрешает версию плагина из первого из этих параметров, который установлен:

705 

7061. `version` в `plugin.json` плагина

7072. `version` в записи marketplace плагина

7083. SHA коммита Git источника плагина

709 

710Для типов источников на основе Git `github`, `url`, `git-subdir` и относительных путей внутри marketplace, размещенного на Git, вы можете полностью опустить `version` и каждый новый коммит будет рассматриваться как новая версия. Это самая простая установка для внутренних или активно разрабатываемых плагинов.

711 

712<Warning>

713 Установка `version` закрепляет плагин. Если `plugin.json` объявляет `"version": "1.0.0"`, отправка новых коммитов без изменения этой строки ничего не делает для существующих пользователей, потому что Claude Code видит ту же версию и сохраняет кэшированную копию. Увеличивайте поле при каждом выпуске или опустите его, чтобы использовать SHA коммита.

714 

715 Избегайте установки `version` одновременно в `plugin.json` и в записи marketplace. Значение `plugin.json` всегда побеждает молча, поэтому устаревшая версия манифеста может скрыть версию, которую вы установили в `marketplace.json`.

716</Warning>

717 

718#### Установка каналов выпуска

719 

720Для поддержки каналов выпуска "stable" и "latest" для ваших плагинов вы можете установить два marketplace, которые указывают на разные refs или SHAs одного репозитория. Затем вы можете назначить два marketplace разным группам пользователей через [управляемые параметры](/ru/settings#settings-files).

721 

722<Warning>

723 Каждый канал должен разрешаться в другую версию. Если вы используете явные версии, `plugin.json` должен объявлять другую `version` в каждом закрепленном ref. Если вы опустите `version`, различные SHA коммитов уже различают каналы. Если два refs разрешаются в одну и ту же строку версии, Claude Code рассматривает их как идентичные и пропускает обновление.

724</Warning>

725 

726##### Пример

727 

728```json theme={null}

729{

730 "name": "stable-tools",

731 "plugins": [

732 {

733 "name": "code-formatter",

734 "source": {

735 "source": "github",

736 "repo": "acme-corp/code-formatter",

737 "ref": "stable"

738 }

739 }

740 ]

741}

742```

743 

744```json theme={null}

745{

746 "name": "latest-tools",

747 "plugins": [

748 {

749 "name": "code-formatter",

750 "source": {

751 "source": "github",

752 "repo": "acme-corp/code-formatter",

753 "ref": "latest"

754 }

755 }

756 ]

757}

758```

759 

760##### Назначение каналов группам пользователей

761 

762Назначьте каждый marketplace соответствующей группе пользователей через управляемые параметры. Например, стабильная группа получает:

763 

764```json theme={null}

765{

766 "extraKnownMarketplaces": {

767 "stable-tools": {

768 "source": {

769 "source": "github",

770 "repo": "acme-corp/stable-tools"

771 }

772 }

773 }

774}

775```

776 

777Группа ранних доступов получает вместо этого `latest-tools`:

778 

779```json theme={null}

780{

781 "extraKnownMarketplaces": {

782 "latest-tools": {

783 "source": {

784 "source": "github",

785 "repo": "acme-corp/latest-tools"

786 }

787 }

788 }

789}

790```

791 

792#### Закрепление версий зависимостей плагинов

793 

794Плагин может ограничить свои зависимости диапазоном semver, чтобы обновления зависимости не нарушили зависимый плагин. См. [Ограничение версий зависимостей плагинов](/ru/plugin-dependencies) для соглашения о тегах Git `{plugin-name}--v{version}`, синтаксиса диапазона и того, как несколько ограничений на одну и ту же зависимость объединяются.

795 

796## Валидация и тестирование

797 

798Протестируйте ваш marketplace перед совместным использованием.

799 

800Проверьте синтаксис JSON вашего marketplace:

801 

802```bash theme={null}

803claude plugin validate .

804```

805 

806Или из Claude Code:

807 

808```shell theme={null}

809/plugin validate .

810```

811 

812Добавьте marketplace для тестирования:

813 

814```shell theme={null}

815/plugin marketplace add ./path/to/marketplace

816```

817 

818Установите тестовый плагин, чтобы проверить, что все работает:

819 

820```shell theme={null}

821/plugin install test-plugin@marketplace-name

822```

823 

824Для полного диапазона рабочих процессов тестирования плагинов см. [Тестирование ваших плагинов локально](/ru/plugins#test-your-plugins-locally). Для технического устранения неполадок см. [Справка плагинов](/ru/plugins-reference).

825 

826## Управление marketplace из CLI

827 

828Claude Code предоставляет неинтерактивные подкоманды `claude plugin marketplace` для написания скриптов и автоматизации. Они эквивалентны командам `/plugin marketplace`, доступным в интерактивном сеансе.

829 

830### Plugin marketplace add

831 

832Добавьте marketplace из репозитория GitHub, URL Git, удаленного URL или локального пути.

833 

834```bash theme={null}

835claude plugin marketplace add <source> [options]

836```

837 

838**Аргументы:**

839 

840* `<source>`: Сокращение GitHub `owner/repo`, URL Git, удаленный URL к файлу `marketplace.json` или путь локального каталога. Чтобы закрепить на ветке или теге, добавьте `@ref` к сокращению GitHub или `#ref` к URL Git

841 

842**Параметры:**

843 

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

845| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | :----------- |

846| `--scope <scope>` | Где объявить marketplace: `user`, `project` или `local`. См. [Области установки плагинов](/ru/plugins-reference#plugin-installation-scopes) | `user` |

847| `--sparse <paths...>` | Ограничить checkout определенными каталогами через git sparse-checkout. Полезно для монорепозиториев | |

848 

849Добавьте marketplace из GitHub, используя сокращение `owner/repo`:

850 

851```bash theme={null}

852claude plugin marketplace add acme-corp/claude-plugins

853```

854 

855Закрепите на определенной ветке или теге с помощью `@ref`:

856 

857```bash theme={null}

858claude plugin marketplace add acme-corp/claude-plugins@v2.0

859```

860 

861Добавьте из URL Git на хосте, отличном от GitHub:

862 

863```bash theme={null}

864claude plugin marketplace add https://gitlab.example.com/team/plugins.git

865```

866 

867Добавьте из удаленного URL, который служит файлом `marketplace.json` напрямую:

868 

869```bash theme={null}

870claude plugin marketplace add https://example.com/marketplace.json

871```

872 

873Добавьте из локального каталога для тестирования:

874 

875```bash theme={null}

876claude plugin marketplace add ./my-marketplace

877```

878 

879Объявите marketplace в области проекта, чтобы он был общим с вашей командой через `.claude/settings.json`:

880 

881```bash theme={null}

882claude plugin marketplace add acme-corp/claude-plugins --scope project

883```

884 

885Для монорепозитория ограничьте checkout каталогами, содержащими содержимое плагина:

886 

887```bash theme={null}

888claude plugin marketplace add acme-corp/monorepo --sparse .claude-plugin plugins

889```

890 

891### Plugin marketplace list

892 

893Перечислите все настроенные marketplace.

894 

895```bash theme={null}

896claude plugin marketplace list [options]

897```

898 

899**Параметры:**

900 

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

902| :------- | :--------------- |

903| `--json` | Вывести как JSON |

904 

905### Plugin marketplace remove

906 

907Удалите настроенный marketplace. Также принимается псевдоним `rm`.

908 

909```bash theme={null}

910claude plugin marketplace remove <name>

911```

912 

913**Аргументы:**

914 

915* `<name>`: имя marketplace для удаления, как показано в `claude plugin marketplace list`. Это `name` из `marketplace.json`, а не источник, который вы передали в `add`

916 

917<Warning>

918 Удаление marketplace также удаляет все плагины, которые вы установили из него. Чтобы обновить marketplace без потери установленных плагинов, используйте `claude plugin marketplace update` вместо этого.

919</Warning>

920 

921### Plugin marketplace update

922 

923Обновите marketplace из их источников, чтобы получить новые плагины и изменения версий.

924 

925```bash theme={null}

926claude plugin marketplace update [name]

927```

928 

929**Аргументы:**

930 

931* `[name]`: имя marketplace для обновления, как показано в `claude plugin marketplace list`. Обновляет все marketplace, если опущено

932 

933Оба `remove` и `update` не удаются при запуске против seed-управляемого marketplace, который доступен только для чтения. При обновлении всех marketplace записи, управляемые seed, пропускаются, и другие marketplace все еще обновляются. Чтобы изменить плагины, предоставленные seed, попросите вашего администратора обновить образ seed. См. [Предварительное заполнение плагинов для контейнеров](#pre-populate-plugins-for-containers).

934 

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

936 

937### Marketplace не загружается

938 

939**Симптомы**: Не удается добавить marketplace или увидеть плагины из него

940 

941**Решения**:

942 

943* Проверьте, что URL marketplace доступен

944* Убедитесь, что `.claude-plugin/marketplace.json` существует по указанному пути

945* Убедитесь, что синтаксис JSON действителен и frontmatter хорошо сформирован, используя `claude plugin validate` или `/plugin validate`

946* Для частных репозиториев подтвердите, что у вас есть разрешения доступа

947 

948### Ошибки валидации marketplace

949 

950Запустите `claude plugin validate .` или `/plugin validate .` из каталога вашего marketplace, чтобы проверить наличие проблем. Валидатор проверяет `plugin.json`, frontmatter skill/agent/command и `hooks/hooks.json` на синтаксис и ошибки схемы. Общие ошибки:

951 

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

953| :------------------------------------------------ | :--------------------------------------------- | :------------------------------------------------------------------------------------------------------ |

954| `File not found: .claude-plugin/marketplace.json` | Отсутствует манифест | Создайте `.claude-plugin/marketplace.json` с обязательными полями |

955| `Invalid JSON syntax: Unexpected token...` | Ошибка синтаксиса JSON в marketplace.json | Проверьте отсутствующие запятые, лишние запятые или неквотированные строки |

956| `Duplicate plugin name "x" found in marketplace` | Два плагина имеют одно имя | Дайте каждому плагину уникальное значение `name` |

957| `plugins[0].source: Path contains ".."` | Путь источника содержит `..` | Используйте пути относительно корня marketplace без `..`. См. [Относительные пути](#relative-paths) |

958| `YAML frontmatter failed to parse: ...` | Неверный YAML в файле skill, agent или command | Исправьте синтаксис YAML в блоке frontmatter. Во время выполнения этот файл загружается без метаданных. |

959| `Invalid JSON syntax: ...` (hooks.json) | Неправильный формат `hooks/hooks.json` | Исправьте синтаксис JSON. Неправильный `hooks/hooks.json` предотвращает загрузку всего плагина. |

960 

961**Предупреждения** (не блокирующие):

962 

963* `Marketplace has no plugins defined`: добавьте хотя бы один плагин в массив `plugins`

964* `No marketplace description provided`: добавьте описание верхнего уровня `description`, чтобы помочь пользователям понять ваш marketplace

965* `Plugin name "x" is not kebab-case`: имя плагина содержит прописные буквы, пробелы или специальные символы. Переименуйте в строчные буквы, цифры и дефисы только (например, `my-plugin`). Claude Code принимает другие формы, но синхронизация marketplace Claude.ai их отклоняет.

966 

967### Ошибки установки плагина

968 

969**Симптомы**: Marketplace появляется, но установка плагина не удается

970 

971**Решения**:

972 

973* Проверьте, что URL источников плагинов доступны

974* Убедитесь, что каталоги плагинов содержат необходимые файлы

975* Для источников GitHub убедитесь, что репозитории являются общедоступными или у вас есть доступ

976* Протестируйте источники плагинов вручную, клонируя/загружая их

977 

978### Ошибка аутентификации частного репозитория

979 

980**Симптомы**: Ошибки аутентификации при установке плагинов из частных репозиториев

981 

982**Решения**:

983 

984Для ручной установки и обновлений:

985 

986* Проверьте, что вы аутентифицированы у вашего поставщика Git (например, запустите `gh auth status` для GitHub)

987* Проверьте, что ваш помощник учетных данных настроен правильно: `git config --global credential.helper`

988* Попробуйте клонировать репозиторий вручную, чтобы проверить, что ваши учетные данные работают

989 

990Для фоновых автоматических обновлений:

991 

992* Установите соответствующий токен в вашей среде: `echo $GITHUB_TOKEN`

993* Проверьте, что токен имеет необходимые разрешения (доступ на чтение к репозиторию)

994* Для GitHub убедитесь, что токен имеет область `repo` для частных репозиториев

995* Для GitLab убедитесь, что токен имеет как минимум область `read_repository`

996* Проверьте, что токен не истек

997 

998### Обновления marketplace не работают в автономных средах

999 

1000**Симптомы**: Marketplace `git pull` не удается и Claude Code удаляет существующий кэш, что делает плагины недоступными.

1001 

1002**Причина**: По умолчанию, когда `git pull` не удается, Claude Code удаляет устаревший клон и пытается повторно клонировать. В автономных или изолированных средах повторное клонирование не удается так же, оставляя каталог marketplace пустым.

1003 

1004**Решение**: Установите `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1`, чтобы сохранить существующий кэш при сбое pull вместо его удаления:

1005 

1006```bash theme={null}

1007export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1

1008```

1009 

1010С этой переменной установленной, Claude Code сохраняет устаревший клон marketplace при сбое `git pull` и продолжает использовать последнее известное хорошее состояние. Для полностью автономных развертываний, где репозиторий никогда не будет доступен, используйте [`CLAUDE_CODE_PLUGIN_SEED_DIR`](#pre-populate-plugins-for-containers) для предварительного заполнения каталога плагинов во время сборки вместо этого.

1011 

1012### Операции Git истекают по времени

1013 

1014**Симптомы**: Установка плагина или обновление marketplace не удается с ошибкой истечения времени, например "Git clone timed out after 120s" или "Git pull timed out after 120s".

1015 

1016**Причина**: Claude Code использует 120-секундный таймаут для всех операций Git, включая клонирование репозиториев плагинов и извлечение обновлений marketplace. Большие репозитории или медленные сетевые соединения могут превысить этот лимит.

1017 

1018**Решение**: Увеличьте таймаут, используя переменную окружения `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`. Значение указывается в миллисекундах:

1019 

1020```bash theme={null}

1021export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000 # 5 минут

1022```

1023 

1024### Плагины с относительными путями не работают в marketplace на основе URL

1025 

1026**Симптомы**: Добавлен marketplace через URL (например, `https://example.com/marketplace.json`), но плагины с источниками относительных путей, такие как `"./plugins/my-plugin"`, не устанавливаются с ошибками "path not found".

1027 

1028**Причина**: Marketplace на основе URL загружают только сам файл `marketplace.json`. Они не загружают файлы плагинов с сервера. Относительные пути в записи marketplace ссылаются на файлы на удаленном сервере, которые не были загружены.

1029 

1030**Решения**:

1031 

1032* **Используйте внешние источники**: Измените записи плагинов, чтобы использовать источники GitHub, npm или URL Git вместо относительных путей:

1033 ```json theme={null}

1034 { "name": "my-plugin", "source": { "source": "github", "repo": "owner/repo" } }

1035 ```

1036* **Используйте marketplace на основе Git**: Разместите ваш marketplace в репозитории Git и добавьте его с URL Git. Marketplace на основе Git клонируют весь репозиторий, что делает относительные пути рабочими.

1037 

1038### Файлы не найдены после установки

1039 

1040**Симптомы**: Плагин устанавливается, но ссылки на файлы не работают, особенно файлы вне каталога плагина

1041 

1042**Причина**: Плагины копируются в каталог кэша, а не используются на месте. Пути, которые ссылаются на файлы вне каталога плагина (например, `../shared-utils`), не будут работать, потому что эти файлы не копируются.

1043 

1044**Решения**: См. [Кэширование плагинов и разрешение файлов](/ru/plugins-reference#plugin-caching-and-file-resolution) для обходных путей, включая символические ссылки и переструктурирование каталогов.

1045 

1046Для дополнительных инструментов отладки и распространенных проблем см. [Инструменты отладки и разработки](/ru/plugins-reference#debugging-and-development-tools).

1047 

1048## См. также

1049 

1050* [Обнаружение и установка готовых плагинов](/ru/discover-plugins) - Установка плагинов из существующих marketplace

1051* [Плагины](/ru/plugins) - Создание собственных плагинов

1052* [Справка плагинов](/ru/plugins-reference) - Полные технические спецификации и схемы

1053* [Параметры плагинов](/ru/settings#plugin-settings) - Параметры конфигурации плагинов

1054* [Справка strictKnownMarketplaces](/ru/settings#strictknownmarketplaces) - Ограничения управляемого marketplace

plugins.md +454 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Создание plugins

6 

7> Создавайте пользовательские plugins для расширения Claude Code с помощью skills, agents, hooks и MCP servers.

8 

9Plugins позволяют расширить Claude Code пользовательской функциональностью, которая может быть общей для проектов и команд. Это руководство охватывает создание собственных plugins с skills, agents, hooks и MCP servers.

10 

11Ищете установку существующих plugins? См. [Обнаружение и установка plugins](/ru/discover-plugins). Для полных технических спецификаций см. [Справочник plugins](/ru/plugins-reference).

12 

13## Когда использовать plugins в сравнении с автономной конфигурацией

14 

15Claude Code поддерживает два способа добавления пользовательских skills, agents и hooks:

16 

17| Подход | Имена Skill | Лучше всего для |

18| :------------------------------------------------------ | :------------------- | :------------------------------------------------------------------------------------------------------------------------- |

19| **Автономная** (директория `.claude/`) | `/hello` | Личные рабочие процессы, настройки для конкретного проекта, быстрые эксперименты |

20| **Plugins** (директории с `.claude-plugin/plugin.json`) | `/plugin-name:hello` | Совместное использование с коллегами, распространение в сообществе, версионные выпуски, повторное использование в проектах |

21 

22**Используйте автономную конфигурацию когда**:

23 

24* Вы настраиваете Claude Code для одного проекта

25* Конфигурация личная и не требует совместного использования

26* Вы экспериментируете с skills или hooks перед их упаковкой

27* Вы хотите короткие имена skills, такие как `/hello` или `/deploy`

28 

29**Используйте plugins когда**:

30 

31* Вы хотите поделиться функциональностью с вашей командой или сообществом

32* Вам нужны одинаковые skills/agents в нескольких проектах

33* Вы хотите контроль версий и простые обновления для ваших расширений

34* Вы распространяете через marketplace

35* Вы согласны с пространством имён skills, такими как `/my-plugin:hello` (пространство имён предотвращает конфликты между plugins)

36 

37<Tip>

38 Начните с автономной конфигурации в `.claude/` для быстрой итерации, затем [преобразуйте в plugin](#convert-existing-configurations-to-plugins) когда будете готовы поделиться.

39</Tip>

40 

41## Быстрый старт

42 

43Этот быстрый старт проведёт вас через создание plugin с пользовательским skill. Вы создадите манифест (файл конфигурации, который определяет ваш plugin), добавите skill и протестируете его локально, используя флаг `--plugin-dir`.

44 

45### Предварительные требования

46 

47* Claude Code [установлен и аутентифицирован](/ru/quickstart#step-1-install-claude-code)

48 

49<Note>

50 Если вы не видите команду `/plugin`, обновите Claude Code до последней версии. См. [Troubleshooting](/ru/troubleshooting) для инструкций по обновлению.

51</Note>

52 

53### Создайте ваш первый plugin

54 

55<Steps>

56 <Step title="Создайте директорию plugin">

57 Каждый plugin находится в собственной директории, содержащей манифест и ваши skills, agents или hooks. Создайте её сейчас:

58 

59 ```bash theme={null}

60 mkdir my-first-plugin

61 ```

62 </Step>

63 

64 <Step title="Создайте манифест plugin">

65 Файл манифеста в `.claude-plugin/plugin.json` определяет идентичность вашего plugin: его имя, описание и версию. Claude Code использует эти метаданные для отображения вашего plugin в менеджере plugins.

66 

67 Создайте директорию `.claude-plugin` внутри папки вашего plugin:

68 

69 ```bash theme={null}

70 mkdir my-first-plugin/.claude-plugin

71 ```

72 

73 Затем создайте `my-first-plugin/.claude-plugin/plugin.json` с этим содержимым:

74 

75 ```json my-first-plugin/.claude-plugin/plugin.json theme={null}

76 {

77 "name": "my-first-plugin",

78 "description": "A greeting plugin to learn the basics",

79 "version": "1.0.0",

80 "author": {

81 "name": "Your Name"

82 }

83 }

84 ```

85 

86 | Поле | Назначение |

87 | :------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

88 | `name` | Уникальный идентификатор и пространство имён skill. Skills имеют префикс этого (например, `/my-first-plugin:hello`). |

89 | `description` | Показывается в менеджере plugins при просмотре или установке plugins. |

90 | `version` | Опционально. Если установлено, пользователи получают обновления только когда вы увеличиваете это поле. Если опущено и ваш plugin распространяется через git, используется SHA коммита и каждый коммит считается новой версией. См. [управление версиями](/ru/plugins-reference#version-management). |

91 | `author` | Опционально. Полезно для атрибуции. |

92 

93 Для дополнительных полей, таких как `homepage`, `repository` и `license`, см. [полную схему манифеста](/ru/plugins-reference#plugin-manifest-schema).

94 </Step>

95 

96 <Step title="Добавьте skill">

97 Skills находятся в директории `skills/`. Каждый skill — это папка, содержащая файл `SKILL.md`. Имя папки становится именем skill, с префиксом пространства имён plugin (`hello/` в plugin с именем `my-first-plugin` создаёт `/my-first-plugin:hello`).

98 

99 Создайте директорию skill в папке вашего plugin:

100 

101 ```bash theme={null}

102 mkdir -p my-first-plugin/skills/hello

103 ```

104 

105 Затем создайте `my-first-plugin/skills/hello/SKILL.md` с этим содержимым:

106 

107 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

108 ---

109 description: Greet the user with a friendly message

110 disable-model-invocation: true

111 ---

112 

113 Greet the user warmly and ask how you can help them today.

114 ```

115 </Step>

116 

117 <Step title="Протестируйте ваш plugin">

118 Запустите Claude Code с флагом `--plugin-dir` для загрузки вашего plugin:

119 

120 ```bash theme={null}

121 claude --plugin-dir ./my-first-plugin

122 ```

123 

124 После запуска Claude Code попробуйте ваш новый skill:

125 

126 ```shell theme={null}

127 /my-first-plugin:hello

128 ```

129 

130 Вы увидите, как Claude ответит приветствием. Запустите `/help` для просмотра вашего skill, указанного в пространстве имён plugin.

131 

132 <Note>

133 **Почему пространство имён?** Skills plugin всегда имеют пространство имён (например, `/my-first-plugin:hello`) для предотвращения конфликтов, когда несколько plugins имеют skills с одинаковым именем.

134 

135 Чтобы изменить префикс пространства имён, обновите поле `name` в `plugin.json`.

136 </Note>

137 </Step>

138 

139 <Step title="Добавьте аргументы skill">

140 Сделайте ваш skill динамичным, принимая пользовательский ввод. Заполнитель `$ARGUMENTS` захватывает любой текст, который пользователь предоставляет после имени skill.

141 

142 Обновите ваш файл `SKILL.md`:

143 

144 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

145 ---

146 description: Greet the user with a personalized message

147 ---

148 

149 # Hello Skill

150 

151 Greet the user named "$ARGUMENTS" warmly and ask how you can help them today. Make the greeting personal and encouraging.

152 ```

153 

154 Запустите `/reload-plugins` для применения изменений, затем попробуйте skill с вашим именем:

155 

156 ```shell theme={null}

157 /my-first-plugin:hello Alex

158 ```

159 

160 Claude поприветствует вас по имени. Для получения дополнительной информации о передаче аргументов в skills см. [Skills](/ru/skills#pass-arguments-to-skills).

161 </Step>

162</Steps>

163 

164Вы успешно создали и протестировали plugin с этими ключевыми компонентами:

165 

166* **Манифест plugin** (`.claude-plugin/plugin.json`): описывает метаданные вашего plugin

167* **Директория skills** (`skills/`): содержит ваши пользовательские skills

168* **Аргументы skill** (`$ARGUMENTS`): захватывает пользовательский ввод для динамического поведения

169 

170<Tip>

171 Флаг `--plugin-dir` полезен для разработки и тестирования. Когда вы будете готовы поделиться вашим plugin с другими, см. [Создание и распространение marketplace plugin](/ru/plugin-marketplaces).

172</Tip>

173 

174## Обзор структуры plugin

175 

176Вы создали plugin с skill, но plugins могут включать намного больше: пользовательские agents, hooks, MCP servers и LSP servers.

177 

178<Warning>

179 **Частая ошибка**: Не помещайте `commands/`, `agents/`, `skills/` или `hooks/` внутри директории `.claude-plugin/`. Только `plugin.json` находится внутри `.claude-plugin/`. Все остальные директории должны быть на уровне корня plugin.

180</Warning>

181 

182| Директория | Местоположение | Назначение |

183| :---------------- | :------------- | :---------------------------------------------------------------------------------------------------- |

184| `.claude-plugin/` | Корень plugin | Содержит манифест `plugin.json` (опционально, если компоненты используют местоположения по умолчанию) |

185| `skills/` | Корень plugin | Skills как директории `<name>/SKILL.md` |

186| `commands/` | Корень plugin | Skills как плоские файлы Markdown. Используйте `skills/` для новых plugins |

187| `agents/` | Корень plugin | Определения пользовательских agents |

188| `hooks/` | Корень plugin | Обработчики событий в `hooks.json` |

189| `.mcp.json` | Корень plugin | Конфигурации MCP server |

190| `.lsp.json` | Корень plugin | Конфигурации LSP server для интеллекта кода |

191| `monitors/` | Корень plugin | Конфигурации фонового монитора в `monitors.json` |

192| `bin/` | Корень plugin | Исполняемые файлы, добавленные в `PATH` инструмента Bash во время включения plugin |

193| `settings.json` | Корень plugin | Параметры по умолчанию [settings](/ru/settings), применяемые при включении plugin |

194 

195<Note>

196 **Следующие шаги**: Готовы добавить больше функций? Перейдите к [Разработка более сложных plugins](#develop-more-complex-plugins) для добавления agents, hooks, MCP servers и LSP servers. Для полных технических спецификаций всех компонентов plugin см. [Справочник plugins](/ru/plugins-reference).

197</Note>

198 

199## Разработка более сложных plugins

200 

201Когда вы будете комфортно чувствовать себя с базовыми plugins, вы сможете создавать более сложные расширения.

202 

203### Добавьте Skills в ваш plugin

204 

205Plugins могут включать [Agent Skills](/ru/skills) для расширения возможностей Claude. Skills вызываются моделью: Claude автоматически использует их на основе контекста задачи.

206 

207Добавьте директорию `skills/` в корень вашего plugin с папками Skill, содержащими файлы `SKILL.md`:

208 

209```text theme={null}

210my-plugin/

211├── .claude-plugin/

212│ └── plugin.json

213└── skills/

214 └── code-review/

215 └── SKILL.md

216```

217 

218Каждый `SKILL.md` содержит YAML frontmatter и инструкции. Включите `description` чтобы Claude знал, когда использовать skill:

219 

220```yaml theme={null}

221---

222description: Reviews code for best practices and potential issues. Use when reviewing code, checking PRs, or analyzing code quality.

223---

224 

225When reviewing code, check for:

2261. Code organization and structure

2272. Error handling

2283. Security concerns

2294. Test coverage

230```

231 

232После установки plugin запустите `/reload-plugins` для загрузки Skills. Для полного руководства по созданию Skill, включая прогрессивное раскрытие и ограничения инструментов, см. [Agent Skills](/ru/skills).

233 

234### Добавьте LSP servers в ваш plugin

235 

236<Tip>

237 Для распространённых языков, таких как TypeScript, Python и Rust, установите предварительно созданные LSP plugins из официального marketplace. Создавайте пользовательские LSP plugins только когда вам нужна поддержка языков, которые ещё не охвачены.

238</Tip>

239 

240LSP (Language Server Protocol) plugins дают Claude интеллект кода в реальном времени. Если вам нужна поддержка языка, который не имеет официального LSP plugin, вы можете создать свой собственный, добавив файл `.lsp.json` в ваш plugin:

241 

242```json .lsp.json theme={null}

243{

244 "go": {

245 "command": "gopls",

246 "args": ["serve"],

247 "extensionToLanguage": {

248 ".go": "go"

249 }

250 }

251}

252```

253 

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

255 

256Для полных опций конфигурации LSP см. [LSP servers](/ru/plugins-reference#lsp-servers).

257 

258### Добавьте фоновые мониторы в ваш plugin

259 

260Фоновые мониторы позволяют вашему plugin отслеживать логи, файлы или внешний статус в фоне и уведомлять Claude по мере поступления событий. Claude Code автоматически запускает каждый монитор при активации plugin, поэтому вам не нужно инструктировать Claude запустить наблюдение.

261 

262Добавьте файл `monitors/monitors.json` в корень plugin с массивом записей монитора:

263 

264```json monitors/monitors.json theme={null}

265[

266 {

267 "name": "error-log",

268 "command": "tail -F ./logs/error.log",

269 "description": "Application error log"

270 }

271]

272```

273 

274Каждая строка stdout из `command` доставляется Claude как уведомление во время сеанса. Для полной схемы, включая триггер `when` и подстановку переменных, см. [Monitors](/ru/plugins-reference#monitors).

275 

276### Поставляйте параметры по умолчанию с вашим plugin

277 

278Plugins могут включать файл `settings.json` в корне plugin для применения конфигурации по умолчанию при включении plugin. В настоящее время поддерживаются только ключи `agent` и `subagentStatusLine`.

279 

280Установка `agent` активирует один из [пользовательских agents](/ru/sub-agents) plugin в качестве основного потока, применяя его системный prompt, ограничения инструментов и модель. Это позволяет plugin изменить поведение Claude Code по умолчанию при включении.

281 

282```json settings.json theme={null}

283{

284 "agent": "security-reviewer"

285}

286```

287 

288Этот пример активирует agent `security-reviewer`, определённый в директории `agents/` plugin. Параметры из `settings.json` имеют приоритет над `settings`, объявленными в `plugin.json`. Неизвестные ключи молча игнорируются.

289 

290### Организуйте сложные plugins

291 

292Для plugins с множеством компонентов организуйте структуру вашей директории по функциональности. Для полных макетов директорий и шаблонов организации см. [Структура директории Plugin](/ru/plugins-reference#plugin-directory-structure).

293 

294### Протестируйте ваши plugins локально

295 

296Используйте флаг `--plugin-dir` для тестирования plugins во время разработки. Это загружает ваш plugin напрямую без необходимости установки.

297 

298```bash theme={null}

299claude --plugin-dir ./my-plugin

300```

301 

302Когда `--plugin-dir` plugin имеет то же имя, что и установленный marketplace plugin, локальная копия имеет приоритет для этого сеанса. Это позволяет вам протестировать изменения plugin, который у вас уже установлен, без необходимости его предварительной деинсталляции. Marketplace plugins, принудительно включённые управляемыми параметрами, являются единственным исключением и не могут быть переопределены.

303 

304По мере внесения изменений в ваш plugin запустите `/reload-plugins` для применения обновлений без перезагрузки. Это перезагружает plugins, skills, agents, hooks, plugin MCP servers и plugin LSP servers. Протестируйте компоненты вашего plugin:

305 

306* Попробуйте ваши skills с `/plugin-name:skill-name`

307* Проверьте, что agents появляются в `/agents`

308* Убедитесь, что hooks работают как ожидается

309 

310<Tip>

311 Вы можете загружать несколько plugins одновременно, указав флаг несколько раз:

312 

313 ```bash theme={null}

314 claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two

315 ```

316</Tip>

317 

318### Отладка проблем plugin

319 

320Если ваш plugin не работает как ожидается:

321 

3221. **Проверьте структуру**: Убедитесь, что ваши директории находятся в корне plugin, а не внутри `.claude-plugin/`

3232. **Протестируйте компоненты отдельно**: Проверьте каждый skill, agent и hook отдельно

3243. **Используйте инструменты валидации и отладки**: См. [Инструменты отладки и разработки](/ru/plugins-reference#debugging-and-development-tools) для команд CLI и методов troubleshooting

325 

326### Поделитесь вашими plugins

327 

328Когда ваш plugin готов к совместному использованию:

329 

3301. **Добавьте документацию**: Включите `README.md` с инструкциями по установке и использованию

3312. **Выберите стратегию версионирования**: Решите, устанавливать ли явную `version` или полагаться на SHA коммита git. См. [управление версиями](/ru/plugins-reference#version-management)

3323. **Создайте или используйте marketplace**: Распространяйте через [plugin marketplaces](/ru/plugin-marketplaces) для установки

3334. **Протестируйте с другими**: Попросите членов команды протестировать plugin перед более широким распространением

334 

335Когда ваш plugin находится в marketplace, другие могут установить его, используя инструкции в [Обнаружение и установка plugins](/ru/discover-plugins). Чтобы сохранить plugin внутри вашей команды, разместите marketplace в [приватном репозитории](/ru/plugin-marketplaces#private-repositories).

336 

337### Отправьте ваш plugin на официальный marketplace

338 

339Чтобы отправить plugin на официальный marketplace Anthropic, используйте одну из встроенных форм отправки:

340 

341* **Claude.ai**: [claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)

342* **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

343 

344Когда ваш plugin будет указан, вы сможете иметь собственный CLI, который подскажет пользователям Claude Code установить его. См. [Рекомендуйте ваш plugin из вашего CLI](/ru/plugin-hints).

345 

346<Note>

347 Для полных технических спецификаций, методов отладки и стратегий распространения см. [Справочник plugins](/ru/plugins-reference).

348</Note>

349 

350## Преобразование существующих конфигураций в plugins

351 

352Если у вас уже есть skills или hooks в вашей директории `.claude/`, вы можете преобразовать их в plugin для более лёгкого совместного использования и распространения.

353 

354### Шаги миграции

355 

356<Steps>

357 <Step title="Создайте структуру plugin">

358 Создайте новую директорию plugin:

359 

360 ```bash theme={null}

361 mkdir -p my-plugin/.claude-plugin

362 ```

363 

364 Создайте файл манифеста в `my-plugin/.claude-plugin/plugin.json`:

365 

366 ```json my-plugin/.claude-plugin/plugin.json theme={null}

367 {

368 "name": "my-plugin",

369 "description": "Migrated from standalone configuration",

370 "version": "1.0.0"

371 }

372 ```

373 </Step>

374 

375 <Step title="Скопируйте ваши существующие файлы">

376 Скопируйте ваши существующие конфигурации в директорию plugin:

377 

378 ```bash theme={null}

379 # Copy commands

380 cp -r .claude/commands my-plugin/

381 

382 # Copy agents (if any)

383 cp -r .claude/agents my-plugin/

384 

385 # Copy skills (if any)

386 cp -r .claude/skills my-plugin/

387 ```

388 </Step>

389 

390 <Step title="Мигрируйте hooks">

391 Если у вас есть hooks в ваших параметрах, создайте директорию hooks:

392 

393 ```bash theme={null}

394 mkdir my-plugin/hooks

395 ```

396 

397 Создайте `my-plugin/hooks/hooks.json` с конфигурацией вашего hooks. Скопируйте объект `hooks` из вашего `.claude/settings.json` или `settings.local.json`, так как формат одинаков. Команда получает входные данные hook как JSON на stdin, поэтому используйте `jq` для извлечения пути файла:

398 

399 ```json my-plugin/hooks/hooks.json theme={null}

400 {

401 "hooks": {

402 "PostToolUse": [

403 {

404 "matcher": "Write|Edit",

405 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]

406 }

407 ]

408 }

409 }

410 ```

411 </Step>

412 

413 <Step title="Протестируйте ваш мигрированный plugin">

414 Загрузите ваш plugin для проверки того, что всё работает:

415 

416 ```bash theme={null}

417 claude --plugin-dir ./my-plugin

418 ```

419 

420 Протестируйте каждый компонент: запустите ваши команды, проверьте, что agents появляются в `/agents`, и убедитесь, что hooks срабатывают правильно.

421 </Step>

422</Steps>

423 

424### Что изменяется при миграции

425 

426| Автономная (`.claude/`) | Plugin |

427| :---------------------------------------------------------- | :---------------------------------- |

428| Доступна только в одном проекте | Может быть общей через marketplaces |

429| Файлы в `.claude/commands/` | Файлы в `plugin-name/commands/` |

430| Hooks в `settings.json` | Hooks в `hooks/hooks.json` |

431| Необходимо вручную копировать для совместного использования | Установить с `/plugin install` |

432 

433<Note>

434 После миграции вы можете удалить исходные файлы из `.claude/` для избежания дубликатов. Версия plugin будет иметь приоритет при загрузке.

435</Note>

436 

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

438 

439Теперь, когда вы понимаете систему plugins Claude Code, вот предлагаемые пути для различных целей:

440 

441### Для пользователей plugin

442 

443* [Обнаружение и установка plugins](/ru/discover-plugins): просмотр marketplaces и установка plugins

444* [Настройка team marketplaces](/ru/discover-plugins#configure-team-marketplaces): установка plugins на уровне репозитория для вашей команды

445 

446### Для разработчиков plugin

447 

448* [Создание и распространение marketplace](/ru/plugin-marketplaces): упаковка и совместное использование ваших plugins

449* [Справочник plugins](/ru/plugins-reference): полные технические спецификации

450* Углубитесь в конкретные компоненты plugin:

451 * [Skills](/ru/skills): детали разработки skill

452 * [Subagents](/ru/sub-agents): конфигурация и возможности agent

453 * [Hooks](/ru/hooks): обработка событий и автоматизация

454 * [MCP](/ru/mcp): интеграция внешних инструментов

plugins-reference.md +1011 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Справочник по плагинам

6 

7> Полный технический справочник по системе плагинов Claude Code, включая схемы, команды CLI и спецификации компонентов.

8 

9<Tip>

10 Ищете способ установить плагины? Смотрите [Обнаружение и установка плагинов](/ru/discover-plugins). Для создания плагинов смотрите [Плагины](/ru/plugins). Для распространения плагинов смотрите [Маркетплейсы плагинов](/ru/plugin-marketplaces).

11</Tip>

12 

13Этот справочник содержит полные технические спецификации для системы плагинов Claude Code, включая схемы компонентов, команды CLI и инструменты разработки.

14 

15**Плагин** — это самостоятельный каталог компонентов, который расширяет Claude Code пользовательской функциональностью. Компоненты плагина включают skills, agents, hooks, MCP servers, LSP servers и monitors.

16 

17## Справочник компонентов плагина

18 

19### Skills

20 

21Плагины добавляют skills в Claude Code, создавая сочетания клавиш `/name`, которые вы или Claude можете вызвать.

22 

23**Расположение**: каталог `skills/` или `commands/` в корне плагина

24 

25**Формат файла**: Skills — это каталоги с `SKILL.md`; команды — это простые файлы markdown

26 

27**Структура skill**:

28 

29```text theme={null}

30skills/

31├── pdf-processor/

32│ ├── SKILL.md

33│ ├── reference.md (опционально)

34│ └── scripts/ (опционально)

35└── code-reviewer/

36 └── SKILL.md

37```

38 

39**Поведение интеграции**:

40 

41* Skills и команды автоматически обнаруживаются при установке плагина

42* Claude может вызывать их автоматически на основе контекста задачи

43* Skills могут включать вспомогательные файлы рядом с SKILL.md

44 

45Для полной информации смотрите [Skills](/ru/skills).

46 

47### Agents

48 

49Плагины могут предоставлять специализированные subagents для конкретных задач, которые Claude может вызывать автоматически при необходимости.

50 

51**Расположение**: каталог `agents/` в корне плагина

52 

53**Формат файла**: Файлы markdown, описывающие возможности агента

54 

55**Структура агента**:

56 

57```markdown theme={null}

58---

59name: agent-name

60description: Что специализирует этот агент и когда Claude должен его вызвать

61model: sonnet

62effort: medium

63maxTurns: 20

64disallowedTools: Write, Edit

65---

66 

67Подробное системное приглашение для агента, описывающее его роль, опыт и поведение.

68```

69 

70Плагины agents поддерживают поля frontmatter `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background` и `isolation`. Единственное допустимое значение `isolation` — это `"worktree"`. По соображениям безопасности `hooks`, `mcpServers` и `permissionMode` не поддерживаются для agents, поставляемых с плагинами.

71 

72**Точки интеграции**:

73 

74* Агенты появляются в интерфейсе `/agents`

75* Claude может вызывать агентов автоматически на основе контекста задачи

76* Агенты могут быть вызваны вручную пользователями

77* Плагины agents работают наряду со встроенными agents Claude

78 

79Для полной информации смотрите [Subagents](/ru/sub-agents).

80 

81### Hooks

82 

83Плагины могут предоставлять обработчики событий, которые автоматически реагируют на события Claude Code.

84 

85**Расположение**: `hooks/hooks.json` в корне плагина или встроенный в plugin.json

86 

87**Формат**: Конфигурация JSON с сопоставителями событий и действиями

88 

89**Конфигурация hook**:

90 

91```json theme={null}

92{

93 "hooks": {

94 "PostToolUse": [

95 {

96 "matcher": "Write|Edit",

97 "hooks": [

98 {

99 "type": "command",

100 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format-code.sh"

101 }

102 ]

103 }

104 ]

105 }

106}

107```

108 

109Плагины hooks реагируют на те же события жизненного цикла, что и [определённые пользователем hooks](/ru/hooks):

110 

111| Event | When it fires |

112| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

113| `SessionStart` | When a session begins or resumes |

114| `Setup` | When you start Claude Code with `--init-only`, or with `--init` or `--maintenance` in `-p` mode. For one-time preparation in CI or scripts |

115| `UserPromptSubmit` | When you submit a prompt, before Claude processes it |

116| `UserPromptExpansion` | When a user-typed command expands into a prompt, before it reaches Claude. Can block the expansion |

117| `PreToolUse` | Before a tool call executes. Can block it |

118| `PermissionRequest` | When a permission dialog appears |

119| `PermissionDenied` | When a tool call is denied by the auto mode classifier. Return `{retry: true}` to tell the model it may retry the denied tool call |

120| `PostToolUse` | After a tool call succeeds |

121| `PostToolUseFailure` | After a tool call fails |

122| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

123| `Notification` | When Claude Code sends a notification |

124| `SubagentStart` | When a subagent is spawned |

125| `SubagentStop` | When a subagent finishes |

126| `TaskCreated` | When a task is being created via `TaskCreate` |

127| `TaskCompleted` | When a task is being marked as completed |

128| `Stop` | When Claude finishes responding |

129| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

130| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |

131| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

132| `ConfigChange` | When a configuration file changes during a session |

133| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

134| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

135| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |

136| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |

137| `PreCompact` | Before context compaction |

138| `PostCompact` | After context compaction completes |

139| `Elicitation` | When an MCP server requests user input during a tool call |

140| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

141| `SessionEnd` | When a session terminates |

142 

143**Типы hook**:

144 

145* `command`: выполнение команд оболочки или скриптов

146* `http`: отправка JSON события как POST запроса на URL

147* `mcp_tool`: вызов инструмента на настроенном [MCP server](/ru/mcp)

148* `prompt`: оценка приглашения с помощью LLM (использует заполнитель `$ARGUMENTS` для контекста)

149* `agent`: запуск проверки агента с инструментами для сложных задач проверки

150 

151### MCP servers

152 

153Плагины могут включать серверы Model Context Protocol (MCP) для подключения Claude Code к внешним инструментам и сервисам.

154 

155**Расположение**: `.mcp.json` в корне плагина или встроенный в plugin.json

156 

157**Формат**: Стандартная конфигурация сервера MCP

158 

159**Конфигурация сервера MCP**:

160 

161```json theme={null}

162{

163 "mcpServers": {

164 "plugin-database": {

165 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

166 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],

167 "env": {

168 "DB_PATH": "${CLAUDE_PLUGIN_ROOT}/data"

169 }

170 },

171 "plugin-api-client": {

172 "command": "npx",

173 "args": ["@company/mcp-server", "--plugin-mode"],

174 "cwd": "${CLAUDE_PLUGIN_ROOT}"

175 }

176 }

177}

178```

179 

180**Поведение интеграции**:

181 

182* Серверы MCP плагина запускаются автоматически при включении плагина

183* Серверы отображаются как стандартные инструменты MCP в наборе инструментов Claude

184* Возможности сервера беспрепятственно интегрируются с существующими инструментами Claude

185* Серверы плагина можно настраивать независимо от серверов MCP пользователя

186 

187### LSP servers

188 

189<Tip>

190 Ищете способ использовать плагины LSP? Установите их из официального маркетплейса: найдите "lsp" на вкладке Discover в `/plugin`. Этот раздел документирует, как создавать плагины LSP для языков, не охватываемых официальным маркетплейсом.

191</Tip>

192 

193Плагины могут предоставлять серверы [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (LSP) для предоставления Claude интеллектуальной информации о коде в реальном времени при работе с вашей кодовой базой.

194 

195Интеграция LSP предоставляет:

196 

197* **Мгновенная диагностика**: Claude видит ошибки и предупреждения сразу после каждого редактирования

198* **Навигация по коду**: переход к определению, поиск ссылок и информация при наведении

199* **Осведомлённость о языке**: информация о типах и документация для символов кода

200 

201**Расположение**: `.lsp.json` в корне плагина или встроенный в `plugin.json`

202 

203**Формат**: Конфигурация JSON, сопоставляющая имена языковых серверов с их конфигурациями

204 

205**Формат файла `.lsp.json`**:

206 

207```json theme={null}

208{

209 "go": {

210 "command": "gopls",

211 "args": ["serve"],

212 "extensionToLanguage": {

213 ".go": "go"

214 }

215 }

216}

217```

218 

219**Встроенный в `plugin.json`**:

220 

221```json theme={null}

222{

223 "name": "my-plugin",

224 "lspServers": {

225 "go": {

226 "command": "gopls",

227 "args": ["serve"],

228 "extensionToLanguage": {

229 ".go": "go"

230 }

231 }

232 }

233}

234```

235 

236**Обязательные поля:**

237 

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

239| :-------------------- | :------------------------------------------------------- |

240| `command` | Двоичный файл LSP для выполнения (должен быть в PATH) |

241| `extensionToLanguage` | Сопоставляет расширения файлов с идентификаторами языков |

242 

243**Опциональные поля:**

244 

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

246| :---------------------- | :---------------------------------------------------------------- |

247| `args` | Аргументы командной строки для сервера LSP |

248| `transport` | Транспорт связи: `stdio` (по умолчанию) или `socket` |

249| `env` | Переменные окружения для установки при запуске сервера |

250| `initializationOptions` | Опции, передаваемые серверу при инициализации |

251| `settings` | Параметры, передаваемые через `workspace/didChangeConfiguration` |

252| `workspaceFolder` | Путь папки рабочей области для сервера |

253| `startupTimeout` | Максимальное время ожидания запуска сервера (миллисекунды) |

254| `shutdownTimeout` | Максимальное время ожидания корректного завершения (миллисекунды) |

255| `restartOnCrash` | Следует ли автоматически перезапустить сервер при сбое |

256| `maxRestarts` | Максимальное количество попыток перезапуска перед отказом |

257 

258<Warning>

259 **Вы должны установить двоичный файл языкового сервера отдельно.** Плагины LSP настраивают способ подключения Claude Code к языковому серверу, но они не включают сам сервер. Если вы видите `Executable not found in $PATH` на вкладке Errors в `/plugin`, установите требуемый двоичный файл для вашего языка.

260</Warning>

261 

262**Доступные плагины LSP:**

263 

264| Плагин | Языковой сервер | Команда установки |

265| :--------------- | :------------------------- | :------------------------------------------------------------------------------------------- |

266| `pyright-lsp` | Pyright (Python) | `pip install pyright` или `npm install -g pyright` |

267| `typescript-lsp` | TypeScript Language Server | `npm install -g typescript-language-server typescript` |

268| `rust-lsp` | rust-analyzer | [Смотрите установку rust-analyzer](https://rust-analyzer.github.io/manual.html#installation) |

269 

270Сначала установите языковой сервер, затем установите плагин из маркетплейса.

271 

272### Monitors

273 

274Плагины могут объявлять фоновые monitors, которые Claude Code автоматически запускает при активации плагина. Каждый monitor запускает команду оболочки на протяжении всего сеанса и доставляет каждую строку stdout Claude как уведомление, чтобы Claude мог реагировать на записи журнала, изменения статуса или опрашиваемые события без необходимости просить запустить наблюдение.

275 

276Плагины monitors используют тот же механизм, что и [инструмент Monitor](/ru/tools-reference#monitor-tool), и разделяют его ограничения доступности. Они работают только в интерактивных сеансах CLI, работают без песочницы на том же уровне доверия, что и [hooks](#hooks), и пропускаются на хостах, где инструмент Monitor недоступен.

277 

278<Note>

279 Плагины monitors требуют Claude Code v2.1.105 или позже.

280</Note>

281 

282**Расположение**: `monitors/monitors.json` в корне плагина или встроенный в `plugin.json`

283 

284**Формат**: Массив JSON записей monitor

285 

286Следующий `monitors/monitors.json` отслеживает конечную точку статуса развёртывания и локальный журнал ошибок:

287 

288```json theme={null}

289[

290 {

291 "name": "deploy-status",

292 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/poll-deploy.sh ${user_config.api_endpoint}",

293 "description": "Deployment status changes"

294 },

295 {

296 "name": "error-log",

297 "command": "tail -F ./logs/error.log",

298 "description": "Application error log",

299 "when": "on-skill-invoke:debug"

300 }

301]

302```

303 

304Для объявления monitors встроенным образом установите ключ `monitors` в `plugin.json` на тот же массив. Для загрузки из пути, отличного от пути по умолчанию, установите `monitors` на строку относительного пути, такую как `"./config/monitors.json"`.

305 

306**Обязательные поля:**

307 

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

309| :------------ | :------------------------------------------------------------------------------------------------------------------------------------- |

310| `name` | Идентификатор, уникальный в пределах плагина. Предотвращает дублирование процессов при перезагрузке плагина или повторном вызове skill |

311| `command` | Команда оболочки, запускаемая как постоянный фоновый процесс в рабочем каталоге сеанса |

312| `description` | Краткое резюме того, что отслеживается. Показывается в панели задач и в резюме уведомлений |

313 

314**Опциональные поля:**

315 

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

317| :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

318| `when` | Управляет тем, когда запускается monitor. `"always"` запускает его при запуске сеанса и при перезагрузке плагина и является значением по умолчанию. `"on-skill-invoke:<skill-name>"` запускает его в первый раз, когда именованный skill в этом плагине отправляется |

319 

320Значение `command` поддерживает те же [подстановки переменных](#environment-variables), что и конфигурации серверов MCP и LSP: `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}`, `${user_config.*}` и любой `${ENV_VAR}` из окружения. Добавьте префикс команды с `cd "${CLAUDE_PLUGIN_ROOT}" && `, если скрипт должен работать из собственного каталога плагина.

321 

322Отключение плагина в середине сеанса не останавливает monitors, которые уже работают. Они останавливаются при завершении сеанса.

323 

324### Themes

325 

326Плагины могут поставлять цветовые темы, которые появляются в `/theme` наряду со встроенными предустановками и локальными темами пользователя. Тема — это JSON файл в `themes/` с предустановкой `base` и разреженной картой переопределений `overrides` цветовых токенов.

327 

328```json theme={null}

329{

330 "name": "Dracula",

331 "base": "dark",

332 "overrides": {

333 "claude": "#bd93f9",

334 "error": "#ff5555",

335 "success": "#50fa7b"

336 }

337}

338```

339 

340Выбор темы плагина сохраняет `custom:<plugin-name>:<slug>` в конфигурации пользователя. Темы плагина доступны только для чтения; нажатие `Ctrl+E` на одной из них в `/theme` копирует её в `~/.claude/themes/`, чтобы пользователь мог редактировать копию.

341 

342***

343 

344## Области установки плагина

345 

346При установке плагина вы выбираете **область**, которая определяет, где плагин доступен и кто ещё может его использовать:

347 

348| Область | Файл параметров | Вариант использования |

349| :-------- | :--------------------------------------------------- | :--------------------------------------------------------- |

350| `user` | `~/.claude/settings.json` | Личные плагины, доступные во всех проектах (по умолчанию) |

351| `project` | `.claude/settings.json` | Плагины команды, общие через контроль версий |

352| `local` | `.claude/settings.local.json` | Плагины, специфичные для проекта, игнорируемые git |

353| `managed` | [Управляемые параметры](/ru/settings#settings-files) | Управляемые плагины (только для чтения, только обновление) |

354 

355Плагины используют ту же систему областей, что и другие конфигурации Claude Code. Для инструкций по установке и флагов области смотрите [Установка плагинов](/ru/discover-plugins#install-plugins). Для полного объяснения областей смотрите [Области конфигурации](/ru/settings#configuration-scopes).

356 

357***

358 

359## Схема манифеста плагина

360 

361Файл `.claude-plugin/plugin.json` определяет метаданные и конфигурацию вашего плагина. Этот раздел документирует все поддерживаемые поля и опции.

362 

363Манифест опционален. Если он опущен, Claude Code автоматически обнаруживает компоненты в [местоположениях по умолчанию](#file-locations-reference) и выводит имя плагина из имени каталога. Используйте манифест, когда вам нужно предоставить метаданные или пользовательские пути компонентов.

364 

365### Полная схема

366 

367```json theme={null}

368{

369 "name": "plugin-name",

370 "version": "1.2.0",

371 "description": "Brief plugin description",

372 "author": {

373 "name": "Author Name",

374 "email": "author@example.com",

375 "url": "https://github.com/author"

376 },

377 "homepage": "https://docs.example.com/plugin",

378 "repository": "https://github.com/author/plugin",

379 "license": "MIT",

380 "keywords": ["keyword1", "keyword2"],

381 "skills": "./custom/skills/",

382 "commands": ["./custom/commands/special.md"],

383 "agents": ["./custom/agents/reviewer.md"],

384 "hooks": "./config/hooks.json",

385 "mcpServers": "./mcp-config.json",

386 "outputStyles": "./styles/",

387 "themes": "./themes/",

388 "lspServers": "./.lsp.json",

389 "monitors": "./monitors.json",

390 "dependencies": [

391 "helper-lib",

392 { "name": "secrets-vault", "version": "~2.1.0" }

393 ]

394}

395```

396 

397### Обязательные поля

398 

399Если вы включаете манифест, `name` — единственное обязательное поле.

400 

401| Поле | Тип | Описание | Пример |

402| :----- | :----- | :-------------------------------------------------- | :------------------- |

403| `name` | string | Уникальный идентификатор (kebab-case, без пробелов) | `"deployment-tools"` |

404 

405Это имя используется для пространства имён компонентов. Например, в пользовательском интерфейсе агент `agent-creator` для плагина с именем `plugin-dev` будет отображаться как `plugin-dev:agent-creator`.

406 

407### Поля метаданных

408 

409| Поле | Тип | Описание | Пример |

410| :------------ | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |

411| `$schema` | string | URL JSON Schema для автодополнения и валидации редактора. Claude Code игнорирует это поле при загрузке. | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |

412| `version` | string | Опционально. Семантическая версия. Установка этого параметра закрепляет плагин на этой строке версии, поэтому пользователи получают обновления только при её изменении. Если опущено, Claude Code использует SHA коммита git, поэтому каждый коммит рассматривается как новая версия. Если также установлено в записи маркетплейса, `plugin.json` имеет приоритет. Смотрите [Управление версиями](#version-management). | `"2.1.0"` |

413| `description` | string | Краткое объяснение назначения плагина | `"Deployment automation tools"` |

414| `author` | object | Информация об авторе | `{"name": "Dev Team", "email": "dev@company.com"}` |

415| `homepage` | string | URL документации | `"https://docs.example.com"` |

416| `repository` | string | URL исходного кода | `"https://github.com/user/plugin"` |

417| `license` | string | Идентификатор лицензии | `"MIT"`, `"Apache-2.0"` |

418| `keywords` | array | Теги обнаружения | `["deployment", "ci-cd"]` |

419 

420### Поля пути компонента

421 

422| Поле | Тип | Описание | Пример |

423| :------------- | :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |

424| `skills` | string\|array | Пользовательские каталоги skills, содержащие `<name>/SKILL.md` (заменяет по умолчанию `skills/`) | `"./custom/skills/"` |

425| `commands` | string\|array | Пользовательские плоские файлы `.md` skill или каталоги (заменяет по умолчанию `commands/`) | `"./custom/cmd.md"` или `["./cmd1.md"]` |

426| `agents` | string\|array | Пользовательские файлы агентов (заменяет по умолчанию `agents/`) | `"./custom/agents/reviewer.md"` |

427| `hooks` | string\|array\|object | Пути конфигурации hooks или встроенная конфигурация | `"./my-extra-hooks.json"` |

428| `mcpServers` | string\|array\|object | Пути конфигурации MCP или встроенная конфигурация | `"./my-extra-mcp-config.json"` |

429| `outputStyles` | string\|array | Пользовательские файлы/каталоги стилей вывода (заменяет по умолчанию `output-styles/`) | `"./styles/"` |

430| `themes` | string\|array | Файлы/каталоги цветовых тем (заменяет по умолчанию `themes/`). Смотрите [Themes](#themes) | `"./themes/"` |

431| `lspServers` | string\|array\|object | Конфигурации [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) для интеллектуальной информации о коде (переход к определению, поиск ссылок и т. д.) | `"./.lsp.json"` |

432| `monitors` | string\|array | Конфигурации фонового [Monitor](/ru/tools-reference#monitor-tool), которые запускаются автоматически при активации плагина. Смотрите [Monitors](#monitors) | `"./monitors.json"` |

433| `userConfig` | object | Значения, настраиваемые пользователем, запрашиваемые при включении. Смотрите [Конфигурация пользователя](#user-configuration) | Смотрите ниже |

434| `channels` | array | Объявления каналов для внедрения сообщений (стиль Telegram, Slack, Discord). Смотрите [Каналы](#channels) | Смотрите ниже |

435| `dependencies` | array | Другие плагины, которые требует этот плагин, опционально с ограничениями версии semver. Смотрите [Ограничение версий зависимостей плагина](/ru/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |

436 

437### Конфигурация пользователя

438 

439Поле `userConfig` объявляет значения, которые Claude Code запрашивает у пользователя при включении плагина. Используйте это вместо требования пользователям вручную редактировать `settings.json`.

440 

441```json theme={null}

442{

443 "userConfig": {

444 "api_endpoint": {

445 "type": "string",

446 "title": "API endpoint",

447 "description": "Your team's API endpoint"

448 },

449 "api_token": {

450 "type": "string",

451 "title": "API token",

452 "description": "API authentication token",

453 "sensitive": true

454 }

455 }

456}

457```

458 

459Ключи должны быть допустимыми идентификаторами. Каждое значение поддерживает эти поля:

460 

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

462| :------------ | :---------- | :-------------------------------------------------------------------------------------------- |

463| `type` | Да | Одно из `string`, `number`, `boolean`, `directory` или `file` |

464| `title` | Да | Метка, показываемая в диалоге конфигурации |

465| `description` | Да | Справочный текст, показываемый под полем |

466| `sensitive` | Нет | Если `true`, скрывает ввод и сохраняет значение в защищённом хранилище вместо `settings.json` |

467| `required` | Нет | Если `true`, проверка не пройдёт, когда поле пусто |

468| `default` | Нет | Значение, используемое, когда пользователь ничего не предоставляет |

469| `multiple` | Нет | Для типа `string`, разрешить массив строк |

470| `min` / `max` | Нет | Границы для типа `number` |

471 

472Каждое значение доступно для подстановки как `${user_config.KEY}` в конфигурациях серверов MCP и LSP, командах hooks и командах monitors. Нечувствительные значения также могут быть подставлены в содержимое skills и agents. Все значения экспортируются в подпроцессы плагина как переменные окружения `CLAUDE_PLUGIN_OPTION_<KEY>`.

473 

474Нечувствительные значения хранятся в `settings.json` под `pluginConfigs[<plugin-id>].options`. Чувствительные значения переходят в системный keychain (или `~/.claude/.credentials.json`, где keychain недоступен). Хранилище keychain общее с OAuth токенами и имеет приблизительный лимит 2 КБ, поэтому держите чувствительные значения небольшими.

475 

476### Каналы

477 

478Поле `channels` позволяет плагину объявить один или несколько каналов сообщений, которые внедряют содержимое в разговор. Каждый канал привязывается к серверу MCP, который предоставляет плагин.

479 

480```json theme={null}

481{

482 "channels": [

483 {

484 "server": "telegram",

485 "userConfig": {

486 "bot_token": {

487 "type": "string",

488 "title": "Bot token",

489 "description": "Telegram bot token",

490 "sensitive": true

491 },

492 "owner_id": {

493 "type": "string",

494 "title": "Owner ID",

495 "description": "Your Telegram user ID"

496 }

497 }

498 }

499 ]

500}

501```

502 

503Поле `server` обязательно и должно соответствовать ключу в `mcpServers` плагина. Опциональный `userConfig` для каждого канала использует ту же схему, что и поле верхнего уровня, позволяя плагину запрашивать токены ботов или ID владельцев при включении плагина.

504 

505### Правила поведения пути

506 

507Для `skills`, `commands`, `agents`, `outputStyles`, `themes` и `monitors` пользовательский путь заменяет путь по умолчанию. Если манифест указывает `skills`, каталог по умолчанию `skills/` не сканируется; если он указывает `monitors`, по умолчанию `monitors/monitors.json` не загружается. [Hooks](#hooks), [MCP servers](#mcp-servers) и [LSP servers](#lsp-servers) имеют другую семантику для обработки нескольких источников.

508 

509* Все пути должны быть относительны к корню плагина и начинаться с `./`

510* Компоненты из пользовательских путей используют те же правила именования и пространства имён

511* Несколько путей можно указать как массивы

512* Чтобы сохранить каталог по умолчанию и добавить дополнительные пути для skills, commands, agents или output styles, включите значение по умолчанию в ваш массив: `"skills": ["./skills/", "./extras/"]`

513* Когда путь skill указывает на каталог, который содержит `SKILL.md` напрямую, например `"skills": ["./"]`, указывающий на корень плагина, поле frontmatter `name` в `SKILL.md` определяет имя вызова skill. Это обеспечивает стабильное имя независимо от каталога установки. Если `name` не установлен в frontmatter, в качестве резервного варианта используется имя каталога.

514 

515**Примеры путей**:

516 

517```json theme={null}

518{

519 "commands": [

520 "./specialized/deploy.md",

521 "./utilities/batch-process.md"

522 ],

523 "agents": [

524 "./custom-agents/reviewer.md",

525 "./custom-agents/tester.md"

526 ]

527}

528```

529 

530### Переменные окружения

531 

532Claude Code предоставляет две переменные для ссылки на пути плагина. Обе подставляются встроенно везде, где они появляются в содержимом skills, содержимом agents, командах hooks, командах monitors и конфигурациях серверов MCP или LSP. Обе также экспортируются как переменные окружения в процессы hooks и подпроцессы серверов MCP или LSP.

533 

534**`${CLAUDE_PLUGIN_ROOT}`**: абсолютный путь к каталогу установки вашего плагина. Используйте это для ссылки на скрипты, двоичные файлы и файлы конфигурации, поставляемые с плагином. Этот путь изменяется при обновлении плагина, поэтому файлы, которые вы пишете здесь, не сохраняются при обновлении.

535 

536**`${CLAUDE_PLUGIN_DATA}`**: постоянный каталог для состояния плагина, который сохраняется при обновлениях. Используйте это для установленных зависимостей, таких как `node_modules` или виртуальные окружения Python, сгенерированный код, кэши и любые другие файлы, которые должны сохраняться между версиями плагина. Каталог создаётся автоматически при первом обращении к этой переменной.

537 

538```json theme={null}

539{

540 "hooks": {

541 "PostToolUse": [

542 {

543 "hooks": [

544 {

545 "type": "command",

546 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/process.sh"

547 }

548 ]

549 }

550 ]

551 }

552}

553```

554 

555#### Каталог постоянных данных

556 

557Каталог `${CLAUDE_PLUGIN_DATA}` разрешается в `~/.claude/plugins/data/{id}/`, где `{id}` — это идентификатор плагина с символами вне `a-z`, `A-Z`, `0-9`, `_` и `-`, заменённые на `-`. Для плагина, установленного как `formatter@my-marketplace`, каталог — это `~/.claude/plugins/data/formatter-my-marketplace/`.

558 

559Распространённое использование — установка языковых зависимостей один раз и их повторное использование в сеансах и обновлениях плагина. Поскольку каталог данных пережидает любую отдельную версию плагина, проверка только существования каталога не может обнаружить, когда обновление изменяет манифест зависимостей плагина. Рекомендуемый паттерн сравнивает поставляемый манифест с копией в каталоге данных и переустанавливает при различиях.

560 

561Этот hook `SessionStart` устанавливает `node_modules` при первом запуске и снова всякий раз, когда обновление плагина включает изменённый `package.json`:

562 

563```json theme={null}

564{

565 "hooks": {

566 "SessionStart": [

567 {

568 "hooks": [

569 {

570 "type": "command",

571 "command": "diff -q \"${CLAUDE_PLUGIN_ROOT}/package.json\" \"${CLAUDE_PLUGIN_DATA}/package.json\" >/dev/null 2>&1 || (cd \"${CLAUDE_PLUGIN_DATA}\" && cp \"${CLAUDE_PLUGIN_ROOT}/package.json\" . && npm install) || rm -f \"${CLAUDE_PLUGIN_DATA}/package.json\""

572 }

573 ]

574 }

575 ]

576 }

577}

578```

579 

580`diff` выходит с ненулевым кодом, когда сохранённая копия отсутствует или отличается от поставляемой, охватывая как первый запуск, так и обновления, изменяющие зависимости. Если `npm install` не удаётся, завершающий `rm` удаляет скопированный манифест, чтобы следующий сеанс повторил попытку.

581 

582Скрипты, поставляемые в `${CLAUDE_PLUGIN_ROOT}`, затем могут работать с сохранённым `node_modules`:

583 

584```json theme={null}

585{

586 "mcpServers": {

587 "routines": {

588 "command": "node",

589 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

590 "env": {

591 "NODE_PATH": "${CLAUDE_PLUGIN_DATA}/node_modules"

592 }

593 }

594 }

595}

596```

597 

598Каталог данных удаляется автоматически при удалении плагина из последней области, где он установлен. Интерфейс `/plugin` показывает размер каталога и запрашивает перед удалением. CLI удаляет по умолчанию; передайте [`--keep-data`](#plugin-uninstall) для сохранения.

599 

600***

601 

602## Кэширование плагина и разрешение файлов

603 

604Плагины указываются одним из двух способов:

605 

606* Через `claude --plugin-dir`, на время сеанса.

607* Через маркетплейс, установленный для будущих сеансов.

608 

609В целях безопасности и проверки Claude Code копирует плагины *маркетплейса* в локальный **кэш плагина** пользователя (`~/.claude/plugins/cache`) вместо использования их на месте. Понимание этого поведения важно при разработке плагинов, которые ссылаются на внешние файлы.

610 

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

612 

613Инструменты Glob и Grep Claude пропускают сиротские каталоги версий при поиске, поэтому результаты файлов не включают устаревший код плагина.

614 

615### Ограничения обхода пути

616 

617Установленные плагины не могут ссылаться на файлы вне их каталога. Пути, которые выходят за пределы корня плагина (такие как `../shared-utils`), не будут работать после установки, потому что эти внешние файлы не копируются в кэш.

618 

619### Работа с внешними зависимостями

620 

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

622 

623```bash theme={null}

624ln -s /path/to/shared-utils ./shared-utils

625```

626 

627Это обеспечивает гибкость при сохранении преимуществ безопасности системы кэширования.

628 

629***

630 

631## Структура каталога плагина

632 

633### Стандартная раскладка плагина

634 

635Полный плагин следует этой структуре:

636 

637```text theme={null}

638enterprise-plugin/

639├── .claude-plugin/ # Каталог метаданных (опционально)

640│ └── plugin.json # манифест плагина

641├── skills/ # Skills

642│ ├── code-reviewer/

643│ │ └── SKILL.md

644│ └── pdf-processor/

645│ ├── SKILL.md

646│ └── scripts/

647├── commands/ # Skills как плоские файлы .md

648│ ├── status.md

649│ └── logs.md

650├── agents/ # Определения subagent

651│ ├── security-reviewer.md

652│ ├── performance-tester.md

653│ └── compliance-checker.md

654├── output-styles/ # Определения стиля вывода

655│ └── terse.md

656├── themes/ # Определения цветовой темы

657│ └── dracula.json

658├── monitors/ # Конфигурации фонового monitor

659│ └── monitors.json

660├── hooks/ # Конфигурации hook

661│ ├── hooks.json # Основная конфигурация hook

662│ └── security-hooks.json # Дополнительные hooks

663├── bin/ # Исполняемые файлы плагина, добавленные в PATH

664│ └── my-tool # Вызываемый как голая команда в инструменте Bash

665├── settings.json # Параметры по умолчанию для плагина

666├── .mcp.json # Определения сервера MCP

667├── .lsp.json # Конфигурации сервера LSP

668├── scripts/ # Скрипты hook и утилиты

669│ ├── security-scan.sh

670│ ├── format-code.py

671│ └── deploy.js

672├── LICENSE # Файл лицензии

673└── CHANGELOG.md # История версий

674```

675 

676<Warning>

677 Каталог `.claude-plugin/` содержит файл `plugin.json`. Все остальные каталоги (commands/, agents/, skills/, output-styles/, themes/, monitors/, hooks/) должны быть в корне плагина, а не внутри `.claude-plugin/`.

678</Warning>

679 

680### Справочник местоположений файлов

681 

682| Компонент | Местоположение по умолчанию | Назначение |

683| :---------------- | :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

684| **Манифест** | `.claude-plugin/plugin.json` | Метаданные и конфигурация плагина (опционально) |

685| **Skills** | `skills/` | Skills со структурой `<name>/SKILL.md` |

686| **Commands** | `commands/` | Skills как плоские файлы Markdown. Используйте `skills/` для новых плагинов |

687| **Agents** | `agents/` | Файлы Subagent Markdown |

688| **Output styles** | `output-styles/` | Определения стиля вывода |

689| **Themes** | `themes/` | Определения цветовой темы |

690| **Hooks** | `hooks/hooks.json` | Конфигурация hook |

691| **MCP servers** | `.mcp.json` | Определения сервера MCP |

692| **LSP servers** | `.lsp.json` | Конфигурации языкового сервера |

693| **Monitors** | `monitors/monitors.json` | Конфигурации фонового monitor |

694| **Executables** | `bin/` | Исполняемые файлы, добавленные в PATH инструмента Bash. Файлы здесь вызываются как голые команды в любом вызове инструмента Bash, пока плагин включен |

695| **Settings** | `settings.json` | Конфигурация по умолчанию, применяемая при включении плагина. В настоящее время поддерживаются только ключи [`agent`](/ru/sub-agents) и [`subagentStatusLine`](/ru/statusline#subagent-status-lines) |

696 

697***

698 

699## Справочник команд CLI

700 

701Claude Code предоставляет команды CLI для неинтерактивного управления плагинами, полезные для написания скриптов и автоматизации.

702 

703### plugin install

704 

705Установите плагин из доступных маркетплейсов.

706 

707```bash theme={null}

708claude plugin install <plugin> [options]

709```

710 

711**Аргументы:**

712 

713* `<plugin>`: Имя плагина или `plugin-name@marketplace-name` для конкретного маркетплейса

714 

715**Опции:**

716 

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

718| :-------------------- | :----------------------------------------------- | :----------- |

719| `-s, --scope <scope>` | Область установки: `user`, `project` или `local` | `user` |

720| `-h, --help` | Отобразить справку для команды | |

721 

722Область определяет, в какой файл параметров добавляется установленный плагин. Например, `--scope project` записывает в `enabledPlugins` в .claude/settings.json, делая плагин доступным для всех, кто клонирует репозиторий проекта.

723 

724**Примеры:**

725 

726```bash theme={null}

727# Установить в область пользователя (по умолчанию)

728claude plugin install formatter@my-marketplace

729 

730# Установить в область проекта (общее с командой)

731claude plugin install formatter@my-marketplace --scope project

732 

733# Установить в локальную область (игнорируется git)

734claude plugin install formatter@my-marketplace --scope local

735```

736 

737### plugin uninstall

738 

739Удалите установленный плагин.

740 

741```bash theme={null}

742claude plugin uninstall <plugin> [options]

743```

744 

745**Аргументы:**

746 

747* `<plugin>`: Имя плагина или `plugin-name@marketplace-name`

748 

749**Опции:**

750 

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

752| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------- | :----------- |

753| `-s, --scope <scope>` | Удалить из области: `user`, `project` или `local` | `user` |

754| `--keep-data` | Сохранить [каталог постоянных данных](#persistent-data-directory) плагина | |

755| `--prune` | Также удалить автоматически установленные зависимости, которые не требуются другим плагинам. См. [plugin prune](#plugin-prune) | |

756| `-y, --yes` | Пропустить подтверждение `--prune`. Требуется, когда stdin не является TTY | |

757| `-h, --help` | Отобразить справку для команды | |

758 

759**Псевдонимы:** `remove`, `rm`

760 

761По умолчанию удаление из последней оставшейся области также удаляет каталог `${CLAUDE_PLUGIN_DATA}` плагина. Используйте `--keep-data` для сохранения, например при переустановке после тестирования новой версии.

762 

763### plugin prune

764 

765Удалите автоматически установленные зависимости плагинов, которые больше не требуются ни одному установленному плагину. Зависимости, которые Claude Code подтянул для удовлетворения поля [`dependencies`](/ru/plugin-dependencies) другого плагина, удаляются; плагины, которые вы установили напрямую, никогда не затрагиваются.

766 

767```bash theme={null}

768claude plugin prune [options]

769```

770 

771**Опции:**

772 

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

774| :-------------------- | :--------------------------------------------------------------- | :----------- |

775| `-s, --scope <scope>` | Очистить в области: `user`, `project` или `local` | `user` |

776| `--dry-run` | Список того, что будет удалено, без фактического удаления | |

777| `-y, --yes` | Пропустить подтверждение. Требуется, когда stdin не является TTY | |

778| `-h, --help` | Отобразить справку для команды | |

779 

780**Псевдонимы:** `autoremove`

781 

782Команда выводит список потерянных зависимостей и запрашивает подтверждение перед их удалением. Чтобы удалить плагин и очистить его зависимости в один шаг, запустите `claude plugin uninstall <plugin> --prune`.

783 

784<Note>

785 `claude plugin prune` требует Claude Code v2.1.121 или более поздней версии.

786</Note>

787 

788### plugin enable

789 

790Включите отключённый плагин.

791 

792```bash theme={null}

793claude plugin enable <plugin> [options]

794```

795 

796**Аргументы:**

797 

798* `<plugin>`: Имя плагина или `plugin-name@marketplace-name`

799 

800**Опции:**

801 

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

803| :-------------------- | :--------------------------------------------------- | :----------- |

804| `-s, --scope <scope>` | Область для включения: `user`, `project` или `local` | `user` |

805| `-h, --help` | Отобразить справку для команды | |

806 

807### plugin disable

808 

809Отключите плагин без его удаления.

810 

811```bash theme={null}

812claude plugin disable <plugin> [options]

813```

814 

815**Аргументы:**

816 

817* `<plugin>`: Имя плагина или `plugin-name@marketplace-name`

818 

819**Опции:**

820 

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

822| :-------------------- | :---------------------------------------------------- | :----------- |

823| `-s, --scope <scope>` | Область для отключения: `user`, `project` или `local` | `user` |

824| `-h, --help` | Отобразить справку для команды | |

825 

826### plugin update

827 

828Обновите плагин до последней версии.

829 

830```bash theme={null}

831claude plugin update <plugin> [options]

832```

833 

834**Аргументы:**

835 

836* `<plugin>`: Имя плагина или `plugin-name@marketplace-name`

837 

838**Опции:**

839 

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

841| :-------------------- | :--------------------------------------------------------------- | :----------- |

842| `-s, --scope <scope>` | Область для обновления: `user`, `project`, `local` или `managed` | `user` |

843| `-h, --help` | Отобразить справку для команды | |

844 

845***

846 

847### plugin list

848 

849Список установленных плагинов с их версией, источником маркетплейса и статусом включения.

850 

851```bash theme={null}

852claude plugin list [options]

853```

854 

855**Опции:**

856 

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

858| :------------ | :------------------------------------------------------------ | :----------- |

859| `--json` | Вывести как JSON | |

860| `--available` | Включить доступные плагины из маркетплейсов. Требует `--json` | |

861| `-h, --help` | Отобразить справку для команды | |

862 

863### plugin tag

864 

865Создайте тег выпуска git для плагина в текущем каталоге. Запустите из папки плагина. См. [Теги выпусков плагинов](/ru/plugin-dependencies#tag-plugin-releases-for-version-resolution).

866 

867```bash theme={null}

868claude plugin tag [options]

869```

870 

871**Опции:**

872 

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

874| :------------ | :------------------------------------------------------------------ | :----------- |

875| `--push` | Отправить тег на удалённый репозиторий после его создания | |

876| `--dry-run` | Вывести, что будет помечено тегом, без создания самого тега | |

877| `-f, --force` | Создать тег даже если рабочее дерево грязное или тег уже существует | |

878| `-h, --help` | Отобразить справку для команды | |

879 

880***

881 

882## Инструменты отладки и разработки

883 

884### Команды отладки

885 

886Используйте `claude --debug` для просмотра деталей загрузки плагина:

887 

888Это показывает:

889 

890* Какие плагины загружаются

891* Любые ошибки в манифестах плагинов

892* Регистрацию skill, agent и hook

893* Инициализацию сервера MCP

894 

895### Распространённые проблемы

896 

897| Проблема | Причина | Решение |

898| :---------------------------------- | :---------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

899| Плагин не загружается | Неверный `plugin.json` | Запустите `claude plugin validate` или `/plugin validate` для проверки `plugin.json`, frontmatter skill/agent/command и `hooks/hooks.json` на синтаксис и ошибки схемы |

900| Skills не отображаются | Неправильная структура каталога | Убедитесь, что `skills/` или `commands/` находится в корне плагина, а не в `.claude-plugin/` |

901| Hooks не срабатывают | Скрипт не исполняемый | Запустите `chmod +x script.sh` |

902| Сервер MCP не работает | Отсутствует `${CLAUDE_PLUGIN_ROOT}` | Используйте переменную для всех путей плагина |

903| Ошибки пути | Используются абсолютные пути | Все пути должны быть относительными и начинаться с `./` |

904| LSP `Executable not found in $PATH` | Языковой сервер не установлен | Установите двоичный файл (например, `npm install -g typescript-language-server typescript`) |

905 

906### Примеры сообщений об ошибках

907 

908**Ошибки проверки манифеста**:

909 

910* `Invalid JSON syntax: Unexpected token } in JSON at position 142`: проверьте наличие пропущенных запятых, лишних запятых или неквотированных строк

911* `Plugin has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Required`: отсутствует обязательное поле

912* `Plugin has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ...`: ошибка синтаксиса JSON

913 

914**Ошибки загрузки плагина**:

915 

916* `Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories.`: путь команды существует, но не содержит действительных файлов команд

917* `Plugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.`: путь `source` в marketplace.json указывает на несуществующий каталог

918* `Plugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.`: удалите дублирующиеся определения компонентов или удалите `strict: false` в записи маркетплейса

919 

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

921 

922**Скрипт hook не выполняется**:

923 

9241. Проверьте, что скрипт исполняемый: `chmod +x ./scripts/your-script.sh`

9252. Проверьте строку shebang: Первая строка должна быть `#!/bin/bash` или `#!/usr/bin/env bash`

9263. Проверьте, что путь использует `${CLAUDE_PLUGIN_ROOT}`: `"command": "${CLAUDE_PLUGIN_ROOT}/scripts/your-script.sh"`

9274. Протестируйте скрипт вручную: `./scripts/your-script.sh`

928 

929**Hook не срабатывает на ожидаемых событиях**:

930 

9311. Проверьте, что имя события правильное (чувствительно к регистру): `PostToolUse`, а не `postToolUse`

9322. Проверьте, что шаблон сопоставления соответствует вашим инструментам: `"matcher": "Write|Edit"` для операций с файлами

9333. Подтвердите, что тип hook действителен: `command`, `http`, `mcp_tool`, `prompt` или `agent`

934 

935### Устранение неполадок сервера MCP

936 

937**Сервер не запускается**:

938 

9391. Проверьте, что команда существует и исполняемая

9402. Проверьте, что все пути используют переменную `${CLAUDE_PLUGIN_ROOT}`

9413. Проверьте журналы сервера MCP: `claude --debug` показывает ошибки инициализации

9424. Протестируйте сервер вручную вне Claude Code

943 

944**Инструменты сервера не отображаются**:

945 

9461. Убедитесь, что сервер правильно настроен в `.mcp.json` или `plugin.json`

9472. Проверьте, что сервер правильно реализует протокол MCP

9483. Проверьте наличие тайм-аутов соединения в выводе отладки

949 

950### Ошибки структуры каталога

951 

952**Симптомы**: Плагин загружается, но компоненты (skills, agents, hooks) отсутствуют.

953 

954**Правильная структура**: Компоненты должны быть в корне плагина, а не внутри `.claude-plugin/`. Только `plugin.json` должен быть в `.claude-plugin/`.

955 

956```text theme={null}

957my-plugin/

958├── .claude-plugin/

959│ └── plugin.json ← Только манифест здесь

960├── commands/ ← На уровне корня

961├── agents/ ← На уровне корня

962└── hooks/ ← На уровне корня

963```

964 

965Если ваши компоненты находятся внутри `.claude-plugin/`, переместите их в корень плагина.

966 

967**Контрольный список отладки**:

968 

9691. Запустите `claude --debug` и ищите сообщения "loading plugin"

9702. Проверьте, что каждый каталог компонента указан в выводе отладки

9713. Проверьте, что разрешения файлов позволяют читать файлы плагина

972 

973***

974 

975## Справочник по распространению и версионированию

976 

977### Управление версиями

978 

979Claude Code использует версию плагина в качестве ключа кэша, который определяет, доступно ли обновление. Когда вы запускаете `/plugin update` или срабатывает автоматическое обновление, Claude Code вычисляет текущую версию и пропускает обновление, если она совпадает с уже установленной.

980 

981Версия определяется из первого из следующих параметров, который установлен:

982 

9831. Поле `version` в `plugin.json` плагина

9842. Поле `version` в записи плагина на маркетплейсе в `marketplace.json`

9853. SHA коммита git источника плагина для источников `github`, `url`, `git-subdir` и relative-path в маркетплейсе, размещённом на git

9864. `unknown` для источников `npm` или локальных каталогов, не находящихся в репозитории git

987 

988Это дает вам два способа версионирования плагина:

989 

990| Подход | Как | Поведение обновления | Лучше всего для |

991| :--------------------- | :-------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------- |

992| **Явная версия** | Установите `"version": "2.1.0"` в `plugin.json` | Пользователи получают обновления только когда вы обновляете это поле. Отправка новых коммитов без обновления не имеет эффекта, и `/plugin update` сообщает "already at the latest version". | Опубликованные плагины со стабильными циклами выпуска |

993| **Версия коммита SHA** | Опустите `version` из `plugin.json` и записи маркетплейса | Пользователи получают обновления при каждом новом коммите в источник git плагина | Внутренние или командные плагины в активной разработке |

994 

995<Warning>

996 Если вы установите `version` в `plugin.json`, вы должны обновлять его каждый раз, когда хотите, чтобы пользователи получили изменения. Отправка новых коммитов недостаточна, потому что Claude Code видит ту же строку версии и сохраняет кэшированную копию. Если вы быстро итерируете, оставьте `version` неустановленным, чтобы вместо этого использовалась SHA коммита git.

997</Warning>

998 

999Если вы используете явные версии, следуйте [семантическому версионированию](https://semver.org) (`MAJOR.MINOR.PATCH`): обновляйте MAJOR для критических изменений, MINOR для новых функций, PATCH для исправлений ошибок. Документируйте изменения в `CHANGELOG.md`.

1000 

1001***

1002 

1003## Смотрите также

1004 

1005* [Плагины](/ru/plugins) - Учебные материалы и практическое использование

1006* [Маркетплейсы плагинов](/ru/plugin-marketplaces) - Создание и управление маркетплейсами

1007* [Skills](/ru/skills) - Детали разработки skills

1008* [Subagents](/ru/sub-agents) - Конфигурация и возможности агентов

1009* [Hooks](/ru/hooks) - Обработка событий и автоматизация

1010* [MCP](/ru/mcp) - Интеграция внешних инструментов

1011* [Параметры](/ru/settings) - Опции конфигурации для плагинов

quickstart.md +976 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Быстрый старт

6 

7> Добро пожаловать в Claude Code!

8 

9export const InstallConfigurator = ({defaultSurface = 'terminal'}) => {

10 const TERM = {

11 mac: {

12 label: 'macOS / Linux',

13 cmd: 'curl -fsSL https://claude.ai/install.sh | bash'

14 },

15 win: {

16 label: 'Windows'

17 },

18 brew: {

19 label: 'Homebrew',

20 cmd: 'brew install --cask claude-code'

21 },

22 winget: {

23 label: 'WinGet',

24 cmd: 'winget install Anthropic.ClaudeCode'

25 }

26 };

27 const WIN_VARIANTS = {

28 ps: 'irm https://claude.ai/install.ps1 | iex',

29 cmd: 'curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd'

30 };

31 const TABS = [{

32 key: 'terminal',

33 label: 'Terminal'

34 }, {

35 key: 'desktop',

36 label: 'Desktop'

37 }, {

38 key: 'vscode',

39 label: 'VS Code'

40 }, {

41 key: 'jetbrains',

42 label: 'JetBrains'

43 }];

44 const ALT_TARGETS = {

45 desktop: {

46 name: 'Desktop',

47 tagline: 'The full agent in a native app for macOS and Windows.',

48 installLabel: 'Download the app',

49 installHref: 'https://claude.com/download?utm_source=claude_code&utm_medium=docs&utm_content=configurator_desktop_download',

50 guideHref: '/en/desktop-quickstart'

51 },

52 vscode: {

53 name: 'VS Code',

54 tagline: 'Review diffs, manage context, and chat without leaving your editor.',

55 installLabel: 'Install from Marketplace',

56 installHref: 'https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code',

57 altCmd: 'code --install-extension anthropic.claude-code',

58 guideHref: '/en/vs-code'

59 },

60 jetbrains: {

61 name: 'JetBrains',

62 tagline: 'Native plugin for IntelliJ, PyCharm, WebStorm, and other JetBrains IDEs.',

63 installLabel: 'Install from Marketplace',

64 installHref: 'https://plugins.jetbrains.com/plugin/27310-claude-code-beta-',

65 guideHref: '/en/jetbrains'

66 }

67 };

68 const PROVIDERS = [{

69 key: 'anthropic',

70 label: 'Anthropic'

71 }, {

72 key: 'bedrock',

73 label: 'Amazon Bedrock'

74 }, {

75 key: 'foundry',

76 label: 'Microsoft Foundry'

77 }, {

78 key: 'vertex',

79 label: 'Google Vertex AI'

80 }];

81 const PROVIDER_NOTICE = {

82 bedrock: <>

83 <strong>Configure your AWS account first.</strong> Running on Bedrock

84 requires model access enabled in the AWS console and IAM credentials.{' '}

85 <a href="/en/amazon-bedrock">Bedrock setup guide →</a>

86 </>,

87 vertex: <>

88 <strong>Configure your GCP project first.</strong> Running on Vertex AI

89 requires the Vertex API enabled and a service account with the right

90 permissions.{' '}

91 <a href="/en/google-vertex-ai">Vertex setup guide →</a>

92 </>,

93 foundry: <>

94 <strong>Configure your Azure resources first.</strong> Running on

95 Microsoft Foundry requires an Azure subscription with a Foundry resource

96 and model deployments provisioned.{' '}

97 <a href="/en/microsoft-foundry">Foundry setup guide →</a>

98 </>

99 };

100 const iconCheck = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

101 <polyline points="20 6 9 17 4 12" />

102 </svg>;

103 const iconCopy = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

104 <rect x="9" y="9" width="13" height="13" rx="2" />

105 <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />

106 </svg>;

107 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

108 <line x1="5" y1="12" x2="19" y2="12" />

109 <polyline points="12 5 19 12 12 19" />

110 </svg>;

111 const iconArrowUpRight = (size = 14) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

112 <line x1="7" y1="17" x2="17" y2="7" />

113 <polyline points="7 7 17 7 17 17" />

114 </svg>;

115 const iconInfo = (size = 16) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

116 <circle cx="12" cy="12" r="10" />

117 <line x1="12" y1="16" x2="12" y2="12" />

118 <line x1="12" y1="8" x2="12.01" y2="8" />

119 </svg>;

120 const [target, setTarget] = useState(defaultSurface);

121 const [team, setTeam] = useState(false);

122 const [provider, setProvider] = useState('anthropic');

123 const [pkg, setPkg] = useState(() => (/Win/).test(navigator.userAgent) ? 'win' : 'mac');

124 const [winCmd, setWinCmd] = useState(false);

125 const [copied, setCopied] = useState(null);

126 const copyTimer = useRef(null);

127 const handleCopy = async (text, key) => {

128 try {

129 await navigator.clipboard.writeText(text);

130 } catch {

131 const ta = document.createElement('textarea');

132 ta.value = text;

133 document.body.appendChild(ta);

134 ta.select();

135 document.execCommand('copy');

136 document.body.removeChild(ta);

137 }

138 clearTimeout(copyTimer.current);

139 setCopied(key);

140 copyTimer.current = setTimeout(() => setCopied(null), 1800);

141 };

142 const cardBodyCmd = (cmd, prompt) => {

143 const on = copied === 'term';

144 return <div className="cc-ic-card-body">

145 <span className="cc-ic-prompt">{prompt || '$'}</span>

146 <div className="cc-ic-cmd">{cmd}</div>

147 <button type="button" className={'cc-ic-copy' + (on ? ' cc-ic-copied' : '')} onClick={() => handleCopy(cmd, 'term')}>

148 {on ? iconCheck(13) : iconCopy(13)}

149 <span>{on ? 'Copied' : 'Copy'}</span>

150 </button>

151 </div>;

152 };

153 const isWinInstaller = pkg === 'win';

154 const isWinPrompt = pkg === 'win' || pkg === 'winget';

155 const terminalCmd = isWinInstaller ? WIN_VARIANTS[winCmd ? 'cmd' : 'ps'] : TERM[pkg].cmd;

156 const alt = ALT_TARGETS[target];

157 const showNotice = team && provider !== 'anthropic';

158 const STYLES = `

159.cc-ic {

160 --ic-slate: #141413;

161 --ic-clay: #d97757;

162 --ic-clay-deep: #c6613f;

163 --ic-gray-000: #ffffff;

164 --ic-gray-150: #f0eee6;

165 --ic-gray-550: #73726c;

166 --ic-gray-700: #3d3d3a;

167 --ic-border-subtle: rgba(31, 30, 29, 0.08);

168 --ic-border-default: rgba(31, 30, 29, 0.15);

169 --ic-border-strong: rgba(31, 30, 29, 0.3);

170 --ic-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, 'Courier New', monospace;

171 font-family: 'Anthropic Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

172 font-size: 14px; line-height: 1.5; color: var(--ic-slate);

173 margin: 8px 0 32px;

174}

175.dark .cc-ic {

176 --ic-slate: #f0eee6;

177 --ic-gray-000: #262624;

178 --ic-gray-150: #1f1e1d;

179 --ic-gray-550: #91908a;

180 --ic-gray-700: #bfbdb4;

181 --ic-border-subtle: rgba(240, 238, 230, 0.08);

182 --ic-border-default: rgba(240, 238, 230, 0.14);

183 --ic-border-strong: rgba(240, 238, 230, 0.28);

184}

185.dark .cc-ic-check { background: transparent; }

186.dark .cc-ic-card { border: 0.5px solid var(--ic-border-subtle); }

187.dark .cc-ic-p-pill.cc-ic-active { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); }

188.cc-ic *, .cc-ic *::before, .cc-ic *::after { box-sizing: border-box; }

189.cc-ic a { text-decoration: none; }

190.cc-ic a:not([class]) { color: inherit; }

191.cc-ic button { font-family: inherit; cursor: pointer; }

192 

193.cc-ic-tab-strip {

194 display: inline-flex; gap: 2px;

195 padding: 4px; background: var(--ic-gray-150);

196 border-radius: 10px; overflow-x: auto;

197 max-width: 100%;

198}

199.cc-ic-tab {

200 appearance: none; background: none; border: none;

201 padding: 10px 18px; font-size: 15px; font-weight: 430;

202 color: var(--ic-gray-550); border-radius: 7px;

203 white-space: nowrap;

204 transition: color 0.12s, background-color 0.12s;

205}

206.cc-ic-tab:hover { color: var(--ic-gray-700); }

207.cc-ic-tab.cc-ic-active {

208 color: var(--ic-slate); font-weight: 500;

209 background: var(--ic-gray-000);

210 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);

211}

212.dark .cc-ic-tab.cc-ic-active { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); }

213 

214.cc-ic-team-wrap { padding: 16px 0 20px; }

215.cc-ic-team-toggle {

216 display: flex; align-items: center; gap: 12px; font-family: inherit;

217 padding: 12px 16px; font-size: 14px; font-weight: 430;

218 color: var(--ic-gray-700); cursor: pointer; user-select: none;

219 width: fit-content; background: var(--ic-gray-150);

220 border: 0.5px solid var(--ic-border-subtle); border-radius: 8px;

221 transition: border-color 0.15s;

222}

223.cc-ic-team-toggle:hover { border-color: var(--ic-border-default); }

224.cc-ic-team-toggle.cc-ic-checked {

225 background: rgba(217, 119, 87, 0.08);

226 border-color: rgba(217, 119, 87, 0.25);

227}

228.cc-ic-check {

229 width: 16px; height: 16px;

230 border: 1px solid var(--ic-border-strong); border-radius: 4px;

231 background: var(--ic-gray-000);

232 display: flex; align-items: center; justify-content: center;

233 flex-shrink: 0;

234}

235.cc-ic-check svg { color: #fff; display: none; }

236.cc-ic-team-toggle.cc-ic-checked .cc-ic-check { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); }

237.cc-ic-team-toggle.cc-ic-checked .cc-ic-check svg { display: block; }

238 

239.cc-ic-team-reveal { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }

240.cc-ic-sales {

241 display: flex; align-items: center; justify-content: space-between;

242 gap: 16px; padding: 14px 16px;

243 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

244 border-radius: 8px; flex-wrap: wrap;

245}

246.cc-ic-sales-text { font-size: 13px; color: var(--ic-gray-700); line-height: 1.5; flex: 1; min-width: 200px; }

247.cc-ic-sales-text strong { font-weight: 550; color: var(--ic-slate); }

248.cc-ic-sales-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

249.cc-ic-btn-clay {

250 display: inline-flex; align-items: center; gap: 8px;

251 background: var(--ic-clay-deep); color: #fff; border: none;

252 border-radius: 8px; padding: 8px 14px;

253 font-size: 13px; font-weight: 500;

254 transition: background-color 0.15s; white-space: nowrap;

255}

256.cc-ic-btn-clay:hover { background: var(--ic-clay); }

257.cc-ic-btn-ghost {

258 display: inline-flex; align-items: center; gap: 8px;

259 background: transparent; color: var(--ic-gray-700);

260 border: 0.5px solid var(--ic-border-default);

261 border-radius: 8px; padding: 8px 14px;

262 font-size: 13px; font-weight: 500;

263}

264.cc-ic-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

265 

266.cc-ic-provider-bar {

267 display: flex; align-items: center; gap: 12px;

268 padding: 14px 16px; background: var(--ic-gray-150);

269 border-radius: 8px; font-size: 13px; flex-wrap: wrap;

270}

271.cc-ic-provider-bar .cc-ic-label { color: var(--ic-gray-550); flex-shrink: 0; }

272.cc-ic-provider-pills { display: flex; gap: 4px; flex-wrap: wrap; }

273.cc-ic-p-pill {

274 appearance: none; border: none; background: transparent;

275 padding: 6px 12px; border-radius: 6px;

276 font-size: 13px; font-weight: 430; color: var(--ic-gray-700);

277 white-space: nowrap;

278}

279.cc-ic-p-pill:hover { background: rgba(0, 0, 0, 0.04); }

280.cc-ic-p-pill.cc-ic-active {

281 background: var(--ic-gray-000); color: var(--ic-slate);

282 font-weight: 500; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);

283}

284.cc-ic-provider-notice {

285 display: flex; padding: 16px 18px;

286 background: var(--ic-gray-000); border: 0.5px solid var(--ic-border-default);

287 border-radius: 8px; gap: 14px; align-items: flex-start;

288}

289.cc-ic-provider-notice > svg { color: var(--ic-gray-550); margin-top: 2px; flex-shrink: 0; }

290.cc-ic-provider-notice-body { font-size: 14px; line-height: 1.55; color: var(--ic-gray-700); }

291.cc-ic-provider-notice-body strong { font-weight: 550; color: var(--ic-slate); }

292.cc-ic-provider-notice-body a { color: var(--ic-clay-deep); font-weight: 500; }

293.cc-ic-provider-notice-body a:hover { text-decoration: underline; }

294 

295.cc-ic-card { background: #141413; border-radius: 12px; overflow: hidden; }

296.cc-ic-subtabs {

297 display: flex; align-items: center;

298 background: #1a1918;

299 border-bottom: 0.5px solid rgba(255, 255, 255, 0.08);

300 padding: 0 8px; overflow-x: auto;

301}

302.cc-ic-subtab {

303 appearance: none; background: none; border: none;

304 padding: 12px 16px; font-size: 12px;

305 color: rgba(255, 255, 255, 0.5);

306 position: relative; white-space: nowrap;

307}

308.cc-ic-subtab:hover { color: rgba(255, 255, 255, 0.75); }

309.cc-ic-subtab.cc-ic-active { color: #fff; }

310.cc-ic-subtab.cc-ic-active::after {

311 content: ''; position: absolute;

312 left: 12px; right: 12px; bottom: -0.5px;

313 height: 2px; background: var(--ic-clay);

314}

315.cc-ic-shell-switch {

316 display: inline-flex; gap: 2px;

317 margin: 14px 26px 0; padding: 3px;

318 background: rgba(255, 255, 255, 0.06);

319 border: 0.5px solid rgba(255, 255, 255, 0.08);

320 border-radius: 8px;

321 font-family: inherit;

322}

323.cc-ic-shell-option {

324 font: inherit; font-size: 12px; font-weight: 500;

325 padding: 5px 12px; border-radius: 6px;

326 background: transparent; border: none;

327 color: rgba(255, 255, 255, 0.55);

328 cursor: pointer; user-select: none; white-space: nowrap;

329 transition: color 120ms ease, background-color 120ms ease;

330}

331.cc-ic-shell-option:hover { color: rgba(255, 255, 255, 0.85); }

332.cc-ic-shell-option.cc-ic-active {

333 background: rgba(255, 255, 255, 0.12);

334 color: #fff;

335 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);

336}

337 

338.cc-ic-card-body { padding: 24px 26px; display: flex; align-items: flex-start; gap: 14px; }

339.cc-ic-prompt {

340 color: var(--ic-clay); font-family: var(--ic-font-mono);

341 font-size: 17px; user-select: none; padding-top: 2px;

342}

343.cc-ic-cmd {

344 flex: 1; font-family: var(--ic-font-mono);

345 font-size: 17px; color: #f0eee6;

346 line-height: 1.55; white-space: pre-wrap; word-break: break-word;

347}

348.cc-ic-copy {

349 display: inline-flex; align-items: center; gap: 6px;

350 background: rgba(255, 255, 255, 0.08);

351 border: 0.5px solid rgba(255, 255, 255, 0.12);

352 color: rgba(255, 255, 255, 0.85);

353 padding: 7px 13px; border-radius: 8px;

354 font-size: 13px; font-weight: 500; flex-shrink: 0;

355}

356.cc-ic-copy:hover { background: rgba(255, 255, 255, 0.14); }

357.cc-ic-copy.cc-ic-copied { background: var(--ic-clay-deep); border-color: var(--ic-clay-deep); color: #fff; }

358 

359.cc-ic-below {

360 margin-top: 12px; font-size: 13px; color: var(--ic-gray-550);

361 display: flex; gap: 16px; flex-wrap: wrap; align-items: baseline;

362}

363.cc-ic-below a { color: var(--ic-gray-700); border-bottom: 0.5px solid var(--ic-border-default); }

364.cc-ic-below a:hover { color: var(--ic-clay-deep); border-bottom-color: var(--ic-clay-deep); }

365.cc-ic-handoff {

366 padding: 22px 24px;

367 background: linear-gradient(180deg, #faf9f4 0%, #f3f1e9 100%);

368 border: 0.5px solid var(--ic-border-default);

369 border-radius: 12px;

370 box-shadow: 0 1px 2px rgba(31, 30, 29, 0.04), 0 6px 16px -4px rgba(31, 30, 29, 0.06);

371}

372.dark .cc-ic-handoff {

373 background: linear-gradient(180deg, #262624 0%, #1f1e1d 100%);

374 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 6px 16px -4px rgba(0, 0, 0, 0.4);

375}

376.cc-ic-handoff-title {

377 font-size: 16px; font-weight: 550; color: var(--ic-slate);

378 letter-spacing: -0.01em; margin-bottom: 4px;

379}

380.cc-ic-handoff-sub {

381 font-size: 14px; line-height: 1.5; color: var(--ic-gray-700);

382 margin-bottom: 18px;

383}

384.cc-ic-handoff-actions { display: flex; gap: 10px; flex-wrap: wrap; }

385.cc-ic-handoff-alt {

386 margin-top: 12px; font-size: 12px; color: var(--ic-gray-550);

387}

388.cc-ic-handoff-alt code {

389 font-family: var(--ic-font-mono); font-size: 11px;

390 background: var(--ic-gray-150); padding: 2px 6px;

391 border-radius: 4px; color: var(--ic-gray-700);

392}

393.cc-ic-copy-sm {

394 appearance: none; border: none;

395 display: inline-flex; align-items: center; justify-content: center;

396 width: 22px; height: 22px;

397 margin-left: 4px; vertical-align: middle;

398 background: var(--ic-gray-150); color: var(--ic-gray-550);

399 border-radius: 4px;

400 transition: color 0.1s, background-color 0.1s;

401}

402.cc-ic-copy-sm:hover { color: var(--ic-gray-700); background: var(--ic-border-default); }

403.cc-ic-copy-sm.cc-ic-copied { background: var(--ic-clay-deep); color: #fff; }

404 

405@media (max-width: 720px) {

406 .cc-ic-tab { padding: 12px 14px; font-size: 14px; }

407 .cc-ic-sales-actions { width: 100%; }

408 .cc-ic-card-body { padding: 20px; }

409 .cc-ic-cmd { font-size: 15px; }

410}

411`;

412 return <div className="cc-ic not-prose">

413 <style>{STYLES}</style>

414 

415 {}

416 <div className="cc-ic-tab-strip" role="tablist">

417 {TABS.map(t => <button key={t.key} type="button" role="tab" aria-selected={target === t.key} className={'cc-ic-tab' + (target === t.key ? ' cc-ic-active' : '')} onClick={() => setTarget(t.key)}>

418 {t.label}

419 </button>)}

420 </div>

421 

422 {}

423 <div className="cc-ic-team-wrap">

424 <button type="button" role="switch" aria-checked={team} className={'cc-ic-team-toggle' + (team ? ' cc-ic-checked' : '')} onClick={() => setTeam(!team)}>

425 <span className="cc-ic-check">{iconCheck(11)}</span>

426 <span>

427 I’m buying for a team or company (SSO, AWS/Azure/GCP, central billing)

428 </span>

429 </button>

430 </div>

431 

432 {}

433 {team && <div className="cc-ic-team-reveal">

434 <div className="cc-ic-sales">

435 <div className="cc-ic-sales-text">

436 <strong>Set up your team:</strong> self-serve or talk to sales.

437 </div>

438 <div className="cc-ic-sales-actions">

439 <a href="https://claude.ai/upgrade?initialPlanType=team&amp;utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_get_started" className="cc-ic-btn-ghost">

440 Get started

441 </a>

442 <a href="https://www.anthropic.com/contact-sales?utm_source=claude_code&amp;utm_medium=docs&amp;utm_content=configurator_team_contact_sales" className="cc-ic-btn-clay">

443 Contact sales {iconArrowRight()}

444 </a>

445 </div>

446 </div>

447 

448 <div className="cc-ic-provider-bar">

449 <span className="cc-ic-label">Run on</span>

450 <div className="cc-ic-provider-pills" role="radiogroup" aria-label="Provider">

451 {PROVIDERS.map(p => <button key={p.key} type="button" role="radio" aria-checked={provider === p.key} className={'cc-ic-p-pill' + (provider === p.key ? ' cc-ic-active' : '')} onClick={() => setProvider(p.key)}>

452 {p.label}

453 </button>)}

454 </div>

455 </div>

456 

457 {showNotice && <div className="cc-ic-provider-notice">

458 {iconInfo()}

459 <div className="cc-ic-provider-notice-body">

460 {PROVIDER_NOTICE[provider]}

461 </div>

462 </div>}

463 </div>}

464 

465 {}

466 {target === 'terminal' && <div className="cc-ic-card">

467 <div className="cc-ic-subtabs" role="tablist" aria-label="Install method">

468 {Object.keys(TERM).map(k => <button key={k} type="button" role="tab" aria-selected={pkg === k} className={'cc-ic-subtab' + (pkg === k ? ' cc-ic-active' : '')} onClick={() => setPkg(k)}>

469 {TERM[k].label}

470 </button>)}

471 </div>

472 {isWinInstaller && <div className="cc-ic-shell-switch" role="tablist" aria-label="Shell">

473 {[{

474 k: 'ps',

475 label: 'PowerShell'

476 }, {

477 k: 'cmd',

478 label: 'CMD'

479 }].map(({k, label}) => {

480 const active = k === 'cmd' === winCmd;

481 return <button key={k} type="button" role="tab" aria-selected={active} className={'cc-ic-shell-option' + (active ? ' cc-ic-active' : '')} onClick={() => setWinCmd(k === 'cmd')}>

482 {label}

483 </button>;

484 })}

485 </div>}

486 {cardBodyCmd(terminalCmd, isWinPrompt ? '>' : '$')}

487 </div>}

488 

489 {}

490 {target === 'terminal' && <div className="cc-ic-below">

491 {isWinInstaller && <span>

492 <a href="https://git-scm.com/downloads/win" target="_blank" rel="noopener">

493 Git for Windows

494 </a>{' '}

495 recommended. PowerShell is used if Git Bash is absent.

496 </span>}

497 {(pkg === 'brew' || pkg === 'winget') && <span>

498 Does not auto-update. Run{' '}

499 <code>{pkg === 'brew' ? 'brew upgrade claude-code' : 'winget upgrade Anthropic.ClaudeCode'}</code>{' '}

500 periodically.

501 </span>}

502 <a href="/en/troubleshoot-install">Installation troubleshooting</a>

503 </div>}

504 

505 {alt && <div className="cc-ic-handoff">

506 <div className="cc-ic-handoff-title">Claude Code for {alt.name}</div>

507 <div className="cc-ic-handoff-sub">{alt.tagline}</div>

508 <div className="cc-ic-handoff-actions">

509 <a href={alt.installHref} className="cc-ic-btn-clay" {...alt.installHref.startsWith('http') ? {

510 target: '_blank',

511 rel: 'noopener'

512 } : {}}>

513 {alt.installLabel} {iconArrowUpRight(13)}

514 </a>

515 <a href={alt.guideHref} className="cc-ic-btn-ghost">

516 {alt.name} guide {iconArrowRight(12)}

517 </a>

518 </div>

519 {alt.altCmd && <div className="cc-ic-handoff-alt">

520 or run <code>{alt.altCmd}</code>

521 <button type="button" className={'cc-ic-copy-sm' + (copied === 'alt' ? ' cc-ic-copied' : '')} onClick={() => handleCopy(alt.altCmd, 'alt')} aria-label="Copy command">

522 {copied === 'alt' ? iconCheck(11) : iconCopy(11)}

523 </button>

524 </div>}

525 </div>}

526 </div>;

527};

528 

529export const Experiment = ({flag, treatment, children}) => {

530 const VID_KEY = 'exp_vid';

531 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

532 const fnv1a = s => {

533 let h = 0x811c9dc5;

534 for (let i = 0; i < s.length; i++) {

535 h ^= s.charCodeAt(i);

536 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

537 }

538 return h >>> 0;

539 };

540 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

541 const [decision] = useState(() => {

542 const params = new URLSearchParams(location.search);

543 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

544 const force = params.get('gb-force');

545 if (force) {

546 for (const p of force.split(',')) {

547 const [k, v] = p.split(':');

548 if (k === flag) return {

549 variant: v || 'treatment',

550 track: false

551 };

552 }

553 }

554 if (navigator.globalPrivacyControl) {

555 return {

556 variant: 'control',

557 track: false

558 };

559 }

560 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

561 if (prefsMatch) {

562 try {

563 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

564 return {

565 variant: 'control',

566 track: false

567 };

568 }

569 } catch {

570 return {

571 variant: 'control',

572 track: false

573 };

574 }

575 } else {

576 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

577 if (!country || CONSENT_COUNTRIES.has(country)) {

578 return {

579 variant: 'control',

580 track: false

581 };

582 }

583 }

584 let vid;

585 try {

586 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

587 if (ajsMatch) {

588 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

589 } else {

590 vid = localStorage.getItem(VID_KEY);

591 if (!vid) {

592 vid = crypto.randomUUID();

593 }

594 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

595 }

596 try {

597 localStorage.setItem(VID_KEY, vid);

598 } catch {}

599 } catch {

600 return {

601 variant: 'control',

602 track: false

603 };

604 }

605 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

606 return {

607 variant,

608 track: true,

609 vid

610 };

611 });

612 useEffect(() => {

613 if (!decision.track) return;

614 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

615 method: 'POST',

616 headers: {

617 'Content-Type': 'application/json',

618 'x-service-name': 'claude_code_docs'

619 },

620 body: JSON.stringify({

621 events: [{

622 event_type: 'GrowthbookExperimentEvent',

623 event_data: {

624 device_id: decision.vid,

625 anonymous_id: decision.vid,

626 timestamp: new Date().toISOString(),

627 experiment_id: flag,

628 variation_id: decision.variant === 'treatment' ? 1 : 0,

629 environment: 'production'

630 }

631 }]

632 }),

633 keepalive: true

634 }).catch(() => {});

635 }, []);

636 return decision.variant === 'treatment' ? treatment : children;

637};

638 

639Это руководство по быстрому старту позволит вам использовать AI-powered кодирование всего за несколько минут. К концу вы поймёте, как использовать Claude Code для типичных задач разработки.

640 

641<Experiment flag="quickstart-install-configurator" treatment={<InstallConfigurator />} />

642 

643## Перед началом

644 

645Убедитесь, что у вас есть:

646 

647* Открытый терминал или командная строка

648 * Если вы никогда раньше не использовали терминал, ознакомьтесь с [руководством по терминалу](/ru/terminal-guide)

649* Проект кода для работы

650* [Подписка Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Teams или Enterprise), учётная запись [Claude Console](https://console.anthropic.com/) или доступ через [поддерживаемого облачного провайдера](/ru/third-party-integrations)

651 

652<Note>

653 Это руководство охватывает CLI терминала. Claude Code также доступен в [веб-версии](https://claude.ai/code), как [настольное приложение](/ru/desktop), в [VS Code](/ru/vs-code) и [JetBrains IDE](/ru/jetbrains), в [Slack](/ru/slack) и в CI/CD с [GitHub Actions](/ru/github-actions) и [GitLab](/ru/gitlab-ci-cd). Смотрите [все интерфейсы](/ru/overview#use-claude-code-everywhere).

654</Note>

655 

656## Шаг 1: Установите Claude Code

657 

658To install Claude Code, use one of the following methods:

659 

660<Tabs>

661 <Tab title="Native Install (Recommended)">

662 **macOS, Linux, WSL:**

663 

664 ```bash theme={null}

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

666 ```

667 

668 **Windows PowerShell:**

669 

670 ```powershell theme={null}

671 irm https://claude.ai/install.ps1 | iex

672 ```

673 

674 **Windows CMD:**

675 

676 ```batch theme={null}

677 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

678 ```

679 

680 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.

681 

682 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.

683 

684 <Info>

685 Native installations automatically update in the background to keep you on the latest version.

686 </Info>

687 </Tab>

688 

689 <Tab title="Homebrew">

690 ```bash theme={null}

691 brew install --cask claude-code

692 ```

693 

694 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.

695 

696 <Info>

697 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.

698 </Info>

699 </Tab>

700 

701 <Tab title="WinGet">

702 ```powershell theme={null}

703 winget install Anthropic.ClaudeCode

704 ```

705 

706 <Info>

707 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

708 </Info>

709 </Tab>

710</Tabs>

711 

712You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

713 

714## Шаг 2: Войдите в свою учётную запись

715 

716Claude Code требует учётную запись для использования. Когда вы начнёте интерактивный сеанс с командой `claude`, вам нужно будет войти:

717 

718```bash theme={null}

719claude

720# При первом использовании вам будет предложено войти

721```

722 

723```bash theme={null}

724/login

725# Следуйте подсказкам для входа в свою учётную запись

726```

727 

728Вы можете войти, используя любой из этих типов учётных записей:

729 

730* [Claude Pro, Max, Teams или Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (рекомендуется)

731* [Claude Console](https://console.anthropic.com/) (доступ к API с предоплаченными кредитами). При первом входе рабочее пространство "Claude Code" автоматически создаётся в Console для централизованного отслеживания затрат.

732* [Amazon Bedrock, Google Vertex AI или Microsoft Foundry](/ru/third-party-integrations) (облачные провайдеры для предприятий)

733 

734После входа ваши учётные данные сохраняются, и вам не нужно будет входить снова. Чтобы позже переключиться на другую учётную запись, используйте команду `/login`.

735 

736## Шаг 3: Начните свой первый сеанс

737 

738Откройте терминал в любом каталоге проекта и запустите Claude Code:

739 

740```bash theme={null}

741cd /path/to/your/project

742claude

743```

744 

745Вы увидите экран приветствия Claude Code с информацией о вашем сеансе, недавними разговорами и последними обновлениями. Введите `/help` для доступных команд или `/resume` для продолжения предыдущего разговора.

746 

747<Tip>

748 После входа (Шаг 2) ваши учётные данные сохраняются на вашей системе. Узнайте больше в [Управлении учётными данными](/ru/authentication#credential-management).

749</Tip>

750 

751## Шаг 4: Задайте свой первый вопрос

752 

753Давайте начнём с понимания вашей кодовой базы. Попробуйте одну из этих команд:

754 

755```text theme={null}

756what does this project do?

757```

758 

759Claude проанализирует ваши файлы и предоставит резюме. Вы также можете задать более конкретные вопросы:

760 

761```text theme={null}

762what technologies does this project use?

763```

764 

765```text theme={null}

766where is the main entry point?

767```

768 

769```text theme={null}

770explain the folder structure

771```

772 

773Вы также можете спросить Claude о его собственных возможностях:

774 

775```text theme={null}

776what can Claude Code do?

777```

778 

779```text theme={null}

780how do I create custom skills in Claude Code?

781```

782 

783```text theme={null}

784can Claude Code work with Docker?

785```

786 

787<Note>

788 Claude Code читает файлы вашего проекта по мере необходимости. Вам не нужно вручную добавлять контекст.

789</Note>

790 

791## Шаг 5: Сделайте своё первое изменение кода

792 

793Теперь давайте заставим Claude Code выполнить некоторое реальное кодирование. Попробуйте простую задачу:

794 

795```text theme={null}

796add a hello world function to the main file

797```

798 

799Claude Code будет:

800 

8011. Найти подходящий файл

8022. Показать вам предложенные изменения

8033. Попросить ваше одобрение

8044. Сделать редактирование

805 

806<Note>

807 Claude Code всегда просит разрешение перед изменением файлов. Вы можете одобрить отдельные изменения или включить режим "Принять всё" для сеанса.

808</Note>

809 

810## Шаг 6: Используйте Git с Claude Code

811 

812Claude Code делает операции Git разговорными:

813 

814```text theme={null}

815what files have I changed?

816```

817 

818```text theme={null}

819commit my changes with a descriptive message

820```

821 

822Вы также можете запросить более сложные операции Git:

823 

824```text theme={null}

825create a new branch called feature/quickstart

826```

827 

828```text theme={null}

829show me the last 5 commits

830```

831 

832```text theme={null}

833help me resolve merge conflicts

834```

835 

836## Шаг 7: Исправьте ошибку или добавьте функцию

837 

838Claude хорошо справляется с отладкой и реализацией функций.

839 

840Опишите то, что вы хотите, на естественном языке:

841 

842```text theme={null}

843add input validation to the user registration form

844```

845 

846Или исправьте существующие проблемы:

847 

848```text theme={null}

849there's a bug where users can submit empty forms - fix it

850```

851 

852Claude Code будет:

853 

854* Найти соответствующий код

855* Понять контекст

856* Реализовать решение

857* Запустить тесты, если они доступны

858 

859## Шаг 8: Попробуйте другие типичные рабочие процессы

860 

861Есть несколько способов работать с Claude:

862 

863**Рефакторинг кода**

864 

865```text theme={null}

866refactor the authentication module to use async/await instead of callbacks

867```

868 

869**Написание тестов**

870 

871```text theme={null}

872write unit tests for the calculator functions

873```

874 

875**Обновление документации**

876 

877```text theme={null}

878update the README with installation instructions

879```

880 

881**Проверка кода**

882 

883```text theme={null}

884review my changes and suggest improvements

885```

886 

887<Tip>

888 Разговаривайте с Claude как с полезным коллегой. Опишите, чего вы хотите достичь, и он поможет вам это сделать.

889</Tip>

890 

891## Основные команды

892 

893Вот наиболее важные команды для ежедневного использования:

894 

895| Команда | Что она делает | Пример |

896| ------------------- | ------------------------------------------------------ | ----------------------------------- |

897| `claude` | Запустить интерактивный режим | `claude` |

898| `claude "task"` | Запустить одноразовую задачу | `claude "fix the build error"` |

899| `claude -p "query"` | Запустить одноразовый запрос, затем выйти | `claude -p "explain this function"` |

900| `claude -c` | Продолжить самый последний разговор в текущем каталоге | `claude -c` |

901| `claude -r` | Возобновить предыдущий разговор | `claude -r` |

902| `claude commit` | Создать коммит Git | `claude commit` |

903| `/clear` | Очистить историю разговора | `/clear` |

904| `/help` | Показать доступные команды | `/help` |

905| `exit` или Ctrl+C | Выйти из Claude Code | `exit` |

906 

907Смотрите [справочник CLI](/ru/cli-reference) для полного списка команд.

908 

909## Советы для начинающих

910 

911Для большего, смотрите [лучшие практики](/ru/best-practices) и [типичные рабочие процессы](/ru/common-workflows).

912 

913<AccordionGroup>

914 <Accordion title="Будьте конкретны в своих запросах">

915 Вместо: "fix the bug"

916 

917 Попробуйте: "fix the login bug where users see a blank screen after entering wrong credentials"

918 </Accordion>

919 

920 <Accordion title="Используйте пошаговые инструкции">

921 Разбейте сложные задачи на этапы:

922 

923 ```text theme={null}

924 1. create a new database table for user profiles

925 2. create an API endpoint to get and update user profiles

926 3. build a webpage that allows users to see and edit their information

927 ```

928 </Accordion>

929 

930 <Accordion title="Позвольте Claude сначала исследовать">

931 Перед внесением изменений позвольте Claude понять ваш код:

932 

933 ```text theme={null}

934 analyze the database schema

935 ```

936 

937 ```text theme={null}

938 build a dashboard showing products that are most frequently returned by our UK customers

939 ```

940 </Accordion>

941 

942 <Accordion title="Сэкономьте время с помощью ярлыков">

943 * Нажмите `?` для просмотра всех доступных сочетаний клавиш

944 * Используйте Tab для завершения команды

945 * Нажмите ↑ для истории команд

946 * Введите `/` для просмотра всех команд и skills

947 </Accordion>

948</AccordionGroup>

949 

950## Что дальше?

951 

952Теперь, когда вы изучили основы, исследуйте более продвинутые функции:

953 

954<CardGroup cols={2}>

955 <Card title="Как работает Claude Code" icon="microchip" href="/ru/how-claude-code-works">

956 Поймите агентский цикл, встроенные инструменты и то, как Claude Code взаимодействует с вашим проектом

957 </Card>

958 

959 <Card title="Лучшие практики" icon="star" href="/ru/best-practices">

960 Получайте лучшие результаты с эффективным запросом и настройкой проекта

961 </Card>

962 

963 <Card title="Типичные рабочие процессы" icon="graduation-cap" href="/ru/common-workflows">

964 Пошаговые руководства для типичных задач

965 </Card>

966 

967 <Card title="Расширьте Claude Code" icon="puzzle-piece" href="/ru/features-overview">

968 Настройте с помощью CLAUDE.md, skills, hooks, MCP и многого другого

969 </Card>

970</CardGroup>

971 

972## Получение помощи

973 

974* **В Claude Code**: Введите `/help` или спросите "how do I..."

975* **Документация**: Вы здесь! Просмотрите другие руководства

976* **Сообщество**: Присоединитесь к нашему [Discord](https://www.anthropic.com/discord) для советов и поддержки

remote-control.md +259 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Продолжайте локальные сеансы с любого устройства с помощью Remote Control

6 

7> Продолжайте локальный сеанс Claude Code со своего телефона, планшета или любого браузера, используя Remote Control. Работает с claude.ai/code и мобильным приложением Claude.

8 

9<Note>

10 Remote Control находится в исследовательском предпросмотре и доступен на всех планах. На планах Team и Enterprise он отключен по умолчанию до тех пор, пока администратор не включит переключатель Remote Control в [параметрах администратора Claude Code](https://claude.ai/admin-settings/claude-code).

11</Note>

12 

13Remote Control подключает [claude.ai/code](https://claude.ai/code) или приложение Claude для [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) и [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) к сеансу Claude Code, работающему на вашем компьютере. Начните задачу за столом, а затем продолжите её со своего телефона на диване или в браузере на другом компьютере.

14 

15Когда вы запускаете сеанс Remote Control на своем компьютере, Claude продолжает работать локально всё время, поэтому ничего не переходит в облако. С помощью Remote Control вы можете:

16 

17* **Использовать полную локальную среду удалённо**: ваша файловая система, [MCP servers](/ru/mcp), инструменты и конфигурация проекта остаются доступными, и ввод `@` автоматически дополняет пути файлов из вашего локального проекта

18* **Работать с обеих поверхностей одновременно**: беседа остаётся синхронизированной на всех подключённых устройствах, поэтому вы можете отправлять сообщения из терминала, браузера и телефона взаимозаменяемо

19* **Пережить перебои**: если ваш ноутбук перейдёт в режим сна или сетевое соединение разорвётся, сеанс автоматически переподключится, когда ваш компьютер вернётся в сеть

20 

21В отличие от [Claude Code в веб-версии](/ru/claude-code-on-the-web), которая работает на облачной инфраструктуре, сеансы Remote Control работают непосредственно на вашем компьютере и взаимодействуют с вашей локальной файловой системой. Веб- и мобильные интерфейсы — это просто окно в этот локальный сеанс.

22 

23<Note>

24 Remote Control требует Claude Code версии 2.1.51 или позже. Проверьте вашу версию с помощью `claude --version`.

25</Note>

26 

27На этой странице рассматриваются настройка, способы запуска и подключения к сеансам, а также сравнение Remote Control с Claude Code в веб-версии.

28 

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

30 

31Перед использованием Remote Control убедитесь, что ваша среда соответствует этим условиям:

32 

33* **Подписка**: доступна на планах Pro, Max, Team и Enterprise. API ключи не поддерживаются. На планах Team и Enterprise администратор должен сначала включить переключатель Remote Control в [параметрах администратора Claude Code](https://claude.ai/admin-settings/claude-code).

34* **Аутентификация**: запустите `claude` и используйте `/login` для входа через claude.ai, если вы ещё этого не сделали.

35* **Доверие рабочей области**: запустите `claude` в каталоге вашего проекта хотя бы один раз, чтобы принять диалог доверия рабочей области.

36 

37## Запуск сеанса Remote Control

38 

39Вы можете запустить сеанс Remote Control из CLI или расширения VS Code. CLI предлагает три режима вызова; VS Code использует команду `/remote-control`.

40 

41<Tabs>

42 <Tab title="Режим сервера">

43 Перейдите в каталог вашего проекта и выполните:

44 

45 ```bash theme={null}

46 claude remote-control

47 ```

48 

49 Процесс продолжает работать в вашем терминале в режиме сервера, ожидая удалённых подключений. Он отображает URL сеанса, который вы можете использовать для [подключения с другого устройства](#connect-from-another-device), и вы можете нажать пробел, чтобы показать QR-код для быстрого доступа со своего телефона. Пока активен удалённый сеанс, терминал показывает статус подключения и активность инструментов.

50 

51 Доступные флаги:

52 

53 | Флаг | Описание |

54 | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

55 | `--name "My Project"` | Установите пользовательское название сеанса, видимое в списке сеансов на claude.ai/code. |

56 | `--remote-control-session-name-prefix <prefix>` | Префикс для автоматически сгенерированных названий сеансов, когда явное имя не установлено. По умолчанию используется имя хоста вашего компьютера, создавая названия вроде `myhost-graceful-unicorn`. Установите `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` для того же эффекта. |

57 | `--spawn <mode>` | Как сервер создаёт сеансы.<br />• `same-dir` (по умолчанию): все сеансы используют текущий рабочий каталог, поэтому они могут конфликтовать при редактировании одних и тех же файлов.<br />• `worktree`: каждый сеанс по требованию получает свой собственный [git worktree](/ru/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees). Требует репозитория git.<br />• `session`: режим одного сеанса. Обслуживает ровно один сеанс и отклоняет дополнительные подключения. Устанавливается только при запуске.<br />Нажмите `w` во время выполнения, чтобы переключиться между `same-dir` и `worktree`. |

58 | `--capacity <N>` | Максимальное количество одновременных сеансов. По умолчанию 32. Не может использоваться с `--spawn=session`. |

59 | `--verbose` | Показать подробные журналы подключения и сеанса. |

60 | `--sandbox` / `--no-sandbox` | Включить или отключить [sandboxing](/ru/sandboxing) для изоляции файловой системы и сети. Отключено по умолчанию. |

61 </Tab>

62 

63 <Tab title="Интерактивный сеанс">

64 Чтобы запустить обычный интерактивный сеанс Claude Code с включённым Remote Control, используйте флаг `--remote-control` (или `--rc`):

65 

66 ```bash theme={null}

67 claude --remote-control

68 ```

69 

70 Опционально передайте имя для сеанса:

71 

72 ```bash theme={null}

73 claude --remote-control "My Project"

74 ```

75 

76 Это даёт вам полный интерактивный сеанс в вашем терминале, который вы также можете контролировать из claude.ai или приложения Claude. В отличие от `claude remote-control` (режим сервера), вы можете вводить сообщения локально, пока сеанс также доступен удалённо.

77 </Tab>

78 

79 <Tab title="Из существующего сеанса">

80 Если вы уже находитесь в сеансе Claude Code и хотите продолжить его удалённо, используйте команду `/remote-control` (или `/rc`):

81 

82 ```text theme={null}

83 /remote-control

84 ```

85 

86 Передайте имя в качестве аргумента, чтобы установить пользовательское название сеанса:

87 

88 ```text theme={null}

89 /remote-control My Project

90 ```

91 

92 Это запускает сеанс Remote Control, который переносит историю вашей текущей беседы и отображает URL сеанса и QR-код, которые вы можете использовать для [подключения с другого устройства](#connect-from-another-device). Флаги `--verbose`, `--sandbox` и `--no-sandbox` недоступны с этой командой.

93 </Tab>

94 

95 <Tab title="VS Code">

96 В [расширении Claude Code VS Code](/ru/vs-code) введите `/remote-control` или `/rc` в поле подсказки или откройте меню команд с помощью `/` и выберите его. Требует Claude Code версии 2.1.79 или позже.

97 

98 ```text theme={null}

99 /remote-control

100 ```

101 

102 Баннер появляется над полем подсказки, показывая статус подключения. После подключения нажмите **Open in browser** в баннере, чтобы перейти непосредственно к сеансу, или найдите его в списке сеансов на [claude.ai/code](https://claude.ai/code). URL сеанса также размещается в беседе.

103 

104 Чтобы отключиться, нажмите значок закрытия на баннере или запустите `/remote-control` снова.

105 

106 В отличие от CLI, команда VS Code не принимает аргумент имени и не отображает QR-код. Название сеанса выводится из истории вашей беседы или первой подсказки.

107 </Tab>

108</Tabs>

109 

110### Подключение с другого устройства

111 

112После активации сеанса Remote Control у вас есть несколько способов подключиться с другого устройства:

113 

114* **Откройте URL сеанса** в любом браузере, чтобы перейти непосредственно к сеансу на [claude.ai/code](https://claude.ai/code).

115* **Отсканируйте QR-код**, показанный рядом с URL сеанса, чтобы открыть его непосредственно в приложении Claude. С помощью `claude remote-control` нажмите пробел, чтобы переключить отображение QR-кода.

116* **Откройте [claude.ai/code](https://claude.ai/code) или приложение Claude** и найдите сеанс по имени в списке сеансов. Сеансы Remote Control показывают значок компьютера с зелёной точкой статуса при подключении.

117 

118Название удалённого сеанса выбирается в следующем порядке:

119 

1201. Имя, которое вы передали в `--name`, `--remote-control` или `/remote-control`

1212. Название, которое вы установили с помощью `/rename`

1223. Последнее значимое сообщение в существующей истории беседы

1234. Автоматически сгенерированное имя вроде `myhost-graceful-unicorn`, где `myhost` — это имя хоста вашего компьютера или префикс, который вы установили с помощью `--remote-control-session-name-prefix`

124 

125Если вы не установили явное имя, название обновляется, чтобы отразить вашу подсказку после её отправки.

126 

127Если в среде уже есть активный сеанс, вас спросят, продолжить ли его или начать новый.

128 

129Если у вас ещё нет приложения Claude, используйте команду `/mobile` внутри Claude Code, чтобы отобразить QR-код загрузки для [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) или [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude).

130 

131### Включение Remote Control для всех сеансов

132 

133По умолчанию Remote Control активируется только при явном запуске `claude remote-control`, `claude --remote-control` или `/remote-control`. Чтобы включить его автоматически для каждого интерактивного сеанса, запустите `/config` внутри Claude Code и установите **Enable Remote Control for all sessions** на `true`. Установите обратно на `false`, чтобы отключить.

134 

135С этой настройкой каждый интерактивный процесс Claude Code регистрирует один удалённый сеанс. Если вы запустите несколько экземпляров, каждый получит свою собственную среду и сеанс. Чтобы запустить несколько одновременных сеансов из одного процесса, используйте [режим сервера](#start-a-remote-control-session) вместо этого.

136 

137## Подключение и безопасность

138 

139Ваш локальный сеанс Claude Code выполняет только исходящие HTTPS запросы и никогда не открывает входящие порты на вашем компьютере. Когда вы запускаете Remote Control, он регистрируется в API Anthropic и опрашивает работу. Когда вы подключаетесь с другого устройства, сервер маршрутизирует сообщения между веб-клиентом или мобильным клиентом и вашим локальным сеансом через потоковое соединение.

140 

141Весь трафик проходит через API Anthropic через TLS, тот же транспортный протокол безопасности, что и любой сеанс Claude Code. Соединение использует несколько краткосрочных учётных данных, каждое из которых ограничено одной целью и истекает независимо.

142 

143## Remote Control в сравнении с Claude Code в веб-версии

144 

145Remote Control и [Claude Code в веб-версии](/ru/claude-code-on-the-web) оба используют интерфейс claude.ai/code. Ключевое различие заключается в том, где работает сеанс: Remote Control выполняется на вашем компьютере, поэтому ваши локальные MCP servers, инструменты и конфигурация проекта остаются доступными. Claude Code в веб-версии выполняется в управляемой Anthropic облачной инфраструктуре.

146 

147Используйте Remote Control, когда вы находитесь в процессе локальной работы и хотите продолжить с другого устройства. Используйте Claude Code в веб-версии, когда вы хотите начать задачу без какой-либо локальной настройки, работать с репозиторием, который у вас не клонирован, или запустить несколько задач параллельно.

148 

149## Мобильные push-уведомления

150 

151Когда Remote Control активен, Claude может отправлять push-уведомления на ваш телефон.

152 

153Claude решает, когда отправить уведомление. Обычно он отправляет одно, когда завершается долгоживущая задача или когда ему нужно решение от вас для продолжения. Вы также можете запросить push в своей подсказке, например `notify me when the tests finish`. Помимо переключателя включения/отключения ниже, нет конфигурации для каждого события.

154 

155<Note>

156 Мобильные push-уведомления требуют Claude Code версии 2.1.110 или позже.

157</Note>

158 

159Чтобы настроить мобильные push-уведомления:

160 

161<Steps>

162 <Step title="Установите мобильное приложение Claude">

163 Загрузите приложение Claude для [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) или [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude).

164 </Step>

165 

166 <Step title="Войдите с помощью своей учётной записи Claude Code">

167 Используйте ту же учётную запись и организацию, которые вы используете для Claude Code в терминале.

168 </Step>

169 

170 <Step title="Разрешите уведомления">

171 Примите запрос разрешения на уведомления от операционной системы.

172 </Step>

173 

174 <Step title="Включите push в Claude Code">

175 В вашем терминале запустите `/config` и включите **Push when Claude decides**.

176 </Step>

177</Steps>

178 

179Если уведомления не приходят:

180 

181* Если `/config` показывает **No mobile registered**, откройте приложение Claude на своем телефоне, чтобы оно могло обновить свой токен push. Предупреждение исчезает при следующем подключении Remote Control.

182* На iOS режимы Focus и сводки уведомлений могут подавлять или задерживать push-уведомления. Проверьте Settings → Notifications → Claude.

183* На Android агрессивная оптимизация батареи может задержать доставку. Исключите приложение Claude из оптимизации батареи в системных параметрах.

184 

185## Ограничения

186 

187* **Один удалённый сеанс на интерактивный процесс**: вне режима сервера каждый экземпляр Claude Code поддерживает один удалённый сеанс одновременно. Используйте [режим сервера](#start-a-remote-control-session) для запуска нескольких одновременных сеансов из одного процесса.

188* **Локальный процесс должен продолжать работать**: Remote Control работает как локальный процесс. Если вы закроете терминал, выйдете из VS Code или иным образом остановите процесс `claude`, сеанс завершится.

189* **Продолжительный сбой сети**: если ваш компьютер включен, но не может достичь сеть более чем примерно на 10 минут, сеанс истекает и процесс завершается. Запустите `claude remote-control` снова, чтобы начать новый сеанс.

190* **Ultraplan отключает Remote Control**: запуск сеанса [ultraplan](/ru/ultraplan) отключает любой активный сеанс Remote Control, потому что обе функции занимают интерфейс claude.ai/code и одновременно может быть подключена только одна.

191* **Некоторые команды работают только локально**: команды, которые открывают интерактивный выбор в терминале, такие как `/mcp`, `/plugin` или `/resume`, работают только из локального CLI. Команды, которые выводят текстовый результат, включая `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/extra-usage`, `/recap` и `/reload-plugins`, работают с мобильных устройств и веб-браузеров.

192 

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

194 

195### "Remote Control requires a claude.ai subscription"

196 

197Вы не аутентифицированы с помощью учётной записи claude.ai. Запустите `claude auth login` и выберите опцию claude.ai. Если в вашей среде установлена переменная `ANTHROPIC_API_KEY`, отключите её сначала.

198 

199### "Remote Control requires a full-scope login token"

200 

201Вы аутентифицированы с помощью долгоживущего токена из `claude setup-token` или переменной окружения `CLAUDE_CODE_OAUTH_TOKEN`. Эти токены ограничены только выводом и не могут устанавливать сеансы Remote Control. Запустите `claude auth login` для аутентификации с помощью полнофункционального токена сеанса вместо этого.

202 

203### "Unable to determine your organization for Remote Control eligibility"

204 

205Ваша кэшированная информация об учётной записи устарела или неполна. Запустите `claude auth login` для обновления.

206 

207### "Remote Control is not yet enabled for your account"

208 

209Проверка приемлемости может не пройти при наличии определённых переменных окружения:

210 

211* `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` или `DISABLE_TELEMETRY`: отключите их и попробуйте снова.

212* `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX` или `CLAUDE_CODE_USE_FOUNDRY`: Remote Control требует аутентификации claude.ai и не работает с поставщиками третьих сторон.

213 

214Если ничего из этого не установлено, запустите `/logout`, а затем `/login` для обновления.

215 

216### "Remote Control is disabled by your organization's policy"

217 

218Эта ошибка имеет три различные причины. Сначала запустите `/status`, чтобы увидеть, какой метод входа и подписку вы используете.

219 

220* **Вы аутентифицированы с помощью API ключа или учётной записи Console**: Remote Control требует OAuth claude.ai. Запустите `/login` и выберите опцию claude.ai. Если в вашей среде установлена переменная `ANTHROPIC_API_KEY`, отключите её.

221* **Ваш администратор Team или Enterprise не включил это**: Remote Control отключен по умолчанию на этих планах. Администратор может включить его на [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code), включив переключатель **Remote Control**. Это параметр организации на стороне сервера, а не ключ [управляемых параметров](/ru/permissions#managed-only-settings).

222* **Переключатель администратора неактивен**: ваша организация имеет конфигурацию хранения данных или соответствия, которая несовместима с Remote Control. Это не может быть изменено из панели администратора. Свяжитесь с поддержкой Anthropic, чтобы обсудить варианты.

223 

224### "Remote credentials fetch failed"

225 

226Claude Code не смог получить краткосрочные учётные данные из API Anthropic для установления соединения. Запустите снова с `--verbose`, чтобы увидеть полную ошибку:

227 

228```bash theme={null}

229claude remote-control --verbose

230```

231 

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

233 

234* Не вошли в систему: запустите `claude` и используйте `/login` для аутентификации с вашей учётной записью claude.ai. Аутентификация с помощью API ключа не поддерживается для Remote Control.

235* Проблема с сетью или прокси: брандмауэр или прокси может блокировать исходящий HTTPS запрос. Remote Control требует доступа к API Anthropic на порту 443.

236* Ошибка создания сеанса: если вы также видите `Session creation failed — see debug log`, ошибка произошла ранее при настройке. Проверьте, что ваша подписка активна.

237 

238## Выберите правильный подход

239 

240Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.

241 

242| | Trigger | Claude runs on | Setup | Best for |

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

244| [Dispatch](/en/desktop#sessions-from-dispatch) | Message a task from the Claude mobile app | Your machine (Desktop) | [Pair the mobile app with Desktop](https://support.claude.com/en/articles/13947068) | Delegating work while you're away, minimal setup |

245| [Remote Control](/en/remote-control) | Drive a running session from [claude.ai/code](https://claude.ai/code) or the Claude mobile app | Your machine (CLI or VS Code) | Run `claude remote-control` | Steering in-progress work from another device |

246| [Channels](/en/channels) | Push events from a chat app like Telegram or Discord, or your own server | Your machine (CLI) | [Install a channel plugin](/en/channels#quickstart) or [build your own](/en/channels-reference) | Reacting to external events like CI failures or chat messages |

247| [Slack](/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |

248| [Scheduled tasks](/en/scheduled-tasks) | Set a schedule | [CLI](/en/scheduled-tasks), [Desktop](/en/desktop-scheduled-tasks), or [cloud](/en/routines) | Pick a frequency | Recurring automation like daily reviews |

249 

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

251 

252* [Claude Code в веб-версии](/ru/claude-code-on-the-web): запускайте сеансы в управляемых Anthropic облачных средах вместо вашего компьютера

253* [Ultraplan](/ru/ultraplan): запустите сеанс облачного планирования из вашего терминала и просмотрите план в вашем браузере

254* [Channels](/ru/channels): перенаправьте Telegram, Discord или iMessage в сеанс, чтобы Claude реагировал на сообщения, пока вас нет

255* [Dispatch](/ru/desktop#sessions-from-dispatch): отправьте задачу со своего телефона, и она может создать сеанс Desktop для её обработки

256* [Аутентификация](/ru/authentication): настройте `/login` и управляйте учётными данными для claude.ai

257* [Справочник CLI](/ru/cli-reference): полный список флагов и команд, включая `claude remote-control`

258* [Безопасность](/ru/security): как сеансы Remote Control вписываются в модель безопасности Claude Code

259* [Использование данных](/ru/data-usage): какие данные проходят через API Anthropic во время локальных и удалённых сеансов

routines.md +317 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Автоматизация работы с помощью рутин

6 

7> Переведите Claude Code на автопилот. Определите рутины, которые запускаются по расписанию, срабатывают при вызовах API или реагируют на события GitHub из облачной инфраструктуры, управляемой Anthropic.

8 

9<Note>

10 Рутины находятся в исследовательском предпросмотре. Поведение, ограничения и поверхность API могут измениться.

11</Note>

12 

13Рутина — это сохраненная конфигурация Claude Code: подсказка, один или несколько репозиториев и набор [коннекторов](/ru/mcp), упакованные один раз и запускаемые автоматически. Рутины выполняются на облачной инфраструктуре, управляемой Anthropic, поэтому они продолжают работать, когда ваш ноутбук закрыт.

14 

15Каждая рутина может иметь один или несколько присоединенных триггеров:

16 

17* **Scheduled**: запуск по повторяющемуся расписанию, например ежечасно, ежедневно или еженедельно

18* **API**: срабатывание по требованию путем отправки HTTP POST на выделенную конечную точку рутины с токеном-носителем

19* **GitHub**: автоматический запуск в ответ на события репозитория, такие как pull request или релизы

20 

21Одна рутина может объединять триггеры. Например, рутина проверки PR может запускаться ежедневно, срабатывать из скрипта развертывания и также реагировать на каждый новый PR.

22 

23Рутины доступны в планах Pro, Max, Team и Enterprise с включенным [Claude Code в веб-версии](/ru/claude-code-on-the-web). Создавайте и управляйте ими на [claude.ai/code/routines](https://claude.ai/code/routines) или из CLI с помощью `/schedule`.

24 

25На этой странице рассматривается создание рутины, настройка каждого типа триггера, управление запусками и применение ограничений использования.

26 

27## Примеры использования

28 

29Каждый пример сочетает тип триггера с типом работы, для которой подходят рутины: без присмотра, повторяемая и связанная с четким результатом.

30 

31**Обслуживание очереди задач.** Триггер расписания запускается каждый вечер в рабочие дни для вашего трекера проблем через коннектор. Рутина читает проблемы, открытые с момента последнего запуска, применяет метки, назначает владельцев на основе области кода, на которую ссылаются, и публикует сводку в Slack, чтобы команда начала день с упорядоченной очередью.

32 

33**Сортировка оповещений.** Ваш инструмент мониторинга вызывает конечную точку API рутины при превышении порога ошибок, передавая тело оповещения как `text`. Рутина извлекает трассировку стека, коррелирует ее с недавними коммитами в репозитории и открывает черновой pull request с предложенным исправлением и ссылкой обратно на оповещение. Дежурный инженер проверяет PR вместо того, чтобы начинать с пустого терминала.

34 

35**Пользовательская проверка кода.** Триггер GitHub запускается на `pull_request.opened`. Рутина применяет собственный контрольный список проверки вашей команды, оставляет встроенные комментарии по проблемам безопасности, производительности и стиля, а также добавляет сводный комментарий, чтобы человеческие рецензенты могли сосредоточиться на дизайне вместо механических проверок.

36 

37**Проверка развертывания.** Ваш конвейер CD вызывает конечную точку API рутины после каждого развертывания в production. Рутина запускает дымовые тесты для новой сборки, сканирует журналы ошибок на предмет регрессий и публикует решение (go или no-go) в канал релизов до закрытия окна развертывания.

38 

39**Дрейф документации.** Триггер расписания запускается еженедельно. Рутина сканирует объединенные PR с момента последнего запуска, отмечает документацию, которая ссылается на измененные API, и открывает PR обновления для репозитория документации, чтобы редактор мог его проверить.

40 

41**Портирование библиотеки.** Триггер GitHub запускается на `pull_request.closed`, отфильтрованный по объединенным PR в одном репозитории SDK. Рутина переносит изменение в параллельный SDK на другом языке и открывает соответствующий PR, сохраняя две библиотеки в синхронизации без необходимости человека переимплементировать каждое изменение.

42 

43Разделы ниже описывают создание рутины и настройку каждого из этих типов триггеров.

44 

45## Создание рутины

46 

47Создайте рутину из веб-версии, приложения Desktop или CLI. Все три интерфейса записывают в один облачный аккаунт, поэтому рутина, которую вы создаете в CLI, сразу же появляется на claude.ai/code/routines. В приложении Desktop нажмите **New task** и выберите **New remote task**; выбор **New local task** вместо этого создает [локальную запланированную задачу Desktop](/ru/desktop-scheduled-tasks), которая запускается на вашей машине и не является рутиной.

48 

49Форма создания настраивает подсказку рутины, репозитории, окружение, коннекторы и триггеры.

50 

51Рутины работают автономно как полные облачные сеансы Claude Code: нет выбора режима разрешений и нет запросов на одобрение во время запуска. Сеанс может запускать команды shell, использовать [skills](/ru/skills), зафиксированные в клонированном репозитории, и вызывать любые коннекторы, которые вы включите. То, что может достичь рутина, определяется выбранными вами репозиториями и их параметром push ветви, [окружением](/ru/claude-code-on-the-web#the-cloud-environment) сетевого доступа и переменных, а также включенными коннекторами. Ограничьте каждый из них тем, что рутине действительно нужно.

52 

53Рутины принадлежат вашему индивидуальному аккаунту claude.ai. Они не совместно используются с товарищами по команде и учитываются в дневном лимите запусков вашего аккаунта. Все, что рутина делает через вашу подключенную идентификацию GitHub или коннекторы, отображается как вы: коммиты и pull request несут вашего пользователя GitHub, а сообщения Slack, задачи Linear или другие действия коннектора используют ваши связанные аккаунты для этих сервисов.

54 

55### Создание из веб-версии

56 

57<Steps>

58 <Step title="Откройте форму создания">

59 Посетите [claude.ai/code/routines](https://claude.ai/code/routines) и нажмите **New routine**.

60 </Step>

61 

62 <Step title="Назовите рутину и напишите подсказку">

63 Дайте рутине описательное имя и напишите подсказку, которую Claude запускает каждый раз. Подсказка — это самая важная часть: рутина работает автономно, поэтому подсказка должна быть самодостаточной и явно указывать, что делать и как выглядит успех.

64 

65 Ввод подсказки включает селектор модели. Claude использует выбранную модель при каждом запуске.

66 </Step>

67 

68 <Step title="Выберите репозитории">

69 Добавьте один или несколько репозиториев GitHub для работы Claude. Каждый репозиторий клонируется в начале запуска, начиная с ветви по умолчанию. Claude создает ветви с префиксом `claude/` для своих изменений. Чтобы разрешить push в любую ветвь, включите **Allow unrestricted branch pushes** для этого репозитория.

70 </Step>

71 

72 <Step title="Выберите окружение">

73 Выберите [облачное окружение](/ru/claude-code-on-the-web#the-cloud-environment) для рутины. Окружения контролируют, к чему имеет доступ облачный сеанс:

74 

75 * **Network access**: установите уровень доступа в Интернет, доступный во время каждого запуска

76 * **Environment variables**: предоставьте ключи API, токены или другие секреты, которые может использовать Claude

77 * **Setup script**: установите зависимости и инструменты, которые нужны рутине. Результат [кэшируется](/ru/claude-code-on-the-web#environment-caching), поэтому скрипт не переустанавливается при каждом сеансе

78 

79 Предоставляется окружение **Default**. Чтобы использовать пользовательское окружение, [создайте его](/ru/claude-code-on-the-web#the-cloud-environment) перед созданием рутины.

80 </Step>

81 

82 <Step title="Выберите триггер">

83 В разделе **Select a trigger** выберите, как запускается рутина. Вы можете выбрать один тип триггера или объединить несколько.

84 

85 <Tabs>

86 <Tab title="Schedule">

87 Выберите предустановленную частоту: ежечасно, ежедневно, по рабочим дням или еженедельно. Смотрите [Add a schedule trigger](#add-a-schedule-trigger) для обработки часовых поясов, разброса и пользовательских интервалов cron.

88 </Tab>

89 

90 <Tab title="GitHub event">

91 Выберите репозиторий, событие для реагирования и дополнительные фильтры. Смотрите [Add a GitHub trigger](#add-a-github-trigger) для полного списка поддерживаемых событий и полей фильтра.

92 </Tab>

93 

94 <Tab title="API">

95 Выберите **API** здесь, затем сохраните рутину. URL и токен генерируются после сохранения рутины, так как они зависят от ID рутины. Смотрите [Add an API trigger](#add-an-api-trigger) для копирования URL и генерации токена.

96 </Tab>

97 </Tabs>

98 </Step>

99 

100 <Step title="Проверьте коннекторы">

101 Все ваши подключенные [MCP коннекторы](/ru/mcp) включены по умолчанию. Удалите все, которые рутине не нужны. Коннекторы дают Claude доступ к внешним сервисам, таким как Slack, Linear или Google Drive, во время каждого запуска.

102 </Step>

103 

104 <Step title="Создайте рутину">

105 Нажмите **Create**. Рутина появляется в списке и запускается в следующий раз, когда один из ее триггеров совпадает. Чтобы начать запуск немедленно, нажмите **Run now** на странице деталей рутины.

106 

107 Каждый запуск создает новый сеанс рядом с вашими другими сеансами, где вы можете увидеть, что сделал Claude, проверить изменения и создать pull request.

108 </Step>

109</Steps>

110 

111### Создание из CLI

112 

113Запустите `/schedule` в любом сеансе, чтобы создать запланированную рутину в диалоговом режиме. Вы также можете передать описание напрямую, как в `/schedule daily PR review at 9am`. Claude проходит через ту же информацию, которую собирает веб-форма, затем сохраняет рутину в ваш аккаунт.

114 

115`/schedule` в CLI создает только запланированные рутины. Чтобы добавить триггер API или GitHub, отредактируйте рутину в веб-версии на [claude.ai/code/routines](https://claude.ai/code/routines).

116 

117CLI также поддерживает управление существующими рутинами. Запустите `/schedule list`, чтобы увидеть все рутины, `/schedule update`, чтобы изменить одну, или `/schedule run`, чтобы запустить ее немедленно.

118 

119### Создание из приложения Desktop

120 

121Откройте страницу **Schedule** в приложении Desktop, нажмите **New task** и выберите **New remote task**. Приложение Desktop показывает как локальные запланированные задачи, так и рутины в одной сетке. Смотрите [Desktop scheduled tasks](/ru/desktop-scheduled-tasks) для деталей локального варианта.

122 

123## Настройка триггеров

124 

125Рутина запускается, когда один из ее триггеров совпадает. Вы можете присоединить любую комбинацию триггеров расписания, API и GitHub к одной рутине и добавлять или удалять их в любое время из раздела **Select a trigger** формы редактирования рутины.

126 

127### Добавление триггера расписания

128 

129Триггер расписания запускает рутину по повторяющемуся расписанию. Выберите предустановленную частоту в разделе **Select a trigger**: ежечасно, ежедневно, по рабочим дням или еженедельно. Времена вводятся в вашем локальном часовом поясе и преобразуются автоматически, поэтому рутина запускается в это время независимо от того, где находится облачная инфраструктура.

130 

131Запуски могут начаться на несколько минут позже запланированного времени из-за разброса. Смещение согласовано для каждой рутины.

132 

133Для пользовательского интервала, такого как каждые два часа или первое число каждого месяца, выберите ближайшую предустановку в форме, затем запустите `/schedule update` в CLI, чтобы установить конкретное выражение cron. Минимальный интервал — один час; выражения, которые запускаются чаще, отклоняются.

134 

135### Добавление триггера API

136 

137Триггер API дает рутине выделенную конечную точку HTTP. POST на конечную точку с токеном-носителем рутины запускает новый сеанс и возвращает URL сеанса. Используйте это для подключения Claude Code к системам оповещений, конвейерам развертывания, внутренним инструментам или везде, где вы можете сделать аутентифицированный HTTP запрос.

138 

139Триггеры API добавляются к существующей рутине из веб-версии. CLI в настоящее время не может создавать или отзывать токены.

140 

141<Steps>

142 <Step title="Откройте рутину для редактирования">

143 Перейдите на [claude.ai/code/routines](https://claude.ai/code/routines), нажмите рутину, которую вы хотите запустить через API, затем нажмите значок карандаша, чтобы открыть **Edit routine**.

144 </Step>

145 

146 <Step title="Добавьте триггер API">

147 Прокрутите до раздела **Select a trigger** ниже подсказки, нажмите **Add another trigger** и выберите **API**.

148 </Step>

149 

150 <Step title="Скопируйте URL и сгенерируйте токен">

151 Модальное окно показывает URL для этой рутины вместе с примером команды curl. Скопируйте URL, затем нажмите **Generate token** и сразу же скопируйте токен. Токен показывается один раз и не может быть получен позже, поэтому сохраните его в безопасном месте, таком как хранилище секретов вашего инструмента оповещений.

152 </Step>

153 

154 <Step title="Вызовите конечную точку">

155 Отправьте токен в заголовке `Authorization: Bearer` при POST на URL. Раздел [Trigger a routine](#trigger-a-routine) ниже показывает полный пример.

156 </Step>

157</Steps>

158 

159Каждая рутина имеет свой токен, ограниченный только запуском этой рутины. Чтобы повернуть или отозвать его, вернитесь в то же модальное окно и нажмите **Regenerate** или **Revoke**.

160 

161#### Запуск рутины

162 

163Отправьте POST запрос на конечную точку `/fire` с токеном-носителем в заголовке `Authorization`. Тело запроса принимает дополнительное поле `text` для контекста, специфичного для запуска, такого как тело оповещения или неудачный журнал, переданное рутине вместе с ее сохраненной подсказкой. Значение — это свободный текст и не анализируется: если вы отправляете JSON или другую структурированную полезную нагрузку, рутина получает ее как буквальную строку.

164 

165Пример ниже запускает рутину из shell:

166 

167```bash theme={null}

168curl -X POST https://api.anthropic.com/v1/claude_code/routines/trig_01ABCDEFGHJKLMNOPQRSTUVW/fire \

169 -H "Authorization: Bearer sk-ant-oat01-xxxxx" \

170 -H "anthropic-beta: experimental-cc-routine-2026-04-01" \

171 -H "anthropic-version: 2023-06-01" \

172 -H "Content-Type: application/json" \

173 -d '{"text": "Sentry alert SEN-4521 fired in prod. Stack trace attached."}'

174```

175 

176Успешный запрос возвращает тело JSON с новым ID сеанса и URL:

177 

178```json theme={null}

179{

180 "type": "routine_fire",

181 "claude_code_session_id": "session_01HJKLMNOPQRSTUVWXYZ",

182 "claude_code_session_url": "https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ"

183}

184```

185 

186Откройте URL сеанса в браузере, чтобы наблюдать запуск в реальном времени, проверить изменения или продолжить разговор вручную.

187 

188<Warning>

189 Конечная точка `/fire` поставляется под заголовком бета-версии `experimental-cc-routine-2026-04-01`. Формы запроса и ответа, ограничения скорости и семантика токенов могут измениться, пока функция находится в исследовательском предпросмотре. Критические изменения поставляются за новыми версиями заголовка бета-версии с датой, и две самые последние предыдущие версии заголовка продолжают работать, чтобы у вызывающих было время для миграции.

190</Warning>

191 

192#### Справочник API

193 

194Для полного справочника API, включая все ответы об ошибках, правила валидации и ограничения полей, смотрите [Trigger a routine via API](https://platform.claude.com/docs/ru/api/claude-code/routines-fire) в документации Claude Platform.

195 

196Конечная точка `/fire` доступна только пользователям claude.ai и не является частью поверхности Claude Platform API.

197 

198### Добавление триггера GitHub

199 

200Триггер GitHub запускает новый сеанс автоматически, когда совпадающее событие происходит в подключенном репозитории. Каждое совпадающее событие запускает свой собственный сеанс.

201 

202<Note>

203 Во время исследовательского предпросмотра события вебхука GitHub подлежат ограничениям в час для каждой рутины и для каждого аккаунта. События сверх лимита отбрасываются до сброса окна. Смотрите ваши текущие ограничения на [claude.ai/code/routines](https://claude.ai/code/routines).

204</Note>

205 

206Триггеры GitHub настраиваются только из веб-интерфейса.

207 

208<Steps>

209 <Step title="Откройте рутину для редактирования">

210 Перейдите на [claude.ai/code/routines](https://claude.ai/code/routines), нажмите рутину, затем нажмите значок карандаша, чтобы открыть **Edit routine**.

211 </Step>

212 

213 <Step title="Добавьте триггер события GitHub">

214 Прокрутите до раздела **Select a trigger**, нажмите **Add another trigger** и выберите **GitHub event**.

215 </Step>

216 

217 <Step title="Установите приложение Claude GitHub">

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

219 

220 <Note>

221 Запуск `/web-setup` в CLI предоставляет доступ к репозиторию для клонирования, но не устанавливает приложение Claude GitHub и не включает доставку вебхука. Триггеры GitHub требуют установки приложения Claude GitHub, которое настройка триггера предложит вам сделать.

222 </Note>

223 </Step>

224 

225 <Step title="Настройте триггер">

226 Выберите репозиторий, выберите событие из списка [supported events](#supported-events) и дополнительно добавьте фильтры. Сохраните триггер.

227 </Step>

228</Steps>

229 

230#### Поддерживаемые события

231 

232Триггеры GitHub могут подписаться на одну из следующих категорий событий. В каждой категории вы можете выбрать конкретное действие, такое как `pull_request.opened`, или реагировать на все действия в категории.

233 

234| Событие | Срабатывает когда |

235| :----------- | :------------------------------------------------------------------------------ |

236| Pull request | PR открыт, закрыт, назначен, помечен, синхронизирован или иным образом обновлен |

237| Release | Релиз создан, опубликован, отредактирован или удален |

238 

239#### Фильтрация pull request

240 

241Используйте фильтры, чтобы сузить, какие pull request запускают новый сеанс. Все условия фильтра должны совпадать, чтобы рутина сработала. Доступные поля фильтра:

242 

243| Фильтр | Совпадает |

244| :---------- | :----------------------------------- |

245| Author | Имя пользователя GitHub автора PR |

246| Title | Текст заголовка PR |

247| Body | Текст описания PR |

248| Base branch | Ветвь, на которую нацелен PR |

249| Head branch | Ветвь, из которой исходит PR |

250| Labels | Метки, применяемые к PR |

251| Is draft | Находится ли PR в черновом состоянии |

252| Is merged | Был ли PR объединен |

253 

254Каждый фильтр сочетает поле с оператором: equals, contains, starts with, is one of, is not one of или matches regex.

255 

256Оператор `matches regex` проверяет все значение поля, а не подстроку в нем. Чтобы совпадать с любым заголовком, содержащим `hotfix`, напишите `.*hotfix.*`. Без окружающих `.*`, фильтр совпадает только с заголовком, который точно `hotfix` без ничего до или после. Для буквального совпадения подстроки без синтаксиса regex используйте оператор `contains` вместо этого.

257 

258Несколько примеров комбинаций фильтров:

259 

260* **Auth module review**: base branch `main`, head branch contains `auth-provider`. Отправляет любой PR, который касается аутентификации, сосредоточенному рецензенту.

261* **Ready-for-review only**: is draft is `false`. Пропускает черновики, поэтому рутина запускается только, когда PR готов к проверке.

262* **Label-gated backport**: labels include `needs-backport`. Запускает рутину портирования в другую ветвь только, когда мейнтейнер помечает PR.

263 

264#### Как сеансы соответствуют событиям

265 

266Каждое совпадающее событие GitHub запускает новый сеанс. Повторное использование сеанса между событиями недоступно для рутин, запускаемых GitHub, поэтому два обновления PR создают два независимых сеанса.

267 

268## Управление рутинами

269 

270Нажмите рутину в списке, чтобы открыть ее страницу деталей. Страница деталей показывает репозитории рутины, коннекторы, подсказку, расписание, токены API, триггеры GitHub и список прошлых запусков.

271 

272### Просмотр и взаимодействие с запусками

273 

274Нажмите любой запуск, чтобы открыть его как полный сеанс. Оттуда вы можете увидеть, что сделал Claude, проверить изменения, создать pull request или продолжить разговор. Каждый сеанс запуска работает как любой другой сеанс: используйте меню раскрывающегося списка рядом с заголовком сеанса, чтобы переименовать, архивировать или удалить его.

275 

276### Редактирование и управление рутинами

277 

278Со страницы деталей рутины вы можете:

279 

280* Нажать **Run now**, чтобы начать запуск немедленно без ожидания следующего запланированного времени.

281* Использовать переключатель в разделе **Repeats**, чтобы приостановить или возобновить расписание. Приостановленные рутины сохраняют свою конфигурацию, но не запускаются, пока вы их не переактивируете.

282* Нажать значок карандаша, чтобы открыть **Edit routine** и изменить имя, подсказку, репозитории, окружение, коннекторы или любые триггеры рутины. Раздел **Select a trigger** — это место, где вы добавляете или удаляете расписания, токены API и триггеры событий GitHub.

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

284 

285### Репозитории и разрешения ветвей

286 

287Рутинам нужен доступ GitHub для клонирования репозиториев. Когда вы создаете рутину из CLI с `/schedule`, Claude проверяет, подключен ли ваш аккаунт к GitHub, и предлагает вам запустить `/web-setup`, если это не так. Смотрите [GitHub authentication options](/ru/claude-code-on-the-web#github-authentication-options) для двух способов предоставления доступа.

288 

289Каждый репозиторий, который вы добавляете, клонируется при каждом запуске. Claude начинает с ветви по умолчанию репозитория, если ваша подсказка не указывает иное.

290 

291По умолчанию Claude может только push в ветви с префиксом `claude/`. Это предотвращает случайное изменение рутинами защищенных или долгоживущих ветвей. Чтобы удалить это ограничение для конкретного репозитория, включите **Allow unrestricted branch pushes** для этого репозитория при создании или редактировании рутины.

292 

293### Коннекторы

294 

295Рутины могут использовать ваши подключенные MCP коннекторы для чтения и записи во внешние сервисы во время каждого запуска. Например, рутина, которая сортирует запросы поддержки, может читать из канала Slack и создавать проблемы в Linear.

296 

297Когда вы создаете рутину, все ваши текущие подключенные коннекторы включены по умолчанию. Удалите все, которые не нужны, чтобы ограничить, к каким инструментам Claude имеет доступ во время запуска. Вы также можете добавлять коннекторы непосредственно из формы рутины.

298 

299Чтобы управлять или добавлять коннекторы вне формы рутины, посетите **Settings > Connectors** на claude.ai или используйте `/schedule update` в CLI.

300 

301### Окружения

302 

303Каждая рутина запускается в [облачном окружении](/ru/claude-code-on-the-web#the-cloud-environment), которое контролирует сетевой доступ, переменные окружения и скрипты настройки. Настройте окружения перед созданием рутины, чтобы дать Claude доступ к API, установить зависимости или ограничить область сети. Смотрите [cloud environment](/ru/claude-code-on-the-web#the-cloud-environment) для полного руководства настройки.

304 

305## Использование и ограничения

306 

307Рутины снижают использование подписки так же, как интерактивные сеансы. В дополнение к стандартным ограничениям подписки, рутины имеют дневной лимит на количество запусков, которые могут начаться на аккаунт. Смотрите ваше текущее потребление и оставшиеся дневные запуски рутин на [claude.ai/code/routines](https://claude.ai/code/routines) или [claude.ai/settings/usage](https://claude.ai/settings/usage).

308 

309Когда рутина достигает дневного лимита или лимита использования вашей подписки, организации с включенным дополнительным использованием могут продолжать запускать рутины на измеренный перерасход. Без дополнительного использования дополнительные запуски отклоняются до сброса окна. Включите дополнительное использование из **Settings > Billing** на claude.ai.

310 

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

312 

313* [`/loop` and in-session scheduling](/ru/scheduled-tasks): запланируйте локальные задачи в открытом сеансе CLI

314* [Desktop scheduled tasks](/ru/desktop-scheduled-tasks): локальные запланированные задачи, которые запускаются на вашей машине с доступом к локальным файлам

315* [Cloud environment](/ru/claude-code-on-the-web#the-cloud-environment): настройте среду выполнения для облачных сеансов

316* [MCP connectors](/ru/mcp): подключите внешние сервисы, такие как Slack, Linear и Google Drive

317* [GitHub Actions](/ru/github-actions): запустите Claude в вашем конвейере CI при событиях репозитория

sandboxing.md +329 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Sandboxing

6 

7> Узнайте, как изолированный инструмент bash Claude Code обеспечивает изоляцию файловой системы и сети для более безопасного и автономного выполнения агента.

8 

9## Обзор

10 

11Claude Code имеет встроенный sandbox для обеспечения более безопасной среды выполнения агента при одновременном снижении необходимости в постоянных запросах разрешения. Вместо запроса разрешения для каждой команды bash, sandboxing создает определенные границы заранее, где Claude Code может работать более свободно с меньшим риском.

12 

13Изолированный инструмент bash использует примитивы уровня ОС для обеспечения как изоляции файловой системы, так и сетевой изоляции.

14 

15## Почему sandboxing важен

16 

17Традиционная безопасность на основе разрешений требует постоянного одобрения пользователя для команд bash. Хотя это обеспечивает контроль, это может привести к:

18 

19* **Усталости от одобрения**: Повторное нажатие кнопки "одобрить" может привести к тому, что пользователи будут меньше внимания уделять тому, что они одобряют

20* **Снижению производительности**: Постоянные прерывания замедляют рабочие процессы разработки

21* **Ограниченной автономии**: Claude Code не может работать эффективно при ожидании одобрений

22 

23Sandboxing решает эти проблемы путем:

24 

251. **Определения четких границ**: Укажите точно, какие каталоги и сетевые хосты может использовать Claude Code

262. **Снижения запросов разрешения**: Безопасные команды в sandbox не требуют одобрения

273. **Поддержания безопасности**: Попытки доступа к ресурсам вне sandbox вызывают немедленные уведомления

284. **Обеспечения автономии**: Claude Code может работать более независимо в определенных пределах

29 

30<Warning>

31 Эффективный sandboxing требует **как** изоляции файловой системы, **так и** сетевой изоляции. Без сетевой изоляции скомпрометированный агент может экспортировать конфиденциальные файлы, такие как ключи SSH. Без изоляции файловой системы скомпрометированный агент может установить бэкдор в системные ресурсы для получения сетевого доступа. При настройке sandboxing важно убедиться, что ваши настроенные параметры не создают обходов в этих системах.

32</Warning>

33 

34## Как это работает

35 

36### Изоляция файловой системы

37 

38Изолированный инструмент bash ограничивает доступ к файловой системе определенными каталогами:

39 

40* **Поведение записи по умолчанию**: Доступ на чтение и запись к текущему рабочему каталогу и его подкаталогам

41* **Поведение чтения по умолчанию**: Доступ на чтение ко всему компьютеру, кроме определенных запрещенных каталогов

42* **Заблокированный доступ**: Невозможно изменять файлы вне текущего рабочего каталога без явного разрешения

43* **Настраиваемо**: Определите пользовательские разрешенные и запрещенные пути через параметры

44 

45Вы можете предоставить доступ на запись к дополнительным путям, используя `sandbox.filesystem.allowWrite` в ваших параметрах. Эти ограничения применяются на уровне ОС (Seatbelt на macOS, bubblewrap на Linux), поэтому они применяются ко всем командам подпроцесса, включая такие инструменты, как `kubectl`, `terraform` и `npm`, а не только к инструментам файлов Claude.

46 

47### Сетевая изоляция

48 

49Доступ в сеть контролируется через прокси-сервер, работающий вне sandbox:

50 

51* **Ограничения домена**: Доступны только одобренные домены

52* **Подтверждение пользователем**: Новые запросы домена вызывают запросы разрешения (если не включен [`allowManagedDomainsOnly`](/ru/settings#sandbox-settings), который автоматически блокирует неразрешенные домены)

53* **Поддержка пользовательского прокси**: Продвинутые пользователи могут реализовать пользовательские правила для исходящего трафика

54* **Полное покрытие**: Ограничения применяются ко всем скриптам, программам и подпроцессам, порожденным командами

55 

56### Применение на уровне ОС

57 

58Изолированный инструмент bash использует примитивы безопасности операционной системы:

59 

60* **macOS**: Использует Seatbelt для применения sandbox

61* **Linux**: Использует [bubblewrap](https://github.com/containers/bubblewrap) для изоляции

62* **WSL2**: Использует bubblewrap, как и Linux

63 

64WSL1 не поддерживается, потому что bubblewrap требует функций ядра, доступных только в WSL2.

65 

66Эти ограничения на уровне ОС гарантируют, что все дочерние процессы, порожденные командами Claude Code, наследуют те же границы безопасности.

67 

68## Начало работы

69 

70### Предварительные требования

71 

72На **macOS** sandboxing работает из коробки, используя встроенную платформу Seatbelt.

73 

74На **Linux и WSL2** сначала установите необходимые пакеты:

75 

76<Tabs>

77 <Tab title="Ubuntu/Debian">

78 ```bash theme={null}

79 sudo apt-get install bubblewrap socat

80 ```

81 </Tab>

82 

83 <Tab title="Fedora">

84 ```bash theme={null}

85 sudo dnf install bubblewrap socat

86 ```

87 </Tab>

88</Tabs>

89 

90WSL1 не поддерживает sandboxing, так как ему не хватает необходимых примитивов пространства имен Linux. Если вы видите `Sandboxing requires WSL2`, обновите вашу дистрибьюцию на WSL2 или запустите Claude Code без sandboxing.

91 

92На WSL2 изолированные команды не могут запускать двоичные файлы Windows, такие как `cmd.exe`, `powershell.exe` или что-либо под `/mnt/c/`. WSL передает их хосту Windows через Unix-сокет, который sandbox блокирует. Если команде нужно вызвать двоичный файл Windows, добавьте его в [`excludedCommands`](/ru/settings#sandbox-settings), чтобы он выполнялся вне sandbox.

93 

94### Включение sandboxing

95 

96Вы можете включить sandboxing, запустив команду `/sandbox`:

97 

98```text theme={null}

99/sandbox

100```

101 

102Это открывает меню, где вы можете выбрать между режимами sandbox. Если отсутствуют необходимые зависимости (такие как `bubblewrap` или `socat` на Linux), меню отображает инструкции по установке для вашей платформы.

103 

104По умолчанию, если sandbox не может запуститься (отсутствуют зависимости или неподдерживаемая платформа), Claude Code показывает предупреждение и выполняет команды без sandboxing. Чтобы сделать это жестким отказом вместо этого, установите [`sandbox.failIfUnavailable`](/ru/settings#sandbox-settings) в `true`. Это предназначено для управляемых развертываний, которые требуют sandboxing в качестве шлюза безопасности.

105 

106### Режимы sandbox

107 

108Claude Code предлагает два режима sandbox:

109 

110**Режим автоматического разрешения**: Команды Bash будут пытаться выполняться внутри sandbox и автоматически разрешаются без требования разрешения. Команды, которые не могут быть изолированы (такие как те, которые требуют сетевого доступа к неразрешенным хостам), возвращаются к обычному потоку разрешений. Явные правила отказа всегда соблюдаются, и команды `rm` или `rmdir`, которые нацелены на `/`, ваш домашний каталог или другие критические пути системы, по-прежнему вызывают запрос разрешения. Правила ask применяются только к командам, которые возвращаются к обычному потоку разрешений.

111 

112**Режим обычных разрешений**: Все команды bash проходят через стандартный поток разрешений, даже если они изолированы. Это обеспечивает больше контроля, но требует больше одобрений.

113 

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

115 

116<Info>

117 Режим автоматического разрешения работает независимо от вашего параметра режима разрешений. Даже если вы не находитесь в режиме "принять правки", изолированные команды bash будут выполняться автоматически при включении автоматического разрешения. Это означает, что команды bash, которые изменяют файлы в границах sandbox, будут выполняться без запроса, даже если инструменты редактирования файлов обычно требуют одобрения.

118</Info>

119 

120### Настройка sandboxing

121 

122Настройте поведение sandbox через ваш файл `settings.json`. Полную справку по конфигурации см. в разделе [Settings](/ru/settings#sandbox-settings).

123 

124#### Предоставление доступа на запись подпроцесса к определенным путям

125 

126По умолчанию изолированные команды могут писать только в текущий рабочий каталог. Если команды подпроцесса, такие как `kubectl`, `terraform` или `npm`, должны писать вне каталога проекта, используйте `sandbox.filesystem.allowWrite` для предоставления доступа к определенным путям:

127 

128```json theme={null}

129{

130 "sandbox": {

131 "enabled": true,

132 "filesystem": {

133 "allowWrite": ["~/.kube", "/tmp/build"]

134 }

135 }

136}

137```

138 

139Эти пути применяются на уровне ОС, поэтому все команды, работающие внутри sandbox, включая их дочерние процессы, соблюдают их. Это рекомендуемый подход, когда инструменту требуется доступ на запись к определенному местоположению, вместо полного исключения инструмента из sandbox с помощью `excludedCommands`.

140 

141Когда `allowWrite` (или `denyWrite`/`denyRead`/`allowRead`) определен в нескольких [областях параметров](/ru/settings#settings-precedence), массивы **объединяются**, что означает, что пути из каждой области объединяются, а не заменяются. Например, если управляемые параметры разрешают запись в `/opt/company-tools`, а пользователь добавляет `~/.kube` в своих личных параметрах, оба пути включены в окончательную конфигурацию sandbox. Это означает, что пользователи и проекты могут расширить список без дублирования или переопределения путей, установленных областями с более высоким приоритетом.

142 

143Префиксы пути контролируют способ разрешения путей:

144 

145| Префикс | Значение | Пример |

146| :-------------------- | :---------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------- |

147| `/` | Абсолютный путь от корня файловой системы | `/tmp/build` остается `/tmp/build` |

148| `~/` | Относительно домашнего каталога | `~/.kube` становится `$HOME/.kube` |

149| `./` или без префикса | Относительно корня проекта для параметров проекта или к `~/.claude` для параметров пользователя | `./output` в `.claude/settings.json` разрешается в `<project-root>/output` |

150 

151Старый префикс `//path` для абсолютных путей все еще работает. Если вы ранее использовали одиночный слэш `/path`, ожидая разрешения относительно проекта, переключитесь на `./path`. Этот синтаксис отличается от [правил разрешений Read и Edit](/ru/permissions#read-and-edit), которые используют `//path` для абсолютных и `/path` для относительных к проекту. Пути файловой системы sandbox используют стандартные соглашения: `/tmp/build` — это абсолютный путь.

152 

153Вы также можете запретить доступ на запись или чтение, используя `sandbox.filesystem.denyWrite` и `sandbox.filesystem.denyRead`. Они объединяются с любыми путями из правил разрешений `Edit(...)` и `Read(...)`. Чтобы повторно разрешить чтение определенных путей в запрещенной области, используйте `sandbox.filesystem.allowRead`, который имеет приоритет над `denyRead`. Когда `allowManagedReadPathsOnly` включен в управляемых параметрах, уважаются только управляемые записи `allowRead`; записи `allowRead` пользователя, проекта и локальные игнорируются. `denyRead` все еще объединяется из всех источников.

154 

155Например, чтобы заблокировать чтение из всего домашнего каталога, но при этом разрешить чтение из текущего проекта, добавьте это в `.claude/settings.json` вашего проекта:

156 

157```json theme={null}

158{

159 "sandbox": {

160 "enabled": true,

161 "filesystem": {

162 "denyRead": ["~/"],

163 "allowRead": ["."]

164 }

165 }

166}

167```

168 

169`.` в `allowRead` разрешается в корень проекта, потому что эта конфигурация находится в параметрах проекта. Если вы поместили ту же конфигурацию в `~/.claude/settings.json`, `.` разрешился бы в `~/.claude` вместо этого, и файлы проекта остались бы заблокированы правилом `denyRead`.

170 

171<Tip>

172 Не все команды совместимы с sandboxing из коробки. Некоторые примечания, которые могут помочь вам максимально использовать sandbox:

173 

174 * Многие инструменты CLI требуют доступа к определенным хостам. По мере использования этих инструментов они будут запрашивать разрешение на доступ к определенным хостам. Предоставление разрешения позволит им получить доступ к этим хостам сейчас и в будущем, позволяя им безопасно выполняться внутри sandbox.

175 * `watchman` несовместим с работой в sandbox. Если вы запускаете `jest`, рассмотрите возможность использования `jest --no-watchman`

176 * `docker` несовместим с работой в sandbox. Рассмотрите возможность указания `docker *` в `excludedCommands` для принудительного запуска вне sandbox.

177</Tip>

178 

179<Note>

180 Claude Code включает преднамеренный механизм выхода, который позволяет командам выполняться вне sandbox при необходимости. Когда команда не выполняется из-за ограничений sandbox (таких как проблемы с сетевым подключением или несовместимые инструменты), Claude предлагается проанализировать сбой и может повторить команду с параметром `dangerouslyDisableSandbox`. Команды, использующие этот параметр, проходят через обычный поток разрешений Claude Code, требующий разрешения пользователя на выполнение. Это позволяет Claude Code обрабатывать граничные случаи, когда определенные инструменты или сетевые операции не могут функционировать в пределах ограничений sandbox.

181 

182 Вы можете отключить этот механизм выхода, установив `"allowUnsandboxedCommands": false` в ваших [параметрах sandbox](/ru/settings#sandbox-settings). При отключении параметр `dangerouslyDisableSandbox` полностью игнорируется и все команды должны выполняться в sandbox или быть явно указаны в `excludedCommands`.

183</Note>

184 

185## Преимущества безопасности

186 

187### Защита от инъекции подсказок

188 

189Даже если злоумышленник успешно манипулирует поведением Claude Code через инъекцию подсказок, sandbox гарантирует, что ваша система остается в безопасности:

190 

191**Защита файловой системы:**

192 

193* Невозможно изменять критические файлы конфигурации, такие как `~/.bashrc`

194* Невозможно изменять файлы уровня системы в `/bin/`

195* Невозможно читать файлы, которые запрещены в ваших [параметрах разрешений Claude](/ru/permissions#manage-permissions)

196 

197**Защита сети:**

198 

199* Невозможно экспортировать данные на серверы, контролируемые злоумышленником

200* Невозможно загружать вредоносные скрипты с неавторизованных доменов

201* Невозможно делать неожиданные вызовы API к неодобренным сервисам

202* Невозможно контактировать с какими-либо доменами, которые не явно разрешены

203 

204**Мониторинг и контроль:**

205 

206* Все попытки доступа вне sandbox блокируются на уровне ОС

207* Вы получаете немедленные уведомления при тестировании границ

208* Вы можете выбрать отказ, разрешение один раз или постоянное обновление вашей конфигурации

209 

210### Сокращенная поверхность атаки

211 

212Sandboxing ограничивает потенциальный ущерб от:

213 

214* **Вредоносных зависимостей**: Пакеты NPM или другие зависимости с вредоносным кодом

215* **Скомпрометированных скриптов**: Скрипты сборки или инструменты с уязвимостями безопасности

216* **Социальной инженерии**: Атаки, которые обманывают пользователей, заставляя их запускать опасные команды

217* **Инъекции подсказок**: Атаки, которые обманывают Claude, заставляя его запускать опасные команды

218 

219### Прозрачная работа

220 

221Когда Claude Code пытается получить доступ к сетевым ресурсам вне sandbox:

222 

2231. Операция блокируется на уровне ОС

2242. Вы получаете немедленное уведомление

2253. Вы можете выбрать:

226 * Отказать в запросе

227 * Разрешить один раз

228 * Обновить конфигурацию sandbox, чтобы постоянно разрешить это

229 

230## Ограничения безопасности

231 

232* Ограничения сетевого Sandboxing: Система фильтрации сети работает путем ограничения доменов, к которым процессы могут подключаться. Она не проверяет трафик, проходящий через прокси, и пользователи несут ответственность за обеспечение того, чтобы они разрешали только доверенные домены в своей политике.

233 

234<Warning>

235 Пользователи должны знать о потенциальных рисках, связанных с разрешением широких доменов, таких как `github.com`, которые могут позволить экспортировать данные. Также в некоторых случаях может быть возможно обойти фильтрацию сети через [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting).

236</Warning>

237 

238* Повышение привилегий через Unix Sockets: Конфигурация `allowUnixSockets` может случайно предоставить доступ к мощным системным сервисам, которые могут привести к обходам sandbox. Например, если она используется для разрешения доступа к `/var/run/docker.sock`, это фактически предоставит доступ к хост-системе путем эксплуатации сокета docker. Пользователям рекомендуется тщательно рассмотреть любые unix sockets, которые они разрешают через sandbox.

239* Повышение привилегий разрешений файловой системы: Чрезмерно широкие разрешения на запись в файловую систему могут включить атаки повышения привилегий. Разрешение записи в каталоги, содержащие исполняемые файлы в `$PATH`, каталоги конфигурации системы или файлы конфигурации оболочки пользователя (`.bashrc`, `.zshrc`) может привести к выполнению кода в разных контекстах безопасности, когда другие пользователи или системные процессы получают доступ к этим файлам.

240* Сила Linux Sandbox: Реализация Linux обеспечивает сильную изоляцию файловой системы и сети, но включает режим `enableWeakerNestedSandbox`, который позволяет ему работать внутри окружений Docker без привилегированных пространств имен. Эта опция значительно ослабляет безопасность и должна использоваться только в случаях, когда дополнительная изоляция иным образом применяется.

241 

242## Как sandboxing связан с разрешениями

243 

244Sandboxing и [разрешения](/ru/permissions) являются дополняющими друг друга слоями безопасности, которые работают вместе:

245 

246* **Разрешения** контролируют, какие инструменты может использовать Claude Code, и оцениваются перед запуском любого инструмента. Они применяются ко всем инструментам: Bash, Read, Edit, WebFetch, MCP и другим.

247* **Sandboxing** обеспечивает применение на уровне ОС, которое ограничивает, к чему могут получить доступ команды Bash на уровне файловой системы и сети. Это применяется только к командам Bash и их дочерним процессам.

248 

249Ограничения файловой системы и сети настраиваются как через параметры sandbox, так и через правила разрешений:

250 

251* Используйте `sandbox.filesystem.allowWrite` для предоставления доступа на запись подпроцесса к путям вне рабочего каталога

252* Используйте `sandbox.filesystem.denyWrite` и `sandbox.filesystem.denyRead` для блокирования доступа подпроцесса к определенным путям

253* Используйте `sandbox.filesystem.allowRead` для повторного разрешения чтения определенных путей в запрещенной области

254* Используйте правила отказа `Read` и `Edit` для блокирования доступа к определенным файлам или каталогам

255* Используйте правила разрешения/отказа `WebFetch` для контроля доступа к доменам

256* Используйте `allowedDomains` sandbox для контроля, к каким доменам могут получить доступ команды Bash

257* Используйте `deniedDomains` sandbox для блокирования определенных доменов даже когда более широкий подстановочный знак `allowedDomains` иначе разрешил бы их

258 

259Пути из обоих параметров `sandbox.filesystem` и правил разрешений объединяются в окончательную конфигурацию sandbox.

260 

261Этот [репозиторий](https://github.com/anthropics/claude-code/tree/main/examples/settings) включает начальные конфигурации параметров для распространенных сценариев развертывания, включая примеры, специфичные для sandbox. Используйте их как отправные точки и адаптируйте их в соответствии с вашими потребностями.

262 

263## Продвинутое использование

264 

265### Пользовательская конфигурация прокси

266 

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

268 

269* Расшифровки и проверки трафика HTTPS

270* Применения пользовательских правил фильтрации

271* Логирования всех сетевых запросов

272* Интеграции с существующей инфраструктурой безопасности

273 

274```json theme={null}

275{

276 "sandbox": {

277 "network": {

278 "httpProxyPort": 8080,

279 "socksProxyPort": 8081

280 }

281 }

282}

283```

284 

285### Интеграция с существующими инструментами безопасности

286 

287Изолированный инструмент bash работает вместе с:

288 

289* **Правилами разрешений**: Объедините с [параметрами разрешений](/ru/permissions) для защиты в глубину

290* **Контейнерами разработки**: Используйте с [dev containers](/ru/devcontainer) для дополнительной изоляции

291* **Корпоративными политиками**: Применяйте конфигурации sandbox через [управляемые параметры](/ru/settings#settings-precedence)

292 

293## Лучшие практики

294 

2951. **Начните с ограничений**: Начните с минимальных разрешений и расширяйте по мере необходимости

2962. **Мониторьте логи**: Просмотрите попытки нарушения sandbox, чтобы понять потребности Claude Code

2973. **Используйте конфигурации, специфичные для окружения**: Различные правила sandbox для разработки и производства

2984. **Объедините с разрешениями**: Используйте sandboxing вместе с политиками IAM для комплексной безопасности

2995. **Протестируйте конфигурации**: Проверьте, что ваши параметры sandbox не блокируют законные рабочие процессы

300 

301## Открытый исходный код

302 

303Среда выполнения sandbox доступна как пакет npm с открытым исходным кодом для использования в ваших собственных проектах агентов. Это позволяет более широкому сообществу AI-агентов создавать более безопасные и защищенные автономные системы. Это также можно использовать для изоляции других программ, которые вы можете захотеть запустить. Например, для изоляции MCP сервера вы можете запустить:

304 

305```bash theme={null}

306npx @anthropic-ai/sandbox-runtime <command-to-sandbox>

307```

308 

309Для деталей реализации и исходного кода посетите [репозиторий GitHub](https://github.com/anthropic-experimental/sandbox-runtime).

310 

311## Ограничения

312 

313* **Накладные расходы производительности**: Минимальные, но некоторые операции файловой системы могут быть немного медленнее

314* **Совместимость**: Некоторые инструменты, требующие определенных шаблонов доступа к системе, могут потребовать корректировки конфигурации или даже могут потребовать запуска вне sandbox

315* **Поддержка платформ**: Поддерживает macOS, Linux и WSL2. WSL1 не поддерживается. Поддержка нативной Windows планируется.

316 

317## Что sandboxing не охватывает

318 

319Sandbox изолирует подпроцессы Bash. Другие инструменты работают в разных границах:

320 

321* **Встроенные инструменты файлов**: Read, Edit и Write используют систему разрешений напрямую, а не работают через sandbox. См. [разрешения](/ru/permissions).

322* **Использование компьютера**: Когда Claude открывает приложения и управляет вашим экраном, он работает на вашем фактическом рабочем столе, а не в изолированной среде. Запросы разрешения для каждого приложения контролируют каждое приложение. См. [использование компьютера в CLI](/ru/computer-use) или [использование компьютера в Desktop](/ru/desktop#let-claude-use-your-computer).

323 

324## См. также

325 

326* [Security](/ru/security) - Комплексные функции безопасности и лучшие практики

327* [Permissions](/ru/permissions) - Конфигурация разрешений и контроль доступа

328* [Settings](/ru/settings) - Полная справка по конфигурации

329* [CLI reference](/ru/cli-reference) - Параметры командной строки

scheduled-tasks.md +213 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Запуск подсказок по расписанию

6 

7> Используйте /loop и инструменты планирования cron для повторного запуска подсказок, опроса статуса или установки одноразовых напоминаний в сеансе Claude Code.

8 

9<Note>

10 Запланированные задачи требуют Claude Code v2.1.72 или более поздней версии. Проверьте вашу версию с помощью `claude --version`.

11</Note>

12 

13Запланированные задачи позволяют Claude автоматически повторно запускать подсказку через определённый интервал. Используйте их для опроса развёртывания, контроля pull request, проверки долгоживущей сборки или напоминания себе о чём-то позже в сеансе. Чтобы реагировать на события по мере их возникновения вместо опроса, см. [Channels](/ru/channels): ваш CI может отправить сбой непосредственно в сеанс.

14 

15Задачи привязаны к сеансу: они существуют в текущем разговоре и останавливаются при запуске нового. Возобновление с помощью `--resume` или `--continue` восстанавливает любую задачу, которая не [истекла](#seven-day-expiry): повторяющуюся задачу, созданную в течение последних 7 дней, или одноразовую, чьё запланированное время ещё не наступило. Для планирования, которое сохраняется независимо от любого сеанса, используйте [Routines](/ru/routines), [Desktop запланированные задачи](/ru/desktop-scheduled-tasks) или [GitHub Actions](/ru/github-actions).

16 

17## Сравните варианты планирования

18 

19Claude Code offers three ways to schedule recurring or one-off work:

20 

21| | [Cloud](/en/routines) | [Desktop](/en/desktop-scheduled-tasks) | [`/loop`](/en/scheduled-tasks) |

22| :------------------------- | :----------------------------- | :------------------------------------- | :---------------------------------- |

23| Runs on | Anthropic cloud | Your machine | Your machine |

24| Requires machine on | No | Yes | Yes |

25| Requires open session | No | No | Yes |

26| Persistent across restarts | Yes | Yes | Restored on `--resume` if unexpired |

27| Access to local files | No (fresh clone) | Yes | Yes |

28| MCP servers | Connectors configured per task | [Config files](/en/mcp) and connectors | Inherits from session |

29| Permission prompts | No (runs autonomously) | Configurable per task | Inherits from session |

30| Customizable schedule | Via `/schedule` in the CLI | Yes | Yes |

31| Minimum interval | 1 hour | 1 minute | 1 minute |

32 

33<Tip>

34 Use **cloud tasks** for work that should run reliably without your machine. Use **Desktop tasks** when you need access to local files and tools. Use **`/loop`** for quick polling during a session.

35</Tip>

36 

37## Запланируйте повторяющуюся подсказку с помощью /loop

38 

39Встроенный skill `/loop` — это самый быстрый способ запланировать повторяющуюся подсказку, пока сеанс остаётся открытым. Как интервал, так и подсказка являются необязательными, и то, что вы предоставляете, определяет поведение цикла.

40 

41| Что вы предоставляете | Пример | Что происходит |

42| :------------------------- | :-------------------------- | :-------------------------------------------------------------------------------------------------------------------------- |

43| Интервал и подсказка | `/loop 5m check the deploy` | Ваша подсказка запускается по [фиксированному расписанию](#run-on-a-fixed-interval) |

44| Только подсказка | `/loop check the deploy` | Ваша подсказка запускается с [интервалом, выбранным Claude](#let-claude-choose-the-interval) на каждой итерации |

45| Только интервал или ничего | `/loop` | Запускается [встроенная подсказка обслуживания](#run-the-built-in-maintenance-prompt) или ваш `loop.md`, если он существует |

46 

47Вы также можете передать другую команду в качестве подсказки, например `/loop 20m /review-pr 1234`, чтобы повторно запустить упакованный рабочий процесс на каждой итерации.

48 

49### Запуск по фиксированному интервалу

50 

51Когда вы указываете интервал, Claude преобразует его в выражение cron, планирует задание и подтверждает кадентность и ID задания.

52 

53```text theme={null}

54/loop 5m check if the deployment finished and tell me what happened

55```

56 

57Интервал может предшествовать подсказке как простой токен, например `30m`, или следовать за ней как предложение, например `every 2 hours`. Поддерживаемые единицы: `s` для секунд, `m` для минут, `h` для часов и `d` для дней.

58 

59Секунды округляются до ближайшей минуты, так как cron имеет гранулярность в одну минуту. Интервалы, которые не соответствуют чистому шагу cron, такие как `7m` или `90m`, округляются до ближайшего интервала, который соответствует, и Claude сообщает вам, что он выбрал.

60 

61### Позвольте Claude выбрать интервал

62 

63Когда вы опускаете интервал, Claude выбирает его динамически вместо запуска по фиксированному расписанию cron. После каждой итерации он выбирает задержку между одной минутой и одним часом на основе того, что он наблюдал: короткие ожидания, пока сборка завершается или PR активен, более длительные ожидания, когда ничего не ожидается. Выбранная задержка и причина для неё выводятся в конце каждой итерации.

64 

65Пример ниже проверяет CI и комментарии рецензии, с Claude ожидающим дольше между итерациями, когда PR затихает:

66 

67```text theme={null}

68/loop check whether CI passed and address any review comments

69```

70 

71Когда вы запрашиваете динамическое расписание `/loop`, Claude может использовать инструмент [Monitor](/ru/tools-reference#monitor-tool) напрямую. Monitor запускает фоновый скрипт и передаёт каждую строку вывода обратно, что полностью избегает опроса и часто более эффективно по токенам и отзывчиво, чем повторный запуск подсказки через интервал.

72 

73Динамически запланированный цикл появляется в вашем [списке запланированных задач](#manage-scheduled-tasks) как любая другая задача, поэтому вы можете перечислить или отменить его таким же образом. [Правила дрожания](#jitter) не применяются к нему, но [истечение через семь дней](#seven-day-expiry) применяется: цикл автоматически заканчивается через семь дней после его запуска.

74 

75<Note>

76 На Bedrock, Vertex AI и Microsoft Foundry подсказка без интервала запускается по фиксированному расписанию в 10 минут вместо этого.

77</Note>

78 

79### Запустите встроенную подсказку обслуживания

80 

81Когда вы опускаете подсказку, Claude использует встроенную подсказку обслуживания вместо той, которую вы предоставляете. На каждой итерации он работает через следующее, по порядку:

82 

83* продолжить любую незавершённую работу из разговора

84* ухаживать за pull request текущей ветки: комментарии рецензии, неудачные запуски CI, конфликты слияния

85* запустить проходы очистки, такие как охота на ошибки или упрощение, когда ничего другого не ожидается

86 

87Claude не начинает новые инициативы вне этой области, и необратимые действия, такие как push или удаление, происходят только когда они продолжают что-то, что стенограмма уже авторизовала.

88 

89```text theme={null}

90/loop

91```

92 

93Простой `/loop` запускает эту подсказку с [динамически выбранным интервалом](#let-claude-choose-the-interval). Добавьте интервал, например `/loop 15m`, чтобы запустить его по фиксированному расписанию вместо этого. Чтобы заменить встроенную подсказку своей собственной по умолчанию, см. [Настройте подсказку по умолчанию с помощью loop.md](#customize-the-default-prompt-with-loop-md).

94 

95<Note>

96 На Bedrock, Vertex AI и Microsoft Foundry `/loop` без подсказки выводит сообщение об использовании вместо запуска цикла обслуживания.

97</Note>

98 

99### Настройте подсказку по умолчанию с помощью loop.md

100 

101Файл `loop.md` заменяет встроенную подсказку обслуживания вашими собственными инструкциями. Он определяет одну подсказку по умолчанию для простого `/loop`, а не список отдельных запланированных задач, и игнорируется всякий раз, когда вы предоставляете подсказку в командной строке. Чтобы запланировать дополнительные подсказки рядом с ней, используйте `/loop <prompt>` или [попросите Claude напрямую](#manage-scheduled-tasks).

102 

103Claude ищет файл в двух местах и использует первый, который он находит.

104 

105| Путь | Область |

106| :------------------ | :------------------------------------------------------------------------------------------- |

107| `.claude/loop.md` | На уровне проекта. Имеет приоритет, когда оба файла существуют. |

108| `~/.claude/loop.md` | На уровне пользователя. Применяется в любом проекте, который не определяет свой собственный. |

109 

110Файл представляет собой простой Markdown без требуемой структуры. Напишите его так, как если бы вы вводили подсказку `/loop` напрямую. Следующий пример поддерживает ветку выпуска в хорошем состоянии:

111 

112```markdown title=".claude/loop.md" theme={null}

113Check the `release/next` PR. If CI is red, pull the failing job log,

114diagnose, and push a minimal fix. If new review comments have arrived,

115address each one and resolve the thread. If everything is green and

116quiet, say so in one line.

117```

118 

119Изменения в `loop.md` вступают в силу на следующей итерации, поэтому вы можете уточнить инструкции, пока цикл работает. Когда `loop.md` не существует ни в одном месте, цикл возвращается к встроенной подсказке обслуживания. Держите файл кратким: содержимое, превышающее 25 000 байт, усекается.

120 

121### Остановите цикл

122 

123Чтобы остановить `/loop` во время ожидания следующей итерации, нажмите `Esc`. Это очищает ожидающее пробуждение, поэтому цикл не срабатывает снова. Задачи, которые вы запланировали, [попросив Claude напрямую](#manage-scheduled-tasks), не затрагиваются `Esc` и остаются на месте до тех пор, пока вы их не удалите.

124 

125## Установите одноразовое напоминание

126 

127Для одноразовых напоминаний опишите то, что вы хотите, на естественном языке вместо использования `/loop`. Claude планирует одноразовую задачу, которая удаляет себя после выполнения.

128 

129```text theme={null}

130remind me at 3pm to push the release branch

131```

132 

133```text theme={null}

134in 45 minutes, check whether the integration tests passed

135```

136 

137Claude привязывает время срабатывания к определённой минуте и часу, используя выражение cron, и подтверждает, когда оно сработает.

138 

139## Управление запланированными задачами

140 

141Попросите Claude на естественном языке перечислить или отменить задачи, или обратитесь непосредственно к базовым инструментам.

142 

143```text theme={null}

144what scheduled tasks do I have?

145```

146 

147```text theme={null}

148cancel the deploy check job

149```

150 

151Под капотом Claude использует эти инструменты:

152 

153| Инструмент | Назначение |

154| :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- |

155| `CronCreate` | Запланировать новую задачу. Принимает 5-полевое выражение cron, подсказку для запуска и указание на то, повторяется ли она или срабатывает один раз. |

156| `CronList` | Перечислить все запланированные задачи с их ID, расписаниями и подсказками. |

157| `CronDelete` | Отменить задачу по ID. |

158 

159Каждая запланированная задача имеет 8-символьный ID, который вы можете передать в `CronDelete`. Сеанс может одновременно содержать до 50 запланированных задач.

160 

161## Как работают запланированные задачи

162 

163Планировщик проверяет каждую секунду наличие выполненных задач и ставит их в очередь с низким приоритетом. Запланированная подсказка срабатывает между вашими ходами, а не во время ответа Claude. Если Claude занят, когда задача наступает, подсказка ждёт до конца текущего хода.

164 

165Все времена интерпретируются в вашем локальном часовом поясе. Выражение cron, такое как `0 9 * * *`, означает 9 утра там, где вы запускаете Claude Code, а не UTC.

166 

167### Дрожание

168 

169Чтобы избежать того, чтобы каждый сеанс обращался к API в один и тот же момент по стене часов, планировщик добавляет небольшое детерминированное смещение к времени срабатывания:

170 

171* Повторяющиеся задачи срабатывают до 10% позже своего периода, максимум 15 минут. Почасовое задание может срабатывать в любое время от `:00` до `:06`.

172* Одноразовые задачи, запланированные на верхнюю или нижнюю часть часа, срабатывают до 90 секунд раньше.

173 

174Смещение получается из ID задачи, поэтому одна и та же задача всегда получает одно и то же смещение. Если точное время имеет значение, выберите минуту, которая не является `:00` или `:30`, например `3 9 * * *` вместо `0 9 * * *`, и одноразовое дрожание не будет применяться.

175 

176### Истечение через семь дней

177 

178Повторяющиеся задачи автоматически истекают через 7 дней после создания. Задача срабатывает в последний раз, а затем удаляет себя. Это ограничивает, как долго может работать забытый цикл. Если вам нужна повторяющаяся задача, которая длится дольше, отмените и пересоздайте её перед истечением срока, или используйте [Routines](/ru/routines) или [Desktop запланированные задачи](/ru/desktop-scheduled-tasks) для долговечного планирования.

179 

180## Справочник выражений cron

181 

182`CronCreate` принимает стандартные 5-полевые выражения cron: `minute hour day-of-month month day-of-week`. Все поля поддерживают подстановочные знаки (`*`), одиночные значения (`5`), шаги (`*/15`), диапазоны (`1-5`) и списки, разделённые запятыми (`1,15,30`).

183 

184| Пример | Значение |

185| :------------- | :--------------------------------------- |

186| `*/5 * * * *` | Каждые 5 минут |

187| `0 * * * *` | Каждый час в начале часа |

188| `7 * * * *` | Каждый час в 7 минут |

189| `0 9 * * *` | Каждый день в 9 утра по местному времени |

190| `0 9 * * 1-5` | Будни в 9 утра по местному времени |

191| `30 14 15 3 *` | 15 марта в 14:30 по местному времени |

192 

193День недели использует `0` или `7` для воскресенья через `6` для субботы. Расширенный синтаксис, такой как `L`, `W`, `?`, и псевдонимы имён, такие как `MON` или `JAN`, не поддерживаются.

194 

195Когда ограничены как день месяца, так и день недели, дата совпадает, если совпадает любое поле. Это следует стандартной семантике vixie-cron.

196 

197## Отключите запланированные задачи

198 

199Установите `CLAUDE_CODE_DISABLE_CRON=1` в вашей среде, чтобы полностью отключить планировщик. Инструменты cron и `/loop` становятся недоступными, и любые уже запланированные задачи перестают срабатывать. См. [Переменные окружения](/ru/env-vars) для полного списка флагов отключения.

200 

201## Ограничения

202 

203Планирование, привязанное к сеансу, имеет присущие ему ограничения:

204 

205* Задачи срабатывают только во время работы Claude Code и в режиме ожидания. Закрытие терминала или выход из сеанса отменяет всё.

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

207* Запуск нового разговора очищает все задачи, привязанные к сеансу. Возобновление с помощью `claude --resume` или `claude --continue` восстанавливает задачи, которые не истекли: повторяющиеся задачи в течение семи дней после создания и одноразовые задачи, чьё запланированное время ещё не наступило. Фоновые задачи Bash и monitor никогда не восстанавливаются при возобновлении.

208 

209Для автоматизации, управляемой cron, которая должна работать без присмотра:

210 

211* [Routines](/ru/routines): запуск на инфраструктуре, управляемой Anthropic, по расписанию, через вызов API или на события GitHub

212* [GitHub Actions](/ru/github-actions): используйте триггер `schedule` в CI

213* [Desktop запланированные задачи](/ru/desktop-scheduled-tasks): запуск локально на вашей машине

security.md +143 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Безопасность

6 

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

8 

9## Наш подход к безопасности

10 

11### Основа безопасности

12 

13Безопасность вашего кода имеет первостепенное значение. Claude Code построен с учетом безопасности, разработан в соответствии с комплексной программой безопасности Anthropic. Узнайте больше и получите доступ к ресурсам (отчет SOC 2 Type 2, сертификат ISO 27001 и т. д.) в [Центре доверия Anthropic](https://trust.anthropic.com).

14 

15### Архитектура на основе разрешений

16 

17Claude Code использует строгие разрешения только для чтения по умолчанию. Когда требуются дополнительные действия (редактирование файлов, запуск тестов, выполнение команд), Claude Code запрашивает явное разрешение. Пользователи контролируют, одобрить ли действия один раз или разрешить их автоматически.

18 

19Мы разработали Claude Code так, чтобы он был прозрачным и безопасным. Например, мы требуем одобрения для bash команд перед их выполнением, давая вам прямой контроль. Этот подход позволяет пользователям и организациям настраивать разрешения напрямую.

20 

21Для подробной конфигурации разрешений см. [Разрешения](/ru/permissions).

22 

23### Встроенные защиты

24 

25Для снижения рисков в агентных системах:

26 

27* **Изолированный bash инструмент**: [Sandbox](/ru/sandboxing) bash команды с изоляцией файловой системы и сети, снижая количество запросов разрешений при сохранении безопасности. Включите с помощью `/sandbox` для определения границ, в которых Claude Code может работать автономно

28* **Ограничение доступа на запись**: Claude Code может писать только в папку, в которой он был запущен, и её подпапки — он не может изменять файлы в родительских директориях без явного разрешения. Хотя Claude Code может читать файлы вне рабочей директории (полезно для доступа к системным библиотекам и зависимостям), операции записи строго ограничены областью проекта, создавая четкую границу безопасности

29* **Смягчение усталости от запросов**: Поддержка списков разрешений часто используемых безопасных команд для каждого пользователя, кодовой базы или организации

30* **Режим Accept Edits**: Пакетное принятие нескольких правок при сохранении запросов разрешений для команд с побочными эффектами

31 

32### Ответственность пользователя

33 

34Claude Code имеет только те разрешения, которые вы ему предоставляете. Вы несете ответственность за проверку предложенного кода и команд на безопасность перед одобрением.

35 

36## Защита от инъекций в подсказки

37 

38Инъекция в подсказку — это техника, при которой злоумышленник пытается переопределить или манипулировать инструкциями AI ассистента, вставляя вредоносный текст. Claude Code включает несколько защит от этих атак:

39 

40### Основные защиты

41 

42* **Система разрешений**: Чувствительные операции требуют явного одобрения

43* **Анализ с учетом контекста**: Обнаруживает потенциально вредоносные инструкции путем анализа полного запроса

44* **Санитизация входных данных**: Предотвращает инъекции команд путем обработки пользовательских входных данных

45* **Черный список команд**: Блокирует рискованные команды, которые получают произвольный контент из веб-сети, такие как `curl` и `wget` по умолчанию. Когда явно разрешено, помните об [ограничениях шаблонов разрешений](/ru/permissions#tool-specific-permission-rules)

46 

47### Защита конфиденциальности

48 

49Мы реализовали несколько защит для защиты ваших данных, включая:

50 

51* Ограниченные периоды хранения конфиденциальной информации (см. [Центр конфиденциальности](https://privacy.anthropic.com/en/articles/10023548-how-long-do-you-store-my-data) для получения дополнительной информации)

52* Ограниченный доступ к данным сеанса пользователя

53* Контроль пользователя над предпочтениями обучения данных. Пользователи потребительских версий могут изменить свои [параметры конфиденциальности](https://claude.ai/settings/privacy) в любое время.

54 

55Для полной информации, пожалуйста, ознакомьтесь с нашими [Коммерческими условиями обслуживания](https://www.anthropic.com/legal/commercial-terms) (для пользователей Team, Enterprise и API) или [Условиями для потребителей](https://www.anthropic.com/legal/consumer-terms) (для пользователей Free, Pro и Max) и [Политикой конфиденциальности](https://www.anthropic.com/legal/privacy).

56 

57### Дополнительные защиты

58 

59* **Одобрение сетевых запросов**: Инструменты, которые делают сетевые запросы, требуют одобрения пользователя по умолчанию

60* **Изолированные контекстные окна**: Web fetch использует отдельное контекстное окно, чтобы избежать инъекции потенциально вредоносных подсказок

61* **Проверка доверия**: Первые запуски кодовой базы и новые MCP servers требуют проверки доверия

62 * Примечание: Проверка доверия отключена при неинтерактивном запуске с флагом `-p`

63* **Обнаружение инъекций команд**: Подозрительные bash команды требуют ручного одобрения даже если они были ранее добавлены в список разрешений

64* **Сопоставление с отказом по умолчанию**: Несопоставленные команды по умолчанию требуют ручного одобрения

65* **Описания на естественном языке**: Сложные bash команды включают объяснения для понимания пользователем

66* **Безопасное хранилище учетных данных**: API ключи и токены зашифрованы. См. [Управление учетными данными](/ru/authentication#credential-management)

67 

68<Warning>

69 **Риск безопасности Windows WebDAV**: При запуске Claude Code на Windows мы рекомендуем не включать WebDAV и не разрешать Claude Code доступ к путям, таким как `\\*`, которые могут содержать подпапки WebDAV. [WebDAV был объявлен устаревшим Microsoft](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated) из-за рисков безопасности. Включение WebDAV может позволить Claude Code инициировать сетевые запросы к удаленным хостам, обходя систему разрешений.

70</Warning>

71 

72**Лучшие практики при работе с ненадежным контентом**:

73 

741. Проверьте предложенные команды перед одобрением

752. Избегайте прямого перенаправления ненадежного контента в Claude

763. Проверьте предложенные изменения критических файлов

774. Используйте виртуальные машины (ВМ) для запуска скриптов и вызовов инструментов, особенно при взаимодействии с внешними веб-сервисами

785. Сообщайте о подозрительном поведении с помощью `/feedback`

79 

80<Warning>

81 Хотя эти защиты значительно снижают риск, ни одна система не полностью

82 защищена от всех атак. Всегда соблюдайте хорошие практики безопасности при работе

83 с любым AI инструментом.

84</Warning>

85 

86## Безопасность MCP

87 

88Claude Code позволяет пользователям настраивать серверы Model Context Protocol (MCP). Список разрешенных MCP servers настраивается в вашем исходном коде как часть параметров Claude Code, которые инженеры проверяют в систему контроля версий.

89 

90Мы рекомендуем либо писать свои собственные MCP servers, либо использовать MCP servers от поставщиков, которым вы доверяете. Вы можете настроить разрешения Claude Code для MCP servers. Anthropic не управляет и не проверяет никакие MCP servers.

91 

92## Безопасность IDE

93 

94См. [Безопасность и конфиденциальность VS Code](/ru/vs-code#security-and-privacy) для получения дополнительной информации о запуске Claude Code в IDE.

95 

96## Безопасность облачного выполнения

97 

98При использовании [Claude Code в веб-версии](/ru/claude-code-on-the-web) действуют дополнительные элементы управления безопасностью:

99 

100* **Изолированные виртуальные машины**: Каждый облачный сеанс работает в изолированной ВМ, управляемой Anthropic

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

102* **Защита учетных данных**: Аутентификация обрабатывается через безопасный прокси, который использует учетные данные с ограниченной областью действия внутри sandbox, которые затем переводятся в ваш фактический токен аутентификации GitHub

103* **Ограничения ветвей**: Операции Git push ограничены текущей рабочей ветвью

104* **Логирование аудита**: Все операции в облачных средах регистрируются в целях соответствия и аудита

105* **Автоматическая очистка**: Облачные среды автоматически завершаются после завершения сеанса

106 

107Для получения дополнительной информации о облачном выполнении см. [Claude Code в веб-версии](/ru/claude-code-on-the-web).

108 

109Сеансы [Remote Control](/ru/remote-control) работают иначе: веб-интерфейс подключается к процессу Claude Code, работающему на вашей локальной машине. Все выполнение кода и доступ к файлам остаются локальными, и те же данные, которые передаются во время любого локального сеанса Claude Code, проходят через API Anthropic по TLS. Никаких облачных ВМ или sandboxing не задействовано. Соединение использует несколько краткосрочных, узко ограниченных учетных данных, каждые ограниченные определенной целью и истекающие независимо, чтобы ограничить радиус поражения любого скомпрометированного учетного данного.

110 

111## Лучшие практики безопасности

112 

113### Работа с конфиденциальным кодом

114 

115* Проверьте все предложенные изменения перед одобрением

116* Используйте параметры разрешений для конкретного проекта для конфиденциальных репозиториев

117* Рассмотрите возможность использования [dev containers](/ru/devcontainer) для дополнительной изоляции

118* Регулярно проверяйте параметры разрешений с помощью `/permissions`

119 

120### Безопасность команды

121 

122* Используйте [управляемые параметры](/ru/settings#settings-files) для обеспечения организационных стандартов

123* Делитесь одобренными конфигурациями разрешений через систему контроля версий

124* Обучайте членов команды лучшим практикам безопасности

125* Отслеживайте использование Claude Code через [метрики OpenTelemetry](/ru/monitoring-usage)

126* Проверяйте или блокируйте изменения параметров во время сеансов с помощью [`ConfigChange` hooks](/ru/hooks#configchange)

127 

128### Сообщение о проблемах безопасности

129 

130Если вы обнаружили уязвимость безопасности в Claude Code:

131 

1321. Не раскрывайте её публично

1332. Сообщите об этом через нашу [программу HackerOne](https://hackerone.com/4f1f16ba-10d3-4d09-9ecc-c721aad90f24/embedded_submissions/new)

1343. Включите подробные шаги воспроизведения

1354. Дайте нам время для решения проблемы перед публичным раскрытием

136 

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

138 

139* [Sandboxing](/ru/sandboxing) - Изоляция файловой системы и сети для bash команд

140* [Разрешения](/ru/permissions) - Настройка разрешений и элементов управления доступом

141* [Мониторинг использования](/ru/monitoring-usage) - Отслеживание и аудит активности Claude Code

142* [Development containers](/ru/devcontainer) - Безопасные, изолированные среды

143* [Центр доверия Anthropic](https://trust.anthropic.com) - Сертификаты безопасности и соответствие

server-managed-settings.md +224 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Настройка параметров, управляемых сервером

6 

7> Централизованно настраивайте Claude Code для вашей организации через параметры, доставляемые сервером, без необходимости инфраструктуры управления устройствами.

8 

9Параметры, управляемые сервером, позволяют администраторам централизованно настраивать Claude Code через веб-интерфейс на Claude.ai. Клиенты Claude Code автоматически получают эти параметры при аутентификации пользователей с использованием учетных данных организации.

10 

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

12 

13<Note>

14 Параметры, управляемые сервером, доступны для клиентов [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_teams#team-&-enterprise) и [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_enterprise).

15</Note>

16 

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

18 

19Для использования параметров, управляемых сервером, вам необходимо:

20 

21* План Claude for Teams или Claude for Enterprise

22* Claude Code версии 2.1.38 или более поздней для Claude for Teams, или версии 2.1.30 или более поздней для Claude for Enterprise

23* Сетевой доступ к `api.anthropic.com`

24 

25## Выбор между параметрами, управляемыми сервером, и параметрами, управляемыми конечной точкой

26 

27Claude Code поддерживает два подхода к централизованной конфигурации. Параметры, управляемые сервером, доставляют конфигурацию с серверов Anthropic. [Параметры, управляемые конечной точкой](/ru/settings#settings-files) развертываются непосредственно на устройства через встроенные политики ОС (управляемые параметры macOS, реестр Windows) или управляемые файлы параметров.

28 

29| Подход | Лучше всего подходит для | Модель безопасности |

30| :------------------------------------------------------------------------ | :---------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------- |

31| **Параметры, управляемые сервером** | Организации без MDM или пользователи на неуправляемых устройствах | Параметры доставляются с серверов Anthropic во время аутентификации |

32| **[Параметры, управляемые конечной точкой](/ru/settings#settings-files)** | Организации с MDM или управлением конечными точками | Параметры развертываются на устройства через профили конфигурации MDM, политики реестра или управляемые файлы параметров |

33 

34Если ваши устройства зарегистрированы в решении MDM или управления конечными точками, параметры, управляемые конечной точкой, обеспечивают более сильные гарантии безопасности, поскольку файл параметров может быть защищен от изменения пользователем на уровне ОС.

35 

36## Настройка параметров, управляемых сервером

37 

38<Steps>

39 <Step title="Откройте консоль администратора">

40 В [Claude.ai](https://claude.ai) перейдите в **Admin Settings > Claude Code > Managed settings**.

41 </Step>

42 

43 <Step title="Определите ваши параметры">

44 Добавьте вашу конфигурацию как JSON. Все [параметры, доступные в `settings.json`](/ru/settings#available-settings), поддерживаются, включая [hooks](/ru/hooks), [переменные окружения](/ru/env-vars) и [параметры только для управления](/ru/permissions#managed-only-settings), такие как `allowManagedPermissionRulesOnly`.

45 

46 Этот пример применяет список отказа в разрешениях, предотвращает обход разрешений пользователями и ограничивает правила разрешений только теми, которые определены в управляемых параметрах:

47 

48 ```json theme={null}

49 {

50 "permissions": {

51 "deny": [

52 "Bash(curl *)",

53 "Read(./.env)",

54 "Read(./.env.*)",

55 "Read(./secrets/**)"

56 ],

57 "disableBypassPermissionsMode": "disable"

58 },

59 "allowManagedPermissionRulesOnly": true

60 }

61 ```

62 

63 Hooks используют тот же формат, что и в `settings.json`.

64 

65 Этот пример запускает скрипт аудита после каждого редактирования файла во всей организации:

66 

67 ```json theme={null}

68 {

69 "hooks": {

70 "PostToolUse": [

71 {

72 "matcher": "Edit|Write",

73 "hooks": [

74 { "type": "command", "command": "/usr/local/bin/audit-edit.sh" }

75 ]

76 }

77 ]

78 }

79 }

80 ```

81 

82 Для настройки [классификатора режима автоматизации](/ru/permission-modes#eliminate-prompts-with-auto-mode), чтобы он знал, какие репозитории, бакеты и домены доверяет ваша организация:

83 

84 ```json theme={null}

85 {

86 "autoMode": {

87 "environment": [

88 "Source control: github.example.com/acme-corp and all repos under it",

89 "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",

90 "Trusted internal domains: *.corp.example.com"

91 ]

92 }

93 }

94 ```

95 

96 Поскольку hooks выполняют команды оболочки, пользователи видят [диалог одобрения безопасности](#security-approval-dialogs) перед их применением. Смотрите [Настройка режима автоматизации](/ru/auto-mode-config) для информации о том, как записи `autoMode` влияют на то, что блокирует классификатор, и важные предупреждения о полях `allow` и `soft_deny`.

97 </Step>

98 

99 <Step title="Сохраните и разверните">

100 Сохраните ваши изменения. Клиенты Claude Code получат обновленные параметры при следующем запуске или в цикле опроса каждый час.

101 </Step>

102</Steps>

103 

104### Проверка доставки параметров

105 

106Чтобы подтвердить, что параметры применяются, попросите пользователя перезагрузить Claude Code. Если конфигурация включает параметры, которые запускают [диалог одобрения безопасности](#security-approval-dialogs), пользователь видит подсказку, описывающую управляемые параметры при запуске. Вы также можете проверить, что активны управляемые правила разрешений, попросив пользователя запустить `/permissions` для просмотра его эффективных правил разрешений.

107 

108### Контроль доступа

109 

110Следующие роли могут управлять параметрами, управляемыми сервером:

111 

112* **Primary Owner**

113* **Owner**

114 

115Ограничьте доступ доверенному персоналу, так как изменения параметров применяются ко всем пользователям в организации.

116 

117### Параметры только для управления

118 

119Большинство [ключей параметров](/ru/settings#available-settings) работают в любой области. Несколько ключей читаются только из управляемых параметров и не имеют эффекта при размещении в файлах параметров пользователя или проекта. Смотрите [параметры только для управления](/ru/permissions#managed-only-settings) для полного списка. Любой параметр, не входящий в этот список, все еще может быть размещен в управляемых параметрах и имеет наивысший приоритет.

120 

121### Текущие ограничения

122 

123Параметры, управляемые сервером, имеют следующие ограничения:

124 

125* Параметры применяются одинаково ко всем пользователям в организации. Конфигурации для отдельных групп еще не поддерживаются.

126* [Конфигурации MCP server](/ru/mcp#managed-mcp-configuration) не могут распространяться через параметры, управляемые сервером.

127 

128## Доставка параметров

129 

130### Приоритет параметров

131 

132Параметры, управляемые сервером, и [параметры, управляемые конечной точкой](/ru/settings#settings-files) занимают наивысший уровень в [иерархии параметров](/ru/settings#settings-precedence) Claude Code. Никакой другой уровень параметров не может их переопределить, включая аргументы командной строки.

133 

134В пределах управляемого уровня первый источник, который доставляет непустую конфигурацию, побеждает. Параметры, управляемые сервером, проверяются первыми, затем параметры, управляемые конечной точкой. Источники не объединяются: если параметры, управляемые сервером, доставляют какие-либо ключи вообще, параметры, управляемые конечной точкой, полностью игнорируются. Если параметры, управляемые сервером, не доставляют ничего, применяются параметры, управляемые конечной точкой.

135 

136Если вы очищаете конфигурацию, управляемую сервером, в консоли администратора с намерением вернуться к управляемому plist или политике реестра, управляемой конечной точкой, имейте в виду, что [кэшированные параметры](#fetch-and-caching-behavior) сохраняются на клиентских машинах до следующей успешной выборки. Запустите `/status` для просмотра того, какой управляемый источник активен.

137 

138### Поведение выборки и кэширования

139 

140Claude Code выбирает параметры с серверов Anthropic при запуске и опрашивает обновления каждый час во время активных сеансов.

141 

142**Первый запуск без кэшированных параметров:**

143 

144* Claude Code выбирает параметры асинхронно

145* Если выборка не удается, Claude Code продолжает работу без управляемых параметров

146* Существует краткое окно перед загрузкой параметров, когда ограничения еще не применяются

147 

148**Последующие запуски с кэшированными параметрами:**

149 

150* Кэшированные параметры применяются немедленно при запуске

151* Claude Code выбирает свежие параметры в фоновом режиме

152* Кэшированные параметры сохраняются при сбоях сети

153 

154Claude Code применяет обновления параметров автоматически без перезагрузки, за исключением расширенных параметров, таких как конфигурация OpenTelemetry, которые требуют полной перезагрузки для вступления в силу.

155 

156### Принудительное закрытие при запуске

157 

158По умолчанию, если выборка удаленных параметров не удается при запуске, CLI продолжает работу без управляемых параметров. Для сред, где это краткое неприменяемое окно неприемлемо, установите `forceRemoteSettingsRefresh: true` в ваших управляемых параметрах.

159 

160Когда этот параметр активен, CLI блокируется при запуске до тех пор, пока удаленные параметры не будут свежо выбраны. Если выборка не удается, CLI выходит вместо продолжения без политики. Этот параметр самовоспроизводится: после доставки с сервера он также кэшируется локально, чтобы последующие запуски применяли то же поведение даже перед первой успешной выборкой нового сеанса.

161 

162Чтобы включить это, добавьте ключ в конфигурацию управляемых параметров:

163 

164```json theme={null}

165{

166 "forceRemoteSettingsRefresh": true

167}

168```

169 

170Перед включением этого параметра убедитесь, что ваши сетевые политики позволяют подключение к `api.anthropic.com`. Если эта конечная точка недоступна, CLI выходит при запуске и пользователи не могут запустить Claude Code.

171 

172### Диалоги одобрения безопасности

173 

174Определенные параметры, которые могут представлять риск безопасности, требуют явного одобрения пользователя перед применением:

175 

176* **Параметры команд оболочки**: параметры, которые выполняют команды оболочки

177* **Пользовательские переменные окружения**: переменные, не входящие в известный безопасный список разрешений

178* **Конфигурации hooks**: любое определение hooks

179 

180Когда эти параметры присутствуют, пользователи видят диалог безопасности, объясняющий, что настраивается. Пользователи должны одобрить для продолжения. Если пользователь отклоняет параметры, Claude Code выходит.

181 

182<Note>

183 В неинтерактивном режиме с флагом `-p` Claude Code пропускает диалоги безопасности и применяет параметры без одобрения пользователя.

184</Note>

185 

186## Доступность платформы

187 

188Параметры, управляемые сервером, требуют прямого подключения к `api.anthropic.com` и недоступны при использовании поставщиков моделей третьих сторон:

189 

190* Amazon Bedrock

191* Google Vertex AI

192* Microsoft Foundry

193* Пользовательские конечные точки API через `ANTHROPIC_BASE_URL` или [LLM gateways](/ru/llm-gateway)

194 

195## Аудит логирования

196 

197События журнала аудита для изменений параметров доступны через API соответствия или экспорт журнала аудита. Свяжитесь с вашей командой учета Anthropic для получения доступа.

198 

199События аудита включают тип выполненного действия, учетную запись и устройство, которые выполнили действие, и ссылки на предыдущие и новые значения.

200 

201## Соображения безопасности

202 

203Параметры, управляемые сервером, обеспечивают централизованное применение политики, но они работают как элемент управления на стороне клиента. На неуправляемых устройствах пользователи с доступом администратора или sudo могут изменять двоичный файл Claude Code, файловую систему или конфигурацию сети.

204 

205| Сценарий | Поведение |

206| :------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

207| Пользователь редактирует кэшированный файл параметров | Измененный файл применяется при запуске, но правильные параметры восстанавливаются при следующей выборке с сервера |

208| Пользователь удаляет кэшированный файл параметров | Происходит поведение первого запуска: параметры выбираются асинхронно с кратким неприменяемым окном |

209| API недоступен | Кэшированные параметры применяются, если доступны, в противном случае управляемые параметры не применяются до следующей успешной выборки. С `forceRemoteSettingsRefresh: true` CLI выходит вместо продолжения |

210| Пользователь аутентифицируется с другой организацией | Параметры не доставляются для учетных записей вне управляемой организации |

211| Пользователь настраивает [поставщика моделей третьей стороны](#platform-availability) | Параметры, управляемые сервером, обходятся. Это включает установку `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_MANTLE`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY` или нестандартного `ANTHROPIC_BASE_URL` |

212 

213Для обнаружения изменений конфигурации во время выполнения используйте [`ConfigChange` hooks](/ru/hooks#configchange) для логирования изменений или блокировки несанкционированных изменений перед их вступлением в силу.

214 

215Для более сильных гарантий применения используйте [параметры, управляемые конечной точкой](/ru/settings#settings-files) на устройствах, зарегистрированных в решении MDM.

216 

217## См. также

218 

219Связанные страницы для управления конфигурацией Claude Code:

220 

221* [Settings](/ru/settings): полный справочник конфигурации, включая все доступные параметры

222* [Endpoint-managed settings](/ru/settings#settings-files): управляемые параметры, развертываемые на устройства IT

223* [Authentication](/ru/authentication): настройка доступа пользователей к Claude Code

224* [Security](/ru/security): гарантии безопасности и лучшие практики

settings.md +914 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Параметры Claude Code

6 

7> Настройте Claude Code с помощью глобальных и проектных параметров, а также переменных окружения.

8 

9Claude Code предлагает множество параметров для настройки его поведения в соответствии с вашими потребностями. Вы можете настроить Claude Code, выполнив команду `/config` при использовании интерактивного REPL, которая открывает интерфейс параметров с вкладками, где вы можете просмотреть информацию о состоянии и изменить параметры конфигурации.

10 

11## Области конфигурации

12 

13Claude Code использует **систему областей** для определения того, где применяются конфигурации и с кем они совместно используются. Понимание областей помогает вам решить, как настроить Claude Code для личного использования, командного сотрудничества или развертывания на уровне предприятия.

14 

15### Доступные области

16 

17| Область | Местоположение | На кого это влияет | Совместно используется с командой? |

18| :---------- | :-------------------------------------------------------------------------------------------- | :------------------------------- | :--------------------------------- |

19| **Managed** | Параметры, управляемые сервером, plist / реестр или системный уровень `managed-settings.json` | Все пользователи на машине | Да (развернуто IT) |

20| **User** | Каталог `~/.claude/` | Вы, во всех проектах | Нет |

21| **Project** | `.claude/` в репозитории | Все сотрудники этого репозитория | Да (зафиксировано в git) |

22| **Local** | `.claude/settings.local.json` | Вы, только в этом репозитории | Нет (игнорируется gitignore) |

23 

24### Когда использовать каждую область

25 

26**Область Managed** предназначена для:

27 

28* Политик безопасности, которые должны быть применены на уровне организации

29* Требований соответствия, которые нельзя переопределить

30* Стандартизированных конфигураций, развернутых IT/DevOps

31 

32**Область User** лучше всего подходит для:

33 

34* Личных предпочтений, которые вы хотите везде (темы, параметры редактора)

35* Инструментов и plugins, которые вы используете во всех проектах

36* Ключей API и аутентификации (хранятся безопасно)

37 

38**Область Project** лучше всего подходит для:

39 

40* Параметров, совместно используемых командой (разрешения, hooks, MCP servers)

41* Plugins, которые должна иметь вся команда

42* Стандартизации инструментов между сотрудниками

43 

44**Область Local** лучше всего подходит для:

45 

46* Личных переопределений для конкретного проекта

47* Тестирования конфигураций перед совместным использованием с командой

48* Параметров, специфичных для машины, которые не будут работать для других

49 

50### Как области взаимодействуют

51 

52Когда один и тот же параметр настроен в нескольких областях, более специфичные области имеют приоритет:

53 

541. **Managed** (наивысший) - не может быть переопределена ничем

552. **Аргументы командной строки** - временные переопределения сеанса

563. **Local** - переопределяет параметры проекта и пользователя

574. **Project** - переопределяет параметры пользователя

585. **User** (наименьший) - применяется, когда ничто другое не указывает параметр

59 

60Например, если разрешение разрешено в параметрах пользователя, но запрещено в параметрах проекта, параметр проекта имеет приоритет и разрешение блокируется.

61 

62### Что использует области

63 

64Области применяются ко многим функциям Claude Code:

65 

66| Функция | Местоположение пользователя | Местоположение проекта | Местоположение Local |

67| :-------------- | :-------------------------- | :---------------------------------- | :------------------------------------- |

68| **Settings** | `~/.claude/settings.json` | `.claude/settings.json` | `.claude/settings.local.json` |

69| **Subagents** | `~/.claude/agents/` | `.claude/agents/` | Нет |

70| **MCP servers** | `~/.claude.json` | `.mcp.json` | `~/.claude.json` (для каждого проекта) |

71| **Plugins** | `~/.claude/settings.json` | `.claude/settings.json` | `.claude/settings.local.json` |

72| **CLAUDE.md** | `~/.claude/CLAUDE.md` | `CLAUDE.md` или `.claude/CLAUDE.md` | `CLAUDE.local.md` |

73 

74***

75 

76## Файлы параметров

77 

78Файл `settings.json` является официальным механизмом для настройки Claude Code через иерархические параметры:

79 

80* **Параметры пользователя** определяются в `~/.claude/settings.json` и применяются ко всем проектам.

81* **Параметры проекта** сохраняются в каталоге вашего проекта:

82 * `.claude/settings.json` для параметров, которые проверяются в системе управления версиями и совместно используются с вашей командой

83 * `.claude/settings.local.json` для параметров, которые не проверяются, полезны для личных предпочтений и экспериментов. Claude Code настроит git на игнорирование `.claude/settings.local.json` при его создании.

84* **Управляемые параметры**: Для организаций, которым требуется централизованное управление, Claude Code поддерживает несколько механизмов доставки управляемых параметров. Все используют один и тот же формат JSON и не могут быть переопределены параметрами пользователя или проекта:

85 

86 * **Параметры, управляемые сервером**: доставляются с серверов Anthropic через консоль администратора Claude.ai. См. [параметры, управляемые сервером](/ru/server-managed-settings).

87 * **Политики MDM/OS-уровня**: доставляются через встроенное управление устройствами на macOS и Windows:

88 * macOS: домен управляемых предпочтений `com.anthropic.claudecode`. Ключи верхнего уровня plist отражают `managed-settings.json`, с вложенными параметрами как словари и массивы как plist массивы. Развертывание через профили конфигурации в Jamf, Iru (Kandji) или аналогичных инструментах MDM.

89 * Windows: ключ реестра `HKLM\SOFTWARE\Policies\ClaudeCode` со значением `Settings` (REG\_SZ или REG\_EXPAND\_SZ), содержащим JSON (развернуто через групповую политику или Intune)

90 * Windows (уровень пользователя): `HKCU\SOFTWARE\Policies\ClaudeCode` (наименьший приоритет политики, используется только при отсутствии источника на уровне администратора)

91 * **На основе файлов**: `managed-settings.json` и `managed-mcp.json`, развернутые в системные каталоги:

92 

93 * macOS: `/Library/Application Support/ClaudeCode/`

94 * Linux и WSL: `/etc/claude-code/`

95 * Windows: `C:\Program Files\ClaudeCode\`

96 

97 <Warning>

98 Устаревший путь Windows `C:\ProgramData\ClaudeCode\managed-settings.json` больше не поддерживается с версии v2.1.75. Администраторы, которые развернули параметры в этом местоположении, должны перенести файлы в `C:\Program Files\ClaudeCode\managed-settings.json`.

99 </Warning>

100 

101 Управляемые параметры на основе файлов также поддерживают каталог drop-in в `managed-settings.d/` в том же системном каталоге рядом с `managed-settings.json`. Это позволяет отдельным командам развертывать независимые фрагменты политики без координации редактирования одного файла.

102 

103 Следуя соглашению systemd, `managed-settings.json` объединяется первым как база, затем все файлы `*.json` в каталоге drop-in сортируются в алфавитном порядке и объединяются сверху. Более поздние файлы переопределяют более ранние для скалярных значений; массивы объединяются и дедублицируются; объекты глубоко объединяются. Скрытые файлы, начинающиеся с `.`, игнорируются.

104 

105 Используйте числовые префиксы для управления порядком объединения, например `10-telemetry.json` и `20-security.json`.

106 

107 См. [управляемые параметры](/ru/permissions#managed-only-settings) и [Управляемая конфигурация MCP](/ru/mcp#managed-mcp-configuration) для получения подробной информации.

108 

109 Этот [репозиторий](https://github.com/anthropics/claude-code/tree/main/examples/mdm) включает начальные шаблоны развертывания для Jamf, Iru (Kandji), Intune и Group Policy. Используйте их как отправные точки и адаптируйте их в соответствии с вашими потребностями.

110 

111 <Note>

112 Управляемые развертывания также могут ограничивать **добавления на marketplace plugins** с помощью `strictKnownMarketplaces`. Для получения дополнительной информации см. [Управляемые ограничения marketplace](/ru/plugin-marketplaces#managed-marketplace-restrictions).

113 </Note>

114* **Другая конфигурация** хранится в `~/.claude.json`. Этот файл содержит ваш сеанс OAuth, конфигурации [MCP server](/ru/mcp) для областей пользователя и локальной области, состояние для каждого проекта (разрешенные инструменты, параметры доверия) и различные кэши. MCP servers с областью проекта хранятся отдельно в `.mcp.json`.

115 

116<Note>

117 Claude Code автоматически создает резервные копии файлов конфигурации с временными метками и сохраняет пять самых последних резервных копий для предотвращения потери данных.

118</Note>

119 

120```JSON Пример settings.json theme={null}

121{

122 "$schema": "https://json.schemastore.org/claude-code-settings.json",

123 "permissions": {

124 "allow": [

125 "Bash(npm run lint)",

126 "Bash(npm run test *)",

127 "Read(~/.zshrc)"

128 ],

129 "deny": [

130 "Bash(curl *)",

131 "Read(./.env)",

132 "Read(./.env.*)",

133 "Read(./secrets/**)"

134 ]

135 },

136 "env": {

137 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

138 "OTEL_METRICS_EXPORTER": "otlp"

139 },

140 "companyAnnouncements": [

141 "Welcome to Acme Corp! Review our code guidelines at docs.acme.com",

142 "Reminder: Code reviews required for all PRs",

143 "New security policy in effect"

144 ]

145}

146```

147 

148Строка `$schema` в примере выше указывает на [официальную JSON-схему](https://json.schemastore.org/claude-code-settings.json) для параметров Claude Code. Добавление ее в ваш `settings.json` включает автодополнение и встроенную валидацию в VS Code, Cursor и любом другом редакторе, поддерживающем валидацию JSON-схемы.

149 

150Опубликованная схема обновляется периодически и может не включать параметры, добавленные в самых последних выпусках CLI, поэтому предупреждение валидации о недавно задокументированном поле не обязательно означает, что ваша конфигурация недействительна.

151 

152### Доступные параметры

153 

154`settings.json` поддерживает ряд опций:

155 

156| Ключ | Описание | Пример |

157| :-------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |

158| `agent` | Запустить основной поток как именованный subagent. Применяет системный запрос, ограничения инструментов и модель этого subagent. См. [Явно вызывать subagents](/ru/sub-agents#invoke-subagents-explicitly) | `"code-reviewer"` |

159| `allowedChannelPlugins` | (Только управляемые параметры) Список разрешений channel plugins, которые могут отправлять сообщения. Заменяет список разрешений Anthropic по умолчанию при установке. Не определено = вернуться к значению по умолчанию, пустой массив = блокировать все channel plugins. Требует `channelsEnabled: true`. См. [Ограничить, какие channel plugins могут запускаться](/ru/channels#restrict-which-channel-plugins-can-run) | `[{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]` |

160| `allowedHttpHookUrls` | Список разрешенных URL-шаблонов, на которые могут быть направлены HTTP hooks. Поддерживает `*` как подстановочный знак. При установке hooks с несовпадающими URL-адресами блокируются. Не определено = без ограничений, пустой массив = блокировать все HTTP hooks. Массивы объединяются в разных источниках параметров. См. [Конфигурация Hook](#hook-configuration) | `["https://hooks.example.com/*"]` |

161| `allowedMcpServers` | При установке в managed-settings.json, список разрешений MCP servers, которые пользователи могут настроить. Не определено = без ограничений, пустой массив = блокировка. Применяется ко всем областям. Список запретов имеет приоритет. См. [Управляемая конфигурация MCP](/ru/mcp#managed-mcp-configuration) | `[{ "serverName": "github" }]` |

162| `allowManagedHooksOnly` | (Только управляемые параметры) Загружаются только управляемые hooks, SDK hooks и hooks из plugins, принудительно включенных в управляемых параметрах `enabledPlugins`. Пользовательские, проектные и все остальные plugin hooks блокируются. См. [Конфигурация Hook](#hook-configuration) | `true` |

163| `allowManagedMcpServersOnly` | (Только управляемые параметры) Только `allowedMcpServers` из управляемых параметров учитываются. `deniedMcpServers` по-прежнему объединяется из всех источников. Пользователи по-прежнему могут добавлять MCP servers, но применяется только определенный администратором список разрешений. См. [Управляемая конфигурация MCP](/ru/mcp#managed-mcp-configuration) | `true` |

164| `allowManagedPermissionRulesOnly` | (Только управляемые параметры) Предотвратить определение правил разрешений `allow`, `ask` или `deny` в параметрах пользователя и проекта. Применяются только правила в управляемых параметрах. См. [Параметры только для управляемых](/ru/permissions#managed-only-settings) | `true` |

165| `alwaysThinkingEnabled` | Включить [расширенное мышление](/ru/model-config#extended-thinking) по умолчанию для всех сеансов. Обычно настраивается через команду `/config` вместо прямого редактирования | `true` |

166| `apiKeyHelper` | Пользовательский скрипт, который будет выполнен в `/bin/sh`, для создания значения аутентификации. Это значение будет отправлено как заголовки `X-Api-Key` и `Authorization: Bearer` для запросов модели | `/bin/generate_temp_api_key.sh` |

167| `attribution` | Настройте атрибуцию для коммитов git и pull requests. См. [Параметры атрибуции](#attribution-settings) | `{"commit": "🤖 Generated with Claude Code", "pr": ""}` |

168| `autoMemoryDirectory` | Пользовательский каталог для хранения [автоматической памяти](/ru/memory#storage-location). Принимает абсолютный путь или путь с префиксом `~/`. Принимается из политики и параметров пользователя, а также из флага `--settings`. Не принимается из параметров проекта или локальных параметров, так как клонированный репозиторий может предоставить любой файл для перенаправления записей памяти в чувствительные местоположения | `"~/my-memory-dir"` |

169| `autoMode` | Настройте, что классификатор [автоматического режима](/ru/permission-modes#eliminate-prompts-with-auto-mode) блокирует и разрешает. Содержит массивы `environment`, `allow` и `soft_deny` правил в виде текста. Включите буквальную строку `"$defaults"` в массив для наследования встроенных правил в этой позиции. См. [Настройте автоматический режим](/ru/auto-mode-config). Не читается из общих параметров проекта | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |

170| `autoScrollEnabled` | В [fullscreen rendering](/ru/fullscreen), следить за новым выводом в конец разговора. По умолчанию: `true`. Появляется в `/config` как **Auto-scroll**. Запросы разрешений по-прежнему прокручиваются в поле зрения, когда это отключено | `false` |

171| `autoUpdatesChannel` | Канал выпуска для отслеживания обновлений. Используйте `"stable"` для версии, которая обычно примерно на неделю старше и пропускает версии с серьезными регрессиями, или `"latest"` (по умолчанию) для самого последнего выпуска | `"stable"` |

172| `availableModels` | Ограничить, какие модели пользователи могут выбрать через `/model`, `--model` или `ANTHROPIC_MODEL`. Не влияет на опцию Default. См. [Ограничить выбор модели](/ru/model-config#restrict-model-selection) | `["sonnet", "haiku"]` |

173| `awaySummaryEnabled` | Показать одностроковое резюме сеанса при возврате в терминал после нескольких минут отсутствия. Установите на `false` или отключите Session recap в `/config` для отключения. То же самое, что [`CLAUDE_CODE_ENABLE_AWAY_SUMMARY`](/ru/env-vars) | `true` |

174| `awsAuthRefresh` | Пользовательский скрипт, который изменяет каталог `.aws` (см. [расширенная конфигурация учетных данных](/ru/amazon-bedrock#advanced-credential-configuration)) | `aws sso login --profile myprofile` |

175| `awsCredentialExport` | Пользовательский скрипт, который выводит JSON с учетными данными AWS (см. [расширенная конфигурация учетных данных](/ru/amazon-bedrock#advanced-credential-configuration)) | `/bin/generate_aws_grant.sh` |

176| `blockedMarketplaces` | (Только управляемые параметры) Список запретов источников marketplace. Применяется при добавлении marketplace и при установке, обновлении, обновлении и автоматическом обновлении plugin, поэтому marketplace, добавленный до установки политики, не может быть использован для получения plugins. Заблокированные источники проверяются перед загрузкой, поэтому они никогда не касаются файловой системы. См. [Управляемые ограничения marketplace](/ru/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "untrusted/plugins" }]` |

177| `channelsEnabled` | (Только управляемые параметры) Разрешить [channels](/ru/channels) для пользователей Team и Enterprise. Не установлено или `false` блокирует доставку сообщений канала независимо от того, что пользователи передают в `--channels` | `true` |

178| `cleanupPeriodDays` | Сеансы, неактивные дольше этого периода, удаляются при запуске (по умолчанию: 30 дней, минимум 1). Установка на `0` отклоняется с ошибкой валидации. Также контролирует возрастной порог для автоматического удаления [orphaned subagent worktrees](/ru/worktrees#clean-up-worktrees) при запуске. Чтобы полностью отключить запись стенограмм, установите переменную окружения [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/ru/env-vars), или в неинтерактивном режиме (`-p`) используйте флаг `--no-session-persistence` или опцию SDK `persistSession: false`. | `20` |

179| `companyAnnouncements` | Объявление для отображения пользователям при запуске. Если предоставлено несколько объявлений, они будут циклически отображаться случайным образом. | `["Welcome to Acme Corp! Review our code guidelines at docs.acme.com"]` |

180| `defaultShell` | Оболочка по умолчанию для команд `!` в поле ввода. Принимает `"bash"` (по умолчанию) или `"powershell"`. Установка `"powershell"` направляет интерактивные команды `!` через PowerShell на Windows. Требует `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. См. [Инструмент PowerShell](/ru/tools-reference#powershell-tool) | `"powershell"` |

181| `deniedMcpServers` | При установке в managed-settings.json, список запретов MCP servers, которые явно заблокированы. Применяется ко всем областям, включая управляемые servers. Список запретов имеет приоритет над списком разрешений. См. [Управляемая конфигурация MCP](/ru/mcp#managed-mcp-configuration) | `[{ "serverName": "filesystem" }]` |

182| `disableAllHooks` | Отключить все [hooks](/ru/hooks) и любую пользовательскую [строку состояния](/ru/statusline) | `true` |

183| `disableAutoMode` | Установите на `"disable"`, чтобы предотвратить активацию [автоматического режима](/ru/permission-modes#eliminate-prompts-with-auto-mode). Удаляет `auto` из цикла `Shift+Tab` и отклоняет `--permission-mode auto` при запуске. Наиболее полезно в [управляемых параметрах](/ru/permissions#managed-settings), где пользователи не могут его переопределить | `"disable"` |

184| `disableDeepLinkRegistration` | Установите на `"disable"`, чтобы предотвратить регистрацию Claude Code обработчика протокола `claude-cli://` с операционной системой при запуске. Deep links позволяют внешним инструментам открыть сеанс Claude Code с предварительно заполненным запросом. Полезно в окружениях, где регистрация обработчика протокола ограничена или управляется отдельно | `"disable"` |

185| `disabledMcpjsonServers` | Список конкретных MCP servers из файлов `.mcp.json` для отклонения | `["filesystem"]` |

186| `disableSkillShellExecution` | Отключить встроенное выполнение shell для `` !`...` `` и ` ```! ` блоков в [skills](/ru/skills) и пользовательских команд из источников пользователя, проекта, plugin или дополнительного каталога. Команды заменяются на `[shell command execution disabled by policy]` вместо выполнения. Встроенные и управляемые skills не затронуты. Наиболее полезно в [управляемых параметрах](/ru/permissions#managed-settings), где пользователи не могут его переопределить | `true` |

187| `editorMode` | Режим сочетания клавиш для входного приглашения: `"normal"` или `"vim"`. По умолчанию: `"normal"`. Появляется в `/config` как **Editor mode** | `"vim"` |

188| `effortLevel` | Сохранить [уровень усилий](/ru/model-config#adjust-effort-level) между сеансами. Принимает `"low"`, `"medium"`, `"high"` или `"xhigh"`. Записывается автоматически при запуске `/effort` с одним из этих значений. См. [Отрегулировать уровень усилий](/ru/model-config#adjust-effort-level) для поддерживаемых моделей | `"xhigh"` |

189| `enableAllProjectMcpServers` | Автоматически одобрить все MCP servers, определенные в файлах проекта `.mcp.json` | `true` |

190| `enabledMcpjsonServers` | Список конкретных MCP servers из файлов `.mcp.json` для одобрения | `["memory", "github"]` |

191| `env` | Переменные окружения, которые будут применены к каждому сеансу | `{"FOO": "bar"}` |

192| `fastModePerSessionOptIn` | Когда `true`, быстрый режим не сохраняется между сеансами. Каждый сеанс начинается с отключенным быстрым режимом, требуя от пользователей включить его с помощью `/fast`. Предпочтение быстрого режима пользователя по-прежнему сохраняется. См. [Требовать согласие для каждого сеанса](/ru/fast-mode#require-per-session-opt-in) | `true` |

193| `feedbackSurveyRate` | Вероятность (0–1) того, что [опрос качества сеанса](/ru/data-usage#session-quality-surveys) появится при наличии условий. Установите на `0`, чтобы полностью подавить. Полезно при использовании Bedrock, Vertex или Foundry, где частота выборки по умолчанию не применяется | `0.05` |

194| `fileSuggestion` | Настройте пользовательский скрипт для автодополнения файлов `@`. См. [Параметры предложения файлов](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |

195| `forceLoginMethod` | Используйте `claudeai` для ограничения входа учетными записями Claude.ai, `console` для ограничения входа учетными записями Claude Console (выставление счетов за использование API) | `claudeai` |

196| `forceLoginOrgUUID` | Требовать, чтобы вход принадлежал определенной организации. Принимает одну строку UUID, которая также предварительно выбирает эту организацию во время входа, или массив UUID, где любая указанная организация принимается без предварительного выбора. При установке в управляемых параметрах вход не удается, если аутентифицированная учетная запись не принадлежит указанной организации; пустой массив не удается закрыто и блокирует вход с сообщением о неправильной конфигурации | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` или `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |

197| `forceRemoteSettingsRefresh` | (Только управляемые параметры) Блокировать запуск CLI до тех пор, пока удаленные управляемые параметры не будут свежо получены с сервера. Если получение не удается, CLI выходит вместо продолжения с кэшированными или отсутствующими параметрами. Когда не установлено, запуск продолжается без ожидания удаленных параметров. См. [fail-closed enforcement](/ru/server-managed-settings#enforce-fail-closed-startup) | `true` |

198| `hooks` | Настройте пользовательские команды для запуска при событиях жизненного цикла. См. [документацию hooks](/ru/hooks) для формата | См. [hooks](/ru/hooks) |

199| `httpHookAllowedEnvVars` | Список разрешенных имен переменных окружения, которые HTTP hooks могут интерполировать в заголовки. При установке эффективный `allowedEnvVars` каждого hook является пересечением с этим списком. Не определено = без ограничений. Массивы объединяются в разных источниках параметров. См. [Конфигурация Hook](#hook-configuration) | `["MY_TOKEN", "HOOK_SECRET"]` |

200| `includeCoAuthoredBy` | **Устарело**: Используйте `attribution` вместо этого. Включать ли строку `co-authored-by Claude` в коммиты git и pull requests (по умолчанию: `true`) | `false` |

201| `includeGitInstructions` | Включить встроенные инструкции рабочего процесса коммита и PR и снимок статуса git в системный запрос Claude (по умолчанию: `true`). Установите на `false`, чтобы удалить оба, например при использовании собственных skills рабочего процесса git. Переменная окружения `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` имеет приоритет над этим параметром при установке | `false` |

202| `language` | Настройте предпочитаемый язык ответов Claude (например, `"japanese"`, `"spanish"`, `"french"`). Claude будет отвечать на этом языке по умолчанию. Также устанавливает язык [голосового диктанта](/ru/voice-dictation#change-the-dictation-language) | `"japanese"` |

203| `minimumVersion` | Предотвратить понижение версии автоматического обновления ниже определенной версии. Переключение с канала `"latest"` на `"stable"` через `/config` предлагает вам остаться на текущей версии или разрешить понижение. Выбор остаться устанавливает это значение. Также полезно в [управляемых параметрах](/ru/permissions#managed-settings) для закрепления организационного минимума | `"2.1.100"` |

204| `model` | Переопределить модель по умолчанию для использования в Claude Code | `"claude-sonnet-4-6"` |

205| `modelOverrides` | Сопоставить ID моделей Anthropic с ID моделей, специфичными для поставщика, такими как ARN профилей вывода Bedrock. Каждая запись средства выбора модели использует свое сопоставленное значение при вызове API поставщика. См. [Переопределить ID моделей для каждой версии](/ru/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |

206| `otelHeadersHelper` | Скрипт для создания динамических заголовков OpenTelemetry. Запускается при запуске и периодически (см. [Динамические заголовки](/ru/monitoring-usage#dynamic-headers)) | `/bin/generate_otel_headers.sh` |

207| `outputStyle` | Настройте стиль вывода для корректировки системного запроса. См. [документацию стилей вывода](/ru/output-styles) | `"Explanatory"` |

208| `permissions` | См. таблицу ниже для структуры разрешений. | |

209| `plansDirectory` | Настройте, где хранятся файлы плана. Путь относительно корня проекта. По умолчанию: `~/.claude/plans` | `"./plans"` |

210| `pluginTrustMessage` | (Только управляемые параметры) Пользовательское сообщение, добавленное к предупреждению о доверии plugin, показываемому перед установкой. Используйте это для добавления контекста, специфичного для организации, например для подтверждения того, что plugins из вашего внутреннего marketplace проверены. | `"All plugins from our marketplace are approved by IT"` |

211| `preferredNotifChannel` | Метод для уведомлений о завершении задачи и запросов разрешения: `"auto"`, `"terminal_bell"`, `"iterm2"`, `"iterm2_with_bell"`, `"kitty"`, `"ghostty"` или `"notifications_disabled"`. По умолчанию: `"auto"`, который отправляет уведомление рабочего стола в iTerm2, Ghostty и Kitty и ничего не делает в других терминалах. Установите `"terminal_bell"` для звонка в любом терминале. Появляется в `/config` как **Notifications**. См. [Получить звонок терминала или уведомление](/ru/terminal-config#get-a-terminal-bell-or-notification) | `"terminal_bell"` |

212| `prefersReducedMotion` | Уменьшить или отключить анимацию пользовательского интерфейса (спиннеры, shimmer, эффекты вспышки) для доступности | `true` |

213| `prUrlTemplate` | Шаблон URL для значка PR, показываемого в нижнем колонтитуле и в сводках результатов инструмента. Заменяет `{host}`, `{owner}`, `{repo}`, `{number}` и `{url}` из URL PR, сообщаемого `gh`. Используйте для указания ссылок PR на внутренний инструмент проверки кода вместо `github.com`. Не влияет на автоссылки `#123` в прозе Claude | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` |

214| `respectGitignore` | Контролировать, соблюдает ли средство выбора файлов `@` шаблоны `.gitignore`. Когда `true` (по умолчанию), файлы, соответствующие шаблонам `.gitignore`, исключаются из предложений | `false` |

215| `showClearContextOnPlanAccept` | Показать опцию "очистить контекст" на экране принятия плана. По умолчанию: `false`. Установите на `true`, чтобы восстановить опцию | `true` |

216| `showThinkingSummaries` | Показать [расширенное мышление](/ru/model-config#extended-thinking) резюме в интерактивных сеансах. Когда не установлено или `false` (по умолчанию в интерактивном режиме), блоки мышления редактируются API и показываются как свернутая заглушка. Редактирование изменяет только то, что вы видите, а не то, что генерирует модель: чтобы снизить расходы на мышление, [снизьте бюджет или отключите мышление](/ru/model-config#extended-thinking) вместо этого. Неинтерактивный режим (`-p`) и вызывающие SDK всегда получают резюме независимо от этого параметра | `true` |

217| `showTurnDuration` | Показывать сообщения о продолжительности хода после ответов, например "Cooked for 1m 6s". По умолчанию: `true`. Появляется в `/config` как **Show turn duration** | `false` |

218| `skipWebFetchPreflight` | Пропустить [проверку безопасности домена WebFetch](/ru/data-usage#webfetch-domain-safety-check), которая отправляет каждое запрашиваемое имя хоста на `api.anthropic.com` перед выборкой. Установите на `true` в окружениях, которые блокируют трафик к Anthropic, таких как развертывания Bedrock, Vertex AI или Foundry с ограничивающим исходящим трафиком. При пропуске WebFetch пытается любой URL без консультации со списком блокировок | `true` |

219| `spinnerTipsEnabled` | Показывать советы в спиннере, пока Claude работает. Установите на `false`, чтобы отключить советы (по умолчанию: `true`) | `false` |

220| `spinnerTipsOverride` | Переопределить советы спиннера пользовательскими строками. `tips`: массив строк советов. `excludeDefault`: если `true`, показывать только пользовательские советы; если `false` или отсутствует, пользовательские советы объединяются со встроенными советами | `{ "excludeDefault": true, "tips": ["Use our internal tool X"] }` |

221| `spinnerVerbs` | Настройте глаголы действия, показываемые в спиннере и сообщениях о продолжительности хода. Установите `mode` на `"replace"`, чтобы использовать только ваши глаголы, или `"append"`, чтобы добавить их к значениям по умолчанию | `{"mode": "append", "verbs": ["Pondering", "Crafting"]}` |

222| `sshConfigs` | SSH подключения для отображения в раскрывающемся списке окружения [Desktop](/ru/desktop#pre-configure-ssh-connections-for-your-team). Каждая запись требует `id`, `name` и `sshHost`; `sshPort`, `sshIdentityFile` и `startDirectory` являются необязательными. При установке в управляемых параметрах подключения доступны только для чтения для пользователей. Читается только из управляемых и пользовательских параметров | `[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]` |

223| `statusLine` | Настройте пользовательскую строку состояния для отображения контекста. См. [документацию `statusLine`](/ru/statusline) | `{"type": "command", "command": "~/.claude/statusline.sh"}` |

224| `strictKnownMarketplaces` | (Только управляемые параметры) Список разрешений marketplaces plugins. Не определено = без ограничений, пустой массив = блокировка. Применяется при добавлении marketplace и при установке, обновлении, обновлении и автоматическом обновлении plugin, поэтому marketplace, добавленный до установки политики, не может быть использован для получения plugins. Заблокированные источники проверяются перед загрузкой, поэтому они никогда не касаются файловой системы. См. [Управляемые ограничения marketplace](/ru/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |

225| `teammateMode` | Как отображаются товарищи по [команде агентов](/ru/agent-teams): `auto` (выбирает разделенные панели в tmux или iTerm2, в процессе в противном случае), `in-process` или `tmux`. См. [выбрать режим отображения](/ru/agent-teams#choose-a-display-mode) | `"in-process"` |

226| `terminalProgressBarEnabled` | Показывать полосу прогресса терминала в поддерживаемых терминалах: ConEmu, Ghostty 1.2.0+ и iTerm2 3.6.6+. По умолчанию: `true`. Появляется в `/config` как **Terminal progress bar** | `false` |

227| `tui` | Средство визуализации Terminal UI. Используйте `"fullscreen"` для безмерцающего [alt-screen renderer](/ru/fullscreen) с виртуализированной прокруткой. Используйте `"default"` для классического main-screen renderer. Установите через `/tui` | `"fullscreen"` |

228| `useAutoModeDuringPlan` | Использует ли Plan Mode семантику автоматического режима, когда автоматический режим доступен. По умолчанию: `true`. Не читается из общих параметров проекта. Появляется в `/config` как "Use auto mode during plan" | `false` |

229| `viewMode` | Режим просмотра стенограммы по умолчанию при запуске: `"default"`, `"verbose"` или `"focus"`. Переопределяет липкий выбор `/focus` при установке | `"verbose"` |

230| `voice` | Параметры [голосового диктанта](/ru/voice-dictation): `enabled` включает диктант, `mode` выбирает `"hold"` или `"tap"`, и `autoSubmit` отправляет запрос при отпускании клавиши в режиме hold. Записывается автоматически при запуске `/voice`. Требует учетную запись Claude.ai | `{ "enabled": true, "mode": "tap" }` |

231| `voiceEnabled` | Устаревший псевдоним для `voice.enabled`. Предпочитайте объект `voice` | `true` |

232| `wslInheritsWindowsSettings` | (Только управляемые параметры Windows) Когда `true`, Claude Code на WSL читает управляемые параметры из цепочки политик Windows в дополнение к `/etc/claude-code`, с приоритетом источников Windows. Учитывается только при установке в ключе реестра HKLM или `C:\Program Files\ClaudeCode\managed-settings.json`, оба из которых требуют администратора Windows для записи. Чтобы политика HKCU также применялась на WSL, флаг должен быть дополнительно установлен в самом HKCU. Не влияет на нативный Windows | `true` |

233 

234### Параметры глобальной конфигурации

235 

236Эти параметры хранятся в `~/.claude.json` вместо `settings.json`. Добавление их в `settings.json` вызовет ошибку валидации схемы.

237 

238<Note>

239 Версии до v2.1.119 также хранят `autoScrollEnabled`, `editorMode`, `showTurnDuration`, `teammateMode` и `terminalProgressBarEnabled` здесь вместо `settings.json`.

240</Note>

241 

242| Ключ | Описание | Пример |

243| :------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ |

244| `autoConnectIde` | Автоматически подключаться к запущенной IDE при запуске Claude Code из внешнего терминала. По умолчанию: `false`. Появляется в `/config` как **Auto-connect to IDE (external terminal)** при запуске вне терминала VS Code или JetBrains | `true` |

245| `autoInstallIdeExtension` | Автоматически устанавливать расширение Claude Code IDE при запуске из терминала VS Code. По умолчанию: `true`. Появляется в `/config` как **Auto-install IDE extension** при запуске внутри терминала VS Code или JetBrains. Вы также можете установить переменную окружения [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](/ru/env-vars) | `false` |

246| `externalEditorContext` | Добавить предыдущий ответ Claude как контекст с комментариями `#` при открытии внешнего редактора с помощью `Ctrl+G`. По умолчанию: `false`. Появляется в `/config` как **Show last response in external editor** | `true` |

247 

248### Параметры Worktree

249 

250Настройте, как `--worktree` создает и управляет git worktrees. Используйте эти параметры для уменьшения использования диска и времени запуска в больших монорепозиториях.

251 

252| Ключ | Описание | Пример |

253| :---------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------ |

254| `worktree.symlinkDirectories` | Каталоги для создания символических ссылок из основного репозитория в каждый worktree, чтобы избежать дублирования больших каталогов на диске. По умолчанию никакие каталоги не создаются символическими ссылками | `["node_modules", ".cache"]` |

255| `worktree.sparsePaths` | Каталоги для проверки в каждом worktree через git sparse-checkout (режим cone). На диск записываются только перечисленные пути, что быстрее в больших монорепозиториях | `["packages/my-app", "shared/utils"]` |

256 

257Чтобы скопировать файлы, игнорируемые gitignore, такие как `.env`, в новые worktrees, используйте [файл `.worktreeinclude`](/ru/worktrees#copy-gitignored-files-into-worktrees) в корне вашего проекта вместо параметра.

258 

259### Параметры разрешений

260 

261| Ключи | Описание | Пример |

262| :---------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |

263| `allow` | Массив правил разрешений для разрешения использования инструмента. См. [Синтаксис правила разрешения](#permission-rule-syntax) ниже для деталей сопоставления шаблонов | `[ "Bash(git diff *)" ]` |

264| `ask` | Массив правил разрешений для запроса подтверждения при использовании инструмента. См. [Синтаксис правила разрешения](#permission-rule-syntax) ниже | `[ "Bash(git push *)" ]` |

265| `deny` | Массив правил разрешений для запрета использования инструмента. Используйте это для исключения чувствительных файлов из доступа Claude Code. См. [Синтаксис правила разрешения](#permission-rule-syntax) и [Ограничения разрешений Bash](/ru/permissions#tool-specific-permission-rules) | `[ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]` |

266| `additionalDirectories` | Дополнительные [рабочие каталоги](/ru/permissions#working-directories) для доступа к файлам. Большинство конфигурации `.claude/` [не обнаруживается](/ru/permissions#additional-directories-grant-file-access-not-configuration) из этих каталогов | `[ "../docs/" ]` |

267| `defaultMode` | Режим [разрешения](/ru/permission-modes) по умолчанию при открытии Claude Code. Допустимые значения: `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`. Флаг CLI `--permission-mode` переопределяет этот параметр для одного сеанса | `"acceptEdits"` |

268| `disableBypassPermissionsMode` | Установите на `"disable"`, чтобы предотвратить активацию режима `bypassPermissions`. Это отключает флаг командной строки `--dangerously-skip-permissions`. Обычно размещается в [управляемых параметрах](/ru/permissions#managed-settings) для применения организационной политики, но работает из любой области | `"disable"` |

269| `skipDangerousModePermissionPrompt` | Пропустить подтверждение, показываемое перед входом в режим обхода разрешений через `--dangerously-skip-permissions` или `defaultMode: "bypassPermissions"`. Игнорируется при установке в параметрах проекта (`.claude/settings.json`) для предотвращения автоматического обхода подтверждения ненадежными репозиториями | `true` |

270 

271### Синтаксис правила разрешения

272 

273Правила разрешения следуют формату `Tool` или `Tool(specifier)`. Правила оцениваются по порядку: сначала правила deny, затем ask, затем allow. Первое совпадающее правило побеждает.

274 

275Быстрые примеры:

276 

277| Правило | Эффект |

278| :----------------------------- | :----------------------------------------------- |

279| `Bash` | Соответствует всем командам Bash |

280| `Bash(npm run *)` | Соответствует командам, начинающимся с `npm run` |

281| `Read(./.env)` | Соответствует чтению файла `.env` |

282| `WebFetch(domain:example.com)` | Соответствует запросам fetch к example.com |

283 

284Для полного справочника синтаксиса правил, включая поведение подстановочных знаков, шаблоны, специфичные для инструментов, для Read, Edit, WebFetch, MCP и Agent правил, а также ограничения безопасности шаблонов Bash, см. [Синтаксис правила разрешения](/ru/permissions#permission-rule-syntax).

285 

286### Параметры Sandbox

287 

288Настройте расширенное поведение sandboxing. Sandboxing изолирует команды bash от вашей файловой системы и сети. См. [Sandboxing](/ru/sandboxing) для деталей.

289 

290| Ключи | Описание | Пример |

291| :------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------- |

292| `enabled` | Включить bash sandboxing (macOS, Linux и WSL2). По умолчанию: false | `true` |

293| `failIfUnavailable` | Выход с ошибкой при запуске, если `sandbox.enabled` равно true, но sandbox не может запуститься (отсутствуют зависимости или неподдерживаемая платформа). Когда false (по умолчанию), выводится предупреждение и команды выполняются без sandbox. Предназначено для развертываний управляемых параметров, требующих sandboxing как жесткого шлюза | `true` |

294| `autoAllowBashIfSandboxed` | Автоматически одобрить команды bash при sandboxing. По умолчанию: true | `true` |

295| `excludedCommands` | Команды, которые должны выполняться вне sandbox | `["docker *"]` |

296| `allowUnsandboxedCommands` | Разрешить командам выполняться вне sandbox через параметр `dangerouslyDisableSandbox`. Когда установлено на `false`, люк `dangerouslyDisableSandbox` полностью отключен и все команды должны выполняться в sandbox (или быть в `excludedCommands`). Полезно для корпоративных политик, требующих строгого sandboxing. По умолчанию: true | `false` |

297| `filesystem.allowWrite` | Дополнительные пути, где команды в sandbox могут писать. Массивы объединяются во всех областях параметров: пути пользователя, проекта и управляемые пути объединяются, не заменяются. Также объединяются с путями из правил разрешения `Edit(...)`. См. [префиксы пути sandbox](#sandbox-path-prefixes) ниже. | `["/tmp/build", "~/.kube"]` |

298| `filesystem.denyWrite` | Пути, где команды в sandbox не могут писать. Массивы объединяются во всех областях параметров. Также объединяются с путями из правил разрешения `Edit(...)`. | `["/etc", "/usr/local/bin"]` |

299| `filesystem.denyRead` | Пути, где команды в sandbox не могут читать. Массивы объединяются во всех областях параметров. Также объединяются с путями из правил разрешения `Read(...)`. | `["~/.aws/credentials"]` |

300| `filesystem.allowRead` | Пути для повторного разрешения чтения в пределах регионов `denyRead`. Имеет приоритет над `denyRead`. Массивы объединяются во всех областях параметров. Используйте это для создания шаблонов доступа для чтения только рабочей области. | `["."]` |

301| `filesystem.allowManagedReadPathsOnly` | (Только управляемые параметры) Только пути `allowRead` из управляемых параметров учитываются. `denyRead` по-прежнему объединяется из всех источников. По умолчанию: false | `true` |

302| `network.allowUnixSockets` | (Только macOS) Пути Unix socket, доступные в sandbox. Игнорируется на Linux и WSL2, где фильтр seccomp не может проверить пути socket; используйте `allowAllUnixSockets` вместо этого. | `["~/.ssh/agent-socket"]` |

303| `network.allowAllUnixSockets` | Разрешить все подключения Unix socket в sandbox. На Linux и WSL2 это единственный способ разрешить Unix sockets, так как он пропускает фильтр seccomp, который в противном случае блокирует вызовы `socket(AF_UNIX, ...)`. По умолчанию: false | `true` |

304| `network.allowLocalBinding` | Разрешить привязку к портам localhost (только macOS). По умолчанию: false | `true` |

305| `network.allowMachLookup` | Дополнительные имена сервисов XPC/Mach, которые sandbox может искать (только macOS). Поддерживает один завершающий `*` для сопоставления префикса. Требуется для инструментов, которые взаимодействуют через XPC, таких как iOS Simulator или Playwright. | `["com.apple.coresimulator.*"]` |

306| `network.allowedDomains` | Массив доменов для разрешения исходящего сетевого трафика. Поддерживает подстановочные знаки (например, `*.example.com`). | `["github.com", "*.npmjs.org"]` |

307| `network.deniedDomains` | Массив доменов для блокировки исходящего сетевого трафика. Поддерживает тот же синтаксис подстановочных знаков, что и `allowedDomains`. Имеет приоритет над `allowedDomains` при совпадении обоих. Объединяется из всех источников параметров независимо от `allowManagedDomainsOnly`. | `["sensitive.cloud.example.com"]` |

308| `network.allowManagedDomainsOnly` | (Только управляемые параметры) Только `allowedDomains` и правила разрешения `WebFetch(domain:...)` из управляемых параметров учитываются. Домены из параметров пользователя, проекта и локальной области игнорируются. Неразрешенные домены автоматически блокируются без запроса пользователя. Запрещенные домены по-прежнему учитываются из всех источников. По умолчанию: false | `true` |

309| `network.httpProxyPort` | Порт HTTP прокси, используемый, если вы хотите использовать собственный прокси. Если не указано, Claude запустит собственный прокси. | `8080` |

310| `network.socksProxyPort` | Порт SOCKS5 прокси, используемый, если вы хотите использовать собственный прокси. Если не указано, Claude запустит собственный прокси. | `8081` |

311| `enableWeakerNestedSandbox` | Включить более слабый sandbox для непривилегированных окружений Docker (только Linux и WSL2). **Снижает безопасность.** По умолчанию: false | `true` |

312| `enableWeakerNetworkIsolation` | (Только macOS) Разрешить доступ к системной службе доверия TLS (`com.apple.trustd.agent`) в sandbox. Требуется для инструментов на основе Go, таких как `gh`, `gcloud` и `terraform`, для проверки сертификатов TLS при использовании `httpProxyPort` с MITM прокси и пользовательским CA. **Снижает безопасность** путем открытия потенциального пути утечки данных. По умолчанию: false | `true` |

313 

314#### Префиксы пути Sandbox

315 

316Пути в `filesystem.allowWrite`, `filesystem.denyWrite`, `filesystem.denyRead` и `filesystem.allowRead` поддерживают эти префиксы:

317 

318| Префикс | Значение | Пример |

319| :-------------------- | :----------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------- |

320| `/` | Абсолютный путь от корня файловой системы | `/tmp/build` остается `/tmp/build` |

321| `~/` | Относительно домашнего каталога | `~/.kube` становится `$HOME/.kube` |

322| `./` или без префикса | Относительно корня проекта для параметров проекта, или к `~/.claude` для параметров пользователя | `./output` в `.claude/settings.json` разрешается в `<project-root>/output` |

323 

324Более старый префикс `//path` для абсолютных путей по-прежнему работает. Если вы ранее использовали одиночный слэш `/path`, ожидая разрешения относительно проекта, переключитесь на `./path`. Этот синтаксис отличается от [правил разрешения Read и Edit](/ru/permissions#read-and-edit), которые используют `//path` для абсолютного и `/path` для относительного к проекту. Пути файловой системы sandbox используют стандартные соглашения: `/tmp/build` - это абсолютный путь.

325 

326**Пример конфигурации:**

327 

328```json theme={null}

329{

330 "sandbox": {

331 "enabled": true,

332 "autoAllowBashIfSandboxed": true,

333 "excludedCommands": ["docker *"],

334 "filesystem": {

335 "allowWrite": ["/tmp/build", "~/.kube"],

336 "denyRead": ["~/.aws/credentials"]

337 },

338 "network": {

339 "allowedDomains": ["github.com", "*.npmjs.org", "registry.yarnpkg.com"],

340 "deniedDomains": ["uploads.github.com"],

341 "allowUnixSockets": [

342 "/var/run/docker.sock"

343 ],

344 "allowLocalBinding": true

345 }

346 }

347}

348```

349 

350**Ограничения файловой системы и сети** можно настроить двумя способами, которые объединяются вместе:

351 

352* **Параметры `sandbox.filesystem`** (показаны выше): Контролируют пути на границе sandbox уровня ОС. Эти ограничения применяются ко всем командам подпроцесса (например, `kubectl`, `terraform`, `npm`), а не только к инструментам файлов Claude.

353* **Правила разрешений**: Используйте правила разрешения `Edit` allow/deny для управления доступом инструмента файлов Claude, правила `Read` deny для блокировки чтения и правила `WebFetch` allow/deny для управления доменами сети. Пути из этих правил также объединяются в конфигурацию sandbox.

354 

355### Параметры атрибуции

356 

357Claude Code добавляет атрибуцию к коммитам git и pull requests. Они настраиваются отдельно:

358 

359* Коммиты используют [git trailers](https://git-scm.com/docs/git-interpret-trailers) (например, `Co-Authored-By`) по умолчанию, которые можно настроить или отключить

360* Описания pull request - это простой текст

361 

362| Ключи | Описание |

363| :------- | :------------------------------------------------------------------------------------------- |

364| `commit` | Атрибуция для коммитов git, включая любые trailers. Пустая строка скрывает атрибуцию коммита |

365| `pr` | Атрибуция для описаний pull request. Пустая строка скрывает атрибуцию pull request |

366 

367**Атрибуция коммита по умолчанию:**

368 

369```text theme={null}

370🤖 Generated with [Claude Code](https://claude.com/claude-code)

371 

372 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

373```

374 

375**Атрибуция pull request по умолчанию:**

376 

377```text theme={null}

378🤖 Generated with [Claude Code](https://claude.com/claude-code)

379```

380 

381**Пример:**

382 

383```json theme={null}

384{

385 "attribution": {

386 "commit": "Generated with AI\n\nCo-Authored-By: AI <ai@example.com>",

387 "pr": ""

388 }

389}

390```

391 

392<Note>

393 Параметр `attribution` имеет приоритет над устаревшим параметром `includeCoAuthoredBy`. Чтобы скрыть всю атрибуцию, установите `commit` и `pr` на пустые строки.

394</Note>

395 

396### Параметры предложения файлов

397 

398Настройте пользовательскую команду для автодополнения пути файла `@`. Встроенное предложение файлов использует быстрый обход файловой системы, но большие монорепозитории могут выиграть от индексирования, специфичного для проекта, такого как предварительно построенный индекс файлов или пользовательские инструменты.

399 

400```json theme={null}

401{

402 "fileSuggestion": {

403 "type": "command",

404 "command": "~/.claude/file-suggestion.sh"

405 }

406}

407```

408 

409Команда запускается с теми же переменными окружения, что и [hooks](/ru/hooks), включая `CLAUDE_PROJECT_DIR`. Она получает JSON через stdin с полем `query`:

410 

411```json theme={null}

412{"query": "src/comp"}

413```

414 

415Выведите пути файлов, разделенные новой строкой, в stdout (в настоящее время ограничено 15):

416 

417```text theme={null}

418src/components/Button.tsx

419src/components/Modal.tsx

420src/components/Form.tsx

421```

422 

423**Пример:**

424 

425```bash theme={null}

426#!/bin/bash

427query=$(cat | jq -r '.query')

428your-repo-file-index --query "$query" | head -20

429```

430 

431### Конфигурация Hook

432 

433Эти параметры контролируют, какие hooks разрешены для запуска и к чему могут получить доступ HTTP hooks. Параметр `allowManagedHooksOnly` можно настроить только в [управляемых параметрах](#settings-files). Списки разрешений URL и переменных окружения можно установить на любом уровне параметров и объединяются в разных источниках.

434 

435**Поведение, когда `allowManagedHooksOnly` равно `true`:**

436 

437* Управляемые hooks и SDK hooks загружаются

438* Hooks из plugins, принудительно включенных в управляемых параметрах `enabledPlugins`, загружаются. Это позволяет администраторам распространять проверенные hooks через организационный marketplace, блокируя все остальное. Доверие предоставляется по полному ID `plugin@marketplace`, поэтому plugin с тем же именем из другого marketplace остается заблокированным

439* Пользовательские hooks, проектные hooks и все остальные plugin hooks блокируются

440 

441**Ограничить URL HTTP hooks:**

442 

443Ограничьте, на какие URL могут быть направлены HTTP hooks. Поддерживает `*` как подстановочный знак для сопоставления. Когда массив определен, HTTP hooks, направленные на несовпадающие URL-адреса, молча блокируются.

444 

445```json theme={null}

446{

447 "allowedHttpHookUrls": ["https://hooks.example.com/*", "http://localhost:*"]

448}

449```

450 

451**Ограничить переменные окружения HTTP hook:**

452 

453Ограничьте, какие имена переменных окружения HTTP hooks могут интерполировать в значения заголовков. Эффективный `allowedEnvVars` каждого hook является пересечением его собственного списка и этого параметра.

454 

455```json theme={null}

456{

457 "httpHookAllowedEnvVars": ["MY_TOKEN", "HOOK_SECRET"]

458}

459```

460 

461### Приоритет параметров

462 

463Параметры применяются в порядке приоритета. От наивысшего к наименьшему:

464 

4651. **Управляемые параметры** ([управляемые сервером](/ru/server-managed-settings), [политики MDM/OS-уровня](#configuration-scopes) или [управляемые параметры](/ru/settings#settings-files))

466 * Политики, развернутые IT через доставку сервера, профили конфигурации MDM, политики реестра или файлы управляемых параметров

467 * Не могут быть переопределены никаким другим уровнем, включая аргументы командной строки

468 * В пределах управляемого уровня приоритет: server-managed > политики MDM/OS-уровня > file-based (`managed-settings.d/*.json` + `managed-settings.json`) > реестр HKCU (только Windows). Используется только один управляемый источник; источники не объединяются в разных уровнях. В пределах file-based уровня, drop-in файлы и базовый файл объединяются вместе.

469 

4702. **Аргументы командной строки**

471 * Временные переопределения для конкретного сеанса

472 

4733. **Локальные параметры проекта** (`.claude/settings.local.json`)

474 * Личные параметры, специфичные для проекта

475 

4764. **Общие параметры проекта** (`.claude/settings.json`)

477 * Параметры проекта, совместно используемые командой в системе управления версиями

478 

4795. **Параметры пользователя** (`~/.claude/settings.json`)

480 * Личные глобальные параметры

481 

482Эта иерархия гарантирует, что организационные политики всегда применяются, при этом позволяя командам и отдельным лицам настраивать свой опыт. Один и тот же приоритет применяется независимо от того, запускаете ли вы Claude Code из CLI, [расширения VS Code](/ru/vs-code) или [JetBrains IDE](/ru/jetbrains).

483 

484Например, если ваши параметры пользователя разрешают `Bash(npm run *)`, но параметры проекта запрещают это, параметр проекта имеет приоритет и команда блокируется.

485 

486<Note>

487 **Параметры массива объединяются в разных областях.** Когда один и тот же параметр со значением массива (такой как `sandbox.filesystem.allowWrite` или `permissions.allow`) появляется в нескольких областях, массивы **объединяются и дедублицируются**, не заменяются. Это означает, что области с более низким приоритетом могут добавлять записи без переопределения установленных областями с более высоким приоритетом, и наоборот. Например, если управляемые параметры устанавливают `allowWrite` на `["/opt/company-tools"]` и пользователь добавляет `["~/.kube"]`, оба пути включены в окончательную конфигурацию.

488</Note>

489 

490### Проверить активные параметры

491 

492Запустите `/status` внутри Claude Code, чтобы увидеть, какие источники параметров активны и откуда они берутся. Вывод показывает каждый уровень конфигурации (управляемый, пользовательский, проектный) вместе с его источником, таким как `Enterprise managed settings (remote)`, `Enterprise managed settings (plist)`, `Enterprise managed settings (HKLM)`, `Enterprise managed settings (HKCU)` или `Enterprise managed settings (file)`. Если файл параметров содержит ошибки, `/status` сообщает о проблеме, чтобы вы могли ее исправить.

493 

494### Ключевые моменты о системе конфигурации

495 

496* **Файлы памяти (`CLAUDE.md`)**: Содержат инструкции и контекст, которые Claude загружает при запуске

497* **Файлы параметров (JSON)**: Настраивают разрешения, переменные окружения и поведение инструмента

498* **Skills**: Пользовательские запросы, которые можно вызвать с помощью `/skill-name` или загружены Claude автоматически

499* **MCP servers**: Расширяют Claude Code дополнительными инструментами и интеграциями

500* **Приоритет**: Конфигурации более высокого уровня (Managed) переопределяют конфигурации более низкого уровня (User/Project)

501* **Наследование**: Параметры объединяются, с более специфичными параметрами добавляющимися к или переопределяющими более широкие

502 

503### Системный запрос

504 

505Внутренний системный запрос Claude Code не опубликован. Чтобы добавить пользовательские инструкции, используйте файлы `CLAUDE.md` или флаг `--append-system-prompt`.

506 

507### Исключение чувствительных файлов

508 

509Чтобы предотвратить доступ Claude Code к файлам, содержащим чувствительную информацию, такую как ключи API, секреты и файлы окружения, используйте параметр `permissions.deny` в вашем файле `.claude/settings.json`:

510 

511```json theme={null}

512{

513 "permissions": {

514 "deny": [

515 "Read(./.env)",

516 "Read(./.env.*)",

517 "Read(./secrets/**)",

518 "Read(./config/credentials.json)",

519 "Read(./build)"

520 ]

521 }

522}

523```

524 

525Это заменяет устаревшую конфигурацию `ignorePatterns`. Файлы, соответствующие этим шаблонам, исключаются из обнаружения файлов и результатов поиска, и операции чтения этих файлов запрещены.

526 

527## Конфигурация Subagent

528 

529Claude Code поддерживает пользовательские AI subagents, которые можно настроить на уровне пользователя и проекта. Эти subagents хранятся как файлы Markdown с YAML frontmatter:

530 

531* **Subagents пользователя**: `~/.claude/agents/` - Доступны во всех ваших проектах

532* **Subagents проекта**: `.claude/agents/` - Специфичны для вашего проекта и могут быть совместно использованы с вашей командой

533 

534Файлы Subagent определяют специализированных AI помощников с пользовательскими запросами и разрешениями инструментов. Узнайте больше о создании и использовании subagents в [документации subagents](/ru/sub-agents).

535 

536## Конфигурация Plugin

537 

538Claude Code поддерживает систему plugins, которая позволяет вам расширить функциональность с помощью skills, agents, hooks и MCP servers. Plugins распространяются через marketplaces и могут быть настроены на уровне пользователя и репозитория.

539 

540### Параметры Plugin

541 

542Параметры, связанные с plugins, в `settings.json`:

543 

544```json theme={null}

545{

546 "enabledPlugins": {

547 "formatter@acme-tools": true,

548 "deployer@acme-tools": true,

549 "analyzer@security-plugins": false

550 },

551 "extraKnownMarketplaces": {

552 "acme-tools": {

553 "source": "github",

554 "repo": "acme-corp/claude-plugins"

555 }

556 }

557}

558```

559 

560#### `enabledPlugins`

561 

562Контролирует, какие plugins включены. Формат: `"plugin-name@marketplace-name": true/false`

563 

564**Области**:

565 

566* **Параметры пользователя** (`~/.claude/settings.json`): Личные предпочтения plugins

567* **Параметры проекта** (`.claude/settings.json`): Plugins, специфичные для проекта, совместно используемые с командой

568* **Локальные параметры** (`.claude/settings.local.json`): Переопределения для каждой машины (не зафиксированы)

569* **Управляемые параметры** (`managed-settings.json`): Переопределения организационной политики, которые блокируют установку на всех уровнях и скрывают plugin из marketplace

570 

571**Пример**:

572 

573```json theme={null}

574{

575 "enabledPlugins": {

576 "code-formatter@team-tools": true,

577 "deployment-tools@team-tools": true,

578 "experimental-features@personal": false

579 }

580}

581```

582 

583#### `extraKnownMarketplaces`

584 

585Определяет дополнительные marketplaces, которые должны быть доступны для репозитория. Обычно используется в параметрах уровня репозитория для обеспечения доступа членов команды к требуемым источникам plugins.

586 

587**Когда репозиторий включает `extraKnownMarketplaces`**:

588 

5891. Членам команды предлагается установить marketplace при доверии папке

5902. Членам команды затем предлагается установить plugins из этого marketplace

5913. Пользователи могут пропустить нежелательные marketplaces или plugins (хранятся в параметрах пользователя)

5924. Установка соблюдает границы доверия и требует явного согласия

593 

594**Пример**:

595 

596```json theme={null}

597{

598 "extraKnownMarketplaces": {

599 "acme-tools": {

600 "source": {

601 "source": "github",

602 "repo": "acme-corp/claude-plugins"

603 }

604 },

605 "security-plugins": {

606 "source": {

607 "source": "git",

608 "url": "https://git.example.com/security/plugins.git"

609 }

610 }

611 }

612}

613```

614 

615**Типы источников Marketplace**:

616 

617* `github`: Репозиторий GitHub (использует `repo`)

618* `git`: Любой URL git (использует `url`)

619* `directory`: Путь локальной файловой системы (использует `path`, только для разработки)

620* `hostPattern`: Шаблон regex для сопоставления хостов marketplace (использует `hostPattern`)

621* `settings`: встроенный marketplace, объявленный непосредственно в settings.json без отдельного размещенного репозитория (использует `name` и `plugins`)

622 

623Используйте `source: 'settings'` для объявления небольшого набора plugins встроенным образом без настройки размещенного репозитория marketplace. Plugins, указанные здесь, должны ссылаться на внешние источники, такие как GitHub или npm. Вам по-прежнему нужно включить каждый plugin отдельно в `enabledPlugins`.

624 

625```json theme={null}

626{

627 "extraKnownMarketplaces": {

628 "team-tools": {

629 "source": {

630 "source": "settings",

631 "name": "team-tools",

632 "plugins": [

633 {

634 "name": "code-formatter",

635 "source": {

636 "source": "github",

637 "repo": "acme-corp/code-formatter"

638 }

639 }

640 ]

641 }

642 }

643 }

644}

645```

646 

647#### `strictKnownMarketplaces`

648 

649**Только управляемые параметры**: Контролирует, какие marketplaces plugins пользователи могут добавить и установить plugins из них. Этот параметр можно настроить только в [управляемых параметрах](/ru/settings#settings-files) и предоставляет администраторам строгий контроль над источниками marketplace.

650 

651**Местоположения файлов управляемых параметров**:

652 

653* **macOS**: `/Library/Application Support/ClaudeCode/managed-settings.json`

654* **Linux и WSL**: `/etc/claude-code/managed-settings.json`

655* **Windows**: `C:\Program Files\ClaudeCode\managed-settings.json`

656 

657**Ключевые характеристики**:

658 

659* Доступно только в управляемых параметрах (`managed-settings.json`)

660* Не может быть переопределено параметрами пользователя или проекта (наивысший приоритет)

661* Применяется ДО операций сети/файловой системы (заблокированные источники никогда не выполняются)

662* Использует точное сопоставление для спецификаций источников (включая `ref`, `path` для источников git), кроме `hostPattern`, который использует сопоставление regex

663 

664**Поведение списка разрешений**:

665 

666* `undefined` (по умолчанию): Без ограничений - пользователи могут добавить любой marketplace

667* Пустой массив `[]`: Полная блокировка - пользователи не могут добавить новые marketplaces

668* Список источников: Пользователи могут добавить только marketplaces, которые точно совпадают

669 

670**Все поддерживаемые типы источников**:

671 

672Список разрешений поддерживает несколько типов источников marketplace. Большинство источников используют точное сопоставление, в то время как `hostPattern` использует сопоставление regex с хостом marketplace.

673 

6741. **Репозитории GitHub**:

675 

676```json theme={null}

677{ "source": "github", "repo": "acme-corp/approved-plugins" }

678{ "source": "github", "repo": "acme-corp/security-tools", "ref": "v2.0" }

679{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }

680```

681 

682Поля: `repo` (обязательно), `ref` (опционально: ветка/тег/SHA), `path` (опционально: подкаталог)

683 

6842. **Репозитории Git**:

685 

686```json theme={null}

687{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git" }

688{ "source": "git", "url": "https://bitbucket.org/acme-corp/plugins.git", "ref": "production" }

689{ "source": "git", "url": "ssh://git@git.example.com/plugins.git", "ref": "v3.1", "path": "approved" }

690```

691 

692Поля: `url` (обязательно), `ref` (опционально: ветка/тег/SHA), `path` (опционально: подкаталог)

693 

6943. **Marketplaces на основе URL**:

695 

696```json theme={null}

697{ "source": "url", "url": "https://plugins.example.com/marketplace.json" }

698{ "source": "url", "url": "https://cdn.example.com/marketplace.json", "headers": { "Authorization": "Bearer ${TOKEN}" } }

699```

700 

701Поля: `url` (обязательно), `headers` (опционально: HTTP заголовки для аутентифицированного доступа)

702 

703<Note>

704 Marketplaces на основе URL загружают только файл `marketplace.json`. Они не загружают файлы plugins с сервера. Plugins в marketplaces на основе URL должны использовать внешние источники (GitHub, npm или URL git) вместо относительных путей. Для plugins с относительными путями используйте marketplace на основе Git. См. [Troubleshooting](/ru/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces) для деталей.

705</Note>

706 

7074. **Пакеты NPM**:

708 

709```json theme={null}

710{ "source": "npm", "package": "@acme-corp/claude-plugins" }

711{ "source": "npm", "package": "@acme-corp/approved-marketplace" }

712```

713 

714Поля: `package` (обязательно, поддерживает scoped пакеты)

715 

7165. **Пути файлов**:

717 

718```json theme={null}

719{ "source": "file", "path": "/usr/local/share/claude/acme-marketplace.json" }

720{ "source": "file", "path": "/opt/acme-corp/plugins/marketplace.json" }

721```

722 

723Поля: `path` (обязательно: абсолютный путь к файлу marketplace.json)

724 

7256. **Пути каталогов**:

726 

727```json theme={null}

728{ "source": "directory", "path": "/usr/local/share/claude/acme-plugins" }

729{ "source": "directory", "path": "/opt/acme-corp/approved-marketplaces" }

730```

731 

732Поля: `path` (обязательно: абсолютный путь к каталогу, содержащему `.claude-plugin/marketplace.json`)

733 

7347. **Сопоставление шаблона хоста**:

735 

736```json theme={null}

737{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }

738{ "source": "hostPattern", "hostPattern": "^gitlab\\.internal\\.example\\.com$" }

739```

740 

741Поля: `hostPattern` (обязательно: шаблон regex для сопоставления с хостом marketplace)

742 

743Используйте сопоставление шаблона хоста, когда вы хотите разрешить все marketplaces с определенного хоста без перечисления каждого репозитория отдельно. Это полезно для организаций с внутренними серверами GitHub Enterprise или GitLab, где разработчики создают свои собственные marketplaces.

744 

745Извлечение хоста по типу источника:

746 

747* `github`: всегда сопоставляется с `github.com`

748* `git`: извлекает имя хоста из URL (поддерживает форматы HTTPS и SSH)

749* `url`: извлекает имя хоста из URL

750* `npm`, `file`, `directory`: не поддерживается для сопоставления шаблона хоста

751 

752**Примеры конфигурации**:

753 

754Пример: разрешить только определенные marketplaces:

755 

756```json theme={null}

757{

758 "strictKnownMarketplaces": [

759 {

760 "source": "github",

761 "repo": "acme-corp/approved-plugins"

762 },

763 {

764 "source": "github",

765 "repo": "acme-corp/security-tools",

766 "ref": "v2.0"

767 },

768 {

769 "source": "url",

770 "url": "https://plugins.example.com/marketplace.json"

771 },

772 {

773 "source": "npm",

774 "package": "@acme-corp/compliance-plugins"

775 }

776 ]

777}

778```

779 

780Пример - Отключить все добавления marketplace:

781 

782```json theme={null}

783{

784 "strictKnownMarketplaces": []

785}

786```

787 

788Пример: разрешить все marketplaces с внутреннего git сервера:

789 

790```json theme={null}

791{

792 "strictKnownMarketplaces": [

793 {

794 "source": "hostPattern",

795 "hostPattern": "^github\\.example\\.com$"

796 }

797 ]

798}

799```

800 

801**Требования точного сопоставления**:

802 

803Источники marketplace должны совпадать **точно** для разрешения добавления пользователем. Для источников на основе git (`github` и `git`), это включает все опциональные поля:

804 

805* `repo` или `url` должны совпадать точно

806* Поле `ref` должно совпадать точно (или оба быть не определены)

807* Поле `path` должно совпадать точно (или оба быть не определены)

808 

809Примеры источников, которые **НЕ совпадают**:

810 

811```json theme={null}

812// Это РАЗНЫЕ источники:

813{ "source": "github", "repo": "acme-corp/plugins" }

814{ "source": "github", "repo": "acme-corp/plugins", "ref": "main" }

815 

816// Это также РАЗНЫЕ:

817{ "source": "github", "repo": "acme-corp/plugins", "path": "marketplace" }

818{ "source": "github", "repo": "acme-corp/plugins" }

819```

820 

821**Сравнение с `extraKnownMarketplaces`**:

822 

823| Аспект | `strictKnownMarketplaces` | `extraKnownMarketplaces` |

824| ----------------------------- | ----------------------------------------------------- | ------------------------------------------------------ |

825| **Назначение** | Применение организационной политики | Удобство команды |

826| **Файл параметров** | Только `managed-settings.json` | Любой файл параметров |

827| **Поведение** | Блокирует добавления, не входящие в список разрешений | Автоматически устанавливает отсутствующие marketplaces |

828| **Когда применяется** | До операций сети/файловой системы | После запроса доверия пользователя |

829| **Может быть переопределено** | Нет (наивысший приоритет) | Да (параметрами с более высоким приоритетом) |

830| **Формат источника** | Прямой объект источника | Именованный marketplace с вложенным источником |

831| **Случай использования** | Соответствие, ограничения безопасности | Адаптация, стандартизация |

832 

833**Различие формата**:

834 

835`strictKnownMarketplaces` использует прямые объекты источников:

836 

837```json theme={null}

838{

839 "strictKnownMarketplaces": [

840 { "source": "github", "repo": "acme-corp/plugins" }

841 ]

842}

843```

844 

845`extraKnownMarketplaces` требует именованные marketplaces:

846 

847```json theme={null}

848{

849 "extraKnownMarketplaces": {

850 "acme-tools": {

851 "source": { "source": "github", "repo": "acme-corp/plugins" }

852 }

853 }

854}

855```

856 

857**Использование обоих вместе**:

858 

859`strictKnownMarketplaces` - это политический шлюз: он контролирует, что пользователи могут добавить, но не регистрирует никакие marketplaces. Чтобы одновременно ограничить и предварительно зарегистрировать marketplace для всех пользователей, установите оба в `managed-settings.json`:

860 

861```json theme={null}

862{

863 "strictKnownMarketplaces": [

864 { "source": "github", "repo": "acme-corp/plugins" }

865 ],

866 "extraKnownMarketplaces": {

867 "acme-tools": {

868 "source": { "source": "github", "repo": "acme-corp/plugins" }

869 }

870 }

871}

872```

873 

874Если установлен только `strictKnownMarketplaces`, пользователи по-прежнему могут добавить разрешенный marketplace вручную через `/plugin marketplace add`, но он не доступен автоматически.

875 

876**Важные примечания**:

877 

878* Ограничения проверяются ДО любых запросов сети или операций файловой системы

879* При блокировке пользователи видят четкие сообщения об ошибках, указывающие, что источник заблокирован управляемой политикой

880* Ограничение применяется при добавлении marketplace и при установке, обновлении, обновлении и автоматическом обновлении plugin. Marketplace, добавленный до установки политики, не может быть использован для установки или обновления plugins после того, как его источник больше не совпадает со списком разрешений

881* Управляемые параметры имеют наивысший приоритет и не могут быть переопределены

882 

883См. [Управляемые ограничения marketplace](/ru/plugin-marketplaces#managed-marketplace-restrictions) для документации, ориентированной на пользователя.

884 

885### Управление Plugins

886 

887Используйте команду `/plugin` для интерактивного управления plugins:

888 

889* Просмотрите доступные plugins из marketplaces

890* Установите/удалите plugins

891* Включите/отключите plugins

892* Просмотрите детали plugins (skills, agents, hooks, предоставляемые)

893* Добавьте/удалите marketplaces

894 

895Узнайте больше о системе plugins в [документации plugins](/ru/plugins).

896 

897## Переменные окружения

898 

899Переменные окружения позволяют вам управлять поведением Claude Code без редактирования файлов параметров. Любая переменная также может быть настроена в [`settings.json`](#available-settings) под ключом `env` для применения к каждому сеансу или развертывания для вашей команды.

900 

901См. [справочник переменных окружения](/ru/env-vars) для полного списка.

902 

903## Инструменты, доступные Claude

904 

905Claude Code имеет доступ к набору инструментов для чтения, редактирования, поиска, запуска команд и организации subagents. Имена инструментов - это точные строки, которые вы используете в правилах разрешений и сопоставителях hooks.

906 

907См. [справочник инструментов](/ru/tools-reference) для полного списка и деталей поведения инструмента Bash.

908 

909## См. также

910 

911* [Permissions](/ru/permissions): система разрешений, синтаксис правил, шаблоны, специфичные для инструментов, и управляемые политики

912* [Authentication](/ru/authentication): настройка доступа пользователей к Claude Code

913* [Debug your configuration](/ru/debug-your-config): диагностика причин, по которым параметр, hook или MCP сервер не вступают в силу

914* [Troubleshoot installation and login](/ru/troubleshoot-install): установка, аутентификация и проблемы платформы

setup.md +606 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Расширенная настройка

6 

7> Системные требования, установка для конкретной платформы, управление версиями и удаление Claude Code.

8 

9На этой странице рассматриваются системные требования, детали установки для конкретной платформы, обновления и удаление. Для пошагового руководства по вашему первому сеансу см. [краткое руководство](/ru/quickstart). Если вы никогда раньше не использовали терминал, см. [руководство по терминалу](/ru/terminal-guide).

10 

11## Системные требования

12 

13Claude Code работает на следующих платформах и конфигурациях:

14 

15* **Операционная система**:

16 * macOS 13.0+

17 * Windows 10 1809+ или Windows Server 2019+

18 * Ubuntu 20.04+

19 * Debian 10+

20 * Alpine Linux 3.19+

21* **Оборудование**: 4 ГБ+ ОЗУ, процессор x64 или ARM64

22* **Сеть**: требуется подключение в Интернет. См. [конфигурация сети](/ru/network-config#network-access-requirements).

23* **Shell**: Bash, Zsh, PowerShell или CMD. На встроенной Windows рекомендуется [Git for Windows](https://git-scm.com/downloads/win); Claude Code переходит на PowerShell при отсутствии Git Bash. Установки WSL не требуют Git for Windows.

24* **Местоположение**: [поддерживаемые Anthropic страны](https://www.anthropic.com/supported-countries)

25 

26### Дополнительные зависимости

27 

28* **ripgrep**: обычно включен в Claude Code. Если поиск не работает, см. [устранение неполадок поиска](/ru/troubleshooting#search-and-discovery-issues).

29 

30## Установка Claude Code

31 

32<Tip>

33 Предпочитаете графический интерфейс? [Приложение Desktop](/ru/desktop-quickstart) позволяет использовать Claude Code без терминала. Загрузите его для [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) или [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs).

34 

35 Новичок в терминале? См. [руководство по терминалу](/ru/terminal-guide) для пошаговых инструкций.

36</Tip>

37 

38To install Claude Code, use one of the following methods:

39 

40<Tabs>

41 <Tab title="Native Install (Recommended)">

42 **macOS, Linux, WSL:**

43 

44 ```bash theme={null}

45 curl -fsSL https://claude.ai/install.sh | bash

46 ```

47 

48 **Windows PowerShell:**

49 

50 ```powershell theme={null}

51 irm https://claude.ai/install.ps1 | iex

52 ```

53 

54 **Windows CMD:**

55 

56 ```batch theme={null}

57 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

58 ```

59 

60 If you see `The token '&&' is not a valid statement separator`, you're in PowerShell, not CMD. If you see `'irm' is not recognized as an internal or external command`, you're in CMD, not PowerShell. Your prompt shows `PS C:\` when you're in PowerShell and `C:\` without the `PS` when you're in CMD.

61 

62 [Git for Windows](https://git-scm.com/downloads/win) is recommended on native Windows so Claude Code can use the Bash tool. If Git for Windows is not installed, Claude Code uses PowerShell as the shell tool instead. WSL setups do not need Git for Windows.

63 

64 <Info>

65 Native installations automatically update in the background to keep you on the latest version.

66 </Info>

67 </Tab>

68 

69 <Tab title="Homebrew">

70 ```bash theme={null}

71 brew install --cask claude-code

72 ```

73 

74 Homebrew offers two casks. `claude-code` tracks the stable release channel, which is typically about a week behind and skips releases with major regressions. `claude-code@latest` tracks the latest channel and receives new versions as soon as they ship.

75 

76 <Info>

77 Homebrew installations do not auto-update. Run `brew upgrade claude-code` or `brew upgrade claude-code@latest`, depending on which cask you installed, to get the latest features and security fixes.

78 </Info>

79 </Tab>

80 

81 <Tab title="WinGet">

82 ```powershell theme={null}

83 winget install Anthropic.ClaudeCode

84 ```

85 

86 <Info>

87 WinGet installations do not auto-update. Run `winget upgrade Anthropic.ClaudeCode` periodically to get the latest features and security fixes.

88 </Info>

89 </Tab>

90</Tabs>

91 

92You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

93 

94После завершения установки откройте терминал в проекте, над которым вы хотите работать, и запустите Claude Code:

95 

96```bash theme={null}

97claude

98```

99 

100Если вы столкнулись с какими-либо проблемами во время установки, см. [Устранение неполадок при установке и входе](/ru/troubleshoot-install).

101 

102### Настройка в Windows

103 

104Вы можете запустить Claude Code изначально в Windows или внутри WSL. Выберите в зависимости от того, где находятся ваши проекты и какие функции вам нужны:

105 

106| Опция | Требует | [Sandboxing](/ru/sandboxing) | Когда использовать |

107| -------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------------------------------------------------- |

108| Native Windows | [Git for Windows](https://git-scm.com/downloads/win) рекомендуется; PowerShell используется при отсутствии | Не поддерживается | Встроенные проекты и инструменты Windows |

109| WSL 2 | WSL 2 включен | Поддерживается | Цепочки инструментов Linux или изолированное выполнение команд |

110| WSL 1 | WSL 1 включен | Не поддерживается | Если WSL 2 недоступен |

111 

112**Вариант 1: Native Windows с Git Bash**

113 

114Установите [Git for Windows](https://git-scm.com/downloads/win), затем выполните команду установки из PowerShell или CMD. Вам не нужно запускать от имени администратора.

115 

116Независимо от того, устанавливаете ли вы из PowerShell или CMD, это влияет только на то, какую команду установки вы выполняете. Ваша подсказка показывает `PS C:\Users\YourName>` в PowerShell и `C:\Users\YourName>` без `PS` в CMD. Если вы новичок в терминале, [руководство по терминалу](/ru/terminal-guide#windows) проходит через каждый шаг.

117 

118После установки запустите `claude` из PowerShell, CMD или Git Bash. Когда установлен Git Bash, Claude Code использует его внутри для выполнения команд независимо от того, откуда вы его запустили. Если Claude Code не может найти вашу установку Git Bash, установите путь в [файле settings.json](/ru/settings):

119 

120```json theme={null}

121{

122 "env": {

123 "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"

124 }

125}

126```

127 

128Claude Code также может запускать PowerShell изначально в Windows. Когда установлен Git Bash, инструмент PowerShell развертывается постепенно как дополнительный вариант: установите `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` для включения или `0` для отключения. См. [инструмент PowerShell](/ru/tools-reference#powershell-tool) для настройки и ограничений.

129 

130**Вариант 2: WSL**

131 

132Откройте ваше распределение WSL и выполните установщик Linux из [инструкций установки](#install-claude-code) выше. Вы устанавливаете и запускаете `claude` внутри терминала WSL, а не из PowerShell или CMD.

133 

134### Alpine Linux и дистрибутивы на основе musl

135 

136Встроенный установщик на Alpine и других дистрибутивах на основе musl/uClibc требует `libgcc`, `libstdc++` и `ripgrep`. Установите их с помощью менеджера пакетов вашего дистрибутива, затем установите `USE_BUILTIN_RIPGREP=0`.

137 

138Этот пример устанавливает необходимые пакеты на Alpine:

139 

140```bash theme={null}

141apk add libgcc libstdc++ ripgrep

142```

143 

144Затем установите `USE_BUILTIN_RIPGREP` на `0` в файле [`settings.json`](/ru/settings#available-settings):

145 

146```json theme={null}

147{

148 "env": {

149 "USE_BUILTIN_RIPGREP": "0"

150 }

151}

152```

153 

154## Проверка установки

155 

156После установки убедитесь, что Claude Code работает:

157 

158```bash theme={null}

159claude --version

160```

161 

162Если это не сработает с ошибкой `command not found` или другой ошибкой, см. [Troubleshoot installation and login](/ru/troubleshoot-install).

163 

164Для более подробной проверки установки и конфигурации выполните [`claude doctor`](/ru/troubleshooting#get-more-help):

165 

166```bash theme={null}

167claude doctor

168```

169 

170## Аутентификация

171 

172Claude Code требует учетную запись Pro, Max, Team, Enterprise или Console. Бесплатный план Claude.ai не включает доступ к Claude Code. Вы также можете использовать Claude Code с поставщиком API третьей стороны, таким как [Amazon Bedrock](/ru/amazon-bedrock), [Google Vertex AI](/ru/google-vertex-ai) или [Microsoft Foundry](/ru/microsoft-foundry).

173 

174После установки войдите, выполнив `claude` и следуя подсказкам браузера. См. [Аутентификация](/ru/authentication) для всех типов учетных записей и параметров настройки команды.

175 

176## Обновление Claude Code

177 

178Встроенные установки автоматически обновляются в фоновом режиме. Вы можете [настроить канал выпуска](#configure-release-channel) для управления тем, получаете ли вы обновления немедленно или по отложенному стабильному расписанию, или [отключить автоматические обновления](#disable-auto-updates) полностью. Установки Homebrew, WinGet и [менеджер пакетов Linux](#install-with-linux-package-managers) требуют ручного обновления.

179 

180### Автоматические обновления

181 

182Claude Code проверяет наличие обновлений при запуске и периодически во время работы. Обновления загружаются и устанавливаются в фоновом режиме, а затем вступают в силу при следующем запуске Claude Code.

183 

184<Note>

185 Установки Homebrew, WinGet, apt, dnf и apk не обновляются автоматически. Для Homebrew выполните `brew upgrade claude-code` или `brew upgrade claude-code@latest`, в зависимости от того, какой cask вы установили. Для WinGet выполните `winget upgrade Anthropic.ClaudeCode`. Для менеджеров пакетов Linux см. команды обновления в разделе [Install with Linux package managers](#install-with-linux-package-managers).

186 

187 **Известная проблема:** Claude Code может уведомить вас об обновлениях до того, как новая версия будет доступна в этих менеджерах пакетов. Если обновление не удается, подождите и повторите попытку позже.

188 

189 Homebrew сохраняет старые версии на диске после обновлений. Периодически выполняйте `brew cleanup` для освобождения дискового пространства.

190</Note>

191 

192### Настройка канала выпуска

193 

194Управляйте каналом выпуска, который Claude Code использует для автоматических обновлений и `claude update`, с помощью параметра `autoUpdatesChannel`:

195 

196* `"latest"`, по умолчанию: получайте новые функции сразу же после их выпуска

197* `"stable"`: используйте версию, которая обычно имеет возраст около одной недели, пропуская выпуски с серьезными регрессиями

198 

199Настройте это через `/config` → **Auto-update channel**, или добавьте в [файл settings.json](/ru/settings):

200 

201```json theme={null}

202{

203 "autoUpdatesChannel": "stable"

204}

205```

206 

207Для развертываний в масштабах предприятия вы можете обеспечить согласованный канал выпуска во всей организации, используя [управляемые параметры](/ru/permissions#managed-settings).

208 

209Установки Homebrew выбирают канал по имени cask вместо этого параметра: `claude-code` отслеживает стабильный и `claude-code@latest` отслеживает последний.

210 

211### Закрепление минимальной версии

212 

213Параметр `minimumVersion` устанавливает нижний предел. Фоновые автоматические обновления и `claude update` отказываются устанавливать любую версию ниже этого значения, поэтому переход на канал `"stable"` не понижает вас, если вы уже находитесь на более новой сборке `"latest"`.

214 

215Переключение с `"latest"` на `"stable"` через `/config` предлагает вам либо остаться на текущей версии, либо разрешить понижение. Выбор остаться устанавливает `minimumVersion` на эту версию. Переключение обратно на `"latest"` очищает его.

216 

217Добавьте его в [файл settings.json](/ru/settings) для явного закрепления нижнего предела:

218 

219```json theme={null}

220{

221 "autoUpdatesChannel": "stable",

222 "minimumVersion": "2.1.100"

223}

224```

225 

226В [управляемых параметрах](/ru/permissions#managed-settings) это обеспечивает минимум на уровне организации, который параметры пользователя и проекта не могут переопределить.

227 

228### Отключение автоматических обновлений

229 

230Установите `DISABLE_AUTOUPDATER` на `"1"` в ключе `env` файла [`settings.json`](/ru/settings#available-settings):

231 

232```json theme={null}

233{

234 "env": {

235 "DISABLE_AUTOUPDATER": "1"

236 }

237}

238```

239 

240`DISABLE_AUTOUPDATER` только останавливает фоновую проверку; `claude update` и `claude install` по-прежнему работают. Чтобы заблокировать все пути обновления, включая ручные обновления, установите [`DISABLE_UPDATES`](/ru/env-vars) вместо этого. Используйте это, когда вы распространяете Claude Code через свои собственные каналы и вам нужно, чтобы пользователи оставались на версии, которую вы предоставляете.

241 

242### Ручное обновление

243 

244Чтобы применить обновление немедленно без ожидания следующей проверки в фоновом режиме, выполните:

245 

246```bash theme={null}

247claude update

248```

249 

250## Расширенные параметры установки

251 

252Эти параметры предназначены для закрепления версии, менеджеров пакетов Linux, npm и проверки целостности двоичного файла.

253 

254### Установка определенной версии

255 

256Встроенный установщик принимает либо конкретный номер версии, либо канал выпуска (`latest` или `stable`). Канал, который вы выбираете во время установки, становится вашим значением по умолчанию для автоматических обновлений. См. [настройка канала выпуска](#configure-release-channel) для получения дополнительной информации.

257 

258Для установки последней версии (по умолчанию):

259 

260<Tabs>

261 <Tab title="macOS, Linux, WSL">

262 ```bash theme={null}

263 curl -fsSL https://claude.ai/install.sh | bash

264 ```

265 </Tab>

266 

267 <Tab title="Windows PowerShell">

268 ```powershell theme={null}

269 irm https://claude.ai/install.ps1 | iex

270 ```

271 </Tab>

272 

273 <Tab title="Windows CMD">

274 ```batch theme={null}

275 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

276 ```

277 </Tab>

278</Tabs>

279 

280Для установки стабильной версии:

281 

282<Tabs>

283 <Tab title="macOS, Linux, WSL">

284 ```bash theme={null}

285 curl -fsSL https://claude.ai/install.sh | bash -s stable

286 ```

287 </Tab>

288 

289 <Tab title="Windows PowerShell">

290 ```powershell theme={null}

291 & ([scriptblock]::Create((irm https://claude.ai/install.ps1))) stable

292 ```

293 </Tab>

294 

295 <Tab title="Windows CMD">

296 ```batch theme={null}

297 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd stable && del install.cmd

298 ```

299 </Tab>

300</Tabs>

301 

302Для установки определенного номера версии:

303 

304<Tabs>

305 <Tab title="macOS, Linux, WSL">

306 ```bash theme={null}

307 curl -fsSL https://claude.ai/install.sh | bash -s 2.1.89

308 ```

309 </Tab>

310 

311 <Tab title="Windows PowerShell">

312 ```powershell theme={null}

313 & ([scriptblock]::Create((irm https://claude.ai/install.ps1))) 2.1.89

314 ```

315 </Tab>

316 

317 <Tab title="Windows CMD">

318 ```batch theme={null}

319 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd 2.1.89 && del install.cmd

320 ```

321 </Tab>

322</Tabs>

323 

324### Установка с менеджерами пакетов Linux

325 

326Claude Code публикует подписанные репозитории apt, dnf и apk. Замените `stable` на `latest` для канала rolling. Установки менеджеров пакетов не обновляются автоматически через Claude Code; обновления поступают через ваш обычный рабочий процесс обновления системы.

327 

328Все репозитории подписаны с помощью [ключа подписи выпуска Claude Code](#binary-integrity-and-code-signing). Перед доверием к ключу проверьте его, как описано в каждой вкладке.

329 

330<Tabs>

331 <Tab title="apt">

332 Для Debian и Ubuntu. Чтобы использовать канал rolling, измените оба вхождения `stable` в строке `deb`: путь URL и имя suite.

333 

334 ```bash theme={null}

335 sudo install -d -m 0755 /etc/apt/keyrings

336 sudo curl -fsSL https://downloads.claude.ai/keys/claude-code.asc \

337 -o /etc/apt/keyrings/claude-code.asc

338 echo "deb [signed-by=/etc/apt/keyrings/claude-code.asc] https://downloads.claude.ai/claude-code/apt/stable stable main" \

339 | sudo tee /etc/apt/sources.list.d/claude-code.list

340 sudo apt update

341 sudo apt install claude-code

342 ```

343 

344 Проверьте отпечаток ключа GPG перед доверием к нему: `gpg --show-keys /etc/apt/keyrings/claude-code.asc` должен сообщить `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE`.

345 

346 Для обновления позже выполните `sudo apt update && sudo apt upgrade claude-code`.

347 </Tab>

348 

349 <Tab title="dnf">

350 Для Fedora и RHEL:

351 

352 ```bash theme={null}

353 sudo tee /etc/yum.repos.d/claude-code.repo <<'EOF'

354 [claude-code]

355 name=Claude Code

356 baseurl=https://downloads.claude.ai/claude-code/rpm/stable

357 enabled=1

358 gpgcheck=1

359 gpgkey=https://downloads.claude.ai/keys/claude-code.asc

360 EOF

361 sudo dnf install claude-code

362 ```

363 

364 dnf загружает ключ при первой установке и предлагает вам подтвердить отпечаток. Проверьте, что он совпадает с `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE` перед принятием.

365 

366 Для обновления позже выполните `sudo dnf upgrade claude-code`.

367 </Tab>

368 

369 <Tab title="apk">

370 Для Alpine Linux:

371 

372 ```sh theme={null}

373 wget -O /etc/apk/keys/claude-code.rsa.pub \

374 https://downloads.claude.ai/keys/claude-code.rsa.pub

375 echo "https://downloads.claude.ai/claude-code/apk/stable" >> /etc/apk/repositories

376 apk add claude-code

377 ```

378 

379 Проверьте загруженный ключ с помощью `sha256sum /etc/apk/keys/claude-code.rsa.pub`, который должен сообщить `395759c1f7449ef4cdef305a42e820f3c766d6090d142634ebdb049f113168b6`.

380 

381 Для обновления позже выполните `apk update && apk upgrade claude-code`.

382 </Tab>

383</Tabs>

384 

385### Установка с npm

386 

387Вы также можете установить Claude Code как глобальный пакет npm. Пакет требует [Node.js 18 или позже](https://nodejs.org/en/download).

388 

389```bash theme={null}

390npm install -g @anthropic-ai/claude-code

391```

392 

393Пакет npm устанавливает тот же встроенный двоичный файл, что и автономный установщик. npm получает двоичный файл через дополнительную зависимость для каждой платформы, такую как `@anthropic-ai/claude-code-darwin-arm64`, и шаг postinstall связывает его на место. Установленный двоичный файл `claude` сам по себе не вызывает Node.

394 

395Поддерживаемые платформы установки npm: `darwin-arm64`, `darwin-x64`, `linux-x64`, `linux-arm64`, `linux-x64-musl`, `linux-arm64-musl`, `win32-x64` и `win32-arm64`. Ваш менеджер пакетов должен разрешать дополнительные зависимости. См. [устранение неполадок](/ru/troubleshoot-install#native-binary-not-found-after-npm-install), если двоичный файл отсутствует после установки.

396 

397<Warning>

398 НЕ используйте `sudo npm install -g`, так как это может привести к проблемам с разрешениями и рискам безопасности. Если вы столкнулись с ошибками разрешений, см. [устранение неполадок ошибок разрешений](/ru/troubleshoot-install#permission-errors-during-installation).

399</Warning>

400 

401### Целостность двоичного файла и подпись кода

402 

403Каждый выпуск публикует `manifest.json`, содержащий контрольные суммы SHA256 для каждого двоичного файла платформы. Манифест подписан ключом GPG Anthropic, поэтому проверка подписи на манифесте транзитивно проверяет каждый двоичный файл, который он указывает.

404 

405#### Проверка подписи манифеста

406 

407Шаги 1-3 требуют оболочки POSIX с `gpg` и `curl`. В Windows выполните их в Git Bash или WSL. Шаг 4 включает опцию PowerShell.

408 

409<Steps>

410 <Step title="Загрузка и импорт открытого ключа">

411 Ключ подписи выпуска опубликован по фиксированному URL.

412 

413 ```bash theme={null}

414 curl -fsSL https://downloads.claude.ai/keys/claude-code.asc | gpg --import

415 ```

416 

417 Отобразите отпечаток импортированного ключа.

418 

419 ```bash theme={null}

420 gpg --fingerprint security@anthropic.com

421 ```

422 

423 Подтвердите, что вывод включает этот отпечаток:

424 

425 ```text theme={null}

426 31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE

427 ```

428 </Step>

429 

430 <Step title="Загрузка манифеста и подписи">

431 Установите `VERSION` на выпуск, который вы хотите проверить.

432 

433 ```bash theme={null}

434 REPO=https://downloads.claude.ai/claude-code-releases

435 VERSION=2.1.89

436 curl -fsSLO "$REPO/$VERSION/manifest.json"

437 curl -fsSLO "$REPO/$VERSION/manifest.json.sig"

438 ```

439 </Step>

440 

441 <Step title="Проверка подписи">

442 Проверьте отделенную подпись против манифеста.

443 

444 ```bash theme={null}

445 gpg --verify manifest.json.sig manifest.json

446 ```

447 

448 Действительный результат сообщает `Good signature from "Anthropic Claude Code Release Signing <security@anthropic.com>"`.

449 

450 `gpg` также выводит `WARNING: This key is not certified with a trusted signature!` для любого вновь импортированного ключа. Это ожидается. Строка `Good signature` подтверждает, что криптографическая проверка прошла. Сравнение отпечатков на шаге 1 подтверждает, что сам ключ является подлинным.

451 </Step>

452 

453 <Step title="Проверка двоичного файла против манифеста">

454 Сравните контрольную сумму SHA256 вашего загруженного двоичного файла со значением, указанным в `platforms.<platform>.checksum` в `manifest.json`.

455 

456 <Tabs>

457 <Tab title="Linux">

458 ```bash theme={null}

459 sha256sum claude

460 ```

461 </Tab>

462 

463 <Tab title="macOS">

464 ```bash theme={null}

465 shasum -a 256 claude

466 ```

467 </Tab>

468 

469 <Tab title="Windows PowerShell">

470 ```powershell theme={null}

471 (Get-FileHash claude.exe -Algorithm SHA256).Hash.ToLower()

472 ```

473 </Tab>

474 </Tabs>

475 </Step>

476</Steps>

477 

478<Note>

479 Подписи манифеста доступны для выпусков начиная с `2.1.89`. Более ранние выпуски публикуют контрольные суммы в `manifest.json` без отделенной подписи.

480</Note>

481 

482#### Подписи кода платформы

483 

484В дополнение к подписанному манифесту отдельные двоичные файлы несут подписи кода, специфичные для платформы, где это поддерживается.

485 

486* **macOS**: подписано "Anthropic PBC" и заверено Apple. Проверьте с помощью `codesign --verify --verbose ./claude`.

487* **Windows**: подписано "Anthropic, PBC". Проверьте с помощью `Get-AuthenticodeSignature .\claude.exe`.

488* **Linux**: двоичные файлы не подписаны индивидуально кодом. Если вы загружаете непосредственно из корзины `claude-code-releases` или используете встроенный установщик, проверьте целостность с помощью подписи манифеста выше. Если вы устанавливаете с помощью [apt, dnf или apk](#install-with-linux-package-managers), ваш менеджер пакетов автоматически проверяет подписи, используя ключ подписи репозитория.

489 

490## Удаление Claude Code

491 

492Чтобы удалить Claude Code, следуйте инструкциям для вашего метода установки.

493 

494### Встроенная установка

495 

496Удалите двоичный файл Claude Code и файлы версии:

497 

498<Tabs>

499 <Tab title="macOS, Linux, WSL">

500 ```bash theme={null}

501 rm -f ~/.local/bin/claude

502 rm -rf ~/.local/share/claude

503 ```

504 </Tab>

505 

506 <Tab title="Windows PowerShell">

507 ```powershell theme={null}

508 Remove-Item -Path "$env:USERPROFILE\.local\bin\claude.exe" -Force

509 Remove-Item -Path "$env:USERPROFILE\.local\share\claude" -Recurse -Force

510 ```

511 </Tab>

512</Tabs>

513 

514### Установка Homebrew

515 

516Удалите cask Homebrew, который вы установили. Если вы установили стабильный cask:

517 

518```bash theme={null}

519brew uninstall --cask claude-code

520```

521 

522Если вы установили последний cask:

523 

524```bash theme={null}

525brew uninstall --cask claude-code@latest

526```

527 

528### Установка WinGet

529 

530Удалите пакет WinGet:

531 

532```powershell theme={null}

533winget uninstall Anthropic.ClaudeCode

534```

535 

536### apt / dnf / apk

537 

538Удалите пакет и конфигурацию репозитория:

539 

540<Tabs>

541 <Tab title="apt">

542 ```bash theme={null}

543 sudo apt remove claude-code

544 sudo rm /etc/apt/sources.list.d/claude-code.list /etc/apt/keyrings/claude-code.asc

545 ```

546 </Tab>

547 

548 <Tab title="dnf">

549 ```bash theme={null}

550 sudo dnf remove claude-code

551 sudo rm /etc/yum.repos.d/claude-code.repo

552 ```

553 </Tab>

554 

555 <Tab title="apk">

556 ```sh theme={null}

557 apk del claude-code

558 sed -i '\|downloads.claude.ai/claude-code/apk|d' /etc/apk/repositories

559 rm /etc/apk/keys/claude-code.rsa.pub

560 ```

561 </Tab>

562</Tabs>

563 

564### npm

565 

566Удалите глобальный пакет npm:

567 

568```bash theme={null}

569npm uninstall -g @anthropic-ai/claude-code

570```

571 

572### Удаление файлов конфигурации

573 

574<Warning>

575 Удаление файлов конфигурации удалит все ваши параметры, разрешенные инструменты, конфигурации MCP server и историю сеансов.

576</Warning>

577 

578Расширение VS Code, плагин JetBrains и приложение Desktop также записывают в `~/.claude/`. Если какое-либо из них все еще установлено, каталог будет пересоздан при следующем запуске. Чтобы полностью удалить Claude Code, удалите [расширение VS Code](/ru/vs-code#uninstall-the-extension), плагин JetBrains и приложение Desktop перед удалением этих файлов.

579 

580Чтобы удалить параметры Claude Code и кэшированные данные:

581 

582<Tabs>

583 <Tab title="macOS, Linux, WSL">

584 ```bash theme={null}

585 # Удаление пользовательских параметров и состояния

586 rm -rf ~/.claude

587 rm ~/.claude.json

588 

589 # Удаление параметров для конкретного проекта (выполните из каталога вашего проекта)

590 rm -rf .claude

591 rm -f .mcp.json

592 ```

593 </Tab>

594 

595 <Tab title="Windows PowerShell">

596 ```powershell theme={null}

597 # Удаление пользовательских параметров и состояния

598 Remove-Item -Path "$env:USERPROFILE\.claude" -Recurse -Force

599 Remove-Item -Path "$env:USERPROFILE\.claude.json" -Force

600 

601 # Удаление параметров для конкретного проекта (выполните из каталога вашего проекта)

602 Remove-Item -Path ".claude" -Recurse -Force

603 Remove-Item -Path ".mcp.json" -Force

604 ```

605 </Tab>

606</Tabs>

skills.md +728 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Расширьте Claude с помощью skills

6 

7> Создавайте, управляйте и делитесь skills для расширения возможностей Claude в Claude Code. Включает пользовательские команды и встроенные skills.

8 

9Skills расширяют возможности Claude. Создайте файл `SKILL.md` с инструкциями, и Claude добавит его в свой набор инструментов. Claude использует skills при необходимости, или вы можете вызвать один напрямую с помощью `/skill-name`.

10 

11Создайте skill, когда вы постоянно вставляете один и тот же сценарий, контрольный список или многошаговую процедуру в чат, или когда раздел CLAUDE.md превратился в процедуру, а не в факт. В отличие от содержимого CLAUDE.md, тело skill загружается только при его использовании, поэтому большой справочный материал стоит почти ничего, пока вам он не понадобится.

12 

13<Note>

14 Для встроенных команд, таких как `/help` и `/compact`, и встроенных skills, таких как `/debug` и `/simplify`, см. [справочник команд](/ru/commands).

15 

16 **Пользовательские команды были объединены с skills.** Файл в `.claude/commands/deploy.md` и skill в `.claude/skills/deploy/SKILL.md` оба создают `/deploy` и работают одинаково. Ваши существующие файлы `.claude/commands/` продолжают работать. Skills добавляют дополнительные функции: каталог для вспомогательных файлов, frontmatter для [управления тем, кто вызывает skill](#control-who-invokes-a-skill), и возможность для Claude загружать их автоматически при необходимости.

17</Note>

18 

19Skills в Claude Code следуют открытому стандарту [Agent Skills](https://agentskills.io), который работает с несколькими инструментами AI. Claude Code расширяет стандарт дополнительными функциями, такими как [управление вызовом](#control-who-invokes-a-skill), [выполнение в subagent](#run-skills-in-a-subagent) и [динамическое внедрение контекста](#inject-dynamic-context).

20 

21## Встроенные skills

22 

23Claude Code включает набор встроенных skills, которые доступны в каждой сессии, включая `/simplify`, `/batch`, `/debug`, `/loop` и `/claude-api`. В отличие от большинства встроенных команд, которые выполняют фиксированную логику напрямую, встроенные skills основаны на подсказках: они дают Claude подробный сценарий и позволяют ему организовать работу, используя свои инструменты. Вы вызываете их так же, как любой другой skill, введя `/` и затем имя skill.

24 

25Встроенные skills перечислены вместе со встроенными командами в [справочнике команд](/ru/commands), отмечены как **Skill** в столбце Purpose.

26 

27## Начало работы

28 

29### Создайте свой первый skill

30 

31Этот пример создаёт skill, который учит Claude объяснять код, используя визуальные диаграммы и аналогии. Поскольку он использует frontmatter по умолчанию, Claude может загружать его автоматически, когда вы спрашиваете, как что-то работает, или вы можете вызвать его напрямую с помощью `/explain-code`.

32 

33<Steps>

34 <Step title="Создайте каталог skill">

35 Создайте каталог для skill в папке личных skills. Личные skills доступны во всех ваших проектах.

36 

37 ```bash theme={null}

38 mkdir -p ~/.claude/skills/explain-code

39 ```

40 </Step>

41 

42 <Step title="Напишите SKILL.md">

43 Каждому skill нужен файл `SKILL.md` с двумя частями: YAML frontmatter (между маркерами `---`), который говорит Claude, когда использовать skill, и содержимое markdown с инструкциями, которые Claude следует при вызове skill. Имя каталога становится `/slash-command`, а `description` помогает Claude решить, когда загружать его автоматически.

44 

45 Создайте `~/.claude/skills/explain-code/SKILL.md`:

46 

47 ```yaml theme={null}

48 ---

49 description: Explains code with visual diagrams and analogies. Use when explaining how code works, teaching about a codebase, or when the user asks "how does this work?"

50 ---

51 

52 When explaining code, always include:

53 

54 1. **Start with an analogy**: Compare the code to something from everyday life

55 2. **Draw a diagram**: Use ASCII art to show the flow, structure, or relationships

56 3. **Walk through the code**: Explain step-by-step what happens

57 4. **Highlight a gotcha**: What's a common mistake or misconception?

58 

59 Keep explanations conversational. For complex concepts, use multiple analogies.

60 ```

61 </Step>

62 

63 <Step title="Протестируйте skill">

64 Вы можете протестировать его двумя способами:

65 

66 **Позвольте Claude вызвать его автоматически**, задав вопрос, который соответствует описанию:

67 

68 ```text theme={null}

69 How does this code work?

70 ```

71 

72 **Или вызовите его напрямую** с именем skill:

73 

74 ```text theme={null}

75 /explain-code src/auth/login.ts

76 ```

77 

78 В любом случае Claude должен включить аналогию и ASCII диаграмму в своё объяснение.

79 </Step>

80</Steps>

81 

82### Где находятся skills

83 

84Место, где вы сохраняете skill, определяет, кто может его использовать:

85 

86| Местоположение | Путь | Применяется к |

87| :------------- | :------------------------------------------------------- | :----------------------------------- |

88| Enterprise | См. [управляемые параметры](/ru/settings#settings-files) | Все пользователи в вашей организации |

89| Personal | `~/.claude/skills/<skill-name>/SKILL.md` | Все ваши проекты |

90| Project | `.claude/skills/<skill-name>/SKILL.md` | Только этот проект |

91| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Где включен плагин |

92 

93Когда skills имеют одинаковые имена на разных уровнях, enterprise переопределяет personal, а personal переопределяет project. Plugin skills используют пространство имён `plugin-name:skill-name`, поэтому они не могут конфликтовать с другими уровнями. Если у вас есть файлы в `.claude/commands/`, они работают так же, но если skill и команда имеют одинаковое имя, skill имеет приоритет.

94 

95#### Обнаружение живых изменений

96 

97Claude Code следит за каталогами skills на предмет изменений файлов. Добавление, редактирование или удаление skill в `~/.claude/skills/`, в проекте `.claude/skills/` или в `.claude/skills/` внутри каталога `--add-dir` вступает в силу в текущей сессии без перезагрузки. Создание каталога skills верхнего уровня, который не существовал при запуске сессии, требует перезагрузки Claude Code, чтобы новый каталог можно было отслеживать.

98 

99#### Автоматическое обнаружение из вложенных каталогов

100 

101Когда вы работаете с файлами в подкаталогах, Claude Code автоматически обнаруживает skills из вложенных каталогов `.claude/skills/`. Например, если вы редактируете файл в `packages/frontend/`, Claude Code также ищет skills в `packages/frontend/.claude/skills/`. Это поддерживает настройки monorepo, где пакеты имеют свои собственные skills.

102 

103Каждый skill — это каталог с `SKILL.md` в качестве точки входа:

104 

105```text theme={null}

106my-skill/

107├── SKILL.md # Main instructions (required)

108├── template.md # Template for Claude to fill in

109├── examples/

110│ └── sample.md # Example output showing expected format

111└── scripts/

112 └── validate.sh # Script Claude can execute

113```

114 

115`SKILL.md` содержит основные инструкции и является обязательным. Другие файлы необязательны и позволяют вам создавать более мощные skills: шаблоны для заполнения Claude, примеры выходных данных, показывающие ожидаемый формат, скрипты, которые Claude может выполнять, или подробную справочную документацию. Ссылайтесь на эти файлы из вашего `SKILL.md`, чтобы Claude знал, что они содержат и когда их загружать. См. [Добавьте вспомогательные файлы](#add-supporting-files) для получения дополнительной информации.

116 

117<Note>

118 Файлы в `.claude/commands/` по-прежнему работают и поддерживают тот же [frontmatter](#frontmatter-reference). Skills рекомендуются, так как они поддерживают дополнительные функции, такие как вспомогательные файлы.

119</Note>

120 

121#### Skills из дополнительных каталогов

122 

123Флаг `--add-dir` [предоставляет доступ к файлам](/ru/permissions#additional-directories-grant-file-access-not-configuration) скорее, чем конфигурацию обнаружения, но skills — это исключение: `.claude/skills/` в добавленном каталоге загружается автоматически. См. [Обнаружение живых изменений](#live-change-detection) для того, как правки подхватываются во время сессии.

124 

125Другая конфигурация `.claude/`, такая как subagents, команды и стили выходных данных, не загружается из дополнительных каталогов. См. [таблицу исключений](/ru/permissions#additional-directories-grant-file-access-not-configuration) для полного списка того, что загружается и что не загружается, и рекомендуемые способы совместного использования конфигурации между проектами.

126 

127<Note>

128 Файлы CLAUDE.md из каталогов `--add-dir` не загружаются по умолчанию. Чтобы загружать их, установите `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1`. См. [Загрузка из дополнительных каталогов](/ru/memory#load-from-additional-directories).

129</Note>

130 

131## Настройка skills

132 

133Skills настраиваются через YAML frontmatter в верхней части `SKILL.md` и содержимое markdown, которое следует.

134 

135### Типы содержимого skill

136 

137Файлы skill могут содержать любые инструкции, но размышление о том, как вы хотите их вызывать, помогает направить, что включить:

138 

139**Справочное содержимое** добавляет знания, которые Claude применяет к вашей текущей работе. Соглашения, паттерны, руководства по стилю, знания предметной области. Это содержимое выполняется встроенно, поэтому Claude может использовать его вместе с контекстом вашего разговора.

140 

141```yaml theme={null}

142---

143name: api-conventions

144description: API design patterns for this codebase

145---

146 

147When writing API endpoints:

148- Use RESTful naming conventions

149- Return consistent error formats

150- Include request validation

151```

152 

153**Содержимое задачи** даёт Claude пошаговые инструкции для конкретного действия, такого как развёртывания, коммиты или генерация кода. Это часто действия, которые вы хотите вызвать напрямую с помощью `/skill-name`, а не позволять Claude решать, когда их запускать. Добавьте `disable-model-invocation: true`, чтобы предотвратить автоматическое срабатывание Claude.

154 

155```yaml theme={null}

156---

157name: deploy

158description: Deploy the application to production

159context: fork

160disable-model-invocation: true

161---

162 

163Deploy the application:

1641. Run the test suite

1652. Build the application

1663. Push to the deployment target

167```

168 

169Ваш `SKILL.md` может содержать что угодно, но размышление о том, как вы хотите вызывать skill (вы, Claude или оба) и где вы хотите его запускать (встроенно или в subagent), помогает направить, что включить. Для сложных skills вы также можете [добавить вспомогательные файлы](#add-supporting-files), чтобы сохранить основной skill сосредоточенным.

170 

171### Справочник frontmatter

172 

173Помимо содержимого markdown, вы можете настроить поведение skill, используя поля YAML frontmatter между маркерами `---` в верхней части вашего файла `SKILL.md`:

174 

175```yaml theme={null}

176---

177name: my-skill

178description: What this skill does

179disable-model-invocation: true

180allowed-tools: Read Grep

181---

182 

183Your skill instructions here...

184```

185 

186Все поля необязательны. Только `description` рекомендуется, чтобы Claude знал, когда использовать skill.

187 

188| Поле | Обязательно | Описание |

189| :------------------------- | :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

190| `name` | Нет | Отображаемое имя для skill. Если опущено, использует имя каталога. Только строчные буквы, цифры и дефисы (максимум 64 символа). |

191| `description` | Рекомендуется | Что делает skill и когда его использовать. Claude использует это, чтобы решить, когда применять skill. Если опущено, использует первый абзац содержимого markdown. Комбинированный текст `description` и `when_to_use` усекается на 1 536 символах в списке skills для уменьшения использования контекста. |

192| `when_to_use` | Нет | Дополнительный контекст для того, когда Claude должен вызвать skill, такой как фразы-триггеры или примеры запросов. Добавляется к `description` в списке skills и учитывается в лимите 1 536 символов. |

193| `argument-hint` | Нет | Подсказка, показываемая при автодополнении, чтобы указать ожидаемые аргументы. Пример: `[issue-number]` или `[filename] [format]`. |

194| `arguments` | Нет | Именованные позиционные аргументы для [подстановки `$name`](#available-string-substitutions) в содержимом skill. Принимает строку, разделённую пробелами, или список YAML. Имена соответствуют позициям аргументов по порядку. |

195| `disable-model-invocation` | Нет | Установите на `true`, чтобы предотвратить автоматическую загрузку этого skill Claude. Используйте для рабочих процессов, которые вы хотите запустить вручную с помощью `/name`. Также предотвращает [предварительную загрузку skill в subagents](/ru/sub-agents#preload-skills-into-subagents). По умолчанию: `false`. |

196| `user-invocable` | Нет | Установите на `false`, чтобы скрыть из меню `/`. Используйте для фоновых знаний, которые пользователи не должны вызывать напрямую. По умолчанию: `true`. |

197| `allowed-tools` | Нет | Инструменты, которые Claude может использовать без запроса разрешения, когда этот skill активен. Принимает строку, разделённую пробелами, или список YAML. |

198| `model` | Нет | Модель для использования, когда этот skill активен. Переопределение применяется для остальной части текущего хода и не сохраняется в параметры; модель сессии возобновляется при вашем следующем запросе. Принимает те же значения, что и [`/model`](/ru/model-config), или `inherit`, чтобы сохранить активную модель. |

199| `effort` | Нет | [Уровень усилий](/ru/model-config#adjust-effort-level) при активном этом skill. Переопределяет уровень усилий сессии. По умолчанию: наследует из сессии. Опции: `low`, `medium`, `high`, `xhigh`, `max`; доступные уровни зависят от модели. |

200| `context` | Нет | Установите на `fork`, чтобы запустить в контексте forked subagent. |

201| `agent` | Нет | Какой тип subagent использовать, когда установлен `context: fork`. |

202| `hooks` | Нет | Hooks, ограниченные жизненным циклом этого skill. См. [Hooks в skills и agents](/ru/hooks#hooks-in-skills-and-agents) для формата конфигурации. |

203| `paths` | Нет | Glob паттерны, которые ограничивают, когда этот skill активируется. Принимает строку, разделённую запятыми, или список YAML. Когда установлено, Claude загружает skill автоматически только при работе с файлами, соответствующими паттернам. Использует тот же формат, что и [правила, специфичные для пути](/ru/memory#path-specific-rules). |

204| `shell` | Нет | Shell для использования в блоках `` !`command` `` и ` ```! ` в этом skill. Принимает `bash` (по умолчанию) или `powershell`. Установка `powershell` запускает встроенные команды shell через PowerShell на Windows. Требует `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. |

205 

206#### Доступные подстановки строк

207 

208Skills поддерживают подстановку строк для динамических значений в содержимом skill:

209 

210| Переменная | Описание |

211| :--------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

212| `$ARGUMENTS` | Все аргументы, переданные при вызове skill. Если `$ARGUMENTS` отсутствует в содержимом, аргументы добавляются как `ARGUMENTS: <value>`. |

213| `$ARGUMENTS[N]` | Доступ к конкретному аргументу по индексу на основе 0, например `$ARGUMENTS[0]` для первого аргумента. |

214| `$N` | Сокращение для `$ARGUMENTS[N]`, например `$0` для первого аргумента или `$1` для второго. |

215| `$name` | Именованный аргумент, объявленный в списке frontmatter [`arguments`](#frontmatter-reference). Имена соответствуют позициям по порядку, поэтому с `arguments: [issue, branch]` заполнитель `$issue` расширяется до первого аргумента и `$branch` ко второму. |

216| `${CLAUDE_SESSION_ID}` | Текущий ID сессии. Полезно для логирования, создания файлов, специфичных для сессии, или корреляции выходных данных skill с сессиями. |

217| `${CLAUDE_EFFORT}` | Текущий уровень усилий: `low`, `medium`, `high`, `xhigh` или `max`. Используйте это, чтобы адаптировать инструкции skill к активному параметру усилий. |

218| `${CLAUDE_SKILL_DIR}` | Каталог, содержащий файл `SKILL.md` skill. Для plugin skills это подкаталог skill в плагине, а не корень плагина. Используйте это в командах bash injection для ссылки на скрипты или файлы, поставляемые с skill, независимо от текущего рабочего каталога. |

219 

220Индексированные аргументы используют кавычки в стиле shell, поэтому оборачивайте многословные значения в кавычки, чтобы передать их как один аргумент. Например, `/my-skill "hello world" second` заменяет `$0` на `hello world` и `$1` на `second`. Заполнитель `$ARGUMENTS` всегда расширяется до полной строки аргумента в том виде, в котором она была введена.

221 

222**Пример использования подстановок:**

223 

224```yaml theme={null}

225---

226name: session-logger

227description: Log activity for this session

228---

229 

230Log the following to logs/${CLAUDE_SESSION_ID}.log:

231 

232$ARGUMENTS

233```

234 

235### Добавьте вспомогательные файлы

236 

237Skills могут включать несколько файлов в их каталоге. Это сохраняет `SKILL.md` сосредоточенным на основном, позволяя Claude получать доступ к подробному справочному материалу только при необходимости. Большие справочные документы, спецификации API или коллекции примеров не нужно загружать в контекст каждый раз, когда запускается skill.

238 

239```text theme={null}

240my-skill/

241├── SKILL.md (required - overview and navigation)

242├── reference.md (detailed API docs - loaded when needed)

243├── examples.md (usage examples - loaded when needed)

244└── scripts/

245 └── helper.py (utility script - executed, not loaded)

246```

247 

248Ссылайтесь на вспомогательные файлы из `SKILL.md`, чтобы Claude знал, что содержит каждый файл и когда его загружать:

249 

250```markdown theme={null}

251## Additional resources

252 

253- For complete API details, see [reference.md](reference.md)

254- For usage examples, see [examples.md](examples.md)

255```

256 

257<Tip>Сохраняйте `SKILL.md` под 500 строк. Переместите подробный справочный материал в отдельные файлы.</Tip>

258 

259### Управляйте тем, кто вызывает skill

260 

261По умолчанию как вы, так и Claude можете вызывать любой skill. Вы можете ввести `/skill-name`, чтобы вызвать его напрямую, и Claude может загружать его автоматически при необходимости для вашего разговора. Два поля frontmatter позволяют вам ограничить это:

262 

263* **`disable-model-invocation: true`**: Только вы можете вызвать skill. Используйте это для рабочих процессов с побочными эффектами или которые вы хотите контролировать по времени, такие как `/commit`, `/deploy` или `/send-slack-message`. Вы не хотите, чтобы Claude решил развернуть, потому что ваш код выглядит готовым.

264 

265* **`user-invocable: false`**: Только Claude может вызвать skill. Используйте это для фоновых знаний, которые не являются действенными как команда. Skill `legacy-system-context` объясняет, как работает старая система. Claude должен знать это при необходимости, но `/legacy-system-context` не является значимым действием для пользователей.

266 

267Этот пример создаёт skill развёртывания, который может запустить только вы. Поле `disable-model-invocation: true` предотвращает автоматическое запуск Claude:

268 

269```yaml theme={null}

270---

271name: deploy

272description: Deploy the application to production

273disable-model-invocation: true

274---

275 

276Deploy $ARGUMENTS to production:

277 

2781. Run the test suite

2792. Build the application

2803. Push to the deployment target

2814. Verify the deployment succeeded

282```

283 

284Вот как два поля влияют на вызов и загрузку контекста:

285 

286| Frontmatter | Вы можете вызвать | Claude может вызвать | Когда загружается в контекст |

287| :------------------------------- | :---------------- | :------------------- | :----------------------------------------------------------------- |

288| (по умолчанию) | Да | Да | Описание всегда в контексте, полный skill загружается при вызове |

289| `disable-model-invocation: true` | Да | Нет | Описание не в контексте, полный skill загружается при вашем вызове |

290| `user-invocable: false` | Нет | Да | Описание всегда в контексте, полный skill загружается при вызове |

291 

292<Note>

293 В обычной сессии описания skills загружаются в контекст, чтобы Claude знал, что доступно, но полное содержимое skill загружается только при вызове. [Subagents с предварительно загруженными skills](/ru/sub-agents#preload-skills-into-subagents) работают иначе: полное содержимое skill внедряется при запуске.

294</Note>

295 

296### Жизненный цикл содержимого skill

297 

298Когда вы или Claude вызываете skill, отрендеренное содержимое `SKILL.md` входит в разговор как одно сообщение и остаётся там для остальной части сессии. Claude Code не перечитывает файл skill при последующих ходах, поэтому пишите рекомендации, которые должны применяться на протяжении всей задачи, как постоянные инструкции, а не одноразовые шаги.

299 

300[Auto-compact](/ru/how-claude-code-works#when-context-fills-up) переносит вызванные skills в рамках бюджета токенов. Когда разговор суммируется для освобождения контекста, Claude Code повторно прикрепляет самый последний вызов каждого skill после сводки, сохраняя первые 5 000 токенов каждого. Повторно прикреплённые skills делят объединённый бюджет в 25 000 токенов. Claude Code заполняет этот бюджет, начиная с самого недавно вызванного skill, поэтому более старые skills могут быть полностью удалены после компактирования, если вы вызвали много в одной сессии.

301 

302Если skill кажется перестаёт влиять на поведение после первого ответа, содержимое обычно всё ещё присутствует, и модель выбирает другие инструменты или подходы. Усильте описание skill и инструкции, чтобы модель продолжала его предпочитать, или используйте [hooks](/ru/hooks) для детерминированного обеспечения поведения. Если skill большой или вы вызвали несколько других после него, повторно вызовите его после компактирования, чтобы восстановить полное содержимое.

303 

304### Предварительно одобрите инструменты для skill

305 

306Поле `allowed-tools` предоставляет разрешение для перечисленных инструментов, пока skill активен, поэтому Claude может использовать их без запроса вашего одобрения. Это не ограничивает, какие инструменты доступны: каждый инструмент остаётся вызываемым, и ваши [параметры разрешений](/ru/permissions) по-прежнему управляют инструментами, которые не указаны.

307 

308Этот skill позволяет Claude запускать команды git без одобрения за использование, когда вы вызываете его:

309 

310```yaml theme={null}

311---

312name: commit

313description: Stage and commit the current changes

314disable-model-invocation: true

315allowed-tools: Bash(git add *) Bash(git commit *) Bash(git status *)

316---

317```

318 

319Чтобы заблокировать skill от использования определённых инструментов, добавьте правила отказа в ваши [параметры разрешений](/ru/permissions) вместо этого.

320 

321### Передайте аргументы в skills

322 

323Как вы, так и Claude можете передавать аргументы при вызове skill. Аргументы доступны через заполнитель `$ARGUMENTS`.

324 

325Этот skill исправляет проблему GitHub по номеру. Заполнитель `$ARGUMENTS` заменяется на всё, что следует за именем skill:

326 

327```yaml theme={null}

328---

329name: fix-issue

330description: Fix a GitHub issue

331disable-model-invocation: true

332---

333 

334Fix GitHub issue $ARGUMENTS following our coding standards.

335 

3361. Read the issue description

3372. Understand the requirements

3383. Implement the fix

3394. Write tests

3405. Create a commit

341```

342 

343Когда вы запускаете `/fix-issue 123`, Claude получает "Fix GitHub issue 123 following our coding standards..."

344 

345Если вы вызываете skill с аргументами, но skill не включает `$ARGUMENTS`, Claude Code добавляет `ARGUMENTS: <your input>` в конец содержимого skill, чтобы Claude всё ещё видел, что вы ввели.

346 

347Для доступа к отдельным аргументам по позиции используйте `$ARGUMENTS[N]` или более короткий `$N`:

348 

349```yaml theme={null}

350---

351name: migrate-component

352description: Migrate a component from one framework to another

353---

354 

355Migrate the $ARGUMENTS[0] component from $ARGUMENTS[1] to $ARGUMENTS[2].

356Preserve all existing behavior and tests.

357```

358 

359Запуск `/migrate-component SearchBar React Vue` заменяет `$ARGUMENTS[0]` на `SearchBar`, `$ARGUMENTS[1]` на `React` и `$ARGUMENTS[2]` на `Vue`. Тот же skill, используя сокращение `$N`:

360 

361```yaml theme={null}

362---

363name: migrate-component

364description: Migrate a component from one framework to another

365---

366 

367Migrate the $0 component from $1 to $2.

368Preserve all existing behavior and tests.

369```

370 

371## Продвинутые паттерны

372 

373### Внедрите динамический контекст

374 

375Синтаксис `` !`<command>` `` запускает команды оболочки перед отправкой содержимого skill Claude. Выходные данные команды заменяют заполнитель, поэтому Claude получает фактические данные, а не саму команду.

376 

377Этот skill суммирует pull request, получая живые данные PR с помощью GitHub CLI. Команды `` !`gh pr diff` `` и другие запускаются первыми, и их выходные данные вставляются в подсказку:

378 

379```yaml theme={null}

380---

381name: pr-summary

382description: Summarize changes in a pull request

383context: fork

384agent: Explore

385allowed-tools: Bash(gh *)

386---

387 

388## Pull request context

389- PR diff: !`gh pr diff`

390- PR comments: !`gh pr view --comments`

391- Changed files: !`gh pr diff --name-only`

392 

393## Your task

394Summarize this pull request...

395```

396 

397Когда этот skill запускается:

398 

3991. Каждый `` !`<command>` `` выполняется немедленно (перед тем, как Claude что-либо увидит)

4002. Выходные данные заменяют заполнитель в содержимом skill

4013. Claude получает полностью отрендеренную подсказку с фактическими данными PR

402 

403Это предварительная обработка, а не то, что Claude выполняет. Claude видит только окончательный результат.

404 

405Для многострочных команд используйте блок кода, открытый с ` ```! ` вместо встроенной формы:

406 

407````markdown theme={null}

408## Environment

409```!

410node --version

411npm --version

412git status --short

413```

414````

415 

416Чтобы отключить это поведение для skills и пользовательских команд из источников пользователя, проекта, плагина или [дополнительного каталога](#skills-from-additional-directories), установите `"disableSkillShellExecution": true` в [параметры](/ru/settings). Каждая команда заменяется на `[shell command execution disabled by policy]` вместо запуска. Встроенные и управляемые skills не затронуты. Этот параметр наиболее полезен в [управляемых параметрах](/ru/permissions#managed-settings), где пользователи не могут его переопределить.

417 

418<Tip>

419 Чтобы включить [расширенное мышление](/ru/common-workflows#use-extended-thinking-thinking-mode) в skill, включите слово "ultrathink" где-нибудь в содержимо skill.

420</Tip>

421 

422### Запустите skills в subagent

423 

424Добавьте `context: fork` в ваш frontmatter, когда вы хотите, чтобы skill запускался в изоляции. Содержимое skill становится подсказкой, которая управляет subagent. Он не будет иметь доступ к истории вашего разговора.

425 

426<Warning>

427 `context: fork` имеет смысл только для skills с явными инструкциями. Если ваш skill содержит рекомендации, такие как "используйте эти соглашения API" без задачи, subagent получает рекомендации, но не действенную подсказку, и возвращается без значимого выходного сигнала.

428</Warning>

429 

430Skills и [subagents](/ru/sub-agents) работают вместе в двух направлениях:

431 

432| Подход | Системная подсказка | Задача | Также загружает |

433| :------------------------ | :---------------------------------------- | :----------------------------- | :-------------------------------------------- |

434| Skill с `context: fork` | От типа агента (`Explore`, `Plan` и т.д.) | Содержимое SKILL.md | CLAUDE.md |

435| Subagent с полем `skills` | Тело markdown subagent | Сообщение делегирования Claude | Предварительно загруженные skills + CLAUDE.md |

436 

437С `context: fork` вы пишете задачу в своём skill и выбираете тип агента для её выполнения. Для обратного (определение пользовательского subagent, который использует skills как справочный материал), см. [Subagents](/ru/sub-agents#preload-skills-into-subagents).

438 

439#### Пример: Research skill, используя Explore agent

440 

441Этот skill запускает исследование в forked Explore agent. Содержимое skill становится задачей, и агент предоставляет инструменты только для чтения, оптимизированные для исследования кодовой базы:

442 

443```yaml theme={null}

444---

445name: deep-research

446description: Research a topic thoroughly

447context: fork

448agent: Explore

449---

450 

451Research $ARGUMENTS thoroughly:

452 

4531. Find relevant files using Glob and Grep

4542. Read and analyze the code

4553. Summarize findings with specific file references

456```

457 

458Когда этот skill запускается:

459 

4601. Создаётся новый изолированный контекст

4612. Subagent получает содержимое skill в качестве своей подсказки ("Research \$ARGUMENTS thoroughly...")

4623. Поле `agent` определяет среду выполнения (модель, инструменты и разрешения)

4634. Результаты суммируются и возвращаются в ваш основной разговор

464 

465Поле `agent` указывает, какую конфигурацию subagent использовать. Опции включают встроенные агенты (`Explore`, `Plan`, `general-purpose`) или любой пользовательский subagent из `.claude/agents/`. Если опущено, использует `general-purpose`.

466 

467### Ограничьте доступ Claude к skills

468 

469По умолчанию Claude может вызывать любой skill, у которого не установлен `disable-model-invocation: true`. Skills, которые определяют `allowed-tools`, предоставляют Claude доступ к этим инструментам без одобрения за использование, когда skill активен. Ваши [параметры разрешений](/ru/permissions) по-прежнему управляют поведением одобрения базовой линии для всех остальных инструментов. Несколько встроенных команд также доступны через инструмент Skill, включая `/init`, `/review` и `/security-review`. Другие встроенные команды, такие как `/compact`, недоступны.

470 

471Три способа управления, какие skills может вызывать Claude:

472 

473**Отключите все skills**, отказав в инструменте Skill в `/permissions`:

474 

475```text theme={null}

476# Add to deny rules:

477Skill

478```

479 

480**Разрешите или запретите конкретные skills**, используя [правила разрешений](/ru/permissions):

481 

482```text theme={null}

483# Allow only specific skills

484Skill(commit)

485Skill(review-pr *)

486 

487# Deny specific skills

488Skill(deploy *)

489```

490 

491Синтаксис разрешений: `Skill(name)` для точного совпадения, `Skill(name *)` для совпадения префикса с любыми аргументами.

492 

493**Скройте отдельные skills**, добавив `disable-model-invocation: true` в их frontmatter. Это полностью удаляет skill из контекста Claude.

494 

495<Note>

496 Поле `user-invocable` управляет только видимостью меню, а не доступом инструмента Skill. Используйте `disable-model-invocation: true`, чтобы заблокировать программный вызов.

497</Note>

498 

499## Делитесь skills

500 

501Skills могут распространяться на разных уровнях в зависимости от вашей аудитории:

502 

503* **Project skills**: Зафиксируйте `.claude/skills/` в контроле версий

504* **Plugins**: Создайте каталог `skills/` в вашем [плагине](/ru/plugins)

505* **Managed**: Развёртывайте организацию-широко через [управляемые параметры](/ru/settings#settings-files)

506 

507### Генерируйте визуальный выходной сигнал

508 

509Skills могут объединять и запускать скрипты на любом языке, давая Claude возможности, выходящие за рамки того, что возможно в одной подсказке. Один мощный паттерн — генерирование визуального выходного сигнала: интерактивные HTML файлы, которые открываются в вашем браузере для исследования данных, отладки или создания отчётов.

510 

511Этот пример создаёт обозреватель кодовой базы: интерактивное древовидное представление, где вы можете развёртывать и свёртывать каталоги, видеть размеры файлов с первого взгляда и определять типы файлов по цвету.

512 

513Создайте каталог Skill:

514 

515```bash theme={null}

516mkdir -p ~/.claude/skills/codebase-visualizer/scripts

517```

518 

519Создайте `~/.claude/skills/codebase-visualizer/SKILL.md`. Описание говорит Claude, когда активировать этот Skill, а инструкции говорят Claude запустить поставляемый скрипт:

520 

521````yaml theme={null}

522---

523name: codebase-visualizer

524description: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.

525allowed-tools: Bash(python *)

526---

527 

528# Codebase Visualizer

529 

530Generate an interactive HTML tree view that shows your project's file structure with collapsible directories.

531 

532## Usage

533 

534Run the visualization script from your project root:

535 

536```bash

537python ~/.claude/skills/codebase-visualizer/scripts/visualize.py .

538```

539 

540This creates `codebase-map.html` in the current directory and opens it in your default browser.

541 

542## What the visualization shows

543 

544- **Collapsible directories**: Click folders to expand/collapse

545- **File sizes**: Displayed next to each file

546- **Colors**: Different colors for different file types

547- **Directory totals**: Shows aggregate size of each folder

548````

549 

550Создайте `~/.claude/skills/codebase-visualizer/scripts/visualize.py`. Этот скрипт сканирует дерево каталогов и генерирует самодостаточный HTML файл с:

551 

552* **Боковой панелью сводки**, показывающей количество файлов, количество каталогов, общий размер и количество типов файлов

553* **Столбчатой диаграммой**, разбивающей кодовую базу по типу файла (топ 8 по размеру)

554* **Свёртываемым деревом**, где вы можете развёртывать и свёртывать каталоги, с цветовыми индикаторами типов файлов

555 

556Скрипт требует Python, но использует только встроенные библиотеки, поэтому нет пакетов для установки:

557 

558```python expandable theme={null}

559#!/usr/bin/env python3

560"""Generate an interactive collapsible tree visualization of a codebase."""

561 

562import json

563import sys

564import webbrowser

565from pathlib import Path

566from collections import Counter

567 

568IGNORE = {'.git', 'node_modules', '__pycache__', '.venv', 'venv', 'dist', 'build'}

569 

570def scan(path: Path, stats: dict) -> dict:

571 result = {"name": path.name, "children": [], "size": 0}

572 try:

573 for item in sorted(path.iterdir()):

574 if item.name in IGNORE or item.name.startswith('.'):

575 continue

576 if item.is_file():

577 size = item.stat().st_size

578 ext = item.suffix.lower() or '(no ext)'

579 result["children"].append({"name": item.name, "size": size, "ext": ext})

580 result["size"] += size

581 stats["files"] += 1

582 stats["extensions"][ext] += 1

583 stats["ext_sizes"][ext] += size

584 elif item.is_dir():

585 stats["dirs"] += 1

586 child = scan(item, stats)

587 if child["children"]:

588 result["children"].append(child)

589 result["size"] += child["size"]

590 except PermissionError:

591 pass

592 return result

593 

594def generate_html(data: dict, stats: dict, output: Path) -> None:

595 ext_sizes = stats["ext_sizes"]

596 total_size = sum(ext_sizes.values()) or 1

597 sorted_exts = sorted(ext_sizes.items(), key=lambda x: -x[1])[:8]

598 colors = {

599 '.js': '#f7df1e', '.ts': '#3178c6', '.py': '#3776ab', '.go': '#00add8',

600 '.rs': '#dea584', '.rb': '#cc342d', '.css': '#264de4', '.html': '#e34c26',

601 '.json': '#6b7280', '.md': '#083fa1', '.yaml': '#cb171e', '.yml': '#cb171e',

602 '.mdx': '#083fa1', '.tsx': '#3178c6', '.jsx': '#61dafb', '.sh': '#4eaa25',

603 }

604 lang_bars = "".join(

605 f'<div class="bar-row"><span class="bar-label">{ext}</span>'

606 f'<div class="bar" style="width:{(size/total_size)*100}%;background:{colors.get(ext,"#6b7280")}"></div>'

607 f'<span class="bar-pct">{(size/total_size)*100:.1f}%</span></div>'

608 for ext, size in sorted_exts

609 )

610 def fmt(b):

611 if b < 1024: return f"{b} B"

612 if b < 1048576: return f"{b/1024:.1f} KB"

613 return f"{b/1048576:.1f} MB"

614 

615 html = f'''<!DOCTYPE html>

616<html><head>

617 <meta charset="utf-8"><title>Codebase Explorer</title>

618 <style>

619 body {{ font: 14px/1.5 system-ui, sans-serif; margin: 0; background: #1a1a2e; color: #eee; }}

620 .container {{ display: flex; height: 100vh; }}

621 .sidebar {{ width: 280px; background: #252542; padding: 20px; border-right: 1px solid #3d3d5c; overflow-y: auto; flex-shrink: 0; }}

622 .main {{ flex: 1; padding: 20px; overflow-y: auto; }}

623 h1 {{ margin: 0 0 10px 0; font-size: 18px; }}

624 h2 {{ margin: 20px 0 10px 0; font-size: 14px; color: #888; text-transform: uppercase; }}

625 .stat {{ display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #3d3d5c; }}

626 .stat-value {{ font-weight: bold; }}

627 .bar-row {{ display: flex; align-items: center; margin: 6px 0; }}

628 .bar-label {{ width: 55px; font-size: 12px; color: #aaa; }}

629 .bar {{ height: 18px; border-radius: 3px; }}

630 .bar-pct {{ margin-left: 8px; font-size: 12px; color: #666; }}

631 .tree {{ list-style: none; padding-left: 20px; }}

632 details {{ cursor: pointer; }}

633 summary {{ padding: 4px 8px; border-radius: 4px; }}

634 summary:hover {{ background: #2d2d44; }}

635 .folder {{ color: #ffd700; }}

636 .file {{ display: flex; align-items: center; padding: 4px 8px; border-radius: 4px; }}

637 .file:hover {{ background: #2d2d44; }}

638 .size {{ color: #888; margin-left: auto; font-size: 12px; }}

639 .dot {{ width: 8px; height: 8px; border-radius: 50%; margin-right: 8px; }}

640 </style>

641</head><body>

642 <div class="container">

643 <div class="sidebar">

644 <h1>📊 Summary</h1>

645 <div class="stat"><span>Files</span><span class="stat-value">{stats["files"]:,}</span></div>

646 <div class="stat"><span>Directories</span><span class="stat-value">{stats["dirs"]:,}</span></div>

647 <div class="stat"><span>Total size</span><span class="stat-value">{fmt(data["size"])}</span></div>

648 <div class="stat"><span>File types</span><span class="stat-value">{len(stats["extensions"])}</span></div>

649 <h2>By file type</h2>

650 {lang_bars}

651 </div>

652 <div class="main">

653 <h1>📁 {data["name"]}</h1>

654 <ul class="tree" id="root"></ul>

655 </div>

656 </div>

657 <script>

658 const data = {json.dumps(data)};

659 const colors = {json.dumps(colors)};

660 function fmt(b) {{ if (b < 1024) return b + ' B'; if (b < 1048576) return (b/1024).toFixed(1) + ' KB'; return (b/1048576).toFixed(1) + ' MB'; }}

661 function render(node, parent) {{

662 if (node.children) {{

663 const det = document.createElement('details');

664 det.open = parent === document.getElementById('root');

665 det.innerHTML = `<summary><span class="folder">📁 ${{node.name}}</span><span class="size">${{fmt(node.size)}}</span></summary>`;

666 const ul = document.createElement('ul'); ul.className = 'tree';

667 node.children.sort((a,b) => (b.children?1:0)-(a.children?1:0) || a.name.localeCompare(b.name));

668 node.children.forEach(c => render(c, ul));

669 det.appendChild(ul);

670 const li = document.createElement('li'); li.appendChild(det); parent.appendChild(li);

671 }} else {{

672 const li = document.createElement('li'); li.className = 'file';

673 li.innerHTML = `<span class="dot" style="background:${{colors[node.ext]||'#6b7280'}}"></span>${{node.name}}<span class="size">${{fmt(node.size)}}</span>`;

674 parent.appendChild(li);

675 }}

676 }}

677 data.children.forEach(c => render(c, document.getElementById('root')));

678 </script>

679</body></html>'''

680 output.write_text(html)

681 

682if __name__ == '__main__':

683 target = Path(sys.argv[1] if len(sys.argv) > 1 else '.').resolve()

684 stats = {"files": 0, "dirs": 0, "extensions": Counter(), "ext_sizes": Counter()}

685 data = scan(target, stats)

686 out = Path('codebase-map.html')

687 generate_html(data, stats, out)

688 print(f'Generated {out.absolute()}')

689 webbrowser.open(f'file://{out.absolute()}')

690```

691 

692Чтобы протестировать, откройте Claude Code в любом проекте и попросите "Visualize this codebase." Claude запускает скрипт, генерирует `codebase-map.html` и открывает его в вашем браузере.

693 

694Этот паттерн работает для любого визуального выходного сигнала: графики зависимостей, отчёты о покрытии тестами, документация API или визуализации схемы базы данных. Поставляемый скрипт выполняет тяжёлую работу, пока Claude обрабатывает оркестрацию.

695 

696## Устранение неполадок

697 

698### Skill не срабатывает

699 

700Если Claude не использует ваш skill при необходимости:

701 

7021. Проверьте, что описание включает ключевые слова, которые пользователи естественно скажут

7032. Убедитесь, что skill появляется в `What skills are available?`

7043. Попробуйте переформулировать ваш запрос, чтобы лучше соответствовать описанию

7054. Вызовите его напрямую с помощью `/skill-name`, если skill может быть вызван пользователем

706 

707### Skill срабатывает слишком часто

708 

709Если Claude использует ваш skill, когда вы этого не хотите:

710 

7111. Сделайте описание более конкретным

7122. Добавьте `disable-model-invocation: true`, если вы хотите только ручной вызов

713 

714### Описания skills обрезаны

715 

716Описания skills загружаются в контекст, чтобы Claude знал, что доступно. Все имена skills всегда включены, но если у вас много skills, описания сокращаются, чтобы соответствовать бюджету символов, что может удалить ключевые слова, которые Claude нужны для совпадения с вашим запросом. Бюджет масштабируется динамически на 1% контекстного окна, с резервным значением 8 000 символов.

717 

718Чтобы повысить лимит, установите переменную окружения `SLASH_COMMAND_TOOL_CHAR_BUDGET`. Или обрежьте текст `description` и `when_to_use` в источнике: поместите ключевой вариант использования в начало, так как комбинированный текст каждой записи ограничен 1 536 символами независимо от бюджета.

719 

720## Связанные ресурсы

721 

722* **[Отладка вашей конфигурации](/ru/debug-your-config)**: диагностируйте, почему skill не появляется или не срабатывает

723* **[Subagents](/ru/sub-agents)**: делегируйте задачи специализированным агентам

724* **[Plugins](/ru/plugins)**: упакуйте и распространяйте skills с другими расширениями

725* **[Hooks](/ru/hooks)**: автоматизируйте рабочие процессы вокруг событий инструментов

726* **[Memory](/ru/memory)**: управляйте файлами CLAUDE.md для постоянного контекста

727* **[Commands](/ru/commands)**: справочник для встроенных команд и встроенных skills

728* **[Permissions](/ru/permissions)**: управляйте доступом к инструментам и skills

slack.md +210 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Code в Slack

6 

7> Делегируйте задачи кодирования прямо из вашего рабочего пространства Slack

8 

9Claude Code в Slack приносит мощь Claude Code прямо в ваше рабочее пространство Slack. Когда вы упоминаете `@Claude` с задачей кодирования, Claude автоматически определяет намерение и создает сеанс Claude Code в веб-версии, позволяя вам делегировать работу по разработке, не покидая командные беседы.

10 

11Эта интеграция построена на существующем приложении Claude для Slack, но добавляет интеллектуальную маршрутизацию к Claude Code в веб-версии для запросов, связанных с кодированием.

12 

13## Варианты использования

14 

15* **Исследование и исправление ошибок**: Попросите Claude исследовать и исправить ошибки, как только они будут сообщены в каналах Slack.

16* **Быстрые проверки кода и модификации**: Пусть Claude реализует небольшие функции или рефакторит код на основе отзывов команды.

17* **Совместная отладка**: Когда обсуждения в команде предоставляют важный контекст (например, воспроизведение ошибок или отчеты пользователей), Claude может использовать эту информацию для информирования своего подхода к отладке.

18* **Параллельное выполнение задач**: Запустите задачи кодирования в Slack, пока вы продолжаете другую работу, получая уведомления по завершении.

19 

20## Предварительные требования

21 

22Перед использованием Claude Code в Slack убедитесь, что у вас есть следующее:

23 

24| Требование | Детали |

25| :----------------------- | :--------------------------------------------------------------------------------------------- |

26| План Claude | Pro, Max, Team или Enterprise с доступом к Claude Code (премиум-места) |

27| Claude Code в веб-версии | Доступ к [Claude Code в веб-версии](/ru/claude-code-on-the-web) должен быть включен |

28| Учетная запись GitHub | Подключена к Claude Code в веб-версии с по крайней мере одним аутентифицированным репозиторием |

29| Аутентификация Slack | Ваша учетная запись Slack связана с вашей учетной записью Claude через приложение Claude |

30 

31## Настройка Claude Code в Slack

32 

33<Steps>

34 <Step title="Установите приложение Claude в Slack">

35 Администратор рабочего пространства должен установить приложение Claude из Slack App Marketplace. Посетите [Slack App Marketplace](https://slack.com/marketplace/A08SF47R6P4) и нажмите "Add to Slack", чтобы начать процесс установки.

36 </Step>

37 

38 <Step title="Подключите вашу учетную запись Claude">

39 После установки приложения аутентифицируйте вашу индивидуальную учетную запись Claude:

40 

41 1. Откройте приложение Claude в Slack, нажав на "Claude" в разделе "Apps"

42 2. Перейдите на вкладку App Home

43 3. Нажмите "Connect", чтобы связать вашу учетную запись Slack с вашей учетной записью Claude

44 4. Завершите процесс аутентификации в вашем браузере

45 </Step>

46 

47 <Step title="Настройте Claude Code в веб-версии">

48 Убедитесь, что ваш Claude Code в веб-версии правильно настроен:

49 

50 * Посетите [claude.ai/code](https://claude.ai/code) и войдите с той же учетной записью, которую вы подключили к Slack

51 * Подключите вашу учетную запись GitHub, если она еще не подключена

52 * Аутентифицируйте по крайней мере один репозиторий, с которым вы хотите, чтобы Claude работал

53 </Step>

54 

55 <Step title="Выберите режим маршрутизации">

56 После подключения ваших учетных записей настройте, как Claude обрабатывает ваши сообщения в Slack. Перейдите на App Home Claude в Slack, чтобы найти параметр **Режим маршрутизации**.

57 

58 | Режим | Поведение |

59 | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

60 | **Только код** | Claude маршрутизирует все @mentions к сеансам Claude Code. Лучше всего для команд, использующих Claude в Slack исключительно для задач разработки. |

61 | **Код + Чат** | Claude анализирует каждое сообщение и интеллектуально маршрутизирует между Claude Code (для задач кодирования) и Claude Chat (для написания, анализа и общих вопросов). Лучше всего для команд, которые хотят единую точку входа @Claude для всех типов работы. |

62 

63 <Note>

64 В режиме "Код + Чат", если Claude маршрутизирует сообщение в Chat, но вы хотели сеанс кодирования, вы можете нажать "Retry as Code", чтобы создать сеанс Claude Code. Аналогично, если он маршрутизирован в Code, но вы хотели сеанс Chat, вы можете выбрать этот вариант в этой цепочке.

65 </Note>

66 </Step>

67</Steps>

68 

69## Как это работает

70 

71### Автоматическое обнаружение

72 

73Когда вы упоминаете @Claude в канале или цепочке Slack, Claude автоматически анализирует ваше сообщение, чтобы определить, является ли это задачей кодирования. Если Claude обнаружит намерение кодирования, он маршрутизирует ваш запрос к Claude Code в веб-версии вместо ответа в качестве обычного помощника чата.

74 

75Вы также можете явно указать Claude обрабатывать запрос как задачу кодирования, даже если он не обнаружит это автоматически.

76 

77<Note>

78 Claude Code в Slack работает только в каналах (публичных или приватных). Он не работает в прямых сообщениях (DM).

79</Note>

80 

81### Сбор контекста

82 

83**Из цепочек**: Когда вы упоминаете Claude в цепочке, он собирает контекст из всех сообщений в этой цепочке, чтобы понять полную беседу.

84 

85**Из каналов**: Когда упоминается непосредственно в канале, Claude смотрит на недавние сообщения канала для получения соответствующего контекста.

86 

87Этот контекст помогает Claude понять проблему, выбрать соответствующий репозиторий и информировать свой подход к задаче.

88 

89<Warning>

90 Когда @Claude вызывается в Slack, Claude получает доступ к контексту беседы, чтобы лучше понять ваш запрос. Claude может следовать указаниям из других сообщений в контексте, поэтому пользователи должны убедиться, что используют Claude только в доверенных беседах Slack.

91</Warning>

92 

93### Поток сеанса

94 

951. **Инициирование**: Вы упоминаете Claude с запросом кодирования

962. **Обнаружение**: Claude анализирует ваше сообщение и обнаруживает намерение кодирования

973. **Создание сеанса**: Новый сеанс Claude Code создается на claude.ai/code

984. **Обновления прогресса**: Claude публикует обновления статуса в вашу цепочку Slack по мере выполнения работы

995. **Завершение**: По завершении Claude упоминает вас с резюме и кнопками действия

1006. **Проверка**: Нажмите "View Session", чтобы увидеть полную стенограмму, или "Create PR", чтобы открыть запрос на слияние

101 

102## Элементы пользовательского интерфейса

103 

104### App Home

105 

106Вкладка App Home показывает статус вашего подключения и позволяет вам подключить или отключить вашу учетную запись Claude от Slack.

107 

108### Действия с сообщениями

109 

110* **View Session**: Открывает полный сеанс Claude Code в вашем браузере, где вы можете увидеть всю выполненную работу, продолжить сеанс или сделать дополнительные запросы.

111* **Create PR**: Создает запрос на слияние прямо из изменений сеанса.

112* **Retry as Code**: Если Claude первоначально ответил как помощник чата, но вы хотели сеанс кодирования, нажмите эту кнопку, чтобы повторить запрос как задачу Claude Code.

113* **Change Repo**: Позволяет вам выбрать другой репозиторий, если Claude выбрал неправильно.

114 

115### Выбор репозитория

116 

117Claude автоматически выбирает репозиторий на основе контекста из вашей беседы Slack. Если несколько репозиториев могут применяться, Claude может отобразить раскрывающееся меню, позволяющее вам выбрать правильный.

118 

119## Доступ и разрешения

120 

121### Доступ на уровне пользователя

122 

123| Тип доступа | Требование |

124| :----------------------------------- | :------------------------------------------------------------------------------------- |

125| Сеансы Claude Code | Каждый пользователь запускает сеансы под своей учетной записью Claude |

126| Использование и ограничения скорости | Сеансы учитываются в отношении ограничений плана отдельного пользователя |

127| Доступ к репозиторию | Пользователи могут получать доступ только к репозиториям, которые они лично подключили |

128| История сеансов | Сеансы отображаются в вашей истории Claude Code на claude.ai/code |

129 

130### Разрешения администратора рабочего пространства

131 

132Администраторы рабочего пространства Slack контролируют, может ли приложение Claude быть установлено в рабочем пространстве. Отдельные пользователи затем аутентифицируются со своими собственными учетными записями Claude для использования интеграции.

133 

134## Что доступно где

135 

136**В Slack**: Вы увидите обновления статуса, резюме завершения и кнопки действия. Полная стенограмма сохраняется и всегда доступна.

137 

138**В веб-версии**: Полный сеанс Claude Code с полной историей беседы, все изменения кода, операции с файлами и возможность продолжить сеанс или создать запросы на слияние.

139 

140## Лучшие практики

141 

142### Написание эффективных запросов

143 

144* **Будьте конкретны**: Включайте имена файлов, имена функций или сообщения об ошибках, когда это уместно.

145* **Предоставьте контекст**: Упомяните репозиторий или проект, если это не ясно из беседы.

146* **Определите успех**: Объясните, как выглядит "готово" — должен ли Claude писать тесты? Обновить документацию? Создать PR?

147* **Используйте цепочки**: Отвечайте в цепочках при обсуждении ошибок или функций, чтобы Claude мог собрать полный контекст.

148 

149### Когда использовать Slack vs. веб-версию

150 

151**Используйте Slack когда**: Контекст уже существует в обсуждении Slack, вы хотите запустить задачу асинхронно или сотрудничаете с товарищами по команде, которым нужна видимость.

152 

153**Используйте веб-версию напрямую когда**: Вам нужно загрузить файлы, вы хотите взаимодействие в реальном времени во время разработки или работаете над более длительными, более сложными задачами.

154 

155## Устранение неполадок

156 

157### Сеансы не запускаются

158 

1591. Убедитесь, что ваша учетная запись Claude подключена в Claude App Home

1602. Проверьте, что у вас включен доступ к Claude Code в веб-версии

1613. Убедитесь, что у вас подключен по крайней мере один репозиторий GitHub к Claude Code

162 

163### Репозиторий не отображается

164 

1651. Подключите репозиторий в Claude Code в веб-версии на [claude.ai/code](https://claude.ai/code)

1662. Проверьте ваши разрешения GitHub для этого репозитория

1673. Попробуйте отключить и повторно подключить вашу учетную запись GitHub

168 

169### Выбран неправильный репозиторий

170 

1711. Нажмите кнопку "Change Repo", чтобы выбрать другой репозиторий

1722. Включите имя репозитория в ваш запрос для более точного выбора

173 

174### Ошибки аутентификации

175 

1761. Отключите и повторно подключите вашу учетную запись Claude в App Home

1772. Убедитесь, что вы вошли в правильную учетную запись Claude в вашем браузере

1783. Проверьте, что ваш план Claude включает доступ к Claude Code

179 

180### Истечение сеанса

181 

1821. Сеансы остаются доступными в вашей истории Claude Code в веб-версии

1832. Вы можете продолжить или ссылаться на прошлые сеансы с [claude.ai/code](https://claude.ai/code)

184 

185## Текущие ограничения

186 

187* **Только GitHub**: В настоящее время поддерживает репозитории на GitHub.

188* **Один PR за раз**: Каждый сеанс может создать один запрос на слияние.

189* **Применяются ограничения скорости**: Сеансы используют ограничения скорости плана Claude отдельного пользователя.

190* **Требуется веб-доступ**: Пользователи должны иметь доступ к Claude Code в веб-версии; те, кто не имеет его, получат только стандартные ответы Claude chat.

191 

192## Связанные ресурсы

193 

194<CardGroup>

195 <Card title="Claude Code в веб-версии" icon="globe" href="/ru/claude-code-on-the-web">

196 Узнайте больше о Claude Code в веб-версии

197 </Card>

198 

199 <Card title="Claude для Slack" icon="slack" href="https://claude.com/claude-and-slack">

200 Общая документация Claude для Slack

201 </Card>

202 

203 <Card title="Slack App Marketplace" icon="store" href="https://slack.com/marketplace/A08SF47R6P4">

204 Установите приложение Claude из Slack Marketplace

205 </Card>

206 

207 <Card title="Центр помощи Claude" icon="circle-question" href="https://support.claude.com">

208 Получите дополнительную поддержку

209 </Card>

210</CardGroup>

statusline.md +1062 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Настройка строки состояния

6 

7> Настройте пользовательскую строку состояния для мониторинга использования контекстного окна, затрат и статуса git в Claude Code

8 

9Строка состояния — это настраиваемая панель в нижней части Claude Code, которая запускает любой скрипт оболочки, который вы настроите. Она получает данные сеанса в формате JSON через stdin и отображает всё, что выводит ваш скрипт, предоставляя вам постоянный, видимый с первого взгляда обзор использования контекста, затрат, статуса git или чего-либо ещё, что вы хотите отслеживать.

10 

11Строки состояния полезны, когда вы:

12 

13* Хотите отслеживать использование контекстного окна во время работы

14* Нужно отслеживать затраты сеанса

15* Работаете в нескольких сеансах и нужно их различать

16* Хотите, чтобы ветка git и статус всегда были видны

17 

18Вот пример [многострочной строки состояния](#display-multiple-lines), которая отображает информацию git в первой строке и цветовую полосу контекста во второй.

19 

20<Frame>

21 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-multiline.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=60f11387658acc9ff75158ae85f2ac87" alt="Многострочная строка состояния, показывающая имя модели, каталог, ветку git в первой строке и полосу прогресса использования контекста с затратами и продолжительностью во второй строке" width="776" height="212" data-path="images/statusline-multiline.png" />

22</Frame>

23 

24На этой странице описано [настройка базовой строки состояния](#set-up-a-status-line), объясняется [как данные передаются](#how-status-lines-work) из Claude Code в ваш скрипт, перечисляются [все поля, которые вы можете отображать](#available-data), и предоставляются [готовые примеры](#examples) для распространённых паттернов, таких как статус git, отслеживание затрат и полосы прогресса.

25 

26## Настройка строки состояния

27 

28Используйте [команду `/statusline`](#use-the-%2Fstatusline-command) для автоматического создания скрипта Claude Code, или [вручную создайте скрипт](#manually-configure-a-status-line) и добавьте его в ваши настройки.

29 

30### Использование команды /statusline

31 

32Команда `/statusline` принимает инструкции на естественном языке, описывающие то, что вы хотите отображать. Claude Code генерирует файл скрипта в `~/.claude/` и автоматически обновляет ваши настройки:

33 

34```text theme={null}

35/statusline show model name and context percentage with a progress bar

36```

37 

38### Ручная настройка строки состояния

39 

40Добавьте поле `statusLine` в ваши пользовательские настройки (`~/.claude/settings.json`, где `~` — это ваш домашний каталог) или [настройки проекта](/ru/settings#settings-files). Установите `type` на `"command"` и укажите `command` на путь скрипта или встроенную команду оболочки. Для полного пошагового руководства по созданию скрипта см. [Построение строки состояния пошагово](#build-a-status-line-step-by-step).

41 

42```json theme={null}

43{

44 "statusLine": {

45 "type": "command",

46 "command": "~/.claude/statusline.sh",

47 "padding": 2

48 }

49}

50```

51 

52Поле `command` запускается в оболочке, поэтому вы также можете использовать встроенные команды вместо файла скрипта. Этот пример использует `jq` для разбора входных данных JSON и отображения имени модели и процента контекста:

53 

54```json theme={null}

55{

56 "statusLine": {

57 "type": "command",

58 "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'"

59 }

60}

61```

62 

63Необязательное поле `padding` добавляет дополнительное горизонтальное расстояние (в символах) к содержимому строки состояния. По умолчанию `0`. Это заполнение добавляется к встроенному расстоянию интерфейса, поэтому оно управляет относительным отступом, а не абсолютным расстоянием от края терминала.

64 

65Необязательное поле `refreshInterval` повторно запускает вашу команду каждые N секунд в дополнение к [обновлениям, управляемым событиями](#how-status-lines-work). Минимум — `1`. Установите это, когда ваша строка состояния отображает данные на основе времени, такие как часы, или когда фоновые подагенты изменяют состояние git, пока основной сеанс неактивен. Оставьте это не установленным, чтобы запускать только при событиях.

66 

67Необязательное поле `hideVimModeIndicator` подавляет встроенный текст `-- INSERT --` под приглашением. Установите это на `true`, когда ваш скрипт отображает [`vim.mode`](#available-data) самостоятельно, чтобы режим не отображался дважды.

68 

69### Отключение строки состояния

70 

71Запустите `/statusline` и попросите её удалить или очистить вашу строку состояния (например, `/statusline delete`, `/statusline clear`, `/statusline remove it`). Вы также можете вручную удалить поле `statusLine` из вашего settings.json.

72 

73## Построение строки состояния пошагово

74 

75Это пошаговое руководство показывает, что происходит под капотом, путём ручного создания строки состояния, которая отображает текущую модель, рабочий каталог и процент использования контекстного окна.

76 

77<Note>Запуск [`/statusline`](#use-the-statusline-command) с описанием того, что вы хотите, настраивает всё это автоматически.</Note>

78 

79Эти примеры используют скрипты Bash, которые работают на macOS и Linux. На Windows см. [Конфигурация Windows](#windows-configuration) для примеров PowerShell и Git Bash.

80 

81<Frame>

82 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-quickstart.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=696445e59ca0059213250651ad23db6b" alt="Строка состояния, показывающая имя модели, каталог и процент контекста" width="726" height="164" data-path="images/statusline-quickstart.png" />

83</Frame>

84 

85<Steps>

86 <Step title="Создайте скрипт, который читает JSON и выводит результат">

87 Claude Code отправляет данные JSON в ваш скрипт через stdin. Этот скрипт использует [`jq`](https://jqlang.github.io/jq/), парсер JSON командной строки, который вам может потребоваться установить, для извлечения имени модели, каталога и процента контекста, а затем выводит отформатированную строку.

88 

89 Сохраните это в `~/.claude/statusline.sh` (где `~` — это ваш домашний каталог, например `/Users/username` на macOS или `/home/username` на Linux):

90 

91 ```bash theme={null}

92 #!/bin/bash

93 # Read JSON data that Claude Code sends to stdin

94 input=$(cat)

95 

96 # Extract fields using jq

97 MODEL=$(echo "$input" | jq -r '.model.display_name')

98 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

99 # The "// 0" provides a fallback if the field is null

100 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

101 

102 # Output the status line - ${DIR##*/} extracts just the folder name

103 echo "[$MODEL] 📁 ${DIR##*/} | ${PCT}% context"

104 ```

105 </Step>

106 

107 <Step title="Сделайте его исполняемым">

108 Отметьте скрипт как исполняемый, чтобы ваша оболочка могла его запустить:

109 

110 ```bash theme={null}

111 chmod +x ~/.claude/statusline.sh

112 ```

113 </Step>

114 

115 <Step title="Добавьте в настройки">

116 Скажите Claude Code запустить ваш скрипт как строку состояния. Добавьте эту конфигурацию в `~/.claude/settings.json`, которая устанавливает `type` на `"command"` (означает «запустить эту команду оболочки») и указывает `command` на ваш скрипт:

117 

118 ```json theme={null}

119 {

120 "statusLine": {

121 "type": "command",

122 "command": "~/.claude/statusline.sh"

123 }

124 }

125 ```

126 

127 Ваша строка состояния появляется в нижней части интерфейса. Настройки перезагружаются автоматически, но изменения не появятся до вашего следующего взаимодействия с Claude Code.

128 </Step>

129</Steps>

130 

131## Как работают строки состояния

132 

133Claude Code запускает ваш скрипт и передаёт [данные сеанса JSON](#available-data) в него через stdin. Ваш скрипт читает JSON, извлекает то, что ему нужно, и выводит текст в stdout. Claude Code отображает всё, что выводит ваш скрипт.

134 

135**Когда это обновляется**

136 

137Ваш скрипт запускается после каждого нового сообщения ассистента, когда изменяется режим разрешений или когда переключается режим vim. Обновления дебаунсятся на 300 мс, что означает, что быстрые изменения объединяются вместе и ваш скрипт запускается один раз, когда всё стабилизируется. Если новое обновление срабатывает, пока ваш скрипт всё ещё работает, выполнение в полёте отменяется. Если вы отредактируете свой скрипт, изменения не появятся до вашего следующего взаимодействия с Claude Code, которое срабатывает обновление.

138 

139Эти триггеры могут затихнуть, когда основной сеанс неактивен, например, пока координатор ждёт фоновых подагентов. Чтобы сохранить текущими сегменты на основе времени или из внешних источников во время периодов неактивности, установите [`refreshInterval`](#manually-configure-a-status-line) для также повторного запуска команды на фиксированный таймер.

140 

141**Что может выводить ваш скрипт**

142 

143* **Несколько строк**: каждый оператор `echo` или `print` отображается как отдельная строка. См. [пример многострочности](#display-multiple-lines).

144* **Цвета**: используйте [коды экранирования ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors), такие как `\033[32m` для зелёного (терминал должен их поддерживать). См. [пример статуса git](#git-status-with-colors).

145* **Ссылки**: используйте [последовательности экранирования OSC 8](https://en.wikipedia.org/wiki/ANSI_escape_code#OSC) для создания кликабельного текста (Cmd+клик на macOS, Ctrl+клик на Windows/Linux). Требуется терминал, поддерживающий гиперссылки, такой как iTerm2, Kitty или WezTerm. См. [пример кликабельных ссылок](#clickable-links).

146 

147<Note>Строка состояния работает локально и не потребляет токены API. Она временно скрывается во время определённых взаимодействий с пользовательским интерфейсом, включая предложения автодополнения, меню справки и запросы разрешений.</Note>

148 

149## Доступные данные

150 

151Claude Code отправляет следующие поля JSON в ваш скрипт через stdin:

152 

153| Поле | Описание |

154| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

155| `model.id`, `model.display_name` | Текущий идентификатор модели и отображаемое имя |

156| `cwd`, `workspace.current_dir` | Текущий рабочий каталог. Оба поля содержат одно и то же значение; `workspace.current_dir` предпочтительнее для согласованности с `workspace.project_dir`. |

157| `workspace.project_dir` | Каталог, в котором был запущен Claude Code, который может отличаться от `cwd`, если рабочий каталог изменяется во время сеанса |

158| `workspace.added_dirs` | Дополнительные каталоги, добавленные через `/add-dir` или `--add-dir`. Пустой массив, если ничего не было добавлено |

159| `workspace.git_worktree` | Имя Git worktree, когда текущий каталог находится внутри связанного worktree, созданного с помощью `git worktree add`. Отсутствует в основном рабочем дереве. Заполняется для любого git worktree, в отличие от `worktree.*`, который применяется только к сеансам `--worktree` |

160| `cost.total_cost_usd` | Предполагаемая стоимость сеанса в USD, вычисляется на клиенте. Может отличаться от вашего фактического счёта |

161| `cost.total_duration_ms` | Общее реальное время с момента начала сеанса в миллисекундах |

162| `cost.total_api_duration_ms` | Общее время, потраченное на ожидание ответов API в миллисекундах |

163| `cost.total_lines_added`, `cost.total_lines_removed` | Строки кода, которые были изменены |

164| `context_window.total_input_tokens`, `context_window.total_output_tokens` | Совокупные подсчёты токенов во всём сеансе |

165| `context_window.context_window_size` | Максимальный размер контекстного окна в токенах. По умолчанию 200000 или 1000000 для моделей с расширенным контекстом. |

166| `context_window.used_percentage` | Предварительно рассчитанный процент использованного контекстного окна |

167| `context_window.remaining_percentage` | Предварительно рассчитанный процент оставшегося контекстного окна |

168| `context_window.current_usage` | Подсчёты токенов из последнего вызова API, описанные в [полях контекстного окна](#context-window-fields) |

169| `exceeds_200k_tokens` | Превышает ли общее количество токенов (входные, кэшированные и выходные токены в сумме) из последнего ответа API 200k. Это фиксированный порог независимо от фактического размера контекстного окна. |

170| `effort.level` | Текущий уровень рассуждений (`low`, `medium`, `high`, `xhigh` или `max`). Отражает текущее значение сеанса, включая изменения `/effort` во время сеанса. Отсутствует, когда текущая модель не поддерживает параметр effort |

171| `thinking.enabled` | Включено ли расширенное мышление для сеанса |

172| `rate_limits.five_hour.used_percentage`, `rate_limits.seven_day.used_percentage` | Процент лимита скорости за 5 часов или 7 дней, потреблённый от 0 до 100 |

173| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | Секунды эпохи Unix, когда окно лимита скорости за 5 часов или 7 дней сбрасывается |

174| `session_id` | Уникальный идентификатор сеанса |

175| `session_name` | Пользовательское имя сеанса, установленное с флагом `--name` или `/rename`. Отсутствует, если пользовательское имя не было установлено |

176| `transcript_path` | Путь к файлу стенограммы разговора |

177| `version` | Версия Claude Code |

178| `output_style.name` | Имя текущего стиля вывода |

179| `vim.mode` | Текущий режим vim (`NORMAL`, `INSERT`, `VISUAL` или `VISUAL LINE`), когда [режим vim](/ru/interactive-mode#vim-editor-mode) включен |

180| `agent.name` | Имя агента при запуске с флагом `--agent` или настроенными параметрами агента |

181| `worktree.name` | Имя активного worktree. Присутствует только во время сеансов `--worktree` |

182| `worktree.path` | Абсолютный путь к каталогу worktree |

183| `worktree.branch` | Имя ветки Git для worktree (например, `"worktree-my-feature"`). Отсутствует для worktrees на основе hooks |

184| `worktree.original_cwd` | Каталог, в котором находился Claude перед входом в worktree |

185| `worktree.original_branch` | Ветка Git, проверенная перед входом в worktree. Отсутствует для worktrees на основе hooks |

186 

187<Accordion title="Полная схема JSON">

188 Ваша команда строки состояния получает эту структуру JSON через stdin:

189 

190 ```json theme={null}

191 {

192 "cwd": "/current/working/directory",

193 "session_id": "abc123...",

194 "session_name": "my-session",

195 "transcript_path": "/path/to/transcript.jsonl",

196 "model": {

197 "id": "claude-opus-4-7",

198 "display_name": "Opus"

199 },

200 "workspace": {

201 "current_dir": "/current/working/directory",

202 "project_dir": "/original/project/directory",

203 "added_dirs": [],

204 "git_worktree": "feature-xyz"

205 },

206 "version": "2.1.90",

207 "output_style": {

208 "name": "default"

209 },

210 "cost": {

211 "total_cost_usd": 0.01234,

212 "total_duration_ms": 45000,

213 "total_api_duration_ms": 2300,

214 "total_lines_added": 156,

215 "total_lines_removed": 23

216 },

217 "context_window": {

218 "total_input_tokens": 15234,

219 "total_output_tokens": 4521,

220 "context_window_size": 200000,

221 "used_percentage": 8,

222 "remaining_percentage": 92,

223 "current_usage": {

224 "input_tokens": 8500,

225 "output_tokens": 1200,

226 "cache_creation_input_tokens": 5000,

227 "cache_read_input_tokens": 2000

228 }

229 },

230 "exceeds_200k_tokens": false,

231 "effort": {

232 "level": "high"

233 },

234 "thinking": {

235 "enabled": true

236 },

237 "rate_limits": {

238 "five_hour": {

239 "used_percentage": 23.5,

240 "resets_at": 1738425600

241 },

242 "seven_day": {

243 "used_percentage": 41.2,

244 "resets_at": 1738857600

245 }

246 },

247 "vim": {

248 "mode": "NORMAL"

249 },

250 "agent": {

251 "name": "security-reviewer"

252 },

253 "worktree": {

254 "name": "my-feature",

255 "path": "/path/to/.claude/worktrees/my-feature",

256 "branch": "worktree-my-feature",

257 "original_cwd": "/path/to/project",

258 "original_branch": "main"

259 }

260 }

261 ```

262 

263 **Поля, которые могут отсутствовать** (не присутствуют в JSON):

264 

265 * `session_name`: появляется только когда пользовательское имя было установлено с `--name` или `/rename`

266 * `workspace.git_worktree`: появляется только когда текущий каталог находится внутри связанного git worktree

267 * `effort`: появляется только когда текущая модель поддерживает параметр reasoning effort

268 * `vim`: появляется только когда режим vim включен

269 * `agent`: появляется только при запуске с флагом `--agent` или настроенными параметрами агента

270 * `worktree`: появляется только во время сеансов `--worktree`. Когда присутствует, `branch` и `original_branch` также могут отсутствовать для worktrees на основе hooks

271 * `rate_limits`: появляется только для подписчиков Claude.ai (Pro/Max) после первого ответа API в сеансе. Каждое окно (`five_hour`, `seven_day`) может быть независимо отсутствующим. Используйте `jq -r '.rate_limits.five_hour.used_percentage // empty'` для корректной обработки отсутствия.

272 

273 **Поля, которые могут быть `null`**:

274 

275 * `context_window.current_usage`: `null` перед первым вызовом API в сеансе

276 * `context_window.used_percentage`, `context_window.remaining_percentage`: могут быть `null` в начале сеанса

277 

278 Обрабатывайте отсутствующие поля с условным доступом и нулевые значения с резервными значениями по умолчанию в ваших скриптах.

279</Accordion>

280 

281### Поля контекстного окна

282 

283Объект `context_window` предоставляет два способа отслеживания использования контекста:

284 

285* **Совокупные итоги** (`total_input_tokens`, `total_output_tokens`): сумма всех токенов во всём сеансе, полезна для отслеживания общего потребления

286* **Текущее использование** (`current_usage`): подсчёты токенов из последнего вызова API, используйте это для точного процента контекста, так как это отражает фактическое состояние контекста

287 

288Объект `current_usage` содержит:

289 

290* `input_tokens`: входные токены в текущем контексте

291* `output_tokens`: выходные токены, которые были сгенерированы

292* `cache_creation_input_tokens`: токены, записанные в кэш

293* `cache_read_input_tokens`: токены, прочитанные из кэша

294 

295Поле `used_percentage` рассчитывается только из входных токенов: `input_tokens + cache_creation_input_tokens + cache_read_input_tokens`. Оно не включает `output_tokens`.

296 

297Если вы рассчитываете процент контекста вручную из `current_usage`, используйте ту же формулу только для входных данных, чтобы соответствовать `used_percentage`.

298 

299Объект `current_usage` равен `null` перед первым вызовом API в сеансе.

300 

301## Примеры

302 

303Эти примеры показывают распространённые паттерны строк состояния. Чтобы использовать любой пример:

304 

3051. Сохраните скрипт в файл, например `~/.claude/statusline.sh` (или `.py`/`.js`)

3062. Сделайте его исполняемым: `chmod +x ~/.claude/statusline.sh`

3073. Добавьте путь в ваши [настройки](#manually-configure-a-status-line)

308 

309Примеры Bash используют [`jq`](https://jqlang.github.io/jq/) для разбора JSON. Python и Node.js имеют встроенный разбор JSON.

310 

311### Использование контекстного окна

312 

313Отобразите текущую модель и использование контекстного окна с визуальной полосой прогресса. Каждый скрипт читает JSON из stdin, извлекает поле `used_percentage` и строит 10-символьную полосу, где заполненные блоки (▓) представляют использование:

314 

315<Frame>

316 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-context-window-usage.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=15b58ab3602f036939145dde3165c6f7" alt="Строка состояния, показывающая имя модели и полосу прогресса с процентом" width="448" height="152" data-path="images/statusline-context-window-usage.png" />

317</Frame>

318 

319<CodeGroup>

320 ```bash Bash theme={null}

321 #!/bin/bash

322 # Read all of stdin into a variable

323 input=$(cat)

324 

325 # Extract fields with jq, "// 0" provides fallback for null

326 MODEL=$(echo "$input" | jq -r '.model.display_name')

327 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

328 

329 # Build progress bar: printf -v creates a run of spaces, then

330 # ${var// /▓} replaces each space with a block character

331 BAR_WIDTH=10

332 FILLED=$((PCT * BAR_WIDTH / 100))

333 EMPTY=$((BAR_WIDTH - FILLED))

334 BAR=""

335 [ "$FILLED" -gt 0 ] && printf -v FILL "%${FILLED}s" && BAR="${FILL// /▓}"

336 [ "$EMPTY" -gt 0 ] && printf -v PAD "%${EMPTY}s" && BAR="${BAR}${PAD// /░}"

337 

338 echo "[$MODEL] $BAR $PCT%"

339 ```

340 

341 ```python Python theme={null}

342 #!/usr/bin/env python3

343 import json, sys

344 

345 # json.load reads and parses stdin in one step

346 data = json.load(sys.stdin)

347 model = data['model']['display_name']

348 # "or 0" handles null values

349 pct = int(data.get('context_window', {}).get('used_percentage', 0) or 0)

350 

351 # String multiplication builds the bar

352 filled = pct * 10 // 100

353 bar = '▓' * filled + '░' * (10 - filled)

354 

355 print(f"[{model}] {bar} {pct}%")

356 ```

357 

358 ```javascript Node.js theme={null}

359 #!/usr/bin/env node

360 // Node.js reads stdin asynchronously with events

361 let input = '';

362 process.stdin.on('data', chunk => input += chunk);

363 process.stdin.on('end', () => {

364 const data = JSON.parse(input);

365 const model = data.model.display_name;

366 // Optional chaining (?.) safely handles null fields

367 const pct = Math.floor(data.context_window?.used_percentage || 0);

368 

369 // String.repeat() builds the bar

370 const filled = Math.floor(pct * 10 / 100);

371 const bar = '▓'.repeat(filled) + '░'.repeat(10 - filled);

372 

373 console.log(`[${model}] ${bar} ${pct}%`);

374 });

375 ```

376</CodeGroup>

377 

378### Статус git с цветами

379 

380Показывает ветку git с цветовыми индикаторами для подготовленных и изменённых файлов. Этот скрипт использует [коды экранирования ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) для цветов терминала: `\033[32m` — зелёный, `\033[33m` — жёлтый и `\033[0m` — сброс на значение по умолчанию.

381 

382<Frame>

383 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-git-context.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=e656f34f90d1d9a1d0e220988914345f" alt="Строка состояния, показывающая модель, каталог, ветку git и цветные индикаторы для подготовленных и изменённых файлов" width="742" height="178" data-path="images/statusline-git-context.png" />

384</Frame>

385 

386Каждый скрипт проверяет, является ли текущий каталог репозиторием git, подсчитывает подготовленные и изменённые файлы и отображает цветные индикаторы:

387 

388<CodeGroup>

389 ```bash Bash theme={null}

390 #!/bin/bash

391 input=$(cat)

392 

393 MODEL=$(echo "$input" | jq -r '.model.display_name')

394 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

395 

396 GREEN='\033[32m'

397 YELLOW='\033[33m'

398 RESET='\033[0m'

399 

400 if git rev-parse --git-dir > /dev/null 2>&1; then

401 BRANCH=$(git branch --show-current 2>/dev/null)

402 STAGED=$(git diff --cached --numstat 2>/dev/null | wc -l | tr -d ' ')

403 MODIFIED=$(git diff --numstat 2>/dev/null | wc -l | tr -d ' ')

404 

405 GIT_STATUS=""

406 [ "$STAGED" -gt 0 ] && GIT_STATUS="${GREEN}+${STAGED}${RESET}"

407 [ "$MODIFIED" -gt 0 ] && GIT_STATUS="${GIT_STATUS}${YELLOW}~${MODIFIED}${RESET}"

408 

409 echo -e "[$MODEL] 📁 ${DIR##*/} | 🌿 $BRANCH $GIT_STATUS"

410 else

411 echo "[$MODEL] 📁 ${DIR##*/}"

412 fi

413 ```

414 

415 ```python Python theme={null}

416 #!/usr/bin/env python3

417 import json, sys, subprocess, os

418 

419 data = json.load(sys.stdin)

420 model = data['model']['display_name']

421 directory = os.path.basename(data['workspace']['current_dir'])

422 

423 GREEN, YELLOW, RESET = '\033[32m', '\033[33m', '\033[0m'

424 

425 try:

426 subprocess.check_output(['git', 'rev-parse', '--git-dir'], stderr=subprocess.DEVNULL)

427 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True).strip()

428 staged_output = subprocess.check_output(['git', 'diff', '--cached', '--numstat'], text=True).strip()

429 modified_output = subprocess.check_output(['git', 'diff', '--numstat'], text=True).strip()

430 staged = len(staged_output.split('\n')) if staged_output else 0

431 modified = len(modified_output.split('\n')) if modified_output else 0

432 

433 git_status = f"{GREEN}+{staged}{RESET}" if staged else ""

434 git_status += f"{YELLOW}~{modified}{RESET}" if modified else ""

435 

436 print(f"[{model}] 📁 {directory} | 🌿 {branch} {git_status}")

437 except:

438 print(f"[{model}] 📁 {directory}")

439 ```

440 

441 ```javascript Node.js theme={null}

442 #!/usr/bin/env node

443 const { execSync } = require('child_process');

444 const path = require('path');

445 

446 let input = '';

447 process.stdin.on('data', chunk => input += chunk);

448 process.stdin.on('end', () => {

449 const data = JSON.parse(input);

450 const model = data.model.display_name;

451 const dir = path.basename(data.workspace.current_dir);

452 

453 const GREEN = '\x1b[32m', YELLOW = '\x1b[33m', RESET = '\x1b[0m';

454 

455 try {

456 execSync('git rev-parse --git-dir', { stdio: 'ignore' });

457 const branch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();

458 const staged = execSync('git diff --cached --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

459 const modified = execSync('git diff --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

460 

461 let gitStatus = staged ? `${GREEN}+${staged}${RESET}` : '';

462 gitStatus += modified ? `${YELLOW}~${modified}${RESET}` : '';

463 

464 console.log(`[${model}] 📁 ${dir} | 🌿 ${branch} ${gitStatus}`);

465 } catch {

466 console.log(`[${model}] 📁 ${dir}`);

467 }

468 });

469 ```

470</CodeGroup>

471 

472### Отслеживание затрат и продолжительности

473 

474Отслеживайте затраты API вашего сеанса и прошедшее время. Поле `cost.total_cost_usd` накапливает стоимость всех вызовов API в текущем сеансе. Поле `cost.total_duration_ms` измеряет общее прошедшее время с момента начала сеанса, а `cost.total_api_duration_ms` отслеживает только время, потраченное на ожидание ответов API.

475 

476Каждый скрипт форматирует стоимость как валюту и преобразует миллисекунды в минуты и секунды:

477 

478<Frame>

479 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-cost-tracking.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=e3444a51fe6f3440c134bd5f1f08ad29" alt="Строка состояния, показывающая имя модели, стоимость сеанса и продолжительность" width="588" height="180" data-path="images/statusline-cost-tracking.png" />

480</Frame>

481 

482<CodeGroup>

483 ```bash Bash theme={null}

484 #!/bin/bash

485 input=$(cat)

486 

487 MODEL=$(echo "$input" | jq -r '.model.display_name')

488 COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')

489 DURATION_MS=$(echo "$input" | jq -r '.cost.total_duration_ms // 0')

490 

491 COST_FMT=$(printf '$%.2f' "$COST")

492 DURATION_SEC=$((DURATION_MS / 1000))

493 MINS=$((DURATION_SEC / 60))

494 SECS=$((DURATION_SEC % 60))

495 

496 echo "[$MODEL] 💰 $COST_FMT | ⏱️ ${MINS}m ${SECS}s"

497 ```

498 

499 ```python Python theme={null}

500 #!/usr/bin/env python3

501 import json, sys

502 

503 data = json.load(sys.stdin)

504 model = data['model']['display_name']

505 cost = data.get('cost', {}).get('total_cost_usd', 0) or 0

506 duration_ms = data.get('cost', {}).get('total_duration_ms', 0) or 0

507 

508 duration_sec = duration_ms // 1000

509 mins, secs = duration_sec // 60, duration_sec % 60

510 

511 print(f"[{model}] 💰 ${cost:.2f} | ⏱️ {mins}m {secs}s")

512 ```

513 

514 ```javascript Node.js theme={null}

515 #!/usr/bin/env node

516 let input = '';

517 process.stdin.on('data', chunk => input += chunk);

518 process.stdin.on('end', () => {

519 const data = JSON.parse(input);

520 const model = data.model.display_name;

521 const cost = data.cost?.total_cost_usd || 0;

522 const durationMs = data.cost?.total_duration_ms || 0;

523 

524 const durationSec = Math.floor(durationMs / 1000);

525 const mins = Math.floor(durationSec / 60);

526 const secs = durationSec % 60;

527 

528 console.log(`[${model}] 💰 $${cost.toFixed(2)} | ⏱️ ${mins}m ${secs}s`);

529 });

530 ```

531</CodeGroup>

532 

533### Отображение нескольких строк

534 

535Ваш скрипт может выводить несколько строк для создания более богатого отображения. Каждый оператор `echo` создаёт отдельную строку в области состояния.

536 

537<Frame>

538 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-multiline.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=60f11387658acc9ff75158ae85f2ac87" alt="Многострочная строка состояния, показывающая имя модели, каталог, ветку git в первой строке и полосу прогресса использования контекста с затратами и продолжительностью во второй строке" width="776" height="212" data-path="images/statusline-multiline.png" />

539</Frame>

540 

541Этот пример объединяет несколько методов: цвета на основе порогов (зелёный ниже 70%, жёлтый 70-89%, красный 90%+), полосу прогресса и информацию о ветке git. Каждый оператор `print` или `echo` создаёт отдельную строку:

542 

543<CodeGroup>

544 ```bash Bash theme={null}

545 #!/bin/bash

546 input=$(cat)

547 

548 MODEL=$(echo "$input" | jq -r '.model.display_name')

549 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

550 COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')

551 PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

552 DURATION_MS=$(echo "$input" | jq -r '.cost.total_duration_ms // 0')

553 

554 CYAN='\033[36m'; GREEN='\033[32m'; YELLOW='\033[33m'; RED='\033[31m'; RESET='\033[0m'

555 

556 # Pick bar color based on context usage

557 if [ "$PCT" -ge 90 ]; then BAR_COLOR="$RED"

558 elif [ "$PCT" -ge 70 ]; then BAR_COLOR="$YELLOW"

559 else BAR_COLOR="$GREEN"; fi

560 

561 FILLED=$((PCT / 10)); EMPTY=$((10 - FILLED))

562 printf -v FILL "%${FILLED}s"; printf -v PAD "%${EMPTY}s"

563 BAR="${FILL// /█}${PAD// /░}"

564 

565 MINS=$((DURATION_MS / 60000)); SECS=$(((DURATION_MS % 60000) / 1000))

566 

567 BRANCH=""

568 git rev-parse --git-dir > /dev/null 2>&1 && BRANCH=" | 🌿 $(git branch --show-current 2>/dev/null)"

569 

570 echo -e "${CYAN}[$MODEL]${RESET} 📁 ${DIR##*/}$BRANCH"

571 COST_FMT=$(printf '$%.2f' "$COST")

572 echo -e "${BAR_COLOR}${BAR}${RESET} ${PCT}% | ${YELLOW}${COST_FMT}${RESET} | ⏱️ ${MINS}m ${SECS}s"

573 ```

574 

575 ```python Python theme={null}

576 #!/usr/bin/env python3

577 import json, sys, subprocess, os

578 

579 data = json.load(sys.stdin)

580 model = data['model']['display_name']

581 directory = os.path.basename(data['workspace']['current_dir'])

582 cost = data.get('cost', {}).get('total_cost_usd', 0) or 0

583 pct = int(data.get('context_window', {}).get('used_percentage', 0) or 0)

584 duration_ms = data.get('cost', {}).get('total_duration_ms', 0) or 0

585 

586 CYAN, GREEN, YELLOW, RED, RESET = '\033[36m', '\033[32m', '\033[33m', '\033[31m', '\033[0m'

587 

588 bar_color = RED if pct >= 90 else YELLOW if pct >= 70 else GREEN

589 filled = pct // 10

590 bar = '█' * filled + '░' * (10 - filled)

591 

592 mins, secs = duration_ms // 60000, (duration_ms % 60000) // 1000

593 

594 try:

595 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True, stderr=subprocess.DEVNULL).strip()

596 branch = f" | 🌿 {branch}" if branch else ""

597 except:

598 branch = ""

599 

600 print(f"{CYAN}[{model}]{RESET} 📁 {directory}{branch}")

601 print(f"{bar_color}{bar}{RESET} {pct}% | {YELLOW}${cost:.2f}{RESET} | ⏱️ {mins}m {secs}s")

602 ```

603 

604 ```javascript Node.js theme={null}

605 #!/usr/bin/env node

606 const { execSync } = require('child_process');

607 const path = require('path');

608 

609 let input = '';

610 process.stdin.on('data', chunk => input += chunk);

611 process.stdin.on('end', () => {

612 const data = JSON.parse(input);

613 const model = data.model.display_name;

614 const dir = path.basename(data.workspace.current_dir);

615 const cost = data.cost?.total_cost_usd || 0;

616 const pct = Math.floor(data.context_window?.used_percentage || 0);

617 const durationMs = data.cost?.total_duration_ms || 0;

618 

619 const CYAN = '\x1b[36m', GREEN = '\x1b[32m', YELLOW = '\x1b[33m', RED = '\x1b[31m', RESET = '\x1b[0m';

620 

621 const barColor = pct >= 90 ? RED : pct >= 70 ? YELLOW : GREEN;

622 const filled = Math.floor(pct / 10);

623 const bar = '█'.repeat(filled) + '░'.repeat(10 - filled);

624 

625 const mins = Math.floor(durationMs / 60000);

626 const secs = Math.floor((durationMs % 60000) / 1000);

627 

628 let branch = '';

629 try {

630 branch = execSync('git branch --show-current', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'] }).trim();

631 branch = branch ? ` | 🌿 ${branch}` : '';

632 } catch {}

633 

634 console.log(`${CYAN}[${model}]${RESET} 📁 ${dir}${branch}`);

635 console.log(`${barColor}${bar}${RESET} ${pct}% | ${YELLOW}$${cost.toFixed(2)}${RESET} | ⏱️ ${mins}m ${secs}s`);

636 });

637 ```

638</CodeGroup>

639 

640### Кликабельные ссылки

641 

642Этот пример создаёт кликабельную ссылку на ваш репозиторий GitHub. Он читает URL удалённого репозитория, преобразует формат SSH в HTTPS с помощью `sed` и оборачивает имя репозитория в коды экранирования OSC 8. Удерживайте Cmd (macOS) или Ctrl (Windows/Linux) и нажмите, чтобы открыть ссылку в браузере.

643 

644<Frame>

645 <img src="https://mintcdn.com/claude-code/nibzesLaJVh4ydOq/images/statusline-links.png?fit=max&auto=format&n=nibzesLaJVh4ydOq&q=85&s=4bcc6e7deb7cf52f41ab85a219b52661" alt="Строка состояния, показывающая кликабельную ссылку на репозиторий GitHub" width="726" height="198" data-path="images/statusline-links.png" />

646</Frame>

647 

648Каждый скрипт получает URL удалённого репозитория, преобразует формат SSH в HTTPS и оборачивает имя репозитория в коды экранирования OSC 8. Версия Bash использует `printf '%b'`, которая более надёжно интерпретирует экранирующие последовательности, чем `echo -e` в разных оболочках:

649 

650<CodeGroup>

651 ```bash Bash theme={null}

652 #!/bin/bash

653 input=$(cat)

654 

655 MODEL=$(echo "$input" | jq -r '.model.display_name')

656 

657 # Convert git SSH URL to HTTPS

658 REMOTE=$(git remote get-url origin 2>/dev/null | sed 's/git@github.com:/https:\/\/github.com\//' | sed 's/\.git$//')

659 

660 if [ -n "$REMOTE" ]; then

661 REPO_NAME=$(basename "$REMOTE")

662 # OSC 8 format: \e]8;;URL\a then TEXT then \e]8;;\a

663 # printf %b interprets escape sequences reliably across shells

664 printf '%b' "[$MODEL] 🔗 \e]8;;${REMOTE}\a${REPO_NAME}\e]8;;\a\n"

665 else

666 echo "[$MODEL]"

667 fi

668 ```

669 

670 ```python Python theme={null}

671 #!/usr/bin/env python3

672 import json, sys, subprocess, re, os

673 

674 data = json.load(sys.stdin)

675 model = data['model']['display_name']

676 

677 # Get git remote URL

678 try:

679 remote = subprocess.check_output(

680 ['git', 'remote', 'get-url', 'origin'],

681 stderr=subprocess.DEVNULL, text=True

682 ).strip()

683 # Convert SSH to HTTPS format

684 remote = re.sub(r'^git@github\.com:', 'https://github.com/', remote)

685 remote = re.sub(r'\.git$', '', remote)

686 repo_name = os.path.basename(remote)

687 # OSC 8 escape sequences

688 link = f"\033]8;;{remote}\a{repo_name}\033]8;;\a"

689 print(f"[{model}] 🔗 {link}")

690 except:

691 print(f"[{model}]")

692 ```

693 

694 ```javascript Node.js theme={null}

695 #!/usr/bin/env node

696 const { execSync } = require('child_process');

697 const path = require('path');

698 

699 let input = '';

700 process.stdin.on('data', chunk => input += chunk);

701 process.stdin.on('end', () => {

702 const data = JSON.parse(input);

703 const model = data.model.display_name;

704 

705 try {

706 let remote = execSync('git remote get-url origin', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'] }).trim();

707 // Convert SSH to HTTPS format

708 remote = remote.replace(/^git@github\.com:/, 'https://github.com/').replace(/\.git$/, '');

709 const repoName = path.basename(remote);

710 // OSC 8 escape sequences

711 const link = `\x1b]8;;${remote}\x07${repoName}\x1b]8;;\x07`;

712 console.log(`[${model}] 🔗 ${link}`);

713 } catch {

714 console.log(`[${model}]`);

715 }

716 });

717 ```

718</CodeGroup>

719 

720### Использование лимита скорости

721 

722Отобразите использование лимита скорости подписки Claude.ai в строке состояния. Объект `rate_limits` содержит `five_hour` (5-часовое скользящее окно) и `seven_day` (еженедельное) окна. Каждое окно предоставляет `used_percentage` (0-100) и `resets_at` (секунды эпохи Unix, когда окно сбрасывается).

723 

724Это поле присутствует только для подписчиков Claude.ai (Pro/Max) после первого ответа API. Каждый скрипт корректно обрабатывает отсутствующее поле:

725 

726<CodeGroup>

727 ```bash Bash theme={null}

728 #!/bin/bash

729 input=$(cat)

730 

731 MODEL=$(echo "$input" | jq -r '.model.display_name')

732 # "// empty" produces no output when rate_limits is absent

733 FIVE_H=$(echo "$input" | jq -r '.rate_limits.five_hour.used_percentage // empty')

734 WEEK=$(echo "$input" | jq -r '.rate_limits.seven_day.used_percentage // empty')

735 

736 LIMITS=""

737 [ -n "$FIVE_H" ] && LIMITS="5h: $(printf '%.0f' "$FIVE_H")%"

738 [ -n "$WEEK" ] && LIMITS="${LIMITS:+$LIMITS }7d: $(printf '%.0f' "$WEEK")%"

739 

740 [ -n "$LIMITS" ] && echo "[$MODEL] | $LIMITS" || echo "[$MODEL]"

741 ```

742 

743 ```python Python theme={null}

744 #!/usr/bin/env python3

745 import json, sys

746 

747 data = json.load(sys.stdin)

748 model = data['model']['display_name']

749 

750 parts = []

751 rate = data.get('rate_limits', {})

752 five_h = rate.get('five_hour', {}).get('used_percentage')

753 week = rate.get('seven_day', {}).get('used_percentage')

754 

755 if five_h is not None:

756 parts.append(f"5h: {five_h:.0f}%")

757 if week is not None:

758 parts.append(f"7d: {week:.0f}%")

759 

760 if parts:

761 print(f"[{model}] | {' '.join(parts)}")

762 else:

763 print(f"[{model}]")

764 ```

765 

766 ```javascript Node.js theme={null}

767 #!/usr/bin/env node

768 let input = '';

769 process.stdin.on('data', chunk => input += chunk);

770 process.stdin.on('end', () => {

771 const data = JSON.parse(input);

772 const model = data.model.display_name;

773 

774 const parts = [];

775 const fiveH = data.rate_limits?.five_hour?.used_percentage;

776 const week = data.rate_limits?.seven_day?.used_percentage;

777 

778 if (fiveH != null) parts.push(`5h: ${Math.round(fiveH)}%`);

779 if (week != null) parts.push(`7d: ${Math.round(week)}%`);

780 

781 console.log(parts.length ? `[${model}] | ${parts.join(' ')}` : `[${model}]`);

782 });

783 ```

784</CodeGroup>

785 

786### Кэширование дорогостоящих операций

787 

788Ваш скрипт строки состояния запускается часто во время активных сеансов. Команды, такие как `git status` или `git diff`, могут быть медленными, особенно в больших репозиториях. Этот пример кэширует информацию git во временный файл и обновляет её только каждые 5 секунд.

789 

790Имя файла кэша должно быть стабильным во время вызовов строки состояния в рамках сеанса, но уникальным для разных сеансов, чтобы одновременные сеансы в разных репозиториях не читали состояние git друг друга. Идентификаторы на основе процесса, такие как `$$`, `os.getpid()` или `process.pid`, изменяются при каждом вызове и нарушают кэш. Вместо этого используйте `session_id` из входных данных JSON: он стабилен в течение жизни сеанса и уникален для каждого сеанса.

791 

792Каждый скрипт проверяет, отсутствует ли файл кэша или он старше 5 секунд, перед запуском команд git:

793 

794<CodeGroup>

795 ```bash Bash theme={null}

796 #!/bin/bash

797 input=$(cat)

798 

799 MODEL=$(echo "$input" | jq -r '.model.display_name')

800 DIR=$(echo "$input" | jq -r '.workspace.current_dir')

801 SESSION_ID=$(echo "$input" | jq -r '.session_id')

802 

803 CACHE_FILE="/tmp/statusline-git-cache-$SESSION_ID"

804 CACHE_MAX_AGE=5 # seconds

805 

806 cache_is_stale() {

807 [ ! -f "$CACHE_FILE" ] || \

808 # stat -f %m is macOS, stat -c %Y is Linux

809 [ $(($(date +%s) - $(stat -f %m "$CACHE_FILE" 2>/dev/null || stat -c %Y "$CACHE_FILE" 2>/dev/null || echo 0))) -gt $CACHE_MAX_AGE ]

810 }

811 

812 if cache_is_stale; then

813 if git rev-parse --git-dir > /dev/null 2>&1; then

814 BRANCH=$(git branch --show-current 2>/dev/null)

815 STAGED=$(git diff --cached --numstat 2>/dev/null | wc -l | tr -d ' ')

816 MODIFIED=$(git diff --numstat 2>/dev/null | wc -l | tr -d ' ')

817 echo "$BRANCH|$STAGED|$MODIFIED" > "$CACHE_FILE"

818 else

819 echo "||" > "$CACHE_FILE"

820 fi

821 fi

822 

823 IFS='|' read -r BRANCH STAGED MODIFIED < "$CACHE_FILE"

824 

825 if [ -n "$BRANCH" ]; then

826 echo "[$MODEL] 📁 ${DIR##*/} | 🌿 $BRANCH +$STAGED ~$MODIFIED"

827 else

828 echo "[$MODEL] 📁 ${DIR##*/}"

829 fi

830 ```

831 

832 ```python Python theme={null}

833 #!/usr/bin/env python3

834 import json, sys, subprocess, os, time

835 

836 data = json.load(sys.stdin)

837 model = data['model']['display_name']

838 directory = os.path.basename(data['workspace']['current_dir'])

839 session_id = data['session_id']

840 

841 CACHE_FILE = f"/tmp/statusline-git-cache-{session_id}"

842 CACHE_MAX_AGE = 5 # seconds

843 

844 def cache_is_stale():

845 if not os.path.exists(CACHE_FILE):

846 return True

847 return time.time() - os.path.getmtime(CACHE_FILE) > CACHE_MAX_AGE

848 

849 if cache_is_stale():

850 try:

851 subprocess.check_output(['git', 'rev-parse', '--git-dir'], stderr=subprocess.DEVNULL)

852 branch = subprocess.check_output(['git', 'branch', '--show-current'], text=True).strip()

853 staged = subprocess.check_output(['git', 'diff', '--cached', '--numstat'], text=True).strip()

854 modified = subprocess.check_output(['git', 'diff', '--numstat'], text=True).strip()

855 staged_count = len(staged.split('\n')) if staged else 0

856 modified_count = len(modified.split('\n')) if modified else 0

857 with open(CACHE_FILE, 'w') as f:

858 f.write(f"{branch}|{staged_count}|{modified_count}")

859 except:

860 with open(CACHE_FILE, 'w') as f:

861 f.write("||")

862 

863 with open(CACHE_FILE) as f:

864 branch, staged, modified = f.read().strip().split('|')

865 

866 if branch:

867 print(f"[{model}] 📁 {directory} | 🌿 {branch} +{staged} ~{modified}")

868 else:

869 print(f"[{model}] 📁 {directory}")

870 ```

871 

872 ```javascript Node.js theme={null}

873 #!/usr/bin/env node

874 const { execSync } = require('child_process');

875 const fs = require('fs');

876 const path = require('path');

877 

878 let input = '';

879 process.stdin.on('data', chunk => input += chunk);

880 process.stdin.on('end', () => {

881 const data = JSON.parse(input);

882 const model = data.model.display_name;

883 const dir = path.basename(data.workspace.current_dir);

884 const sessionId = data.session_id;

885 

886 const CACHE_FILE = `/tmp/statusline-git-cache-${sessionId}`;

887 const CACHE_MAX_AGE = 5; // seconds

888 

889 const cacheIsStale = () => {

890 if (!fs.existsSync(CACHE_FILE)) return true;

891 return (Date.now() / 1000) - fs.statSync(CACHE_FILE).mtimeMs / 1000 > CACHE_MAX_AGE;

892 };

893 

894 if (cacheIsStale()) {

895 try {

896 execSync('git rev-parse --git-dir', { stdio: 'ignore' });

897 const branch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();

898 const staged = execSync('git diff --cached --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

899 const modified = execSync('git diff --numstat', { encoding: 'utf8' }).trim().split('\n').filter(Boolean).length;

900 fs.writeFileSync(CACHE_FILE, `${branch}|${staged}|${modified}`);

901 } catch {

902 fs.writeFileSync(CACHE_FILE, '||');

903 }

904 }

905 

906 const [branch, staged, modified] = fs.readFileSync(CACHE_FILE, 'utf8').trim().split('|');

907 

908 if (branch) {

909 console.log(`[${model}] 📁 ${dir} | 🌿 ${branch} +${staged} ~${modified}`);

910 } else {

911 console.log(`[${model}] 📁 ${dir}`);

912 }

913 });

914 ```

915</CodeGroup>

916 

917### Конфигурация Windows

918 

919На Windows Claude Code запускает команды строки состояния через Git Bash, когда Git Bash установлен, или через PowerShell, когда Git Bash отсутствует. Чтобы запустить скрипт PowerShell как вашу строку состояния, вызовите его через `powershell`; это работает из любой оболочки:

920 

921<CodeGroup>

922 ```json settings.json theme={null}

923 {

924 "statusLine": {

925 "type": "command",

926 "command": "powershell -NoProfile -File C:/Users/username/.claude/statusline.ps1"

927 }

928 }

929 ```

930 

931 ```powershell statusline.ps1 theme={null}

932 $input_json = $input | Out-String | ConvertFrom-Json

933 $cwd = $input_json.cwd

934 $model = $input_json.model.display_name

935 $used = $input_json.context_window.used_percentage

936 $dirname = Split-Path $cwd -Leaf

937 

938 if ($used) {

939 Write-Host "$dirname [$model] ctx: $used%"

940 } else {

941 Write-Host "$dirname [$model]"

942 }

943 ```

944</CodeGroup>

945 

946Или запустите скрипт Bash напрямую:

947 

948<CodeGroup>

949 ```json settings.json theme={null}

950 {

951 "statusLine": {

952 "type": "command",

953 "command": "~/.claude/statusline.sh"

954 }

955 }

956 ```

957 

958 ```bash statusline.sh theme={null}

959 #!/usr/bin/env bash

960 input=$(cat)

961 cwd=$(echo "$input" | grep -o '"cwd":"[^"]*"' | cut -d'"' -f4)

962 model=$(echo "$input" | grep -o '"display_name":"[^"]*"' | cut -d'"' -f4)

963 dirname="${cwd##*[/\\]}"

964 echo "$dirname [$model]"

965 ```

966</CodeGroup>

967 

968## Строки состояния подагентов

969 

970Параметр `subagentStatusLine` отображает пользовательское тело строки для каждого [подагента](/ru/sub-agents), показанного на панели агентов ниже приглашения. Используйте его для замены строки по умолчанию `name · description · token count` на ваше собственное форматирование.

971 

972```json theme={null}

973{

974 "subagentStatusLine": {

975 "type": "command",

976 "command": "~/.claude/subagent-statusline.sh"

977 }

978}

979```

980 

981Команда запускается один раз за цикл обновления со всеми видимыми строками подагентов, переданными как один объект JSON на stdin. Входные данные включают [базовые поля hooks](/ru/hooks#common-input-fields) плюс `columns` (используемая ширина строки) и массив `tasks`, где каждая задача имеет `id`, `name`, `type`, `status`, `description`, `label`, `startTime`, `tokenCount`, `tokenSamples` и `cwd`.

982 

983Напишите одну строку JSON в stdout для каждой строки, которую вы хотите переопределить, в форме `{"id": "<task id>", "content": "<row body>"}`. Строка `content` отображается как есть, включая цвета ANSI и гиперссылки OSC 8. Пропустите `id` задачи, чтобы сохранить отображение по умолчанию для этой строки; выведите пустую строку `content`, чтобы скрыть её.

984 

985Те же ворота доверия и `disableAllHooks`, которые применяются к `statusLine`, применяются здесь. Плагины могут поставлять `subagentStatusLine` по умолчанию в своём [`settings.json`](/ru/plugins-reference#standard-plugin-layout).

986 

987## Советы

988 

989* **Тестирование с макетными входными данными**: `echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`

990* **Сохраняйте вывод коротким**: строка состояния имеет ограниченную ширину, поэтому длинный вывод может быть обрезан или неправильно обёрнут

991* **Кэшируйте медленные операции**: ваш скрипт запускается часто во время активных сеансов, поэтому команды, такие как `git status`, могут вызвать задержку. См. [пример кэширования](#cache-expensive-operations) для того, как это обработать.

992 

993Проекты сообщества, такие как [ccstatusline](https://github.com/sirmalloc/ccstatusline) и [starship-claude](https://github.com/martinemde/starship-claude), предоставляют предварительно построенные конфигурации с темами и дополнительными функциями.

994 

995## Устранение неполадок

996 

997**Строка состояния не отображается**

998 

999* Убедитесь, что ваш скрипт исполняемый: `chmod +x ~/.claude/statusline.sh`

1000* Проверьте, что ваш скрипт выводит в stdout, а не stderr

1001* Запустите ваш скрипт вручную, чтобы убедиться, что он выводит результат

1002* Если `disableAllHooks` установлен на `true` в ваших настройках, строка состояния также отключена. Удалите эту настройку или установите её на `false`, чтобы повторно включить.

1003* Запустите `claude --debug`, чтобы записать код выхода и stderr из первого вызова строки состояния в сеансе

1004* Попросите Claude прочитать ваш файл настроек и выполнить команду `statusLine` напрямую, чтобы выявить ошибки

1005 

1006**Строка состояния показывает `--` или пустые значения**

1007 

1008* Поля могут быть `null` перед завершением первого ответа API

1009* Обрабатывайте нулевые значения в вашем скрипте с резервными значениями, такими как `// 0` в jq

1010* Перезагрузите Claude Code, если значения остаются пустыми после нескольких сообщений

1011 

1012**Процент контекста показывает неожиданные значения**

1013 

1014* Используйте `used_percentage` для точного состояния контекста вместо совокупных итогов

1015* `total_input_tokens` и `total_output_tokens` накапливаются во всём сеансе и могут превышать размер контекстного окна

1016* Процент контекста может отличаться от вывода `/context` из-за времени расчёта каждого

1017 

1018**Ссылки OSC 8 не кликабельны**

1019 

1020* Убедитесь, что ваш терминал поддерживает гиперссылки OSC 8 (iTerm2, Kitty, WezTerm)

1021 

1022* Terminal.app не поддерживает кликабельные ссылки

1023 

1024* Если текст ссылки отображается, но не кликабелен, Claude Code может не обнаружить поддержку гиперссылок в вашем терминале. Это часто влияет на Windows Terminal и другие эмуляторы, не входящие в список автоматического обнаружения. Установите переменную окружения `FORCE_HYPERLINK` для переопределения обнаружения перед запуском Claude Code:

1025 

1026 ```bash theme={null}

1027 FORCE_HYPERLINK=1 claude

1028 ```

1029 

1030 В PowerShell сначала установите переменную в текущем сеансе:

1031 

1032 ```powershell theme={null}

1033 $env:FORCE_HYPERLINK = "1"; claude

1034 ```

1035 

1036* Сеансы SSH и tmux могут удалять последовательности OSC в зависимости от конфигурации

1037 

1038* Если последовательности экранирования отображаются как буквальный текст, например `\e]8;;`, используйте `printf '%b'` вместо `echo -e` для более надёжной обработки экранирования

1039 

1040**Глюки отображения с последовательностями экранирования**

1041 

1042* Сложные последовательности экранирования (цвета ANSI, ссылки OSC 8) могут иногда вызывать искажённый вывод, если они перекрываются с другими обновлениями пользовательского интерфейса

1043* Если вы видите повреждённый текст, попробуйте упростить ваш скрипт до простого текстового вывода

1044* Многострочные строки состояния с кодами экранирования более подвержены проблемам отображения, чем однострочный простой текст

1045 

1046**Ошибки скрипта или зависания**

1047 

1048* Скрипты, которые выходят с ненулевыми кодами или не выводят результат, вызывают пустую строку состояния

1049* Медленные скрипты блокируют обновление строки состояния до их завершения. Держите скрипты быстрыми, чтобы избежать устаревшего вывода.

1050* Если новое обновление срабатывает, пока медленный скрипт работает, выполнение скрипта отменяется

1051* Протестируйте ваш скрипт независимо с макетными входными данными перед его настройкой

1052 

1053**Требуется доверие рабочей области**

1054 

1055* Команда строки состояния запускается только если вы приняли диалог доверия рабочей области для текущего каталога. Поскольку `statusLine` выполняет команду оболочки, она требует того же принятия доверия, что и hooks и другие параметры, выполняющие оболочку.

1056* Если доверие не принято, вы увидите уведомление `statusline skipped · restart to fix` вместо вывода вашей строки состояния. Перезагрузите Claude Code и примите запрос доверия, чтобы включить его.

1057 

1058**Уведомления делят строку состояния**

1059 

1060* Системные уведомления, такие как ошибки MCP сервера и автоматические обновления, отображаются на правой стороне той же строки, что и ваша строка состояния. Временные уведомления, такие как предупреждение о низком контексте, также циклируют через эту область.

1061* Включение подробного режима добавляет счётчик токенов в эту область

1062* На узких терминалах эти уведомления могут обрезать вывод вашей строки состояния

sub-agents.md +1011 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Создание пользовательских subagents

6 

7> Создавайте и используйте специализированные AI subagents в Claude Code для рабочих процессов, ориентированных на конкретные задачи, и улучшенного управления контекстом.

8 

9Subagents — это специализированные AI-помощники, которые обрабатывают определённые типы задач. Используйте один, когда побочная задача заполнит основной разговор результатами поиска, логами или содержимым файлов, на которые вы больше не будете ссылаться: subagent выполняет эту работу в собственном контексте и возвращает только резюме. Определите пользовательский subagent, когда вы постоянно порождаете одного и того же рабочего с одинаковыми инструкциями.

10 

11Каждый subagent работает в собственном контекстном окне с пользовательским системным приглашением, специфическим доступом к инструментам и независимыми разрешениями. Когда Claude встречает задачу, соответствующую описанию subagent, он делегирует её этому subagent, который работает независимо и возвращает результаты. Чтобы увидеть экономию контекста на практике, [визуализация контекстного окна](/ru/context-window) проходит через сессию, где subagent обрабатывает исследование в собственном отдельном окне.

12 

13<Note>

14 Если вам нужны несколько агентов, работающих параллельно и взаимодействующих друг с другом, см. [agent teams](/ru/agent-teams). Subagents работают в рамках одной сессии; agent teams координируют работу в отдельных сессиях.

15</Note>

16 

17Subagents помогают вам:

18 

19* **Сохранять контекст**, отделяя исследование и реализацию от основного разговора

20* **Применять ограничения**, ограничивая доступ subagent к определённым инструментам

21* **Переиспользовать конфигурации** в проектах с помощью subagents уровня пользователя

22* **Специализировать поведение** с помощью сфокусированных системных приглашений для конкретных областей

23* **Контролировать затраты**, маршрутизируя задачи на более быстрые и дешёвые модели, такие как Haiku

24 

25Claude использует описание каждого subagent для решения о делегировании задач. Когда вы создаёте subagent, напишите чёткое описание, чтобы Claude знал, когда его использовать.

26 

27Claude Code включает несколько встроенных subagents, таких как **Explore**, **Plan** и **general-purpose**. Вы также можете создавать пользовательские subagents для обработки конкретных задач. На этой странице рассматриваются:

28 

29* [Встроенные subagents](#built-in-subagents)

30* [Как создать свой собственный](#quickstart-create-your-first-subagent)

31* [Полные параметры конфигурации](#configure-subagents)

32* [Паттерны работы с subagents](#work-with-subagents)

33* [Forked subagents](#fork-the-current-conversation)

34* [Примеры subagents](#example-subagents)

35 

36## Встроенные subagents

37 

38Claude Code включает встроенные subagents, которые Claude автоматически использует при необходимости. Каждый наследует разрешения родительского разговора с дополнительными ограничениями на инструменты.

39 

40<Tabs>

41 <Tab title="Explore">

42 Быстрый агент, доступный только для чтения, оптимизированный для поиска и анализа кодовых баз.

43 

44 * **Model**: Haiku (быстрый, низкая задержка)

45 * **Tools**: Инструменты только для чтения (запрещён доступ к инструментам Write и Edit)

46 * **Purpose**: Обнаружение файлов, поиск кода, исследование кодовой базы

47 

48 Claude делегирует Explore, когда ему нужно искать или понимать кодовую базу без внесения изменений. Это сохраняет результаты исследования вне контекста основного разговора.

49 

50 При вызове Explore Claude указывает уровень тщательности: **quick** для целевых поисков, **medium** для сбалансированного исследования или **very thorough** для комплексного анализа.

51 </Tab>

52 

53 <Tab title="Plan">

54 Исследовательский агент, используемый во время [plan mode](/ru/common-workflows#use-plan-mode-for-safe-code-analysis) для сбора контекста перед представлением плана.

55 

56 * **Model**: Наследуется из основного разговора

57 * **Tools**: Инструменты только для чтения (запрещён доступ к инструментам Write и Edit)

58 * **Purpose**: Исследование кодовой базы для планирования

59 

60 Когда вы находитесь в режиме плана и Claude нужно понять вашу кодовую базу, он делегирует исследование subagent Plan. Это предотвращает бесконечное вложение (subagents не могут порождать других subagents), при этом собирая необходимый контекст.

61 </Tab>

62 

63 <Tab title="General-purpose">

64 Способный агент для сложных многошаговых задач, требующих как исследования, так и действия.

65 

66 * **Model**: Наследуется из основного разговора

67 * **Tools**: Все инструменты

68 * **Purpose**: Сложное исследование, многошаговые операции, модификация кода

69 

70 Claude делегирует general-purpose, когда задача требует как исследования, так и модификации, сложного рассуждения для интерпретации результатов или нескольких зависимых шагов.

71 </Tab>

72 

73 <Tab title="Other">

74 Claude Code включает дополнительные вспомогательные агенты для конкретных задач. Обычно они вызываются автоматически, поэтому вам не нужно использовать их напрямую.

75 

76 | Agent | Model | Когда Claude его использует |

77 | :---------------- | :----- | :--------------------------------------------------------------- |

78 | statusline-setup | Sonnet | Когда вы запускаете `/statusline` для настройки строки состояния |

79 | Claude Code Guide | Haiku | Когда вы задаёте вопросы о функциях Claude Code |

80 </Tab>

81</Tabs>

82 

83Помимо этих встроенных subagents, вы можете создавать свои собственные с пользовательскими приглашениями, ограничениями инструментов, режимами разрешений, hooks и skills. В следующих разделах показано, как начать работу и настроить subagents.

84 

85## Quickstart: создание вашего первого subagent

86 

87Subagents определяются в файлах Markdown с YAML frontmatter. Вы можете [создавать их вручную](#write-subagent-files) или использовать команду `/agents`.

88 

89Это пошаговое руководство проведёт вас через создание subagent уровня пользователя с помощью команды `/agents`. Subagent проверяет код и предлагает улучшения для кодовой базы.

90 

91<Steps>

92 <Step title="Откройте интерфейс subagents">

93 В Claude Code запустите:

94 

95 ```text theme={null}

96 /agents

97 ```

98 </Step>

99 

100 <Step title="Выберите местоположение">

101 Переключитесь на вкладку **Library**, выберите **Create new agent**, затем выберите **Personal**. Это сохранит subagent в `~/.claude/agents/`, чтобы он был доступен во всех ваших проектах.

102 </Step>

103 

104 <Step title="Генерируйте с помощью Claude">

105 Выберите **Generate with Claude**. При появлении запроса опишите subagent:

106 

107 ```text theme={null}

108 A code improvement agent that scans files and suggests improvements

109 for readability, performance, and best practices. It should explain

110 each issue, show the current code, and provide an improved version.

111 ```

112 

113 Claude генерирует идентификатор, описание и системное приглашение для вас.

114 </Step>

115 

116 <Step title="Выберите инструменты">

117 Для проверяющего, доступного только для чтения, отмените выбор всего, кроме **Read-only tools**. Если вы оставите все инструменты выбранными, subagent наследует все инструменты, доступные основному разговору.

118 </Step>

119 

120 <Step title="Выберите модель">

121 Выберите, какую модель использует subagent. Для этого примера агента выберите **Sonnet**, который обеспечивает баланс между возможностями и скоростью анализа паттернов кода.

122 </Step>

123 

124 <Step title="Выберите цвет">

125 Выберите цвет фона для subagent. Это помогает вам определить, какой subagent работает в пользовательском интерфейсе.

126 </Step>

127 

128 <Step title="Настройте память">

129 Выберите **User scope**, чтобы дать subagent [постоянный каталог памяти](#enable-persistent-memory) в `~/.claude/agent-memory/`. Subagent использует это для накопления идей в разговорах, таких как паттерны кодовой базы и повторяющиеся проблемы. Выберите **None**, если вы не хотите, чтобы subagent сохранял обучение.

130 </Step>

131 

132 <Step title="Сохраните и попробуйте">

133 Просмотрите сводку конфигурации. Нажмите `s` или `Enter` для сохранения, или нажмите `e` для сохранения и редактирования файла в вашем редакторе. Subagent доступен немедленно. Попробуйте:

134 

135 ```text theme={null}

136 Use the code-improver agent to suggest improvements in this project

137 ```

138 

139 Claude делегирует вашему новому subagent, который сканирует кодовую базу и возвращает предложения по улучшению.

140 </Step>

141</Steps>

142 

143Теперь у вас есть subagent, который вы можете использовать в любом проекте на вашей машине для анализа кодовых баз и предложения улучшений.

144 

145Вы также можете создавать subagents вручную как файлы Markdown, определять их через флаги CLI или распространять их через plugins. В следующих разделах рассматриваются все параметры конфигурации.

146 

147## Настройка subagents

148 

149### Используйте команду /agents

150 

151Команда `/agents` открывает интерфейс с вкладками для управления subagents. Вкладка **Running** показывает активные subagents и позволяет вам открывать или останавливать их. Вкладка **Library** позволяет вам:

152 

153* Просматривать все доступные subagents (встроенные, пользовательские, проектные и из plugins)

154* Создавать новые subagents с помощью управляемой установки или генерации Claude

155* Редактировать существующую конфигурацию subagent и доступ к инструментам

156* Удалять пользовательские subagents

157* Видеть, какие subagents активны при наличии дубликатов

158 

159Это рекомендуемый способ создания и управления subagents. Для ручного создания или автоматизации вы также можете добавлять файлы subagent напрямую.

160 

161Чтобы вывести список всех настроенных subagents из командной строки без запуска интерактивной сессии, запустите `claude agents`. Это показывает агентов, сгруппированных по источнику, и указывает, какие переопределены определениями с более высоким приоритетом.

162 

163### Выберите область subagent

164 

165Subagents — это файлы Markdown с YAML frontmatter. Сохраняйте их в разных местах в зависимости от области. Когда несколько subagents имеют одно и то же имя, выигрывает местоположение с более высоким приоритетом.

166 

167| Location | Scope | Priority | Как создать |

168| :-------------------------- | :----------------- | :------------- | :------------------------------------------------ |

169| Managed settings | Организация | 1 (наивысший) | Развёрнуто через [managed settings](/ru/settings) |

170| `--agents` CLI flag | Текущая сессия | 2 | Передайте JSON при запуске Claude Code |

171| `.claude/agents/` | Текущий проект | 3 | Интерактивно или вручную |

172| `~/.claude/agents/` | Все ваши проекты | 4 | Интерактивно или вручную |

173| Директория `agents/` plugin | Где включен plugin | 5 (наименьший) | Установлено с [plugins](/ru/plugins) |

174 

175**Project subagents** (`.claude/agents/`) идеальны для subagents, специфичных для кодовой базы. Проверьте их в систему контроля версий, чтобы ваша команда могла использовать и улучшать их совместно.

176 

177Project subagents обнаруживаются путём прохода вверх от текущей рабочей директории. Директории, добавленные с помощью `--add-dir`, [предоставляют доступ только к файлам](/ru/permissions#additional-directories-grant-file-access-not-configuration) и не сканируются на наличие subagents. Чтобы поделиться subagents в проектах, используйте `~/.claude/agents/` или [plugin](/ru/plugins).

178 

179**User subagents** (`~/.claude/agents/`) — это личные subagents, доступные во всех ваших проектах.

180 

181**CLI-определённые subagents** передаются как JSON при запуске Claude Code. Они существуют только для этой сессии и не сохраняются на диск, что делает их полезными для быстрого тестирования или скриптов автоматизации. Вы можете определить несколько subagents в одном вызове `--agents`:

182 

183```bash theme={null}

184claude --agents '{

185 "code-reviewer": {

186 "description": "Expert code reviewer. Use proactively after code changes.",

187 "prompt": "You are a senior code reviewer. Focus on code quality, security, and best practices.",

188 "tools": ["Read", "Grep", "Glob", "Bash"],

189 "model": "sonnet"

190 },

191 "debugger": {

192 "description": "Debugging specialist for errors and test failures.",

193 "prompt": "You are an expert debugger. Analyze errors, identify root causes, and provide fixes."

194 }

195}'

196```

197 

198Флаг `--agents` принимает JSON с теми же полями [frontmatter](#supported-frontmatter-fields), что и файловые subagents: `description`, `prompt`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `isolation` и `color`. Используйте `prompt` для системного приглашения, эквивалентного телу markdown в файловых subagents.

199 

200**Managed subagents** развёртываются администраторами организации. Поместите файлы markdown в `.claude/agents/` внутри [директории managed settings](/ru/settings#settings-files), используя тот же формат frontmatter, что и project и user subagents. Managed определения имеют приоритет над project и user subagents с тем же именем.

201 

202**Plugin subagents** поступают из [plugins](/ru/plugins), которые вы установили. Они появляются в `/agents` рядом с вашими пользовательскими subagents. См. [справку по компонентам plugin](/ru/plugins-reference#agents) для деталей создания plugin subagents.

203 

204<Note>

205 По соображениям безопасности plugin subagents не поддерживают поля frontmatter `hooks`, `mcpServers` или `permissionMode`. Эти поля игнорируются при загрузке агентов из plugin. Если они вам нужны, скопируйте файл агента в `.claude/agents/` или `~/.claude/agents/`. Вы также можете добавить правила в [`permissions.allow`](/ru/settings#permission-settings) в `settings.json` или `settings.local.json`, но эти правила применяются ко всей сессии, а не только к plugin subagent.

206</Note>

207 

208Определения subagent из любой из этих областей также доступны для [agent teams](/ru/agent-teams#use-subagent-definitions-for-teammates): при порождении товарища по команде вы можете ссылаться на тип subagent, и товарищ использует его `tools` и `model`, с телом определения добавленным в качестве дополнительных инструкций к системному приглашению товарища. См. [agent teams](/ru/agent-teams#use-subagent-definitions-for-teammates) для того, какие поля frontmatter применяются на этом пути.

209 

210### Напишите файлы subagent

211 

212Файлы subagent используют YAML frontmatter для конфигурации, за которым следует системное приглашение в Markdown:

213 

214<Note>

215 Subagents загружаются при запуске сессии. Если вы создаёте subagent путём ручного добавления файла, перезагрузите сессию или используйте `/agents` для немедленной загрузки.

216</Note>

217 

218```markdown theme={null}

219---

220name: code-reviewer

221description: Reviews code for quality and best practices

222tools: Read, Glob, Grep

223model: sonnet

224---

225 

226You are a code reviewer. When invoked, analyze the code and provide

227specific, actionable feedback on quality, security, and best practices.

228```

229 

230Frontmatter определяет метаданные и конфигурацию subagent. Тело становится системным приглашением, которое направляет поведение subagent. Subagents получают только это системное приглашение (плюс базовые детали окружения, такие как рабочая директория), а не полное системное приглашение Claude Code.

231 

232Subagent начинает работу в текущей рабочей директории основного разговора. В пределах subagent команды `cd` не сохраняются между вызовами инструментов Bash или PowerShell и не влияют на рабочую директорию основного разговора. Чтобы дать subagent изолированную копию репозитория вместо этого, установите [`isolation: worktree`](#supported-frontmatter-fields).

233 

234#### Поддерживаемые поля frontmatter

235 

236Следующие поля могут использоваться в YAML frontmatter. Требуются только `name` и `description`.

237 

238| Field | Required | Description |

239| :---------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

240| `name` | Yes | Уникальный идентификатор, использующий строчные буквы и дефисы |

241| `description` | Yes | Когда Claude должен делегировать этому subagent |

242| `tools` | No | [Инструменты](#available-tools), которые может использовать subagent. Наследует все инструменты, если опущено |

243| `disallowedTools` | No | Инструменты для запрета, удалённые из унаследованного или указанного списка |

244| `model` | No | [Модель](#choose-a-model) для использования: `sonnet`, `opus`, `haiku`, полный ID модели (например, `claude-opus-4-7`), или `inherit`. По умолчанию `inherit` |

245| `permissionMode` | No | [Режим разрешений](#permission-modes): `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions` или `plan`. Игнорируется для [plugin subagents](#choose-the-subagent-scope) |

246| `maxTurns` | No | Максимальное количество агентских ходов перед остановкой subagent |

247| `skills` | No | [Skills](/ru/skills) для загрузки в контекст subagent при запуске. Полное содержимое skill инжектируется, а не просто становится доступным для вызова. Subagents не наследуют skills из родительского разговора |

248| `mcpServers` | No | [MCP servers](/ru/mcp) доступные этому subagent. Каждая запись — это либо имя сервера, ссылающееся на уже настроенный сервер (например, `"slack"`), либо встроенное определение с именем сервера в качестве ключа и полной [конфигурацией MCP server](/ru/mcp#installing-mcp-servers) в качестве значения. Игнорируется для [plugin subagents](#choose-the-subagent-scope) |

249| `hooks` | No | [Lifecycle hooks](#define-hooks-for-subagents) в области этого subagent. Игнорируется для [plugin subagents](#choose-the-subagent-scope) |

250| `memory` | No | [Область постоянной памяти](#enable-persistent-memory): `user`, `project` или `local`. Включает кросс-сессионное обучение |

251| `background` | No | Установите на `true`, чтобы всегда запускать этот subagent как [фоновую задачу](#run-subagents-in-foreground-or-background). По умолчанию: `false` |

252| `effort` | No | Уровень усилий, когда этот subagent активен. Переопределяет уровень усилий сессии. По умолчанию: наследуется из сессии. Параметры: `low`, `medium`, `high`, `xhigh`, `max`; доступные уровни зависят от модели |

253| `isolation` | No | Установите на `worktree`, чтобы запустить subagent во временном [git worktree](/ru/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees), дав ему изолированную копию репозитория. Worktree автоматически очищается, если subagent не вносит изменения |

254| `color` | No | Цвет отображения для subagent в списке задач и транскрипте. Принимает `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink` или `cyan` |

255| `initialPrompt` | No | Автоматически отправляется как первый ход пользователя, когда этот агент работает как основной агент сессии (через `--agent` или параметр `agent`). [Commands](/ru/commands) и [skills](/ru/skills) обрабатываются. Добавляется в начало любого предоставленного пользователем приглашения |

256 

257### Выберите модель

258 

259Поле `model` контролирует, какую [AI модель](/ru/model-config) использует subagent:

260 

261* **Model alias**: Используйте один из доступных псевдонимов: `sonnet`, `opus` или `haiku`

262* **Full model ID**: Используйте полный ID модели, такой как `claude-opus-4-7` или `claude-sonnet-4-6`. Принимает те же значения, что и флаг `--model`

263* **inherit**: Используйте ту же модель, что и основной разговор

264* **Omitted**: Если не указано, по умолчанию `inherit` (использует ту же модель, что и основной разговор)

265 

266Когда Claude вызывает subagent, он также может передать параметр `model` для этого конкретного вызова. Claude Code разрешает модель subagent в этом порядке:

267 

2681. Переменная окружения [`CLAUDE_CODE_SUBAGENT_MODEL`](/ru/model-config#environment-variables), если установлена

2692. Параметр `model` для конкретного вызова

2703. Frontmatter `model` определения subagent

2714. Модель основного разговора

272 

273### Контролируйте возможности subagent

274 

275Вы можете контролировать, что могут делать subagents, через доступ к инструментам, режимы разрешений и условные правила.

276 

277#### Доступные инструменты

278 

279Subagents могут использовать любой из [внутренних инструментов](/ru/tools-reference) Claude Code. По умолчанию subagents наследуют все инструменты из основного разговора, включая MCP инструменты.

280 

281Чтобы ограничить инструменты, используйте поле `tools` (список разрешений) или поле `disallowedTools` (список запретов). Этот пример использует `tools` для исключительного разрешения Read, Grep, Glob и Bash. Subagent не может редактировать файлы, писать файлы или использовать какие-либо MCP инструменты:

282 

283```yaml theme={null}

284---

285name: safe-researcher

286description: Research agent with restricted capabilities

287tools: Read, Grep, Glob, Bash

288---

289```

290 

291Этот пример использует `disallowedTools` для наследования каждого инструмента из основного разговора, кроме Write и Edit. Subagent сохраняет Bash, MCP инструменты и всё остальное:

292 

293```yaml theme={null}

294---

295name: no-writes

296description: Inherits every tool except file writes

297disallowedTools: Write, Edit

298---

299```

300 

301Если оба установлены, `disallowedTools` применяется первым, затем `tools` разрешается против оставшегося пула. Инструмент, указанный в обоих, удаляется.

302 

303#### Ограничьте, какие subagents могут быть порождены

304 

305Когда агент работает как основной поток с `claude --agent`, он может порождать subagents, используя инструмент Agent. Чтобы ограничить, какие типы subagent он может порождать, используйте синтаксис `Agent(agent_type)` в поле `tools`.

306 

307<Note>В версии 2.1.63 инструмент Task был переименован в Agent. Существующие ссылки `Task(...)` в настройках и определениях агентов по-прежнему работают как псевдонимы.</Note>

308 

309```yaml theme={null}

310---

311name: coordinator

312description: Coordinates work across specialized agents

313tools: Agent(worker, researcher), Read, Bash

314---

315```

316 

317Это список разрешений: только subagents `worker` и `researcher` могут быть порождены. Если агент попытается порождать любой другой тип, запрос не удастся и агент увидит только разрешённые типы в своём приглашении. Чтобы заблокировать конкретные агенты, разрешив все остальные, используйте [`permissions.deny`](#disable-specific-subagents) вместо этого.

318 

319Чтобы разрешить порождение любого subagent без ограничений, используйте `Agent` без скобок:

320 

321```yaml theme={null}

322tools: Agent, Read, Bash

323```

324 

325Если `Agent` полностью опущен из списка `tools`, агент не может порождать никакие subagents. Это ограничение применяется только к агентам, работающим как основной поток с `claude --agent`. Subagents не могут порождать других subagents, поэтому `Agent(agent_type)` не имеет эффекта в определениях subagent.

326 

327#### Область MCP servers для subagent

328 

329Используйте поле `mcpServers` для предоставления subagent доступа к [MCP](/ru/mcp) серверам, которые недоступны в основном разговоре. Встроенные серверы, определённые здесь, подключаются при запуске subagent и отключаются при его завершении. Строковые ссылки используют соединение родительской сессии.

330 

331<Note>

332 Поле `mcpServers` применяется в обоих контекстах, где может работать файл агента:

333 

334 * Как subagent, порождённый через инструмент Agent или @-упоминание

335 * Как основная сессия, запущенная с [`--agent`](#invoke-subagents-explicitly) или параметром `agent`

336 

337 Когда агент является основной сессией, встроенные определения серверов подключаются при запуске вместе с серверами из [`.mcp.json`](/ru/mcp) и файлов настроек.

338</Note>

339 

340Каждая запись в списке — это либо встроенное определение сервера, либо строка, ссылающаяся на MCP сервер, уже настроенный в вашей сессии:

341 

342```yaml theme={null}

343---

344name: browser-tester

345description: Tests features in a real browser using Playwright

346mcpServers:

347 # Inline definition: scoped to this subagent only

348 - playwright:

349 type: stdio

350 command: npx

351 args: ["-y", "@playwright/mcp@latest"]

352 # Reference by name: reuses an already-configured server

353 - github

354---

355 

356Use the Playwright tools to navigate, screenshot, and interact with pages.

357```

358 

359Встроенные определения используют ту же схему, что и записи сервера `.mcp.json` (`stdio`, `http`, `sse`, `ws`), ключевые по имени сервера.

360 

361Чтобы исключить MCP сервер из основного разговора полностью и избежать того, чтобы описания его инструментов потребляли контекст там, определите его встроенным здесь, а не в `.mcp.json`. Subagent получает инструменты; родительский разговор — нет.

362 

363#### Режимы разрешений

364 

365Поле `permissionMode` контролирует, как subagent обрабатывает запросы разрешений. Subagents наследуют контекст разрешений из основного разговора и могут переопределить режим, кроме случаев, когда режим родителя имеет приоритет, как описано ниже.

366 

367| Mode | Behavior |

368| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------- |

369| `default` | Стандартная проверка разрешений с запросами |

370| `acceptEdits` | Автоматически принимать редактирование файлов и общие команды файловой системы для путей в рабочей директории или `additionalDirectories` |

371| `auto` | [Auto mode](/ru/permission-modes#eliminate-prompts-with-auto-mode): классификатор AI оценивает каждый вызов инструмента и записи в защищённые директории |

372| `dontAsk` | Автоматически отклонять запросы разрешений (явно разрешённые инструменты по-прежнему работают) |

373| `bypassPermissions` | Пропустить все проверки разрешений |

374| `plan` | Режим плана (исследование только для чтения) |

375 

376<Warning>

377 Используйте `bypassPermissions` с осторожностью. Это пропускает все проверки разрешений, позволяя subagent выполнять любую операцию без одобрения, включая записи в `.git`, `.claude`, `.vscode`, `.idea` и `.husky`. Удаления корневого и домашнего каталога, такие как `rm -rf /`, по-прежнему требуют подтверждения в качестве защиты. См. [permission modes](/ru/permission-modes#skip-all-checks-with-bypasspermissions-mode) для деталей.

378</Warning>

379 

380Если родитель использует `bypassPermissions` или `acceptEdits`, это имеет приоритет и не может быть переопределено. Если родитель использует [auto mode](/ru/permission-modes#eliminate-prompts-with-auto-mode), subagent наследует auto mode и любой `permissionMode` в его frontmatter игнорируется: классификатор оценивает вызовы инструментов subagent с теми же правилами блокировки и разрешения, что и родительская сессия.

381 

382#### Предварительная загрузка skills в subagents

383 

384Используйте поле `skills` для инжекции содержимого skill в контекст subagent при запуске. Это даёт subagent знания в области без необходимости открывать и загружать skills во время выполнения.

385 

386```yaml theme={null}

387---

388name: api-developer

389description: Implement API endpoints following team conventions

390skills:

391 - api-conventions

392 - error-handling-patterns

393---

394 

395Implement API endpoints. Follow the conventions and patterns from the preloaded skills.

396```

397 

398Полное содержимое каждого skill инжектируется в контекст subagent, а не просто становится доступным для вызова. Subagents не наследуют skills из родительского разговора; вы должны перечислить их явно.

399 

400Вы не можете предварительно загружать skills, которые устанавливают [`disable-model-invocation: true`](/ru/skills#control-who-invokes-a-skill), поскольку предварительная загрузка берёт из того же набора skills, который Claude может вызывать. Если указанный skill отсутствует или отключен, Claude Code пропускает его и регистрирует предупреждение в журнал отладки.

401 

402<Note>

403 Это противоположность [запуску skill в subagent](/ru/skills#run-skills-in-a-subagent). С `skills` в subagent, subagent контролирует системное приглашение и загружает содержимое skill. С `context: fork` в skill, содержимое skill инжектируется в агента, который вы указываете. Оба используют одну и ту же базовую систему.

404</Note>

405 

406#### Включите постоянную память

407 

408Поле `memory` даёт subagent постоянный каталог, который сохраняется между разговорами. Subagent использует этот каталог для накопления знаний со временем, таких как паттерны кодовой базы, идеи отладки и архитектурные решения.

409 

410```yaml theme={null}

411---

412name: code-reviewer

413description: Reviews code for quality and best practices

414memory: user

415---

416 

417You are a code reviewer. As you review code, update your agent memory with

418patterns, conventions, and recurring issues you discover.

419```

420 

421Выберите область в зависимости от того, насколько широко должна применяться память:

422 

423| Scope | Location | Используйте когда |

424| :-------- | :-------------------------------------------- | :------------------------------------------------------------------------------------------------------------ |

425| `user` | `~/.claude/agent-memory/<name-of-agent>/` | subagent должен помнить обучение во всех проектах |

426| `project` | `.claude/agent-memory/<name-of-agent>/` | знания subagent специфичны для проекта и доступны для совместного использования через систему контроля версий |

427| `local` | `.claude/agent-memory-local/<name-of-agent>/` | знания subagent специфичны для проекта, но не должны проверяться в систему контроля версий |

428 

429Когда память включена:

430 

431* Системное приглашение subagent включает инструкции для чтения и записи в каталог памяти.

432* Системное приглашение subagent также включает первые 200 строк или 25KB `MEMORY.md` в каталоге памяти, в зависимости от того, что меньше, с инструкциями по курированию `MEMORY.md`, если она превышает этот лимит.

433* Инструменты Read, Write и Edit автоматически включаются, чтобы subagent мог управлять своими файлами памяти.

434 

435##### Советы по постоянной памяти

436 

437* `project` — рекомендуемая область по умолчанию. Это делает знания subagent доступными для совместного использования через систему контроля версий. Используйте `user`, когда знания subagent широко применимы в проектах, или `local`, когда знания не должны проверяться в систему контроля версий.

438* Попросите subagent проверить его память перед началом работы: "Review this PR, and check your memory for patterns you've seen before."

439* Попросите subagent обновить его память после завершения задачи: "Now that you're done, save what you learned to your memory." Со временем это создаёт базу знаний, которая делает subagent более эффективным.

440* Включите инструкции по памяти непосредственно в файл markdown subagent, чтобы он активно поддерживал свою собственную базу знаний:

441 

442 ```markdown theme={null}

443 Update your agent memory as you discover codepaths, patterns, library

444 locations, and key architectural decisions. This builds up institutional

445 knowledge across conversations. Write concise notes about what you found

446 and where.

447 ```

448 

449#### Условные правила с hooks

450 

451Для более динамического контроля использования инструментов используйте `PreToolUse` hooks для проверки операций перед их выполнением. Это полезно, когда вам нужно разрешить некоторые операции инструмента, блокируя другие.

452 

453Этот пример создаёт subagent, который разрешает только запросы к базе данных только для чтения. Hook `PreToolUse` запускает скрипт, указанный в `command`, перед каждым выполнением команды Bash:

454 

455```yaml theme={null}

456---

457name: db-reader

458description: Execute read-only database queries

459tools: Bash

460hooks:

461 PreToolUse:

462 - matcher: "Bash"

463 hooks:

464 - type: command

465 command: "./scripts/validate-readonly-query.sh"

466---

467```

468 

469Claude Code [передаёт входные данные hook как JSON](/ru/hooks#pretooluse-input) через stdin командам hook. Скрипт валидации читает этот JSON, извлекает команду Bash и [выходит с кодом 2](/ru/hooks#exit-code-2-behavior-per-event) для блокировки операций записи:

470 

471```bash theme={null}

472#!/bin/bash

473# ./scripts/validate-readonly-query.sh

474 

475INPUT=$(cat)

476COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

477 

478# Block SQL write operations (case-insensitive)

479if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE)\b' > /dev/null; then

480 echo "Blocked: Only SELECT queries are allowed" >&2

481 exit 2

482fi

483 

484exit 0

485```

486 

487См. [Hook input](/ru/hooks#pretooluse-input) для полной схемы входных данных и [exit codes](/ru/hooks#exit-code-output) для того, как коды выхода влияют на поведение.

488 

489#### Отключите конкретные subagents

490 

491Вы можете предотвратить использование Claude конкретных subagents, добавив их в массив `deny` в ваших [settings](/ru/settings#permission-settings). Используйте формат `Agent(subagent-name)`, где `subagent-name` соответствует полю name subagent.

492 

493```json theme={null}

494{

495 "permissions": {

496 "deny": ["Agent(Explore)", "Agent(my-custom-agent)"]

497 }

498}

499```

500 

501Это работает как для встроенных, так и для пользовательских subagents. Вы также можете использовать флаг CLI `--disallowedTools`:

502 

503```bash theme={null}

504claude --disallowedTools "Agent(Explore)"

505```

506 

507См. [документацию Permissions](/ru/permissions#tool-specific-permission-rules) для получения дополнительной информации о правилах разрешений.

508 

509### Определите hooks для subagents

510 

511Subagents могут определять [hooks](/ru/hooks), которые запускаются во время жизненного цикла subagent. Есть два способа настройки hooks:

512 

5131. **В frontmatter subagent**: Определите hooks, которые запускаются только во время активности этого subagent

5142. **В `settings.json`**: Определите hooks, которые запускаются в основной сессии при запуске или остановке subagents

515 

516#### Hooks в frontmatter subagent

517 

518Определите hooks непосредственно в файле markdown subagent. Эти hooks запускаются только во время активности этого конкретного subagent и очищаются при его завершении.

519 

520<Note>

521 Frontmatter hooks срабатывают, когда агент порождается как subagent через инструмент Agent или @-упоминание, и когда агент работает как основной агент сессии через [`--agent`](#invoke-subagents-explicitly) или параметр `agent`. В случае основной сессии они запускаются вместе с любыми hooks, определёнными в [`settings.json`](/ru/hooks).

522</Note>

523 

524Поддерживаются все [hook events](/ru/hooks#hook-events). Наиболее распространённые события для subagents:

525 

526| Event | Matcher input | Когда это срабатывает |

527| :------------ | :-------------- | :------------------------------------------------------------------------------ |

528| `PreToolUse` | Имя инструмента | Перед использованием инструмента subagent |

529| `PostToolUse` | Имя инструмента | После использования инструмента subagent |

530| `Stop` | (none) | Когда subagent завершается (преобразуется в `SubagentStop` во время выполнения) |

531 

532Этот пример проверяет команды Bash с помощью hook `PreToolUse` и запускает linter после редактирования файлов с помощью `PostToolUse`:

533 

534```yaml theme={null}

535---

536name: code-reviewer

537description: Review code changes with automatic linting

538hooks:

539 PreToolUse:

540 - matcher: "Bash"

541 hooks:

542 - type: command

543 command: "./scripts/validate-command.sh $TOOL_INPUT"

544 PostToolUse:

545 - matcher: "Edit|Write"

546 hooks:

547 - type: command

548 command: "./scripts/run-linter.sh"

549---

550```

551 

552Hooks `Stop` в frontmatter автоматически преобразуются в события `SubagentStop`.

553 

554#### Hooks уровня проекта для событий subagent

555 

556Настройте hooks в `settings.json`, которые реагируют на события жизненного цикла subagent в основной сессии.

557 

558| Event | Matcher input | Когда это срабатывает |

559| :-------------- | :-------------- | :---------------------------------- |

560| `SubagentStart` | Имя типа агента | Когда subagent начинает выполнение |

561| `SubagentStop` | Имя типа агента | Когда subagent завершает выполнение |

562 

563Оба события поддерживают matchers для нацеливания на конкретные типы агентов по имени. Этот пример запускает скрипт установки только при запуске subagent `db-agent` и скрипт очистки при остановке любого subagent:

564 

565```json theme={null}

566{

567 "hooks": {

568 "SubagentStart": [

569 {

570 "matcher": "db-agent",

571 "hooks": [

572 { "type": "command", "command": "./scripts/setup-db-connection.sh" }

573 ]

574 }

575 ],

576 "SubagentStop": [

577 {

578 "hooks": [

579 { "type": "command", "command": "./scripts/cleanup-db-connection.sh" }

580 ]

581 }

582 ]

583 }

584}

585```

586 

587См. [Hooks](/ru/hooks) для полного формата конфигурации hook.

588 

589## Работа с subagents

590 

591### Поймите автоматическое делегирование

592 

593Claude автоматически делегирует задачи на основе описания задачи в вашем запросе, поля `description` в конфигурациях subagent и текущего контекста. Чтобы поощрить активное делегирование, включите фразы вроде "use proactively" в поле description вашего subagent.

594 

595### Явно вызывайте subagents

596 

597Когда автоматического делегирования недостаточно, вы можете запросить subagent самостоятельно. Три паттерна переходят от одноразового предложения к сессионному по умолчанию:

598 

599* **Естественный язык**: назовите subagent в вашем приглашении; Claude решает, делегировать ли

600* **@-упоминание**: гарантирует, что subagent запустится для одной задачи

601* **Сессионный уровень**: вся сессия использует системное приглашение, ограничения инструментов и модель этого subagent через флаг `--agent` или параметр `agent`

602 

603Для естественного языка нет специального синтаксиса. Назовите subagent и Claude обычно делегирует:

604 

605```text theme={null}

606Use the test-runner subagent to fix failing tests

607Have the code-reviewer subagent look at my recent changes

608```

609 

610**@-упомяните subagent.** Введите `@` и выберите subagent из автодополнения, так же как вы упоминаете файлы. Это гарантирует, что запустится конкретный subagent, а не оставляет выбор Claude:

611 

612```text theme={null}

613@"code-reviewer (agent)" look at the auth changes

614```

615 

616Ваше полное сообщение по-прежнему идёт Claude, который пишет приглашение задачи subagent на основе того, что вы попросили. @-упоминание контролирует, какой subagent Claude вызывает, а не какое приглашение он получает.

617 

618Subagents, предоставленные включённым [plugin](/ru/plugins), появляются в автодополнении как `<plugin-name>:<agent-name>`. Именованные фоновые subagents, в настоящее время работающие в сессии, также появляются в автодополнении, показывая их статус рядом с именем. Вы также можете ввести упоминание вручную без использования средства выбора: `@agent-<name>` для локальных subagents или `@agent-<plugin-name>:<agent-name>` для plugin subagents.

619 

620**Запустите всю сессию как subagent.** Передайте [`--agent <name>`](/ru/cli-reference) для запуска сессии, где основной поток сам принимает системное приглашение, ограничения инструментов и модель этого subagent:

621 

622```bash theme={null}

623claude --agent code-reviewer

624```

625 

626Системное приглашение subagent полностью заменяет системное приглашение Claude Code по умолчанию, так же как [`--system-prompt`](/ru/cli-reference) это делает. Файлы `CLAUDE.md` и память проекта по-прежнему загружаются через обычный поток сообщений. Имя агента появляется как `@<name>` в заголовке запуска, чтобы вы могли подтвердить, что он активен.

627 

628Это работает с встроенными и пользовательскими subagents, и выбор сохраняется при возобновлении сессии.

629 

630Для plugin-предоставленного subagent передайте имя с областью: `claude --agent <plugin-name>:<agent-name>`.

631 

632Чтобы сделать это по умолчанию для каждой сессии в проекте, установите `agent` в `.claude/settings.json`:

633 

634```json theme={null}

635{

636 "agent": "code-reviewer"

637}

638```

639 

640Флаг CLI переопределяет параметр, если оба присутствуют.

641 

642### Запустите subagents в переднем плане или фоне

643 

644Subagents могут работать в переднем плане (блокирующий) или фоне (параллельный):

645 

646* **Foreground subagents** блокируют основной разговор до завершения. Запросы разрешений и уточняющие вопросы (такие как [`AskUserQuestion`](/ru/tools-reference)) передаются вам.

647* **Background subagents** работают параллельно, пока вы продолжаете работать. Перед запуском Claude Code запрашивает разрешения на инструменты, которые потребуются subagent, обеспечивая необходимые одобрения заранее. После запуска subagent наследует эти разрешения и автоматически отклоняет всё, что не было предварительно одобрено. Если фоновый subagent нуждается в уточняющих вопросах, этот вызов инструмента не удаётся, но subagent продолжает работу.

648 

649Если фоновый subagent не удаётся из-за отсутствия разрешений, вы можете запустить новый foreground subagent с той же задачей для повторной попытки с интерактивными запросами.

650 

651Claude решает, запускать ли subagents в переднем плане или фоне на основе задачи. Вы также можете:

652 

653* Попросить Claude "run this in the background"

654* Нажать **Ctrl+B** для фонового выполнения работающей задачи

655 

656Чтобы отключить всю функциональность фоновых задач, установите переменную окружения `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` на `1`. См. [Environment variables](/ru/env-vars).

657 

658Когда [fork mode](#fork-the-current-conversation) включен, каждый spawn subagent работает в фоне независимо от поля `background`. Forks по-прежнему выводят запросы разрешений в вашем терминале по мере их возникновения вместо предварительного одобрения; именованные subagents следуют потоку предварительного одобрения выше.

659 

660### Распространённые паттерны

661 

662#### Изолируйте высокообъёмные операции

663 

664Одно из наиболее эффективных применений subagents — изоляция операций, которые производят большой объём выходных данных. Запуск тестов, получение документации или обработка файлов журналов может потребить значительный контекст. Делегируя эти subagent, подробный выход остаётся в контексте subagent, пока только релевантное резюме возвращается в основной разговор.

665 

666```text theme={null}

667Use a subagent to run the test suite and report only the failing tests with their error messages

668```

669 

670#### Запустите параллельное исследование

671 

672Для независимых исследований порождайте несколько subagents для одновременной работы:

673 

674```text theme={null}

675Research the authentication, database, and API modules in parallel using separate subagents

676```

677 

678Каждый subagent исследует свою область независимо, затем Claude синтезирует результаты. Это работает лучше всего, когда пути исследования не зависят друг от друга.

679 

680<Warning>

681 Когда subagents завершаются, их результаты возвращаются в основной разговор. Запуск многих subagents, каждый из которых возвращает подробные результаты, может потребить значительный контекст.

682</Warning>

683 

684Для задач, требующих устойчивого параллелизма или превышающих контекстное окно, [agent teams](/ru/agent-teams) дают каждому работнику собственный независимый контекст.

685 

686#### Цепочка subagents

687 

688Для многошаговых рабочих процессов попросите Claude использовать subagents последовательно. Каждый subagent завершает свою задачу и возвращает результаты Claude, который затем передаёт релевантный контекст следующему subagent.

689 

690```text theme={null}

691Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them

692```

693 

694### Выберите между subagents и основным разговором

695 

696Используйте **основной разговор** когда:

697 

698* Задача требует частого взаимодействия или итеративного уточнения

699* Несколько фаз имеют значительный общий контекст (планирование → реализация → тестирование)

700* Вы вносите быстрое, целевое изменение

701* Задержка имеет значение. Subagents начинают с нуля и могут потребовать время для сбора контекста

702 

703Используйте **subagents** когда:

704 

705* Задача производит подробный выход, который вам не нужен в основном контексте

706* Вы хотите применить конкретные ограничения инструментов или разрешений

707* Работа самодостаточна и может вернуть резюме

708 

709Рассмотрите [Skills](/ru/skills) вместо этого, когда вы хотите переиспользуемые приглашения или рабочие процессы, которые работают в контексте основного разговора, а не в изолированном контексте subagent.

710 

711Для быстрого вопроса о чём-то уже в вашем разговоре используйте [`/btw`](/ru/interactive-mode#side-questions-with-%2Fbtw) вместо subagent. Он видит ваш полный контекст, но не имеет доступа к инструментам, и ответ отбрасывается, а не добавляется в историю.

712 

713<Note>

714 Subagents не могут порождать других subagents. Если ваш рабочий процесс требует вложенного делегирования, используйте [Skills](/ru/skills) или [цепочку subagents](#chain-subagents) из основного разговора.

715</Note>

716 

717### Управляйте контекстом subagent

718 

719#### Возобновите subagents

720 

721Каждый вызов subagent создаёт новый экземпляр со свежим контекстом. Чтобы продолжить работу существующего subagent вместо начала с нуля, попросите Claude возобновить его.

722 

723Возобновлённые subagents сохраняют полную историю разговора, включая все предыдущие вызовы инструментов, результаты и рассуждения. Subagent продолжает ровно там, где он остановился, а не начинает с нуля.

724 

725Когда subagent завершается, Claude получает его ID агента. Claude использует инструмент `SendMessage` с ID агента в качестве поля `to` для возобновления его. Инструмент `SendMessage` доступен только при включении [agent teams](/ru/agent-teams) через `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`.

726 

727Чтобы возобновить subagent, попросите Claude продолжить предыдущую работу:

728 

729```text theme={null}

730Use the code-reviewer subagent to review the authentication module

731[Agent completes]

732 

733Continue that code review and now analyze the authorization logic

734[Claude resumes the subagent with full context from previous conversation]

735```

736 

737Если остановленный subagent получает `SendMessage`, он автоматически возобновляется в фоне без необходимости нового вызова `Agent`.

738 

739Вы также можете попросить Claude ID агента, если хотите ссылаться на него явно, или найти ID в файлах транскрипта в `~/.claude/projects/{project}/{sessionId}/subagents/`. Каждый транскрипт сохраняется как `agent-{agentId}.jsonl`.

740 

741Транскрипты subagent сохраняются независимо от основного разговора:

742 

743* **Компактирование основного разговора**: Когда основной разговор компактируется, транскрипты subagent не затрагиваются. Они сохраняются в отдельных файлах.

744* **Сохранение сессии**: Транскрипты subagent сохраняются в пределах их сессии. Вы можете [возобновить subagent](#resume-subagents) после перезагрузки Claude Code, возобновив ту же сессию.

745* **Автоматическая очистка**: Транскрипты очищаются на основе параметра `cleanupPeriodDays` (по умолчанию: 30 дней).

746 

747#### Auto-compact

748 

749Subagents поддерживают автоматическое компактирование, используя ту же логику, что и основной разговор. По умолчанию auto-compact срабатывает при приблизительно 95% ёмкости. Чтобы срабатывание компактирования произошло раньше, установите `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` на более низкий процент (например, `50`). См. [environment variables](/ru/env-vars) для деталей.

750 

751События компактирования регистрируются в файлах транскрипта subagent:

752 

753```json theme={null}

754{

755 "type": "system",

756 "subtype": "compact_boundary",

757 "compactMetadata": {

758 "trigger": "auto",

759 "preTokens": 167189

760 }

761}

762```

763 

764Значение `preTokens` показывает, сколько токенов было использовано перед компактированием.

765 

766## Разветвление текущего разговора

767 

768<Note>

769 Разветвленные subagents являются экспериментальными и требуют Claude Code v2.1.117 или позже. Поведение и конфигурация могут измениться в будущих выпусках. Включите их, установив переменную окружения [`CLAUDE_CODE_FORK_SUBAGENT`](/ru/env-vars) на `1`. Переменная учитывается в интерактивном режиме и через SDK или `claude -p`.

770</Note>

771 

772Fork — это subagent, который наследует весь разговор до сих пор вместо начала с нуля. Это отбрасывает входную изоляцию, которую subagents иначе предоставляют: fork видит то же системное приглашение, инструменты, модель и историю сообщений, что и основная сессия, поэтому вы можете передать ему побочную задачу без переобъяснения ситуации. Вызовы инструментов fork по-прежнему остаются вне вашего разговора и только его окончательный результат возвращается, поэтому ваше основное контекстное окно остаётся чистым. Используйте fork, когда именованный subagent потребовал бы слишком много фона, чтобы быть полезным, или когда вы хотите попробовать несколько подходов параллельно с одной и той же отправной точки.

773 

774Включение fork mode изменяет Claude Code тремя способами:

775 

776* Claude порождает fork всякий раз, когда он иначе использовал бы [general-purpose](#built-in-subagents) subagent. Именованные subagents, такие как Explore, по-прежнему порождаются как раньше.

777* Каждый spawn subagent работает в [фоне](#run-subagents-in-foreground-or-background), будь то fork или именованный subagent. Установите `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` на `1`, чтобы сохранить spawns синхронными.

778* Команда `/fork` порождает fork вместо действия как псевдоним для [`/branch`](/ru/commands).

779 

780Вы можете запустить fork самостоятельно с `/fork` за которым следует директива. Claude Code называет fork из первых слов директивы. Следующий пример разветвляет разговор для черновика тестовых случаев, пока вы продолжаете с реализацией в основной сессии:

781 

782```text theme={null}

783/fork draft unit tests for the parser changes so far

784```

785 

786Fork появляется в панели ниже вашего приглашения и работает в фоне, пока вы продолжаете работать. Когда он завершается, его результат приходит как сообщение в вашем основном разговоре. Следующий раздел охватывает элементы управления панели для наблюдения и управления forks во время их работы.

787 

788### Наблюдение и управление работающими forks

789 

790Работающие forks появляются в панели ниже входа приглашения, с одной строкой для основной сессии и одной для каждого fork. Используйте эти клавиши для взаимодействия с панелью:

791 

792| Key | Action |

793| :-------- | :------------------------------------------------------------------------ |

794| `↑` / `↓` | Перемещение между строками |

795| `Enter` | Откройте транскрипт выбранного fork и отправьте ему последующие сообщения |

796| `x` | Отклоните завершённый fork или остановите работающий |

797| `Esc` | Верните фокус на входное приглашение |

798 

799### Как forks отличаются от именованных subagents

800 

801Fork наследует всё, что основная сессия имеет в момент его порождения. Именованный subagent начинает с собственного определения.

802 

803| | Fork | Named subagent |

804| :---------------------- | :---------------------------------- | :------------------------------------------------------------------------------------------------------------------ |

805| Context | Полная история разговора | Свежий контекст с приглашением, которое вы передаёте |

806| System prompt and tools | Такие же как основная сессия | Из [определения файла](#write-subagent-files) subagent |

807| Model | Такая же как основная сессия | Из поля `model` subagent |

808| Permissions | Запросы выводятся в вашем терминале | [Предварительно одобрены](#run-subagents-in-foreground-or-background) перед запуском, затем автоматически отклонены |

809| Prompt cache | Общий с основной сессией | Отдельный кэш |

810 

811Поскольку системное приглашение fork и определения инструментов идентичны родителю, его первый запрос повторно использует кэш приглашений родителя. Это делает forking дешевле, чем порождение свежего subagent для задач, которые нуждаются в том же контексте.

812 

813Когда Claude порождает fork через инструмент Agent, он может передать `isolation: "worktree"`, чтобы редактирования файлов fork были написаны в отдельный git worktree вместо вашего checkout.

814 

815### Ограничения

816 

817Установка `CLAUDE_CODE_FORK_SUBAGENT=1` включает fork mode в интерактивных сессиях, [non-interactive mode](/ru/headless) и Agent SDK. Fork не может порождать дальнейшие forks.

818 

819## Примеры subagents

820 

821Эти примеры демонстрируют эффективные паттерны для создания subagents. Используйте их как отправные точки или генерируйте настроенную версию с Claude.

822 

823<Tip>

824 **Best practices:**

825 

826 * **Проектируйте сфокусированные subagents:** каждый subagent должен превосходить в одной конкретной задаче

827 * **Напишите подробные описания:** Claude использует описание для решения о делегировании

828 * **Ограничьте доступ к инструментам:** предоставьте только необходимые разрешения для безопасности и сфокусированности

829 * **Проверьте в систему контроля версий:** поделитесь project subagents с вашей командой

830</Tip>

831 

832### Проверяющий кода

833 

834Subagent только для чтения, который проверяет код без его модификации. Этот пример показывает, как спроектировать сфокусированный subagent с ограниченным доступом к инструментам (нет Edit или Write) и подробным приглашением, которое точно указывает, что искать и как форматировать выход.

835 

836```markdown theme={null}

837---

838name: code-reviewer

839description: Expert code review specialist. Proactively reviews code for quality, security, and maintainability. Use immediately after writing or modifying code.

840tools: Read, Grep, Glob, Bash

841model: inherit

842---

843 

844You are a senior code reviewer ensuring high standards of code quality and security.

845 

846When invoked:

8471. Run git diff to see recent changes

8482. Focus on modified files

8493. Begin review immediately

850 

851Review checklist:

852- Code is clear and readable

853- Functions and variables are well-named

854- No duplicated code

855- Proper error handling

856- No exposed secrets or API keys

857- Input validation implemented

858- Good test coverage

859- Performance considerations addressed

860 

861Provide feedback organized by priority:

862- Critical issues (must fix)

863- Warnings (should fix)

864- Suggestions (consider improving)

865 

866Include specific examples of how to fix issues.

867```

868 

869### Отладчик

870 

871Subagent, который может как анализировать, так и исправлять проблемы. В отличие от проверяющего кода, этот включает Edit, потому что исправление ошибок требует модификации кода. Приглашение предоставляет чёткий рабочий процесс от диагностики к проверке.

872 

873```markdown theme={null}

874---

875name: debugger

876description: Debugging specialist for errors, test failures, and unexpected behavior. Use proactively when encountering any issues.

877tools: Read, Edit, Bash, Grep, Glob

878---

879 

880You are an expert debugger specializing in root cause analysis.

881 

882When invoked:

8831. Capture error message and stack trace

8842. Identify reproduction steps

8853. Isolate the failure location

8864. Implement minimal fix

8875. Verify solution works

888 

889Debugging process:

890- Analyze error messages and logs

891- Check recent code changes

892- Form and test hypotheses

893- Add strategic debug logging

894- Inspect variable states

895 

896For each issue, provide:

897- Root cause explanation

898- Evidence supporting the diagnosis

899- Specific code fix

900- Testing approach

901- Prevention recommendations

902 

903Focus on fixing the underlying issue, not the symptoms.

904```

905 

906### Специалист по данным

907 

908Специализированный subagent для работы анализа данных. Этот пример показывает, как создавать subagents для специализированных рабочих процессов вне типичных задач кодирования. Он явно устанавливает `model: sonnet` для более способного анализа.

909 

910```markdown theme={null}

911---

912name: data-scientist

913description: Data analysis expert for SQL queries, BigQuery operations, and data insights. Use proactively for data analysis tasks and queries.

914tools: Bash, Read, Write

915model: sonnet

916---

917 

918You are a data scientist specializing in SQL and BigQuery analysis.

919 

920When invoked:

9211. Understand the data analysis requirement

9222. Write efficient SQL queries

9233. Use BigQuery command line tools (bq) when appropriate

9244. Analyze and summarize results

9255. Present findings clearly

926 

927Key practices:

928- Write optimized SQL queries with proper filters

929- Use appropriate aggregations and joins

930- Include comments explaining complex logic

931- Format results for readability

932- Provide data-driven recommendations

933 

934For each analysis:

935- Explain the query approach

936- Document any assumptions

937- Highlight key findings

938- Suggest next steps based on data

939 

940Always ensure queries are efficient and cost-effective.

941```

942 

943### Валидатор запросов к базе данных

944 

945Subagent, который разрешает доступ Bash, но проверяет команды для разрешения только запросов SQL только для чтения. Этот пример показывает, как использовать `PreToolUse` hooks для условной валидации, когда вам нужен более тонкий контроль, чем предоставляет поле `tools`.

946 

947```markdown theme={null}

948---

949name: db-reader

950description: Execute read-only database queries. Use when analyzing data or generating reports.

951tools: Bash

952hooks:

953 PreToolUse:

954 - matcher: "Bash"

955 hooks:

956 - type: command

957 command: "./scripts/validate-readonly-query.sh"

958---

959 

960You are a database analyst with read-only access. Execute SELECT queries to answer questions about the data.

961 

962When asked to analyze data:

9631. Identify which tables contain the relevant data

9642. Write efficient SELECT queries with appropriate filters

9653. Present results clearly with context

966 

967You cannot modify data. If asked to INSERT, UPDATE, DELETE, or modify schema, explain that you only have read access.

968```

969 

970Claude Code [передаёт входные данные hook как JSON](/ru/hooks#pretooluse-input) через stdin командам hook. Скрипт валидации читает этот JSON, извлекает выполняемую команду и проверяет её против списка операций записи SQL. Если обнаружена операция записи, скрипт [выходит с кодом 2](/ru/hooks#exit-code-2-behavior-per-event) для блокировки выполнения и возвращает сообщение об ошибке Claude через stderr.

971 

972Создайте скрипт валидации где-нибудь в вашем проекте. Путь должен соответствовать полю `command` в конфигурации hook:

973 

974```bash theme={null}

975#!/bin/bash

976# Blocks SQL write operations, allows SELECT queries

977 

978# Read JSON input from stdin

979INPUT=$(cat)

980 

981# Extract the command field from tool_input using jq

982COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

983 

984if [ -z "$COMMAND" ]; then

985 exit 0

986fi

987 

988# Block write operations (case-insensitive)

989if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE|REPLACE|MERGE)\b' > /dev/null; then

990 echo "Blocked: Write operations not allowed. Use SELECT queries only." >&2

991 exit 2

992fi

993 

994exit 0

995```

996 

997Сделайте скрипт исполняемым:

998 

999```bash theme={null}

1000chmod +x ./scripts/validate-readonly-query.sh

1001```

1002 

1003Hook получает JSON через stdin с командой Bash в `tool_input.command`. Код выхода 2 блокирует операцию и передаёт сообщение об ошибке обратно Claude. См. [Hooks](/ru/hooks#exit-code-output) для деталей кодов выхода и [Hook input](/ru/hooks#pretooluse-input) для полной схемы входных данных.

1004 

1005## Следующие шаги

1006 

1007Теперь, когда вы понимаете subagents, изучите эти связанные функции:

1008 

1009* [Распространяйте subagents с помощью plugins](/ru/plugins) для совместного использования subagents в командах или проектах

1010* [Запустите Claude Code программно](/ru/headless) с помощью Agent SDK для CI/CD и автоматизации

1011* [Используйте MCP servers](/ru/mcp) для предоставления subagents доступа к внешним инструментам и данным

terminal-config.md +307 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Настройте ваш терминал для Claude Code

6 

7> Исправьте Shift+Enter для разрывов строк, получайте звуковой сигнал терминала когда Claude завершает работу, настройте tmux, сопоставьте цветовую тему и включите режим Vim в CLI Claude Code.

8 

9Claude Code работает в любом терминале без конфигурации. Эта страница предназначена для случаев, когда что-то конкретное ведёт себя не так, как вы ожидаете. Найдите ваш симптом ниже. Если всё уже работает правильно, вам не нужна эта страница.

10 

11* [Shift+Enter отправляет вместо вставки разрыва строки](#enter-multiline-prompts)

12* [Сочетания клавиш с клавишей Option ничего не делают на macOS](#enable-option-key-shortcuts-on-macos)

13* [Нет звука или оповещения когда Claude завершает работу](#get-a-terminal-bell-or-notification)

14* [Вы запускаете Claude Code внутри tmux](#configure-tmux)

15* [Дисплей мерцает или позиция прокрутки прыгает](#switch-to-fullscreen-rendering)

16* [Вы хотите клавиши Vim в приглашении](#edit-prompts-with-vim-keybindings)

17 

18Эта страница посвящена тому, чтобы ваш терминал отправлял правильные сигналы в Claude Code. Чтобы изменить, на какие клавиши сам Claude Code реагирует, см. вместо этого [сочетания клавиш](/ru/keybindings).

19 

20## Ввод многострочных приглашений

21 

22Нажатие Enter отправляет ваше сообщение. Чтобы добавить разрыв строки без отправки, нажмите Ctrl+J или введите `\` и затем нажмите Enter. Оба варианта работают в каждом терминале без настройки.

23 

24В большинстве терминалов вы также можете нажать Shift+Enter, но поддержка варьируется в зависимости от эмулятора терминала:

25 

26| Терминал | Shift+Enter для разрыва строки |

27| :---------------------------------------------------------------------------------- | :------------------------------------------------- |

28| Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal | Работает без настройки |

29| VS Code, Cursor, Windsurf, Alacritty, Zed | Запустите `/terminal-setup` один раз |

30| Windows Terminal, gnome-terminal, JetBrains IDEs такие как PyCharm и Android Studio | Недоступно; используйте Ctrl+J или `\` затем Enter |

31 

32Для VS Code, Cursor, Windsurf, Alacritty и Zed, `/terminal-setup` записывает Shift+Enter и другие сочетания клавиш в файл конфигурации терминала. В VS Code, Cursor и Windsurf он также устанавливает `terminal.integrated.mouseWheelScrollSensitivity` в параметрах редактора для более плавной прокрутки в [полноэкранном режиме](/ru/fullscreen). Существующие привязки и параметры остаются на месте; если вы видите сообщение, такое как `VSCode terminal Shift+Enter key binding already configured`, никаких изменений не было сделано. Запустите `/terminal-setup` непосредственно в хост-терминале, а не внутри tmux или screen, так как ему нужно записать в конфигурацию хост-терминала.

33 

34Если вы работаете внутри tmux, Shift+Enter также требует [конфигурацию tmux ниже](#configure-tmux) даже когда внешний терминал её поддерживает.

35 

36Чтобы привязать разрыв строки к другой клавише или поменять поведение так, чтобы Enter вставлял разрыв строки, а Shift+Enter отправлял, сопоставьте действия `chat:newline` и `chat:submit` в вашем [файле сочетаний клавиш](/ru/keybindings).

37 

38## Включите сочетания клавиш Option на macOS

39 

40Некоторые сочетания клавиш Claude Code используют клавишу Option, такие как Option+Enter для разрыва строки или Option+P для переключения моделей. На macOS большинство терминалов не отправляют Option как модификатор по умолчанию, поэтому эти сочетания клавиш ничего не делают, пока вы это не включите. Параметр терминала для этого обычно называется "Use Option as Meta Key"; Meta — это историческое имя Unix для клавиши, которая теперь называется Option или Alt.

41 

42<Tabs>

43 <Tab title="Apple Terminal">

44 Откройте Settings → Profiles → Keyboard и установите флажок "Use Option as Meta Key".

45 

46 Если вы приняли первое приглашение Claude Code, которое предлагало "Option+Enter для разрывов строк и визуального звонка", это уже сделано. Это приглашение запускает `/terminal-setup` для вас, что включает Option как Meta и переключает звуковой звонок на визуальную вспышку экрана в вашем профиле Apple Terminal.

47 </Tab>

48 

49 <Tab title="iTerm2">

50 Откройте Settings → Profiles → Keys → General и установите Left Option key и Right Option key на "Esc+".

51 

52 Запуск `/terminal-setup` в iTerm2 включает "Applications in terminal may access clipboard" в Settings → General → Selection, чтобы команда `/copy` могла писать в буфер обмена вашей системы. Команда обнаруживает iTerm2 даже при запуске изнутри tmux. Перезагрузите iTerm2, чтобы изменение вступило в силу.

53 </Tab>

54 

55 <Tab title="VS Code">

56 Добавьте `"terminal.integrated.macOptionIsMeta": true` в ваши настройки VS Code.

57 </Tab>

58</Tabs>

59 

60Для Ghostty, Kitty и других терминалов ищите параметр Option-as-Alt или Option-as-Meta в файле конфигурации терминала.

61 

62## Получите звуковой сигнал терминала или уведомление

63 

64Когда Claude завершает задачу или делает паузу для приглашения разрешения, он отправляет событие уведомления. Отображение этого как звукового сигнала терминала или уведомления рабочего стола позволяет вам переключиться на другую работу, пока выполняется длительная задача.

65 

66По умолчанию Claude Code отправляет уведомление рабочего стола только в Ghostty, Kitty и iTerm2. В других терминалах установите [`preferredNotifChannel`](/ru/settings#available-settings) на `"terminal_bell"` для звукового сигнала терминала или настройте [хук Notification](#play-a-sound-with-a-notification-hook) для пользовательского звука или команды.

67 

68Уведомление рабочего стола достигает вашей локальной машины через SSH, поэтому удалённый сеанс всё ещё может вас оповестить. Ghostty и Kitty перенаправляют его в центр уведомлений вашей ОС без дополнительной настройки. iTerm2 требует, чтобы вы включили перенаправление:

69 

70<Steps>

71 <Step title="Откройте параметры уведомлений iTerm2">

72 Перейдите в Settings → Profiles → Terminal.

73 </Step>

74 

75 <Step title="Включите оповещения">

76 Установите флажок "Notification Center Alerts", затем нажмите "Filter Alerts" и включите "Send escape sequence-generated alerts".

77 </Step>

78</Steps>

79 

80Если уведомления всё ещё не появляются, убедитесь, что ваше приложение терминала имеет разрешение на уведомления в настройках вашей ОС, и если вы работаете внутри tmux, [включите passthrough](#configure-tmux).

81 

82### Воспроизведите звук с помощью хука Notification

83 

84В любом терминале вы можете настроить [хук Notification](/ru/hooks-guide#get-notified-when-claude-needs-input) для воспроизведения звука или запуска пользовательской команды, когда Claude нуждается в вашем внимании. Хуки работают вместе с уведомлением рабочего стола, а не заменяя его, поэтому терминалы, которые не получают уведомление рабочего стола, такие как Warp или интегрированный терминал VS Code, могут использовать хук или установить `preferredNotifChannel` на `"terminal_bell"` вместо этого.

85 

86Пример ниже воспроизводит системный звук на macOS. Связанное руководство содержит команды уведомлений рабочего стола для macOS, Linux и Windows.

87 

88```json ~/.claude/settings.json theme={null}

89{

90 "hooks": {

91 "Notification": [

92 {

93 "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]

94 }

95 ]

96 }

97}

98```

99 

100## Настройте tmux

101 

102Когда Claude Code работает внутри tmux, две вещи ломаются по умолчанию: Shift+Enter отправляет вместо вставки разрыва строки, и уведомления рабочего стола и [полоса прогресса](/ru/settings#available-settings) никогда не достигают внешнего терминала. Добавьте эти строки в `~/.tmux.conf`, затем запустите `tmux source-file ~/.tmux.conf` чтобы применить их к работающему серверу:

103 

104```bash ~/.tmux.conf theme={null}

105set -g allow-passthrough on

106set -s extended-keys on

107set -as terminal-features 'xterm*:extkeys'

108```

109 

110Строка `allow-passthrough` позволяет уведомлениям и обновлениям прогресса достичь iTerm2, Ghostty или Kitty вместо того, чтобы быть поглощёнными tmux. Строки `extended-keys` позволяют tmux различать Shift+Enter от простого Enter, чтобы сочетание клавиш разрыва строки работало.

111 

112## Сопоставьте цветовую тему

113 

114Используйте команду `/theme` или средство выбора темы в `/config` для выбора темы Claude Code, которая соответствует вашему терминалу. Выбор опции auto обнаруживает светлый или тёмный фон вашего терминала, поэтому тема следует изменениям внешнего вида ОС всякий раз, когда это делает ваш терминал. Claude Code не управляет цветовой схемой самого терминала, которая устанавливается приложением терминала.

115 

116Чтобы настроить то, что отображается в нижней части интерфейса, настройте [пользовательскую строку состояния](/ru/statusline), которая показывает текущую модель, рабочий каталог, ветку git или другой контекст.

117 

118### Создайте пользовательскую тему

119 

120<Note>

121 Пользовательские темы требуют Claude Code v2.1.118 или более поздней версии.

122</Note>

123 

124В дополнение к встроенным предустановкам, `/theme` отображает любые пользовательские темы, которые вы определили, и любые темы, предоставленные установленными [plugins](/ru/plugins-reference#themes). Выберите **New custom theme…** в конце списка, чтобы создать её интерактивно: вы назовёте тему, а затем выберете отдельные цветовые токены для переопределения. Нажмите `Ctrl+E`, пока выделена пользовательская тема, чтобы отредактировать её.

125 

126Каждая пользовательская тема — это JSON-файл в `~/.claude/themes/`. Имя файла без расширения `.json` — это слаг темы, и выбор темы сохраняет `custom:<slug>` как ваше предпочтение темы. Файл имеет три необязательных поля:

127 

128| Field | Type | Description |

129| :---------- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------- |

130| `name` | string | Display label shown in `/theme`. Defaults to the filename slug |

131| `base` | string | Built-in preset the theme starts from: `dark`, `light`, `dark-daltonized`, `light-daltonized`, `dark-ansi`, or `light-ansi`. Defaults to `dark` |

132| `overrides` | object | Map of color token names to color values. Tokens not listed here fall through to the base preset |

133 

134Цветовые значения принимают `#rrggbb`, `#rgb`, `rgb(r,g,b)`, `ansi256(n)` или `ansi:<name>`, где `<name>` — одно из 16 стандартных имён цветов ANSI, таких как `red` или `cyanBright`. Неизвестные токены и недопустимые цветовые значения игнорируются, поэтому опечатка не может нарушить отрисовку.

135 

136Следующий пример определяет тему, которая сохраняет тёмную предустановку, но перекрашивает акцент приглашения, текст ошибки и текст успеха:

137 

138```json ~/.claude/themes/dracula.json theme={null}

139{

140 "name": "Dracula",

141 "base": "dark",

142 "overrides": {

143 "claude": "#bd93f9",

144 "error": "#ff5555",

145 "success": "#50fa7b"

146 }

147}

148```

149 

150Claude Code отслеживает `~/.claude/themes/` и перезагружает при изменении файла, поэтому изменения, сделанные в вашем редакторе, применяются к работающему сеансу без перезагрузки.

151 

152Ниже приведён полный список настроек, которые вы можете установить в `overrides`. Интерактивный редактор в `/theme` показывает те же токены с живым предпросмотром, плюс несколько однозначных акцентов, таких как цвета экрана адаптации, которые опущены здесь.

153 

154<Accordion title="Color token reference">

155 Следующий пример объединяет токены из нескольких групп ниже: фирменный акцент, граница режима Plan Mode, фоны diff и фон полноэкранного сообщения.

156 

157 ```json ~/.claude/themes/midnight.json theme={null}

158 {

159 "name": "Midnight",

160 "base": "dark",

161 "overrides": {

162 "claude": "#a78bfa",

163 "planMode": "#38bdf8",

164 "diffAdded": "#14532d",

165 "diffRemoved": "#7f1d1d",

166 "userMessageBackground": "#1e1b4b"

167 }

168 }

169 ```

170 

171 #### Text and accent colors

172 

173 Управляйте основным фирменным акцентом и оттенками переднего плана текста, используемыми во всём интерфейсе.

174 

175 | Token | Controls |

176 | :------------ | :--------------------------------------------------------------- |

177 | `claude` | Primary brand accent, used for the spinner and assistant label |

178 | `text` | Default foreground text |

179 | `inverseText` | Text drawn on top of a colored background, such as status badges |

180 | `inactive` | Secondary text such as hints, timestamps, and disabled items |

181 | `subtle` | Faint borders and de-emphasized secondary text |

182 | `suggestion` | Autocomplete suggestions and selection highlight in pickers |

183 | `permission` | Dialog borders, including permission prompts and pickers |

184 | `remember` | Memory and `CLAUDE.md` indicators |

185 

186 #### Status colors

187 

188 Сигнализируйте об успехе, сбое и состояниях предупреждения в сообщениях и индикаторах.

189 

190 | Token | Controls |

191 | :-------- | :--------------------------------------------------- |

192 | `success` | Success messages and passing checks |

193 | `error` | Error messages and failures |

194 | `warning` | Warnings, caution messages, and the auto mode border |

195 | `merged` | Merged pull request status |

196 

197 #### Input box and mode indicators

198 

199 Установите цвет границы поля ввода и акцент, отображаемый при активном режиме разрешения или индикаторе.

200 

201 | Token | Controls |

202 | :------------- | :------------------------------------------------- |

203 | `promptBorder` | Input box border in the default permission mode |

204 | `planMode` | Plan mode accent and border |

205 | `autoAccept` | Accept-edits mode accent and border |

206 | `bashBorder` | Input box border when entering a `!` shell command |

207 | `ide` | IDE connection indicator |

208 | `fastMode` | Fast mode indicator |

209 

210 #### Diff rendering

211 

212 Раскрасьте добавленный и удалённый код в редактировании файлов и рецензировании.

213 

214 | Token | Controls |

215 | :------------------ | :------------------------------------------------- |

216 | `diffAdded` | Background of added lines |

217 | `diffRemoved` | Background of removed lines |

218 | `diffAddedDimmed` | Background of unchanged context near added lines |

219 | `diffRemovedDimmed` | Background of unchanged context near removed lines |

220 | `diffAddedWord` | Word-level highlight within an added line |

221 | `diffRemovedWord` | Word-level highlight within a removed line |

222 

223 #### Fullscreen mode

224 

225 Применяется только в [режиме полноэкранной отрисовки](/ru/fullscreen), где сообщения имеют заливку фона.

226 

227 | Token | Controls |

228 | :--------------------------- | :----------------------------------------------------------------- |

229 | `userMessageBackground` | Background behind your messages in the transcript |

230 | `userMessageBackgroundHover` | Background behind a message while hovered or expanded |

231 | `messageActionsBackground` | Background behind the selected message when the action bar is open |

232 | `bashMessageBackgroundColor` | Background behind `!` shell command entries in the transcript |

233 | `memoryBackgroundColor` | Background behind `#` memory entries in the transcript |

234 | `selectionBg` | Background of text selected with the mouse |

235 

236 #### Usage meter and speaker labels

237 

238 Отрегулируйте полосу, показанную в представлении `/usage`, и метки, которые отличают ваши сообщения от сообщений Claude.

239 

240 | Token | Controls |

241 | :----------------- | :------------------------------------------------ |

242 | `rate_limit_fill` | Filled portion of the usage meter |

243 | `rate_limit_empty` | Unfilled portion of the usage meter |

244 | `briefLabelYou` | Color of the `You` label on your messages |

245 | `briefLabelClaude` | Color of the `Claude` label on assistant messages |

246 

247 #### Shimmer variants and subagent colors

248 

249 Несколько токенов имеют парный вариант shimmer, который предоставляет более светлый цвет, используемый в анимированном градиенте спиннера. Переопределите shimmer вместе с его базовым токеном, если анимация выглядит несоответствующей.

250 

251 * `claude` и `claudeShimmer`

252 * `warning` и `warningShimmer`

253 * `permission` и `permissionShimmer`

254 * `promptBorder` и `promptBorderShimmer`

255 * `inactive` и `inactiveShimmer`

256 * `fastMode` и `fastModeShimmer`

257 

258 Каждый [subagent](/ru/sub-agents) и параллельная задача отображаются в одном из восьми именованных цветов, чтобы вы могли различить их в транскрипте. Имена токенов следуют шаблону `<color>_FOR_SUBAGENTS_ONLY`, где `<color>` — это `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink` или `cyan`. Переопределите их, чтобы изменить внешний вид каждого именованного цвета. Например, subagent с `color: blue` в его определении отображается с использованием значения `blue_FOR_SUBAGENTS_ONLY`.

259 

260 Ключевые слова [`ultrathink`](/ru/model-config#use-ultrathink-for-one-off-deep-reasoning) и [`ultraplan`](/ru/ultraplan) в поле ввода приглашения отображаются с семицветным радужным градиентом. Имена токенов следуют шаблону `rainbow_<color>` и `rainbow_<color>_shimmer`, где `<color>` — это `red`, `orange`, `yellow`, `green`, `blue`, `indigo` или `violet`.

261</Accordion>

262 

263## Переключитесь на полноэкранный рендеринг

264 

265Если дисплей мерцает или позиция прокрутки прыгает, пока Claude работает, переключитесь на [режим полноэкранного рендеринга](/ru/fullscreen). Он рисует на отдельном экране, который терминал зарезервировал для полноэкранных приложений, вместо добавления в вашу обычную прокрутку, что сохраняет использование памяти на плоском уровне и добавляет поддержку мыши для прокрутки и выделения. В этом режиме вы прокручиваете с помощью мыши или PageUp внутри Claude Code, а не с помощью встроенной прокрутки вашего терминала; см. [страницу полноэкранного режима](/ru/fullscreen#search-and-review-the-conversation) для того, как искать и копировать.

266 

267Запустите `/tui fullscreen` для переключения в текущем сеансе с вашим разговором нетронутым. Чтобы сделать это по умолчанию, установите переменную окружения `CLAUDE_CODE_NO_FLICKER` перед запуском Claude Code:

268 

269<CodeGroup>

270 ```bash Bash and Zsh theme={null}

271 CLAUDE_CODE_NO_FLICKER=1 claude

272 ```

273 

274 ```powershell PowerShell theme={null}

275 $env:CLAUDE_CODE_NO_FLICKER = "1"; claude

276 ```

277 

278 ```json ~/.claude/settings.json theme={null}

279 {

280 "env": {

281 "CLAUDE_CODE_NO_FLICKER": "1"

282 }

283 }

284 ```

285</CodeGroup>

286 

287## Вставьте большое содержимое

288 

289Когда вы вставляете более 10 000 символов в приглашение, Claude Code сворачивает ввод в заполнитель `[Pasted text]`, чтобы поле ввода оставалось пригодным для использования. Полное содержимое всё ещё отправляется Claude при отправке.

290 

291Встроенный терминал VS Code может отбросить символы из очень больших вставок, прежде чем они достигнут Claude Code, поэтому предпочитайте рабочие процессы на основе файлов там. Для очень больших входных данных, таких как целые файлы или длинные журналы, запишите содержимое в файл и попросите Claude прочитать его вместо вставки. Это сохраняет стенограмму разговора читаемой и позволяет Claude ссылаться на файл по пути в более поздних ходах.

292 

293## Редактируйте приглашения с помощью сочетаний клавиш Vim

294 

295Claude Code включает режим редактирования в стиле Vim для ввода приглашения. Включите его через `/config` → Editor mode или установив [`editorMode`](/ru/settings#available-settings) на `"vim"` в `~/.claude/settings.json`. Установите Editor mode обратно на `normal`, чтобы отключить его.

296 

297Режим Vim поддерживает подмножество движений и операторов режима NORMAL и VISUAL, таких как навигация `hjkl`, выделение `v`/`V` и `d`/`c`/`y` с текстовыми объектами. См. [справочник режима редактора Vim](/ru/interactive-mode#vim-editor-mode) для полной таблицы клавиш. Движения Vim не переназначаются через файл сочетаний клавиш.

298 

299Нажатие Enter всё ещё отправляет ваше приглашение в режиме INSERT, в отличие от стандартного Vim. Используйте `o` или `O` в режиме NORMAL или Ctrl+J для вставки разрыва строки вместо этого.

300 

301## Связанные ресурсы

302 

303* [Интерактивный режим](/ru/interactive-mode): полный справочник сочетаний клавиш и таблица клавиш Vim

304* [Сочетания клавиш](/ru/keybindings): переназначьте любое сочетание клавиш Claude Code, включая Enter и Shift+Enter

305* [Полноэкранный рендеринг](/ru/fullscreen): детали прокрутки, поиска и копирования в полноэкранном режиме

306* [Руководство по хукам](/ru/hooks-guide): больше примеров хуков Notification для Linux и Windows

307* [Troubleshooting](/ru/troubleshooting): исправления для проблем вне конфигурации терминала

third-party-integrations.md +262 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Обзор корпоративного развертывания

6 

7> Узнайте, как Claude Code может интегрироваться с различными сторонними сервисами и инфраструктурой для удовлетворения требований корпоративного развертывания.

8 

9Организации могут развертывать Claude Code непосредственно через Anthropic или через поставщика облачных услуг. Эта страница поможет вам выбрать правильную конфигурацию.

10 

11## Сравнение вариантов развертывания

12 

13Для большинства организаций Claude for Teams или Claude for Enterprise обеспечивает лучший опыт. Члены команды получают доступ как к Claude Code, так и к Claude в веб-версии с одной подпиской, централизованным выставлением счетов и без необходимости настройки инфраструктуры.

14 

15**Claude for Teams** — это самообслуживаемое решение, которое включает функции сотрудничества, инструменты администратора и управление выставлением счетов. Лучше всего подходит для небольших команд, которым нужно быстро начать работу.

16 

17**Claude for Enterprise** добавляет SSO и захват домена, разрешения на основе ролей, доступ к API соответствия требованиям и управляемые параметры политики для развертывания конфигураций Claude Code на уровне организации. Лучше всего подходит для крупных организаций с требованиями безопасности и соответствия требованиям.

18 

19Узнайте больше о [планах Team](https://support.claude.com/en/articles/9266767-what-is-the-team-plan) и [планах Enterprise](https://support.claude.com/en/articles/9797531-what-is-the-enterprise-plan).

20 

21Если ваша организация имеет специфические требования к инфраструктуре, сравните варианты ниже:

22 

23<table>

24 <thead>

25 <tr>

26 <th>Функция</th>

27 <th>Claude for Teams/Enterprise</th>

28 <th>Anthropic Console</th>

29 <th>Amazon Bedrock</th>

30 <th>Google Vertex AI</th>

31 <th>Microsoft Foundry</th>

32 </tr>

33 </thead>

34 

35 <tbody>

36 <tr>

37 <td>Лучше всего подходит для</td>

38 <td>Большинства организаций (рекомендуется)</td>

39 <td>Отдельных разработчиков</td>

40 <td>Развертываний, собственных для AWS</td>

41 <td>Развертываний, собственных для GCP</td>

42 <td>Развертываний, собственных для Azure</td>

43 </tr>

44 

45 <tr>

46 <td>Выставление счетов</td>

47 <td><strong>Teams:</strong> \$150/место (Premium) с доступной оплатой по мере использования<br /><strong>Enterprise:</strong> <a href="https://claude.com/contact-sales?utm_source=claude_code&utm_medium=docs&utm_content=third_party_enterprise">Свяжитесь с отделом продаж</a></td>

48 <td>Оплата по мере использования</td>

49 <td>Оплата по мере использования через AWS</td>

50 <td>Оплата по мере использования через GCP</td>

51 <td>Оплата по мере использования через Azure</td>

52 </tr>

53 

54 <tr>

55 <td>Регионы</td>

56 <td>Поддерживаемые [страны](https://www.anthropic.com/supported-countries)</td>

57 <td>Поддерживаемые [страны](https://www.anthropic.com/supported-countries)</td>

58 <td>Несколько AWS [регионов](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html)</td>

59 <td>Несколько GCP [регионов](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations)</td>

60 <td>Несколько Azure [регионов](https://azure.microsoft.com/en-us/explore/global-infrastructure/products-by-region/)</td>

61 </tr>

62 

63 <tr>

64 <td>prompt caching</td>

65 <td>Включено по умолчанию</td>

66 <td>Включено по умолчанию</td>

67 <td>Включено по умолчанию</td>

68 <td>Включено по умолчанию</td>

69 <td>Включено по умолчанию</td>

70 </tr>

71 

72 <tr>

73 <td>Аутентификация</td>

74 <td>Claude.ai SSO или электронная почта</td>

75 <td>API ключ</td>

76 <td>API ключ или учетные данные AWS</td>

77 <td>Учетные данные GCP</td>

78 <td>API ключ или Microsoft Entra ID</td>

79 </tr>

80 

81 <tr>

82 <td>Отслеживание затрат</td>

83 <td>Панель использования</td>

84 <td>Панель использования</td>

85 <td>AWS Cost Explorer</td>

86 <td>GCP Billing</td>

87 <td>Azure Cost Management</td>

88 </tr>

89 

90 <tr>

91 <td>Включает Claude в веб-версии</td>

92 <td>Да</td>

93 <td>Нет</td>

94 <td>Нет</td>

95 <td>Нет</td>

96 <td>Нет</td>

97 </tr>

98 

99 <tr>

100 <td>Функции Enterprise</td>

101 <td>Управление командой, SSO, мониторинг использования</td>

102 <td>Нет</td>

103 <td>Политики IAM, CloudTrail</td>

104 <td>Роли IAM, Cloud Audit Logs</td>

105 <td>Политики RBAC, Azure Monitor</td>

106 </tr>

107 </tbody>

108</table>

109 

110Выберите вариант развертывания для просмотра инструкций по настройке:

111 

112* [Claude for Teams или Enterprise](/ru/authentication#claude-for-teams-or-enterprise)

113* [Anthropic Console](/ru/authentication#claude-console-authentication)

114* [Amazon Bedrock](/ru/amazon-bedrock)

115* [Google Vertex AI](/ru/google-vertex-ai)

116* [Microsoft Foundry](/ru/microsoft-foundry)

117 

118## Настройка прокси и шлюзов

119 

120Большинство организаций могут использовать поставщика облачных услуг напрямую без дополнительной конфигурации. Однако вам может потребоваться настроить корпоративный прокси или шлюз LLM, если ваша организация имеет специфические требования к сети или управлению. Это разные конфигурации, которые можно использовать вместе:

121 

122* **Корпоративный прокси**: маршрутизирует трафик через прокси HTTP/HTTPS. Используйте это, если ваша организация требует, чтобы весь исходящий трафик проходил через прокси-сервер для мониторинга безопасности, соответствия требованиям или обеспечения политики сети. Настройте с помощью переменных окружения `HTTPS_PROXY` или `HTTP_PROXY`. Узнайте больше в разделе [Конфигурация корпоративной сети](/ru/network-config).

123* **Шлюз LLM**: сервис, который находится между Claude Code и поставщиком облачных услуг для обработки аутентификации и маршрутизации. Используйте это, если вам нужно централизованное отслеживание использования между командами, пользовательское ограничение скорости или бюджеты, или централизованное управление аутентификацией. Настройте с помощью переменных окружения `ANTHROPIC_BASE_URL`, `ANTHROPIC_BEDROCK_BASE_URL` или `ANTHROPIC_VERTEX_BASE_URL`. Узнайте больше в разделе [Конфигурация шлюза LLM](/ru/llm-gateway).

124 

125Следующие примеры показывают переменные окружения для установки в вашей оболочке или профиле оболочки (`.bashrc`, `.zshrc`). См. раздел [Параметры](/ru/settings) для других методов конфигурации.

126 

127### Amazon Bedrock

128 

129<Tabs>

130 <Tab title="Корпоративный прокси">

131 Маршрутизируйте трафик Bedrock через ваш корпоративный прокси, установив следующие [переменные окружения](/ru/env-vars):

132 

133 ```bash theme={null}

134 # Включить Bedrock

135 export CLAUDE_CODE_USE_BEDROCK=1

136 export AWS_REGION=us-east-1

137 

138 # Настроить корпоративный прокси

139 export HTTPS_PROXY='https://proxy.example.com:8080'

140 ```

141 </Tab>

142 

143 <Tab title="Шлюз LLM">

144 Маршрутизируйте трафик Bedrock через ваш шлюз LLM, установив следующие [переменные окружения](/ru/env-vars):

145 

146 ```bash theme={null}

147 # Включить Bedrock

148 export CLAUDE_CODE_USE_BEDROCK=1

149 

150 # Настроить шлюз LLM

151 export ANTHROPIC_BEDROCK_BASE_URL='https://your-llm-gateway.com/bedrock'

152 export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1 # Если шлюз обрабатывает аутентификацию AWS

153 ```

154 </Tab>

155</Tabs>

156 

157### Microsoft Foundry

158 

159<Tabs>

160 <Tab title="Корпоративный прокси">

161 Маршрутизируйте трафик Foundry через ваш корпоративный прокси, установив следующие [переменные окружения](/ru/env-vars):

162 

163 ```bash theme={null}

164 # Включить Microsoft Foundry

165 export CLAUDE_CODE_USE_FOUNDRY=1

166 export ANTHROPIC_FOUNDRY_RESOURCE=your-resource

167 export ANTHROPIC_FOUNDRY_API_KEY=your-api-key # Или опустите для аутентификации Entra ID

168 

169 # Настроить корпоративный прокси

170 export HTTPS_PROXY='https://proxy.example.com:8080'

171 ```

172 </Tab>

173 

174 <Tab title="Шлюз LLM">

175 Маршрутизируйте трафик Foundry через ваш шлюз LLM, установив следующие [переменные окружения](/ru/env-vars):

176 

177 ```bash theme={null}

178 # Включить Microsoft Foundry

179 export CLAUDE_CODE_USE_FOUNDRY=1

180 

181 # Настроить шлюз LLM

182 export ANTHROPIC_FOUNDRY_BASE_URL='https://your-llm-gateway.com'

183 export CLAUDE_CODE_SKIP_FOUNDRY_AUTH=1 # Если шлюз обрабатывает аутентификацию Azure

184 ```

185 </Tab>

186</Tabs>

187 

188### Google Vertex AI

189 

190<Tabs>

191 <Tab title="Корпоративный прокси">

192 Маршрутизируйте трафик Vertex AI через ваш корпоративный прокси, установив следующие [переменные окружения](/ru/env-vars):

193 

194 ```bash theme={null}

195 # Включить Vertex

196 export CLAUDE_CODE_USE_VERTEX=1

197 export CLOUD_ML_REGION=us-east5

198 export ANTHROPIC_VERTEX_PROJECT_ID=your-project-id

199 

200 # Настроить корпоративный прокси

201 export HTTPS_PROXY='https://proxy.example.com:8080'

202 ```

203 </Tab>

204 

205 <Tab title="Шлюз LLM">

206 Маршрутизируйте трафик Vertex AI через ваш шлюз LLM, установив следующие [переменные окружения](/ru/env-vars):

207 

208 ```bash theme={null}

209 # Включить Vertex

210 export CLAUDE_CODE_USE_VERTEX=1

211 

212 # Настроить шлюз LLM

213 export ANTHROPIC_VERTEX_BASE_URL='https://your-llm-gateway.com/vertex'

214 export CLAUDE_CODE_SKIP_VERTEX_AUTH=1 # Если шлюз обрабатывает аутентификацию GCP

215 ```

216 </Tab>

217</Tabs>

218 

219<Tip>

220 Используйте `/status` в Claude Code для проверки того, что конфигурация прокси и шлюза применена правильно.

221</Tip>

222 

223## Лучшие практики для организаций

224 

225### Инвестируйте в документацию и память

226 

227Мы настоятельно рекомендуем инвестировать в документацию, чтобы Claude Code понимал вашу кодовую базу. Организации могут развертывать файлы CLAUDE.md на нескольких уровнях:

228 

229* **На уровне организации**: развертывайте в системные каталоги, такие как `/Library/Application Support/ClaudeCode/CLAUDE.md` (macOS) для стандартов компании

230* **На уровне репозитория**: создавайте файлы `CLAUDE.md` в корнях репозиториев, содержащие архитектуру проекта, команды сборки и рекомендации по внесению вклада. Проверяйте их в систему контроля версий, чтобы все пользователи получали выгоду

231 

232Узнайте больше в разделе [Память и файлы CLAUDE.md](/ru/memory).

233 

234### Упростите развертывание

235 

236Если у вас есть пользовательская среда разработки, мы считаем, что создание "одноклик" способа установки Claude Code является ключом к расширению внедрения в организации.

237 

238### Начните с управляемого использования

239 

240Поощряйте новых пользователей попробовать Claude Code для вопросов и ответов по кодовой базе, или на небольших исправлениях ошибок или запросах функций. Попросите Claude Code составить план. Проверьте предложения Claude и дайте обратную связь, если что-то не так. Со временем, по мере того как пользователи лучше поймут эту новую парадигму, они будут более эффективны в том, чтобы позволить Claude Code работать более агентивно.

241 

242### Закрепите версии моделей для поставщиков облачных услуг

243 

244Если вы развертываете через [Bedrock](/ru/amazon-bedrock), [Vertex AI](/ru/google-vertex-ai) или [Foundry](/ru/microsoft-foundry), закрепите конкретные версии моделей, используя `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL` и `ANTHROPIC_DEFAULT_HAIKU_MODEL`. Без закрепления, псевдонимы Claude Code разрешаются на последнюю версию, что может нарушить работу пользователей, когда Anthropic выпускает новую модель, которая еще не включена в вашей учетной записи. См. раздел [Конфигурация модели](/ru/model-config#pin-models-for-third-party-deployments) для получения подробной информации.

245 

246### Настройте политики безопасности

247 

248Команды безопасности могут настроить управляемые разрешения для того, что Claude Code может и не может делать, которые не могут быть переопределены локальной конфигурацией. [Узнайте больше](/ru/security).

249 

250### Используйте MCP для интеграций

251 

252MCP — это отличный способ предоставить Claude Code больше информации, например подключение к системам управления билетами или журналам ошибок. Мы рекомендуем, чтобы одна центральная команда настроила MCP servers и проверила конфигурацию `.mcp.json` в кодовую базу, чтобы все пользователи получали выгоду. [Узнайте больше](/ru/mcp).

253 

254В Anthropic мы доверяем Claude Code для питания разработки во всех кодовых базах Anthropic. Мы надеемся, что вам понравится использовать Claude Code так же, как и нам.

255 

256## Следующие шаги

257 

258После того как вы выбрали вариант развертывания и настроили доступ для вашей команды:

259 

2601. **Развертывание в вашей команде**: поделитесь инструкциями по установке и попросите членов команды [установить Claude Code](/ru/setup) и аутентифицироваться с помощью своих учетных данных.

2612. **Настройте общую конфигурацию**: создайте [файл CLAUDE.md](/ru/memory) в ваших репозиториях, чтобы помочь Claude Code понять вашу кодовую базу и стандарты кодирования.

2623. **Настройте разрешения**: просмотрите [параметры безопасности](/ru/security) для определения того, что Claude Code может и не может делать в вашей среде.

tools-reference.md +148 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Справочник инструментов

6 

7> Полный справочник инструментов, которые может использовать Claude Code, включая требования к разрешениям.

8 

9Claude Code имеет доступ к набору встроенных инструментов, которые помогают ему понять и изменить вашу кодовую базу. Названия инструментов — это точные строки, которые вы используете в [правилах разрешений](/ru/permissions#tool-specific-permission-rules), [списках инструментов subagent](/ru/sub-agents) и [сопоставителях hooks](/ru/hooks). Чтобы полностью отключить инструмент, добавьте его имя в массив `deny` в [параметрах разрешений](/ru/permissions#tool-specific-permission-rules).

10 

11Чтобы добавить пользовательские инструменты, подключите [MCP server](/ru/mcp). Чтобы расширить Claude с помощью переиспользуемых рабочих процессов на основе подсказок, напишите [skill](/ru/skills), который работает через существующий инструмент `Skill` вместо добавления новой записи инструмента.

12 

13| Инструмент | Описание | Требуется разрешение |

14| :--------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |

15| `Agent` | Создает [subagent](/ru/sub-agents) с собственным контекстным окном для выполнения задачи | Нет |

16| `AskUserQuestion` | Задает вопросы с несколькими вариантами ответов для сбора требований или уточнения неоднозначности | Нет |

17| `Bash` | Выполняет команды оболочки в вашей среде. См. [поведение инструмента Bash](#bash-tool-behavior) | Да |

18| `CronCreate` | Планирует повторяющуюся или одноразовую подсказку в текущем сеансе. Задачи привязаны к сеансу и восстанавливаются при `--resume` или `--continue`, если не истекли. См. [запланированные задачи](/ru/scheduled-tasks) | Нет |

19| `CronDelete` | Отменяет запланированную задачу по ID | Нет |

20| `CronList` | Выводит список всех запланированных задач в сеансе | Нет |

21| `Edit` | Вносит целевые изменения в конкретные файлы | Да |

22| `EnterPlanMode` | Переключается в режим плана для разработки подхода перед кодированием | Нет |

23| `EnterWorktree` | Создает изолированный [git worktree](/ru/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) и переключается в него. Передайте `path` для переключения в существующий worktree текущего репозитория вместо создания нового. Недоступно для subagents | Нет |

24| `ExitPlanMode` | Представляет план для утверждения и выходит из режима плана | Да |

25| `ExitWorktree` | Выходит из сеанса worktree и возвращается в исходный каталог. Недоступно для subagents | Нет |

26| `Glob` | Находит файлы на основе сопоставления шаблонов | Нет |

27| `Grep` | Ищет шаблоны в содержимом файлов | Нет |

28| `ListMcpResourcesTool` | Выводит список ресурсов, предоставляемых подключенными [MCP servers](/ru/mcp) | Нет |

29| `LSP` | Интеллект кода через языковые серверы: переход к определениям, поиск ссылок, сообщение об ошибках типов и предупреждениях. См. [поведение инструмента LSP](#lsp-tool-behavior) | Нет |

30| `Monitor` | Запускает команду в фоне и передает каждую строку вывода обратно Claude, чтобы он мог реагировать на записи журнала, изменения файлов или опрашиваемый статус в середине разговора. См. [инструмент Monitor](#monitor-tool) | Да |

31| `NotebookEdit` | Изменяет ячейки Jupyter notebook | Да |

32| `PowerShell` | Выполняет команды PowerShell изначально. См. [инструмент PowerShell](#powershell-tool) для доступности | Да |

33| `Read` | Читает содержимое файлов | Нет |

34| `ReadMcpResourceTool` | Читает конкретный ресурс MCP по URI | Нет |

35| `SendMessage` | Отправляет сообщение члену [команды агентов](/ru/agent-teams), или [возобновляет subagent](/ru/sub-agents#resume-subagents) по его ID агента. Остановленные subagents автоматически возобновляются в фоне. Доступно только при установке `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` | Нет |

36| `Skill` | Выполняет [skill](/ru/skills#control-who-invokes-a-skill) в основном разговоре | Да |

37| `TaskCreate` | Создает новую задачу в списке задач | Нет |

38| `TaskGet` | Получает полные сведения для конкретной задачи | Нет |

39| `TaskList` | Выводит список всех задач с их текущим статусом | Нет |

40| `TaskOutput` | (Устарело) Получает вывод из фоновой задачи. Предпочитайте `Read` на пути к файлу вывода задачи | Нет |

41| `TaskStop` | Завершает выполняющуюся фоновую задачу по ID | Нет |

42| `TaskUpdate` | Обновляет статус задачи, зависимости, сведения или удаляет задачи | Нет |

43| `TeamCreate` | Создает [команду агентов](/ru/agent-teams) с несколькими товарищами по команде. Доступно только при установке `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` | Нет |

44| `TeamDelete` | Распускает команду агентов и очищает процессы товарищей по команде. Доступно только при установке `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` | Нет |

45| `TodoWrite` | Управляет контрольным списком задач сеанса. Доступно в неинтерактивном режиме и [Agent SDK](/ru/headless); интерактивные сеансы используют TaskCreate, TaskGet, TaskList и TaskUpdate вместо этого | Нет |

46| `ToolSearch` | Ищет и загружает отложенные инструменты, когда включен [поиск инструментов](/ru/mcp#scale-with-mcp-tool-search) | Нет |

47| `WebFetch` | Получает содержимое с указанного URL | Да |

48| `WebSearch` | Выполняет веб-поиск | Да |

49| `Write` | Создает или перезаписывает файлы | Да |

50 

51Правила разрешений можно настроить с помощью `/permissions` или в [параметрах разрешений](/ru/settings#available-settings). Также см. [Правила разрешений для конкретных инструментов](/ru/permissions#tool-specific-permission-rules).

52 

53## Поведение инструмента Bash

54 

55Инструмент Bash запускает каждую команду в отдельном процессе со следующим поведением сохранения:

56 

57* Когда Claude запускает `cd` в основном сеансе, новый рабочий каталог переносится в более поздние команды Bash, пока он остается внутри каталога проекта или [дополнительного рабочего каталога](/ru/permissions#working-directories), который вы добавили с помощью `--add-dir`, `/add-dir` или `additionalDirectories` в параметрах. Сеансы subagent никогда не переносят изменения рабочего каталога.

58 * Если `cd` приводит вне этих каталогов, Claude Code сбрасывает в каталог проекта и добавляет `Shell cwd was reset to <dir>` к результату инструмента.

59 * Чтобы отключить этот перенос, чтобы каждая команда Bash начиналась в каталоге проекта, установите `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.

60* Переменные окружения не сохраняются. `export` в одной команде не будет доступен в следующей.

61 

62Активируйте вашу virtualenv или conda среду перед запуском Claude Code. Чтобы переменные окружения сохранялись между командами Bash, установите [`CLAUDE_ENV_FILE`](/ru/env-vars) на скрипт оболочки перед запуском Claude Code или используйте [hook SessionStart](/ru/hooks#persist-environment-variables) для динамического заполнения.

63 

64## Поведение инструмента LSP

65 

66Инструмент LSP предоставляет Claude интеллект кода от работающего языкового сервера. После каждого редактирования файла он автоматически сообщает об ошибках типов и предупреждениях, чтобы Claude мог исправить проблемы без отдельного этапа сборки. Claude также может вызвать его напрямую для навигации по коду:

67 

68* Переход к определению символа

69* Поиск всех ссылок на символ

70* Получение информации о типе в позиции

71* Список символов в файле или рабочей области

72* Поиск реализаций интерфейса

73* Трассировка иерархий вызовов

74 

75Инструмент неактивен до тех пор, пока вы не установите [плагин интеллекта кода](/ru/discover-plugins#code-intelligence) для вашего языка. Плагин содержит конфигурацию языкового сервера, и вы устанавливаете двоичный файл сервера отдельно.

76 

77## Инструмент Monitor

78 

79<Note>

80 Инструмент Monitor требует Claude Code версии 2.1.98 или более поздней.

81</Note>

82 

83Инструмент Monitor позволяет Claude наблюдать что-то в фоне и реагировать при изменении, без паузы разговора. Попросите Claude:

84 

85* Отслеживать файл журнала и отмечать ошибки по мере их появления

86* Опрашивать PR или задачу CI и сообщать при изменении статуса

87* Наблюдать за каталогом на предмет изменений файлов

88* Отслеживать вывод из любого долгоживущего скрипта, на который вы его указываете

89 

90Claude пишет небольшой скрипт для наблюдения, запускает его в фоне и получает каждую строку вывода по мере ее поступления. Вы продолжаете работать в том же сеансе, и Claude вмешивается при возникновении события. Остановите монитор, попросив Claude отменить его или завершив сеанс.

91 

92Monitor использует те же [правила разрешений, что и Bash](/ru/permissions#tool-specific-permission-rules), поэтому шаблоны `allow` и `deny`, которые вы установили для Bash, применяются здесь также. Он недоступен на Amazon Bedrock, Google Vertex AI или Microsoft Foundry. Он также недоступен, когда установлены `DISABLE_TELEMETRY` или `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`.

93 

94Плагины могут объявлять мониторы, которые запускаются автоматически при активации плагина, вместо того чтобы просить Claude запустить их. См. [мониторы плагинов](/ru/plugins-reference#monitors).

95 

96## Инструмент PowerShell

97 

98Инструмент PowerShell позволяет Claude запускать команды PowerShell изначально. На Windows это означает, что команды выполняются в PowerShell вместо маршрутизации через Git Bash. На Windows без Git Bash инструмент включается автоматически. На Windows с установленным Git Bash инструмент развертывается постепенно. На Linux, macOS и WSL инструмент является добровольным.

99 

100### Включение инструмента PowerShell

101 

102Установите `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` в вашей среде или в `settings.json`:

103 

104```json theme={null}

105{

106 "env": {

107 "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1"

108 }

109}

110```

111 

112На Windows установите переменную на `0`, чтобы отказаться от развертывания. На Linux, macOS и WSL инструмент требует PowerShell 7 или более поздней версии: установите `pwsh` и убедитесь, что он находится в вашем `PATH`.

113 

114На Windows Claude Code автоматически обнаруживает `pwsh.exe` для PowerShell 7+ с резервным вариантом `powershell.exe` для PowerShell 5.1. Когда инструмент включен, Claude рассматривает PowerShell как основную оболочку. Инструмент Bash остается доступным для POSIX-скриптов при установленном Git Bash.

115 

116### Выбор оболочки в параметрах, hooks и skills

117 

118Три дополнительных параметра контролируют, где используется PowerShell:

119 

120* `"defaultShell": "powershell"` в [`settings.json`](/ru/settings#available-settings): маршрутизирует интерактивные команды `!` через PowerShell. Требует включения инструмента PowerShell.

121* `"shell": "powershell"` на отдельных [command hooks](/ru/hooks#command-hook-fields): запускает этот hook в PowerShell. Hooks запускают PowerShell напрямую, поэтому это работает независимо от `CLAUDE_CODE_USE_POWERSHELL_TOOL`.

122* `shell: powershell` в [frontmatter skill](/ru/skills#frontmatter-reference): запускает блоки `` !`command` `` в PowerShell. Требует включения инструмента PowerShell.

123 

124Поведение сброса рабочего каталога основного сеанса, описанное в разделе инструмента Bash, применяется к командам PowerShell, включая переменную окружения `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.

125 

126### Ограничения предварительного просмотра

127 

128Инструмент PowerShell имеет следующие известные ограничения во время предварительного просмотра:

129 

130* Профили PowerShell не загружаются

131* На Windows sandboxing не поддерживается

132 

133## Проверка доступных инструментов

134 

135Ваш точный набор инструментов зависит от вашего поставщика, платформы и параметров. Чтобы проверить, что загружено в работающем сеансе, спросите Claude напрямую:

136 

137```text theme={null}

138What tools do you have access to?

139```

140 

141Claude дает разговорное резюме. Для точных имен инструментов MCP запустите `/mcp`.

142 

143## См. также

144 

145* [MCP servers](/ru/mcp): добавляйте пользовательские инструменты, подключая внешние серверы

146* [Разрешения](/ru/permissions): система разрешений, синтаксис правил и шаблоны для конкретных инструментов

147* [Subagents](/ru/sub-agents): настройка доступа к инструментам для subagents

148* [Hooks](/ru/hooks-guide): запуск пользовательских команд до или после выполнения инструмента

troubleshoot-install.md +803 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Устранение неполадок при установке и входе

6 

7> Исправьте ошибки command not found, PATH, разрешений, сети и аутентификации при установке или входе в Claude Code.

8 

9Если установка не удалась или вы не можете войти, найдите вашу ошибку ниже. Для проблем во время выполнения после того, как Claude Code работает, см. [Troubleshooting](/ru/troubleshooting). Для проблем конфигурации, таких как неприменение параметров или неработающие hooks, см. [Debug your configuration](/ru/debug-your-config).

10 

11## Найдите вашу ошибку

12 

13Сопоставьте сообщение об ошибке или симптом, который вы видите, с исправлением:

14 

15| Что вы видите | Решение |

16| :------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |

17| `command not found: claude` или `'claude' is not recognized` | [Исправьте ваш PATH](#command-not-found-claude-after-installation) |

18| `syntax error near unexpected token '<'` | [Install script returns HTML](#install-script-returns-html-instead-of-a-shell-script) |

19| `curl: (56) Failure writing output to destination` | [Проверьте подключение или используйте альтернативный установщик](#curl-56-failure-writing-output-to-destination) |

20| `Killed` во время установки на Linux | [Добавьте пространство подкачки для серверов с низкой памятью](#install-killed-on-low-memory-linux-servers) |

21| `TLS connect error` или `SSL/TLS secure channel` | [Обновите сертификаты CA](#tls-or-ssl-connection-errors) |

22| `Failed to fetch version` или невозможно достичь сервера загрузки | [Проверьте параметры сети и прокси](#check-network-connectivity) |

23| `irm is not recognized` или `&& is not valid` | [Используйте правильную команду для вашей оболочки](#wrong-install-command-on-windows) |

24| `'bash' is not recognized as the name of a cmdlet` | [Используйте команду установщика Windows](#wrong-install-command-on-windows) |

25| `Claude Code on Windows requires either Git for Windows (for bash) or PowerShell` | [Установите оболочку](#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell) |

26| `Claude Code does not support 32-bit Windows` | [Откройте Windows PowerShell, а не запись x86](#claude-code-does-not-support-32-bit-windows) |

27| `The process cannot access the file ... because it is being used by another process` | [Очистите папку загрузок и повторите попытку](#the-process-cannot-access-the-file-during-windows-install) |

28| `Error loading shared library` | [Неправильный вариант двоичного файла для вашей системы](#linux-musl-or-glibc-binary-mismatch) |

29| `Illegal instruction` | [Несоответствие архитектуры или набора инструкций процессора](#illegal-instruction) |

30| `cannot execute binary file: Exec format error` в WSL | [WSL1 native-binary regression](#exec-format-error-on-wsl1) |

31| Установщик PowerShell завершается, но `claude` не найден или показывает старую версию | [Перезагрузите терминал и проверьте PATH](#verify-your-path) |

32| `dyld: cannot load`, `dyld: Symbol not found` или `Abort trap` на macOS | [Несовместимость двоичного файла](#dyld-cannot-load-on-macos) |

33| `Invoke-Expression: Missing argument in parameter list` | [Install script returns HTML](#install-script-returns-html-instead-of-a-shell-script) |

34| `App unavailable in region` | Claude Code недоступен в вашей стране. См. [поддерживаемые страны](https://www.anthropic.com/supported-countries). |

35| `unable to get local issuer certificate` | [Настройте корпоративные сертификаты CA](#tls-or-ssl-connection-errors) |

36| `OAuth error` или `403 Forbidden` | [Исправьте аутентификацию](#login-and-authentication) |

37| `Could not load the default credentials` или `Could not load credentials from any providers` | [Bedrock, Vertex или Foundry credentials](#bedrock-vertex-or-foundry-credentials-not-loading) |

38| `ChainedTokenCredential authentication failed` или `CredentialUnavailableError` | [Bedrock, Vertex или Foundry credentials](#bedrock-vertex-or-foundry-credentials-not-loading) |

39| `API Error: 500`, `529 Overloaded`, `429` или другие ошибки 4xx и 5xx, не указанные выше | См. [справочник ошибок](/ru/errors) |

40 

41Если вашей проблемы нет в списке, выполните диагностические проверки ниже, чтобы сузить причину.

42 

43<Tip>

44 Если вы предпочитаете полностью избежать терминала, [Claude Code Desktop app](/ru/desktop-quickstart) позволяет вам установить и использовать Claude Code через графический интерфейс. Загрузите его для [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) или [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) и начните кодировать без какой-либо настройки командной строки.

45</Tip>

46 

47## Запустите диагностические проверки

48 

49### Проверьте подключение к сети

50 

51Установщик загружает с `downloads.claude.ai`. Убедитесь, что вы можете его достичь:

52 

53```bash theme={null}

54curl -sI https://downloads.claude.ai/claude-code-releases/latest

55```

56 

57Строка `HTTP/2 200` означает, что вы достигли сервера. Если вы видите отсутствие вывода, `Could not resolve host` или timeout соединения, ваша сеть блокирует соединение. Распространённые причины:

58 

59* Корпоративные брандмауэры или прокси, блокирующие `downloads.claude.ai`

60* Региональные ограничения сети: попробуйте VPN или альтернативную сеть

61* Проблемы TLS/SSL: обновите сертификаты CA вашей системы или проверьте, настроен ли `HTTPS_PROXY`

62 

63Если вы находитесь за корпоративным прокси, установите `HTTPS_PROXY` и `HTTP_PROXY` на адрес вашего прокси перед установкой. Попросите URL прокси у вашей IT-команды, если вы его не знаете, или проверьте параметры прокси вашего браузера.

64 

65Этот пример устанавливает обе переменные прокси, а затем запускает установщик через ваш прокси:

66 

67<Tabs>

68 <Tab title="macOS/Linux">

69 ```bash theme={null}

70 export HTTP_PROXY=http://proxy.example.com:8080

71 export HTTPS_PROXY=http://proxy.example.com:8080

72 curl -fsSL https://claude.ai/install.sh | bash

73 ```

74 </Tab>

75 

76 <Tab title="Windows PowerShell">

77 ```powershell theme={null}

78 $env:HTTP_PROXY = 'http://proxy.example.com:8080'

79 $env:HTTPS_PROXY = 'http://proxy.example.com:8080'

80 irm https://claude.ai/install.ps1 | iex

81 ```

82 </Tab>

83</Tabs>

84 

85### Проверьте ваш PATH

86 

87Если установка прошла успешно, но вы получаете ошибку `command not found` или `not recognized` при запуске `claude`, директория установки не находится в вашем PATH. Ваша оболочка ищет программы в директориях, указанных в PATH, и установщик размещает `claude` в `~/.local/bin/claude` на macOS/Linux или `%USERPROFILE%\.local\bin\claude.exe` на Windows.

88 

89Проверьте, находится ли директория установки в вашем PATH, перечислив записи PATH и фильтруя по `local/bin`:

90 

91<Tabs>

92 <Tab title="macOS/Linux">

93 ```bash theme={null}

94 echo $PATH | tr ':' '\n' | grep -Fx "$HOME/.local/bin"

95 ```

96 

97 Если это выводит `/Users/you/.local/bin` или `/home/you/.local/bin`, директория находится в вашем PATH и вы можете перейти к [Проверьте наличие конфликтующих установок](#check-for-conflicting-installations). Если вывода нет, добавьте её в конфигурацию вашей оболочки.

98 

99 Для Zsh, по умолчанию на macOS:

100 

101 ```bash theme={null}

102 echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc

103 source ~/.zshrc

104 ```

105 

106 Для Bash, по умолчанию на большинстве дистрибутивов Linux:

107 

108 ```bash theme={null}

109 echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

110 source ~/.bashrc

111 ```

112 

113 Или закройте и снова откройте ваш терминал.

114 

115 Для других оболочек, таких как fish или Nushell, добавьте `~/.local/bin` в ваш PATH, используя синтаксис конфигурации вашей оболочки, а затем перезагрузите ваш терминал.

116 

117 Проверьте, что исправление сработало:

118 

119 ```bash theme={null}

120 claude --version

121 ```

122 </Tab>

123 

124 <Tab title="Windows PowerShell">

125 ```powershell theme={null}

126 $env:PATH -split ';' | Select-String '\.local\\bin'

127 ```

128 

129 Если вывода нет, добавьте директорию установки в ваш User PATH:

130 

131 ```powershell theme={null}

132 $currentPath = [Environment]::GetEnvironmentVariable('PATH', 'User')

133 [Environment]::SetEnvironmentVariable('PATH', "$currentPath;$env:USERPROFILE\.local\bin", 'User')

134 ```

135 

136 Перезагрузите ваш терминал, чтобы изменение вступило в силу.

137 

138 Проверьте, что исправление сработало:

139 

140 ```powershell theme={null}

141 claude --version

142 ```

143 </Tab>

144 

145 <Tab title="Windows CMD">

146 ```batch theme={null}

147 echo %PATH% | findstr /i "local\bin"

148 ```

149 

150 Если вывода нет, откройте System Settings, перейдите в Environment Variables и добавьте `%USERPROFILE%\.local\bin` в вашу переменную User PATH. Перезагрузите ваш терминал.

151 

152 Проверьте, что исправление сработало:

153 

154 ```batch theme={null}

155 claude --version

156 ```

157 </Tab>

158</Tabs>

159 

160### Проверьте наличие конфликтующих установок

161 

162Несколько установок Claude Code могут вызвать несоответствия версий или неожиданное поведение. Проверьте, что установлено:

163 

164<Tabs>

165 <Tab title="macOS/Linux">

166 Перечислите все бинарные файлы `claude`, найденные в вашем PATH:

167 

168 ```bash theme={null}

169 which -a claude

170 ```

171 

172 Если это ничего не выводит, `claude` ещё не находится в вашем PATH. Вернитесь к [Проверьте ваш PATH](#verify-your-path).

173 

174 Проверьте три места, откуда может поступить бинарный файл `claude`. `~/.local/bin/claude` — это встроенный установщик, `~/.claude/local/` — это устаревшая локальная установка npm, созданная старыми версиями Claude Code, и список глобального npm показывает установку `-g`:

175 

176 ```bash theme={null}

177 ls -la ~/.local/bin/claude

178 ```

179 

180 ```bash theme={null}

181 ls -la ~/.claude/local/

182 ```

183 

184 ```bash theme={null}

185 npm -g ls @anthropic-ai/claude-code 2>/dev/null

186 ```

187 </Tab>

188 

189 <Tab title="Windows PowerShell">

190 Перечислите все бинарные файлы `claude`, найденные в вашем PATH:

191 

192 ```powershell theme={null}

193 where.exe claude

194 ```

195 

196 Проверьте, разместил ли встроенный установщик бинарный файл:

197 

198 ```powershell theme={null}

199 Test-Path "$env:USERPROFILE\.local\bin\claude.exe"

200 ```

201 </Tab>

202</Tabs>

203 

204Если вы найдёте несколько установок, оставьте только одну. Встроенная установка в `~/.local/bin/claude` на macOS/Linux или `%USERPROFILE%\.local\bin\claude.exe` на Windows рекомендуется. Удалите лишние:

205 

206Удалите глобальную установку npm:

207 

208```bash theme={null}

209npm uninstall -g @anthropic-ai/claude-code

210```

211 

212Удалите устаревшую локальную установку npm:

213 

214```bash theme={null}

215rm -rf ~/.claude/local

216```

217 

218На Windows используйте PowerShell:

219 

220```powershell theme={null}

221Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\local"

222```

223 

224Удалите установку Homebrew на macOS. Если вы установили кэш `claude-code@latest`, замените это имя:

225 

226```bash theme={null}

227brew uninstall --cask claude-code

228```

229 

230Удалите установку WinGet на Windows:

231 

232```powershell theme={null}

233winget uninstall Anthropic.ClaudeCode

234```

235 

236### Проверьте разрешения директорий

237 

238Установщику нужен доступ на запись в `~/.local/bin/` и `~/.claude/` на macOS и Linux. На Windows место установки находится под `%USERPROFILE%`, которое по умолчанию доступно для записи вашим пользователем, поэтому этот раздел редко применяется там.

239 

240Проверьте, доступны ли директории для записи:

241 

242```bash theme={null}

243test -w ~/.local/bin && echo "writable" || echo "not writable"

244test -w ~/.claude && echo "writable" || echo "not writable"

245```

246 

247Если какая-либо директория недоступна для записи, создайте директорию установки и установите вашего пользователя в качестве владельца:

248 

249```bash theme={null}

250sudo mkdir -p ~/.local/bin

251sudo chown -R $(whoami) ~/.local

252```

253 

254### Проверьте, работает ли бинарный файл

255 

256Если `claude --version` выводит версию, но `claude` падает или зависает при запуске, запустите эти проверки, чтобы сузить причину. Если `claude --version` говорит command not found, сначала перейдите к [Проверьте ваш PATH](#verify-your-path); команды ниже предполагают, что `claude` находится в вашем PATH.

257 

258Подтвердите, что бинарный файл существует и исполняемый:

259 

260```bash theme={null}

261ls -la "$(command -v claude)"

262```

263 

264На Windows используйте PowerShell:

265 

266```powershell theme={null}

267Get-Command claude | Select-Object Source

268```

269 

270На Linux проверьте отсутствующие общие библиотеки. Если `ldd` показывает отсутствующие библиотеки, вам может потребоваться установить системные пакеты. На Alpine Linux и других дистрибутивах на основе musl см. [Alpine Linux setup](/ru/setup#alpine-linux-and-musl-based-distributions).

271 

272```bash theme={null}

273ldd "$(command -v claude)" | grep "not found"

274```

275 

276Подтвердите, что бинарный файл может выполняться:

277 

278```bash theme={null}

279claude --version

280```

281 

282## Распространённые проблемы установки

283 

284Это наиболее часто встречающиеся проблемы установки и их решения.

285 

286### Install script returns HTML instead of a shell script

287 

288При запуске команды установки вы можете увидеть одну из этих ошибок:

289 

290```text theme={null}

291bash: line 1: syntax error near unexpected token `<'

292bash: line 1: `<!DOCTYPE html>'

293```

294 

295На PowerShell та же проблема выглядит как:

296 

297```text theme={null}

298Invoke-Expression: Missing argument in parameter list.

299```

300 

301Это означает, что URL установки вернул HTML-страницу вместо скрипта установки. Если HTML-страница говорит "App unavailable in region", Claude Code недоступен в вашей стране. См. [supported countries](https://www.anthropic.com/supported-countries).

302 

303В противном случае это может произойти из-за проблем с сетью, региональной маршрутизации или временного сбоя сервиса.

304 

305**Решения:**

306 

3071. **Используйте альтернативный метод установки**:

308 

309 На macOS установите через Homebrew:

310 

311 ```bash theme={null}

312 brew install --cask claude-code

313 ```

314 

315 На Windows установите через WinGet:

316 

317 ```powershell theme={null}

318 winget install Anthropic.ClaudeCode

319 ```

320 

3212. **Повторите попытку через несколько минут**: проблема часто временная. Подождите и попробуйте исходную команду снова.

322 

323### `command not found: claude` after installation

324 

325Установка завершилась, но `claude` не работает. Точная ошибка варьируется в зависимости от платформы:

326 

327| Платформа | Сообщение об ошибке |

328| :---------- | :--------------------------------------------------------------------- |

329| macOS | `zsh: command not found: claude` |

330| Linux | `bash: claude: command not found` |

331| Windows CMD | `'claude' is not recognized as an internal or external command` |

332| PowerShell | `claude : The term 'claude' is not recognized as the name of a cmdlet` |

333 

334Это означает, что директория установки не находится в пути поиска вашей оболочки. См. [Verify your PATH](#verify-your-path) для исправления на каждой платформе.

335 

336### `curl: (56) Failure writing output to destination`

337 

338Команда `curl ... | bash` загружает скрипт и передаёт его в Bash для выполнения. Эта ошибка означает, что соединение разорвалось до завершения загрузки скрипта. Распространённые причины включают сетевые перебои, блокировку загрузки в середине потока или ограничения системных ресурсов.

339 

340**Решения:**

341 

3421. **Проверьте стабильность сети**: бинарные файлы Claude Code размещены на `downloads.claude.ai`. Проверьте, что вы можете его достичь:

343 ```bash theme={null}

344 curl -sI https://downloads.claude.ai/claude-code-releases/latest

345 ```

346 Строка `HTTP/2 200` означает, что вы достигли сервера и исходный сбой был вероятно временным; повторите команду установки. Если вы видите `Could not resolve host` или timeout соединения, ваша сеть блокирует загрузку.

347 

3482. **Попробуйте альтернативный метод установки**:

349 

350 На macOS:

351 

352 ```bash theme={null}

353 brew install --cask claude-code

354 ```

355 

356 На Windows:

357 

358 ```powershell theme={null}

359 winget install Anthropic.ClaudeCode

360 ```

361 

362### TLS or SSL connection errors

363 

364Ошибки вроде `curl: (35) TLS connect error`, `schannel: next InitializeSecurityContext failed` или PowerShell's `Could not establish trust relationship for the SSL/TLS secure channel` указывают на сбои TLS handshake.

365 

366**Решения:**

367 

3681. **Обновите сертификаты CA вашей системы**:

369 

370 На Ubuntu/Debian:

371 

372 ```bash theme={null}

373 sudo apt-get update && sudo apt-get install ca-certificates

374 ```

375 

376 На macOS системный curl использует хранилище доверия Keychain; обновление самого macOS обновляет корневые сертификаты.

377 

3782. **На Windows включите TLS 1.2** в PowerShell перед запуском установщика:

379 ```powershell theme={null}

380 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

381 irm https://claude.ai/install.ps1 | iex

382 ```

383 

3843. **Проверьте помехи прокси или брандмауэра**: корпоративные прокси, выполняющие TLS inspection, могут вызвать эти ошибки, включая `unable to get local issuer certificate` и `SELF_SIGNED_CERT_IN_CHAIN`. Для шага установки укажите curl на ваш корпоративный пакет CA с `--cacert`:

385 ```bash theme={null}

386 curl --cacert /path/to/corporate-ca.pem -fsSL https://claude.ai/install.sh | bash

387 ```

388 Для самого Claude Code после установки установите `NODE_EXTRA_CA_CERTS` так, чтобы запросы API доверяли тому же пакету:

389 ```bash theme={null}

390 export NODE_EXTRA_CA_CERTS=/path/to/corporate-ca.pem

391 ```

392 Попросите файл сертификата у вашей IT-команды, если у вас его нет. Вы также можете попробовать на прямом соединении, чтобы подтвердить, что прокси является причиной.

393 

3944. **На Windows обойдите проверки отзыва сертификатов**, если вы видите `CRYPT_E_NO_REVOCATION_CHECK (0x80092012)` или `CRYPT_E_REVOCATION_OFFLINE (0x80092013)`. Они означают, что curl достиг сервера, но ваша сеть блокирует поиск отзыва сертификата, что распространено за корпоративными брандмауэрами. Добавьте `--ssl-revoke-best-effort` к команде установки:

395 ```batch theme={null}

396 curl --ssl-revoke-best-effort -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

397 ```

398 Или установите с `winget install Anthropic.ClaudeCode`, что полностью избегает curl.

399 

400### `Failed to fetch version from downloads.claude.ai`

401 

402Установщик не смог достичь сервера загрузки. Это обычно означает, что `downloads.claude.ai` заблокирован в вашей сети.

403 

404**Решения:**

405 

4061. **Проверьте подключение напрямую**:

407 ```bash theme={null}

408 curl -sI https://downloads.claude.ai/claude-code-releases/latest

409 ```

410 

4112. **Если за прокси**, установите `HTTPS_PROXY` так, чтобы установщик мог маршрутизировать через него. См. [proxy configuration](/ru/network-config#proxy-configuration) для деталей.

412 ```bash theme={null}

413 export HTTPS_PROXY=http://proxy.example.com:8080

414 curl -fsSL https://claude.ai/install.sh | bash

415 ```

416 

4173. **Если в ограниченной сети**, попробуйте другую сеть или VPN, или используйте альтернативный метод установки:

418 

419 На macOS:

420 

421 ```bash theme={null}

422 brew install --cask claude-code

423 ```

424 

425 На Windows:

426 

427 ```powershell theme={null}

428 winget install Anthropic.ClaudeCode

429 ```

430 

431### Wrong install command on Windows

432 

433Если вы видите `'irm' is not recognized`, `The token '&&' is not valid` или `'bash' is not recognized as the name of a cmdlet`, вы скопировали команду установки для другой оболочки или операционной системы.

434 

435* **`irm` не распознан**: вы находитесь в CMD, а не PowerShell. У вас есть два варианта:

436 

437 Откройте PowerShell, поиск "PowerShell" в меню Start, затем запустите исходную команду установки:

438 

439 ```powershell theme={null}

440 irm https://claude.ai/install.ps1 | iex

441 ```

442 

443 Или оставайтесь в CMD и используйте вместо этого установщик CMD:

444 

445 ```batch theme={null}

446 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

447 ```

448 

449* **`&&` не действителен**: вы находитесь в PowerShell, но запустили команду установщика CMD. Используйте установщик PowerShell:

450 ```powershell theme={null}

451 irm https://claude.ai/install.ps1 | iex

452 ```

453 

454* **`bash` не распознан**: вы запустили установщик macOS/Linux на Windows. Используйте вместо этого установщик PowerShell:

455 ```powershell theme={null}

456 irm https://claude.ai/install.ps1 | iex

457 ```

458 

459### `The process cannot access the file` during Windows install

460 

461Если установщик PowerShell не удаётся с `Failed to download binary: The process cannot access the file ... because it is being used by another process`, установщик не смог записать в `%USERPROFILE%\.claude\downloads`. Это обычно означает, что предыдущая попытка установки всё ещё работает, или антивирусное программное обеспечение сканирует частично загруженный бинарный файл в этой папке.

462 

463Закройте любые другие окна PowerShell, запускающие установщик, и дождитесь завершения сканирования антивирусом. Затем удалите папку загрузок и запустите установщик снова:

464 

465```powershell theme={null}

466Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\downloads"

467irm https://claude.ai/install.ps1 | iex

468```

469 

470### Install killed on low-memory Linux servers

471 

472Если вы видите `Killed` во время установки на VPS или облачном экземпляре:

473 

474```text theme={null}

475Setting up Claude Code...

476Installing Claude Code native build latest...

477bash: line 142: 34803 Killed "$binary_path" install ${TARGET:+"$TARGET"}

478```

479 

480Убийца OOM Linux завершил процесс, потому что система исчерпала память. Claude Code требует по крайней мере 4 ГБ доступной оперативной памяти.

481 

482**Решения:**

483 

4841. **Добавьте пространство подкачки**, если ваш сервер имеет ограниченную оперативную память. Подкачка использует дисковое пространство как переполнение памяти, позволяя установке завершиться даже при низкой физической оперативной памяти.

485 

486 Создайте файл подкачки размером 2 ГБ и включите его:

487 

488 ```bash theme={null}

489 sudo fallocate -l 2G /swapfile

490 sudo chmod 600 /swapfile

491 sudo mkswap /swapfile

492 sudo swapon /swapfile

493 ```

494 

495 Затем повторите установку:

496 

497 ```bash theme={null}

498 curl -fsSL https://claude.ai/install.sh | bash

499 ```

500 

5012. **Закройте другие процессы**, чтобы освободить память перед установкой.

502 

5033. **Используйте больший экземпляр**, если возможно. Claude Code требует по крайней мере 4 ГБ оперативной памяти.

504 

505### Install hangs in Docker

506 

507При установке Claude Code в контейнер Docker установка от root в `/` может вызвать зависания.

508 

509**Решения:**

510 

5111. **Установите рабочую директорию** перед запуском установщика. При запуске из `/` установщик сканирует всю файловую систему, что вызывает чрезмерное использование памяти. Установка `WORKDIR` ограничивает сканирование небольшой директорией:

512 ```dockerfile theme={null}

513 WORKDIR /tmp

514 RUN curl -fsSL https://claude.ai/install.sh | bash

515 ```

516 

5172. **Увеличьте лимиты памяти Docker**, если используете Docker Desktop:

518 ```bash theme={null}

519 docker build --memory=4g .

520 ```

521 

522### Claude Desktop overrides the `claude` command on Windows

523 

524Если вы установили старую версию Claude Desktop, она может зарегистрировать `Claude.exe` в директории `WindowsApps`, которая имеет приоритет PATH над Claude Code CLI. Запуск `claude` открывает приложение Desktop вместо CLI.

525 

526Обновите Claude Desktop до последней версии, чтобы исправить эту проблему.

527 

528### Claude Code on Windows requires either Git for Windows (for bash) or PowerShell

529 

530Claude Code на нативном Windows требует по крайней мере одну оболочку: либо [Git for Windows](https://git-scm.com/downloads/win) для Bash, либо PowerShell. Когда ни одна не найдена, эта ошибка появляется при запуске. Если найден только PowerShell, Claude Code использует инструмент PowerShell вместо Bash.

531 

532**Если ни один не установлен**, установите один:

533 

534* Git for Windows: загрузите с [git-scm.com/downloads/win](https://git-scm.com/downloads/win). Во время установки выберите "Add to PATH." Перезагрузите ваш терминал после установки.

535* PowerShell 7: загрузите с [aka.ms/powershell](https://aka.ms/powershell).

536 

537**Если Git уже установлен**, но Claude Code не может его найти, установите путь в вашем [settings.json file](/ru/settings):

538 

539```json theme={null}

540{

541 "env": {

542 "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"

543 }

544}

545```

546 

547Если ваш Git установлен где-то ещё, найдите путь, запустив `where.exe git` в PowerShell и используйте путь `bin\bash.exe` из этой директории.

548 

549### Claude Code does not support 32-bit Windows

550 

551Windows включает две записи PowerShell в меню Start: `Windows PowerShell` и `Windows PowerShell (x86)`. Запись x86 запускается как 32-битный процесс и вызывает эту ошибку даже на 64-битной машине. Чтобы проверить, в каком случае вы находитесь, запустите это в том же окне, которое произвело ошибку:

552 

553```powershell theme={null}

554[Environment]::Is64BitOperatingSystem

555```

556 

557Если это выводит `True`, ваша операционная система в порядке. Закройте окно, откройте `Windows PowerShell` без суффикса x86 и запустите команду установки снова.

558 

559Если это выводит `False`, вы находитесь на 32-битном издании Windows. Claude Code требует 64-битную операционную систему. См. [system requirements](/ru/setup#system-requirements).

560 

561### Linux musl or glibc binary mismatch

562 

563Если вы видите ошибки об отсутствующих общих библиотеках вроде `libstdc++.so.6` или `libgcc_s.so.1` после установки, установщик мог загрузить неправильный вариант бинарного файла для вашей системы.

564 

565```text theme={null}

566Error loading shared library libstdc++.so.6: No such file or directory

567```

568 

569Это может произойти на системах на основе glibc, которые имеют установленные пакеты кросс-компиляции musl, вызывая установщик неправильно определить систему как musl.

570 

571**Решения:**

572 

5731. **Проверьте, какой libc использует ваша система**:

574 ```bash theme={null}

575 ldd --version 2>&1 | head -1

576 ```

577 Вывод, упоминающий `GNU libc` или `GLIBC`, означает glibc. Вывод, упоминающий `musl`, означает musl.

578 

5792. **Если вы на glibc, но получили бинарный файл musl**, удалите установку и переустановите. Вы также можете вручную загрузить правильный бинарный файл, используя манифест в `https://downloads.claude.ai/claude-code-releases/{VERSION}/manifest.json`. Подайте [GitHub issue](https://github.com/anthropics/claude-code/issues) с выводом `ldd --version` и `ls /lib/libc.musl*`.

580 

5813. **Если вы действительно на musl**, такой как Alpine Linux, установите требуемые пакеты:

582 ```bash theme={null}

583 apk add libgcc libstdc++ ripgrep

584 ```

585 

586### `Illegal instruction`

587 

588Если запуск `claude` или установщика выводит `Illegal instruction`, встроенный бинарный файл использует инструкции CPU, которые ваш процессор не поддерживает. Есть две отдельные причины.

589 

590**Несоответствие архитектуры.** Установщик загрузил неправильный бинарный файл, например x86 на ARM-сервере. Проверьте с `uname -m` на macOS или Linux, или `$env:PROCESSOR_ARCHITECTURE` в PowerShell. Если результат не совпадает с полученным вами бинарным файлом, [подайте GitHub issue](https://github.com/anthropics/claude-code/issues) с выводом.

591 

592**Отсутствующий набор инструкций AVX.** Если ваша архитектура правильная, но вы всё ещё видите `Illegal instruction`, ваш CPU вероятно не имеет AVX или другой инструкции, которую требует бинарный файл. Это влияет примерно на процессоры Intel и AMD до 2013 года, и виртуальные машины, где гипервизор не передаёт AVX гостю.

593 

594На VPS или VM запустите `grep -m1 -ow avx /proc/cpuinfo`; пустой результат означает, что AVX недоступен гостю.

595 

596Встроенного обходного пути нет; отслеживайте [issue #50384](https://github.com/anthropics/claude-code/issues/50384) для статуса и включайте модель вашего CPU из `grep -m1 "model name" /proc/cpuinfo` на Linux или `sysctl -n machdep.cpu.brand_string` на macOS при сообщении.

597 

598Альтернативные методы установки загружают тот же встроенный бинарный файл и не разрешат ни одну из причин.

599 

600### `dyld: cannot load` on macOS

601 

602Если вы видите `dyld: cannot load`, `dyld: Symbol not found` или `Abort trap: 6` во время установки, бинарный файл несовместим с вашей версией macOS или оборудованием.

603 

604```text theme={null}

605dyld: cannot load 'claude-2.1.42-darwin-x64' (load command 0x80000034 is unknown)

606Abort trap: 6

607```

608 

609Ошибка `Symbol not found`, которая ссылается на `libicucore`, также указывает, что ваша версия macOS старше, чем поддерживает бинарный файл:

610 

611```text theme={null}

612dyld: Symbol not found: _ubrk_clone

613 Referenced from: claude-darwin-x64 (which was built for Mac OS X 13.0)

614 Expected in: /usr/lib/libicucore.A.dylib

615```

616 

617**Решения:**

618 

6191. **Проверьте вашу версию macOS**: Claude Code требует macOS 13.0 или позже. Откройте меню Apple и выберите About This Mac, чтобы проверить вашу версию.

620 

6212. **Обновите macOS**, если вы на старой версии. Бинарный файл использует команды загрузки и системные библиотеки, которые старые версии macOS не поддерживают. Альтернативные методы установки, такие как Homebrew, загружают тот же бинарный файл и не разрешат эту ошибку.

622 

623### `Exec format error` on WSL1

624 

625Если запуск `claude` в WSL выводит `cannot execute binary file: Exec format error`, вы находитесь на WSL1 и попадаете в известную регрессию встроенного бинарного файла, отслеживаемую в [issue #38788](https://github.com/anthropics/claude-code/issues/38788). Заголовки программы бинарного файла изменились таким образом, что загрузчик WSL1 не может обработать.

626 

627Самое чистое исправление — преобразовать ваш дистрибутив в WSL2 из PowerShell:

628 

629```powershell theme={null}

630wsl --set-version <DistroName> 2

631```

632 

633Если вам нужно оставаться на WSL1, вызовите бинарный файл через динамический компоновщик. Добавьте эту функцию в `~/.bashrc` внутри WSL, заменив путь, если ваша домашняя директория отличается:

634 

635```bash theme={null}

636claude() {

637 /lib64/ld-linux-x86-64.so.2 "$(readlink -f "$HOME/.local/bin/claude")" "$@"

638}

639```

640 

641Затем запустите `source ~/.bashrc` и повторите `claude`.

642 

643### npm install errors in WSL

644 

645Эти проблемы применяются, если вы установили Claude Code с `npm install -g` внутри WSL. Если вы использовали [native installer](/ru/setup), пропустите этот раздел.

646 

647**Проблемы обнаружения ОС или платформы.** Если npm сообщает о несоответствии платформы во время установки, WSL вероятно выбирает Windows `npm`. Сначала запустите `npm config set os linux`, затем установите с `npm install -g @anthropic-ai/claude-code --force`. Не используйте `sudo`.

648 

649**`exec: node: not found` при запуске `claude`.** Ваша среда WSL вероятно использует установку Node.js для Windows. Подтвердите с `which npm` и `which node`: пути, начинающиеся с `/mnt/c/`, — это бинарные файлы Windows, в то время как пути Linux начинаются с `/usr/`. Чтобы исправить это, установите Node через менеджер пакетов вашего дистрибутива Linux или через [`nvm`](https://github.com/nvm-sh/nvm).

650 

651**Конфликты версий nvm.** Если у вас установлен nvm как в WSL, так и в Windows, переключение версий Node в WSL может сломаться, потому что WSL импортирует Windows PATH по умолчанию и Windows nvm имеет приоритет. Наиболее распространённая причина — что nvm не загружен в вашу оболочку. Добавьте загрузчик nvm в `~/.bashrc` или `~/.zshrc`:

652 

653```bash theme={null}

654export NVM_DIR="$HOME/.nvm"

655[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

656[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

657```

658 

659Или загрузите его в вашу текущую сессию:

660 

661```bash theme={null}

662source ~/.nvm/nvm.sh

663```

664 

665Если nvm загружен, но пути Windows всё ещё имеют приоритет, явно добавьте ваш путь Linux Node:

666 

667```bash theme={null}

668export PATH="$HOME/.nvm/versions/node/$(node -v)/bin:$PATH"

669```

670 

671<Warning>

672 Избегайте отключения импорта Windows PATH через `appendWindowsPath = false`, так как это нарушает возможность вызывать исполняемые файлы Windows из WSL. Аналогично, избегайте удаления Node.js из Windows, если вы используете его для разработки Windows.

673</Warning>

674 

675### Permission errors during installation

676 

677Если встроенный установщик не удаётся с ошибками разрешений, целевая директория может быть недоступна для записи. См. [Check directory permissions](#check-directory-permissions).

678 

679Если вы ранее установили с npm и получаете ошибки разрешений, специфичные для npm, переключитесь на встроенный установщик:

680 

681```bash theme={null}

682curl -fsSL https://claude.ai/install.sh | bash

683```

684 

685### Native binary not found after npm install

686 

687Пакет npm `@anthropic-ai/claude-code` получает встроенный бинарный файл через зависимость, специфичную для платформы, такую как `@anthropic-ai/claude-code-darwin-arm64`. Если запуск `claude` после установки выводит `Could not find native binary package "@anthropic-ai/claude-code-<platform>"`, проверьте следующие причины:

688 

689* **Опциональные зависимости отключены.** Удалите `--omit=optional` из вашей команды npm install, `--no-optional` из pnpm или `--ignore-optional` из yarn, и проверьте, что `.npmrc` не устанавливает `optional=false`. Затем переустановите. Встроенный бинарный файл доставляется только как опциональная зависимость, поэтому нет JavaScript fallback, если он пропущен.

690* **Неподдерживаемая платформа.** Предварительно собранные бинарные файлы опубликованы для `darwin-arm64`, `darwin-x64`, `linux-x64`, `linux-arm64`, `linux-x64-musl`, `linux-arm64-musl`, `win32-x64` и `win32-arm64`. Claude Code не поставляет бинарный файл для других платформ; см. [system requirements](/ru/setup#system-requirements).

691* **Корпоративное зеркало npm отсутствуют пакеты платформы.** Убедитесь, что ваш реестр зеркалирует все восемь пакетов `@anthropic-ai/claude-code-*` платформы в дополнение к мета-пакету.

692 

693Установка с `--ignore-scripts` не вызывает эту ошибку. Шаг postinstall, который связывает бинарный файл на место, пропускается, поэтому Claude Code возвращается к обёртке, которая находит и порождает бинарный файл платформы при каждом запуске. Это работает, но запускается медленнее; переустановите со скриптами, включёнными для прямого выполнения.

694 

695## Вход и аутентификация

696 

697Эти разделы решают проблемы входа, ошибки OAuth и проблемы с токенами.

698 

699### Сброс вашего входа

700 

701Когда вход не удаётся и причина не очевидна, чистая повторная аутентификация разрешает большинство случаев:

702 

7031. Запустите `/logout`, чтобы полностью выйти

7042. Закройте Claude Code

7053. Перезагрузитесь с `claude` и завершите процесс аутентификации снова

706 

707Если браузер не открывается автоматически во время входа, нажмите `c`, чтобы скопировать URL OAuth в буфер обмена, затем вставьте его в браузер вручную. Это также работает, когда URL переносится на несколько строк в узком или SSH терминале и не может быть нажат напрямую.

708 

709### OAuth error: Invalid code

710 

711Если вы видите `OAuth error: Invalid code. Please make sure the full code was copied`, код входа истёк или был усечён во время копирования-вставки.

712 

713**Решения:**

714 

715* Нажмите Enter, чтобы повторить и завершить вход быстро после открытия браузера

716* Введите `c`, чтобы скопировать полный URL, если браузер не открывается автоматически

717* Если используете удалённую/SSH сессию, браузер может открыться на неправильной машине. Скопируйте URL, отображаемый в терминале, и откройте его в вашем локальном браузере вместо этого.

718 

719### 403 Forbidden after login

720 

721Если вы видите `API Error: 403 {"error":{"type":"forbidden","message":"Request not allowed"}}` после входа:

722 

723* **Пользователи Claude Pro/Max**: проверьте, что ваша подписка активна на [claude.ai/settings](https://claude.ai/settings)

724* **Пользователи Anthropic Console**: подтвердите, что ваша учётная запись имеет роль "Claude Code" или "Developer". Администраторы назначают это в Anthropic Console под Settings → Members.

725* **За прокси**: корпоративные прокси могут помешать запросам API. См. [network configuration](/ru/network-config) для настройки прокси.

726 

727### This organization has been disabled with an active subscription

728 

729Если вы видите `API Error: 400 ... "This organization has been disabled"` несмотря на активную подписку Claude, переменная окружения `ANTHROPIC_API_KEY` переопределяет вашу подписку. Это обычно происходит, когда старый API ключ от предыдущего работодателя или проекта всё ещё установлен в вашем профиле оболочки.

730 

731Когда `ANTHROPIC_API_KEY` присутствует и вы его одобрили, Claude Code использует этот ключ вместо учётных данных OAuth вашей подписки. В неинтерактивном режиме с флагом `-p` ключ всегда используется, когда присутствует. См. [authentication precedence](/ru/authentication#authentication-precedence) для полного порядка разрешения.

732 

733Чтобы использовать вашу подписку вместо этого, отмените установку переменной окружения и удалите её из вашего профиля оболочки:

734 

735```bash theme={null}

736unset ANTHROPIC_API_KEY

737claude

738```

739 

740Проверьте `~/.zshrc`, `~/.bashrc` или `~/.profile` на строки `export ANTHROPIC_API_KEY=...` и удалите их, чтобы сделать изменение постоянным. На Windows проверьте ваш профиль PowerShell в `$PROFILE` и ваши переменные окружения User на `ANTHROPIC_API_KEY`. Запустите `/status` внутри Claude Code, чтобы подтвердить, какой метод аутентификации активен.

741 

742### OAuth login fails in WSL2, SSH, or containers

743 

744Когда Claude Code работает в WSL2, на удалённой машине через SSH или внутри контейнера, браузер обычно открывается на другом хосте и его перенаправление не может достичь локального сервера обратного вызова Claude Code. После того как вы войдёте, браузер показывает код входа вместо автоматического перенаправления обратно. Вставьте этот код в терминал в приглашение `Paste code here if prompted`, чтобы завершить вход.

745 

746Если браузер вообще не открывается из WSL2, установите переменную окружения `BROWSER` на путь вашего браузера Windows:

747 

748```bash theme={null}

749export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"

750claude

751```

752 

753Или нажмите `c` на интерактивном приглашении входа, чтобы скопировать URL OAuth, или скопируйте URL, который печатает `claude auth login`, и откройте его в браузере на вашей локальной машине.

754 

755Если вставка кода в интерактивное приглашение ничего не делает, привязка вставки вашего терминала вероятно не достигает поля ввода. Попробуйте альтернативное сочетание клавиш вставки вашего терминала, часто правый клик или Shift+Insert в Windows Terminal, или используйте `claude auth login` вместо этого, который читает вставленный код из стандартного ввода:

756 

757```bash theme={null}

758claude auth login

759```

760 

761Этот fallback также применяется на нативном Windows или любом терминале, где вставка в интерактивное приглашение не удаётся.

762 

763### Not logged in or token expired

764 

765Если Claude Code предлагает вам войти снова после сессии, ваш токен OAuth может истечь.

766 

767Запустите `/login`, чтобы повторно аутентифицироваться. Если это происходит часто, проверьте, что ваши системные часы точны, так как валидация токена зависит от правильных временных меток.

768 

769На macOS вход также может не удаться, когда Keychain заблокирован или его пароль не синхронизирован с паролем вашей учётной записи, что предотвращает Claude Code от сохранения учётных данных. Запустите `claude doctor`, чтобы проверить доступ Keychain. Чтобы разблокировать Keychain вручную, запустите `security unlock-keychain ~/Library/Keychains/login.keychain-db`. Если разблокировка не помогает, откройте Keychain Access, выберите keychain `login` и выберите Edit > Change Password for Keychain "login", чтобы пересинхронизировать его с паролем вашей учётной записи.

770 

771### Bedrock, Vertex, or Foundry credentials not loading

772 

773Если вы настроили Claude Code для использования облачного провайдера и видите `Could not load credentials from any providers` на Bedrock, `Could not load the default credentials` на Vertex или `ChainedTokenCredential authentication failed` на Foundry, ваш CLI облачного провайдера вероятно не аутентифицирован в текущей оболочке.

774 

775Для Bedrock подтвердите, что ваши учётные данные AWS действительны:

776 

777```bash theme={null}

778aws sts get-caller-identity

779```

780 

781Для Vertex AI подтвердите, что `ANTHROPIC_VERTEX_PROJECT_ID` и `CLOUD_ML_REGION` установлены в вашей оболочке, затем установите учётные данные приложения по умолчанию:

782 

783```bash theme={null}

784gcloud auth application-default login

785```

786 

787Для Microsoft Foundry подтвердите, что `ANTHROPIC_FOUNDRY_API_KEY` установлен, или войдите с Azure CLI, чтобы цепь учётных данных по умолчанию могла найти вашу учётную запись:

788 

789```bash theme={null}

790az login

791```

792 

793Если учётные данные работают в вашем терминале, но не в расширении VS Code или JetBrains, процесс IDE вероятно не унаследовал вашу среду оболочки. Установите переменные окружения провайдера в собственных параметрах IDE или запустите IDE из терминала, где они уже экспортированы.

794 

795См. [Amazon Bedrock](/ru/amazon-bedrock), [Google Vertex AI](/ru/google-vertex-ai) или [Microsoft Foundry](/ru/microsoft-foundry) для полной настройки провайдера.

796 

797## Still stuck

798 

799Если ничего из вышеперечисленного не разрешает вашу проблему:

800 

8011. Проверьте [GitHub repository](https://github.com/anthropics/claude-code/issues) на известные проблемы или откройте новую с вашей операционной системой, командой установки, которую вы запустили, и полным выводом ошибки

8022. Если `claude --version` работает, но что-то ещё не так, запустите `claude doctor` для автоматического диагностического отчёта

8033. Если вы можете запустить сессию, используйте `/feedback` внутри Claude Code, чтобы сообщить о проблеме

troubleshooting.md +121 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Troubleshooting

6 

7> Исправьте высокое использование CPU или памяти, зависания, auto-compact thrashing и проблемы поиска в Claude Code, и найдите нужную страницу для других проблем.

8 

9Эта страница охватывает проблемы производительности, стабильности и поиска после того, как Claude Code запущен. Для других проблем начните со страницы, которая соответствует тому, где вы застряли:

10 

11| Симптом | Перейти к |

12| :--------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- |

13| `command not found`, ошибка установки, проблемы PATH, `EACCES`, ошибки TLS | [Troubleshoot installation and login](/ru/troubleshoot-install) |

14| Циклы входа, ошибки OAuth, `403 Forbidden`, "organization disabled", учётные данные Bedrock/Vertex/Foundry | [Troubleshoot installation and login](/ru/troubleshoot-install#login-and-authentication) |

15| Параметры не применяются, hooks не срабатывают, MCP servers не загружаются | [Debug your configuration](/ru/debug-your-config) |

16| `API Error: 5xx`, `529 Overloaded`, `429`, ошибки валидации запроса | [Error reference](/ru/errors) |

17| `model not found` или `you may not have access to it` | [Error reference](/ru/errors#theres-an-issue-with-the-selected-model) |

18| Расширение VS Code не подключается или не обнаруживает Claude | [VS Code integration](/ru/vs-code#fix-common-issues) |

19| Плагин JetBrains или IDE не обнаружена | [JetBrains integration](/ru/jetbrains#troubleshooting) |

20| Высокое использование CPU или памяти, медленные ответы, зависания, поиск не находит файлы | [Performance and stability](#performance-and-stability) ниже |

21 

22Если вы не уверены, какой применяется, запустите `/doctor` внутри Claude Code для автоматической проверки вашей установки, параметров, MCP servers и использования контекста. Если `claude` вообще не запускается, запустите `claude doctor` из вашей оболочки вместо этого.

23 

24## Performance and stability

25 

26Эти разделы охватывают проблемы, связанные с использованием ресурсов, отзывчивостью и поведением поиска.

27 

28### High CPU or memory usage

29 

30Claude Code разработан для работы с большинством сред разработки, но может потреблять значительные ресурсы при обработке больших кодовых баз. Если вы испытываете проблемы с производительностью:

31 

321. Используйте `/compact` регулярно, чтобы уменьшить размер контекста

332. Закройте и перезагрузите Claude Code между основными задачами

343. Рассмотрите добавление больших директорий сборки в ваш файл `.gitignore`

35 

36Если использование памяти остаётся высоким после этих шагов, запустите `/heapdump`, чтобы записать снимок кучи JavaScript и разбор памяти на `~/Desktop`. На Linux без папки Desktop файлы записываются в вашу домашнюю директорию.

37 

38Разбор показывает размер набора резидентов, кучу JS, буферы массивов и неучтённую собственную память, что помогает определить, находится ли рост в объектах JavaScript или в собственном коде. Чтобы проверить удерживающие элементы, откройте файл `.heapsnapshot` в Chrome DevTools под Memory → Load. Прикрепите оба файла при сообщении о проблеме с памятью на [GitHub](https://github.com/anthropics/claude-code/issues).

39 

40### Auto-compaction stops with a thrashing error

41 

42Если вы видите `Autocompact is thrashing: the context refilled to the limit...`, автоматическое сжатие прошло успешно, но файл или вывод инструмента немедленно заполнили окно контекста несколько раз подряд. Claude Code останавливает повторные попытки, чтобы избежать траты вызовов API на цикл, который не делает прогресс.

43 

44Чтобы восстановиться:

45 

461. Попросите Claude прочитать большой файл в меньших фрагментах, таких как конкретный диапазон строк или функция, вместо всего файла

472. Запустите `/compact` с фокусом, который удаляет большой вывод, например `/compact keep only the plan and the diff`

483. Переместите работу с большим файлом на [subagent](/ru/sub-agents), чтобы она работала в отдельном окне контекста

494. Запустите `/clear`, если более ранний разговор больше не нужен

50 

51### Command hangs or freezes

52 

53Если Claude Code кажется неотзывчивым:

54 

551. Нажмите Ctrl+C, чтобы попытаться отменить текущую операцию

562. Если неотзывчив, вам может потребоваться закрыть терминал и перезагрузить

57 

58Перезагрузка не теряет вашу беседу. Запустите `claude --resume` в той же директории, чтобы продолжить сеанс.

59 

60### Search and discovery issues

61 

62Если инструмент Search, упоминания `@file`, пользовательские агенты или пользовательские skills не находят файлы, встроенный двоичный файл `ripgrep` может не работать на вашей системе. Установите пакет `ripgrep` вашей платформы и скажите Claude Code использовать его вместо этого:

63 

64<Tabs>

65 <Tab title="macOS">

66 ```bash theme={null}

67 brew install ripgrep

68 ```

69 </Tab>

70 

71 <Tab title="Ubuntu/Debian">

72 ```bash theme={null}

73 sudo apt install ripgrep

74 ```

75 </Tab>

76 

77 <Tab title="Alpine">

78 ```bash theme={null}

79 apk add ripgrep

80 ```

81 </Tab>

82 

83 <Tab title="Arch">

84 ```bash theme={null}

85 pacman -S ripgrep

86 ```

87 </Tab>

88 

89 <Tab title="Windows">

90 ```powershell theme={null}

91 winget install BurntSushi.ripgrep.MSVC

92 ```

93 </Tab>

94</Tabs>

95 

96Затем установите `USE_BUILTIN_RIPGREP=0` в вашем [окружении](/ru/env-vars).

97 

98### Slow or incomplete search results on WSL

99 

100Штрафы производительности чтения диска при [работе с файловыми системами на WSL](https://learn.microsoft.com/en-us/windows/wsl/filesystems) могут привести к меньшему количеству совпадений, чем ожидается, при использовании Claude Code на WSL. Поиск всё ещё функционирует, но возвращает меньше результатов, чем на собственной файловой системе.

101 

102<Note>

103 `/doctor` будет показывать Search как OK в этом случае.

104</Note>

105 

106**Решения:**

107 

1081. **Отправляйте более конкретные поиски**: уменьшите количество файлов, которые ищутся, указав директории или типы файлов: "Search for JWT validation logic in the auth-service package" или "Find use of md5 hash in JS files".

109 

1102. **Переместите проект на файловую систему Linux**: если возможно, убедитесь, что ваш проект находится на файловой системе Linux (`/home/`) вместо файловой системы Windows (`/mnt/c/`).

111 

1123. **Используйте нативный Windows вместо этого**: рассмотрите запуск Claude Code нативно на Windows вместо WSL для лучшей производительности файловой системы.

113 

114## Get more help

115 

116Если вы испытываете проблемы, не охватываемые здесь:

117 

1181. Запустите `/doctor`, чтобы проверить здоровье установки, валидность параметров, конфигурацию MCP и использование контекста в одном проходе

1192. Используйте команду `/feedback` в Claude Code, чтобы сообщить о проблемах непосредственно в Anthropic

1203. Проверьте [репозиторий GitHub](https://github.com/anthropics/claude-code) на известные проблемы

1214. Спросите Claude напрямую о его возможностях и функциях. Claude имеет встроенный доступ к своей документации.

ultraplan.md +84 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Планирование в облаке с ultraplan

6 

7> Запустите план из CLI, создайте его в Claude Code в веб-интерфейсе, а затем выполните его удалённо или вернитесь в терминал

8 

9<Note>

10 Ultraplan находится в исследовательском предпросмотре и требует Claude Code версии 2.1.91 или позже. Поведение и возможности могут измениться на основе обратной связи.

11</Note>

12 

13Ultraplan передаёт задачу планирования из вашего локального CLI в сеанс [Claude Code в веб-интерфейсе](/ru/claude-code-on-the-web), работающий в [режиме планирования](/ru/permission-modes#analyze-before-you-edit-with-plan-mode). Claude создаёт план в облаке, пока вы продолжаете работать в терминале. Когда план готов, вы открываете его в браузере, чтобы оставить комментарии к отдельным разделам, попросить изменения и выбрать место выполнения.

14 

15Это полезно, когда вам нужна более богатая поверхность для проверки, чем предлагает терминал:

16 

17* **Целевая обратная связь**: оставляйте комментарии к отдельным разделам плана вместо ответа на весь план целиком

18* **Удалённое создание**: план создаётся удалённо, поэтому ваш терминал остаётся свободным для другой работы

19* **Гибкое выполнение**: одобрите план для запуска в веб-интерфейсе и откройте pull request, или отправьте его обратно в терминал

20 

21Ultraplan требует учётную запись [Claude Code в веб-интерфейсе](/ru/claude-code-on-the-web) и репозиторий GitHub. Поскольку он работает на облачной инфраструктуре Anthropic, он недоступен при использовании Amazon Bedrock, Google Cloud Vertex AI или Microsoft Foundry. Облачный сеанс работает в [облачной среде](/ru/claude-code-on-the-web#the-cloud-environment) по умолчанию вашей учётной записи. Если у вас ещё нет облачной среды, ultraplan создаст её автоматически при первом запуске.

22 

23## Запуск ultraplan из CLI

24 

25Из вашего локального сеанса CLI вы можете запустить ultraplan тремя способами:

26 

27* **Команда**: выполните `/ultraplan` с последующей подсказкой

28* **Ключевое слово**: включите слово `ultraplan` в обычную подсказку где угодно

29* **Из локального плана**: когда Claude завершит локальный план и покажет диалог одобрения, выберите **No, refine with Ultraplan on Claude Code on the web**, чтобы отправить черновик в облако для дальнейшей итерации

30 

31Например, чтобы спланировать миграцию сервиса с помощью команды:

32 

33```

34/ultraplan migrate the auth service from sessions to JWTs

35```

36 

37Пути команды и ключевого слова открывают диалог подтверждения перед запуском. Путь локального плана пропускает этот диалог, потому что этот выбор уже служит подтверждением. Если активен [Remote Control](/ru/remote-control), он отключится при запуске ultraplan, потому что обе функции занимают интерфейс claude.ai/code и одновременно может быть подключена только одна.

38 

39После запуска облачного сеанса ввод подсказки вашего CLI показывает индикатор статуса, пока работает удалённый сеанс:

40 

41| Статус | Значение |

42| :----------------------------- | :---------------------------------------------------------------- |

43| `◇ ultraplan` | Claude исследует ваш репозиторий и создаёт план |

44| `◇ ultraplan needs your input` | Claude имеет уточняющий вопрос; откройте ссылку сеанса для ответа |

45| `◆ ultraplan ready` | План готов к проверке в вашем браузере |

46 

47Выполните `/tasks` и выберите запись ultraplan, чтобы открыть подробный вид со ссылкой сеанса, активностью агента и действием **Stop ultraplan**. Остановка архивирует облачный сеанс и очищает индикатор; ничего не сохраняется в ваш терминал.

48 

49## Проверка и пересмотр плана в браузере

50 

51Когда статус изменится на `◆ ultraplan ready`, откройте ссылку сеанса, чтобы просмотреть план на claude.ai. План появляется в специальном представлении для проверки:

52 

53* **Встроенные комментарии**: выделите любой отрывок и оставьте комментарий для Claude

54* **Реакции эмодзи**: реагируйте на раздел, чтобы сигнализировать об одобрении или озабоченности без написания полного комментария

55* **Боковая панель структуры**: переходите между разделами плана

56 

57Когда вы просите Claude обратить внимание на ваши комментарии, он пересматривает план и представляет обновленный черновик. Вы можете повторять столько раз, сколько необходимо, прежде чем выбрать место выполнения.

58 

59## Выбор места выполнения

60 

61Когда план выглядит правильно, вы выбираете в браузере, должен ли Claude реализовать его в том же облачном сеансе или отправить его обратно в ожидающий терминал.

62 

63### Выполнение в веб-интерфейсе

64 

65Выберите **Approve Claude's plan and start coding** в браузере, чтобы Claude реализовал его в том же сеансе Claude Code в веб-интерфейсе. Ваш терминал показывает подтверждение, индикатор статуса очищается, и работа продолжается в облаке. Когда реализация завершится, [просмотрите различия](/ru/claude-code-on-the-web#review-changes) и создайте pull request из веб-интерфейса.

66 

67### Отправка плана обратно в терминал

68 

69Выберите **Approve plan and teleport back to terminal** в браузере, чтобы реализовать план локально с полным доступом к вашей среде. Этот параметр появляется, когда сеанс был запущен из вашего CLI и терминал всё ещё опрашивается. Веб-сеанс архивируется, поэтому он не продолжает работать параллельно.

70 

71Ваш терминал показывает план в диалоговом окне с названием **Ultraplan approved** с тремя вариантами:

72 

73* **Implement here**: внедрите план в вашу текущую беседу и продолжайте с того места, где вы остановились

74* **Start new session**: очистите текущую беседу и начните заново только с плана в качестве контекста

75* **Cancel**: сохраните план в файл без выполнения; Claude выводит путь к файлу, чтобы вы могли вернуться к нему позже

76 

77Если вы начнёте новый сеанс, Claude выведет команду `claude --resume` в верхней части, чтобы вы могли вернуться к предыдущей беседе позже.

78 

79## Связанные ресурсы

80 

81* [Claude Code в веб-интерфейсе](/ru/claude-code-on-the-web): облачная инфраструктура, на которой работает ultraplan

82* [Режим планирования](/ru/permission-modes#analyze-before-you-edit-with-plan-mode): как работает планирование в локальном сеансе

83* [Поиск ошибок с ultrareview](/ru/ultrareview): аналог ultraplan для проверки кода для выявления проблем перед слиянием

84* [Remote Control](/ru/remote-control): используйте интерфейс claude.ai/code с сеансом, работающим на вашей собственной машине

ultrareview.md +108 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Поиск ошибок с помощью ultrareview

6 

7> Запустите глубокий многоагентный анализ кода в облаке с помощью /ultrareview, чтобы найти и проверить ошибки перед слиянием.

8 

9<Note>

10 Ultrareview — это функция исследовательского предпросмотра, доступная в Claude Code v2.1.86 и более поздних версиях. Функция, цены и доступность могут измениться на основе отзывов.

11</Note>

12 

13Ultrareview — это глубокий анализ кода, который работает на Claude Code в облачной инфраструктуре. Когда вы запускаете `/ultrareview`, Claude Code запускает флот агентов-рецензентов в удаленной изолированной среде для поиска ошибок в вашей ветке или запросе на слияние.

14 

15По сравнению с локальным `/review`, ultrareview предлагает:

16 

17* **Более высокий сигнал**: каждый найденный результат независимо воспроизводится и проверяется, поэтому результаты сосредоточены на реальных ошибках, а не на предложениях по стилю

18* **Более широкое покрытие**: множество агентов-рецензентов исследуют изменение параллельно, что выявляет проблемы, которые может пропустить однопроходный анализ

19* **Без использования локальных ресурсов**: анализ работает полностью в удаленной изолированной среде, поэтому ваш терминал остается свободным для другой работы во время его выполнения

20 

21Ultrareview требует аутентификации с помощью учетной записи Claude.ai, так как работает на Claude Code в облачной инфраструктуре. Если вы вошли только с помощью ключа API, запустите `/login` и сначала аутентифицируйтесь с помощью Claude.ai. Ultrareview недоступен при использовании Claude Code с Amazon Bedrock, Google Cloud Vertex AI или Microsoft Foundry, а также недоступен для организаций, которые включили Zero Data Retention.

22 

23## Запуск ultrareview из CLI

24 

25Начните анализ из любого репозитория git в Claude Code CLI.

26 

27```text theme={null}

28/ultrareview

29```

30 

31Без аргументов ultrareview анализирует разницу между вашей текущей ветвью и ветвью по умолчанию, включая любые незафиксированные и подготовленные изменения в вашем рабочем дереве. Claude Code упаковывает состояние репозитория и загружает его в удаленную изолированную среду для анализа.

32 

33Чтобы вместо этого проанализировать запрос на слияние GitHub, передайте номер PR.

34 

35```text theme={null}

36/ultrareview 1234

37```

38 

39В режиме PR удаленная изолированная среда клонирует запрос на слияние непосредственно из GitHub, а не упаковывает ваше локальное рабочее дерево. Режим PR требует удаленного `github.com` в репозитории.

40 

41<Tip>

42 Если ваш репозиторий слишком большой для упаковки, Claude Code предложит вам вместо этого использовать режим PR. Отправьте вашу ветвь и откройте черновик PR, затем запустите `/ultrareview <PR-number>`.

43</Tip>

44 

45Перед запуском Claude Code показывает диалоговое окно подтверждения с областью анализа (включая количество файлов и строк при анализе ветки), оставшимися бесплатными запусками и предполагаемой стоимостью. После подтверждения анализ продолжается в фоновом режиме, и вы можете продолжать использовать вашу сессию. Команда запускается только при вызове с помощью `/ultrareview`; Claude не запускает ultrareview самостоятельно.

46 

47## Цены и бесплатные запуски

48 

49Ultrareview — это премиум-функция, которая выставляет счета за дополнительное использование, а не за включенное использование в вашем плане.

50 

51| План | Включено бесплатных запусков | После бесплатных запусков |

52| ----------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |

53| Pro | 3 бесплатных запуска через 5 мая 2026 г. | выставляется счет как [дополнительное использование](https://support.claude.com/ru/articles/12429409-extra-usage-for-paid-claude-plans) |

54| Max | 3 бесплатных запуска через 5 мая 2026 г. | выставляется счет как [дополнительное использование](https://support.claude.com/ru/articles/12429409-extra-usage-for-paid-claude-plans) |

55| Team и Enterprise | нет | выставляется счет как [дополнительное использование](https://support.claude.com/ru/articles/12429409-extra-usage-for-paid-claude-plans) |

56 

57Подписчики Pro и Max получают три бесплатных запуска ultrareview для пробы функции. Эти три запуска — это одноразовое выделение на учетную запись, не обновляются и истекают 5 мая 2026 г. После того как вы используете все три или после окончания периода бесплатных запусков, каждый анализ выставляется как дополнительное использование и обычно стоит от 5 до 20 долларов в зависимости от размера изменения. Запуск считается начатым после запуска удаленной сессии, поэтому анализ, который вы остановили рано или который не завершился, все равно использует бесплатный запуск. Для платного анализа дополнительное использование выставляется счет только за ту часть, которая была выполнена.

58 

59Поскольку ultrareview всегда выставляет счет как дополнительное использование вне бесплатных запусков, ваша учетная запись или организация должны иметь включенное дополнительное использование перед запуском платного анализа. Если дополнительное использование не включено, Claude Code блокирует запуск и ссылает вас на параметры выставления счетов, где вы можете его включить. Вы также можете запустить `/extra-usage`, чтобы проверить или изменить текущий параметр.

60 

61## Отслеживание выполняемого анализа

62 

63Анализ обычно занимает от 5 до 10 минут. Анализ работает как фоновая задача, поэтому вы можете продолжать работать в вашей сессии, запускать другие команды или полностью закрыть терминал.

64 

65Используйте `/tasks` для просмотра выполняемых и завершенных анализов, открытия подробного представления анализа или остановки выполняемого анализа. Остановка анализа архивирует облачную сессию, и частичные результаты не возвращаются. Когда анализ завершится, проверенные результаты появятся как уведомление в вашей сессии. Каждый результат включает расположение файла и объяснение проблемы, чтобы вы могли попросить Claude исправить это напрямую.

66 

67## Запуск ultrareview неинтерактивно

68 

69Используйте подкоманду `claude ultrareview` для запуска ultrareview из CI или скрипта без интерактивной сессии. Подкоманда запускает тот же анализ, что и `/ultrareview`, блокирует до завершения удаленного анализа, выводит результаты в stdout и выходит с кодом 0 при успехе или 1 при ошибке.

70 

71```bash theme={null}

72claude ultrareview

73claude ultrareview 1234

74claude ultrareview origin/main

75```

76 

77Без аргументов подкоманда анализирует разницу между вашей текущей ветвью и ветвью по умолчанию. Передайте номер PR для анализа запроса на слияние или передайте базовую ветвь для анализа разницы с этой ветвью вместо этого. Вызов подкоманды считается согласием на выставление счетов и подсказку условий, которые показывает интерактивная команда.

78 

79Сообщения о ходе выполнения и URL живой сессии идут в stderr, чтобы stdout оставался анализируемым. Используйте эти флаги для управления выводом и тайм-аутом:

80 

81| Флаг | Описание |

82| --------------------- | -------------------------------------------------------------------------------------- |

83| `--json` | Выведите необработанный полезный груз `bugs.json` вместо отформатированных результатов |

84| `--timeout <minutes>` | Максимальное количество минут для ожидания завершения анализа. По умолчанию 30 |

85 

86Запуск `claude ultrareview` требует той же аутентификации и конфигурации дополнительного использования, что и `/ultrareview`. Подкоманда выходит с кодом 0 при завершении анализа с результатами или без них, кодом 1 при ошибке запуска анализа, ошибке удаленной сессии или истечении тайм-аута, и кодом 130 при прерывании с помощью Ctrl-C. Удаленный анализ продолжает работать, если вы прерываете подкоманду; следите за URL сессии, выведенным в stderr, чтобы смотреть его в браузере.

87 

88Для автоматических анализов запросов на слияние GitHub [Code Review](/ru/code-review) интегрируется непосредственно с вашим репозиторием и публикует результаты как встроенные комментарии PR без этапа CLI.

89 

90## Как ultrareview сравнивается с /review

91 

92Обе команды анализируют код, но они предназначены для разных этапов вашего рабочего процесса.

93 

94| | `/review` | `/ultrareview` |

95| ----------------- | ----------------------------------- | ------------------------------------------------------------------------------------------- |

96| Запуск | локально в вашей сессии | удаленно в облачной изолированной среде |

97| Глубина | однопроходный анализ | многоагентный флот с независимой проверкой |

98| Продолжительность | секунды до нескольких минут | примерно 5–10 минут |

99| Стоимость | учитывается в обычном использовании | бесплатные запуски, затем примерно 5–20 долларов за анализ как дополнительное использование |

100| Лучше всего для | быстрая обратная связь при итерации | уверенность перед слиянием при существенных изменениях |

101 

102Используйте `/review` для быстрой обратной связи во время работы. Используйте `/ultrareview` перед слиянием существенного изменения, когда вам нужен более глубокий анализ, который поймет проблемы, которые может пропустить однопроходный анализ.

103 

104## Связанные ресурсы

105 

106* [Claude Code в веб-версии](/ru/claude-code-on-the-web): узнайте, как работают удаленные сессии и облачные изолированные среды

107* [Планирование сложных изменений с помощью ultraplan](/ru/ultraplan): аналог планирования для ultrareview для предварительной работы по проектированию

108* [Эффективное управление затратами](/ru/costs): отслеживайте использование и устанавливайте лимиты расходов

voice-dictation.md +191 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Голосовой ввод

6 

7> Произносите свои запросы в Claude Code CLI с помощью удержания или нажатия для записи голоса.

8 

9Произносите свои запросы вместо того, чтобы печатать их в Claude Code CLI. Ваша речь транскрибируется в реальном времени в поле ввода запроса, поэтому вы можете смешивать голос и печать в одном сообщении. Включите диктовку с помощью `/voice`, затем либо удерживайте клавишу во время речи, либо нажмите один раз для начала и снова для отправки.

10 

11<Note>

12 Голосовой ввод требует Claude Code v2.1.69 или более поздней версии. Режим нажатия требует v2.1.116 или более поздней версии. Проверьте вашу версию с помощью `claude --version`.

13</Note>

14 

15## Требования

16 

17Голосовой ввод передает вашу записанную речь на серверы Anthropic для транскрибирования. Аудио не обрабатывается локально. Сервис преобразования речи в текст доступен только при аутентификации с помощью учетной записи Claude.ai и недоступен, когда Claude Code настроен на использование ключа Anthropic API напрямую, Amazon Bedrock, Google Vertex AI или Microsoft Foundry. Транскрибирование не потребляет сообщения Claude или токены и не учитывается в пределах, показанных в `/usage`. См. [использование данных](/ru/data-usage), чтобы узнать, как Anthropic обрабатывает ваши данные.

18 

19Голосовой ввод также требует локального доступа к микрофону, поэтому он не работает в удаленных окружениях, таких как [Claude Code в веб-браузере](/ru/claude-code-on-the-web) или сеансы SSH. В WSL голосовой ввод требует WSLg для доступа к аудио, который включен в WSL2 на Windows 11. На Windows 10 или WSL1 запустите Claude Code в собственной Windows.

20 

21Запись аудио использует встроенный собственный модуль на macOS, Linux и Windows. На Linux, если собственный модуль не может загрузиться, Claude Code переходит на `arecord` из ALSA utils или `rec` из SoX. Если ни один из них недоступен, `/voice` выводит команду установки для вашего менеджера пакетов.

22 

23[Расширение Claude Code для VS Code](/ru/vs-code) также поддерживает голосовой ввод с тем же требованием учетной записи Claude.ai. Оно недоступно в сеансах VS Code Remote, включая SSH, Dev Containers и Codespaces, потому что микрофон находится на вашем локальном компьютере, а расширение работает на удаленном хосте.

24 

25## Включение голосового ввода

26 

27Запустите `/voice` для включения диктовки. При первом включении Claude Code выполняет проверку микрофона. На macOS это вызывает системный запрос разрешения микрофона для вашего терминала, если он никогда не был предоставлен.

28 

29```

30/voice

31Voice mode enabled (hold). Hold Space to record. Dictation language: en (/config to change).

32```

33 

34`/voice` принимает необязательный аргумент режима:

35 

36| Команда | Эффект |

37| :------------ | :------------------------------------------------------------ |

38| `/voice` | Переключить включение или выключение, сохранить текущий режим |

39| `/voice hold` | Включить в [режиме удержания](#hold-to-record) |

40| `/voice tap` | Включить в [режиме нажатия](#tap-to-record-and-send) |

41| `/voice off` | Отключить |

42 

43Голосовой ввод сохраняется между сеансами. Установите его непосредственно в [файле пользовательских настроек](/ru/settings) вместо запуска `/voice`:

44 

45```json theme={null}

46{

47 "voice": {

48 "enabled": true,

49 "mode": "tap"

50 }

51}

52```

53 

54Пока голосовой ввод включен, нижний колонтитул ввода показывает подсказку `hold Space to speak` (удерживайте пробел для речи), когда запрос пуст. Текст подсказки одинаков в обоих режимах и не отображается, если у вас настроена [пользовательская строка состояния](/ru/statusline).

55 

56Транскрибирование настроено для словаря кодирования в обоих режимах. Распространенные термины разработки, такие как `regex`, `OAuth`, `JSON` и `localhost`, распознаются правильно, а название вашего текущего проекта и имя ветки git автоматически добавляются как подсказки распознавания.

57 

58## Удержание для записи

59 

60Режим удержания — это push-to-talk: запись выполняется, пока вы удерживаете клавишу, и останавливается при отпускании. Это режим по умолчанию.

61 

62Удерживайте `Space` для начала записи. Claude Code обнаруживает удерживаемую клавишу, отслеживая быстрые события повтора клавиш от вашего терминала, поэтому перед началом записи есть краткий период прогрева. Нижний колонтитул показывает `keep holding…` (продолжайте удерживать) во время прогрева, затем переключается на живую форму волны после активации записи.

63 

64Первые несколько символов повтора клавиши печатаются в ввод во время прогрева и автоматически удаляются при активации записи. Одиночное нажатие `Space` все еще печатает пробел, так как обнаружение удержания срабатывает только при быстром повторении.

65 

66<Tip>

67 Чтобы пропустить прогрев, переключитесь на [режим нажатия](#tap-to-record-and-send) с помощью `/voice tap` или [переназначьте на комбинацию модификаторов](#rebind-the-dictation-key), такую как `meta+k`. Комбинации модификаторов начинают запись при первом нажатии клавиши.

68</Tip>

69 

70Ваша речь появляется в запросе по мере того, как вы говорите, затемненная до завершения транскрибирования. Отпустите `Space` для остановки записи и завершения текста. Транскрибирование вставляется в позицию вашего курсора, и курсор остается в конце вставленного текста, поэтому вы можете смешивать печать и диктовку в любом порядке. Удерживайте `Space` снова для добавления еще одной записи или сначала переместите курсор для вставки речи в другое место в запросе:

71 

72```

73> refactor the auth middleware to ▮

74 # hold Space, speak "use the new token validation helper"

75> refactor the auth middleware to use the new token validation helper▮

76```

77 

78По умолчанию отпускание клавиши вставляет транскрибирование и ждет, пока вы нажмете `Enter`. Установите `"autoSubmit": true` в объекте настроек `voice` для автоматической отправки запроса при отпускании клавиши, при условии, что транскрибирование содержит не менее трех слов.

79 

80## Нажатие для записи и отправки

81 

82Режим нажатия переключает запись одним нажатием клавиши: нажмите один раз для начала, говорите, затем нажмите снова для отправки запроса. Нет прогрева, и вам не нужно удерживать клавишу.

83 

84Включите режим нажатия с помощью `/voice tap`. Когда поле ввода запроса пусто, нажмите `Space` для начала записи. Нижний колонтитул показывает живую форму волны во время записи. Нажмите `Space` снова для остановки. Claude Code вставляет транскрибирование и автоматически отправляет запрос, когда транскрибирование содержит не менее трех слов. Более короткие транскрибирования вставляются, но не отправляются, поэтому случайное нажатие не отправляет случайное слово.

85 

86Первое нажатие начинает запись только при пустом поле ввода запроса, поэтому вы все еще можете нормально печатать пробелы при составлении сообщения. Второе нажатие останавливает запись независимо от содержимого ввода. Запись также автоматически останавливается после 15 секунд молчания или двух минут в целом.

87 

88## Изменение языка диктовки

89 

90Голосовой ввод использует тот же [параметр `language`](/ru/settings), который управляет языком ответов Claude. Если этот параметр пуст, диктовка по умолчанию использует английский язык. В расширении VS Code, если `language` пуст, диктовка использует параметр `accessibility.voice.speechLanguage` VS Code перед переходом на английский язык по умолчанию.

91 

92<Accordion title="Поддерживаемые языки диктовки">

93 | Язык | Код |

94 | :------------ | :--- |

95 | Чешский | `cs` |

96 | Датский | `da` |

97 | Нидерландский | `nl` |

98 | Английский | `en` |

99 | Французский | `fr` |

100 | Немецкий | `de` |

101 | Греческий | `el` |

102 | Хинди | `hi` |

103 | Индонезийский | `id` |

104 | Итальянский | `it` |

105 | Японский | `ja` |

106 | Корейский | `ko` |

107 | Норвежский | `no` |

108 | Польский | `pl` |

109 | Португальский | `pt` |

110 | Русский | `ru` |

111 | Испанский | `es` |

112 | Шведский | `sv` |

113 | Турецкий | `tr` |

114 | Украинский | `uk` |

115</Accordion>

116 

117Установите язык в `/config` или непосредственно в настройках. Вы можете использовать либо [код языка BCP 47](https://en.wikipedia.org/wiki/IETF_language_tag), либо название языка:

118 

119```json theme={null}

120{

121 "language": "japanese"

122}

123```

124 

125Если ваш параметр `language` отсутствует в списке поддерживаемых, `/voice` предупредит вас при включении и вернется к английскому языку для диктовки. Текстовые ответы Claude не затрагиваются этим возвратом.

126 

127## Переназначение клавиши диктовки

128 

129Клавиша диктовки привязана к `voice:pushToTalk` в контексте `Chat` и по умолчанию установлена на `Space`. Одна и та же привязка управляет обоими режимами удержания и нажатия. Переназначьте ее в [`~/.claude/keybindings.json`](/ru/keybindings):

130 

131```json theme={null}

132{

133 "bindings": [

134 {

135 "context": "Chat",

136 "bindings": {

137 "meta+k": "voice:pushToTalk",

138 "space": null

139 }

140 }

141 ]

142}

143```

144 

145Установка `"space": null` удаляет привязку по умолчанию. Опустите ее, если вы хотите, чтобы обе клавиши были активны.

146 

147В режиме удержания избегайте привязки простой буквенной клавиши, такой как `v`, так как обнаружение удержания зависит от повтора клавиши, и буква печатается в запрос во время прогрева. Используйте `Space` или комбинацию модификаторов, такую как `meta+k`, для начала записи при первом нажатии клавиши без прогрева. Режим нажатия не имеет прогрева, поэтому работает любая клавиша.

148 

149Некоторые клавиши не доставляются в приложения терминала и вообще не могут быть привязаны. Например, `Caps Lock` показывает ошибку, если вы попытаетесь привязать его. См. [настройка сочетаний клавиш](/ru/keybindings) для полного синтаксиса привязки клавиш и списка зарезервированных сочетаний.

150 

151## Устранение неполадок

152 

153Распространенные проблемы, когда голосовой ввод не активируется или не записывает:

154 

155* **`Voice mode requires a Claude.ai account`** (Голосовой режим требует учетной записи Claude.ai): вы аутентифицированы с помощью ключа API или стороннего поставщика. Запустите `/login` для входа с помощью учетной записи Claude.ai.

156* **`Microphone access is denied`** (Доступ к микрофону запрещен): предоставьте разрешение микрофона вашему терминалу в системных параметрах. На macOS перейдите в System Settings → Privacy & Security → Microphone и включите приложение вашего терминала, затем запустите `/voice` снова. На Windows перейдите в Settings → Privacy & security → Microphone и включите доступ к микрофону для приложений рабочего стола, затем запустите `/voice` снова. Если ваш терминал не указан в параметрах macOS Microphone, см. [Терминал не указан в параметрах macOS Microphone](#terminal-not-listed-in-macos-microphone-settings).

157* **`No audio recording tool found`** (Инструмент записи аудио не найден) на Linux: собственный модуль аудио не может загрузиться и резервный вариант не установлен. Установите SoX с помощью команды, показанной в сообщении об ошибке, например `sudo apt-get install sox`.

158* **Ничего не происходит при удержании `Space` в режиме удержания**: смотрите на поле ввода запроса, пока вы удерживаете. Если пробелы продолжают накапливаться, голосовой ввод, вероятно, отключен; запустите `/voice hold` для включения. Если появляется только один или два пробела, а затем ничего, голосовой ввод включен, но обнаружение удержания не срабатывает. Обнаружение удержания требует, чтобы ваш терминал отправлял события повтора клавиш, поэтому он не может обнаружить удерживаемую клавишу, если повтор клавиш отключен на уровне ОС. Переключитесь на режим нажатия с помощью `/voice tap`, чтобы избежать требования повтора клавиш.

159* **Нажатие `Space` печатает пробел вместо записи в режиме нажатия**: первое нажатие начинает запись только при пустом поле ввода запроса. Сначала очистите ввод или проверьте, что вы находитесь в режиме нажатия, запустив `/voice tap`.

160* **`No audio detected from microphone`** (Аудио не обнаружено с микрофона): запись началась, но захватила молчание. Подтвердите, что правильное устройство ввода установлено по умолчанию в системе и что его уровень ввода не отключен и не близок к нулю. На Windows откройте Settings → System → Sound → Input и выберите ваш микрофон. На macOS откройте System Settings → Sound → Input.

161* **`No speech detected`** (Речь не обнаружена): аудио достигло сервиса транскрибирования, но слова не были распознаны. Говорите ближе к микрофону, уменьшите фоновый шум и подтвердите, что ваш [язык диктовки](#change-the-dictation-language) соответствует языку, на котором вы говорите.

162* **Транскрибирование искажено или на неправильном языке**: диктовка по умолчанию использует английский язык. Если вы диктуете на другом языке, установите его в `/config` сначала. См. [Изменение языка диктовки](#change-the-dictation-language).

163 

164### Терминал не указан в параметрах macOS Microphone

165 

166Если приложение вашего терминала не отображается в System Settings → Privacy & Security → Microphone, нет переключателя, который вы можете включить. Сбросьте состояние разрешения для вашего терминала, чтобы следующий запуск `/voice` вызвал свежий запрос разрешения macOS.

167 

168<Steps>

169 <Step title="Сброс разрешения микрофона для вашего терминала">

170 Запустите `tccutil reset Microphone <bundle-id>`, заменив `<bundle-id>` идентификатором вашего терминала: `com.apple.Terminal` для встроенного Terminal или `com.googlecode.iterm2` для iTerm2. Для других терминалов найдите идентификатор с помощью `osascript -e 'id of app "AppName"'`.

171 

172 <Warning>

173 Вы можете запустить `tccutil reset Microphone` без bundle ID, но это отзывает доступ к микрофону у каждого приложения на вашем Mac, включая приложения, такие как Zoom или Slack. Каждое приложение должно будет повторно запросить доступ при следующем использовании, поэтому не запускайте его во время активного вызова.

174 </Warning>

175 </Step>

176 

177 <Step title="Закройте и перезапустите ваш терминал">

178 macOS не будет повторно запрашивать процесс, который уже запущен. Закройте приложение терминала с помощью Cmd+Q, а не просто закройте его окна, затем откройте его снова.

179 </Step>

180 

181 <Step title="Вызовите свежий запрос">

182 Запустите Claude Code и запустите `/voice`. macOS запрашивает доступ к микрофону; разрешите его.

183 </Step>

184</Steps>

185 

186## См. также

187 

188* [Настройка сочетаний клавиш](/ru/keybindings): переназначьте `voice:pushToTalk` и другие действия клавиатуры CLI

189* [Настройка параметров](/ru/settings): полный справочник для ключей `voice`, `language` и других параметров

190* [Интерактивный режим](/ru/interactive-mode): сочетания клавиш, режимы ввода и управление сеансом

191* [Команды](/ru/commands): справочник для `/voice`, `/config` и всех других команд

vs-code.md +511 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Использование Claude Code в VS Code

6 

7> Установите и настройте расширение Claude Code для VS Code. Получите помощь AI при кодировании с встроенными diff, @-упоминаниями, проверкой плана и сочетаниями клавиш.

8 

9<img src="https://mintcdn.com/claude-code/-YhHHmtSxwr7W8gy/images/vs-code-extension-interface.jpg?fit=max&auto=format&n=-YhHHmtSxwr7W8gy&q=85&s=300652d5678c63905e6b0ea9e50835f8" alt="Редактор VS Code с открытой панелью расширения Claude Code справа, показывающей беседу с Claude" width="2500" height="1155" data-path="images/vs-code-extension-interface.jpg" />

10 

11Расширение VS Code предоставляет собственный графический интерфейс для Claude Code, интегрированный непосредственно в вашу IDE. Это рекомендуемый способ использования Claude Code в VS Code.

12 

13С расширением вы можете просматривать и редактировать планы Claude перед их принятием, автоматически принимать правки по мере их внесения, использовать @-упоминания файлов с определёнными диапазонами строк из вашего выделения, получать доступ к истории беседы и открывать несколько бесед в отдельных вкладках или окнах.

14 

15## Предварительные требования

16 

17Перед установкой убедитесь, что у вас есть:

18 

19* VS Code версии 1.98.0 или выше

20* Учётная запись Anthropic (вы войдёте при первом открытии расширения). Если вы используете поставщика услуг третьей стороны, такого как Amazon Bedrock или Google Vertex AI, см. вместо этого [Использование поставщиков третьей стороны](#use-third-party-providers).

21 

22<Tip>

23 Расширение включает CLI (интерфейс командной строки), к которому вы можете получить доступ из встроенного терминала VS Code для расширенных функций. Подробности см. в разделе [Расширение VS Code и Claude Code CLI](#vs-code-extension-vs-claude-code-cli).

24</Tip>

25 

26## Установка расширения

27 

28Нажмите на ссылку для вашей IDE, чтобы установить напрямую:

29 

30* [Установить для VS Code](vscode:extension/anthropic.claude-code)

31* [Установить для Cursor](cursor:extension/anthropic.claude-code)

32 

33Или в VS Code нажмите `Cmd+Shift+X` (Mac) или `Ctrl+Shift+X` (Windows/Linux), чтобы открыть представление расширений, найдите "Claude Code" и нажмите **Установить**.

34 

35<Note>Если расширение не появляется после установки, перезагрузите VS Code или выполните "Developer: Reload Window" из палитры команд.</Note>

36 

37## Начало работы

38 

39После установки вы можете начать использовать Claude Code через интерфейс VS Code:

40 

41<Steps>

42 <Step title="Откройте панель Claude Code">

43 По всему VS Code значок Spark указывает на Claude Code: <img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/vs-code-spark-icon.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=3ca45e00deadec8c8f4b4f807da94505" alt="Spark icon" style={{display: "inline", height: "0.85em", verticalAlign: "middle"}} width="16" height="16" data-path="images/vs-code-spark-icon.svg" />

44 

45 Самый быстрый способ открыть Claude — нажать на значок Spark в **панели инструментов редактора** (верхний правый угол редактора). Значок появляется только при открытом файле.

46 

47 <img src="https://mintcdn.com/claude-code/mfM-EyoZGnQv8JTc/images/vs-code-editor-icon.png?fit=max&auto=format&n=mfM-EyoZGnQv8JTc&q=85&s=eb4540325d94664c51776dbbfec4cf02" alt="Редактор VS Code, показывающий значок Spark в панели инструментов редактора" width="2796" height="734" data-path="images/vs-code-editor-icon.png" />

48 

49 Другие способы открыть Claude Code:

50 

51 * **Activity Bar**: нажмите на значок Spark на левой боковой панели, чтобы открыть список сеансов. Нажмите на любой сеанс, чтобы открыть его как полную вкладку редактора, или начните новый. Этот значок всегда виден в Activity Bar.

52 * **Command Palette**: `Cmd+Shift+P` (Mac) или `Ctrl+Shift+P` (Windows/Linux), введите "Claude Code" и выберите опцию, например "Open in New Tab"

53 * **Status Bar**: нажмите **✱ Claude Code** в нижнем правом углу окна. Это работает даже при отсутствии открытого файла.

54 

55 Вы можете перетащить панель Claude в любое место VS Code. Подробности см. в разделе [Настройка вашего рабочего процесса](#customize-your-workflow).

56 </Step>

57 

58 <Step title="Войдите в систему">

59 При первом открытии панели появляется экран входа. Нажмите **Sign in** и завершите авторизацию в вашем браузере.

60 

61 Если позже вы увидите **Not logged in · Please run /login**, расширение автоматически повторно откроет экран входа. Если это не произойдёт, перезагрузите окно из палитры команд с помощью **Developer: Reload Window**.

62 

63 Если у вас установлена переменная `ANTHROPIC_API_KEY` в вашей оболочке, но вы всё ещё видите запрос входа, VS Code может не унаследовать переменные окружения вашей оболочки. Запустите VS Code из терминала с помощью `code .`, чтобы он унаследовал переменные окружения, или войдите с помощью вашей учётной записи Claude.

64 

65 После входа появляется контрольный список **Learn Claude Code**. Пройдите каждый пункт, нажав **Show me**, или закройте его с помощью X. Чтобы открыть его позже, снимите флажок **Hide Onboarding** в параметрах VS Code в разделе Extensions → Claude Code.

66 </Step>

67 

68 <Step title="Отправьте запрос">

69 Попросите Claude помочь с вашим кодом или файлами, будь то объяснение того, как что-то работает, отладка проблемы или внесение изменений.

70 

71 <Tip>Claude автоматически видит выделенный вами текст. Нажмите `Option+K` (Mac) / `Alt+K` (Windows/Linux), чтобы также вставить ссылку @-упоминания (например, `@file.ts#5-10`) в ваш запрос.</Tip>

72 

73 Вот пример вопроса о конкретной строке в файле:

74 

75 <img src="https://mintcdn.com/claude-code/FVYz38sRY-VuoGHA/images/vs-code-send-prompt.png?fit=max&auto=format&n=FVYz38sRY-VuoGHA&q=85&s=ede3ed8d8d5f940e01c5de636d009cfd" alt="Редактор VS Code с выделенными строками 2-3 в файле Python и панелью Claude Code, показывающей вопрос об этих строках со ссылкой @-упоминания" width="3288" height="1876" data-path="images/vs-code-send-prompt.png" />

76 </Step>

77 

78 <Step title="Проверьте изменения">

79 Когда Claude хочет отредактировать файл, он показывает сравнение исходного и предложенного изменений рядом, а затем запрашивает разрешение. Вы можете принять, отклонить или сказать Claude, что делать вместо этого. Если вы отредактируете предложенное содержимое непосредственно в представлении diff перед принятием, Claude будет уведомлён, что вы его изменили, поэтому он не предполагает, что файл соответствует его исходному предложению.

80 

81 <img src="https://mintcdn.com/claude-code/FVYz38sRY-VuoGHA/images/vs-code-edits.png?fit=max&auto=format&n=FVYz38sRY-VuoGHA&q=85&s=e005f9b41c541c5c7c59c082f7c4841c" alt="VS Code, показывающий diff предложенных Claude изменений с запросом разрешения, спрашивающим, следует ли внести правку" width="3292" height="1876" data-path="images/vs-code-edits.png" />

82 </Step>

83</Steps>

84 

85Для получения дополнительных идей о том, что вы можете делать с Claude Code, см. [Распространённые рабочие процессы](/ru/common-workflows).

86 

87<Tip>

88 Выполните "Claude Code: Open Walkthrough" из палитры команд для пошагового руководства по основам.

89</Tip>

90 

91## Использование поля ввода запроса

92 

93Поле ввода запроса поддерживает несколько функций:

94 

95* **Режимы разрешений**: нажмите на индикатор режима в нижней части поля ввода запроса, чтобы переключать режимы. В обычном режиме Claude запрашивает разрешение перед каждым действием. В Plan Mode Claude описывает, что он будет делать, и ждёт одобрения перед внесением изменений. VS Code автоматически открывает план как полный документ markdown, где вы можете добавлять встроенные комментарии, чтобы дать обратную связь перед началом работы Claude. В режиме автоматического принятия Claude вносит правки без запроса. Установите значение по умолчанию в параметрах VS Code в разделе `claudeCode.initialPermissionMode`.

96* **Меню команд**: нажмите `/` или введите `/`, чтобы открыть меню команд. Опции включают присоединение файлов, переключение моделей, переключение расширенного мышления, просмотр использования плана (`/usage`) и запуск сеанса [Remote Control](/ru/remote-control) (`/remote-control`). Раздел Customize предоставляет доступ к MCP servers, hooks, памяти, разрешениям и plugins. Элементы со значком терминала открываются во встроенном терминале.

97* **Индикатор контекста**: поле ввода запроса показывает, сколько контекстного окна Claude вы используете. Claude автоматически выполняет компактизацию при необходимости, или вы можете выполнить `/compact` вручную.

98* **Расширенное мышление**: позволяет Claude потратить больше времени на рассуждение о сложных проблемах. Включите его через меню команд (`/`). Рассуждение Claude появляется в беседе как свёрнутые блоки: нажмите на блок, чтобы прочитать его, или нажмите `Ctrl+O`, чтобы развернуть или свернуть каждый блок мышления в сеансе. Подробности см. в разделе [Расширенное мышление](/ru/common-workflows#use-extended-thinking-thinking-mode).

99* **Многострочный ввод**: нажмите `Shift+Enter`, чтобы добавить новую строку без отправки. Это также работает в поле свободного текста "Other" диалогов вопросов.

100 

101### Ссылка на файлы и папки

102 

103Используйте @-упоминания, чтобы дать Claude контекст о конкретных файлах или папках. Когда вы вводите `@` с последующим именем файла или папки, Claude читает это содержимое и может ответить на вопросы о нём или внести в него изменения. Claude Code поддерживает нечёткое совпадение, поэтому вы можете вводить частичные имена, чтобы найти то, что вам нужно:

104 

105```text theme={null}

106> Explain the logic in @auth (fuzzy matches auth.js, AuthService.ts, etc.)

107> What's in @src/components/ (include a trailing slash for folders)

108```

109 

110Для больших PDF-файлов вы можете попросить Claude прочитать определённые страницы вместо всего файла: одну страницу, диапазон, например страницы 1-10, или открытый диапазон, например страница 3 и далее.

111 

112Когда вы выделяете текст в редакторе, Claude может видеть выделенный вами код автоматически. Нижняя часть поля ввода запроса показывает, сколько строк выделено. Нажмите `Option+K` (Mac) / `Alt+K` (Windows/Linux), чтобы вставить @-упоминание с путём файла и номерами строк (например, `@app.ts#5-10`). Нажмите на индикатор выделения, чтобы переключить, может ли Claude видеть выделенный вами текст — значок с косой чертой означает, что выделение скрыто от Claude.

113 

114Вы также можете удерживать `Shift` при перетаскивании файлов в поле ввода запроса, чтобы добавить их как вложения. Нажмите X на любом вложении, чтобы удалить его из контекста.

115 

116### Возобновление прошлых бесед

117 

118Нажмите на кнопку **Session history** в верхней части панели Claude Code, чтобы получить доступ к истории вашей беседы. Вы можете искать по ключевому слову или просматривать по времени (Today, Yesterday, Last 7 days и т. д.). Нажмите на любую беседу, чтобы возобновить её с полной историей сообщений. Новые сеансы получают названия, созданные AI, на основе вашего первого сообщения. Наведите указатель на сеанс, чтобы открыть действия переименования и удаления: переименуйте, чтобы дать ему описательное название, или удалите, чтобы удалить его из списка. Дополнительную информацию о возобновлении сеансов см. в разделе [Распространённые рабочие процессы](/ru/common-workflows#resume-previous-conversations).

119 

120### Возобновление удалённых сеансов из Claude.ai

121 

122Если вы используете [Claude Code в веб-версии](/ru/claude-code-on-the-web), вы можете возобновить эти удалённые сеансы непосредственно в VS Code. Это требует входа с помощью **Claude.ai Subscription**, а не Anthropic Console.

123 

124<Steps>

125 <Step title="Откройте историю сеансов">

126 Нажмите на кнопку **Session history** в верхней части панели Claude Code.

127 </Step>

128 

129 <Step title="Выберите вкладку Remote">

130 Диалог показывает две вкладки: Local и Remote. Нажмите **Remote**, чтобы увидеть сеансы из claude.ai.

131 </Step>

132 

133 <Step title="Выберите сеанс для возобновления">

134 Просмотрите или найдите ваши удалённые сеансы. Нажмите на любой сеанс, чтобы загрузить его и продолжить беседу локально.

135 </Step>

136</Steps>

137 

138<Note>

139 Только веб-сеансы, начатые с репозитория GitHub, появляются на вкладке Remote. Возобновление загружает историю беседы локально; изменения не синхронизируются обратно в claude.ai.

140</Note>

141 

142## Настройка вашего рабочего процесса

143 

144После того как вы начнёте работать, вы можете переместить панель Claude, запустить несколько сеансов или переключиться на режим терминала.

145 

146### Выберите, где находится Claude

147 

148Вы можете перетащить панель Claude в любое место VS Code. Возьмите вкладку или заголовок панели и перетащите её в:

149 

150* **Secondary sidebar**: правая сторона окна. Держит Claude видимым во время кодирования.

151* **Primary sidebar**: левая боковая панель со значками для Explorer, Search и т. д.

152* **Editor area**: открывает Claude как вкладку рядом с вашими файлами. Полезно для побочных задач.

153 

154<Tip>

155 Используйте боковую панель для вашего основного сеанса Claude и открывайте дополнительные вкладки для побочных задач. Claude запомнит ваше предпочтительное местоположение. Значок списка сеансов Activity Bar отделён от панели Claude: список сеансов всегда виден в Activity Bar, а значок панели Claude появляется там только при закреплении на левой боковой панели.

156</Tip>

157 

158### Запуск нескольких бесед

159 

160Используйте **Open in New Tab** или **Open in New Window** из палитры команд, чтобы начать дополнительные беседы. Каждая беседа сохраняет свою собственную историю и контекст, позволяя вам работать над различными задачами параллельно.

161 

162При использовании вкладок небольшая цветная точка на значке spark указывает на статус: синий означает, что запрос разрешения ожидает, оранжевый означает, что Claude закончил, пока вкладка была скрыта.

163 

164### Переключение на режим терминала

165 

166По умолчанию расширение открывает графическую панель чата. Если вы предпочитаете интерфейс в стиле CLI, откройте [параметр Use Terminal](vscode://settings/claudeCode.useTerminal) и установите флажок.

167 

168Вы также можете открыть параметры VS Code (`Cmd+,` на Mac или `Ctrl+,` на Windows/Linux), перейти в Extensions → Claude Code и установить флажок **Use Terminal**.

169 

170## Управление plugins

171 

172Расширение VS Code включает графический интерфейс для установки и управления [plugins](/ru/plugins). Введите `/plugins` в поле ввода запроса, чтобы открыть интерфейс **Manage plugins**.

173 

174### Установка plugins

175 

176Диалог plugin показывает две вкладки: **Plugins** и **Marketplaces**.

177 

178На вкладке Plugins:

179 

180* **Установленные plugins** появляются в верхней части с переключателями для их включения или отключения

181* **Доступные plugins** из ваших настроенных marketplaces появляются ниже

182* Поиск для фильтрации plugins по имени или описанию

183* Нажмите **Install** на любом доступном plugin

184 

185Когда вы устанавливаете plugin, выберите область установки:

186 

187* **Install for you**: доступно во всех ваших проектах (область пользователя)

188* **Install for this project**: общее использование с сотрудниками проекта (область проекта)

189* **Install locally**: только для вас, только в этом репозитории (локальная область)

190 

191### Управление marketplaces

192 

193Переключитесь на вкладку **Marketplaces**, чтобы добавить или удалить источники plugins:

194 

195* Введите репозиторий GitHub, URL или локальный путь, чтобы добавить новый marketplace

196* Нажмите значок обновления, чтобы обновить список plugins marketplace

197* Нажмите значок корзины, чтобы удалить marketplace

198 

199После внесения изменений баннер предложит вам перезагрузить Claude Code, чтобы применить обновления.

200 

201<Note>

202 Управление plugins в VS Code использует те же команды CLI под капотом. Plugins и marketplaces, которые вы настраиваете в расширении, также доступны в CLI, и наоборот.

203</Note>

204 

205Дополнительную информацию о системе plugins см. в разделах [Plugins](/ru/plugins) и [Plugin marketplaces](/ru/plugin-marketplaces).

206 

207## Автоматизация задач браузера с помощью Chrome

208 

209Подключите Claude к вашему браузеру Chrome, чтобы тестировать веб-приложения, отлаживать с помощью логов консоли и автоматизировать рабочие процессы браузера, не выходя из VS Code. Это требует расширения [Claude in Chrome](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) версии 1.0.36 или выше.

210 

211Введите `@browser` в поле ввода запроса, а затем то, что вы хотите, чтобы Claude сделал:

212 

213```text theme={null}

214@browser go to localhost:3000 and check the console for errors

215```

216 

217Вы также можете открыть меню вложений, чтобы выбрать конкретные инструменты браузера, такие как открытие новой вкладки или чтение содержимого страницы.

218 

219Claude открывает новые вкладки для задач браузера и делится состоянием входа вашего браузера, поэтому он может получить доступ к любому сайту, на который вы уже вошли.

220 

221Инструкции по настройке, полный список возможностей и устранение неполадок см. в разделе [Использование Claude Code с Chrome](/ru/chrome).

222 

223## Команды и сочетания клавиш VS Code

224 

225Откройте палитру команд (`Cmd+Shift+P` на Mac или `Ctrl+Shift+P` на Windows/Linux) и введите "Claude Code", чтобы увидеть все доступные команды VS Code для расширения Claude Code.

226 

227Некоторые сочетания клавиш зависят от того, какая панель "сфокусирована" (получает ввод с клавиатуры). Когда ваш курсор находится в файле кода, редактор сфокусирован. Когда ваш курсор находится в поле ввода запроса Claude, Claude сфокусирован. Используйте `Cmd+Esc` / `Ctrl+Esc`, чтобы переключаться между ними.

228 

229<Note>

230 Это команды VS Code для управления расширением. Не все встроенные команды Claude Code доступны в расширении. Подробности см. в разделе [Расширение VS Code и Claude Code CLI](#vs-code-extension-vs-claude-code-cli).

231</Note>

232 

233| Команда | Сочетание клавиш | Описание |

234| -------------------------- | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |

235| Focus Input | `Cmd+Esc` (Mac) / `Ctrl+Esc` (Windows/Linux) | Переключение фокуса между редактором и Claude |

236| Open in Side Bar | - | Открыть Claude на левой боковой панели |

237| Open in Terminal | - | Открыть Claude в режиме терминала |

238| Open in New Tab | `Cmd+Shift+Esc` (Mac) / `Ctrl+Shift+Esc` (Windows/Linux) | Открыть новую беседу как вкладку редактора |

239| Open in New Window | - | Открыть новую беседу в отдельном окне |

240| New Conversation | `Cmd+N` (Mac) / `Ctrl+N` (Windows/Linux) | Начать новую беседу. Требует фокуса Claude и `enableNewConversationShortcut` установленного на `true` |

241| Insert @-Mention Reference | `Option+K` (Mac) / `Alt+K` (Windows/Linux) | Вставить ссылку на текущий файл и выделение (требует фокуса редактора) |

242| Show Logs | - | Просмотр логов отладки расширения |

243| Logout | - | Выход из учётной записи Anthropic |

244 

245### Запуск вкладки VS Code из других инструментов

246 

247Расширение регистрирует обработчик URI в `vscode://anthropic.claude-code/open`. Используйте его для открытия новой вкладки Claude Code из вашего собственного инструментария: псевдонима оболочки, букмарклета браузера или любого скрипта, который может открыть URL. Если VS Code ещё не запущен, открытие URL сначала запускает его. Если VS Code уже запущен, URL открывается в окне, которое в данный момент сфокусировано.

248 

249Вызовите обработчик с помощью открывателя URL вашей операционной системы.

250 

251<Tabs>

252 <Tab title="macOS">

253 ```bash theme={null}

254 open "vscode://anthropic.claude-code/open"

255 ```

256 </Tab>

257 

258 <Tab title="Linux">

259 ```bash theme={null}

260 xdg-open "vscode://anthropic.claude-code/open"

261 ```

262 </Tab>

263 

264 <Tab title="Windows">

265 В PowerShell:

266 

267 ```powershell theme={null}

268 Start-Process "vscode://anthropic.claude-code/open"

269 ```

270 

271 В `cmd.exe`, `start` рассматривает свой первый аргумент в кавычках как заголовок окна, поэтому передайте пустой заголовок перед URL:

272 

273 ```cmd theme={null}

274 start "" "vscode://anthropic.claude-code/open"

275 ```

276 </Tab>

277</Tabs>

278 

279Обработчик принимает два необязательных параметра запроса:

280 

281| Параметр | Описание |

282| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

283| `prompt` | Текст для предварительного заполнения в поле ввода запроса. Должен быть закодирован в URL. Запрос предварительно заполняется, но не отправляется автоматически. |

284| `session` | ID сеанса для возобновления вместо начала новой беседы. Сеанс должен принадлежать рабочему пространству, открытому в VS Code. Если сеанс не найден, вместо этого начинается свежая беседа. Если сеанс уже открыт на вкладке, эта вкладка получает фокус. Чтобы программно захватить ID сеанса, см. [Continue conversations](/ru/headless#continue-conversations). |

285 

286Например, чтобы открыть вкладку с предварительно заполненным "review my changes":

287 

288```text theme={null}

289vscode://anthropic.claude-code/open?prompt=review%20my%20changes

290```

291 

292Чтобы запустить сеанс терминала вместо вкладки VS Code, используйте обработчик CLI `claude-cli://`. См. [Launch sessions from links](/ru/deep-links).

293 

294## Настройка параметров

295 

296Расширение имеет два типа параметров:

297 

298* **Параметры расширения** в VS Code: управляют поведением расширения в VS Code. Откройте с помощью `Cmd+,` (Mac) или `Ctrl+,` (Windows/Linux), затем перейдите в Extensions → Claude Code. Вы также можете ввести `/` и выбрать **General Config**, чтобы открыть параметры.

299* **Параметры Claude Code** в `~/.claude/settings.json`: общие для расширения и CLI. Используйте для разрешённых команд, переменных окружения, hooks и MCP servers. Подробности см. в разделе [Settings](/ru/settings).

300 

301<Tip>

302 Добавьте `"$schema": "https://json.schemastore.org/claude-code-settings.json"` в ваш `settings.json`, чтобы получить автодополнение и встроенную проверку для всех доступных параметров непосредственно в VS Code.

303</Tip>

304 

305### Параметры расширения

306 

307| Параметр | По умолчанию | Описание |

308| --------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

309| `useTerminal` | `false` | Запустить Claude в режиме терминала вместо графической панели |

310| `initialPermissionMode` | `default` | Управляет запросами одобрения для новых бесед: `default`, `plan`, `acceptEdits` или `bypassPermissions`. См. [режимы разрешений](/ru/permission-modes). |

311| `preferredLocation` | `panel` | Где открывается Claude: `sidebar` (справа) или `panel` (новая вкладка) |

312| `autosave` | `true` | Автоматически сохранять файлы перед тем, как Claude их читает или записывает |

313| `useCtrlEnterToSend` | `false` | Использовать Ctrl/Cmd+Enter вместо Enter для отправки запросов |

314| `enableNewConversationShortcut` | `false` | Включить Cmd/Ctrl+N для начала новой беседы |

315| `hideOnboarding` | `false` | Скрыть контрольный список адаптации (значок выпускной шапки) |

316| `respectGitIgnore` | `true` | Исключить шаблоны .gitignore из поиска файлов |

317| `usePythonEnvironment` | `true` | Активировать окружение Python рабочего пространства при запуске Claude. Требует расширение Python. |

318| `environmentVariables` | `[]` | Установить переменные окружения для процесса Claude. Используйте параметры Claude Code вместо этого для общей конфигурации. |

319| `disableLoginPrompt` | `false` | Пропустить запросы аутентификации (для настроек поставщика третьей стороны) |

320| `allowDangerouslySkipPermissions` | `false` | Добавляет [Auto mode](/ru/permission-modes#eliminate-prompts-with-auto-mode) и Bypass permissions к селектору режимов. Auto mode имеет [требования plan, admin, model и provider](/ru/permission-modes#eliminate-prompts-with-auto-mode), поэтому он может остаться недоступным даже с включённым этим переключателем. Используйте Bypass permissions только в песочницах без доступа в интернет. |

321| `claudeProcessWrapper` | - | Путь исполняемого файла, используемый для запуска процесса Claude |

322 

323## Расширение VS Code и Claude Code CLI

324 

325Claude Code доступен как расширение VS Code (графическая панель), так и CLI (интерфейс командной строки в терминале). Некоторые функции доступны только в CLI. Если вам нужна функция, доступная только в CLI, выполните `claude` во встроенном терминале VS Code.

326 

327| Функция | CLI | Расширение VS Code |

328| ------------------------- | ------------------- | --------------------------------------------------------------------------------------------------------- |

329| Команды и skills | [Все](/ru/commands) | Подмножество (введите `/`, чтобы увидеть доступные) |

330| Конфигурация MCP server | Да | Частично (добавьте серверы через CLI; управляйте существующими серверами с помощью `/mcp` на панели чата) |

331| Checkpoints | Да | Да |

332| Сочетание клавиш `!` bash | Да | Нет |

333| Автодополнение вкладок | Да | Нет |

334 

335### Перемотка с помощью checkpoints

336 

337Расширение VS Code поддерживает checkpoints, которые отслеживают правки файлов Claude и позволяют вам вернуться в предыдущее состояние. Наведите указатель на любое сообщение, чтобы открыть кнопку перемотки, затем выберите один из трёх вариантов:

338 

339* **Fork conversation from here**: начать новую ветку беседы из этого сообщения, сохраняя все изменения кода

340* **Rewind code to here**: отменить изменения файлов до этой точки в беседе, сохраняя полную историю беседы

341* **Fork conversation and rewind code**: начать новую ветку беседы и отменить изменения файлов до этой точки

342 

343Полные подробности о том, как работают checkpoints и их ограничения, см. в разделе [Checkpointing](/ru/checkpointing).

344 

345### Запуск CLI в VS Code

346 

347Чтобы использовать CLI, оставаясь в VS Code, откройте встроенный терминал (`` Ctrl+` `` на Windows/Linux или `` Cmd+` `` на Mac) и выполните `claude`. CLI автоматически интегрируется с вашей IDE для функций, таких как просмотр diff и обмен диагностикой.

348 

349Если вы используете внешний терминал, выполните `/ide` внутри Claude Code, чтобы подключить его к VS Code.

350 

351### Переключение между расширением и CLI

352 

353Расширение и CLI совместно используют одну и ту же историю беседы. Чтобы продолжить беседу расширения в CLI, выполните `claude --resume` в терминале. Это открывает интерактивный выбор, где вы можете искать и выбирать вашу беседу.

354 

355### Включение вывода терминала в запросы

356 

357Ссылайтесь на вывод терминала в ваших запросах, используя `@terminal:name`, где `name` — это название терминала. Это позволяет Claude видеть вывод команды, сообщения об ошибках или логи без копирования и вставки.

358 

359### Мониторинг фоновых процессов

360 

361Когда Claude запускает долгоживущие команды, расширение показывает прогресс в строке состояния. Однако видимость фоновых задач ограничена по сравнению с CLI. Для лучшей видимости попросите Claude вывести команду, чтобы вы могли запустить её во встроенном терминале VS Code.

362 

363### Подключение к внешним инструментам с помощью MCP

364 

365MCP (Model Context Protocol) servers дают Claude доступ к внешним инструментам, базам данных и API.

366 

367Чтобы добавить MCP server, откройте встроенный терминал (`` Ctrl+` `` или `` Cmd+` ``) и выполните `claude mcp add`. Приведённый ниже пример добавляет удалённый MCP server GitHub, который выполняет аутентификацию с помощью [личного токена доступа](https://github.com/settings/personal-access-tokens), передаваемого в качестве заголовка:

368 

369```bash theme={null}

370claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \

371 --header "Authorization: Bearer YOUR_GITHUB_PAT"

372```

373 

374После настройки попросите Claude использовать инструменты (например, "Review PR #456").

375 

376Чтобы управлять MCP servers, не выходя из VS Code, введите `/mcp` на панели чата. Диалог управления MCP позволяет вам включать или отключать серверы, переподключаться к серверу и управлять аутентификацией OAuth. Доступные серверы см. в [документации MCP](/ru/mcp).

377 

378## Работа с git

379 

380Claude Code интегрируется с git, чтобы помочь с рабочими процессами контроля версий непосредственно в VS Code. Попросите Claude совершить изменения, создать pull requests или работать между ветками.

381 

382### Создание commits и pull requests

383 

384Claude может подготавливать изменения, писать сообщения commit и создавать pull requests на основе вашей работы:

385 

386```text theme={null}

387> commit my changes with a descriptive message

388> create a pr for this feature

389> summarize the changes I've made to the auth module

390```

391 

392При создании pull requests Claude генерирует описания на основе фактических изменений кода и может добавлять контекст о тестировании или решениях по реализации.

393 

394### Использование git worktrees для параллельных задач

395 

396Используйте флаг `--worktree` (`-w`) для запуска Claude в изолированном worktree с собственными файлами и веткой:

397 

398```bash theme={null}

399claude --worktree feature-auth

400```

401 

402Каждый worktree сохраняет независимое состояние файлов при совместном использовании истории git. Это предотвращает помехи между экземплярами Claude при работе над различными задачами. Дополнительные подробности см. в разделе [Запуск параллельных сеансов Claude Code с помощью Git worktrees](/ru/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees).

403 

404## Использование поставщиков третьей стороны

405 

406По умолчанию Claude Code подключается непосредственно к API Anthropic. Если ваша организация использует Amazon Bedrock, Google Vertex AI или Microsoft Foundry для доступа к Claude, настройте расширение на использование вашего поставщика вместо этого:

407 

408<Steps>

409 <Step title="Отключите запрос входа">

410 Откройте [параметр Disable Login Prompt](vscode://settings/claudeCode.disableLoginPrompt) и установите флажок.

411 

412 Вы также можете открыть параметры VS Code (`Cmd+,` на Mac или `Ctrl+,` на Windows/Linux), найти "Claude Code login" и установить флажок **Disable Login Prompt**.

413 </Step>

414 

415 <Step title="Настройте вашего поставщика">

416 Следуйте руководству по настройке для вашего поставщика:

417 

418 * [Claude Code на Amazon Bedrock](/ru/amazon-bedrock)

419 * [Claude Code на Google Vertex AI](/ru/google-vertex-ai)

420 * [Claude Code на Microsoft Foundry](/ru/microsoft-foundry)

421 

422 Эти руководства охватывают настройку вашего поставщика в `~/.claude/settings.json`, что обеспечивает совместное использование ваших параметров между расширением VS Code и CLI.

423 </Step>

424</Steps>

425 

426## Безопасность и конфиденциальность

427 

428Ваш код остаётся приватным. Claude Code обрабатывает ваш код для предоставления помощи, но не использует его для обучения моделей. Подробности об обработке данных и о том, как отказаться от логирования, см. в разделе [Data and privacy](/ru/data-usage).

429 

430С включёнными разрешениями на автоматическое редактирование Claude Code может изменять файлы конфигурации VS Code (такие как `settings.json` или `tasks.json`), которые VS Code может выполнять автоматически. Чтобы снизить риск при работе с ненадёжным кодом:

431 

432* Включите [VS Code Restricted Mode](https://code.visualstudio.com/docs/editor/workspace-trust#_restricted-mode) для ненадёжных рабочих пространств

433* Используйте режим ручного одобрения вместо автоматического принятия для правок

434* Тщательно проверяйте изменения перед их принятием

435 

436### Встроенный IDE MCP server

437 

438Когда расширение активно, оно запускает локальный MCP server, к которому CLI подключается автоматически. Это то, как CLI открывает diff в собственном средстве просмотра diff VS Code, читает ваше текущее выделение для `@`-упоминаний и — когда вы работаете в записной книжке Jupyter — просит VS Code выполнить ячейки.

439 

440Сервер называется `ide` и скрыт от `/mcp`, потому что нечего настраивать. Однако если ваша организация использует hook `PreToolUse` для разрешения MCP tools, вам нужно знать, что он существует.

441 

442**Транспорт и аутентификация.** Сервер привязывается к `127.0.0.1` на случайном высоком порту и недоступен с других машин. Каждая активация расширения генерирует свежий случайный токен аутентификации, который CLI должен предоставить для подключения. Токен записывается в файл блокировки под `~/.claude/ide/` с разрешениями `0600` в каталоге `0700`, поэтому только пользователь, запускающий VS Code, может его прочитать.

443 

444**Инструменты, предоставляемые модели.** Сервер размещает дюжину инструментов, но только два видны модели. Остальные — это внутренний RPC, который CLI использует для своего собственного UI — открытие diff, чтение выделений, сохранение файлов — и фильтруются перед тем, как список инструментов достигает Claude.

445 

446| Имя инструмента (как видно hooks) | Что он делает | Записывает? |

447| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------- |

448| `mcp__ide__getDiagnostics` | Возвращает диагностику языкового сервера — ошибки и предупреждения на панели Problems VS Code. Опционально ограничено одним файлом. | Нет |

449| `mcp__ide__executeCode` | Запускает код Python в ядре активной записной книжки Jupyter. См. поток подтверждения ниже. | Да |

450 

451**Выполнение Jupyter всегда спрашивает сначала.** `mcp__ide__executeCode` не может запустить ничего молча. При каждом вызове код вставляется как новая ячейка в конце активной записной книжки, VS Code прокручивает её в поле зрения, и собственный Quick Pick спрашивает вас **Execute** или **Cancel**. Отмена — или закрытие выбора с помощью `Esc` — возвращает ошибку Claude и ничего не запускается. Инструмент также отказывает, когда нет активной записной книжки, когда расширение Jupyter (`ms-toolsai.jupyter`) не установлено, или когда ядро не является Python.

452 

453<Note>

454 Подтверждение Quick Pick отделено от hooks `PreToolUse`. Запись в список разрешений для `mcp__ide__executeCode` позволяет Claude *предложить* запуск ячейки; Quick Pick внутри VS Code — это то, что позволяет ему *фактически* запустить.

455</Note>

456 

457<a id="troubleshooting" />

458 

459## Исправление распространённых проблем

460 

461### Расширение не устанавливается

462 

463* Убедитесь, что у вас есть совместимая версия VS Code (1.98.0 или выше)

464* Проверьте, что VS Code имеет разрешение на установку расширений

465* Попробуйте установить непосредственно из [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code)

466 

467### Значок Spark не виден

468 

469Значок Spark появляется в **панели инструментов редактора** (верхний правый угол редактора) при открытом файле. Если вы его не видите:

470 

4711. **Откройте файл**: Значок требует открытого файла. Просто открытой папки недостаточно.

4722. **Проверьте версию VS Code**: Требуется 1.98.0 или выше (Help → About)

4733. **Перезагрузите VS Code**: Выполните "Developer: Reload Window" из палитры команд

4744. **Отключите конфликтующие расширения**: Временно отключите другие AI расширения (Cline, Continue и т. д.)

4755. **Проверьте доверие рабочего пространства**: Расширение не работает в Restricted Mode

476 

477Альтернативно, нажмите "✱ Claude Code" в **Status Bar** (нижний правый угол). Это работает даже без открытого файла. Вы также можете использовать **Command Palette** (`Cmd+Shift+P` / `Ctrl+Shift+P`) и ввести "Claude Code".

478 

479### Claude Code никогда не отвечает

480 

481Если Claude Code не отвечает на ваши запросы:

482 

4831. **Проверьте подключение к интернету**: Убедитесь, что у вас есть стабильное подключение к интернету

4842. **Начните новую беседу**: Попробуйте начать свежую беседу, чтобы увидеть, сохраняется ли проблема

4853. **Попробуйте CLI**: Выполните `claude` из терминала, чтобы увидеть, получите ли вы более подробные сообщения об ошибках

486 

487Если проблемы сохраняются, [создайте issue на GitHub](https://github.com/anthropics/claude-code/issues) с подробностями об ошибке.

488 

489## Удаление расширения

490 

491Чтобы удалить расширение Claude Code:

492 

4931. Откройте представление расширений (`Cmd+Shift+X` на Mac или `Ctrl+Shift+X` на Windows/Linux)

4942. Найдите "Claude Code"

4953. Нажмите **Uninstall**

496 

497Чтобы также удалить данные расширения и сбросить все параметры:

498 

499```bash theme={null}

500rm -rf ~/.vscode/globalStorage/anthropic.claude-code

501```

502 

503Для дополнительной помощи см. [руководство по устранению неполадок](/ru/troubleshooting).

504 

505## Следующие шаги

506 

507Теперь, когда у вас есть Claude Code, установленный в VS Code:

508 

509* [Изучите распространённые рабочие процессы](/ru/common-workflows), чтобы максимально использовать Claude Code

510* [Настройте MCP servers](/ru/mcp), чтобы расширить возможности Claude с помощью внешних инструментов. Добавьте серверы, используя CLI, затем управляйте ими с помощью `/mcp` на панели чата.

511* [Настройте параметры Claude Code](/ru/settings), чтобы настроить разрешённые команды, hooks и многое другое. Эти параметры общие для расширения и CLI.

web-quickstart.md +220 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Начало работы с Claude Code в веб-версии

6 

7> Запустите Claude Code в облаке из браузера или мобильного приложения. Подключите репозиторий GitHub, отправьте задачу и просмотрите PR без локальной настройки.

8 

9<Note>

10 Claude Code в веб-версии находится в исследовательском предпросмотре для пользователей Pro, Max и Team, а также для пользователей Enterprise с премиум-местами или местами Chat + Claude Code.

11</Note>

12 

13Claude Code в веб-версии работает на облачной инфраструктуре, управляемой Anthropic, вместо вашей машины. Отправляйте задачи с [claude.ai/code](https://claude.ai/code) из браузера или мобильного приложения Claude.

14 

15Вам потребуется репозиторий GitHub для [начала работы](#connect-github-and-create-an-environment). Claude клонирует его в изолированную виртуальную машину, вносит изменения и отправляет ветку для вашего просмотра. Сеансы сохраняются на всех устройствах, поэтому задача, которую вы начали на ноутбуке, готова к просмотру с телефона позже.

16 

17Claude Code в веб-версии хорошо подходит для:

18 

19* **Параллельные задачи**: запускайте несколько независимых задач одновременно, каждую в своем сеансе и ветке, без управления несколькими worktrees

20* **Репозитории, которые у вас нет локально**: Claude клонирует репозиторий заново в каждом сеансе, поэтому вам не нужно его проверять

21* **Задачи, которые не требуют частого управления**: отправьте четко определенную задачу, займитесь чем-то другим и просмотрите результат, когда Claude закончит

22* **Вопросы о коде и исследование**: поймите кодовую базу или проследите, как реализована функция, без локального клона

23 

24Для работы, которая требует вашей локальной конфигурации, инструментов или окружения, запуск Claude Code локально или использование [Remote Control](/ru/remote-control) — лучший вариант.

25 

26## Как работают сеансы

27 

28Когда вы отправляете задачу:

29 

301. **Клонирование и подготовка**: ваш репозиторий клонируется на управляемую Anthropic ВМ, и ваш [скрипт настройки](/ru/claude-code-on-the-web#setup-scripts) запускается, если он настроен.

312. **Настройка сети**: доступ в интернет устанавливается на основе [уровня доступа](/ru/claude-code-on-the-web#access-levels) вашего окружения.

323. **Работа**: Claude анализирует код, вносит изменения, запускает тесты и проверяет свою работу. Вы можете наблюдать и управлять на протяжении всего процесса или отойти и вернуться, когда это будет сделано.

334. **Отправка ветки**: когда Claude достигает точки остановки, он отправляет свою ветку на GitHub. Вы просматриваете diff, оставляете встроенные комментарии, создаете PR или отправляете еще одно сообщение, чтобы продолжить.

34 

35Сеанс не закрывается при отправке ветки. Создание PR и дальнейшие правки происходят в одном и том же разговоре.

36 

37## Сравнение способов запуска Claude Code

38 

39Claude Code ведет себя одинаково везде. Что меняется, так это место выполнения кода и доступность вашей локальной конфигурации. Приложение Desktop предлагает как локальные, так и облачные сеансы, поэтому ответы ниже зависят от того, что вы выберете:

40 

41| | В веб-версии | Remote Control | Terminal CLI | Приложение Desktop |

42| :-------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------- | :---------------- | :----------------------------------- |

43| **Код выполняется на** | Облачной ВМ Anthropic | Вашей машине | Вашей машине | Вашей машине или облачной ВМ |

44| **Вы общаетесь с** | claude.ai или мобильного приложения | claude.ai или мобильного приложения | Вашего терминала | Интерфейса Desktop |

45| **Использует вашу локальную конфигурацию** | Нет, только репозиторий | Да | Да | Да для локального, нет для облачного |

46| **Требует GitHub** | Да, или [отправьте локальный репозиторий](/ru/claude-code-on-the-web#send-local-repositories-without-github) через `--remote` | Нет | Нет | Только для облачных сеансов |

47| **Продолжает работать при отключении** | Да | Пока терминал остается открытым | Нет | Зависит от типа сеанса |

48| **[Режимы разрешений](/ru/permission-modes)** | Автоматическое принятие правок, Plan | Спросить, Автоматическое принятие правок, Plan | Все режимы | Зависит от типа сеанса |

49| **Доступ в сеть** | Настраивается для каждого окружения | Сеть вашей машины | Сеть вашей машины | Зависит от типа сеанса |

50 

51Смотрите документацию [быстрого старта терминала](/ru/quickstart), [приложения Desktop](/ru/desktop) или [Remote Control](/ru/remote-control) для их настройки.

52 

53## Подключение GitHub и создание окружения

54 

55Настройка — это одноразовый процесс. Если вы уже используете GitHub CLI, вы можете [сделать это из терминала](#connect-from-your-terminal) вместо браузера.

56 

57<Steps>

58 <Step title="Посетите claude.ai/code">

59 Перейдите на [claude.ai/code](https://claude.ai/code) и войдите со своей учетной записью Anthropic.

60 </Step>

61 

62 <Step title="Установите приложение Claude GitHub">

63 После входа claude.ai/code предложит вам подключить GitHub. Следуйте подсказке, чтобы установить приложение Claude GitHub и предоставить ему доступ к вашим репозиториям. Облачные сеансы работают с существующими репозиториями GitHub, поэтому для запуска нового проекта сначала [создайте пустой репозиторий на GitHub](https://github.com/new).

64 </Step>

65 

66 <Step title="Создайте ваше окружение">

67 После подключения GitHub вам будет предложено создать облачное окружение. Окружение контролирует, какой доступ в сеть имеет Claude во время сеансов и что запускается при создании нового сеанса. Смотрите [Установленные инструменты](/ru/claude-code-on-the-web#installed-tools) для того, что доступно без какой-либо конфигурации.

68 

69 Форма содержит эти поля:

70 

71 * **Name**: метка отображения. Полезно, когда у вас есть несколько окружений для разных проектов или уровней доступа.

72 * **Network access**: контролирует, что сеанс может достичь в интернете. По умолчанию `Trusted` позволяет подключения к [общим реестрам пакетов](/ru/claude-code-on-the-web#default-allowed-domains) как npm, PyPI и RubyGems, блокируя общий доступ в интернет.

73 * **Environment variables**: необязательные переменные, доступные в каждом сеансе, в формате `.env`. Не оборачивайте значения в кавычки, так как кавычки сохраняются как часть значения. Они видны всем, кто может редактировать это окружение.

74 * **Setup script**: необязательный Bash скрипт, который запускается перед запуском Claude Code. Используйте его для установки системных инструментов, которые облачная ВМ не включает, например `apt install -y gh`. Результат [кэшируется](/ru/claude-code-on-the-web#environment-caching), поэтому скрипт не переустанавливается в каждом сеансе. Смотрите [Скрипты настройки](/ru/claude-code-on-the-web#setup-scripts) для примеров и советов по отладке.

75 

76 Для первого проекта оставьте значения по умолчанию и нажмите **Create environment**. Вы можете [отредактировать его позже или создать дополнительные окружения](/ru/claude-code-on-the-web#configure-your-environment) для разных проектов.

77 </Step>

78</Steps>

79 

80### Подключение из терминала

81 

82Если вы уже используете GitHub CLI (`gh`), вы можете настроить Claude Code в веб-версии без открытия браузера. Это требует [Claude Code CLI](/ru/quickstart). `/web-setup` читает ваш локальный токен `gh`, связывает его с вашей учетной записью Claude и создает облачное окружение по умолчанию, если у вас его нет.

83 

84<Note>

85 Организации с включенным [Zero Data Retention](/ru/zero-data-retention) не могут использовать `/web-setup` или другие функции облачных сеансов. Если GitHub CLI не установлен или не аутентифицирован, `/web-setup` открывает поток встроенной настройки браузера.

86</Note>

87 

88<Steps>

89 <Step title="Аутентификация с помощью GitHub CLI">

90 В вашей оболочке аутентифицируйте GitHub CLI, если вы еще этого не сделали:

91 

92 ```bash theme={null}

93 gh auth login

94 ```

95 </Step>

96 

97 <Step title="Войдите в Claude">

98 В Claude Code CLI запустите `/login` для входа со своей учетной записью claude.ai. Пропустите этот шаг, если вы уже вошли.

99 </Step>

100 

101 <Step title="Запустите /web-setup">

102 В Claude Code CLI запустите:

103 

104 ```text theme={null}

105 /web-setup

106 ```

107 

108 Это синхронизирует ваш токен `gh` с вашей учетной записью Claude. Если у вас еще нет облачного окружения, `/web-setup` создает его с доступом в сеть Trusted и без скрипта настройки. Вы можете [отредактировать окружение или добавить переменные](/ru/claude-code-on-the-web#configure-your-environment) позже. После завершения `/web-setup` вы можете запускать облачные сеансы из терминала с помощью [`--remote`](/ru/claude-code-on-the-web#from-terminal-to-web) или настроить повторяющиеся задачи с помощью [`/schedule`](/ru/routines).

109 </Step>

110</Steps>

111 

112## Начните задачу

113 

114С подключенным GitHub и созданным окружением вы готовы отправлять задачи.

115 

116<Steps>

117 <Step title="Выберите репозиторий и ветку">

118 На [claude.ai/code](https://claude.ai/code) или на вкладке Code в мобильном приложении Claude нажмите селектор репозитория под полем ввода и выберите репозиторий для работы Claude. Каждый репозиторий показывает селектор ветки. Измените его, чтобы запустить Claude с ветки функции вместо ветки по умолчанию. Вы можете добавить несколько репозиториев для работы с ними в одном сеансе.

119 </Step>

120 

121 <Step title="Выберите режим разрешений">

122 Раскрывающееся меню режима рядом с вводом по умолчанию установлено на **Auto accept edits**, где Claude вносит изменения и отправляет ветку без остановки для одобрения. Переключитесь на **Plan mode**, если вы хотите, чтобы Claude предложил подход и дождался вашего одобрения перед редактированием файлов. Облачные сеансы не предлагают разрешения Ask, режим Auto или разрешения Bypass. Смотрите [Режимы разрешений](/ru/permission-modes) для полного списка.

123 </Step>

124 

125 <Step title="Опишите задачу и отправьте">

126 Введите описание того, что вы хотите, и нажмите Enter. Будьте конкретны:

127 

128 * Назовите файл или функцию: "Add a README with setup instructions" или "Fix the failing auth test in `tests/test_auth.py`" лучше, чем "fix tests"

129 * Вставьте вывод ошибки, если у вас он есть

130 * Опишите ожидаемое поведение, а не просто симптом

131 

132 Claude клонирует репозитории, запускает ваш скрипт настройки, если он настроен, и начинает работать. Каждая задача получает свой сеанс и свою ветку, поэтому вам не нужно ждать, пока одна закончится, прежде чем начать другую.

133 </Step>

134</Steps>

135 

136## Предварительное заполнение сеансов

137 

138Вы можете предварительно заполнить подсказку, репозитории и окружение для нового сеанса, добавив параметры запроса к URL [claude.ai/code](https://claude.ai/code). Используйте это для создания интеграций, таких как кнопка в вашем трекере проблем, которая открывает Claude Code с описанием проблемы в качестве подсказки.

139 

140| Параметр | Описание |

141| :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

142| `prompt` | Текст подсказки для предварительного заполнения в поле ввода. Также принимается псевдоним `q`. |

143| `prompt_url` | URL для получения текста подсказки, для подсказок, которые слишком длинные для встраивания в строку запроса. URL должен разрешать кросс-источниковые запросы. Игнорируется, когда также установлен `prompt`. |

144| `repositories` | Разделенный запятыми список слагов `owner/repo` для предварительного выбора. Также принимается псевдоним `repo`. |

145| `environment` | Имя или ID [окружения](#connect-github-and-create-an-environment) для предварительного выбора. |

146 

147URL-кодируйте каждое значение. Пример ниже открывает форму с уже выбранной подсказкой и репозиторием:

148 

149```text theme={null}

150https://claude.ai/code?prompt=Fix%20the%20login%20bug&repositories=acme/webapp

151```

152 

153## Просмотр и итерация

154 

155Когда Claude закончит, просмотрите изменения, оставьте отзыв на конкретных строках и продолжайте, пока diff не будет выглядеть правильно.

156 

157<Steps>

158 <Step title="Откройте представление diff">

159 Индикатор diff показывает добавленные и удаленные строки во всем сеансе, например `+42 -18`. Выберите его, чтобы открыть представление diff с списком файлов слева и изменениями справа.

160 </Step>

161 

162 <Step title="Оставляйте встроенные комментарии">

163 Выберите любую строку в diff, введите свой отзыв и нажмите Enter. Комментарии накапливаются до тех пор, пока вы не отправите следующее сообщение, затем они объединяются с ним. Claude видит "at `src/auth.ts:47`, don't catch the error here" вместе с вашей основной инструкцией, поэтому вам не нужно описывать, где проблема.

164 </Step>

165 

166 <Step title="Создайте pull request">

167 Когда diff выглядит правильно, выберите **Create PR** в верхней части представления diff. Вы можете открыть его как полный PR, черновик или перейти на страницу составления GitHub с сгенерированным названием и описанием.

168 </Step>

169 

170 <Step title="Продолжайте итерацию после PR">

171 Сеанс остается активным после создания PR. Вставьте вывод ошибки CI или комментарии рецензента в чат и попросите Claude их решить. Чтобы Claude автоматически отслеживал PR, смотрите [Auto-fix pull requests](/ru/claude-code-on-the-web#auto-fix-pull-requests).

172 </Step>

173</Steps>

174 

175## Устранение неполадок при настройке

176 

177### После подключения GitHub не появляются репозитории

178 

179Приложение Claude GitHub требует явного доступа к каждому репозиторию, который вы хотите использовать. На github.com откройте **Settings → Applications → Claude → Configure** и убедитесь, что ваш репозиторий указан в **Repository access**. Приватные репозитории требуют такой же авторизации, как и публичные.

180 

181### На странице отображается только кнопка входа GitHub

182 

183Облачные сеансы требуют подключенной учетной записи GitHub. Подключитесь через поток браузера выше или запустите `/web-setup` из терминала, если вы используете GitHub CLI. Если вы предпочитаете вообще не подключать GitHub, смотрите [Remote Control](/ru/remote-control) для запуска Claude Code на вашей машине и мониторинга его из веб-версии.

184 

185### "Not available for the selected organization"

186 

187Организациям Enterprise может потребоваться администратор для включения Claude Code в веб-версии. Свяжитесь с вашей командой учетных записей Anthropic.

188 

189### `/web-setup` возвращает "Unknown command"

190 

191`/web-setup` работает внутри Claude Code CLI, а не в вашей оболочке. Сначала запустите `claude`, затем введите `/web-setup` в подсказке.

192 

193Если вы ввели его внутри Claude Code и все еще видите ошибку, ваш CLI старше v2.1.80 или вы аутентифицированы с помощью ключа API или поставщика третьей стороны вместо подписки claude.ai. Запустите `claude update`, затем `/login` для входа со своей учетной записью claude.ai.

194 

195### "Could not create a cloud environment" или "No cloud environment available" при использовании `--remote` или ultraplan

196 

197Функции удаленного сеанса автоматически создают облачное окружение по умолчанию, если у вас его нет. Если вы видите "Could not create a cloud environment", автоматическое создание не удалось. {/* max-version: 2.1.100 */}Если вы видите "No cloud environment available", ваш CLI предшествует автоматическому созданию. В любом случае запустите `/web-setup` в Claude Code CLI для создания вручную или посетите [claude.ai/code](https://claude.ai/code) и следуйте шагу **Create your environment** выше.

198 

199### Скрипт настройки не удался

200 

201Скрипт настройки завершился с ненулевым статусом, что блокирует запуск сеанса. Распространенные причины:

202 

203* Установка пакета не удалась, потому что реестр не находится на вашем [уровне доступа в сеть](/ru/claude-code-on-the-web#access-levels). `Trusted` охватывает большинство менеджеров пакетов; `None` блокирует их все.

204* Скрипт ссылается на файл или путь, который не существует в свежем клоне.

205* Команда, которая работает локально, требует другого вызова на Ubuntu.

206 

207Для отладки добавьте `set -x` в начало скрипта, чтобы увидеть, какая команда не удалась. Для некритических команд добавьте `|| true`, чтобы они не блокировали запуск сеанса.

208 

209### Сеанс продолжает работать после закрытия вкладки

210 

211Это сделано специально. Закрытие вкладки или навигация не останавливает сеанс. Он продолжает работать в фоновом режиме до тех пор, пока Claude не закончит текущую задачу, затем переходит в режим ожидания. На боковой панели вы можете [архивировать сеанс](/ru/claude-code-on-the-web#archive-sessions), чтобы скрыть его из списка, или [удалить его](/ru/claude-code-on-the-web#delete-sessions), чтобы удалить его навсегда.

212 

213## Следующие шаги

214 

215Теперь, когда вы можете отправлять и просматривать задачи, эти страницы охватывают, что дальше: запуск облачных сеансов из терминала, планирование повторяющейся работы и предоставление Claude постоянных инструкций.

216 

217* [Использование Claude Code в веб-версии](/ru/claude-code-on-the-web): полный справочник, включая телепортацию сеансов в ваш терминал, скрипты настройки, переменные окружения и конфигурацию сети

218* [Routines](/ru/routines): автоматизируйте работу по расписанию, через вызов API или в ответ на события GitHub

219* [CLAUDE.md](/ru/memory): дайте Claude постоянные инструкции и контекст, которые загружаются в начале каждого сеанса

220* Установите мобильное приложение Claude для [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) или [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) для мониторинга сеансов с телефона. Из Claude Code CLI `/mobile` показывает QR-код.

whats-new.md +49 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Что нового

6 

7> Еженедельный дайджест заметных функций Claude Code с примерами кода, демонстрациями и контекстом о том, почему они важны.

8 

9Еженедельный дайджест для разработчиков выделяет функции, которые с наибольшей вероятностью изменят способ вашей работы. Каждая запись включает исполняемый код, краткую демонстрацию и ссылку на полную документацию. Для каждого исправления ошибок и незначительного улучшения см. [журнал изменений](/ru/changelog).

10 

11<Update label="Week 17" description="April 20–24, 2026" tags={["v2.1.114–v2.1.119"]}>

12 **`/ultrareview`** открывается как общедоступный исследовательский предпросмотр: флот агентов по поиску ошибок работает в облаке, и результаты автоматически поступают обратно в ваш CLI или Desktop.

13 

14 Также на этой неделе: **сводка сеанса** показывает вам, что произошло, пока терминал был в фокусе; **пользовательские темы** позволяют вам создавать и развертывать цветовые палитры из `/theme` или плагина; и **Claude Code в веб-версии** получает переделку с новой боковой панелью сеансов и макетом с перетаскиванием.

15 

16 [Прочитайте дайджест Week 17 →](/ru/whats-new/2026-w17)

17</Update>

18 

19<Update label="Week 16" description="April 13–17, 2026" tags={["v2.1.105–v2.1.113"]}>

20 **Claude Opus 4.7** становится новым значением по умолчанию на Max и Team Premium с новым уровнем усилий `xhigh`, который является рекомендуемой настройкой для большинства работ по кодированию, и интерактивным ползунком `/effort` для его настройки.

21 

22 Также на этой неделе: **Routines** в Claude Code в веб-версии запускают шаблонные облачные агенты по расписанию, событию GitHub или вызову API; `/ultrareview` запускает параллельный многоагентный обзор кода в облаке; `/usage` показывает, что влияет на ваши лимиты; и CLI переходит на собственные двоичные файлы.

23 

24 [Прочитайте дайджест Week 16 →](/ru/whats-new/2026-w16)

25</Update>

26 

27<Update label="Week 15" description="April 6–10, 2026" tags={["v2.1.92–v2.1.101"]}>

28 **Ultraplan** входит в ранний предпросмотр: создайте план в облаке из вашего CLI, просмотрите и прокомментируйте его в веб-редакторе, затем запустите его удаленно или верните его локально. Первый запуск теперь автоматически создает облачную среду для вас.

29 

30 Также на этой неделе: инструмент **Monitor** передает фоновые события в разговор, чтобы Claude мог отслеживать логи и реагировать в реальном времени, `/loop` самостоятельно устанавливает темп, когда вы опускаете интервал, `/team-onboarding` упаковывает вашу настройку в воспроизводимое руководство, и `/autofix-pr` включает автоисправление PR из вашего терминала.

31 

32 [Прочитайте дайджест Week 15 →](/ru/whats-new/2026-w15)

33</Update>

34 

35<Update label="Week 14" description="March 30 – April 3, 2026" tags={["v2.1.86–v2.1.91"]}>

36 **Компьютерное использование** приходит в CLI в исследовательском предпросмотре: Claude может открывать собственные приложения, кликать по пользовательскому интерфейсу и проверять изменения из вашего терминала. Лучше всего для завершения вещей, которые может проверить только графический интерфейс.

37 

38 Также на этой неделе: интерактивные уроки `/powerup`, безмерцающий рендеринг alt-screen, переопределение размера результата MCP для каждого инструмента до 500K и исполняемые файлы плагинов в `PATH` инструмента Bash.

39 

40 [Прочитайте дайджест Week 14 →](/ru/whats-new/2026-w14)

41</Update>

42 

43<Update label="Week 13" description="March 23–27, 2026" tags={["v2.1.83–v2.1.85"]}>

44 **Auto mode** приходит в исследовательский предпросмотр: классификатор обрабатывает ваши запросы разрешений, чтобы безопасные действия выполнялись без прерывания, а рискованные блокировались. Золотая середина между одобрением всего и `--dangerously-skip-permissions`.

45 

46 Также на этой неделе: компьютерное использование в приложении Desktop, автоисправление PR в Web, поиск по стенограмме с `/`, собственный инструмент PowerShell для Windows и условные hooks `if`.

47 

48 [Прочитайте дайджест Week 13 →](/ru/whats-new/2026-w13)

49</Update>

whats-new/2026-w16.md +135 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Неделя 16 · 13–17 апреля 2026

6 

7> Claude Opus 4.7 с новым уровнем усилий xhigh, Routines на Claude Code в веб-версии, /ultrareview для облачного анализа кода, /usage с разбивкой, показывающей, что ограничивает вас, и нативные бинарные файлы вместо упакованного JavaScript.

8 

9<div className="digest-meta">

10 <span>Releases <a href="/ru/docs/changelog#2-1-105">v2.1.105 → v2.1.113</a></span>

11 <span>5 функций · 13–17 апреля</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Claude Opus 4.7</span>

17 <span className="digest-feature-pill">новая модель</span>

18 </div>

19 

20 <p className="digest-feature-lede">Самая мощная модель кодирования Anthropic теперь является стандартной на Max и Team Premium и доступна везде из <code>/model</code>. Она добавляет новый уровень усилий <code>xhigh</code>, который находится между <code>high</code> и <code>max</code>: лучшие результаты для большинства задач кодирования и агентных операций, применяется по умолчанию при первом переключении на 4.7. <code>/effort</code> теперь открывает интерактивный ползунок со стрелками при вызове без аргументов, поэтому вы можете балансировать интеллект и скорость без необходимости помнить названия уровней.</p>

21 

22 <p className="digest-feature-try">Переключите модель и усилия одновременно:</p>

23 

24 ```text Claude Code theme={null}

25 > /model opus

26 > /effort xhigh

27 ```

28 

29 <a className="digest-feature-link" href="/ru/docs/model-config#adjust-effort-level">Model config: уровни усилий</a>

30</div>

31 

32<div className="digest-feature">

33 <div className="digest-feature-header">

34 <span className="digest-feature-title">Routines</span>

35 <span className="digest-feature-pill">web</span>

36 </div>

37 

38 <p className="digest-feature-lede">Шаблонные облачные агенты, которые запускаются по расписанию, событию GitHub или вызову API. Определите routine один раз на Claude Code в веб-версии с подсказкой, репозиториями, которые он может трогать, и необходимыми коннекторами, затем позвольте событиям PR-opened, release-published или вашему собственному webhook запустить его без необходимости запускать вашу машину. Средство выбора триггера теперь охватывает события GitHub с дополнительными фильтрами и предоставляет каждому routine токенизированную конечную точку <code>/fire</code> для внешних систем.</p>

39 

40 <Frame>

41 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/routines.png?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=2ba818ea9280c549511cb48b9b4d1dc5" alt="Создание routine на Claude Code в веб-версии с триггерами расписания, события GitHub и API" width="1440" height="810" data-path="images/whats-new/routines.png" />

42 </Frame>

43 

44 <p className="digest-feature-try">Создайте один из веб-интерфейса или создайте шаблон из терминала:</p>

45 

46 ```text Claude Code theme={null}

47 > /schedule daily PR review at 9am

48 ```

49 

50 <a className="digest-feature-link" href="/ru/docs/routines">Руководство Routines</a>

51</div>

52 

53<div className="digest-feature">

54 <div className="digest-feature-header">

55 <span className="digest-feature-title">/usage breakdown</span>

56 <span className="digest-feature-pill">CLI</span>

57 </div>

58 

59 <p className="digest-feature-lede">Больше видимости в том, куда идет ваше использование Claude Code. <code>/usage</code> теперь показывает, что ограничивает вас: параллельные сессии, подагенты, промахи кэша и длинный контекст, каждый с процентом от последних 24 часов и советом по его оптимизации. Нажмите <code>d</code> или <code>w</code> для переключения между представлениями дня и недели.</p>

60 

61 <Frame>

62 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/usage.png?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=792a4b43cbef4e2931974831f076bca6" alt="Команда /usage, показывающая разбивку того, что способствует использованию лимитов" width="1204" height="1182" data-path="images/whats-new/usage.png" />

63 </Frame>

64 

65 <p className="digest-feature-try">Запустите в любое время:</p>

66 

67 ```text Claude Code theme={null}

68 > /usage

69 ```

70 

71 <a className="digest-feature-link" href="/ru/docs/commands">Справочник команд</a>

72</div>

73 

74<div className="digest-feature">

75 <div className="digest-feature-header">

76 <span className="digest-feature-title">/ultrareview</span>

77 <span className="digest-feature-pill">v2.1.111</span>

78 </div>

79 

80 <p className="digest-feature-lede">Комплексный анализ кода в облаке. Ultrareview разворачивает вашу ветку по параллельным рецензентам на Claude Code в веб-версии, запускает проход критики противника над каждой находкой и возвращает проверенный отчет о находках, пока ваш терминал остается свободным. Вызовите его без аргументов для анализа вашей текущей ветки или передайте номер PR для получения и анализа этого PR. Диалог запуска теперь показывает diffstat, чтобы вы знали, что идет вверх перед подтверждением.</p>

81 

82 <p className="digest-feature-try">Проверьте ветку, на которой вы находитесь:</p>

83 

84 ```text Claude Code theme={null}

85 > /ultrareview

86 ```

87 

88 <p className="digest-feature-try">Или укажите на PR:</p>

89 

90 ```text Claude Code theme={null}

91 > /ultrareview 1234

92 ```

93 

94 <a className="digest-feature-link" href="/ru/docs/ultrareview">Руководство Ultrareview</a>

95</div>

96 

97<div className="digest-feature">

98 <div className="digest-feature-header">

99 <span className="digest-feature-title">Native binaries</span>

100 <span className="digest-feature-pill">v2.1.113</span>

101 </div>

102 

103 <p className="digest-feature-lede">CLI <code>claude</code> теперь запускает нативный бинарный файл для каждой платформы вместо упакованного JavaScript, поэтому установленная команда <code>claude</code> больше не вызывает Node. Пакет npm получает правильный бинарный файл через дополнительную зависимость, такую как <code>@anthropic-ai/claude-code-darwin-arm64</code>, поэтому ваша команда установки не меняется. Автономный установщик уже поставлял этот бинарный файл; npm теперь соответствует ему.</p>

104 

105 <p className="digest-feature-try">Обновитесь и проверьте, что вы запускаете:</p>

106 

107 ```bash theme={null}

108 claude update

109 claude --version

110 ```

111 

112 <a className="digest-feature-link" href="/ru/docs/setup">Руководство по настройке</a>

113</div>

114 

115<div className="digest-wins">

116 <p className="digest-wins-title">Другие улучшения</p>

117 

118 <div className="digest-wins-grid">

119 <div><a href="/ru/docs/permission-modes#eliminate-prompts-with-auto-mode">Auto mode</a> теперь доступен для подписчиков Max на Opus 4.7, и флаг <code>--enable-auto-mode</code> больше не требуется</div>

120 <div><a href="/ru/docs/interactive-mode#session-recap">Session recap</a> показывает однострочное резюме того, что произошло, пока вас не было; запустите <code>/recap</code> по требованию или отключите его из <code>/config</code></div>

121 <div>Новая команда <code>/tui</code> и параметр <code>tui</code> переключаются между классическим и безмерцающим рендерингом во время разговора; представление фокуса перемещено с <code>Ctrl+O</code> на его собственную команду <code>/focus</code></div>

122 <div>Инструмент push-уведомлений: с подключенным <a href="/ru/docs/remote-control">Remote Control</a> и включенным "Push when Claude decides", Claude может отправить уведомление на ваш телефон, когда вам нужны вы</div>

123 <div>Плагины могут поставлять фоновые наблюдатели через ключ манифеста верхнего уровня <code>monitors</code>, который автоматически активируется при запуске сессии или при вызове skill</div>

124 <div>Опция "Auto (match terminal)" в <code>/theme</code> следует темному/светлому режиму вашего терминала</div>

125 <div><code>/fewer-permission-prompts</code> сканирует ваши стенограммы на предмет распространенных вызовов Bash и MCP только для чтения и предлагает список разрешений для <code>.claude/settings.json</code></div>

126 <div>Claude теперь может обнаруживать и запускать встроенные команды, такие как <code>/init</code>, <code>/review</code> и <code>/security-review</code>, через инструмент Skill</div>

127 <div>Hooks <code>PreCompact</code> могут блокировать компактирование, выходя с кодом 2 или возвращая <code>{"{"}"decision":"block"{"}"}</code></div>

128 <div><code>ENABLE\_PROMPT\_CACHING\_1H</code> выбирает пользователей API key, Bedrock, Vertex и Foundry в TTL кэша подсказок на 1 час</div>

129 <div>Параметр <code>sandbox.network.deniedDomains</code> вырезает определенные домены из более широкого подстановочного знака <code>allowedDomains</code></div>

130 <div><code>/undo</code> теперь является псевдонимом для <code>/rewind</code>, а <code>/proactive</code> является псевдонимом для <code>/loop</code></div>

131 <div>Усиленные разрешения Bash: правила отказа теперь совпадают через обертки <code>env</code>/<code>sudo</code>/<code>watch</code>, и правила разрешения <code>Bash(find:\*)</code> больше не автоматически одобряют <code>-exec</code> или <code>-delete</code></div>

132 </div>

133</div>

134 

135[Полный журнал изменений для v2.1.105–v2.1.113 →](/ru/changelog#2-1-105)

whats-new/2026-w17.md +113 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Неделя 17 · 20–24 апреля 2026

6 

7> /ultrareview открывается как исследовательский предпросмотр, автоматические сводки сеансов при возврате в терминал, пользовательские цветовые темы, которые вы можете создавать и распространять в плагинах, и переработанный Claude Code в веб-версии.

8 

9<div className="digest-meta">

10 <span>Релизы <a href="/docs/ru/changelog#2-1-114">v2.1.114 → v2.1.119</a></span>

11 <span>4 функции · 20–24 апреля</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">/ultrareview</span>

17 <span className="digest-feature-pill">исследовательский предпросмотр</span>

18 </div>

19 

20 <p className="digest-feature-lede">Теперь в открытом исследовательском предпросмотре. Ultrareview запускает флот агентов по поиску ошибок в облаке для вашей ветки или PR, и результаты автоматически поступают в CLI или Desktop. Запустите его перед слиянием критических изменений, таких как аутентификация или миграция данных.</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/ultrareview.mp4?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=0fb1271365d38f414ad155aeb8edb08e" data-path="images/whats-new/ultrareview.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">Проверьте ветку, на которой вы находитесь:</p>

27 

28 ```text Claude Code theme={null}

29 > /ultrareview

30 ```

31 

32 <p className="digest-feature-try">Или укажите на PR:</p>

33 

34 ```text Claude Code theme={null}

35 > /ultrareview 1234

36 ```

37 

38 <a className="digest-feature-link" href="/docs/ru/ultrareview">Руководство Ultrareview</a>

39</div>

40 

41<div className="digest-feature">

42 <div className="digest-feature-header">

43 <span className="digest-feature-title">Сводка сеанса</span>

44 <span className="digest-feature-pill">CLI</span>

45 </div>

46 

47 <p className="digest-feature-lede">Переключитесь с сеанса и вернитесь к однострочной сводке того, что произошло, пока вас не было. Полезно для сохранения потока при одновременном запуске нескольких сеансов Claude.</p>

48 

49 <Frame>

50 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/session-recap.mp4?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=0a8db1470bd0161a47efeb2f322af76f" data-path="images/whats-new/session-recap.mp4" />

51 </Frame>

52 

53 <p className="digest-feature-try">Создайте сводку по требованию или отключите автоматическую из <code>/config</code>:</p>

54 

55 ```text Claude Code theme={null}

56 > /recap

57 ```

58 

59 <a className="digest-feature-link" href="/docs/ru/interactive-mode#session-recap">Интерактивный режим: сводка сеанса</a>

60</div>

61 

62<div className="digest-feature">

63 <div className="digest-feature-header">

64 <span className="digest-feature-title">Пользовательские темы</span>

65 <span className="digest-feature-pill">v2.1.118</span>

66 </div>

67 

68 <p className="digest-feature-lede">Создавайте и переключайтесь между именованными цветовыми темами из <code>/theme</code>, или вручную редактируйте JSON-файлы в <code>\~/.claude/themes/</code>. Каждая тема выбирает базовый предустановленный вариант и переопределяет только интересующие вас токены. Плагины также могут поставлять темы.</p>

69 

70 <p className="digest-feature-try">Откройте средство выбора темы и создайте новую:</p>

71 

72 ```text Claude Code theme={null}

73 > /theme

74 ```

75 

76 <a className="digest-feature-link" href="/docs/ru/terminal-config#create-a-custom-theme">Конфигурация терминала: создание пользовательской темы</a>

77</div>

78 

79<div className="digest-feature">

80 <div className="digest-feature-header">

81 <span className="digest-feature-title">Claude Code в веб-версии</span>

82 <span className="digest-feature-pill">веб</span>

83 </div>

84 

85 <p className="digest-feature-lede">Новый внешний вид <a href="https://claude.ai/code">claude.ai/code</a>, соответствующий переработанному приложению для рабочего стола: боковая панель сеансов, макет с перетаскиванием и обновленный вид процедур. Ключевые части были переработаны для более быстрого отклика и более надежного опыта.</p>

86 

87 <Frame>

88 <img className="w-full" src="https://mintcdn.com/claude-code/FTi4SBJ9YRs7d-5X/images/whats-new/web-redesign.jpeg?fit=max&auto=format&n=FTi4SBJ9YRs7d-5X&q=85&s=a2aca1b49e295b7337f5779038db8e2c" alt="Обзор переработки Claude Code в веб-версии: новый пользовательский интерфейс, скорость и надежность, работа в веб-версии, мобильной версии и CLI" width="1602" height="1610" data-path="images/whats-new/web-redesign.jpeg" />

89 </Frame>

90 

91 <a className="digest-feature-link" href="/docs/ru/claude-code-on-the-web">Claude Code в веб-версии</a>

92</div>

93 

94<div className="digest-wins">

95 <p className="digest-wins-title">Другие улучшения</p>

96 

97 <div className="digest-wins-grid">

98 <div><a href="/docs/ru/interactive-mode#vim-editor-mode">Режим визуального выделения Vim</a>: нажмите <code>v</code> для выделения символов или <code>V</code> для выделения строк во входе подсказки с операторами и визуальной обратной связью</div>

99 <div>Hooks теперь могут вызывать инструменты MCP напрямую через <a href="/docs/ru/hooks#mcp-tool-hook-fields"><code>type: "mcp\_tool"</code></a>, поэтому hook может обращаться к уже подключенному серверу без создания процесса</div>

100 <div><code>/cost</code> и <code>/stats</code> объединены в <a href="/docs/ru/commands"><code>/usage</code></a>; старые названия по-прежнему работают как сочетания клавиш для ввода, которые открывают соответствующую вкладку</div>

101 <div>Изменения <code>/config</code> (тема, режим редактора, подробный режим и аналогичные) теперь сохраняются в <code>\~/.claude/settings.json</code> и следуют той же приоритизации проекта/локального/политики, что и другие <a href="/docs/ru/settings">параметры</a></div>

102 <div><a href="/docs/ru/sub-agents#fork-the-current-conversation">Разветвленные подагенты</a> можно включить на внешних сборках с помощью <code>CLAUDE\_CODE\_FORK\_SUBAGENT=1</code>: разветвление наследует полный контекст вашего разговора вместо начала с нуля</div>

103 <div>Уровень <a href="/docs/ru/model-config#adjust-effort-level">усилия</a> по умолчанию для подписчиков Pro и Max на Opus 4.6 и Sonnet 4.6 теперь <code>high</code> (было <code>medium</code>)</div>

104 <div>Встроенные сборки macOS и Linux заменяют инструменты <code>Glob</code> и <code>Grep</code> встроенными <code>bfs</code> и <code>ugrep</code>, доступными через Bash, для более быстрого поиска без отдельного раунда инструмента</div>

105 <div><code>--from-pr</code> теперь принимает URL запроса слияния GitLab, запроса на извлечение Bitbucket и PR GitHub Enterprise в дополнение к github.com</div>

106 <div>Режим Auto: включите <code>"\$defaults"</code> в <a href="/docs/ru/auto-mode-config"><code>autoMode.allow</code>, <code>soft\_deny</code> или <code>environment</code></a>, чтобы добавить пользовательские правила наряду со встроенным списком вместо его замены</div>

107 <div>Новая команда <a href="/docs/ru/plugin-dependencies#tag-plugin-releases-for-version-resolution"><code>claude plugin tag</code></a> создает теги выпуска git для плагинов с проверкой версии</div>

108 <div>Сеансы Opus 4.7 теперь вычисляются с учетом встроенного окна контекста модели в 1M, исправляя завышенные процентные значения <code>/context</code> и преждевременное автоматическое сжатие</div>

109 <div><code>/resume</code> на больших сеансах работает на 67% быстрее и теперь предлагает суммировать устаревшие большие сеансы перед их повторным чтением</div>

110 </div>

111</div>

112 

113[Полный журнал изменений для v2.1.114–v2.1.119 →](/ru/changelog#2-1-114)

zero-data-retention.md +66 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Нулевое хранение данных

6 

7> Узнайте о нулевом хранении данных (ZDR) для Claude Code на Claude for Enterprise, включая область применения, отключенные функции и способы запроса активации.

8 

9Нулевое хранение данных (ZDR) доступно для Claude Code при использовании через Claude for Enterprise. Когда ZDR включен, запросы и ответы модели, созданные во время сеансов Claude Code, обрабатываются в реальном времени и не сохраняются Anthropic после возврата ответа, за исключением случаев, когда это необходимо для соответствия закону или борьбы со злоупотреблениями.

10 

11ZDR на Claude for Enterprise дает корпоративным клиентам возможность использовать Claude Code с нулевым хранением данных и получать доступ к административным возможностям:

12 

13* Контроль затрат на пользователя

14* Панель управления [Analytics](/ru/analytics)

15* [Параметры, управляемые сервером](/ru/server-managed-settings)

16* Журналы аудита

17 

18ZDR для Claude Code на Claude for Enterprise применяется только к прямой платформе Anthropic. Для развертываний Claude на Amazon Bedrock, Google Vertex AI или Microsoft Foundry обратитесь к политикам хранения данных этих платформ.

19 

20## Область применения ZDR

21 

22ZDR охватывает вывод Claude Code на Claude for Enterprise.

23 

24<Warning>

25 ZDR включается на основе организации. Каждая новая организация требует отдельной активации ZDR вашей командой учета Anthropic. ZDR не применяется автоматически к новым организациям, созданным в рамках одного и того же аккаунта. Свяжитесь с вашей командой учета, чтобы включить ZDR для любых новых организаций.

26</Warning>

27 

28### Что охватывает ZDR

29 

30ZDR охватывает вызовы вывода модели, сделанные через Claude Code на Claude for Enterprise. Когда вы используете Claude Code в своем терминале, отправляемые вами запросы и ответы, которые генерирует Claude, не сохраняются Anthropic. Это применяется независимо от того, какая модель Claude используется.

31 

32### Что не охватывает ZDR

33 

34ZDR не распространяется на следующее, даже для организаций с включенным ZDR. Эти функции следуют [стандартным политикам хранения данных](/ru/data-usage#data-retention):

35 

36| Функция | Детали |

37| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

38| Chat на claude.ai | Чат-беседы через веб-интерфейс Claude for Enterprise не охватываются ZDR. |

39| Cowork | Сеансы Cowork не охватываются ZDR. |

40| Claude Code Analytics | Не сохраняет запросы или ответы модели, но собирает метаданные производительности, такие как адреса электронной почты аккаунтов и статистику использования. Метрики вклада недоступны для организаций ZDR; [панель управления аналитикой](/ru/analytics) показывает только метрики использования. |

41| Управление пользователями и местами | Административные данные, такие как адреса электронной почты аккаунтов и назначения мест, сохраняются в соответствии со стандартными политиками. |

42| Интеграции третьих сторон | Данные, обработанные инструментами третьих сторон, MCP servers или другими внешними интеграциями, не охватываются ZDR. Независимо проверьте практики обработки данных этих сервисов. |

43 

44## Функции, отключенные под ZDR

45 

46Когда ZDR включен для организации Claude Code на Claude for Enterprise, определенные функции, которые требуют сохранения запросов или завершений, автоматически отключаются на уровне бэкенда:

47 

48| Функция | Причина |

49| --------------------------------------------------------------------- | ------------------------------------------------------------------------ |

50| [Claude Code в веб-версии](/ru/claude-code-on-the-web) | Требует серверного хранилища истории беседы. |

51| [Удаленные сеансы](/ru/desktop#remote-sessions) из приложения Desktop | Требует постоянных данных сеанса, которые включают запросы и завершения. |

52| Отправка отзыва (`/feedback`) | Отправка отзыва отправляет данные беседы в Anthropic. |

53 

54Эти функции блокируются на бэкенде независимо от отображения на стороне клиента. Если вы видите отключенную функцию в терминале Claude Code при запуске, попытка использовать ее возвращает ошибку, указывающую на то, что политики организации не позволяют это действие.

55 

56Будущие функции также могут быть отключены, если они требуют сохранения запросов или завершений.

57 

58## Хранение данных при нарушении политики

59 

60Даже с включенным ZDR, Anthropic может сохранять данные, если это требуется по закону или для решения нарушений политики использования. Если сеанс отмечен как нарушение политики, Anthropic может сохранить связанные входные и выходные данные на срок до 2 лет, в соответствии со стандартной политикой ZDR Anthropic.

61 

62## Запрос ZDR

63 

64Чтобы запросить ZDR для Claude Code на Claude for Enterprise, [свяжитесь с отделом продаж](https://www.anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=zero_data_retention_request) или с вашей командой учета Anthropic. Ваша команда учета отправит запрос внутри компании, и Anthropic проверит и включит ZDR в вашей организации после подтверждения соответствия требованиям. Все действия по активации регистрируются в журнале аудита.

65 

66Если вы в настоящее время используете ZDR для Claude Code через ключи API с оплатой по мере использования, вы можете перейти на Claude for Enterprise, чтобы получить доступ к административным функциям, сохраняя ZDR для Claude Code. Свяжитесь с вашей командой учета, чтобы координировать миграцию.