Loading...
    • Руководство разработчика
    • Справочник API
    • MCP
    • Ресурсы
    • Примечания к выпуску
    Search...
    ⌘K
    Первые шаги
    Введение в ClaudeБыстрый старт
    Модели и цены
    Обзор моделейВыбор моделиЧто нового в Claude 4.5Миграция на Claude 4.5Устаревшие моделиЦены
    Разработка с Claude
    Обзор функцийИспользование Messages APIКонтекстные окнаЛучшие практики промптирования
    Возможности
    Кэширование промптовРедактирование контекстаРасширенное мышлениеУсилиеПотоковая передача сообщенийПакетная обработкаЦитированияМногоязычная поддержкаПодсчет токеновEmbeddingsЗрениеПоддержка PDFFiles APIРезультаты поискаСтруктурированные выходные данные
    Инструменты
    ОбзорКак реализовать использование инструментовПотоковая передача инструментов с детализациейИнструмент BashИнструмент выполнения кодаПрограммное вызывание инструментовИнструмент управления компьютеромИнструмент текстового редактораИнструмент веб-выборкиИнструмент веб-поискаИнструмент памятиИнструмент поиска инструментов
    Agent Skills
    ОбзорБыстрый стартЛучшие практикиИспользование Skills с API
    Agent SDK
    ОбзорБыстрый стартTypeScript SDKTypeScript V2 (preview)Python SDKРуководство по миграции
    MCP в API
    MCP коннекторУдаленные MCP серверы
    Claude на сторонних платформах
    Amazon BedrockMicrosoft FoundryVertex AI
    Инженерия промптов
    ОбзорГенератор промптовИспользование шаблонов промптовУлучшитель промптовБудьте ясны и прямолинейныИспользуйте примеры (многошаговое промптирование)Дайте Claude подумать (CoT)Используйте XML-тегиДайте Claude роль (системные промпты)Предзаполните ответ ClaudeЦепочка сложных промптовСоветы по длинному контекстуСоветы по расширенному мышлению
    Тестирование и оценка
    Определение критериев успехаРазработка тестовых случаевИспользование инструмента оценкиСнижение задержки
    Усиление защиты
    Снижение галлюцинацийПовышение согласованности выходных данныхСмягчение взломовПотоковые отказыСнижение утечки промптовДержите Claude в образе
    Администрирование и мониторинг
    Обзор Admin APIAPI использования и затратClaude Code Analytics API
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    Agent SDK

    Справочник Agent SDK - TypeScript

    Полный справочник API для TypeScript Agent SDK, включающий все функции, типы и интерфейсы.

    Попробуйте новый интерфейс V2 (предпросмотр): Упрощённый интерфейс с паттернами send() и receive() теперь доступен, что облегчает многооборотные диалоги. Узнайте больше

    Установка

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

    Функции

    query()

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

    function query({
      prompt,
      options
    }: {
      prompt: string | AsyncIterable<SDKUserMessage>;
      options?: Options;
    }): Query

    Параметры

    ПараметрТипОписание
    promptstring | AsyncIterable<SDKUserMessage>Входной запрос в виде строки или асинхронного итерируемого объекта для режима потоковой передачи
    optionsOptionsНеобязательный объект конфигурации (см. тип Options ниже)

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

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

    tool()

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

    function tool<Schema extends ZodRawShape>(
      name: string,
      description: string,
      inputSchema: Schema,
      handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
    ): SdkMcpToolDefinition<Schema>

    Параметры

    ПараметрТипОписание
    namestringИмя инструмента
    descriptionstringОписание того, что делает инструмент
    inputSchemaSchema extends ZodRawShapeZod схема, определяющая входные параметры инструмента
    handler(args, extra) => Promise<CallToolResult>Асинхронная функция, которая выполняет логику инструмента

    createSdkMcpServer()

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

    function createSdkMcpServer(options: {
      name: string;
      version?: string;
      tools?: Array<SdkMcpToolDefinition<any>>;
    }): McpSdkServerConfigWithInstance

    Параметры

    ПараметрТипОписание
    options.namestringИмя MCP сервера
    options.versionstringНеобязательная строка версии
    options.toolsArray<SdkMcpToolDefinition>Массив определений инструментов, созданных с помощью tool()

    Типы

    Options

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

    СвойствоТипПо умолчаниюОписание
    abortControllerAbortControllernew AbortController()Контроллер для отмены операций
    additionalDirectoriesstring[][]Дополнительные директории, к которым может получить доступ Claude
    agentsRecord<string, [AgentDefinition](#agentdefinition)>undefinedПрограммное определение подагентов
    allowDangerouslySkipPermissionsbooleanfalseВключить обход разрешений. Требуется при использовании permissionMode: 'bypassPermissions'
    allowedToolsstring[]Все инструментыСписок разрешённых имён инструментов
    betasSdkBeta[][]Включить бета-функции (например, ['context-1m-2025-08-07'])
    canUseToolCanUseToolundefinedПользовательская функция разрешений для использования инструментов
    continuebooleanfalseПродолжить самый последний диалог
    cwdstringprocess.cwd()Текущая рабочая директория
    disallowedToolsstring[][]Список запрещённых имён инструментов
    enableFileCheckpointingbooleanfalseВключить отслеживание изменений файлов для отката. См. Контрольные точки файлов
    envDict<string>process.envПеременные окружения
    executable'bun' | 'deno' | 'node'АвтоопределениеИспользуемая среда выполнения JavaScript
    executableArgsstring[][]Аргументы для передачи исполняемому файлу
    extraArgsRecord<string, string | null>{}Дополнительные аргументы
    fallbackModelstringundefinedМодель для использования, если основная не работает
    forkSessionbooleanfalseПри возобновлении с помощью resume разветвить на новый ID сессии вместо продолжения исходной сессии
    hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Обратные вызовы хуков для событий
    includePartialMessagesbooleanfalseВключить события частичных сообщений
    maxBudgetUsdnumberundefinedМаксимальный бюджет в USD для запроса
    maxThinkingTokensnumberundefinedМаксимальное количество токенов для процесса размышления
    maxTurnsnumberundefinedМаксимальное количество ходов диалога
    mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Конфигурации MCP серверов
    modelstringПо умолчанию из CLIИспользуемая модель Claude
    outputFormat{ type: 'json_schema', schema: JSONSchema }undefinedОпределить формат вывода для результатов агента. См. Структурированные выходы для деталей
    pathToClaudeCodeExecutablestringИспользует встроенный исполняемый файлПуть к исполняемому файлу Claude Code
    permissionModePermissionMode'default'Режим разрешений для сессии
    permissionPromptToolNamestringundefinedИмя инструмента MCP для запросов разрешений
    pluginsSdkPluginConfig[][]Загрузить пользовательские плагины из локальных путей. См. Плагины для деталей
    resumestringundefinedID сессии для возобновления
    resumeSessionAtstringundefinedВозобновить сессию в определённом UUID сообщения
    sandboxSandboxSettingsundefinedПрограммно настроить поведение песочницы. См. Параметры песочницы для деталей
    settingSourcesSettingSource[][] (нет параметров)Контролировать, какие параметры на основе файловой системы загружать. При пропуске параметры не загружаются. Примечание: Должен включать 'project' для загрузки файлов CLAUDE.md
    stderr(data: string) => voidundefinedОбратный вызов для вывода stderr
    strictMcpConfigbooleanfalseПрименить строгую валидацию MCP
    systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string }undefined (пустой запрос)Конфигурация системного запроса. Передайте строку для пользовательского запроса или { type: 'preset', preset: 'claude_code' } для использования системного запроса Claude Code. При использовании формы объекта предустановки добавьте append для расширения системного запроса дополнительными инструкциями
    toolsstring[] | { type: 'preset'; preset: 'claude_code' }undefinedКонфигурация инструментов. Передайте массив имён инструментов или используйте предустановку для получения инструментов Claude Code по умолчанию

    Query

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

    interface Query extends AsyncGenerator<SDKMessage, void> {
      interrupt(): Promise<void>;
      rewindFiles(userMessageUuid: string): Promise<void>;
      setPermissionMode(mode: PermissionMode): Promise<void>;
      setModel(model?: string): Promise<void>;
      setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;
      supportedCommands(): Promise<SlashCommand[]>;
      supportedModels(): Promise<ModelInfo[]>;
      mcpServerStatus(): Promise<McpServerStatus[]>;
      accountInfo(): Promise<AccountInfo>;
    }

    Методы

    МетодОписание
    interrupt()Прерывает запрос (доступно только в режиме потоковой входной информации)
    rewindFiles(userMessageUuid)Восстанавливает файлы в их состояние в указанном пользовательском сообщении. Требует enableFileCheckpointing: true. См. Контрольные точки файлов
    setPermissionMode()Изменяет режим разрешений (доступно только в режиме потоковой входной информации)
    setModel()Изменяет модель (доступно только в режиме потоковой входной информации)
    setMaxThinkingTokens()Изменяет максимальное количество токенов размышления (доступно только в режиме потоковой входной информации)
    supportedCommands()Возвращает доступные команды слэша
    supportedModels()Возвращает доступные модели с информацией отображения
    mcpServerStatus()Возвращает статус подключённых MCP серверов
    accountInfo()Возвращает информацию об учётной записи

    AgentDefinition

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

    type AgentDefinition = {
      description: string;
      tools?: string[];
      prompt: string;
      model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
    }
    ПолеОбязательноОписание
    descriptionДаОписание на естественном языке того, когда использовать этого агента
    toolsНетМассив разрешённых имён инструментов. Если пропущено, наследует все инструменты
    promptДаСистемный запрос агента
    modelНетПереопределение модели для этого агента. Если пропущено, использует основную модель

    SettingSource

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

    type SettingSource = 'user' | 'project' | 'local';
    ЗначениеОписаниеМестоположение
    'user'Глобальные параметры пользователя~/.claude/settings.json
    'project'Общие параметры проекта (контролируемые версией).claude/settings.json
    'local'Локальные параметры проекта (игнорируемые git).claude/settings.local.json

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

    Когда settingSources пропущен или undefined, SDK не загружает параметры файловой системы. Это обеспечивает изоляцию для приложений SDK.

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

    Загрузить все параметры файловой системы (поведение наследия):

    // Загрузить все параметры как SDK v0.0.x делал
    const result = query({
      prompt: "Analyze this code",
      options: {
        settingSources: ['user', 'project', 'local']  // Загрузить все параметры
      }
    });

    Загрузить только определённые источники параметров:

    // Загрузить только параметры проекта, игнорировать пользовательские и локальные
    const result = query({
      prompt: "Run CI checks",
      options: {
        settingSources: ['project']  // Только .claude/settings.json
      }
    });

    Тестирование и окружения CI:

    // Обеспечить согласованное поведение в CI, исключив локальные параметры
    const result = query({
      prompt: "Run tests",
      options: {
        settingSources: ['project'],  // Только параметры, общие для команды
        permissionMode: 'bypassPermissions'
      }
    });

    Приложения только SDK:

    // Определить всё программно (поведение по умолчанию)
    // Нет зависимостей файловой системы - settingSources по умолчанию []
    const result = query({
      prompt: "Review this PR",
      options: {
        // settingSources: [] по умолчанию, не нужно указывать
        agents: { /* ... */ },
        mcpServers: { /* ... */ },
        allowedTools: ['Read', 'Grep', 'Glob']
      }
    });

    Загрузка инструкций проекта CLAUDE.md:

    // Загрузить параметры проекта для включения файлов CLAUDE.md
    const result = query({
      prompt: "Add a new feature following project conventions",
      options: {
        systemPrompt: {
          type: 'preset',
          preset: 'claude_code'  // Требуется для использования CLAUDE.md
        },
        settingSources: ['project'],  // Загружает CLAUDE.md из директории проекта
        allowedTools: ['Read', 'Write', 'Edit']
      }
    });

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

    Когда загружаются несколько источников, параметры объединяются с этим приоритетом (от высшего к низшему):

    1. Локальные параметры (.claude/settings.local.json)
    2. Параметры проекта (.claude/settings.json)
    3. Параметры пользователя (~/.claude/settings.json)

    Программные опции (такие как agents, allowedTools) всегда переопределяют параметры файловой системы.

    PermissionMode

    type PermissionMode =
      | 'default'           // Стандартное поведение разрешений
      | 'acceptEdits'       // Автоматически принимать редактирования файлов
      | 'bypassPermissions' // Обойти все проверки разрешений
      | 'plan'              // Режим планирования - без выполнения

    CanUseTool

    Тип пользовательской функции разрешений для управления использованием инструментов.

    type CanUseTool = (
      toolName: string,
      input: ToolInput,
      options: {
        signal: AbortSignal;
        suggestions?: PermissionUpdate[];
      }
    ) => Promise<PermissionResult>;

    PermissionResult

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

    type PermissionResult = 
      | {
          behavior: 'allow';
          updatedInput: ToolInput;
          updatedPermissions?: PermissionUpdate[];
        }
      | {
          behavior: 'deny';
          message: string;
          interrupt?: boolean;
        }

    McpServerConfig

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

    type McpServerConfig = 
      | McpStdioServerConfig
      | McpSSEServerConfig
      | McpHttpServerConfig
      | McpSdkServerConfigWithInstance;

    McpStdioServerConfig

    type McpStdioServerConfig = {
      type?: 'stdio';
      command: string;
      args?: string[];
      env?: Record<string, string>;
    }

    McpSSEServerConfig

    type McpSSEServerConfig = {
      type: 'sse';
      url: string;
      headers?: Record<string, string>;
    }

    McpHttpServerConfig

    type McpHttpServerConfig = {
      type: 'http';
      url: string;
      headers?: Record<string, string>;
    }

    McpSdkServerConfigWithInstance

    type McpSdkServerConfigWithInstance = {
      type: 'sdk';
      name: string;
      instance: McpServer;
    }

    SdkPluginConfig

    Конфигурация для загрузки плагинов в SDK.

    type SdkPluginConfig = {
      type: 'local';
      path: string;
    }
    ПолеТипОписание
    type'local'Должно быть 'local' (в настоящее время поддерживаются только локальные плагины)
    pathstringАбсолютный или относительный путь к директории плагина

    Пример:

    plugins: [
      { type: 'local', path: './my-plugin' },
      { type: 'local', path: '/absolute/path/to/plugin' }
    ]

    Для полной информации о создании и использовании плагинов см. Плагины.

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

    SDKMessage

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

    type SDKMessage = 
      | SDKAssistantMessage
      | SDKUserMessage
      | SDKUserMessageReplay
      | SDKResultMessage
      | SDKSystemMessage
      | SDKPartialAssistantMessage
      | SDKCompactBoundaryMessage;

    SDKAssistantMessage

    Сообщение ответа помощника.

    type SDKAssistantMessage = {
      type: 'assistant';
      uuid: UUID;
      session_id: string;
      message: APIAssistantMessage; // Из Anthropic SDK
      parent_tool_use_id: string | null;
    }

    SDKUserMessage

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

    type SDKUserMessage = {
      type: 'user';
      uuid?: UUID;
      session_id: string;
      message: APIUserMessage; // Из Anthropic SDK
      parent_tool_use_id: string | null;
    }

    SDKUserMessageReplay

    Повторённое пользовательское сообщение с обязательным UUID.

    type SDKUserMessageReplay = {
      type: 'user';
      uuid: UUID;
      session_id: string;
      message: APIUserMessage;
      parent_tool_use_id: string | null;
    }

    SDKResultMessage

    Финальное сообщение результата.

    type SDKResultMessage =
      | {
          type: 'result';
          subtype: 'success';
          uuid: UUID;
          session_id: string;
          duration_ms: number;
          duration_api_ms: number;
          is_error: boolean;
          num_turns: number;
          result: string;
          total_cost_usd: number;
          usage: NonNullableUsage;
          modelUsage: { [modelName: string]: ModelUsage };
          permission_denials: SDKPermissionDenial[];
          structured_output?: unknown;
        }
      | {
          type: 'result';
          subtype:
            | 'error_max_turns'
            | 'error_during_execution'
            | 'error_max_budget_usd'
            | 'error_max_structured_output_retries';
          uuid: UUID;
          session_id: string;
          duration_ms: number;
          duration_api_ms: number;
          is_error: boolean;
          num_turns: number;
          total_cost_usd: number;
          usage: NonNullableUsage;
          modelUsage: { [modelName: string]: ModelUsage };
          permission_denials: SDKPermissionDenial[];
          errors: string[];
        }

    SDKSystemMessage

    Сообщение инициализации системы.

    type SDKSystemMessage = {
      type: 'system';
      subtype: 'init';
      uuid: UUID;
      session_id: string;
      apiKeySource: ApiKeySource;
      cwd: string;
      tools: string[];
      mcp_servers: {
        name: string;
        status: string;
      }[];
      model: string;
      permissionMode: PermissionMode;
      slash_commands: string[];
      output_style: string;
    }

    SDKPartialAssistantMessage

    Потоковое частичное сообщение (только когда includePartialMessages истинно).

    type SDKPartialAssistantMessage = {
      type: 'stream_event';
      event: RawMessageStreamEvent; // Из Anthropic SDK
      parent_tool_use_id: string | null;
      uuid: UUID;
      session_id: string;
    }

    SDKCompactBoundaryMessage

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

    type SDKCompactBoundaryMessage = {
      type: 'system';
      subtype: 'compact_boundary';
      uuid: UUID;
      session_id: string;
      compact_metadata: {
        trigger: 'manual' | 'auto';
        pre_tokens: number;
      };
    }

    SDKPermissionDenial

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

    type SDKPermissionDenial = {
      tool_name: string;
      tool_use_id: string;
      tool_input: ToolInput;
    }

    Типы хуков

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

    HookEvent

    Доступные события хуков.

    type HookEvent =
      | 'PreToolUse'
      | 'PostToolUse'
      | 'PostToolUseFailure'
      | 'Notification'
      | 'UserPromptSubmit'
      | 'SessionStart'
      | 'SessionEnd'
      | 'Stop'
      | 'SubagentStart'
      | 'SubagentStop'
      | 'PreCompact'
      | 'PermissionRequest';

    HookCallback

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

    type HookCallback = (
      input: HookInput, // Объединение всех типов входных данных хука
      toolUseID: string | undefined,
      options: { signal: AbortSignal }
    ) => Promise<HookJSONOutput>;

    HookCallbackMatcher

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

    interface HookCallbackMatcher {
      matcher?: string;
      hooks: HookCallback[];
    }

    HookInput

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

    type HookInput =
      | PreToolUseHookInput
      | PostToolUseHookInput
      | PostToolUseFailureHookInput
      | NotificationHookInput
      | UserPromptSubmitHookInput
      | SessionStartHookInput
      | SessionEndHookInput
      | StopHookInput
      | SubagentStartHookInput
      | SubagentStopHookInput
      | PreCompactHookInput
      | PermissionRequestHookInput;

    BaseHookInput

    Базовый интерфейс, который расширяют все типы входных данных хука.

    type BaseHookInput = {
      session_id: string;
      transcript_path: string;
      cwd: string;
      permission_mode?: string;
    }

    PreToolUseHookInput

    type PreToolUseHookInput = BaseHookInput & {
      hook_event_name: 'PreToolUse';
      tool_name: string;
      tool_input: unknown;
    }

    PostToolUseHookInput

    type PostToolUseHookInput = BaseHookInput & {
      hook_event_name: 'PostToolUse';
      tool_name: string;
      tool_input: unknown;
      tool_response: unknown;
    }

    PostToolUseFailureHookInput

    type PostToolUseFailureHookInput = BaseHookInput & {
      hook_event_name: 'PostToolUseFailure';
      tool_name: string;
      tool_input: unknown;
      error: string;
      is_interrupt?: boolean;
    }

    NotificationHookInput

    type NotificationHookInput = BaseHookInput & {
      hook_event_name: 'Notification';
      message: string;
      title?: string;
    }

    UserPromptSubmitHookInput

    type UserPromptSubmitHookInput = BaseHookInput & {
      hook_event_name: 'UserPromptSubmit';
      prompt: string;
    }

    SessionStartHookInput

    type SessionStartHookInput = BaseHookInput & {
      hook_event_name: 'SessionStart';
      source: 'startup' | 'resume' | 'clear' | 'compact';
    }

    SessionEndHookInput

    type SessionEndHookInput = BaseHookInput & {
      hook_event_name: 'SessionEnd';
      reason: ExitReason;  // Строка из массива EXIT_REASONS
    }

    StopHookInput

    type StopHookInput = BaseHookInput & {
      hook_event_name: 'Stop';
      stop_hook_active: boolean;
    }

    SubagentStartHookInput

    type SubagentStartHookInput = BaseHookInput & {
      hook_event_name: 'SubagentStart';
      agent_id: string;
      agent_type: string;
    }

    SubagentStopHookInput

    type SubagentStopHookInput = BaseHookInput & {
      hook_event_name: 'SubagentStop';
      stop_hook_active: boolean;
    }

    PreCompactHookInput

    type PreCompactHookInput = BaseHookInput & {
      hook_event_name: 'PreCompact';
      trigger: 'manual' | 'auto';
      custom_instructions: string | null;
    }

    PermissionRequestHookInput

    type PermissionRequestHookInput = BaseHookInput & {
      hook_event_name: 'PermissionRequest';
      tool_name: string;
      tool_input: unknown;
      permission_suggestions?: PermissionUpdate[];
    }

    HookJSONOutput

    Возвращаемое значение хука.

    type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;

    AsyncHookJSONOutput

    type AsyncHookJSONOutput = {
      async: true;
      asyncTimeout?: number;
    }

    SyncHookJSONOutput

    type SyncHookJSONOutput = {
      continue?: boolean;
      suppressOutput?: boolean;
      stopReason?: string;
      decision?: 'approve' | 'block';
      systemMessage?: string;
      reason?: string;
      hookSpecificOutput?:
        | {
            hookEventName: 'PreToolUse';
            permissionDecision?: 'allow' | 'deny' | 'ask';
            permissionDecisionReason?: string;
            updatedInput?: Record<string, unknown>;
          }
        | {
            hookEventName: 'UserPromptSubmit';
            additionalContext?: string;
          }
        | {
            hookEventName: 'SessionStart';
            additionalContext?: string;
          }
        | {
            hookEventName: 'PostToolUse';
            additionalContext?: string;
          };
    }

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

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

    ToolInput

    Примечание: Это тип только для документации для ясности. Он представляет объединение всех типов входных данных инструментов.

    type ToolInput =
      | AgentInput
      | AskUserQuestionInput
      | BashInput
      | BashOutputInput
      | FileEditInput
      | FileReadInput
      | FileWriteInput
      | GlobInput
      | GrepInput
      | KillShellInput
      | NotebookEditInput
      | WebFetchInput
      | WebSearchInput
      | TodoWriteInput
      | ExitPlanModeInput
      | ListMcpResourcesInput
      | ReadMcpResourceInput;

    Task

    Имя инструмента: Task

    interface AgentInput {
      /**
       * Краткое описание задачи (3-5 слов)
       */
      description: string;
      /**
       * Задача для выполнения агентом
       */
      prompt: string;
      /**
       * Тип специализированного агента для использования для этой задачи
       */
      subagent_type: string;
    }

    Запускает нового агента для автономного выполнения сложных многошаговых задач.

    AskUserQuestion

    Имя инструмента: AskUserQuestion

    interface AskUserQuestionInput {
      /**
       * Вопросы для пользователя (1-4 вопроса)
       */
      questions: Array<{
        /**
         * Полный вопрос для пользователя. Должен быть ясным, конкретным
         * и заканчиваться вопросительным знаком.
         */
        question: string;
        /**
         * Очень короткий ярлык, отображаемый как чип/тег (макс 12 символов).
         * Примеры: "Auth method", "Library", "Approach"
         */
        header: string;
        /**
         * Доступные варианты (2-4 опции). Опция "Other" предоставляется
         * автоматически.
         */
        options: Array<{
          /**
           * Текст отображения для этого варианта (1-5 слов)
           */
          label: string;
          /**
           * Объяснение того, что означает этот вариант
           */
          description: string;
        }>;
        /**
         * Установить в true для разрешения множественного выбора
         */
        multiSelect: boolean;
      }>;
      /**
       * Ответы пользователя, заполненные системой разрешений.
       * Отображает текст вопроса на выбранный ярлык опции.
       * Ответы с множественным выбором разделены запятыми.
       */
      answers?: Record<string, string>;
    }

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

    Bash

    Имя инструмента: Bash

    interface BashInput {
      /**
       * Команда для выполнения
       */
      command: string;
      /**
       * Необязательный таймаут в миллисекундах (макс 600000)
       */
      timeout?: number;
      /**
       * Ясное, краткое описание того, что делает эта команда в 5-10 словах
       */
      description?: string;
      /**
       * Установить в true для выполнения этой команды в фоне
       */
      run_in_background?: boolean;
    }

    Выполняет команды bash в постоянной сессии оболочки с необязательным таймаутом и фоновым выполнением.

    BashOutput

    Имя инструмента: BashOutput

    interface BashOutputInput {
      /**
       * ID фоновой оболочки для получения вывода из
       */
      bash_id: string;
      /**
       * Необязательное регулярное выражение для фильтрации строк вывода
       */
      filter?: string;
    }

    Получает вывод из работающей или завершённой фоновой оболочки bash.

    Edit

    Имя инструмента: Edit

    interface FileEditInput {
      /**
       * Абсолютный путь к файлу для изменения
       */
      file_path: string;
      /**
       * Текст для замены
       */
      old_string: string;
      /**
       * Текст для замены на (должен отличаться от old_string)
       */
      new_string: string;
      /**
       * Заменить все вхождения old_string (по умолчанию false)
       */
      replace_all?: boolean;
    }

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

    Read

    Имя инструмента: Read

    interface FileReadInput {
      /**
       * Абсолютный путь к файлу для чтения
       */
      file_path: string;
      /**
       * Номер строки для начала чтения
       */
      offset?: number;
      /**
       * Количество строк для чтения
       */
      limit?: number;
    }

    Читает файлы из локальной файловой системы, включая текст, изображения, PDF и Jupyter ноутбуки.

    Write

    Имя инструмента: Write

    interface FileWriteInput {
      /**
       * Абсолютный путь к файлу для записи
       */
      file_path: string;
      /**
       * Содержимое для записи в файл
       */
      content: string;
    }

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

    Glob

    Имя инструмента: Glob

    interface GlobInput {
      /**
       * Паттерн glob для сопоставления файлов
       */
      pattern: string;
      /**
       * Директория для поиска (по умолчанию cwd)
       */
      path?: string;
    }

    Быстрое сопоставление паттернов файлов, которое работает с кодовой базой любого размера.

    Grep

    Имя инструмента: Grep

    interface GrepInput {
      /**
       * Паттерн регулярного выражения для поиска
       */
      pattern: string;
      /**
       * Файл или директория для поиска (по умолчанию cwd)
       */
      path?: string;
      /**
       * Паттерн glob для фильтрации файлов (например "*.js")
       */
      glob?: string;
      /**
       * Тип файла для поиска (например "js", "py", "rust")
       */
      type?: string;
      /**
       * Режим вывода: "content", "files_with_matches" или "count"
       */
      output_mode?: 'content' | 'files_with_matches' | 'count';
      /**
       * Поиск без учёта регистра
       */
      '-i'?: boolean;
      /**
       * Показать номера строк (для режима content)
       */
      '-n'?: boolean;
      /**
       * Строки для показа перед каждым совпадением
       */
      '-B'?: number;
      /**
       * Строки для показа после каждого совпадения
       */
      '-A'?: number;
      /**
       * Строки для показа перед и после каждого совпадения
       */
      '-C'?: number;
      /**
       * Ограничить вывод первыми N строками/записями
       */
      head_limit?: number;
      /**
       * Включить многострочный режим
       */
      multiline?: boolean;
    }

    Мощный инструмент поиска, построенный на ripgrep с поддержкой регулярных выражений.

    KillBash

    Имя инструмента: KillBash

    interface KillShellInput {
      /**
       * ID фоновой оболочки для завершения
       */
      shell_id: string;
    }

    Завершает работающую фоновую оболочку bash по её ID.

    NotebookEdit

    Имя инструмента: NotebookEdit

    interface NotebookEditInput {
      /**
       * Абсолютный путь к файлу Jupyter ноутбука
       */
      notebook_path: string;
      /**
       * ID ячейки для редактирования
       */
      cell_id?: string;
      /**
       * Новый исходный код для ячейки
       */
      new_source: string;
      /**
       * Тип ячейки (code или markdown)
       */
      cell_type?: 'code' | 'markdown';
      /**
       * Тип редактирования (replace, insert, delete)
       */
      edit_mode?: 'replace' | 'insert' | 'delete';
    }

    Редактирует ячейки в файлах Jupyter ноутбука.

    WebFetch

    Имя инструмента: WebFetch

    interface WebFetchInput {
      /**
       * URL для получения содержимого из
       */
      url: string;
      /**
       * Запрос для выполнения на полученном содержимом
       */
      prompt: string;
    }

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

    WebSearch

    Имя инструмента: WebSearch

    interface WebSearchInput {
      /**
       * Поисковый запрос для использования
       */
      query: string;
      /**
       * Включить только результаты из этих доменов
       */
      allowed_domains?: string[];
      /**
       * Никогда не включать результаты из этих доменов
       */
      blocked_domains?: string[];
    }

    Ищет в сети и возвращает отформатированные результаты.

    TodoWrite

    Имя инструмента: TodoWrite

    interface TodoWriteInput {
      /**
       * Обновленный список задач
       */
      todos: Array<{
        /**
         * Описание задачи
         */
        content: string;
        /**
         * Статус задачи
         */
        status: 'pending' | 'in_progress' | 'completed';
        /**
         * Активная форма описания задачи
         */
        activeForm: string;
      }>;
    }

    Создаёт и управляет структурированным списком задач для отслеживания прогресса.

    ExitPlanMode

    Имя инструмента: ExitPlanMode

    interface ExitPlanModeInput {
      /**
       * План для выполнения пользователем на одобрение
       */
      plan: string;
    }

    Выходит из режима планирования и предлагает пользователю одобрить план.

    ListMcpResources

    Имя инструмента: ListMcpResources

    interface ListMcpResourcesInput {
      /**
       * Необязательное имя сервера для фильтрации ресурсов по
       */
      server?: string;
    }

    Перечисляет доступные ресурсы MCP с подключённых серверов.

    ReadMcpResource

    Имя инструмента: ReadMcpResource

    interface ReadMcpResourceInput {
      /**
       * Имя MCP сервера
       */
      server: string;
      /**
       * URI ресурса для чтения
       */
      uri: string;
    }

    Читает определённый ресурс MCP с сервера.

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

    Документация схем выходных данных для всех встроенных инструментов Claude Code. Эти типы представляют фактические данные ответа, возвращаемые каждым инструментом.

    ToolOutput

    Примечание: Это тип только для документации для ясности. Он представляет объединение всех типов выходных данных инструментов.

    type ToolOutput =
      | TaskOutput
      | AskUserQuestionOutput
      | BashOutput
      | BashOutputToolOutput
      | EditOutput
      | ReadOutput
      | WriteOutput
      | GlobOutput
      | GrepOutput
      | KillBashOutput
      | NotebookEditOutput
      | WebFetchOutput
      | WebSearchOutput
      | TodoWriteOutput
      | ExitPlanModeOutput
      | ListMcpResourcesOutput
      | ReadMcpResourceOutput;

    Task

    Имя инструмента: Task

    interface TaskOutput {
      /**
       * Финальное сообщение результата от подагента
       */
      result: string;
      /**
       * Статистика использования токенов
       */
      usage?: {
        input_tokens: number;
        output_tokens: number;
        cache_creation_input_tokens?: number;
        cache_read_input_tokens?: number;
      };
      /**
       * Общая стоимость в USD
       */
      total_cost_usd?: number;
      /**
       * Длительность выполнения в миллисекундах
       */
      duration_ms?: number;
    }

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

    AskUserQuestion

    Имя инструмента: AskUserQuestion

    interface AskUserQuestionOutput {
      /**
       * Вопросы, которые были заданы
       */
      questions: Array<{
        question: string;
        header: string;
        options: Array<{
          label: string;
          description: string;
        }>;
        multiSelect: boolean;
      }>;
      /**
       * Ответы, предоставленные пользователем.
       * Отображает текст вопроса на строку ответа.
       * Ответы с множественным выбором разделены запятыми.
       */
      answers: Record<string, string>;
    }

    Возвращает заданные вопросы и ответы пользователя.

    Bash

    Имя инструмента: Bash

    interface BashOutput {
      /**
       * Объединённый вывод stdout и stderr
       */
      output: string;
      /**
       * Код выхода команды
       */
      exitCode: number;
      /**
       * Была ли команда завершена из-за таймаута
       */
      killed?: boolean;
      /**
       * ID оболочки для фоновых процессов
       */
      shellId?: string;
    }

    Возвращает вывод команды со статусом выхода. Фоновые команды возвращаются немедленно с shellId.

    BashOutput

    Имя инструмента: BashOutput

    interface BashOutputToolOutput {
      /**
       * Новый вывод с момента последней проверки
       */
      output: string;
      /**
       * Текущий статус оболочки
       */
      status: 'running' | 'completed' | 'failed';
      /**
       * Код выхода (когда завершено)
       */
      exitCode?: number;
    }

    Возвращает добавочный вывод из фоновых оболочек.

    Edit

    Имя инструмента: Edit

    interface EditOutput {
      /**
       * Сообщение подтверждения
       */
      message: string;
      /**
       * Количество выполненных замен
       */
      replacements: number;
      /**
       * Путь к файлу, который был отредактирован
       */
      file_path: string;
    }

    Возвращает подтверждение успешных редактирований с количеством замен.

    Чтение

    Имя инструмента: Read

    type ReadOutput = 
      | TextFileOutput
      | ImageFileOutput
      | PDFFileOutput
      | NotebookFileOutput;
    
    interface TextFileOutput {
      /**
       * Содержимое файла с номерами строк
       */
      content: string;
      /**
       * Общее количество строк в файле
       */
      total_lines: number;
      /**
       * Фактически возвращённые строки
       */
      lines_returned: number;
    }
    
    interface ImageFileOutput {
      /**
       * Данные изображения в кодировке Base64
       */
      image: string;
      /**
       * MIME-тип изображения
       */
      mime_type: string;
      /**
       * Размер файла в байтах
       */
      file_size: number;
    }
    
    interface PDFFileOutput {
      /**
       * Массив содержимого страниц
       */
      pages: Array<{
        page_number: number;
        text?: string;
        images?: Array<{
          image: string;
          mime_type: string;
        }>;
      }>;
      /**
       * Общее количество страниц
       */
      total_pages: number;
    }
    
    interface NotebookFileOutput {
      /**
       * Ячейки Jupyter notebook
       */
      cells: Array<{
        cell_type: 'code' | 'markdown';
        source: string;
        outputs?: any[];
        execution_count?: number;
      }>;
      /**
       * Метаданные notebook
       */
      metadata?: Record<string, any>;
    }

    Возвращает содержимое файла в формате, соответствующем типу файла.

    Запись

    Имя инструмента: Write

    interface WriteOutput {
      /**
       * Сообщение об успехе
       */
      message: string;
      /**
       * Количество записанных байтов
       */
      bytes_written: number;
      /**
       * Путь к файлу, который был записан
       */
      file_path: string;
    }

    Возвращает подтверждение после успешной записи файла.

    Glob

    Имя инструмента: Glob

    interface GlobOutput {
      /**
       * Массив совпадающих путей файлов
       */
      matches: string[];
      /**
       * Количество найденных совпадений
       */
      count: number;
      /**
       * Использованный каталог поиска
       */
      search_path: string;
    }

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

    Grep

    Имя инструмента: Grep

    type GrepOutput = 
      | GrepContentOutput
      | GrepFilesOutput
      | GrepCountOutput;
    
    interface GrepContentOutput {
      /**
       * Совпадающие строки с контекстом
       */
      matches: Array<{
        file: string;
        line_number?: number;
        line: string;
        before_context?: string[];
        after_context?: string[];
      }>;
      /**
       * Общее количество совпадений
       */
      total_matches: number;
    }
    
    interface GrepFilesOutput {
      /**
       * Файлы, содержащие совпадения
       */
      files: string[];
      /**
       * Количество файлов с совпадениями
       */
      count: number;
    }
    
    interface GrepCountOutput {
      /**
       * Количество совпадений для каждого файла
       */
      counts: Array<{
        file: string;
        count: number;
      }>;
      /**
       * Общее количество совпадений во всех файлах
       */
      total: number;
    }

    Возвращает результаты поиска в формате, указанном в output_mode.

    KillBash

    Имя инструмента: KillBash

    interface KillBashOutput {
      /**
       * Сообщение об успехе
       */
      message: string;
      /**
       * ID завершённой оболочки
       */
      shell_id: string;
    }

    Возвращает подтверждение после завершения фоновой оболочки.

    NotebookEdit

    Имя инструмента: NotebookEdit

    interface NotebookEditOutput {
      /**
       * Сообщение об успехе
       */
      message: string;
      /**
       * Тип выполненного редактирования
       */
      edit_type: 'replaced' | 'inserted' | 'deleted';
      /**
       * ID ячейки, которая была затронута
       */
      cell_id?: string;
      /**
       * Общее количество ячеек в notebook после редактирования
       */
      total_cells: number;
    }

    Возвращает подтверждение после изменения Jupyter notebook.

    WebFetch

    Имя инструмента: WebFetch

    interface WebFetchOutput {
      /**
       * Ответ модели ИИ на запрос
       */
      response: string;
      /**
       * URL, который был загружен
       */
      url: string;
      /**
       * Финальный URL после перенаправлений
       */
      final_url?: string;
      /**
       * Код статуса HTTP
       */
      status_code?: number;
    }

    Возвращает анализ ИИ загруженного веб-содержимого.

    WebSearch

    Имя инструмента: WebSearch

    interface WebSearchOutput {
      /**
       * Результаты поиска
       */
      results: Array<{
        title: string;
        url: string;
        snippet: string;
        /**
         * Дополнительные метаданные, если доступны
         */
        metadata?: Record<string, any>;
      }>;
      /**
       * Общее количество результатов
       */
      total_results: number;
      /**
       * Запрос, который был выполнен
       */
      query: string;
    }

    Возвращает отформатированные результаты поиска из веб-сети.

    TodoWrite

    Имя инструмента: TodoWrite

    interface TodoWriteOutput {
      /**
       * Сообщение об успехе
       */
      message: string;
      /**
       * Текущая статистика задач
       */
      stats: {
        total: number;
        pending: number;
        in_progress: number;
        completed: number;
      };
    }

    Возвращает подтверждение с текущей статистикой задач.

    ExitPlanMode

    Имя инструмента: ExitPlanMode

    interface ExitPlanModeOutput {
      /**
       * Сообщение подтверждения
       */
      message: string;
      /**
       * Одобрил ли пользователь план
       */
      approved?: boolean;
    }

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

    ListMcpResources

    Имя инструмента: ListMcpResources

    interface ListMcpResourcesOutput {
      /**
       * Доступные ресурсы
       */
      resources: Array<{
        uri: string;
        name: string;
        description?: string;
        mimeType?: string;
        server: string;
      }>;
      /**
       * Общее количество ресурсов
       */
      total: number;
    }

    Возвращает список доступных ресурсов MCP.

    ReadMcpResource

    Имя инструмента: ReadMcpResource

    interface ReadMcpResourceOutput {
      /**
       * Содержимое ресурса
       */
      contents: Array<{
        uri: string;
        mimeType?: string;
        text?: string;
        blob?: string;
      }>;
      /**
       * Сервер, предоставивший ресурс
       */
      server: string;
    }

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

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

    PermissionUpdate

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

    type PermissionUpdate = 
      | {
          type: 'addRules';
          rules: PermissionRuleValue[];
          behavior: PermissionBehavior;
          destination: PermissionUpdateDestination;
        }
      | {
          type: 'replaceRules';
          rules: PermissionRuleValue[];
          behavior: PermissionBehavior;
          destination: PermissionUpdateDestination;
        }
      | {
          type: 'removeRules';
          rules: PermissionRuleValue[];
          behavior: PermissionBehavior;
          destination: PermissionUpdateDestination;
        }
      | {
          type: 'setMode';
          mode: PermissionMode;
          destination: PermissionUpdateDestination;
        }
      | {
          type: 'addDirectories';
          directories: string[];
          destination: PermissionUpdateDestination;
        }
      | {
          type: 'removeDirectories';
          directories: string[];
          destination: PermissionUpdateDestination;
        }

    PermissionBehavior

    type PermissionBehavior = 'allow' | 'deny' | 'ask';

    PermissionUpdateDestination

    type PermissionUpdateDestination = 
      | 'userSettings'     // Глобальные пользовательские настройки
      | 'projectSettings'  // Настройки проекта для каждого каталога
      | 'localSettings'    // Локальные настройки, игнорируемые git
      | 'session'          // Только текущая сессия

    PermissionRuleValue

    type PermissionRuleValue = {
      toolName: string;
      ruleContent?: string;
    }

    Другие типы

    ApiKeySource

    type ApiKeySource = 'user' | 'project' | 'org' | 'temporary';

    SdkBeta

    Доступные бета-функции, которые можно включить через опцию betas. Дополнительную информацию см. в разделе Бета-заголовки.

    type SdkBeta = 'context-1m-2025-08-07';
    ЗначениеОписаниеСовместимые модели
    'context-1m-2025-08-07'Включает контекстное окно в 1 миллион токеновClaude Sonnet 4, Claude Sonnet 4.5

    SlashCommand

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

    type SlashCommand = {
      name: string;
      description: string;
      argumentHint: string;
    }

    ModelInfo

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

    type ModelInfo = {
      value: string;
      displayName: string;
      description: string;
    }

    McpServerStatus

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

    type McpServerStatus = {
      name: string;
      status: 'connected' | 'failed' | 'needs-auth' | 'pending';
      serverInfo?: {
        name: string;
        version: string;
      };
    }

    AccountInfo

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

    type AccountInfo = {
      email?: string;
      organization?: string;
      subscriptionType?: string;
      tokenSource?: string;
      apiKeySource?: string;
    }

    ModelUsage

    Статистика использования для каждой модели, возвращаемая в сообщениях результатов.

    type ModelUsage = {
      inputTokens: number;
      outputTokens: number;
      cacheReadInputTokens: number;
      cacheCreationInputTokens: number;
      webSearchRequests: number;
      costUSD: number;
      contextWindow: number;
    }

    ConfigScope

    type ConfigScope = 'local' | 'user' | 'project';

    NonNullableUsage

    Версия Usage со всеми обнуляемыми полями, сделанными необнуляемыми.

    type NonNullableUsage = {
      [K in keyof Usage]: NonNullable<Usage[K]>;
    }

    Usage

    Статистика использования токенов (из @anthropic-ai/sdk).

    type Usage = {
      input_tokens: number | null;
      output_tokens: number | null;
      cache_creation_input_tokens?: number | null;
      cache_read_input_tokens?: number | null;
    }

    CallToolResult

    Тип результата инструмента MCP (из @modelcontextprotocol/sdk/types.js).

    type CallToolResult = {
      content: Array<{
        type: 'text' | 'image' | 'resource';
        // Дополнительные поля варьируются в зависимости от типа
      }>;
      isError?: boolean;
    }

    AbortError

    Пользовательский класс ошибки для операций прерывания.

    class AbortError extends Error {}

    Конфигурация песочницы

    SandboxSettings

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

    type SandboxSettings = {
      enabled?: boolean;
      autoAllowBashIfSandboxed?: boolean;
      excludedCommands?: string[];
      allowUnsandboxedCommands?: boolean;
      network?: NetworkSandboxSettings;
      ignoreViolations?: SandboxIgnoreViolations;
      enableWeakerNestedSandbox?: boolean;
    }
    СвойствоТипПо умолчаниюОписание
    enabledbooleanfalseВключить режим песочницы для выполнения команд
    autoAllowBashIfSandboxedbooleanfalseАвтоматически одобрять команды bash, когда песочница включена
    excludedCommandsstring[][]Команды, которые всегда обходят ограничения песочницы (например, ['docker']). Они выполняются без изоляции автоматически без участия модели
    allowUnsandboxedCommandsbooleanfalseРазрешить модели запрашивать выполнение команд вне песочницы. Когда true, модель может установить dangerouslyDisableSandbox в входных данных инструмента, что переходит к системе разрешений
    networkNetworkSandboxSettingsundefinedКонфигурация песочницы для сети
    ignoreViolationsSandboxIgnoreViolationsundefinedНастройте, какие нарушения песочницы игнорировать
    enableWeakerNestedSandboxbooleanfalseВключить более слабую вложенную песочницу для совместимости

    Ограничения доступа к файловой системе и сети НЕ настраиваются через параметры песочницы. Вместо этого они получены из правил разрешений:

    • Ограничения чтения файловой системы: Правила отказа в чтении
    • Ограничения записи в файловую систему: Правила разрешения/отказа редактирования
    • Ограничения сети: Правила разрешения/отказа WebFetch

    Используйте параметры песочницы для изоляции выполнения команд и правила разрешений для контроля доступа к файловой системе и сети.

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

    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    const result = await query({
      prompt: "Build and test my project",
      options: {
        sandbox: {
          enabled: true,
          autoAllowBashIfSandboxed: true,
          excludedCommands: ["docker"],
          network: {
            allowLocalBinding: true,
            allowUnixSockets: ["/var/run/docker.sock"]
          }
        }
      }
    });

    NetworkSandboxSettings

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

    type NetworkSandboxSettings = {
      allowLocalBinding?: boolean;
      allowUnixSockets?: string[];
      allowAllUnixSockets?: boolean;
      httpProxyPort?: number;
      socksProxyPort?: number;
    }
    СвойствоТипПо умолчаниюОписание
    allowLocalBindingbooleanfalseРазрешить процессам привязываться к локальным портам (например, для серверов разработки)
    allowUnixSocketsstring[][]Пути сокетов Unix, к которым могут получить доступ процессы (например, сокет Docker)
    allowAllUnixSocketsbooleanfalseРазрешить доступ ко всем сокетам Unix
    httpProxyPortnumberundefinedПорт HTTP-прокси для сетевых запросов
    socksProxyPortnumberundefinedПорт SOCKS-прокси для сетевых запросов

    SandboxIgnoreViolations

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

    type SandboxIgnoreViolations = {
      file?: string[];
      network?: string[];
    }
    СвойствоТипПо умолчаниюОписание
    filestring[][]Шаблоны путей файлов для игнорирования нарушений
    networkstring[][]Шаблоны сети для игнорирования нарушений

    Откат к системе разрешений для команд вне песочницы

    Когда allowUnsandboxedCommands включен, модель может запросить выполнение команд вне песочницы, установив dangerouslyDisableSandbox: true во входных данных инструмента. Эти запросы переходят к существующей системе разрешений, что означает, что ваш обработчик canUseTool будет вызван, позволяя вам реализовать пользовательскую логику авторизации.

    excludedCommands vs allowUnsandboxedCommands:

    • excludedCommands: Статический список команд, которые всегда автоматически обходят песочницу (например, ['docker']). Модель не имеет над этим контроля.
    • allowUnsandboxedCommands: Позволяет модели решать во время выполнения, запрашивать ли выполнение вне песочницы, установив dangerouslyDisableSandbox: true во входных данных инструмента.
    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    const result = await query({
      prompt: "Deploy my application",
      options: {
        sandbox: {
          enabled: true,
          allowUnsandboxedCommands: true  // Модель может запросить выполнение вне песочницы
        },
        permissionMode: "default",
        canUseTool: async (tool, input) => {
          // Проверьте, запрашивает ли модель обход песочницы
          if (tool === "Bash" && input.dangerouslyDisableSandbox) {
            // Модель хочет выполнить эту команду вне песочницы
            console.log(`Unsandboxed command requested: ${input.command}`);
    
            // Верните true для разрешения, false для отказа
            return isCommandAuthorized(input.command);
          }
          return true;
        }
      }
    });

    Этот паттерн позволяет вам:

    • Аудировать запросы модели: Логировать, когда модель запрашивает выполнение вне песочницы
    • Реализовать списки разрешений: Разрешить только определённым командам выполняться вне песочницы
    • Добавить рабочие процессы одобрения: Требовать явную авторизацию для привилегированных операций

    Команды, выполняемые с dangerouslyDisableSandbox: true, имеют полный доступ к системе. Убедитесь, что ваш обработчик canUseTool тщательно проверяет эти запросы.

    См. также

    • Обзор SDK - Общие концепции SDK
    • Справочник Python SDK - Документация Python SDK
    • Справочник CLI - Интерфейс командной строки
    • Общие рабочие процессы - Пошаговые руководства
    • Установка
    • Функции
    • query()
    • tool()
    • createSdkMcpServer()
    • Типы
    • Options
    • Query
    • AgentDefinition
    • SettingSource
    • PermissionMode
    • CanUseTool
    • PermissionResult
    • McpServerConfig
    • SdkPluginConfig
    • Типы сообщений
    • SDKMessage
    • SDKAssistantMessage
    • SDKUserMessage
    • SDKUserMessageReplay
    • SDKResultMessage
    • SDKSystemMessage
    • SDKPartialAssistantMessage
    • SDKCompactBoundaryMessage
    • SDKPermissionDenial
    • Типы хуков
    • HookEvent
    • HookCallback
    • HookCallbackMatcher
    • HookInput
    • BaseHookInput
    • HookJSONOutput
    • Типы входных данных инструментов
    • ToolInput
    • Task
    • AskUserQuestion
    • Bash
    • BashOutput
    • Edit
    • Read
    • Write
    • Glob
    • Grep
    • KillBash
    • NotebookEdit
    • WebFetch
    • WebSearch
    • TodoWrite
    • ExitPlanMode
    • ListMcpResources
    • ReadMcpResource
    • Типы выходных данных инструментов
    • ToolOutput
    • Task
    • AskUserQuestion
    • Bash
    • BashOutput
    • Edit
    • Чтение
    • Запись
    • Glob
    • Grep
    • KillBash
    • NotebookEdit
    • WebFetch
    • WebSearch
    • TodoWrite
    • ExitPlanMode
    • ListMcpResources
    • ReadMcpResource
    • Типы разрешений
    • PermissionUpdate
    • PermissionBehavior
    • PermissionUpdateDestination
    • PermissionRuleValue
    • Другие типы
    • ApiKeySource
    • SdkBeta
    • SlashCommand
    • ModelInfo
    • McpServerStatus
    • AccountInfo
    • ModelUsage
    • ConfigScope
    • NonNullableUsage
    • Usage
    • CallToolResult
    • AbortError
    • Конфигурация песочницы
    • SandboxSettings
    • NetworkSandboxSettings
    • SandboxIgnoreViolations
    • Откат к системе разрешений для команд вне песочницы
    • См. также