Loading...
    • Руководство разработчика
    • Справочник API
    • MCP
    • Ресурсы
    • Примечания к выпуску
    Search...
    ⌘K
    Первые шаги
    Введение в ClaudeБыстрый старт
    Модели и цены
    Обзор моделейВыбор моделиЧто нового в Claude 4.6Руководство миграцииУстаревшие моделиЦены
    Разработка с Claude
    Обзор функцийИспользование Messages APIОбработка причин остановкиЛучшие практики промптирования
    Возможности модели
    Extended thinkingAdaptive thinkingУсилиеБыстрый режим (preview)Структурированные выходные данныеЦитированияПотоковая передача сообщенийПакетная обработкаПоддержка PDFРезультаты поискаМногоязычная поддержкаEmbeddingsЗрение
    Инструменты
    ОбзорКак реализовать использование инструментовИнструмент веб-поискаИнструмент веб-загрузкиИнструмент выполнения кодаИнструмент памятиИнструмент BashИнструмент управления компьютеромИнструмент текстового редактора
    Инфраструктура инструментов
    Поиск инструментовПрограммный вызов инструментовПотоковая передача инструментов с детализацией
    Управление контекстом
    Контекстные окнаСжатиеРедактирование контекстаКэширование промптовПодсчет токенов
    Файлы и ресурсы
    Files API
    Agent Skills
    ОбзорБыстрый стартЛучшие практикиSkills для предприятийИспользование Skills с API
    Agent SDK
    ОбзорБыстрый стартTypeScript SDKTypeScript V2 (preview)Python SDKРуководство миграции
    MCP в API
    MCP коннекторУдаленные MCP серверы
    Claude на платформах третьих сторон
    Amazon BedrockMicrosoft FoundryVertex AI
    Инженерия промптов
    ОбзорГенератор промптовИспользование шаблонов промптовУлучшитель промптовБудьте ясны и прямолинейныИспользуйте примеры (многошаговое промптирование)Дайте Claude думать (CoT)Используйте XML тегиДайте Claude роль (системные промпты)Цепочка сложных промптовСоветы для длинного контекстаСоветы для Extended thinking
    Тестирование и оценка
    Определение критериев успехаРазработка тестовых случаевИспользование инструмента оценкиСнижение задержки
    Укрепление защиты
    Снижение галлюцинацийУвеличение согласованности выходных данныхСмягчение jailbreaksПотоковая передача отказовСнижение утечки промптаДержите Claude в образе
    Администрирование и мониторинг
    Обзор Admin APIРезидентность данныхРабочие пространстваUsage and Cost APIClaude Code Analytics APIZero Data Retention
    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() теперь доступен, что облегчает многооборотные беседы. Узнайте больше о предпросмотре TypeScript V2

    Установка

    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 пропущен или не определён, 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 имеет значение true).

    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>;
    }

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

    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

    Имя инструмента: 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

    Имя инструмента: 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 {
      /**
       * Ответ модели AI на запрос
       */
      response: string;
      /**
       * URL, который был загружен
       */
      url: string;
      /**
       * Финальный URL после перенаправлений
       */
      final_url?: string;
      /**
       * HTTP код состояния
       */
      status_code?: number;
    }

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

    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 миллион токенов context windowClaude Opus 4.6, Claude Sonnet 4.5, Claude Sonnet 4

    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,
          network: {
            allowLocalBinding: true
          }
        }
      }
    });

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

    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 тщательно проверяет эти запросы.

    Если permissionMode установлен на bypassPermissions и allowUnsandboxedCommands включена, модель может автономно выполнять команды вне песочницы без каких-либо запросов одобрения. Эта комбинация фактически позволяет модели молча выходить из изоляции песочницы.

    См. также

    • Обзор SDK - Общие концепции SDK
    • Справочник Python SDK - Документация Python SDK
    • Справочник CLI - Интерфейс командной строки
    • Общие рабочие процессы - Пошаговые руководства

    Was this page helpful?

    • Установка
    • Функции
    • 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
    • Read
    • Write
    • 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
    • Откат разрешений для команд вне песочницы
    • См. также