Skip to main content

Установка

SDK поставляется с нативным бинарным файлом Claude Code для вашей платформы в качестве опциональной зависимости, такой как @anthropic-ai/claude-agent-sdk-darwin-arm64. Большинство установок не требуют отдельной установки Claude Code. Версия SDK отслеживает версию упакованного Claude Code. SDK v0.3.191 поставляется с Claude Code v2.1.191, поэтому функция на этой странице, которая требует определённую версию Claude Code, нуждается в выпуске SDK с тем же номером патча или позже. Если ваш менеджер пакетов пропускает опциональные зависимости, SDK выбросит ошибку Native CLI binary for <platform>-<arch> not found; установите pathToClaudeCodeExecutable на отдельно установленный бинарный файл claude вместо этого.Если ваш менеджер пакетов не применяет поле libc npm, как это делает Yarn 1.x, вы получите оба пакета платформы glibc и musl на Linux, примерно удвоив размер установки. На Agent SDK v0.2.141 или позже SDK всё ещё запускает правильный вариант. Чтобы освободить место в образе контейнера, удалите пакет платформы, который не соответствует libc, где работает ваше приложение; для среды выполнения glibc на x64 это rm -rf node_modules/@anthropic-ai/claude-agent-sdk-linux-x64-musl. На машине разработки удаление временное, так как Yarn переустанавливает пакет при следующем изменении зависимостей.

Компиляция в единый исполняемый файл

Когда вы компилируете приложение в единый исполняемый файл с помощью bun build --compile, SDK не может разрешить упакованный бинарный файл CLI во время выполнения. require.resolve не работает внутри виртуальной файловой системы $bunfs скомпилированного исполняемого файла, поэтому SDK выбросит ошибку Native CLI binary for <platform>-<arch> not found. Чтобы обойти это, встройте бинарный файл платформы как файловый ресурс, извлеките его на реальный путь при запуске с помощью extractFromBunfs() и передайте этот путь в pathToClaudeCodeExecutable. Вспомогательная функция extractFromBunfs() требует @anthropic-ai/claude-agent-sdk версии 0.3.144 или позже. Пример ниже выполняет сборку для macOS на Apple Silicon:
extractFromBunfs() копирует встроенный бинарный файл из виртуальной файловой системы скомпилированного исполняемого файла в каталог временных файлов для каждого пользователя и возвращает реальный путь. Вне скомпилированного исполняемого файла он возвращает входной путь без изменений, поэтому тот же код работает в разработке без модификации. Каждый скомпилированный исполняемый файл содержит бинарный файл одной платформы. Совместите пакет платформы в импорте с вашим --target:
  • Для кросс-компиляции установите пакет несовпадающей платформы, например npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force.
  • На Windows подпуть бинарного файла — это claude.exe, например @anthropic-ai/claude-agent-sdk-win32-x64/claude.exe.

Функции

query()

Основная функция для взаимодействия с Claude Code. Создаёт асинхронный генератор, который потоком передаёт сообщения по мере их поступления.

Параметры

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

Возвращает объект Query, который расширяет AsyncGenerator<SDKMessage, void> дополнительными методами.

startup()

Предварительно разогревает подпроцесс CLI, запуская его и завершая инициализационное рукопожатие до того, как запрос будет доступен. Возвращённый дескриптор WarmQuery принимает запрос позже и записывает его в уже готовый процесс, поэтому первый вызов query() разрешается без затрат на запуск подпроцесса и инициализацию в строке.

Параметры

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

Возвращает Promise<WarmQuery>, который разрешается после того, как подпроцесс запущен и завершил инициализационное рукопожатие.

Пример

Вызовите startup() рано, например при загрузке приложения, затем вызовите .query() на возвращённом дескрипторе, когда запрос будет готов. Это перемещает запуск подпроцесса и инициализацию из критического пути.

tool()

Создаёт определение типобезопасного MCP tool для использования с SDK MCP серверами.

Параметры

ToolAnnotations

Переэкспортировано из @modelcontextprotocol/sdk/types.js. Все поля являются опциональными подсказками; клиенты не должны полагаться на них для решений безопасности.

createSdkMcpServer()

Создаёт экземпляр MCP сервера, который работает в том же процессе, что и ваше приложение.

Параметры

listSessions()

Обнаруживает и перечисляет прошлые сессии с лёгкими метаданными. Фильтруйте по директории проекта или перечисляйте сессии во всех проектах.

Параметры

Тип возврата: SDKSessionInfo

Пример

Выведите 10 самых последних сессий для проекта. Результаты отсортированы по lastModified в убывающем порядке, поэтому первый элемент является самым новым. Опустите dir для поиска во всех проектах.

getSessionMessages()

Читает сообщения пользователя и ассистента из прошлой сессии.

Параметры

Тип возврата: SessionMessage

Пример

getSessionInfo()

Читает метаданные для одной сессии по ID без сканирования полной директории проекта.

Параметры

Возвращает SDKSessionInfo или undefined, если сессия не найдена.

renameSession()

Переименовывает сессию, добавляя запись пользовательского названия. Повторные вызовы безопасны; побеждает самое последнее название.

Параметры

tagSession()

Помечает сессию. Передайте null для очистки тега. Повторные вызовы безопасны; побеждает самый последний тег.

Параметры

resolveSettings()

Разрешает эффективные параметры Claude Code для заданной директории, используя тот же механизм слияния, что и CLI, без запуска Claude CLI. Используйте его для проверки того, какую конфигурацию увидит вызов query() перед его вызовом.
Эта функция находится в альфа-версии и её API может измениться перед стабилизацией.
Снимок отличается от того, что применяет живая сессия query():
  • policyHelper: resolveSettings() читает источники MDM, включая macOS plist и Windows HKLM/HKCU, но не выполняет настроенный администратором подпроцесс policyHelper.
  • Параметры, управляемые сервером: resolveSettings() не загружает параметры, управляемые сервером. Передайте их как options.serverManagedSettings для включения.
  • defaultMode: снимок возвращает permissions.defaultMode как есть из каждого уровня, поэтому он может включать значения 'auto' и 'bypassPermissions' из параметров проекта и локальных параметров, которые живая сессия игнорирует.

Параметры

resolveSettings() принимает один объект параметров. Все поля опциональны.

Тип возврата: ResolvedSettings

resolveSettings() возвращает объект, описывающий объединённые параметры и источник, который внёс каждый ключ.

Пример

Пример ниже разрешает параметры для директории проекта и выводит источник, который контролирует период очистки. На машине, где ни один файл параметров не устанавливает cleanupPeriodDays, обе выведенные строки показывают undefined для значения, что является ожидаемым результатом, а не ошибкой.

Типы

Options

Объект конфигурации для функции query().

Handle slow or stalled API responses

Подпроцесс CLI читает несколько переменных окружения, которые контролируют timeout API и обнаружение зависания. Передайте их через опцию env:
  • API_TIMEOUT_MS: timeout для каждого запроса на клиенте Anthropic, в миллисекундах. По умолчанию 600000. Применяется к основному циклу и всем подагентам.
  • CLAUDE_CODE_MAX_RETRIES: максимальное количество повторных попыток API. По умолчанию 10, ограничено 15. Каждая повторная попытка получает своё собственное окно API_TIMEOUT_MS, поэтому наихудший случай wall time примерно API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1) плюс backoff. Для автоматических запусков, которым нужно ждать через более длительные сбои, установите CLAUDE_CODE_RETRY_WATCHDOG=1: он повторяет ошибки ёмкости бесконечно и, на Claude Code v2.1.199 или позже, повышает значение по умолчанию для других переходящих ошибок до 300 и удаляет ограничение на эту переменную.
  • CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: watchdog зависания для подагентов. Пока watchdog потока включен, значение по умолчанию это CLAUDE_STREAM_IDLE_TIMEOUT_MS плюс 5 минут, что составляет 600000, если вы не повысите эту переменную. С отключённым watchdog потока, значение по умолчанию это 600000. До v2.1.257 значение по умолчанию всегда было 600000. Таймер сбрасывается при каждом событии потока. При зависании Claude Code прерывает подагента и сообщает о зависании родителю. Для фонового подагента он также отмечает задачу как неудачную и прикрепляет любой частичный результат.
  • CLAUDE_ENABLE_STREAM_WATCHDOG с CLAUDE_STREAM_IDLE_TIMEOUT_MS: watchdog потока, который прерывает запрос, когда заголовки получены, но тело ответа перестаёт потоком передаваться. Watchdog включен по умолчанию для всех поставщиков; установите CLAUDE_ENABLE_STREAM_WATCHDOG=0 для отключения. CLAUDE_STREAM_IDLE_TIMEOUT_MS по умолчанию 300000 и зажимается до этого минимума. После прерывания, Automatic retries охватывает то, что Claude Code делает, на основе того, как далеко прошёл ответ. Пока watchdog ждёт ответ, который шлюз позади ANTHROPIC_BASE_URL держит открытым с keep-alive пингами, хост, который устанавливает includePartialMessages, продолжает получать ping события потока, поэтому читайте эти кадры как живость, а не синхронизируйте сессию на молчании. До v2.1.257 кадры останавливались через 5 минут после последнего реального события потока.

Query object

Интерфейс, возвращаемый функцией query().

Methods

applyFlagSettings()

Изменяет настройки на работающей сессии без перезагрузки запроса. Используйте её, когда настройка, у которой нет выделенного setter, должна измениться в середине сессии, например, ужесточение permissions после того, как агент прочитает ненадёжный ввод. setModel() и setPermissionMode() являются выделенными setters для этих двух ключей; applyFlagSettings() является общей формой, которая принимает любое подмножество ключей настроек, и передача model здесь ведёт себя так же, как setModel(). Только некоторые ключи вступают в силу в середине сессии:
  • Применяется на следующем ходу: effortLevel, ultracode, permissions, hooks, skillOverrides, fastMode, agent. Переключение agent также применяет переопределение модели этого агента и hooks на следующем ходу. Его системный запрос применяется на следующем ходу или, в сессии, которая переиспользует записанный системный запрос, один раз сессия компактна.
  • Применяется во время текущего хода: model. Если вы переключаете model пока Claude работает над ходом, ответ, который Claude уже генерирует, завершается на старой модели, и остаток хода, начиная со следующего вызова Claude Code к модели, использует новую. Подагенты сохраняют свою собственную модель. До v2.1.212 переключение в середине хода ждало следующего хода.
  • Нет эффекта в середине сессии: опции системного запроса. Они разрешаются один раз при запуске, поэтому работающая сессия сохраняет исходное значение, даже если вызов успешен. Чтобы их изменить, запустите новую сессию.
effortLevel принимает имя уровня усилий. Он также принимает "ultracode", который запускает xhigh усилия с ultracode на. applyFlagSettings() объявляет effortLevel без этого значения, поэтому передайте эквивалент { ultracode: true } в TypeScript. Значение ultracode требует Claude Code v2.1.203 или позже и принимается только applyFlagSettings(), а не ключом effortLevel в файле настроек. Значения записываются в слой flag-settings, тот же слой, который встроенная опция settings функции query() заполняет при запуске. Это тот же уровень, который раздел приоритета на странице называет программными опциями. Последовательные вызовы выполняют shallow-merge ключей верхнего уровня. Второй вызов с { permissions: {...} } заменяет весь объект permissions из предыдущего вызова, а не выполняет deep-merge в него. Чтобы очистить ключ из слоя flag и вернуться к источникам с более низким приоритетом, передайте null для этого ключа. Передача undefined не имеет эффекта, потому что сериализация JSON её отбрасывает. Доступно только в режиме потока входных данных, то же ограничение, что и setModel() и setPermissionMode(). Пример ниже переключает активную модель в середине сессии, а затем очищает переопределение, чтобы модель вернулась к тому, что указывают пользовательские или проектные настройки.
applyFlagSettings() только для TypeScript. Python SDK не предоставляет эквивалентный метод.

WarmQuery

Дескриптор, возвращаемый startup(). Подпроцесс уже запущен и инициализирован, поэтому вызов query() на этом дескрипторе записывает запрос непосредственно в готовый процесс без задержки запуска.

Methods

WarmQuery реализует AsyncDisposable, поэтому его можно использовать с await using для автоматической очистки.

SDKControlInitializeResponse

Тип возврата initializationResult(). Содержит данные инициализации сессии.
hooks_applied сообщает, зарегистрировал ли Claude Code hooks, которые несёт запрос initialize. SDK отправляет этот запрос один раз при запуске сессии и снова при каждом вызове reinitialize(). Поле требует Agent SDK v0.3.238 или позже. Claude Code опускает поле, когда запрос не несёт hooks. Когда запрос несёт hooks, значение зависит от того, является ли запрос первой инициализацией сессии и, для повторного, как он достиг сессии:
  • true: Claude Code зарегистрировал hooks. Первая инициализация сессии возвращает это значение. Так же повторная инициализация, отправленная через stdin CLI. В этом случае hooks в новом запросе заменяют hooks, зарегистрированные ранее.
  • false: Claude Code игнорировал hooks. Повторная инициализация, отправленная удалённой сессии, возвращает это значение, поэтому второй клиент, который присоединяется к сессии, не может заменить hooks, которые зарегистрировал первый клиент.
До Agent SDK v0.3.238 ответ никогда не нёс поле, и Claude Code игнорировал hooks при каждой повторной инициализации. Ответ всегда сообщает fast_mode_state, и когда что-то блокирует fast mode, fast_mode_disabled_reason несёт код причины рядом с ним, поэтому вы можете объяснить заблокированное состояние вместо переопределения доступности. Оба поведения требуют Claude Code v2.1.219 или позже. До v2.1.219 ответ опускал fast_mode_state, когда fast mode не был доступен, и никогда не нёс причину. Для кодов причин и их значений см. fast_mode_disabled_reason на сообщении результата. Обёртка control-response для успешного initialize также несёт массив pending_permission_requests. Поле находится на самой обёртке response, а не в полезной нагрузке SDKControlInitializeResponse выше. Каждая запись является полным сообщением control_request с той же формой { type: "control_request", request_id, request }, которую сессия потоком передаёт для запросов разрешения во время работы. Массив перечисляет запросы разрешения, которые этот процесс Claude Code выдал и ещё не разрешил. SDK читает массив для вас и отправляет каждую запись в ваш обратный вызов canUseTool, то же переотправление, которое reinitialize() запускает после разрыва транспорта. Обрабатывайте повторяющиеся ID запросов идемпотентно, потому что запись может повторить запрос, который обратный вызов уже получил до отключения соединения. Массив всегда присутствует на успешном ответе initialize и пуст, когда этот процесс не имеет неразрешённого запроса разрешения. Требует Claude Code v2.1.268 или позже. Более ранние версии могли опустить поле, поэтому если вы анализируете протокол проводов самостоятельно, рассматривайте отсутствующее поле как более старый CLI, а не как доказательство того, что ничего не ожидает.

SDKControlInterruptResponse

Квитанция прерывания: значение, которое interrupt() разрешается с помощью на CLI, который объявляет возможность interrupt_receipt_v1 в SDKSystemMessage.capabilities. Требует Claude Code v2.1.205 или позже. Более ранние CLI отвечают на прерывание с пустой полезной нагрузкой успеха, поэтому interrupt() разрешается undefined.
still_queued перечисляет UUID пользовательских сообщений, которые были в ожидании, когда прерывание прибыло: сообщения всё ещё в очереди, плюс любые сообщения Claude Code уже взял из очереди для следующего хода. Один раз первый ход сессии начался, Claude Code обрабатывает перечисленные сообщения после прерывания, если вы их не отмените первым, и может объединить несколько в один ход. Если вы прерываете перед запуском первого хода, Claude Code прерывает этот ход, как только он начинается, и перечисленные сообщения в этом ходе не получают ответ. Используйте квитанцию, чтобы решить, нужно ли что-то переотправлять. Перечисленное сообщение, которое вы не отмените, входит в диалог, получает ли оно ответ или нет, поэтому переотправка его доставляет его Claude дважды. Интерпретируйте список с этими предостережениями:
  • Только сообщения, которые были поставлены в очередь с UUID, появляются. Пустой массив не означает, что ничего больше не будет работать.
  • Только сообщения основного потока указаны. Сообщения, адресованные подагенту, выходят за рамки.
  • Список может включать UUID, которые ваш клиент никогда не отправлял, такие как триггеры scheduled task. Игнорируйте UUID, которые вы не узнаёте, вместо того чтобы рассматривать их как ошибку.
Клиент, который управляет протоколом управления CLI напрямую, а не через interrupt(), может установить cancel_queued: true на запрос управления interrupt. Claude Code v2.1.219 и позже объявляет поддержку с возможностью interrupt_cancel_queued_v1 в SDKSystemMessage.capabilities; более ранние CLI игнорируют поле и оставляют поставленные в очередь сообщения работать как обычно. Такое прерывание также отменяет каждое сообщение, которое иначе было бы указано под still_queued: квитанция перечисляет их под cancelled вместо этого, still_queued пуст, и ни один из них не работает. Список cancelled несёт те же предостережения, что и still_queued. Метод interrupt() никогда не отправляет cancel_queued, поэтому квитанции, которые он разрешает, не несут cancelled. Квитанция — это снимок, сделанный в момент обработки прерывания, и при чистом прерывании она прибывает до SDKResultMessage прерванного хода. Прочитайте квитанцию, а не проверяйте очередь после этого результата: цикл немедленно запускает следующий поставленный в очередь ход, поэтому очередь, которую вы проверяете после результата, уже изменилась.

SDKControlGetContextUsageResponse

Тип возврата getContextUsage(). С опцией detail по умолчанию, это та же полезная нагрузка, которую Claude Code отображает для команды /context в интерактивной сессии, поэтому рядом с подсчётом токенов она несёт поля отображения, такие как color и gridRows, которые Claude Code использует для рисования сетки использования /context. Аргумент detail метода выбирает, как Claude Code подсчитывает каждую категорию. С опцией по умолчанию, 'full', Claude Code подсчитывает каждую категорию с запросами API подсчёта токенов. Передайте { detail: 'summary' } для получения ответа из использования последнего ответа и локальных оценок вместо этого. Никакие запросы подсчёта токенов не выходят, и числа для каждой категории приблизительны. Аргумент detail требует Agent SDK v0.3.257 или позже. Когда вы отправляете /context как запрос вместо вызова метода, Claude Code прикрепляет полезную нагрузку SDKContextUsage к полю context_usage сообщения ассистента, которое доставляет результат. Это поле требует Agent SDK v0.3.232 или позже.
Читайте атрибуцию токенов из полей коллекции:
  • categories содержит итоги для каждой категории.
  • mcpTools и agents атрибутируют токены отдельным MCP инструментам и подагентам.
  • memoryFiles перечисляет каждый загруженный файл памяти с его стоимостью.
  • skills.skillFrontmatter атрибутирует токены listing skills каждому включённому skill. Подсчёты для каждого skill измеряют запись listing каждого skill, как Claude Code фактически её отправляет, что может быть короче, чем полный frontmatter skill. Сравните skills.totalSkills с skills.includedSkills, чтобы увидеть, попал ли каждый обнаруженный skill в listing.
totalTokens это текущее использование контекста сессии, и maxTokens это окно, против которого измеряется использование. Это окно это контекстное окно модели или более низкое окно auto-compaction, когда оно применяется. rawMaxTokens несёт то же значение, что и maxTokens, и percentage это totalTokens как округлённый процент этого окна. Claude Code оставляет опциональные диагностики deferredBuiltinTools, systemTools и systemPromptSections неустановленными, поэтому ожидайте их отсутствия, даже хотя тип их объявляет.

SDKControlReadFileResponse

Тип возврата readFile().
contents содержит текст файла или данные base64, когда вы запросили encoding: 'base64'; поле encoding ответа установлено на 'base64' в этом случае. absPath это разрешённый абсолютный путь. truncated установлено, когда файл был длиннее лимита maxBytes и содержимое было обрезано на этом лимите.

What readFile() can read

readFile() служит более узким набором файлов, чем инструмент Read:
  • Обычный файл внутри одной из рабочих директорий сессии, такой как cwd и additionalDirectories
  • Несколько собственных файлов Claude Code для сессии, такие как результаты инструментов
Правила отклонения и запроса Read всё ещё блокируют совпадающий путь, и широкое правило разрешения Read не открывает остаток файловой системы для readFile(). Для чего-либо ещё вызов разрешается с null.

SDKControlReloadSkillsResponse

Тип возврата reloadSkills().
skills перечисляет skills, доступные после перезагрузки, в той же форме SlashCommand, которую возвращает supportedCommands().

AgentDefinition

Конфигурация для подагента, определённого программно.

AgentMcpServerSpec

Указывает MCP серверы, доступные подагенту. Может быть именем сервера (строка, ссылающаяся на сервер из конфигурации mcpServers родителя) или встроенной конфигурацией сервера, записью, отображающей имена серверов на конфигурации.
Где McpServerConfigForProcessTransport это McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.

SettingSource

Контролирует, какие источники конфигурации на основе файловой системы SDK загружает настройки из.

Default behavior

Когда settingSources опущено или undefined, query() загружает те же настройки файловой системы, что и CLI Claude Code: пользовательские, проектные и локальные. См. What settingSources does not control для входных данных, которые читаются независимо от этой опции, и как их отключить.

Why use settingSources

Отключите настройки файловой системы:
Загружайте только определённые источники настроек:
Для загрузки инструкций проекта CLAUDE.md включите "project" в settingSources. См. Modify system prompts для того, как загрузка CLAUDE.md взаимодействует с опциями системного запроса.

Settings precedence

Когда загружаются несколько источников, настройки объединяются с этим приоритетом (от высшего к низшему):
  1. Локальные настройки (.claude/settings.local.json)
  2. Настройки проекта (.claude/settings.json)
  3. Пользовательские настройки (~/.claude/settings.json)
Программные опции, такие как agents, allowedTools и settings, переопределяют пользовательские, проектные и локальные настройки файловой системы. Управляемые политикой настройки имеют приоритет над программными опциями.

PermissionMode

CanUseTool

Тип пользовательской функции разрешения для контроля использования инструмента. Функция является заменой SDK для интерактивного запроса разрешения: она вызывается только когда поток оценки разрешения разрешается в запрос. Вызовы инструментов, уже одобренные записью allowedTools, правилом настроек разрешения или режимом разрешения, такие как acceptEdits или bypassPermissions, никогда её не вызывают. Чтобы контролировать каждый вызов инструмента, используйте вместо этого hook PreToolUse. Правило разрешения не предварительно одобряет действия, которые ни один режим не одобряет автоматически; см. How permissions are evaluated для того, какие из них достигают обратного вызова и что происходит в режиме dontAsk и auto.
Обратный вызов обычно разрешает запрос, возвращая PermissionResult, который SDK записывает обратно через свой транспорт как control_response. Возвращайте null только когда ваше приложение уже отправило control_response для этого запроса через свой собственный канал, повторив requestId; SDK затем пропускает запись ответа в свой транспорт. Возврат null в любом другом случае оставляет вызов инструмента заблокированным бесконечно, потому что control_response никогда не отправляется и запросы разрешения не имеют timeout. Опция requestId и возвращаемое значение null требуют Claude Code v2.1.199 или позже.

PermissionResult

Результат проверки разрешения.

ToolConfig

Конфигурация для встроенного поведения инструмента.

McpServerConfig

Конфигурация для MCP серверов.

McpStdioServerConfig

McpSSEServerConfig

McpHttpServerConfig

McpSdkServerConfigWithInstance

McpClaudeAIProxyServerConfig

SdkPluginConfig

Конфигурация для загрузки plugins в SDK.
Пример:
Для полной информации о создании и использовании plugins см. Plugins.

Типы сообщений

SDKMessage

Тип объединения всех возможных сообщений, возвращаемых запросом.

SDKAssistantMessage

Сообщение ответа ассистента.
Поле message это BetaMessage из Anthropic SDK. Оно включает поля, такие как id, content, model, stop_reason и usage. SDKAssistantMessageError это один из: 'authentication_failed', 'oauth_org_not_allowed', 'account_on_hold', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens', 'cloud_credential_error' или 'unknown'. Четыре из этих значений означают больше, чем говорят их названия:
  • 'model_not_found': выбранная модель не существует или недоступна для вашей учётной записи или развёртывания
  • 'overloaded': API вернул 529, потому что сервер работает на полную мощность, в отличие от 'rate_limit', который является 429 в отношении вашей квоты
  • 'account_on_hold': ваша учётная запись заморожена
  • 'cloud_credential_error': Claude Code не смог получить пригодные учётные данные AWS или Google Cloud на машине, на которой он работает, поэтому запрос не достиг поставщика облачных услуг. Обычная причина — вход в облако, который истёк или никогда не был завершён на этой машине, хотя кратковременно недоступный сервис учётных данных сообщает то же значение. Смотрите Не удалось загрузить учётные данные AWS или Google Cloud. Требует TypeScript Agent SDK v0.3.267 или позже, который включает Claude Code v2.1.267
aborted имеет значение true, когда прерывание или отмена усекли сообщение ассистента перед завершением потока: сообщение не имеет stop_reason и содержимое может заканчиваться в середине слова. Поле отсутствует на нормально завершённых сообщениях. Требует Agent SDK v0.3.214 или позже. Claude Code устанавливает user_message_uuid и user_message_uuids на первое сообщение ассистента хода при условиях, описанных в user_message_uuid. timestamp это время ISO 8601, когда содержимое сообщения закончило генерироваться на процессе, который его создал. Значение поступает с часов этой машины, поэтому используйте его только для отображения и не упорядочивайте сообщения по нему. Один ход API может создать несколько сообщений ассистента, которые совместно используют message.id, каждое со своим собственным timestamp. Когда поле отсутствует, вернитесь к времени получения сообщения. context_usage это структурированная копия отчёта /context, типизированная как SDKContextUsage, и требует Agent SDK v0.3.232 или позже. Когда вы отправляете /context как запрос, Claude Code доставляет отчёт как сообщение ассистента, чьё message.content содержит таблицу markdown, и прикрепляет context_usage к этому же сообщению. Claude Code не устанавливает поле на любое другое сообщение ассистента, и более ранние версии доставляют таблицу /context без него, поэтому читайте разбивку из поля, когда оно присутствует, и вернитесь к тексту markdown, когда его нет.

SDKUserMessage

Сообщение пользовательского ввода.
Установите shouldQuery на false для добавления сообщения в транскрипт без запуска хода ассистента. Сообщение удерживается и объединяется в следующее пользовательское сообщение, которое запускает ход. Используйте это для внедрения контекста, такого как вывод команды, которую вы запустили вне полосы, без траты вызова модели на это. На сообщении, которое содержит блок tool_result, tool_use_result это объект структурированного вывода инструмента, а не текст, отправленный модели. Его форма зависит от инструмента, названного соответствующим блоком tool_use, поэтому поле типизировано как unknown; встроенные формы перечислены в разделе Типы вывода инструментов. Для инструмента Agent, tool_use_result это AgentOutput. На результате completed, content содержит отчёт подагента без ID агента и трейлера использования, которые Claude Code добавляет к тексту tool_result, поэтому отображайте из tool_use_result вместо анализа этого текста. Для инструмента MCP, чей результат содержит блоки resource_link, tool_use_result это объект с массивом resourceLinks записей SDKMcpResourceLink. Claude получает каждую ссылку как строку текста в блоке tool_result, поэтому читайте resourceLinks для отображения файлов, которые вернул сервер, вместо анализа этого текста. Claude Code опускает resourceLinks, когда результат не содержит ссылок и на результатах от подагентов, сохраняет максимум 50 ссылок на результат и прекращает добавление ссылок, когда массив достигает 64 КиБ сериализованного JSON. resourceLinks требует Agent SDK v0.3.257 или позже.

SDKUserMessageReplay

Повторно воспроизведённое пользовательское сообщение с требуемым UUID.
Пользовательский ход, внедрённый извне сеанса, один, чьё origin имеет вид peer или channel, достигает потока как повтор, был ли он доставлен во время активного хода или запустил новый ход, пока сеанс был неактивен. До v2.1.207 внедрённый ход, доставленный, пока сеанс был неактивен, не производил никакого сообщения в потоке и появлялся только при повторном чтении транскрипта.

SDKResultMessage

Финальное сообщение результата.
Несколько полей в результате содержат диагностические детали помимо subtype:
  • api_error_status: HTTP код состояния ошибки API, которая завершила диалог. Отсутствует или имеет значение null, когда ход завершился без ошибки API.
  • ttft_ms: время до первого токена в миллисекундах, измеренное при поступлении первого полного сообщения ассистента. Присутствует только на успешной ветви.
  • ttft_stream_ms: время в миллисекундах до первого события потока message_start, когда открывается поток ответа. Ниже, чем ttft_ms; разница между ними — это время, потраченное на потоковую передачу первого сообщения. Присутствует только на успешной ветви.
  • user_message_uuid: uuid сообщения, которое вы отправили и на которое этот ход ответил. Смотрите user_message_uuid для того, какие результаты его содержат.
  • user_message_uuids: uuids каждого сообщения, которое вы отправили и на которое Claude Code ответил в этом ходе. Смотрите user_message_uuids.
  • request_sent_wall_ms: эпоха миллисекунд, в которую Claude Code отправил запрос API, для объединения с серверными временными метками. Присутствует только вместе с user_message_uuid, на успешном результате с is_error false, чей ход отправил запрос API.
  • first_content_frame_ms: время в миллисекундах до первого события потока content_block_start или content_block_delta, считая блоки размышлений как содержимое. Присутствует на успешной ветви только, когда is_error false. Требует Agent SDK v0.3.260 или позже.
  • first_stream_post_ms, first_stream_post_ack_ms, first_stream_post_wall_ms: сроки загрузки первого события потока хода. Claude Code записывает их только в сеансах, которые он потоком передаёт на claude.ai, такие как облачные сеансы, и результаты, которые выдаёт query(), их не содержат. Требует Agent SDK v0.3.260 или позже.
  • usage: только основной цикл агента. Исключает вызовы подагента и вспомогательной модели и является за ход в сеансах потокового ввода. Предпочитайте modelUsage для учёта токенов/затрат.
  • modelUsage: итоги по моделям для каждого вызова модели, сделанного через конвейер запросов во время этого вызова query(), включая основной цикл, подагентов и внутренние вызовы, такие как компактирование и агенты Workflow. Вспомогательные вызовы вне этого конвейера, такие как классификатор разрешений и запросы подсчёта токенов, исключены. В сеансах потокового ввода итоги кумулятивны по ходам, поэтому читайте последний результат, а не суммируйте по результатам. Смотрите Отслеживание затрат в режиме потокового ввода для сбросов и Восстановление итогов после сбоя сеанса для обнулённых результатов.
  • total_cost_usd: кумулятивная предполагаемая стоимость в USD для этого вызова query(), охватывающая те же вызовы, что и modelUsage, и сбрасываемая в тех же точках. Это оценка, а не выписка по счёту. Смотрите Отслеживание затрат и использования для оговорок по точности.
  • queued_turn_count: количество сообщений, которые вы отправили с origin: { kind: "human" }, которые всё ещё ожидают, когда Claude Code создал результат. Смотрите queued_turn_count для того, что говорят вам 0 и отсутствующее поле.
  • terminal_reason: почему цикл завершился. Один из "completed", "max_turns", "tool_deferred", "aborted_streaming", "aborted_tools", "hook_stopped", "stop_hook_prevented", "background_requested", "blocking_limit", "rapid_refill_breaker", "prompt_too_long", "image_error", "model_error", "api_error", "malformed_tool_use_exhausted", "budget_exhausted", "structured_output_retry_exhausted", "tool_deferred_unavailable" или "turn_setup_failed".
  • fast_mode_state: один из "on", "off" или "cooldown".
  • fast_mode_disabled_reason: почему быстрый режим недоступен прямо сейчас. Отсутствует, когда ничто не блокирует быстрый режим, хотя запрос может всё ещё работать на стандартной скорости. Во время охлаждения после ограничения скорости быстрого режима Claude Code сообщает fast_mode_state: "cooldown" без кода причины и повторно включает быстрый режим, когда охлаждение истекает. Требует Claude Code v2.1.219 или позже.
Используйте код причины, чтобы объяснить, почему быстрый режим отключён в вашем собственном пользовательском интерфейсе, вместо повторного вывода доступности. Каждый код называет проверку, которая заблокировала быстрый режим: Одна и та же пара полей появляется на SDKSystemMessage и на SDKControlInitializeResponse, поэтому вы можете прочитать состояние быстрого режима перед первым ходом. Поле origin передаёт SDKMessageOrigin пользовательского сообщения, которое запустило этот результат. Когда SDK внедряет синтетический ход продолжения, такой как для завершённой фоновой задачи, результирующее SDKResultMessage содержит origin: { kind: "task-notification" }. Подпрограммы, чьи триггеры сработали и сообщения, проверенные сервером, из ваших других сеансов прибывают с этим видом, каждое с subkind, описанным в Подвиды уведомлений о задачах. Проверьте kind, чтобы различить результаты, которые отвечают на ваш запрос, от внедрённых продолжений перед маршрутизацией или подавлением их. Поле отсутствует для результатов, выданных перед любым пользовательским ходом, таких как ошибки при запуске. Когда hook PreToolUse возвращает permissionDecision: "defer", результат имеет stop_reason: "tool_deferred" и deferred_tool_use содержит id, name и input ожидающего инструмента. Прочитайте это поле, чтобы отобразить запрос в вашем собственном пользовательском интерфейсе, затем возобновите с тем же session_id для продолжения. Смотрите Отложить вызов инструмента на потом для полного цикла.

user_message_uuid

uuid SDKUserMessage, на которое отвечает ход, повторённый, чтобы вы могли сопоставить ответ Claude Code с сообщением, которое вы отправили. Claude Code повторяет uuid только если вы установили его на сообщение. Поле опционально на SDKUserMessage, и строковый запрос, переданный в query(), не содержит ни одного. Какое из ваших сообщений отвечает ход, зависит от того, как ход начался:
  • Обычное сообщение, которое вы отправили, то есть без isSynthetic: true: ход отвечает на это сообщение на протяжении всего его выполнения. Когда вы отправляете несколько сообщений близко друг к другу, Claude Code может объединить их в один ход, и поле затем содержит только uuid последнего сообщения. Чтобы сопоставить ответ с любым из объединённых сообщений, используйте user_message_uuids.
  • Сообщение, которое вы отправили с isSynthetic: true: ход сначала отвечает на это сообщение. Если Claude Code подхватит обычное сообщение вашего между вызовами инструментов, ход отвечает на подхваченное сообщение с этого момента. Повторение uuid синтетического сообщения требует Agent SDK v0.3.265 или позже; более ранние версии ничего не повторяют на синтетических ходах.
  • Запрос, который Claude Code сгенерировал сам, такой как ход, который продолжает прерванную работу после перезагрузки сеанса: ход сначала не отвечает на ваше сообщение и его кадры не содержат повтора. Если Claude Code подхватит обычное сообщение вашего между вызовами инструментов, ход отвечает на это сообщение с этого момента. Повтор подхвата требует Agent SDK v0.3.265 или позже; более ранние версии ничего не повторяют на этих ходах.
Claude Code повторяет uuid отвеченного сообщения на трёх видах кадра:
  • Результат: каждый результат хода, который ответил на сообщение, которое вы отправили. Каждый такой результат содержит его на Agent SDK v0.3.265 или позже. До v0.3.265 успешный результат хода, который запустило обычное сообщение, не содержал его, когда ход не отправил запрос API или завершился отложенным вызовом инструмента. До v0.3.246 результаты ошибок также не содержали его, и до v0.3.216 каждый результат не содержал.
  • Первый ответ хода: первое сообщение ассистента, или с includePartialMessages первое событие потока, чьё event.type не является ping, поэтому вы можете привязать ответ перед поступлением результата. Когда ход ничего не потоком передаёт, Claude Code устанавливает его на первое сообщение ассистента вместо этого. Повтор первого ответа требует Agent SDK v0.3.246 или позже. Когда сообщение, на которое отвечает ход, изменяется в середине хода, первый ответ после изменения также содержит поле на Agent SDK v0.3.265 или позже; более ранние версии устанавливают его на один кадр ответа за ход.
  • Каждый кадр thinking_tokens хода: чтобы вы могли приписать прогресс размышления сообщению, которое вы отправили, без ожидания первого ответа хода. Требует Agent SDK v0.3.260 или позже.
Claude Code опускает поле в этих случаях:
  • Кадры ответа, отличные от тех первых ответов
  • Кадры подагента
  • Ходы, которые не отвечают на сообщение с uuid: ход ответил на сообщение, которое вы отправили без одного, или Claude Code запустил ход сам и не подхватил обычное сообщение, которое имеет один
  • Результаты, которые не отвечают на сообщение, которое вы отправили, такие как обнулённый результат после сбоя рабочего процесса

user_message_uuids

uuids каждого сообщения, которое вы отправили и на которое Claude Code ответил в этом ходе. Когда вы отправляете несколько сообщений близко друг к другу, Claude Code может объединить их в один ход, и user_message_uuid затем называет только последнее из них. Чтобы сопоставить ответ с любым из объединённых сообщений, ищите uuid этого сообщения где-нибудь в этом списке. Требует Agent SDK v0.3.259 или позже. Claude Code устанавливает список вместе с user_message_uuid на каждом кадре ответа, который содержит это поле, и на результате. Для полного набора кадров, которые содержат user_message_uuid, и версии, которую требует каждый, смотрите user_message_uuid. Список всегда содержит user_message_uuid и содержит максимум 64 записи. Когда Claude Code подхватит обычное сообщение, которое вы отправили, пока ход выполнялся, он добавляет uuid этого сообщения в список результата. Когда первый ответ или результат содержит user_message_uuid без списка, он поступил из более ранней версии Claude Code, поэтому вернитесь к одному полю.

queued_turn_count

Количество сообщений, которые вы отправили с origin: { kind: "human" }, которые всё ещё ожидают в очереди команд, когда Claude Code создал результат. Требует Agent SDK v0.3.242 или позже. Что говорят вам 0 и отсутствующее поле:
  • 0: Claude Code не считает сообщения, которые вы отправили без этого origin, и не считает уведомления о задачах, поэтому ход может всё ещё следовать.
  • Отсутствует: финальный результат, который Claude Code выдаёт после сбоя или фатальной ошибки при запуске, опускает поле и может содержать обнулённые итоги.

SDKSystemMessage

Сообщение инициализации системы.
fast_mode_state сообщает состояние быстрого режима сеанса. Когда что-то блокирует быстрый режим, fast_mode_disabled_reason называет проверку, которая его заблокировала; поле требует Claude Code v2.1.219 или позже. Для кодов причин и их значений смотрите fast_mode_disabled_reason на сообщении результата. terminal_slash_commands называет записи в slash_commands, чей интерфейс привязан к локальному терминалу, такие как exit. Вы можете отправлять их как любую другую запись в slash_commands; поле существует, чтобы удалённый или мобильный клиент мог скрыть их из своих меню команд. Поле присутствует только, когда не пусто, и требует Agent SDK v0.3.229 или позже.
effort: уровень усилий, который Claude Code отправляет на следующий запрос сеанса, или null, когда он не отправляет ни один. Claude Code устанавливает поле только на сообщение инициализации, которое отправляет клиентам Remote Control, и опускает его из сообщения инициализации, которое читает ваше приложение. Требует Agent SDK v0.3.234 или позже. Массив capabilities называет поведения протокола, которые реализует этот CLI, поэтому вы можете обнаруживать функции вместо сравнения строк claude_code_version. Это открытый набор: игнорируйте значения, которые вы не распознаёте, и проверяйте конкретную возможность, поведение которой вы используете. Поле требует Claude Code v2.1.205 или позже и отсутствует на более ранних CLI.

SDKPartialAssistantMessage

Потоковое частичное сообщение (только когда includePartialMessages равен true). Поле parent_tool_use_id всегда имеет значение null: события потока выдаются только для основного сеанса. Для атрибуции подагента используйте полные сообщения, которые содержат parent_tool_use_id, или включите forwardSubagentText для получения текста и размышлений подагента в виде полных сообщений.
Claude Code устанавливает user_message_uuid и user_message_uuids на первое событие потока хода, не являющееся ping, и снова, когда сообщение, на которое отвечает ход, изменяется, при условиях в user_message_uuid.

SDKCompactBoundaryMessage

Сообщение, указывающее границу компактирования диалога.

SDKInformationalMessage

Универсальный текстовый баннер, выданный циклом. Содержит строки статуса без ошибок, обратную связь hook, такую как причина блокировки hook UserPromptSubmit, и вывод команды. На Claude Code v2.1.227 или позже, systemMessage hook может прибыть как это сообщение, с каждой строкой с префиксом имени hook, такой как PostToolUse:Bash says:. Прибывает ли systemMessage hook как это сообщение, зависит от события. Каждый раздел события на странице hooks говорит, как выводится вывод. Отобразите content как простой текст на заданном level.

SDKWorkerShuttingDownMessage

Выданное при корректном завершении работника, чтобы удалённые клиенты могли показать, почему работник исчез, вместо ожидания истечения времени ожидания сердцебиения. reason это короткая строка в формате snake_case, установленная хост-CLI, такая как "host_exit" или "remote_control_disabled". Действуйте на основе этого только при потоковой передаче в реальном времени. Возобновленный сеанс воспроизводит прошлые экземпляры этого сообщения, поэтому игнорируйте их в этом случае.

SDKPluginInstallMessage

Событие прогресса установки plugin. Выдаётся, когда установлена CLAUDE_CODE_SYNC_PLUGIN_INSTALL, поэтому ваше приложение Agent SDK может отслеживать установку marketplace plugin перед первым ходом. Статусы started и completed заключают в скобки общую установку. Статусы installed и failed сообщают об отдельных marketplaces и включают name.

SDKPermissionDeniedMessage

Событие потока, выданное, когда система разрешений отклоняет вызов инструмента без интерактивного запроса. Используйте его для отображения отклонения в вашем пользовательском интерфейсе по мере его возникновения, а не только наблюдая результат инструмента is_error, который следует за ним. Какие отклонения оно сообщает, зависит от того, как запуск обрабатывает запросы разрешений:
  • С callback canUseTool и по умолчанию permissionPrompts: 'host': запросы разрешений идут в ваш callback, и это событие сообщает об отклонениях, которые Claude Code решает самостоятельно без его вызова.
  • Ни с чем: голый запуск -p или query(), который не устанавливает ни canUseTool, ни permissionPromptToolName, отклоняет любой вызов инструмента, который бы запросил, и это событие сообщает об этих отклонениях, а также об отклонениях, которые Claude Code решает самостоятельно. До v2.1.223 Claude Code не выдавал это событие в запусках без callback.
  • С инструментом запроса MCP, установленным с permissionPromptToolName или флагом --permission-prompt-tool, и по умолчанию permissionPrompts: 'host': Claude Code вообще не выдаёт это событие, даже для отклонений правил, которые оно решает самостоятельно.
  • С permissionPrompts: 'none': Claude Code отклоняет вызовы, которые бы запросили, даже когда также установлены canUseTool или инструмент запроса MCP, и это событие сообщает об этих отклонениях, а также об отклонениях, которые Claude Code решает самостоятельно. Требует Claude Code v2.1.259 или позже.
В каждой конфигурации это событие пропускает любое отклонение, решённое на пути hook PreToolUse, независимо от того, отклонил ли hook вызов сам или правило отрицания переопределило решение hook разрешить или спросить. Событие также является лучшим усилием: иногда Claude Code записывает отклонение без выдачи этого события, поэтому permission_denials на сообщении результата является авторитетным записью.

SDKPermissionDenial

Информация об отклонённом использовании tool.

SDKContextUsage

Структурированная форма отчёта /context, переносимая как context_usage на SDKAssistantMessage, который доставляет результат /context. Agent SDK v0.3.232 и позже экспортируют тип. В отличие от SDKControlGetContextUsageResponse, он содержит только данные, необходимые для отображения разбивки использования, без полей отображения, таких как color и gridRows.
Таблица перечисляет, что Claude Code помещает в каждое поле. Поля от model до over_limit описывают сеанс в целом, и поля коллекции приписывают токены отдельным элементам. over_limit.kind записывает, как Claude Code разрешил окно, а не принимает ли API следующий запрос:
  • hard_limit: окно это то, что Claude Code считает собственным лимитом модели, за которым API отказывает запросы
  • compaction_window: окно это окно политики компактирования, которое может совпадать или не совпадать с лимитом модели
Claude Code развивает тип аддитивно, добавляя новые данные как опциональные поля, а не переформатируя существующие. Читайте поля, которые вы знаете, и игнорируйте любые, которые вы не распознаёте.

SDKContextUsageCategory

Одна строка разбивки использования /context по категориям.
Таблица перечисляет, что Claude Code помещает в каждое поле строки. Каждое значение kind говорит, что представляют собой токены строки:
  • used: содержимое, которое занимает контекстное окно
  • free: оставшееся окно
  • buffer: резерв компактирования
  • deferred: схемы инструментов, которые Claude Code держит вне окна и исключает из расчёта использования, перечисленные для осведомления

SDKMessageOrigin

Происхождение сообщения с ролью пользователя. Это появляется как origin на SDKUserMessage и передаётся на соответствующее SDKResultMessage, чтобы вы могли определить, что запустило данный ход.

Подвиды уведомлений о задачах

Когда Claude Code доставляет уведомление о задаче в сеанс, он устанавливает subkind на origin уведомления только если серверы Anthropic проверили, откуда поступило это уведомление. subkind требует Claude Code v2.1.213 или позже и принимает одно из двух значений: peer-send-message: уведомление это сообщение, которое другой из ваших сеансов отправил с инструментом send_message на стороне сервера, который используют сеансы Claude Code на веб-сайте для обмена сообщениями друг с другом, а не кросс-сеансовый инструмент SendMessage, и серверы Anthropic проверили, что оба сеанса принадлежат одной и той же приватной группе сеансов. Требует Claude Code v2.1.224 или позже. Доставка send_message, которую серверы не проверили таким образом, не получает subkind. Каждое другое уведомление о задаче не имеет subkind. Это включает запланированные задачи, которые срабатывают на вашей собственной машине, активность PR, доставленную в сеанс, и фоновые события, такие как завершённая задача. Сообщения от кросс-сеансового инструмента SendMessage вообще не являются уведомлениями о задачах: независимо от того, поступают ли они из сеанса на той же машине или через серверы Anthropic с другой машины, Claude Code даёт им kind: "peer" и поля происхождения пира.

Поля происхождения пира

Происхождение peer идентифицирует, какой агент отправил сообщение: внутрипроцессный товарищ по команде, отправляющий на main с SendMessage, или кросс-сеансовый пир, другой из ваших сеансов Claude Code. Кросс-сеансовые пиры требуют Claude Code v2.1.224 или позже на macOS и Linux; смотрите доступность кросс-сеансового обмена сообщениями для требования собственного Windows. Кросс-сеансовый пир может работать на той же машине или на другой из ваших машин или Claude Code на веб-сайте, когда его сообщение прибывает через Remote Control. Два вида отправителя заполняют поля по-разному:
  • from: имя товарища по команде или адрес отправителя для кросс-сеансового пира. Для одностороннего кросс-машинного сообщения отправитель не имеет адреса ответа и from это "unknown". Значение создано отправителем; verifiedPeerPid это проверенная идентичность.
fromMode: класс разрешений отправляющего сеанса, bypass или prompting, объявленный хостом, который передаёт сообщение пира между вашими сеансами, такой как настольное приложение. Claude Code читает его в получающем сеансе, когда применяет входящие элементы управления. Требует Agent SDK v0.3.234 или позже.
  • senderTaskId: ID задачи товарища по команде. Отсутствует для кросс-сеансового пира.
name: отображаемое имя отправителя, нормализованное Claude Code: оно удаляет управляющие символы Unicode, формат, суррогаты и разделители строк или абзацев, затем обрезает результат и ограничивает его 64 кодовыми точками с многоточием. Требует Claude Code v2.1.205 или позже.
body: декодированное тело сообщения с удалённой оболочкой пира, побайтово совпадающее с тем, что видит модель. Всегда присутствует для сообщения товарища по команде; для кросс-сеансового пира присутствует только, когда ход точно представляет собой одну оболочку пира, сформированную Claude Code. Отобразите name и body вместо повторного анализа текста сообщения. Требует Claude Code v2.1.205 или позже.
fromSession: ID сеанса отправителя, открываемый хостом, установленный хостом отправителя, чтобы ваш пользовательский интерфейс мог ссылаться обратно на отправляющий сеанс. Как from, это утверждение отправителя: используйте его только как цель навигации и не рассматривайте его как доказательство идентичности отправителя. Требует Claude Code v2.1.216 или позже.
verifiedPeerPid: ID процесса процесса, который подключился к сокету кросс-сеансового обмена сообщениями этого сеанса, проверенный ядром и прочитанный из самого соединения, никогда из полезной нагрузки. Используйте его, а не from, для идентификации отправителя: from может быть подделан любым процессом того же пользователя. Поле отсутствует, когда Claude Code не может его проверить, такой как на Windows или неокончательный ввод, поэтому отсутствующее значение означает, что отправитель не проверен. Для передаваемого трафика он идентифицирует реле, а не автора сообщения, и ID процессов перерабатываются, поэтому рассматривайте его как происхождение, а не как токен аутентификации. Требует Claude Code v2.1.216 или позже.

Типы hooks

Для полного руководства по использованию hooks с примерами и общими паттернами см. руководство Hooks.

HookEvent

Доступные события hooks.

HookCallback

Тип функции обратного вызова hook.

HookCallbackMatcher

Конфигурация hook с опциональным matcher.

HookInput

Тип объединения всех типов входных данных hook.

BaseHookInput

Базовый интерфейс, который расширяют все типы входных данных hook.
Поле prompt_id — это UUID, идентифицирующий пользовательский запрос, который в настоящий момент обрабатывается. Он совпадает с атрибутом prompt.id на событиях OpenTelemetry и отсутствует до первого ввода пользователя. Требуется Claude Code v2.1.196 или позже.

PreToolUseHookInput

PostToolUseHookInput

PostToolUseFailureHookInput

PostToolBatchHookInput

Срабатывает один раз после того, как каждый вызов инструмента в пакете разрешится, перед следующим запросом модели. tool_response содержит сериализованное содержимое tool_result, которое видит модель; форма отличается от структурированного объекта Output в PostToolUseHookInput.

PermissionDeniedHookInput

NotificationHookInput

UserPromptSubmitHookInput

UserPromptExpansionHookInput

SessionStartHookInput

SessionEndHookInput

StopHookInput

StopFailureHookInput

SubagentStartHookInput

SubagentStopHookInput

PreCompactHookInput

PostCompactHookInput

PreModelSwitchHookInput

Срабатывает перед тем, как запрошенное переключение модели вступит в силу. context_tokens и поля после него оценивают, какие затраты на повторную отправку разговора новой модели. Для полного описания полей и семантики блокирования см. PreModelSwitch.

PostModelSwitchHookInput

Срабатывает после изменения модели сессии. Он содержит те же поля, что и PreModelSwitchHookInput, с двумя дополнительными значениями source. См. PostModelSwitch.

PermissionRequestHookInput

SetupHookInput

TeammateIdleHookInput

TaskCreatedHookInput

TaskCompletedHookInput

ElicitationHookInput

ElicitationResultHookInput

ConfigChangeHookInput

InstructionsLoadedHookInput

DirectoryAddedHookInput

directory — это абсолютный путь к добавленной директории. source — это "slash_command", когда /add-dir добавил её, и "register_repo_root", когда это сделал запрос управления SDK.

WorktreeCreateHookInput

WorktreeRemoveHookInput

CwdChangedHookInput

FileChangedHookInput

MessageDisplayHookInput

HookJSONOutput

Возвращаемое значение hook.

AsyncHookJSONOutput

SyncHookJSONOutput

Типы входных данных tool

Документация схем входных данных для всех встроенных tools Claude Code. Эти типы экспортируются из @anthropic-ai/claude-agent-sdk и могут быть использованы для типобезопасного взаимодействия с tools.

ToolInputSchemas

Объединение типов входных данных tool, экспортируемое из @anthropic-ai/claude-agent-sdk; члены включают:

Agent

Имя tool: Agent. Предыдущее имя Task всё ещё принимается как псевдоним, и массив tools в сообщении инициализации SDKSystemMessage в настоящее время перечисляет этот tool как Task для обратной совместимости.
Поле mode устарело и игнорируется в Claude Code v2.1.212 или позже. Подагент работает либо в режиме разрешений родительской сессии, либо в режиме его определения permissionMode, и правила наследования подагента решают, какой из них.
Запускает нового агента для автономной обработки сложных многошаговых задач.

AskUserQuestion

Имя tool: AskUserQuestion
Задаёт пользователю уточняющие вопросы во время выполнения. См. Обработка одобрений и пользовательского ввода для деталей использования.

Bash

Имя tool: Bash
Выполняет команды Bash с опциональным timeout и фоновым выполнением. Рабочий каталог сохраняется между командами, включая команды, запущенные в более поздних ходах многоходовой сессии; состояние shell, такое как экспортированные переменные окружения, не сохраняется. Для ограничений на то, какие изменения каталога переносятся, см. Что сохраняется между командами.

Monitor

Имя tool: Monitor
Запускает фоновый источник и доставляет каждое событие к Claude, чтобы он мог реагировать без опроса: command запускает скрипт и выдаёт одно событие на строку stdout, а ws открывает WebSocket и выдаёт одно событие на текстовый фрейм. Укажите ровно один из command или ws. Источник ws требует Claude Code v2.1.195 или позже. Установите persistent: true для наблюдений на уровне сессии, таких как хвосты логов. Когда Monitor запускает команду, он следует тем же правилам разрешения, что и Bash; наблюдение WebSocket запрашивает одобрение отдельно. См. справочник tool Monitor для поведения и доступности провайдера. Экспортированный тип отмечает timeout_ms и persistent как обязательные, потому что схема заполняет их значения по умолчанию, 300000 и false; вызов, который их опускает, проходит валидацию.

TaskOutput

Имя tool: TaskOutput
TaskOutput устарело; предпочитайте Read на пути выходного файла задачи. Приведённые ниже схемы остаются действительными для hooks и обработчиков разрешений, которые встречают tool.
Получает вывод из выполняющейся или завершённой фоновой задачи.

Edit

Имя tool: Edit
Выполняет точные замены строк в файлах.

Read

Имя tool: Read
Читает файлы из локальной файловой системы, включая текст, изображения, PDF и Jupyter notebooks. Используйте pages для диапазонов страниц PDF (например, "1-5"). Для PDF Claude получает содержимое файла внутри tool_result вызова Read. Чтение, которое возвращает выход pdf output, содержит блок сводки text, за которым следует блок document. Чтение, которое возвращает выход parts, содержит блок сводки text, за которым следует один блок на извлечённую страницу: блок image или блок text, называющий страницу, когда Claude Code не смог отобразить её как изображение. До Agent SDK v0.3.242 Claude Code доставлял содержимое файла как отдельное сообщение user после результата tool.

Write

Имя tool: Write
Записывает файл в локальную файловую систему, перезаписывая, если он существует.

Glob

Имя tool: Glob
Быстрое сопоставление паттернов файлов, которое работает с любым размером кодовой базы.

Grep

Имя tool: Grep
Мощный tool поиска, построенный на ripgrep с поддержкой regex.

TaskStop

Имя tool: TaskStop
Останавливает выполняющуюся фоновую задачу или shell по ID. Начиная с v2.1.198, task_id также принимает товарища по команде agent-team или именованного фонового агента по ID агента или имени.

NotebookEdit

Имя tool: NotebookEdit
Редактирует ячейки в файлах Jupyter notebook.

WebFetch

Имя tool: WebFetch
Получает содержимое с URL и обрабатывает его с помощью модели AI.

WebSearch

Имя tool: WebSearch
Ищет в веб и возвращает отформатированные результаты.

Workflow

Имя tool: Workflow
Запускает динамический workflow: скрипт, который организует множество подагентов в фоне и возвращает один консолидированный результат. Tool Workflow доступен в Agent SDK v0.3.149 и позже. Требуется хотя бы один из script, name или scriptPath.

TodoWrite

Имя tool: TodoWrite
Создаёт и управляет структурированным списком задач для отслеживания прогресса.
The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn’t recognize, they aren’t available unless you opt in:
  • TodoWrite
  • TaskCreate
  • TaskGet
  • TaskUpdate
  • TaskList
Wherever the tools are available, Claude Code provides the four Task tools, or TodoWrite instead when you set CLAUDE_CODE_ENABLE_TASKS=0.This default set applies in Claude Code v2.1.268 and later, which the TypeScript Agent SDK bundles from v0.3.268.См. Доступность модели для подключения.

TaskCreate

Имя tool: TaskCreate
Создаёт одну задачу и возвращает её назначенный ID.

TaskUpdate

Имя tool: TaskUpdate
Исправляет одну задачу по ID. Установите status на "deleted" для её удаления.

TaskGet

Имя tool: TaskGet
Возвращает полные детали для одной задачи или null, когда ID не найден.

TaskList

Имя tool: TaskList
Возвращает снимок всех задач в текущем списке.

ExitPlanMode

Имя tool: ExitPlanMode
Выходит из режима планирования. Поле allowedPrompts устарело и игнорируется; Claude Code всё ещё принимает его, чтобы существующие вызывающие стороны и транскрипты проходили валидацию. До v2.1.205 он запрашивал разрешения Bash на основе запроса для реализации плана.

ListMcpResources

Имя tool: ListMcpResourcesTool
Перечисляет доступные MCP ресурсы из подключённых серверов.

ReadMcpResource

Имя tool: ReadMcpResourceTool
Читает определённый MCP ресурс с сервера.

EnterWorktree

Имя tool: EnterWorktree
Создаёт и входит во временный git worktree для изолированной работы. Передайте path для переключения в существующий worktree вместо создания нового. На первом входе целевой объект должен быть зарегистрированным worktree текущего репозитория или, в многорепозиторном рабочем пространстве, репозитория, вложенного внутри него; из сессии worktree он должен находиться под .claude/worktrees/ репозитория сессии. name и path являются взаимоисключающими.

ExitWorktree

Имя tool: ExitWorktree
Выходит из текущего git worktree и возвращается в исходный рабочий каталог. Действие keep оставляет worktree и ветку на диске, а remove удаляет оба. discard_changes должно быть true при удалении worktree, который имеет незафиксированные файлы или неслитые коммиты.

EnterPlanMode

Имя tool: EnterPlanMode
Входит в режим планирования, где Claude исследует и представляет план перед внесением изменений.

CronCreate

Имя tool: CronCreate
Планирует запуск запроса по расписанию cron из 5 полей в локальном времени. Установите recurring на false для срабатывания один раз при следующем совпадении. Задачи по умолчанию ограничены сессией: запуск новой беседы очищает их, а возобновление с --resume или --continue восстанавливает задачи, которые не истекли. См. Запланированные задачи. Установка durable на true запрашивает сохранение в .claude/scheduled_tasks.json, чтобы задача пережила перезагрузки. Долговечное планирование доступно не в каждой сессии: когда оно недоступно, Claude Code принимает durable: true, но создаёт задачу только для сессии. Прочитайте поле durable в выводе, чтобы увидеть, сохранилась ли задача.

CronDelete

Имя tool: CronDelete
Удаляет запланированную задачу cron по ID, возвращённому из CronCreate.

CronList

Имя tool: CronList
Перечисляет запланированные задачи cron: долговечные задачи из .claude/scheduled_tasks.json и задачи только для сессии из текущей сессии.

ScheduleWakeup

Имя tool: ScheduleWakeup
Планирует одноразовое пробуждение, которое срабатывает заданный запрос после задержки. Этот tool поддерживает команду /loop с собственным темпом. Среда выполнения зажимает delaySeconds между 60 и 3600 секундами. Поля delaySeconds, reason, prompt и noop обязательны, если stop не true. noop: true сообщает о пробуждении, где ничего не изменилось. Установка stop: true отменяет ожидающее пробуждение и завершает самостоятельный /loop. Поле stop требует Claude Code v2.1.202 или позже. См. строку ScheduleWakeup в справочнике tools.

RemoteTrigger

Имя tool: RemoteTrigger
Управляет Routines, запланированными и активируемыми запусками Claude Code, размещёнными в облаке. Этот tool поддерживает команду /schedule. trigger_id обязателен для действий get, update, run и list_runs. body обязателен для create, update и create_webhook_trigger, и опционален для run. create_webhook_trigger присоединяет источник событий к существующей routine, такой как событие GitHub, которое её срабатывает. body называет источник, события и routine для срабатывания. Требует Claude Code v2.1.225 или позже. list_runs перечисляет недавние запуски routine, а get_run_log читает журнал одного запуска. session_id называет запуск для чтения из результата list_runs, а cursor разбивает результаты любого действия на страницы. Оба действия требуют Claude Code v2.1.227 или позже. Этот tool доступен только когда сессия аутентифицирована с учётной записью claude.ai на плане с включённой функцией Routines, и отсутствует, когда политика вашей организации отключает Claude Code в веб. В Claude Code v2.1.227 или позже tool также отсутствует, когда Owner отключил routines для организации. До v2.1.227 сессия с отключённым только переключателем routines всё ещё показывала tool, и сервер отклонял его вызовы.

PushNotification

Имя tool: PushNotification
Отправляет проактивное push-уведомление пользователю. Держите message под 200 символами, потому что мобильные операционные системы обрезают более длинный текст. См. строку PushNotification в справочнике tools для доступности провайдера; доставка push проходит через инфраструктуру, размещённую Anthropic, которая недоступна из Amazon Bedrock, Claude Platform на AWS, Google Cloud’s Agent Platform или Microsoft Foundry.

REPL

Имя tool: REPL
Выполняет код JavaScript в постоянном REPL. Состояние сохраняется между вызовами и поддерживается top-level await. timeout в миллисекундах, по умолчанию 30000 и максимум 600000. Типы экспортируются, но tool отключён в сессиях SDK, если вы не установите CLAUDE_CODE_REPL=1 в опции env. Он также требует исполняемый файл claude на основе Bun, который предоставляет встроенный установщик.

ReportFindings

Имя tool: ReportFindings
Сообщает о результатах проверки кода как структурированный список, чтобы Claude Code мог их отобразить вместо вывода их как текст. level — это уровень усилий, на котором выполнялась проверка. Результаты упорядочены от наиболее серьёзных, максимум 32 на вызов, и массив пуст, когда ничего не выжило. Требует Claude Code v2.1.196 или позже. Каждый результат содержит эти поля:
  • file: путь, относительный к репозиторию, в котором находится результат. Опциональный line — это 1-индексированная строка, к которой он привязан.
  • summary: однострочное утверждение дефекта. failure_scenario описывает конкретные входные данные и состояние, которые приводят к неправильному выводу или сбою.
  • short_summary: опциональный сжатый ярлык максимум 60 символов для компактного отображения. Требует Claude Code v2.1.212 или позже.
  • category: опциональный короткий kebab-case слаг типа результата, такой как correctness или test-coverage. Требует Claude Code v2.1.199 или позже.
  • verdict: устанавливается, когда выполнялся проход проверки; отсутствует при встроенных проверках.
  • outcome: устанавливается только при повторном сообщении после применения исправлений.

Artifact

Имя tool: Artifact
Публикует локальный файл .html или .md как размещённую страницу артефакта или перечисляет опубликованные артефакты пользователя. Опустите action или передайте "publish" для публикации file_path, который обязателен для действия публикации вместе с favicon, одним или двумя эмодзи, которые отмечают артефакт в галерее пользователя. title называет опубликованную страницу на вкладке браузера и в галерее, когда HTML файл не имеет тега <title>. url нацеливается на существующий артефакт для обновления на месте вместо создания нового. force — это последняя мера перезаписи, которая отбрасывает более новую версию, опубликованную другой сессией. При конфликте неудачная публикация возвращает более новое содержимое; Claude объединяет его изменения с этим содержимым или повторно читает артефакт и публикует снова. Передавайте force только, когда пользователь явно просит отбросить эту версию. Передайте "list" для перечисления опубликованных артефактов пользователя; только limit и scope могут его сопровождать. scope по умолчанию "mine", который перечисляет артефакты, которыми владеет пользователь; "shared" перечисляет артефакты, которыми другие люди поделились с пользователем, и "all" перечисляет оба.
  • capabilities: возможности среды выполнения, которые использует опубликованная страница, ключ по названию возможности, такой как коннекторы, которые может вызывать страница. Сервис артефактов проверяет объявление и отклоняет публикацию, которая называет возможность, которую учётная запись не может использовать, или даёт ей недействительную конфигурацию. Передайте {} для очистки сохранённого объявления и опустите поле при повторном развёртывании, чтобы сохранить его. Требует Agent SDK v0.3.235 или позже.
  • contract: версия среды выполнения, на которой работает опубликованная страница. Опустите её, чтобы сохранить текущую версию артефакта, передайте "latest" для обновления или передайте конкретную версию для закрепления или отката. Требует Agent SDK v0.3.235 или позже.
Типы экспортируются, но tool отключён по умолчанию в сессиях Agent SDK. Публикация также требует каждого условия в таблице доступности артефактов, которые сессии, аутентифицированные с помощью ключа API, не удовлетворяют.

Projects

Имя tool: Projects
Читает и записывает Project claude.ai, присоединённый к сессии. Отправляет по method:
  • project_info: возвращает метаданные проекта и список документов.
  • project_read: читает один документ по path.
  • project_search: запрашивает базу знаний проекта с помощью query. n ограничивает совпадения и по умолчанию равно 5.
  • project_write: создаёт или заменяет документ по path из ровно одного из content, который содержит встроенный текст, или local_path, который называет файл внутри рабочего каталога. present_to_user: true отмечает написанный документ как доставляемый результат, который пользователю нужно увидеть.
  • project_delete: удаляет документ по path.

ReadMcpResourceDir

Имя tool: ReadMcpResourceDirTool
Перечисляет прямых потомков ресурса каталога на сервере MCP. Используется только для сервера, который объявил поддержку перечисления каталогов; перечисление не является рекурсивным. Перечисление каталогов не включено в каждой сессии: когда оно отключено, вызов возвращает пустой список resources и поле error сообщает, что перечисление каталогов не включено.

RefreshMcpTools

Имя tool: RefreshMcpTools
Повторно запрашивает список tools подключённых серверов MCP и применяет любые изменения. Типы экспортируются, но Claude Code регистрирует tool только, когда вы установите CLAUDE_CODE_ENABLE_REFRESH_MCP_TOOLS=1 в опции env, и только в сессиях с хотя бы одним сервером MCP. Требует Claude Code v2.1.211 или позже.

ShowOnboardingRolePicker

Имя tool: ShowOnboardingRolePicker
Отображает кликабельную строку выбора ролей во время адаптации Cowork, чтобы пользователь мог выбрать свою роль и получить установленный соответствующий плагин. Не принимает аргументы; список ролей определяется клиентом. Вызов блокируется до ответа пользователя.

McpInput

Имя tool: динамические имена tools MCP формы mcp__<server>__<tool>
Аргументы tools MCP — это открытый объект: каждый сервер определяет свои собственные параметры, поэтому тип не накладывает ограничений на имена полей или значения. Обратитесь к собственной схеме tools сервера для полей, которые принимает конкретный tool.

Типы выходных данных Tool

Документация схем выходных данных для всех встроенных tools Claude Code. Эти типы экспортируются из @anthropic-ai/claude-agent-sdk и представляют фактические данные ответа, возвращаемые каждым tool.

ToolOutputSchemas

Объединение типов выходных данных tool, экспортируемых из @anthropic-ai/claude-agent-sdk; члены включают:

Agent

Имя tool: Agent. Предыдущее имя Task всё ещё принимается как псевдоним, и массив tools в инициализирующем сообщении SDKSystemMessage в настоящее время перечисляет этот tool как Task для обратной совместимости.
Возвращает результат от подагента. Дискриминирован по полю status: "completed" для завершённых задач, "async_launched" для фоновых задач и "remote_launched" для задач, которые Claude Code отправил в удалённый облачный сеанс, где sessionUrl ссылается на этот сеанс и taskId его идентифицирует. На варианте completed resolvedModel называет модель, на которой подагент начал работу, которая может отличаться от запрошенного входного параметра model когда применяется availableModels или другое переопределение. Это поле требует Claude Code v2.1.174 или позже. На async_launched оно называет модель в использовании, когда задача перешла в фоновый режим. modelsUsed перечисляет модели, которые использовал подагент, по порядку. Поле присутствует только когда произошла замена модели во время выполнения, и модель появляется снова, когда выполнение вернулось к ней. На async_launched список охватывает модели, использованные перед переводом в фоновый режим. Оба modelsUsed и поведение фонового режима resolvedModel требуют Claude Code v2.1.212 или позже. Если Claude Code сохранил изолированный worktree подагента, worktreePath в результате completed указывает, где его найти. worktreeBranch — это его ветка, присутствующая, когда Claude Code создал worktree с git. Claude Code заполняет usage и totalTokens из финального запроса API подагента, а не из всего выполнения, поэтому usage.service_tier — это строка уровня обслуживания, которую API сообщила в этом запросе. Когда присутствует, usage.output_tokens_details.thinking_tokens — это количество токенов вывода этого запроса, которые были токенами мышления. Поле output_tokens_details требует TypeScript SDK v0.3.228 или позже, который поставляется с Claude Code v2.1.228. usage.output_tokens_details соответствует Usage.output_tokens_details по смыслу, ограниченному этим финальным запросом, но каждый уровень здесь является необязательным. Защитите как объект, так и поле, например usage.output_tokens_details?.thinking_tokens ?? 0, вместо прямого чтения. До v2.1.207 опубликованный тип был более узким. Он опускал worktreePath, worktreeBranch, citations, toolStats.frameCount и поля использования inference_geo, speed и iterations, и он типизировал service_tier как "standard" | "priority" | "batch". Поля, которые тип отмечает как необязательные, могут отсутствовать в результатах, записанных более ранними версиями.

AskUserQuestion

Имя tool: AskUserQuestion
Возвращает заданные вопросы и ответы пользователя. response устанавливается, когда пользователь ввёл свободный ответ вместо ответа на структурированные вопросы; когда присутствует, Claude получает “Пользователь ответил: …” вместо списка ответов по вопросам.

Bash

Имя tool: Bash
Поля stdout, stderr и backgroundTaskId содержат: timedOutAfterMs — это timeout в миллисекундах, установленный, когда команда достигла своего timeout и перешла в фоновый режим вместо явного запуска там. backgroundCwdHint устанавливается, когда фоновая команда содержала встроенную команду изменения директории, такую как cd, pushd, popd или chdir, и отмечает, что рабочая директория сеанса не изменилась. Оба поля требуют Claude Code v2.1.210 или позже. Когда подагент, работающий на переднем плане, владеет фоновой командой, Claude Code завершает команду, когда этот подагент даёт свой финальный ответ. Claude Code устанавливает backgroundEndsWithFinalResponse в true на таких командах и опускает поле, когда команда сохраняется в течение хода, как команды, запущенные основным разговором или фоновыми подагентами. Поле требует Claude Code v2.1.227 или позже. Claude Code устанавливает gitOperation.commit.branch в ветку, названную в строке сводки коммита git, и опускает её для коммита, сделанного на отсоединённом HEAD. Поле требует Agent SDK v0.3.227 или позже. Claude Code сообщает команду gh pr reopen как действие PR reopened, что требует Agent SDK v0.3.234 или позже.

Monitor

Имя tool: Monitor
Возвращает ID фоновой задачи для выполняющегося монитора. Используйте этот ID с TaskStop для раннего отмены наблюдения.

Edit

Имя tool: Edit
Возвращает структурированный diff операции редактирования.

Read

Имя tool: Read
Возвращает содержимое файла в формате, подходящем для типа файла. Дискриминирован по полю type.

Write

Имя tool: Write
Возвращает результат записи с информацией структурированного diff. То, что содержат originalFile и structuredPatch, зависит от записи:
  • Для вновь созданного файла originalFile равен null и structuredPatch пуст
  • При перезаписи originalFile содержит предыдущее содержимое, за исключением случаев, когда это содержимое больше примерно 10 МБ: Claude Code затем пропускает diff и возвращает originalFile null и structuredPatch пуст
  • structuredPatch также пуст, когда запись ничего не изменила или diff истёк по времени

Glob

Имя tool: Glob
Возвращает пути файлов, соответствующие паттерну glob, отсортированные по времени изменения. totalMatches и countIsComplete требуют Claude Code v2.1.191 или позже. totalMatches сообщает количество совпадающих файлов перед усечением. Когда countIsComplete равен false, totalMatches является нижней границей, потому что базовый поиск усёк свой собственный вывод.

Grep

Имя tool: Grep
Возвращает результаты поиска. Форма варьируется по mode: список файлов, содержимое с совпадениями или количество совпадений. В режиме count numFiles и numMatches — это итоги по полному набору результатов, а не по разбитому на страницы срезу. До v2.1.208 head_limit или offset, который усекал перечисленные записи, также усекал эти итоги. totalFiles требует Claude Code v2.1.208 или позже и сообщает общее количество результатов перед head_limit и offset разбиением на страницы в режиме files_with_matches. totalLines требует Claude Code v2.1.210 или позже и сообщает общее количество строк перед разбиением на страницы в режиме content.

TaskStop

Имя tool: TaskStop
Возвращает подтверждение после остановки фоновой задачи.

NotebookEdit

Имя tool: NotebookEdit
Возвращает результат редактирования notebook с исходным и обновлённым содержимым файла.

WebFetch

Имя tool: WebFetch
Возвращает полученное содержимое с HTTP статусом и метаданными. artifactRead — это собственная запись Claude Code о прочитанном артефакте, присутствующая только когда Claude получил артефакт, который сеанс может опубликовать. Claude Code читает его обратно, когда сеанс возобновляется, чтобы последующая публикация строилась на правильной версии; ваш код не должен действовать на это. slug называет артефакт, ver — это версия, которую чтение записало, и отсутствует, когда оно ничего не записало, и seeded: false отмечает чтение, чей полный источник не достиг Claude. Поле seeded требует Agent SDK v0.3.239 или позже.

WebSearch

Имя tool: WebSearch
Возвращает результаты поиска из веб.

Workflow

Имя tool: Workflow
Возвращает результат сразу после того, как tool принимает вызов. Окончательный результат поступает позже как завершение задачи. Проверьте error перед тем, как рассматривать запуск как начатый: скрипт, который не прошёл проверку синтаксиса, возвращает status: "async_launched" с установленным error и никогда не запускается.

TodoWrite

Имя tool: TodoWrite
Возвращает предыдущие и обновлённые списки задач.
The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn’t recognize, they aren’t available unless you opt in:
  • TodoWrite
  • TaskCreate
  • TaskGet
  • TaskUpdate
  • TaskList
Wherever the tools are available, Claude Code provides the four Task tools, or TodoWrite instead when you set CLAUDE_CODE_ENABLE_TASKS=0.This default set applies in Claude Code v2.1.268 and later, which the TypeScript Agent SDK bundles from v0.3.268.Смотрите Доступность модели для подключения.

TaskCreate

Имя tool: TaskCreate
Возвращает созданную задачу с назначенным ей ID.

TaskUpdate

Имя tool: TaskUpdate
Возвращает результат обновления, включая какие поля изменились.

TaskGet

Имя tool: TaskGet
Возвращает полную запись задачи или null когда ID не найден.

TaskList

Имя tool: TaskList
Возвращает снимок всех задач в текущем списке.

ExitPlanMode

Имя tool: ExitPlanMode
Возвращает состояние плана после выхода из режима планирования.

ListMcpResources

Имя tool: ListMcpResourcesTool
Возвращает массив доступных MCP ресурсов.

ReadMcpResource

Имя tool: ReadMcpResourceTool
Возвращает содержимое запрошенного MCP ресурса.

EnterWorktree

Имя tool: EnterWorktree
Возвращает информацию о git worktree.

ExitWorktree

Имя tool: ExitWorktree
Возвращает действие, которое было предпринято, и детали о worktree, из которого был выход.

EnterPlanMode

Имя tool: EnterPlanMode
Возвращает подтверждение того, что режим планирования был активирован.

CronCreate

Имя tool: CronCreate
Возвращает ID задачи и понятное для человека описание расписания.

CronDelete

Имя tool: CronDelete
Возвращает ID удалённой задачи.

CronList

Имя tool: CronList
Возвращает запланированные cron задачи: долговечные задачи из .claude/scheduled_tasks.json и задачи только для сеанса из текущего сеанса. Задача только для сеанса содержит durable: false; задачи, прочитанные с диска, опускают поле.

ScheduleWakeup

Имя tool: ScheduleWakeup
Возвращает, когда пробуждение сработает как временная метка эпохи в миллисекундах, задержку, которая была фактически использована, и была ли запрошенная задержка ограничена. Поле stopped равно true, когда вызов завершил цикл с stop: true. Это требует Claude Code v2.1.202 или позже. Поле cancelledWakeups подсчитывает, сколько ожидающих пробуждений отменил вызов stop: true. Значение 0 означает, что ничего не было в ожидании, и повторяющийся /loop cron не отменяется stop: true. Это требует Claude Code v2.1.206 или позже.

RemoteTrigger

Имя tool: RemoteTrigger
Возвращает статус ответа API и тело для операции триггера.

PushNotification

Имя tool: PushNotification
Возвращает детали доставки, включая была ли отправлена push или локальное уведомление и почему доставка была пропущена.

REPL

Имя tool: REPL
Возвращает результат выполнения, захваченный вывод консоли и любые изображения или документы, выявленные внутренними вызовами Read.

ReportFindings

Имя tool: ReportFindings
Возвращает количество выявленных результатов, уровень усилий, на котором работала проверка, и результаты, повторённые обратно для тела результата. Требует Claude Code v2.1.196 или позже. Повторённое поле short_summary требует Claude Code v2.1.212 или позже.

Artifact

Имя tool: Artifact
Возвращает url опубликованной страницы и локальный path, который был опубликован для действия публикации, с updated, установленным в true, когда публикация переразвернула существующий артефакт, и warnings, содержащие любые рекомендации времени публикации. Действие списка возвращает строки artifacts вместо этого, с truncated, установленным, когда существует больше артефактов, чем запрошенный лимит. На списках, чья область не "mine", каждая строка содержит rel, отмечающий, владеет ли пользователь артефактом или он был с ними поделён, и scope вывода записывает, какая область, отличная от по умолчанию, произвела список; оба отсутствуют на списках по умолчанию.

Projects

Имя tool: Projects
Дискриминирован по полю method, отражающему входные данные. project_read возвращает небольшие текстовые документы встроенными в content и записывает более крупные документы в путь local_file вместо этого; project_search возвращает RAG hits с rag: true, когда индекс проекта доступен, и возвращается к списку пути docs в противном случае.

ReadMcpResourceDir

Имя tool: ReadMcpResourceDirTool
Возвращает прямых потомков ресурса директории. Поддиректории появляются с mimeType "inode/directory"; error содержит понятное для человека сообщение, когда сервер не смог перечислить директорию.

RefreshMcpTools

Имя tool: RefreshMcpTools
Возвращает одну запись на сервер: refreshed означает, что переопрошенный список tools был применён, error означает, что переопрос не удался и предыдущий набор tools был сохранён, и not_connected означает, что сервер не имеет живого соединения для опроса.

ShowOnboardingRolePicker

Имя tool: ShowOnboardingRolePicker
Возвращает выбор пользователя: role, когда они выбрали чип роли или ввели один, и dismissed: true, когда они закрыли средство выбора. Пустой объект означает, что пользователь одобрил вызов без выбора роли.

McpOutput

Имя tool: динамические имена MCP tools вида mcp__<server>__<tool>
Результаты MCP tools возвращаются как строка или массив блоков содержимого, в зависимости от сервера. Конечная ветка простого объекта в экспортируемом типе — это артефакт генерации схемы: SDK не возвращает простой объект, потому что структурированный вывод сервера сериализуется в строку JSON перед возвратом. Во время выполнения значение также может быть undefined, хотя экспортируемый тип это не моделирует.

Типы разрешений

PermissionUpdate

Операции для обновления разрешений.

PermissionBehavior

PermissionUpdateDestination

PermissionRuleValue

Другие типы

ApiKeySource

Источник API ключа для запросов сессии, сообщаемый как apiKeySource в инициализирующем сообщении SDKSystemMessage.
Claude Code сообщает одно из четырёх значений: Agent SDK v0.3.234 и позже перечисляют эти четыре значения в типе. Тип также сохраняет user, project, org, temporary и oauth, чтобы старый код всё ещё компилировался, и Claude Code их не сообщает.

SdkBeta

Доступные бета-функции, которые можно включить через опцию betas. См. Beta headers для дополнительной информации.
Бета context-1m-2025-08-07 снята с производства по состоянию на 30 апреля 2026 года. Передача этого значения с Claude Sonnet 4.5 или Sonnet 4 не имеет эффекта, и запросы, превышающие стандартное окно контекста 200k-токенов, возвращают ошибку. Для использования окна контекста 1M-токенов перейдите на Claude Opus 5, Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7 или Claude Opus 4.8, которые включают контекст 1M по стандартной цене без требуемого заголовка beta.

SlashCommand

Информация о доступной команде.

ModelInfo

Информация о доступной модели.

AgentInfo

Информация о доступном подагенте, который может быть вызван через tool Agent.

McpServerStatus

Статус подключённого MCP сервера.

McpServerStatusConfig

Конфигурация MCP сервера, как сообщается mcpServerStatus(). Это объединение всех типов транспорта MCP сервера.
См. McpServerConfig для деталей по каждому типу транспорта.

AccountInfo

Информация об учётной записи для аутентифицированного пользователя.

ModelUsage

Статистика использования для каждой модели, возвращаемая в сообщениях результата. Значение costUSD это оценка на стороне клиента. См. Отслеживание стоимости и использования для предостережений выставления счётов.
thinkingTokens подсчитывает токены мышления, которые сгенерировала эта модель. outputTokens уже включает их, поэтому не складывайте эти два значения вместе. Поле отсутствует до тех пор, пока ход не запустится на версии Claude Code, которая его записывает, поэтому возобновлённая сессия, которая началась на более ранней версии, сообщает частичный подсчёт. thinkingTokens требует Agent SDK v0.3.257 или позже. Поля canonicalModel и provider требуют Claude Code v2.1.218 или позже. canonicalModel это канонический идентификатор модели, который используется для поиска цены; он может отличаться от исходной строки модели, которая является ключом записи, например, когда эта строка это идентификатор провайдера или псевдоним. provider называет API бэкенд, который обслуживал модель, такой как firstParty, bedrock, vertex, foundry, anthropicAws, mantle или gateway. costBasis называет таблицу цен, которая установила цену на последний запрос модели: list для цены списка, managed для таблицы modelPricing или unknown, когда ни одна не совпала с идентификатором модели. Поле требует Claude Code v2.1.246 или позже.

ConfigScope

NonNullableUsage

Версия Usage со всеми nullable полями, сделанными non-nullable.

Usage

Статистика использования токенов. Это тип BetaUsage из @anthropic-ai/sdk.
BetaServerToolUsage, BetaIterationsUsage и BetaOutputTokensDetails определены в @anthropic-ai/sdk. output_tokens_details разбивает выставленный счёт по категориям. В настоящее время он содержит одно поле, thinking_tokens: number, подсчитывающее выходные токены, которые модель сгенерировала как внутреннее рассуждение, включая разделители блока мышления. Поле output_tokens_details требует TypeScript SDK v0.3.228 или позже, который поставляется с Claude Code v2.1.228.
  • Выставление счётов: читайте разбивку для наблюдаемости, а не для выставления счётов. output_tokens остаётся авторитетным итогом, и output_tokens - thinking_tokens приблизительно соответствует выходу без рассуждений.
  • Что подсчитывает: исходное рассуждение, которое произвела модель, которое может быть длиннее текста мышления, возвращённого в теле ответа. API вычисляет его путём повторной токенизации этого исходного текста, поэтому он может отличаться от точного подсчёта генерации модели на несколько токенов.
  • Потоковая передача: на потоковых сообщениях ассистента эта разбивка, как и output_tokens, это заполнитель message_start и не содержит реального подсчёта, поэтому читайте её из сообщения результата usage как Читайте выходные токены из сообщения результата описывает. На сообщении результата thinking_tokens читает 0, когда модель или провайдер не сообщает разбивку.
  • Случаи null: output_tokens_details сам по себе это null на сообщениях ассистента, которые Claude Code синтезирует, такие как сообщения об ошибках API.

CallToolResult

Тип результата MCP tool (из @modelcontextprotocol/sdk/types.js). structuredContent это объект JSON, который может быть возвращён вместе с content, включая блоки изображений. См. Возврат структурированных данных.
Один файл, который MCP tool вернул по ссылке. Claude Code создаёт каждую запись из блока resource_link в результате tool и доставляет список как resourceLinks на SDKUserMessage.tool_use_result или как resource_links на SDKTaskNotificationMessage, когда вызов завершился в фоне. Требует Agent SDK v0.3.257 или позже.
Claude Code отбрасывает блок, чей uri или name не является строкой, и опускает опциональное поле, чьё значение не соответствует указанному типу.

ThinkingConfig

Контролирует поведение мышления/рассуждения Claude. Имеет приоритет над устаревшим maxThinkingTokens.
Опциональное поле display контролирует, возвращается ли текст мышления "summarized" или "omitted". На Claude Opus 4.7 и позже, значение по умолчанию API это "omitted", поэтому установите "summarized" для получения содержимого мышления в блоках thinking. Claude Code не отправляет display на Amazon Bedrock или Google Cloud’s Agent Platform, поэтому на этих провайдерах Opus 4.7 и позже возвращают пустые блоки thinking даже когда вы установите display на "summarized".

SpawnedProcess

Интерфейс для пользовательского запуска процесса (используется с опцией spawnClaudeCodeProcess). ChildProcess уже удовлетворяет этому интерфейсу.

SpawnOptions

Опции, передаваемые пользовательской функции spawn.
Поле signal сообщает вашей функции spawn, когда нужно разобрать процесс. Передайте его как опцию signal в spawn() Node, или передайте его обработчику разборки вашей VM или контейнера.Этот сигнал не срабатывает в момент отмены Options.abortController. SDK сначала закрывает stdin процесса и ждёт около двух секунд, чтобы CLI мог корректно завершить работу, затем отменяет этот сигнал. Чтобы реагировать в момент отмены вызывающей стороной, слушайте на вашем собственном Options.abortController.signal, на который может ссылаться ваша функция spawn из её охватывающей области.

McpSetServersResult

Результат операции setMcpServers().
Когда вы вызываете setMcpServers(), Claude Code применяет эти правила:
  • Серверы, которые вызов не называет: Claude Code держит серверы, предоставленные плагинами, работающими. Требует Agent SDK v0.3.210 или позже.
  • Серверы, которые вызов называет: за исключением встроенных серверов, которые CLI запустил при запуске, Claude Code заменяет работающий сервер только когда его конфигурация отличается от переданной вами.
  • Встроенные серверы, которые CLI запустил при запуске: если вызов называет один, Claude Code отбрасывает эту запись и сообщает её в errors.
Обещание разрешается после того, как вновь добавленные stdio, HTTP и SSE серверы подключатся или не смогут подключиться, поэтому tools из серверов, которые подключились, доступны на следующем ходу. added перечисляет серверы, которые Claude Code добавил или заменил, подключились они или нет. Сервер, который не смог подключиться, появляется как в added, так и в errors, с текстом ошибки под errors и строкой failed в mcpServerStatus(). До Claude Code v2.1.257 сервер, попытка подключения которого выбросила исключение, сообщался только под errors.

RewindFilesResult

Результат операции rewindFiles().
skippedLinks подсчитывает отслеживаемые пути, которые перемотка отказалась восстанавливать или удалять для безопасности ссылок: символическая ссылка, жёсткая ссылка или другой не обычный файл по отслеживаемому пути, родительский каталог, который больше не разрешается туда, где он указывал при создании контрольной точки, или резервная копия, которая не могла быть прочитана безопасно. Поле требует Claude Code v2.1.216 или позже. Предварительный вызов с rewindFiles(userMessageId, { dryRun: true }) никогда его не устанавливает.

SDKStatusMessage

Сообщение обновления статуса (например, компактирование).

SDKTaskNotificationMessage

Уведомление, когда фоновая задача завершается, не работает или остановлена. Фоновые задачи включают команды Bash run_in_background, наблюдения Monitor и фоновые подагенты. Для поля ambient см. SDKTaskStartedMessage, которое его определяет и его требование версии.
Когда Claude Code перемещает долгий вызов MCP tool в фоновый режим, блок tool_result для этого вызова содержит только заполнитель и реальный результат вызова приходит в этом уведомлении. Сопоставьте уведомление с вызовом с помощью tool_use_id. На уведомлении completed, resource_links перечисляет файлы, которые tool вернул по ссылке как записи SDKMcpResourceLink, с теми же ограничениями 50-ссылок и 64 KiB, что и tool_use_result.resourceLinks. Claude Code опускает resource_links, когда результат не имел ссылок и на уведомлениях для задач, которые не являются вызовами MCP tool. resource_links требует Agent SDK v0.3.257 или позже. Claude Code добавляет уведомление к каждому уведомлению задачи, которое он отправляет модели, за исключением доставок с меткой подвида scheduled-trigger, которые несут вместо этого фреймворк назначенной задачи. Уведомление указывает, что не произошло никакого взаимодействия с человеком, поэтому модель не рассматривает уведомление как инструкцию пользователя или одобрение. Чтобы обнаружить ход уведомления задачи, проверьте origin.kind === "task-notification" на SDKUserMessage или SDKResultMessage вместо сопоставления текста уведомления. Читайте subkind из того же поля, если вам нужно знать, что его вызвало. До v2.1.205 Claude Code оставлял уведомление на уведомлениях, которые приходили, пока сессия была неактивна.

SDKToolUseSummaryMessage

Резюме использования tool в диалоге.

SDKHookStartedMessage

Выдаётся, когда hook начинает выполняться. Claude Code доставляет это сообщение, SDKHookProgressMessage и SDKHookResponseMessage в поток сообщений немедленно, включая во время выполнения hook SessionStart или Setup во время запуска сессии. Claude Code v2.1.169 через v2.1.203 доставляли эти сообщения в одном пакете после завершения hook SessionStart или Setup; v2.1.204 восстановил живую доставку.

SDKHookProgressMessage

Выдаётся во время выполнения hook с выводом stdout/stderr.

SDKHookResponseMessage

Выдаётся, когда hook завершает выполнение.

SDKToolProgressMessage

Выдаётся периодически во время выполнения tool для указания прогресса.
Пока вызов tool выполняется в основном диалоге, Claude Code выдаёт сообщение tool_progress каждые 30 секунд с heartbeat: true. Каждый heartbeat содержит имя tool и прошедшие секунды, поэтому вы можете отличить долгоживущий вызов от зависшей сессии. Claude Code не выдаёт heartbeats для вызовов tool внутри подагента. Поле heartbeat требует Agent SDK v0.3.214 или позже. До v2.1.257 Claude Code не выдавал heartbeats для вызова Agent tool на переднем плане либо. На сообщениях tool_progress для tool Agent, кроме heartbeats, subagent_type называет работающий тип подагента, такой как general-purpose. subagent_retry присутствует, пока этот подагент ждёт отката ошибки API, такой как ограничение скорости или перегрузка, с одним сообщением на попытку повтора. Оба поля требуют Agent SDK v0.3.214 или позже. Чтобы отобразить индикатор повтора из subagent_retry:
  • Отслеживайте индикатор по parent_tool_use_id, который уникален для каждого подагента. tool_use_id совместно используется параллельными подагентами из одного хода ассистента, поэтому отслеживание по нему позволило бы обновлению одного подагента очистить индикатор другого.
  • Очистите индикатор, когда позже приходит tool_progress для того же parent_tool_use_id без subagent_retry и без heartbeat: true, или когда приходит сообщение результата tool. Кадры с heartbeat: true сообщают только о живости, поэтому сохраняйте индикатор, когда один приходит. attempt может превышать max_retries при постоянном повторе, поэтому не выводите очистку из счётчиков.
  • Рассматривайте error_category как токен для выбора вашего собственного текста сообщения, а не как текст отображения. Значения это rate_limit, overloaded, authentication_failed, server_error, cloud_credential_error и unknown. Обрабатывайте значение, которое вы не узнаёте, так же, как вы обрабатываете unknown, потому что более поздние выпуски могут добавлять значения.

SDKAuthStatusMessage

Выдаётся во время потоков аутентификации.

SDKTaskStartedMessage

Выдаётся, когда задача начинается. Поле task_type это "local_bash" для команд Bash и наблюдений Monitor, "local_agent" для подагентов или "remote_agent".
ambient это true для задач, которые не являются частью работы сессии, такие как задачи, которые Claude Code запускает для своей собственной работы. Наблюдатели живого обновления также являются ambient, включая наблюдателей, которых попросил пользователь. Исключите ambient задачи из индикаторов активности. Поле требует Agent SDK v0.3.247 или позже. ambient также появляется на SDKTaskNotificationMessage и на записях SDKBackgroundTasksChangedMessage. is_backgrounded и spawn_depth описывают, как Claude Code запустил задачу. Оба поля требуют Agent SDK v0.3.238 или позже.
  • is_backgrounded: Claude Code устанавливает его на задачах "local_agent" и "local_bash". true означает, что задача выполняется в фоне. false означает, что задача выполняется на переднем плане, и вызов tool, который её запустил, остаётся заблокированным до тех пор, пока задача не завершится или не переместится в фоновый режим.
  • spawn_depth: Claude Code устанавливает его только на задачах "local_agent". Подагент, который основной поток запустил, имеет глубину 1. Подагент, который подагент глубины 1 запустил, имеет глубину 2, и так далее.
Возобновлённый подагент всегда сообщает is_backgrounded: true, потому что Claude Code запускает каждый возобновлённый подагент в фоне. Когда задача на переднем плане позже переместится в фоновый режим, Claude Code сообщает новое значение is_backgrounded в сообщении task_updated вместо отправки второго task_started.

SDKTaskProgressMessage

Выдаётся периодически во время выполнения подагента или фоновой задачи. Поле summary заполняется только когда включён agentProgressSummaries.

SDKTaskUpdatedMessage

Выдаётся, когда состояние фоновой задачи изменяется, например, когда она переходит из running в completed. Объедините patch в вашу локальную карту задач, индексированную по task_id. Поле end_time это временная метка Unix epoch в миллисекундах, сравнимая с Date.now().

SDKBackgroundTasksChangedMessage

Выдаётся всякий раз, когда набор активных фоновых задач изменяется: задача начинается, завершается, убивается, задача на переднем плане переводится в фоновый режим, или поле description или ambient задачи изменяется. Массив tasks это полный активный набор. Замените любой кэшированный набор каждым payload вместо сопряжения событий task_started и task_notification, поэтому следующее изменение членства исправит любое событие, которое вы пропустили. Порядок относительно этих событий для каждой задачи не определён, поэтому не коррелируйте два потока. Ничего не выдаётся при запуске. Сбросьте на пустой набор всякий раз, когда процесс CLI сессии запускается или перезапускается, и позвольте следующему изменению членства переполнить его. Когда вы отправляете повторный запрос управления initialize работающей сессии, такой как с reinitialize() после разрыва транспорта, Claude Code следует ответу снимком текущего активного набора, даже когда он пуст. Переподключающийся хост поэтому узнаёт, что работает, без ожидания следующего изменения членства. До Agent SDK v0.3.239 Claude Code не отправлял снимок после повторного initialize. Требуется Claude Code v2.1.203 или позже.

SDKThinkingTokensMessage

Выдаётся во время создания Claude блока мышления, включая отредактированный. estimated_tokens это текущая оценка токенов мышления, сгенерированных до сих пор в текущем блоке, и estimated_tokens_delta это приращение, переносимое этим кадром. Используйте эти оценки для отображения прогресса. Когда модель или провайдер сообщает разбивку, окончательный подсчёт для цикла агента верхнего уровня это usage.output_tokens_details.thinking_tokens сообщения результата, который не включает токены подагентов. Требуется Claude Code v2.1.153 или позже.

SDKFilesPersistedEvent

Выдаётся, когда контрольные точки файлов сохраняются на диск.

SDKRateLimitEvent

Выдаётся, когда сессия встречает ограничение скорости.
Когда errorCode это "credits_required", отклонение происходит от подписки claude.ai, чьё включённое использование исчерпано, и сессия не может продолжаться, пока пользователь не купит кредиты использования. canUserPurchaseCredits указывает, может ли аутентифицированный пользователь купить кредиты для учётной записи, и hasChargeableSavedPaymentMethod указывает, есть ли сохранённый способ оплаты в файле. Все три поля отсутствуют на событиях ограничения скорости, которые не являются отклонениями, требующими кредитов. Требуется Claude Code v2.1.181 или позже.

SDKLocalCommandOutputMessage

Claude Code не выдаёт этот тип сообщения. Когда вы отправляете команду, такую как /context или /usage, как запрос, её вывод приходит как SDKAssistantMessage.

SDKCommandsChangedMessage

Выдаётся, когда набор доступных команд изменяется во время сессии, например, когда Claude Code обнаруживает skills при входе агента в подпапку. Массив commands это полный обновлённый список, поэтому замените любой кэшированный список команд этим payload. Вызов supportedCommands() после этого сообщения возвращает тот же обновлённый список, потому что метод отслеживает последний push; это требует Agent SDK v0.3.216 или позже. В более ранних версиях SDK supportedCommands() возвращает снимок, захваченный при инициализации, и никогда не отражает изменения во время сессии.

SDKPromptSuggestionMessage

Выдаётся после хода, когда promptSuggestions включён и Claude Code сгенерировал предложение для этого хода. Содержит предсказанный следующий пользовательский запрос. Для ходов, которые не получают никаких, см. Когда Claude Code пропускает предложения.

SDKConversationResetMessage

Выдаётся, когда диалог сессии заменяется без завершения сессии. В вызове query() только /clear и его псевдонимы производят это сообщение. Смонтируйте пустой транскрипт под new_conversation_id и отбросьте любой кэшированный заголовок сессии.
Опубликованные типизации SDK объявляют SDKConversationResetMessage в Claude Code v2.1.203 и позже. До v2.1.203, SDKMessage ссылалась на тип без его объявления, поэтому сужение на type === "conversation_reset" не прошло проверку типов, когда skipLibCheck был отключён.

AbortError

Пользовательский класс ошибки для операций отмены.
AbortError это единственный класс ошибки в типизированном API SDK. Другие сбои, такие как выход процесса Claude Code или неудача при запуске, отклоняют итерацию сообщения с ошибками, которые не несут класс SDK для сопоставления. Troubleshooting ключает эти ошибки по сообщению, с причиной и исправлением для каждого.

Конфигурация Sandbox

SandboxSettings

Конфигурация для поведения sandbox. Используйте это для включения sandboxing команд и программной конфигурации ограничений сети.
Sandbox зависит от поддержки платформы и, на Linux, инструментов, таких как bubblewrap и socat. Когда enabled имеет значение true и sandbox не может запуститься, query() сообщает сообщение result с subtype: "error_during_execution" и причину в errors. Для одного вызова сообщения query() SDK выбрасывает после выдачи этого результата ошибки, поэтому оберните цикл в блок try для продолжения после него. Смотрите Handle the result для контракта ошибки.Для выполнения без sandbox вместо этого установите failIfUnavailable: false.

Пример использования

Безопасность Unix socket: Опция allowUnixSockets может предоставить доступ к системным сервисам, которые выходят за пределы sandbox. Например, разрешение /var/run/docker.sock фактически предоставляет полный доступ к хост-системе через Docker API, обходя изоляцию sandbox. Разрешайте только Unix sockets, которые строго необходимы, и поймите последствия безопасности каждого.

SandboxNetworkConfig

Конфигурация, специфичная для сети, для режима sandbox. Эти параметры применяются к sandboxed Bash командам, когда enabled имеет значение true в родительском SandboxSettings. Они не ограничивают инструмент WebFetch, который использует правила разрешений вместо этого.
Встроенный прокси sandbox применяет allowedDomains на основе запрашиваемого имени хоста и не завершает и не проверяет трафик TLS, поэтому такие методы, как domain fronting, потенциально могут его обойти. Смотрите Ограничения безопасности Sandboxing для деталей и Безопасное развёртывание для конфигурации прокси, завершающего TLS.

SandboxFilesystemConfig

Конфигурация, специфичная для файловой системы, для режима sandbox.

Fallback разрешений для команд вне Sandbox

Когда allowUnsandboxedCommands включён, модель может запросить выполнение команд вне sandbox, установив dangerouslyDisableSandbox: true во входных данных tool. Эти запросы переходят к существующей системе разрешений, что означает, что ваш обработчик canUseTool вызывается, позволяя вам реализовать пользовательскую логику авторизации. Команды, указанные в excludedCommands, вместо этого автоматически обходят sandbox, без участия модели; см. SandboxSettings. В примере ниже isCommandAuthorized служит заместителем для проверки авторизации, которую вы определяете.
Команды, работающие с dangerouslyDisableSandbox: true, имеют полный доступ к системе. Убедитесь, что ваш обработчик canUseTool тщательно проверяет эти запросы.Если permissionMode установлен на bypassPermissions и allowUnsandboxedCommands включён, модель может автономно выполнять команды вне sandbox без запросов одобрения, кроме действий, которые режим no не одобряет автоматически. Эта комбинация фактически позволяет модели молча выходить из изоляции sandbox.

См. также