Перейти к основному содержанию

Установка

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

Отключите настройки файловой системы:
Загружайте все настройки файловой системы явно:
Загружайте только определённые источники настроек:
Тестирование и окружения CI:
SDK-только приложения:
Загрузка инструкций проекта 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. 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.
Пример:
Для полной информации о создании и использовании plugins см. Plugins.

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

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
Выполняет bash команды в постоянной сессии shell с опциональным timeout и фоновым выполнением.

Monitor

Имя tool: Monitor
Запускает фоновый источник и доставляет каждое событие к Claude, чтобы он мог реагировать без опроса: 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
Читает файлы из локальной файловой системы, включая текст, изображения, PDF и Jupyter notebooks. Используйте pages для диапазонов страниц PDF (например, "1-5").

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
Создаёт и управляет структурированным списком задач для отслеживания прогресса.
Начиная с TypeScript Agent SDK 0.3.142, TodoWrite отключён по умолчанию. Используйте вместо этого TaskCreate, TaskGet, TaskUpdate и TaskList. См. Миграция на Task tools для обновления кода мониторинга, или установите CLAUDE_CODE_ENABLE_TASKS=0 для возврата к TodoWrite.

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 являются взаимоисключающими.

Типы выходных данных 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
Возвращает вывод команды с разделённым stdout/stderr. Фоновые команды включают backgroundTaskId.

Monitor

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

Edit

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

Read

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

Write

Имя tool: Write
Возвращает результат записи с информацией структурированного diff.

Glob

Имя tool: Glob
Возвращает пути файлов, соответствующие паттерну glob, отсортированные по времени изменения.

Grep

Имя tool: Grep
Возвращает результаты поиска. Форма варьируется по mode: список файлов, содержимое с совпадениями или количество совпадений.

TaskStop

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

NotebookEdit

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

WebFetch

Имя tool: WebFetch
Возвращает полученное содержимое с HTTP статусом и метаданными.

WebSearch

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

Workflow

Имя tool: Workflow
Возвращает результат сразу после того, как tool принимает вызов. Окончательный результат поступает позже как завершение задачи. Проверьте 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
Возвращает созданную задачу с назначенным ей 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.

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

PermissionUpdate

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

PermissionBehavior

PermissionUpdateDestination

PermissionRuleValue

Другие типы

ApiKeySource

SdkBeta

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

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

Безопасность Unix socket: Опция allowUnixSockets может предоставить доступ к мощным системным сервисам. Например, разрешение /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 вызывается, позволяя вам реализовать пользовательскую логику авторизации. В примере ниже isCommandAuthorized служит заместителем для проверки авторизации, которую вы определяете.
excludedCommands vs allowUnsandboxedCommands:
  • excludedCommands: Статический список команд, которые всегда автоматически обходят sandbox (например, ['docker']). Модель не имеет контроля над этим.
  • allowUnsandboxedCommands: Позволяет модели решать во время выполнения, запрашивать ли выполнение вне sandbox, установив dangerouslyDisableSandbox: true во входных данных tool.
Этот паттерн позволяет вам:
  • Аудит запросов модели: Логируйте, когда модель запрашивает выполнение вне sandbox
  • Реализуйте allowlists: Разрешайте только определённые команды работать вне sandbox
  • Добавьте рабочие процессы одобрения: Требуйте явной авторизации для привилегированных операций
Команды, работающие с dangerouslyDisableSandbox: true, имеют полный доступ к системе. Убедитесь, что ваш обработчик canUseTool тщательно проверяет эти запросы.Если permissionMode установлен на bypassPermissions и allowUnsandboxedCommands включён, модель может автономно выполнять команды вне sandbox без каких-либо запросов одобрения (явное ask правило всё ещё заставляет один). Эта комбинация фактически позволяет модели молча выходить из изоляции sandbox.

См. также