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

Установка

Установите пакет в виртуальное окружение. На недавних установках Debian, Ubuntu и Homebrew Python запуск pip install для системного Python завершается ошибкой error: externally-managed-environment.
Для uv, Windows PowerShell и настройки API ключа см. Начало работы в обзоре Agent SDK.

Выбор между query() и ClaudeSDKClient

Python SDK предоставляет два способа взаимодействия с Claude Code:

Быстрое сравнение

Когда использовать query() (одноразовые задачи)

Лучше всего для:
  • Одноразовых вопросов, когда вам не нужна история разговора
  • Независимых задач, которые не требуют контекста из предыдущих обменов
  • Простых скриптов автоматизации
  • Когда вы хотите начать с чистого листа каждый раз

Когда использовать ClaudeSDKClient (непрерывный разговор)

Лучше всего для:
  • Продолжения разговоров - Когда вам нужно, чтобы Claude помнил контекст
  • Уточняющих вопросов - Построение на основе предыдущих ответов
  • Интерактивных приложений - Интерфейсы чата, REPL
  • Логики, управляемой ответом - Когда следующее действие зависит от ответа Claude
  • Управления сеансом - Явное управление жизненным циклом разговора

Функции

query()

Создает новый сеанс для каждого взаимодействия с Claude Code по умолчанию. Возвращает асинхронный итератор, который выдает сообщения по мере их поступления. Каждый вызов query() начинается с нуля без памяти о предыдущих взаимодействиях, если вы не передадите continue_conversation=True или resume в ClaudeAgentOptions. См. Sessions.

Параметры

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

Возвращает AsyncIterator[Message], который выдает сообщения из разговора.

Пример - С параметрами

tool()

Декоратор для определения MCP tools с проверкой типов.

Параметры

Варианты схемы ввода

  1. Простое сопоставление типов (рекомендуется):
  2. Формат JSON Schema (для сложной валидации):

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

Функция-декоратор, которая оборачивает реализацию инструмента и возвращает экземпляр SdkMcpTool.

Пример

ToolAnnotations

Переэкспортировано из mcp.types (также доступно как from claude_agent_sdk import ToolAnnotations). Все поля являются дополнительными подсказками; клиенты не должны полагаться на них для решений безопасности.

create_sdk_mcp_server()

Создайте встроенный MCP server, который работает в вашем приложении Python.

Параметры

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

Возвращает объект McpSdkServerConfig, который можно передать в ClaudeAgentOptions.mcp_servers.

Пример

list_sessions()

Выводит список прошлых сеансов с метаданными. Фильтруйте по каталогу проекта или выводите сеансы во всех проектах. Синхронно; возвращается немедленно.

Параметры

Тип возвращаемого значения: SDKSessionInfo

Пример

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

get_session_messages()

Извлекает сообщения из прошлого сеанса. Синхронно; возвращается немедленно.

Параметры

Тип возвращаемого значения: SessionMessage

Пример

get_session_info()

Читает метаданные для одного сеанса по ID без сканирования полного каталога проекта. Синхронно; возвращается немедленно.

Параметры

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

Пример

Найдите метаданные одного сеанса без сканирования каталога проекта. Полезно, когда у вас уже есть ID сеанса из предыдущего запуска.

rename_session()

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

Параметры

Вызывает ValueError, если session_id не является допустимым UUID или title пуст; FileNotFoundError, если сеанс не найден.

Пример

Переименуйте самый последний сеанс, чтобы его было легче найти позже. Новое название появляется в SDKSessionInfo.custom_title при последующих чтениях.

tag_session()

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

Параметры

Вызывает ValueError, если session_id не является допустимым UUID или tag пуст после очистки; FileNotFoundError, если сеанс не найден.

Пример

Пометьте сеанс, затем отфильтруйте по этому тегу при последующем чтении. Передайте None для очистки существующего тега.

Классы

ClaudeSDKClient

Поддерживает сеанс разговора через несколько обменов. Это эквивалент Python того, как функция query() TypeScript SDK работает внутри - она создает объект клиента, который может продолжать разговоры.

Ключевые особенности

  • Непрерывность сеанса: Поддерживает контекст разговора через несколько вызовов query()
  • Один разговор: Сеанс сохраняет предыдущие сообщения
  • Поддержка прерываний: Может остановить выполнение в середине задачи
  • Явный жизненный цикл: Вы контролируете, когда сеанс начинается и заканчивается
  • Поток, управляемый ответом: Может реагировать на ответы и отправлять дополнения
  • Пользовательские инструменты и hooks: Поддерживает пользовательские инструменты (созданные с помощью декоратора @tool) и hooks

Методы

Поддержка менеджера контекста

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

Пример - Продолжение разговора

Пример - Потоковый ввод с ClaudeSDKClient

Пример - Использование прерываний

Поведение буфера после прерывания: interrupt() отправляет сигнал остановки, но не очищает буфер сообщений. Сообщения, уже созданные прерванной задачей, включая ее ResultMessagesubtype="error_during_execution"), остаются в потоке. Вы должны слить их с помощью receive_response() перед чтением ответа на новый запрос. Если вы отправите новый запрос сразу после interrupt() и вызовете receive_response() только один раз, вы получите сообщения прерванной задачи, а не ответ на новый запрос.

Пример - Расширенное управление разрешениями

Типы

@dataclass vs TypedDict: Этот SDK использует два вида типов. Классы, украшенные @dataclass (такие как ResultMessage, AgentDefinition, TextBlock), являются экземплярами объектов во время выполнения и поддерживают доступ к атрибутам: msg.result. Классы, определенные с помощью TypedDict (такие как ThinkingConfigEnabled, McpStdioServerConfig, SyncHookJSONOutput), являются простыми словарями во время выполнения и требуют доступа к ключам: config["budget_tokens"], а не config.budget_tokens. Синтаксис вызова ClassName(field=value) работает для обоих, но только dataclasses создают объекты с атрибутами.

SdkMcpTool

Определение для SDK MCP tool, созданного с помощью декоратора @tool.

Transport

Абстрактный базовый класс для пользовательских реализаций транспорта. Используйте это для связи с процессом Claude через пользовательский канал (например, удаленное соединение вместо локального подпроцесса).
Это низкоуровневый внутренний API. Интерфейс может измениться в будущих выпусках. Пользовательские реализации должны быть обновлены в соответствии с любыми изменениями интерфейса.
Импорт: from claude_agent_sdk import Transport

ClaudeAgentOptions

Dataclass конфигурации для запросов Claude Code.

Обработка медленных или зависших ответов API

Подпроцесс CLI читает несколько переменных окружения, которые управляют тайм-аутами API и обнаружением зависания. Передайте их через ClaudeAgentOptions.env:
  • API_TIMEOUT_MS: тайм-аут для каждого запроса на клиенте Anthropic в миллисекундах. По умолчанию 600000. Применяется к основному циклу и всем подагентам.
  • CLAUDE_CODE_MAX_RETRIES: максимальное количество повторных попыток API. По умолчанию 10, ограничено 15. Каждая повторная попытка получает свое собственное окно API_TIMEOUT_MS, поэтому наихудшее время стены примерно API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1) плюс отступ. Для автоматических запусков, которым нужно ждать через более длительные сбои, установите CLAUDE_CODE_RETRY_WATCHDOG=1: он повторяет ошибки емкости бесконечно, и начиная с Claude Code v2.1.199 повышает значение по умолчанию для других переходных ошибок до 300 и удаляет ограничение на эту переменную.
  • CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: сторожевой таймер зависания для подагентов, запущенных с run_in_background. По умолчанию 600000. Сбрасывается при каждом событии потока; при зависании он прерывает подагента, отмечает задачу как неудачную и выводит ошибку родителю с любым частичным результатом. Не применяется к синхронным подагентам.
  • CLAUDE_ENABLE_STREAM_WATCHDOG с CLAUDE_STREAM_IDLE_TIMEOUT_MS: прерывает запрос, когда заголовки прибыли, но тело ответа перестает потоковать. Сторожевой таймер включен по умолчанию для всех поставщиков; установите CLAUDE_ENABLE_STREAM_WATCHDOG=0 для отключения. CLAUDE_STREAM_IDLE_TIMEOUT_MS по умолчанию 300000 и зажимается до этого минимума. Прерванный запрос проходит через обычный путь повторной попытки.

OutputFormat

Конфигурация для валидации структурированного вывода. Передайте это как dict в поле output_format на ClaudeAgentOptions:

SystemPromptPreset

Конфигурация для использования предустановленной системной подсказки Claude Code с дополнительными добавлениями.

SystemPromptFile

Конфигурация для загрузки пользовательской системной подсказки из файла вместо передачи ее в виде строки. SDK сопоставляет это с флагом CLI --system-prompt-file. Используйте форму файла, когда подсказка большая: SDK передает строку system_prompt в argv подпроцесса CLI, что подвергается ограничениям длины командной строки ОС перед отправкой SDK любого запроса API. На Linux один аргумент длиннее примерно 128 КБ не работает при порождении процесса с Argument list too long. На Windows вся командная строка ограничена примерно 32 КБ, поэтому форма строки не работает при более низком пороге.

SettingSource

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

Поведение по умолчанию

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

Почему использовать setting_sources

Отключить параметры файловой системы:
В Python SDK 0.1.59 и более ранних версиях пустой список рассматривался так же, как опущение опции, поэтому setting_sources=[] не отключал параметры файловой системы. Обновитесь до более новой версии, если вам нужно, чтобы пустой список вступил в силу. TypeScript SDK не затронут.
Загрузить все параметры файловой системы явно:
Загрузить только определенные источники параметров:
Тестирование и окружения CI:
Приложения только SDK:
Загрузка инструкций проекта CLAUDE.md:

Приоритет параметров

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

AgentDefinition

Конфигурация для подагента, определенного программно.
Имена полей AgentDefinition используют camelCase, такие как disallowedTools, permissionMode и maxTurns. Эти имена напрямую соответствуют формату проводки, общему с TypeScript SDK. Это отличается от ClaudeAgentOptions, который использует Python snake_case для эквивалентных полей верхнего уровня, таких как disallowed_tools и permission_mode. Поскольку AgentDefinition является dataclass, передача ключевого слова snake_case вызывает TypeError во время конструирования.

PermissionMode

Режимы разрешений для управления выполнением инструментов.

EffortLevel

Уровни усилий для руководства глубиной мышления.

CanUseTool

Псевдоним типа для функций обратного вызова разрешения инструмента.
Обратный вызов получает:
  • tool_name: Имя вызываемого инструмента
  • input_data: Входные параметры инструмента
  • context: ToolPermissionContext с дополнительной информацией
Возвращает PermissionResult (либо PermissionResultAllow, либо PermissionResultDeny). Обратный вызов - это замена SDK для интерактивной подсказки разрешения: он вызывается только когда permission evaluation flow разрешается в подсказку. Вызовы инструментов, уже одобренные записью allowed_tools, правилом параметров разрешения или режимом разрешения, таким как acceptEdits или bypassPermissions, никогда его не вызывают. AskUserQuestion, MCP tools, отмеченные requiresUserInteraction, и connector tools установленные вашей организацией на ask достигают обратного вызова даже когда правило разрешения совпадает. В режиме dontAsk эти вызовы вместо этого отклоняются, без вызова обратного вызова. Чтобы контролировать каждый вызов инструмента, используйте вместо этого hook PreToolUse.

ToolPermissionContext

Информация контекста, передаваемая в обратные вызовы разрешения инструмента.

PermissionResult

Тип объединения для результатов обратного вызова разрешения.

PermissionResultAllow

Результат, указывающий, что вызов инструмента должен быть разрешен.

PermissionResultDeny

Результат, указывающий, что вызов инструмента должен быть отклонен.

PermissionUpdate

Конфигурация для программного обновления разрешений.

PermissionRuleValue

Правило для добавления, замены или удаления в обновлении разрешений.

ToolsPreset

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

ThinkingConfig

Управляет поведением расширенного мышления. Объединение трех конфигураций:
Дополнительное поле display управляет тем, возвращается ли текст мышления "summarized" или "omitted". На Claude Opus 4.7 и более поздних версиях API по умолчанию используется "omitted", поэтому установите "summarized" для получения содержимого мышления в выводах ThinkingBlock. Поскольку это классы TypedDict, они являются простыми словарями во время выполнения. Либо создавайте их как литералы словарей, либо вызывайте класс как конструктор; оба создают dict. Получайте доступ к полям с помощью config["budget_tokens"], а не config.budget_tokens:

SdkBeta

Тип Literal для функций бета-версии SDK.
Используйте с полем betas в ClaudeAgentOptions для включения функций бета-версии.
Бета-версия 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 по стандартной цене без требования заголовка бета-версии.

McpSdkServerConfig

Конфигурация для SDK MCP servers, созданных с помощью create_sdk_mcp_server().

McpServerConfig

Тип объединения для конфигураций MCP server.

McpStdioServerConfig

McpSSEServerConfig

McpHttpServerConfig

McpServerStatusConfig

Конфигурация MCP server, как сообщается get_mcp_status(). Это объединение всех вариантов транспорта McpServerConfig плюс вариант claudeai-proxy только для вывода для servers, проксированных через claude.ai.
McpSdkServerConfigStatus - это сериализуемая форма McpSdkServerConfig с только полями type ("sdk") и name (str); встроенный instance опущен. McpClaudeAIProxyServerConfig имеет поля type ("claudeai-proxy"), url (str) и id (str).

McpStatusResponse

Ответ от ClaudeSDKClient.get_mcp_status(). Оборачивает список статусов сервера под ключом mcpServers.

McpServerStatus

Статус подключенного MCP server, содержащийся в McpStatusResponse.

SdkPluginConfig

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

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

Message

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

UserMessage

Сообщение пользовательского ввода.

AssistantMessage

Сообщение ответа помощника с блоками содержимого.

AssistantMessageError

Возможные типы ошибок для сообщений помощника.

SystemMessage

Системное сообщение с метаданными.

ResultMessage

Финальное сообщение результата с информацией о стоимости и использовании.
Поле subtype определяет, какие другие поля заполнены. Это одно из "success", "error_during_execution", "error_max_turns", "error_max_budget_usd" или "error_max_structured_output_retries". Dataclass Python объединяет все варианты в одну форму, поэтому поля, которые не применяются к возвращаемому подтипу, имеют значение None. Несколько полей содержат диагностические детали, когда разговор заканчивается с ошибкой:
  • is_error: True, когда разговор закончился в состоянии ошибки. Всегда True на подтипах error_*. На subtype="success" это True, когда финальный запрос модели не удался, что означает, что цикл агента завершился, но последний вызов API вернул ошибку.
  • api_error_status: код состояния HTTP завершающей ошибки API. None, когда ход закончился без ошибки. Заполняется только на subtype="success".
  • result: текст финального сообщения помощника на subtype="success" или None на подтипах error_*. Когда subtype="success" и is_error=True, это содержит строку ошибки API, если она доступна, но может быть пустой, поэтому проверьте api_error_status и предыдущее содержимое AssistantMessage для деталей.
  • errors: строки ошибок уровня цикла, такие как сообщение о максимальных ходах. Заполняется только на подтипах error_*.
Словарь usage содержит следующие ключи, если они присутствуют: Словарь model_usage отображает имена моделей на использование для каждой модели. Внутренние ключи словаря используют camelCase, потому что значение передается без изменений из базового процесса CLI, соответствуя типу TypeScript ModelUsage:

StreamEvent

Событие потока для частичных обновлений сообщений во время потоковой передачи. Получается только когда include_partial_messages=True в ClaudeAgentOptions. Импортируйте через from claude_agent_sdk.types import StreamEvent.

RateLimitEvent

Выдается при изменении статуса ограничения скорости (например, с "allowed" на "allowed_warning"). Используйте это для предупреждения пользователей перед достижением жесткого лимита или для отката, когда статус "rejected".

RateLimitInfo

Состояние ограничения скорости, переносимое RateLimitEvent.

TaskStartedMessage

Выдается при запуске фоновой задачи. Фоновая задача - это все, что отслеживается вне основного хода: фоновая команда Bash, наблюдение Monitor, подагент, порожденный через инструмент Agent, или удаленный агент. Поле task_type говорит вам, какой. Это именование не связано с переименованием инструмента Task на Agent.

TaskUsage

Данные токенов и времени для фоновой задачи.

TaskProgressMessage

Выдается периодически с обновлениями прогресса для выполняющейся фоновой задачи.

TaskNotificationMessage

Выдается при завершении, сбое или остановке фоновой задачи. Фоновые задачи включают команды Bash run_in_background, наблюдения Monitor и фоновые подагенты.

Типы блоков содержимого

ContentBlock

Тип объединения всех блоков содержимого.

TextBlock

Блок содержимого текста.

ThinkingBlock

Блок содержимого мышления (для моделей с возможностью мышления).

ToolUseBlock

Блок запроса использования инструмента.

ToolResultBlock

Блок результата выполнения инструмента.

Типы ошибок

ClaudeSDKError

Базовый класс исключения для всех ошибок SDK.

CLINotFoundError

Вызывается, когда Claude Code CLI не установлен или не найден.

CLIConnectionError

Вызывается, когда соединение с Claude Code не удается.

ProcessError

Вызывается, когда процесс Claude Code не работает.

CLIJSONDecodeError

Вызывается, когда разбор JSON не удается.

Типы hooks

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

HookEvent

Поддерживаемые типы событий hooks.
TypeScript SDK поддерживает дополнительные события hooks, которые еще недоступны в Python: SessionStart, SessionEnd, Setup, TeammateIdle, TaskCompleted, ConfigChange, WorktreeCreate, WorktreeRemove, PostToolBatch и MessageDisplay.

HookCallback

Определение типа для функций обратного вызова hooks.
Параметры:
  • input: Строго типизированный ввод hooks с дискриминированными объединениями на основе hook_event_name (см. HookInput)
  • tool_use_id: Дополнительный идентификатор использования инструмента (для hooks, связанных с инструментами)
  • context: Контекст hooks с дополнительной информацией
Возвращает HookJSONOutput, который может содержать:
  • decision: "block" для блокировки действия
  • systemMessage: Предупреждающее сообщение, показываемое пользователю
  • hookSpecificOutput: Вывод, специфичный для hooks

HookContext

Информация контекста, передаваемая в обратные вызовы hooks.

HookMatcher

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

HookInput

Тип объединения всех типов ввода hooks. Фактический тип зависит от поля hook_event_name.

BaseHookInput

Базовые поля, присутствующие во всех типах ввода hooks.

PreToolUseHookInput

Входные данные для событий hooks PreToolUse.

PostToolUseHookInput

Входные данные для событий hooks PostToolUse.

PostToolUseFailureHookInput

Входные данные для событий hooks PostToolUseFailure. Вызывается, когда выполнение инструмента не удается.

UserPromptSubmitHookInput

Входные данные для событий hooks UserPromptSubmit.

StopHookInput

Входные данные для событий hooks Stop.

SubagentStopHookInput

Входные данные для событий hooks SubagentStop.

PreCompactHookInput

Входные данные для событий hooks PreCompact.

NotificationHookInput

Входные данные для событий hooks Notification.

SubagentStartHookInput

Входные данные для событий hooks SubagentStart.

PermissionRequestHookInput

Входные данные для событий hooks PermissionRequest. Позволяет hooks программно обрабатывать решения разрешений.

HookJSONOutput

Тип объединения для возвращаемых значений обратного вызова hooks.

SyncHookJSONOutput

Синхронный вывод hooks с полями управления и решения.
Используйте continue_ (с подчеркиванием) в коде Python. Он автоматически преобразуется в continue при отправке в CLI.

HookSpecificOutput

TypedDict, содержащий имя события hooks и поля, специфичные для события. Форма зависит от значения hookEventName. Для полных деталей доступных полей для каждого события hooks см. Control execution with hooks. Дискриминированное объединение типов вывода, специфичных для события. Поле hookEventName определяет, какие поля действительны.

AsyncHookJSONOutput

Асинхронный вывод hooks, который откладывает выполнение hooks.
Используйте async_ (с подчеркиванием) в коде Python. Он автоматически преобразуется в async при отправке в CLI.

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

Этот пример регистрирует два hooks: один, который блокирует опасные команды bash, такие как rm -rf /, и другой, который регистрирует все использование инструментов для аудита. Hooks безопасности работает только на командах Bash (через matcher), в то время как hooks логирования работает на всех инструментах.

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

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

Agent

Имя инструмента: Agent (ранее Task, который все еще принимается как псевдоним) Ввод:
Вывод:

AskUserQuestion

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

Bash

Имя инструмента: Bash Ввод:
Вывод:

Monitor

Имя инструмента: Monitor Запускает фоновый источник и доставляет каждое событие в Claude, чтобы он мог реагировать без опроса: command запускает скрипт и выдает одно событие на строку stdout, а ws открывает WebSocket и выдает одно событие на текстовый фрейм. Укажите ровно один из command или ws. Когда Monitor запускает команду, он следует тем же правилам разрешений, что и Bash; наблюдение за WebSocket запрашивает одобрение отдельно. Источник ws требует Claude Code v2.1.195 или позже. См. Справочник инструмента Monitor для поведения и доступности поставщика. Ввод:
Вывод:

Edit

Имя инструмента: Edit Ввод:
Вывод:

Read

Имя инструмента: Read Ввод:
Вывод (текстовые файлы):
Вывод (изображения):

Write

Имя инструмента: Write Ввод:
Вывод:

Glob

Имя инструмента: Glob Ввод:
Вывод:

Grep

Имя инструмента: Grep Ввод:
Вывод (режим content):
Вывод (режим files_with_matches):

NotebookEdit

Имя инструмента: NotebookEdit Ввод:
Вывод:

WebFetch

Имя инструмента: WebFetch Ввод:
Вывод:

WebSearch

Имя инструмента: WebSearch Ввод:
Вывод:

TodoWrite

Имя инструмента: TodoWrite
Начиная с Claude Code v2.1.142, TodoWrite отключен по умолчанию. Используйте вместо этого TaskCreate, TaskGet, TaskUpdate и TaskList. См. Миграция на инструменты Task для обновления кода мониторинга, или установите CLAUDE_CODE_ENABLE_TASKS=0 для возврата к TodoWrite.
Ввод:
Вывод:

TaskCreate

Имя инструмента: TaskCreate Ввод:
Вывод:

TaskUpdate

Имя инструмента: TaskUpdate Ввод:
Вывод:

TaskGet

Имя инструмента: TaskGet Ввод:
Вывод:

TaskList

Имя инструмента: TaskList Ввод:
Вывод:

BashOutput

Имя инструмента: BashOutput Ввод:
Вывод:

KillBash

Имя инструмента: KillBash Ввод:
Вывод:

ExitPlanMode

Имя инструмента: ExitPlanMode Ввод:
Вывод:

ListMcpResources

Имя инструмента: ListMcpResourcesTool Ввод:
Вывод:

ReadMcpResource

Имя инструмента: ReadMcpResourceTool Ввод:
Вывод:

Расширенные функции с ClaudeSDKClient

Построение интерфейса непрерывного разговора

Использование hooks для модификации поведения

Мониторинг прогресса в реальном времени

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

Базовые операции с файлами (используя query)

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

Режим потоковой передачи с клиентом

Использование пользовательских инструментов с ClaudeSDKClient

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

SandboxSettings

Конфигурация для поведения sandbox. Используйте это для включения sandboxing команд и программной настройки ограничений сети.
Sandbox зависит от поддержки платформы и, в Linux, от инструментов, таких как bubblewrap и socat. По умолчанию, когда enabled имеет значение True, но sandbox не может запуститься, команды выполняются без sandbox с предупреждением на stderr. Это поведение по умолчанию отличается от TypeScript SDK, где failIfUnavailable по умолчанию имеет значение true.Установите "failIfUnavailable": True в параметрах sandbox, чтобы остановиться вместо этого. Ключ еще не объявлен на SandboxSettings, но SDK передает его в Claude Code, который его соблюдает. query() затем сообщает ResultMessage с subtype="error_during_execution" и причину в errors. Следите за этим подтипом, а не ожидайте, что query() вызовет исключение перед выдачей сообщений.

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

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

SandboxNetworkConfig

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

SandboxIgnoreViolations

Конфигурация для игнорирования определенных нарушений sandbox.

Fallback разрешений для команд без sandbox

Когда allowUnsandboxedCommands включен, модель может запросить выполнение команд вне sandbox, установив dangerouslyDisableSandbox: True во входе инструмента. Эти запросы переходят к существующей системе разрешений, что означает, что ваш обработчик can_use_tool будет вызван, позволяя вам реализовать пользовательскую логику авторизации.
excludedCommands vs allowUnsandboxedCommands:
  • excludedCommands: Статический список команд, которые всегда обходят sandbox автоматически (например, ["docker"]). Модель не имеет контроля над этим.
  • allowUnsandboxedCommands: Позволяет модели решать во время выполнения, запрашивать ли выполнение без sandbox, установив dangerouslyDisableSandbox: True во входе инструмента.
Этот шаблон позволяет вам:
  • Аудит запросов модели: Логируйте, когда модель запрашивает выполнение без sandbox
  • Реализовать allowlists: Разрешайте только определенные команды работать без sandbox
  • Добавить рабочие процессы одобрения: Требуйте явной авторизации для привилегированных операций
Команды, работающие с dangerouslyDisableSandbox: True, имеют полный доступ к системе. Убедитесь, что ваш обработчик can_use_tool тщательно проверяет эти запросы.Если permission_mode установлен на bypassPermissions и allow_unsandboxed_commands включен, модель может автономно выполнять команды вне sandbox без каких-либо подсказок одобрения (явное ask правило все еще требует одного). Эта комбинация фактически позволяет модели молча выходить из изоляции sandbox.

См. также