Установка
SDK поставляется с нативным бинарным файлом Claude Code для вашей платформы в качестве опциональной зависимости, такой как
@anthropic-ai/claude-agent-sdk-darwin-arm64. Вам не нужно устанавливать Claude Code отдельно. Если ваш менеджер пакетов пропускает опциональные зависимости, SDK выбросит ошибку Native CLI binary for <platform> not found; установите pathToClaudeCodeExecutable на отдельно установленный бинарный файл claude вместо этого.Компиляция в единый исполняемый файл
Когда вы компилируете приложение в единый исполняемый файл с помощьюbun build --compile, SDK не может разрешить упакованный бинарный файл CLI во время выполнения. require.resolve не работает внутри виртуальной файловой системы $bunfs скомпилированного исполняемого файла, поэтому SDK выбросит ошибку Native CLI binary for <platform> 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 может измениться перед стабилизацией. Она читает источники MDM, включая macOS plist и Windows HKLM/HKCU, для паритета с запуском CLI, но не выполняет настроенный администратором подпроцесс
policyHelper. Поле permissions.defaultMode возвращается как есть из всех уровней, включая параметры проекта. Фильтр доверия, который CLI применяет перед соблюдением режимов повышенных разрешений, не применяется.Параметры
resolveSettings() принимает один объект параметров. Все поля опциональны.
Тип возврата: ResolvedSettings
resolveSettings() возвращает объект, описывающий объединённые параметры и источник, который внёс каждый ключ.
Пример
Пример ниже разрешает параметры для директории проекта и выводит источник, который контролирует период очистки.Типы
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 зависания для подагентов, запущенных сrun_in_background. По умолчанию600000. Сбрасывается при каждом событии потока; при зависании прерывает подагента, отмечает задачу как неудачную и выводит ошибку родителю с любым частичным результатом. Не применяется к синхронным подагентам.CLAUDE_ENABLE_STREAM_WATCHDOGсCLAUDE_STREAM_IDLE_TIMEOUT_MS: прерывает запрос, когда заголовки получены, но тело ответа перестаёт потоком передаваться. Watchdog включен по умолчанию для всех поставщиков; установитеCLAUDE_ENABLE_STREAM_WATCHDOG=0для отключения.CLAUDE_STREAM_IDLE_TIMEOUT_MSпо умолчанию300000и зажимается до этого минимума. Прерванный запрос проходит через обычный путь повторной попытки.
Query object
Интерфейс, возвращаемый функцией query().
Methods
applyFlagSettings()
Изменяет настройки на работающей сессии без перезагрузки запроса. Используйте её, когда настройка, у которой нет выделенного setter, должна измениться в середине сессии, например, ужесточение permissions после того, как агент прочитает ненадёжный ввод. setModel() и setPermissionMode() являются выделенными setters для этих двух ключей; applyFlagSettings() является общей формой, которая принимает любое подмножество ключей настроек, и передача model здесь ведёт себя так же, как setModel().
Только некоторые ключи вступают в силу в середине сессии:
- Применяется на следующем ходу:
model,effortLevel,ultracode,permissions,hooks,skillOverrides,fastMode,agent. Переключениеagentтакже применяет переопределение модели этого агента, hooks и системный запрос на следующем ходу. - Нет эффекта в середине сессии: опции системного запроса. Они разрешаются один раз при запуске, поэтому работающая сессия сохраняет исходное значение, даже если вызов успешен. Чтобы их изменить, запустите новую сессию.
effortLevel принимает имя уровня усилий. Он также принимает "ultracode", который запускает сессию на уровне усилий xhigh и включает ultracode. Тип Settings объявляет effortLevel без этого значения, поэтому передайте эквивалент { ultracode: true } в TypeScript. Значение ultracode требует Claude Code v2.1.203 или позже и принимается только applyFlagSettings(), а не ключом effortLevel в файле настроек.
Значения записываются в слой flag-settings, тот же слой, который встроенная опция settings функции query() заполняет при запуске. Flag settings находятся рядом с верхней частью порядка приоритета настроек: они переопределяют пользовательские, проектные и локальные настройки, и только управляемые политикой настройки могут их переопределить. Это тот же уровень, который раздел приоритета на странице называет программными опциями.
Последовательные вызовы выполняют 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(). Содержит данные инициализации сессии.
initialize сессии, которая уже работает, обёртка control-response также содержит опциональный массив pending_permission_requests. Поле находится на самой обёртке response, а не в полезной нагрузке SDKControlInitializeResponse выше. Каждая запись является полным сообщением control_request с той же формой { type: "control_request", request_id, request }, которую сессия потоком передаёт для запросов разрешения во время работы.
Это запросы, которые были выданы до подключения клиента и всё ещё ожидают ответа. SDK читает массив для вас и отправляет каждую запись в ваш обратный вызов canUseTool, то же переотправление, которое reinitialize() запускает после разрыва транспорта. Обрабатывайте повторяющиеся ID запросов идемпотентно, потому что запись может повторить запрос, который обратный вызов уже получил до отключения соединения.
SDKControlInterruptResponse
Квитанция прерывания: значение, которое interrupt() разрешается с помощью на CLI, который объявляет возможность interrupt_receipt_v1 в SDKSystemMessage.capabilities. Требует Claude Code v2.1.205 или позже. Более ранние CLI отвечают на прерывание с пустой полезной нагрузкой успеха, поэтому interrupt() разрешается undefined.
still_queued перечисляет UUID пользовательских сообщений, которые пережили прерывание: сообщения всё ещё в очереди, плюс любой пакет уже выведенный для следующего хода, но ещё не достижимый прерыванием. Каждое из них работает как свой собственный ход после прерывания, если вы его не отмените первым. Используйте квитанцию, чтобы решить, нужно ли что-то переотправлять; переотправка сообщения, которое уже указано, создаёт дублирующийся ход.
Интерпретируйте список с этими предостережениями:
- Только сообщения, которые были поставлены в очередь с UUID, появляются. Пустой массив не означает, что ничего больше не будет работать.
- Только сообщения основного потока указаны. Сообщения, адресованные подагенту, выходят за рамки.
- Список может включать UUID, которые ваш клиент никогда не отправлял, такие как триггеры scheduled task. Игнорируйте UUID, которые вы не узнаёте, вместо того чтобы рассматривать их как ошибку.
SDKResultMessage прерванного хода. Прочитайте квитанцию, а не проверяйте очередь после этого результата: цикл немедленно запускает следующий поставленный в очередь ход, поэтому очередь, которую вы проверяете после результата, уже изменилась.
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
Отключите настройки файловой системы:Settings precedence
Когда загружаются несколько источников, настройки объединяются с этим приоритетом (от высшего к низшему):- Локальные настройки (
.claude/settings.local.json) - Настройки проекта (
.claude/settings.json) - Пользовательские настройки (
~/.claude/settings.json)
agents, allowedTools и settings, переопределяют пользовательские, проектные и локальные настройки файловой системы. Управляемые политикой настройки имеют приоритет над программными опциями.
PermissionMode
CanUseTool
Тип пользовательской функции разрешения для контроля использования инструмента.
Функция является заменой SDK для интерактивного запроса разрешения: она вызывается только когда поток оценки разрешения разрешается в запрос. Вызовы инструментов, уже одобренные записью allowedTools, правилом настроек разрешения или режимом разрешения, такие как acceptEdits или bypassPermissions, никогда её не вызывают. Чтобы контролировать каждый вызов инструмента, используйте вместо этого hook PreToolUse.
AskUserQuestion, инструменты MCP, отмеченные requiresUserInteraction и инструменты соединителя установленные вашей организацией на ask достигают функции даже когда правило разрешения совпадает. В режиме dontAsk эти вызовы вместо этого отклоняются, без вызова её.
Обратный вызов обычно разрешает запрос, возвращая
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.
Пример:
Типы сообщений
SDKMessage
Тип объединения всех возможных сообщений, возвращаемых запросом.
SDKAssistantMessage
Сообщение ответа ассистента.
message это BetaMessage из Anthropic SDK. Оно включает поля, такие как id, content, model, stop_reason и usage.
SDKAssistantMessageError это один из: 'authentication_failed', 'oauth_org_not_allowed', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens' или 'unknown'. 'model_not_found' означает, что выбранная модель не существует или недоступна для вашей учётной записи или развёртывания. 'overloaded' означает, что API вернул 529, потому что сервер работает на полную мощность, в отличие от 'rate_limit', который является 429 в отношении вашей квоты.
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 вместо анализа этого текста.
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; разница между ними — это время, потраченное на потоковую передачу первого сообщения. Присутствует только на успешной ветви.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".
origin передаёт SDKMessageOrigin пользовательского сообщения, которое запустило этот результат. Когда фоновая задача завершается и SDK внедряет синтетический ход продолжения, результирующее SDKResultMessage содержит origin: { kind: "task-notification" }. Проверьте это поле, чтобы различить результаты, которые отвечают на ваш запрос, от результатов, выданных для продолжений фоновых задач, чтобы вы могли маршрутизировать или подавлять последние. Поле отсутствует для результатов, выданных перед любым пользовательским ходом, таких как ошибки при запуске.
Когда hook PreToolUse возвращает permissionDecision: "defer", результат имеет stop_reason: "tool_deferred" и deferred_tool_use содержит id, name и input ожидающего инструмента. Прочитайте это поле, чтобы отобразить запрос в вашем собственном пользовательском интерфейсе, затем возобновите с тем же session_id для продолжения. Смотрите Отложить вызов инструмента на потом для полного цикла.
SDKSystemMessage
Сообщение инициализации системы.
capabilities называет поведения протокола, которые реализует этот CLI, поэтому вы можете обнаруживать функции вместо сравнения строк claude_code_version. Это открытый набор: игнорируйте значения, которые вы не распознаёте, и проверяйте конкретную возможность, поведение которой вы используете. Поле требует Claude Code v2.1.205 или позже и отсутствует на более ранних CLI.
SDKPartialAssistantMessage
Потоковое частичное сообщение (только когда includePartialMessages равен true). Поле parent_tool_use_id всегда имеет значение null: события потока выдаются только для основного сеанса. Для атрибуции подагента используйте полные сообщения, которые содержат parent_tool_use_id, или включите forwardSubagentText для получения текста и размышлений подагента в виде полных сообщений.
SDKCompactBoundaryMessage
Сообщение, указывающее границу компактирования диалога.
SDKInformationalMessage
Универсальный текстовый баннер, выданный циклом. Содержит строки статуса без ошибок, обратную связь hook, такую как причина блокировки hook UserPromptSubmit, и вывод команды. Отобразите 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. Отклонения, выданные hook PreToolUse, не сообщаются через это событие.
Это событие требует Claude Code v2.1.136 или позже.
SDKPermissionDenial
Информация об отклонённом использовании tool.
SDKMessageOrigin
Происхождение сообщения с ролью пользователя. Это появляется как origin на SDKUserMessage и передаётся на соответствующее SDKResultMessage, чтобы вы могли определить, что запустило данный ход.
Типы 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.
NotificationHookInput
UserPromptSubmitHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
SubagentStartHookInput
SubagentStopHookInput
PreCompactHookInput
PermissionRequestHookInput
SetupHookInput
TeammateIdleHookInput
TaskCompletedHookInput
ConfigChangeHookInput
WorktreeCreateHookInput
WorktreeRemoveHookInput
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, который всё ещё принимается как псевдоним)
AskUserQuestion
Имя tool:AskUserQuestion
Bash
Имя tool:Bash
Monitor
Имя tool:Monitor
command запускает скрипт и выдаёт одно событие на строку stdout, а ws открывает WebSocket и выдаёт одно событие на текстовый фрейм. Укажите ровно один из command или ws. Источник ws требует Claude Code v2.1.195 или позже.
Установите persistent: true для наблюдений на уровне сессии, таких как хвосты логов. Когда Monitor запускает команду, он следует тем же правилам разрешения, что и Bash; наблюдение WebSocket запрашивает одобрение отдельно. См. справочник tool Monitor для поведения и доступности провайдера.
TaskOutput
Имя tool:TaskOutput
Edit
Имя tool:Edit
Read
Имя tool:Read
pages для диапазонов страниц PDF (например, "1-5").
Write
Имя tool:Write
Glob
Имя tool:Glob
Grep
Имя tool:Grep
TaskStop
Имя tool:TaskStop
task_id также принимает товарища по команде agent-team или именованного фонового агента по ID агента или имени.
NotebookEdit
Имя tool:NotebookEdit
WebFetch
Имя tool:WebFetch
WebSearch
Имя tool:WebSearch
Workflow
Имя tool:Workflow
Workflow доступен в Agent SDK v0.3.149 и позже. Требуется хотя бы один из script, name или scriptPath.
TodoWrite
Имя tool:TodoWrite
Начиная с TypeScript Agent SDK 0.3.142,
TodoWrite отключён по умолчанию. Используйте вместо этого TaskCreate, TaskGet, TaskUpdate и TaskList. См. Миграция на Task tools для обновления кода мониторинга, или установите CLAUDE_CODE_ENABLE_TASKS=0 для возврата к TodoWrite.TaskCreate
Имя tool:TaskCreate
TaskUpdate
Имя tool:TaskUpdate
status на "deleted" для её удаления.
TaskGet
Имя tool:TaskGet
null, когда ID не найден.
TaskList
Имя tool:TaskList
ExitPlanMode
Имя tool:ExitPlanMode
allowedPrompts устарело и игнорируется; Claude Code всё ещё принимает его, чтобы существующие вызывающие стороны и транскрипты проходили валидацию. До v2.1.205 он запрашивал разрешения Bash на основе запроса для реализации плана.
ListMcpResources
Имя tool:ListMcpResourcesTool
ReadMcpResource
Имя tool:ReadMcpResourceTool
EnterWorktree
Имя tool:EnterWorktree
path для переключения в существующий worktree вместо создания нового. На первом входе целевой объект должен быть зарегистрированным worktree текущего репозитория или, в многорепозиторном рабочем пространстве, репозитория, вложенного внутри него; из сессии worktree он должен находиться под .claude/worktrees/ репозитория сессии. name и path являются взаимоисключающими.
Типы выходных данных Tool
Документация схем выходных данных для всех встроенных tools Claude Code. Эти типы экспортируются из@anthropic-ai/claude-agent-sdk и представляют фактические данные ответа, возвращаемые каждым tool.
ToolOutputSchemas
Объединение всех типов выходных данных tool.
Agent
Имя tool:Agent (ранее Task, который всё ещё принимается как псевдоним)
status: "completed" для завершённых задач, "async_launched" для фоновых задач и "remote_launched" для задач, которые Claude Code отправил в удалённый облачный сеанс, где sessionUrl ссылается на этот сеанс и taskId его идентифицирует.
Поле resolvedModel на вариантах completed и async_launched указывает модель, на которой фактически работал подагент, которая может отличаться от запрошенного входного параметра model когда применяется availableModels или другое переопределение. Это поле требует Claude Code v2.1.174 или позже.
На варианте completed worktreePath устанавливается, когда подагент работал в изолированном git worktree, и worktreeBranch называет ветку этого worktree, когда Claude Code её создал. usage.service_tier содержит строку уровня обслуживания, которую API сообщила для запросов подагента.
До 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
backgroundTaskId.
Monitor
Имя tool:Monitor
TaskStop для раннего отмены наблюдения.
Edit
Имя tool:Edit
Read
Имя tool:Read
type.
Write
Имя tool:Write
Glob
Имя tool:Glob
Grep
Имя tool:Grep
mode: список файлов, содержимое с совпадениями или количество совпадений.
TaskStop
Имя tool:TaskStop
NotebookEdit
Имя tool:NotebookEdit
WebFetch
Имя tool:WebFetch
WebSearch
Имя tool:WebSearch
Workflow
Имя tool:Workflow
error перед тем, как рассматривать запуск как начатый: скрипт, который не прошёл проверку синтаксиса, возвращает status: "async_launched" с установленным error и никогда не запускается.
TodoWrite
Имя tool:TodoWrite
Начиная с TypeScript Agent SDK 0.3.142,
TodoWrite отключён по умолчанию. Используйте вместо этого TaskCreate, TaskGet, TaskUpdate и TaskList. Смотрите Миграция на Task tools для обновления кода мониторинга, или установите CLAUDE_CODE_ENABLE_TASKS=0 для возврата к TodoWrite.TaskCreate
Имя tool:TaskCreate
TaskUpdate
Имя tool:TaskUpdate
TaskGet
Имя tool:TaskGet
null когда ID не найден.
TaskList
Имя tool:TaskList
ExitPlanMode
Имя tool:ExitPlanMode
ListMcpResources
Имя tool:ListMcpResourcesTool
ReadMcpResource
Имя tool:ReadMcpResourceTool
EnterWorktree
Имя tool:EnterWorktree
Типы разрешений
PermissionUpdate
Операции для обновления разрешений.
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
Другие типы
ApiKeySource
SdkBeta
Доступные бета-функции, которые можно включить через опцию betas. См. Заголовки Beta для дополнительной информации.
SlashCommand
Информация о доступной slash команде.
ModelInfo
Информация о доступной модели.
AgentInfo
Информация о доступном подагенте, который может быть вызван через tool Agent.
McpServerStatus
Статус подключённого MCP сервера.
McpServerStatusConfig
Конфигурация MCP сервера, как сообщается mcpServerStatus(). Это объединение всех типов транспорта MCP сервера.
McpServerConfig для деталей по каждому типу транспорта.
AccountInfo
Информация об учётной записи для аутентифицированного пользователя.
ModelUsage
Статистика использования для каждой модели, возвращаемая в сообщениях результата. Значение costUSD это оценка на стороне клиента. См. Отслеживание стоимости и использования для предостережений выставления счётов.
ConfigScope
NonNullableUsage
Версия Usage со всеми nullable полями, сделанными non-nullable.
Usage
Статистика использования токенов. Это тип BetaUsage из @anthropic-ai/sdk.
BetaServerToolUsage и BetaIterationsUsage определены в @anthropic-ai/sdk.
CallToolResult
Тип результата MCP tool (из @modelcontextprotocol/sdk/types.js). structuredContent это объект JSON, который может быть возвращён вместе с content, включая блоки изображений. См. Возврат структурированных данных.
ThinkingConfig
Контролирует поведение мышления/рассуждения Claude. Имеет приоритет над устаревшим maxThinkingTokens.
display контролирует, возвращается ли текст мышления "summarized" или "omitted". На Claude Opus 4.7 и позже, значение по умолчанию API это "omitted", поэтому установите "summarized" для получения содержимого мышления в блоках thinking.
SpawnedProcess
Интерфейс для пользовательского запуска процесса (используется с опцией spawnClaudeCodeProcess). ChildProcess уже удовлетворяет этому интерфейсу.
SpawnOptions
Опции, передаваемые пользовательской функции spawn.
Поле
signal сообщает вашей функции spawn, когда нужно разобрать процесс. Передайте его как опцию signal в spawn() Node, или передайте его обработчику разборки вашей VM или контейнера.Этот сигнал не срабатывает в момент отмены Options.abortController. SDK сначала закрывает stdin процесса и ждёт около двух секунд, чтобы CLI мог корректно завершить работу, затем отменяет этот сигнал. Чтобы реагировать в момент отмены вызывающей стороной, слушайте на вашем собственном Options.abortController.signal, на который может ссылаться ваша функция spawn из её охватывающей области.McpSetServersResult
Результат операции setMcpServers().
RewindFilesResult
Результат операции rewindFiles().
SDKStatusMessage
Сообщение обновления статуса (например, компактирование).
SDKTaskNotificationMessage
Уведомление, когда фоновая задача завершается, не работает или остановлена. Фоновые задачи включают команды Bash run_in_background, наблюдения Monitor и фоновые подагентов.
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 для указания прогресса.
SDKAuthStatusMessage
Выдаётся во время потоков аутентификации.
SDKTaskStartedMessage
Выдаётся, когда фоновая задача начинается. Поле task_type это "local_bash" для фоновых команд Bash и наблюдений Monitor, "local_agent" для подагентов или "remote_agent".
SDKTaskProgressMessage
Выдаётся периодически во время выполнения подагента или фоновой задачи. Поле summary заполняется только когда включён agentProgressSummaries.
SDKTaskUpdatedMessage
Выдаётся, когда состояние фоновой задачи изменяется, например, когда она переходит из running в completed. Объедините patch в вашу локальную карту задач, индексированную по task_id. Поле end_time это временная метка Unix epoch в миллисекундах, сравнимая с Date.now().
SDKBackgroundTasksChangedMessage
Выдаётся всякий раз, когда набор активных фоновых задач изменяется: задача начинается, завершается, убивается или переднеплановый агент переводится в фоновый режим. Массив tasks это полный активный набор. Замените любой кэшированный набор каждым payload вместо сопряжения событий task_started и task_notification, поэтому следующее изменение членства исправит любое событие, которое вы пропустили.
Порядок относительно этих событий для каждой задачи не определён, поэтому не коррелируйте два потока.
Ничего не выдаётся при запуске. Сбросьте на пустой набор всякий раз, когда процесс CLI сессии запускается или перезапускается, и позвольте следующему изменению членства переполнить его.
Требуется Claude Code v2.1.203 или позже.
SDKThinkingTokensMessage
Выдаётся во время создания Claude блока мышления, включая отредактированный, с текущей оценкой токенов мышления, созданных до сих пор. estimated_tokens это текущий итог для текущего блока мышления и estimated_tokens_delta это приращение, переносимое этим кадром. Используйте его для отображения прогресса. Окончательный подсчёт для цикла агента верхнего уровня это usage.output_tokens сообщения результата, который не включает токены подагентов; используйте modelUsage для учёта всего дерева.
Требуется Claude Code v2.1.153 или позже.
SDKFilesPersistedEvent
Выдаётся, когда контрольные точки файлов сохраняются на диск.
SDKRateLimitEvent
Выдаётся, когда сессия встречает ограничение скорости.
errorCode это "credits_required", отклонение происходит от подписки claude.ai, чьё включённое использование исчерпано, и сессия не может продолжаться, пока пользователь не купит кредиты использования. canUserPurchaseCredits указывает, может ли аутентифицированный пользователь купить кредиты для учётной записи, и hasChargeableSavedPaymentMethod указывает, есть ли сохранённый способ оплаты в файле. Все три поля отсутствуют на событиях ограничения скорости, которые не являются отклонениями, требующими кредитов. Требуется Claude Code v2.1.181 или позже.
SDKLocalCommandOutputMessage
Вывод из локальной slash команды (например, /voice или /usage). Отображается как текст в стиле ассистента в транскрипте.
SDKCommandsChangedMessage
Выдаётся, когда набор доступных команд изменяется во время сессии, например, когда skills обнаруживаются при входе агента в подпапку. Массив commands это полный обновлённый список, поэтому замените любой кэшированный список команд этим payload. Повторный вызов supportedCommands() не эквивалентен: этот метод возвращает снимок, захваченный при инициализации, и не отражает изменения во время сессии.
SDKPromptSuggestionMessage
Выдаётся после каждого хода, когда promptSuggestions включён. Содержит предсказанный следующий пользовательский запрос.
SDKConversationResetMessage
Выдаётся, когда диалог сессии заменяется без завершения сессии, например, после /clear, при выходе из режима плана или когда начинается новый диалог. Смонтируйте пустой транскрипт под new_conversation_id и отбросьте любой кэшированный заголовок сессии.
SDKConversationResetMessage в Claude Code v2.1.203 и позже. До v2.1.203, SDKMessage ссылалась на тип без его объявления, поэтому сужение на type === "conversation_reset" не прошло проверку типов, когда skipLibCheck был отключён.
AbortError
Пользовательский класс ошибки для операций отмены.
Конфигурация 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.Пример использования
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 вызывается, позволяя вам реализовать пользовательскую логику авторизации. В примере ниже isCommandAuthorized служит заместителем для проверки авторизации, которую вы определяете.
excludedCommands vs allowUnsandboxedCommands:excludedCommands: Статический список команд, которые всегда автоматически обходят sandbox (например,['docker']). Модель не имеет контроля над этим.allowUnsandboxedCommands: Позволяет модели решать во время выполнения, запрашивать ли выполнение вне sandbox, установивdangerouslyDisableSandbox: trueво входных данных tool.
- Аудит запросов модели: Логируйте, когда модель запрашивает выполнение вне sandbox
- Реализуйте allowlists: Разрешайте только определённые команды работать вне sandbox
- Добавьте рабочие процессы одобрения: Требуйте явной авторизации для привилегированных операций
См. также
- Обзор SDK - Общие концепции SDK
- Справочник Python SDK - Документация Python SDK
- Справочник CLI - Интерфейс командной строки
- Общие рабочие процессы - Пошаговые руководства