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

Установка

npm install @anthropic-ai/claude-agent-sdk
SDK поставляется с нативным бинарным файлом Claude Code для вашей платформы в качестве опциональной зависимости, такой как @anthropic-ai/claude-agent-sdk-darwin-arm64. Вам не нужно устанавливать Claude Code отдельно. Если ваш менеджер пакетов пропускает опциональные зависимости, SDK выбросит ошибку Native CLI binary for <platform> not found; вместо этого установите pathToClaudeCodeExecutable на отдельно установленный бинарный файл claude.

Функции

query()

Основная функция для взаимодействия с Claude Code. Создаёт асинхронный генератор, который потоком передаёт сообщения по мере их поступления.
function query({
  prompt,
  options
}: {
  prompt: string | AsyncIterable<SDKUserMessage>;
  options?: Options;
}): Query;

Параметры

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

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

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

startup()

Предварительно разогревает подпроцесс CLI, запуская его и завершая инициализационное рукопожатие до того, как запрос будет доступен. Возвращённый дескриптор WarmQuery принимает запрос позже и записывает его в уже готовый процесс, поэтому первый вызов query() разрешается без затрат на запуск подпроцесса и инициализацию в строке.
function startup(params?: {
  options?: Options;
  initializeTimeoutMs?: number;
}): Promise<WarmQuery>;

Параметры

ПараметрТипОписание
optionsOptionsОпциональный объект конфигурации. Аналогичен параметру options функции query()
initializeTimeoutMsnumberМаксимальное время в миллисекундах для ожидания инициализации подпроцесса. По умолчанию 60000. Если инициализация не завершится вовремя, промис отклонится с ошибкой timeout

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

Возвращает Promise<WarmQuery>, который разрешается после того, как подпроцесс запущен и завершил инициализационное рукопожатие.

Пример

Вызовите startup() рано, например при загрузке приложения, затем вызовите .query() на возвращённом дескрипторе, когда запрос будет готов. Это перемещает запуск подпроцесса и инициализацию из критического пути.
import { startup } from "@anthropic-ai/claude-agent-sdk";

// Оплатите стоимость запуска заранее
const warm = await startup({ options: { maxTurns: 3 } });

// Позже, когда запрос готов, это происходит мгновенно
for await (const message of warm.query("What files are here?")) {
  console.log(message);
}

tool()

Создаёт определение типобезопасного MCP tool для использования с SDK MCP серверами.
function tool<Schema extends AnyZodRawShape>(
  name: string,
  description: string,
  inputSchema: Schema,
  handler: (args: InferShape<Schema>, extra: unknown) => Promise<CallToolResult>,
  extras?: { annotations?: ToolAnnotations }
): SdkMcpToolDefinition<Schema>;

Параметры

ПараметрТипОписание
namestringИмя tool
descriptionstringОписание того, что делает tool
inputSchemaSchema extends AnyZodRawShapeZod схема, определяющая входные параметры tool (поддерживает Zod 3 и Zod 4)
handler(args, extra) => Promise<CallToolResult>Асинхронная функция, которая выполняет логику tool
extras{ annotations?: ToolAnnotations }Опциональные аннотации MCP tool, предоставляющие поведенческие подсказки клиентам

ToolAnnotations

Переэкспортировано из @modelcontextprotocol/sdk/types.js. Все поля являются опциональными подсказками; клиенты не должны полагаться на них для решений безопасности.
ПолеТипПо умолчаниюОписание
titlestringundefinedУдобочитаемое название для tool
readOnlyHintbooleanfalseЕсли true, tool не изменяет свою среду
destructiveHintbooleantrueЕсли true, tool может выполнять деструктивные обновления (имеет смысл только когда readOnlyHint равен false)
idempotentHintbooleanfalseЕсли true, повторные вызовы с одинаковыми аргументами не имеют дополнительного эффекта (имеет смысл только когда readOnlyHint равен false)
openWorldHintbooleantrueЕсли true, tool взаимодействует с внешними сущностями (например, веб-поиск). Если false, область tool закрыта (например, tool памяти)
import { tool } from "@anthropic-ai/claude-agent-sdk";
import { z } from "zod";

const searchTool = tool(
  "search",
  "Search the web",
  { query: z.string() },
  async ({ query }) => {
    return { content: [{ type: "text", text: `Results for: ${query}` }] };
  },
  { annotations: { readOnlyHint: true, openWorldHint: true } }
);

createSdkMcpServer()

Создаёт экземпляр MCP сервера, который работает в том же процессе, что и ваше приложение.
function createSdkMcpServer(options: {
  name: string;
  version?: string;
  tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance;

Параметры

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

listSessions()

Обнаруживает и перечисляет прошлые сессии с лёгкими метаданными. Фильтруйте по директории проекта или перечисляйте сессии во всех проектах.
function listSessions(options?: ListSessionsOptions): Promise<SDKSessionInfo[]>;

Параметры

ПараметрТипПо умолчаниюОписание
options.dirstringundefinedДиректория для перечисления сессий. Если опущено, возвращает сессии во всех проектах
options.limitnumberundefinedМаксимальное количество сессий для возврата
options.includeWorktreesbooleantrueКогда dir находится внутри git репозитория, включайте сессии из всех путей worktree

Тип возврата: SDKSessionInfo

СвойствоТипОписание
sessionIdstringУникальный идентификатор сессии (UUID)
summarystringОтображаемое название: пользовательское название, автоматически сгенерированное резюме или первый запрос
lastModifiednumberВремя последнего изменения в миллисекундах с эпохи
fileSizenumber | undefinedРазмер файла сессии в байтах. Заполняется только для локального хранилища JSONL
customTitlestring | undefinedПользовательское название сессии (через /rename)
firstPromptstring | undefinedПервый значимый пользовательский запрос в сессии
gitBranchstring | undefinedGit ветка в конце сессии
cwdstring | undefinedРабочая директория для сессии
tagstring | undefinedПользовательский тег сессии (см. tagSession())
createdAtnumber | undefinedВремя создания в миллисекундах с эпохи, из временной метки первой записи

Пример

Выведите 10 самых последних сессий для проекта. Результаты отсортированы по lastModified в убывающем порядке, поэтому первый элемент является самым новым. Опустите dir для поиска во всех проектах.
import { listSessions } from "@anthropic-ai/claude-agent-sdk";

const sessions = await listSessions({ dir: "/path/to/project", limit: 10 });

for (const session of sessions) {
  console.log(`${session.summary} (${session.sessionId})`);
}

getSessionMessages()

Читает сообщения пользователя и ассистента из прошлой сессии.
function getSessionMessages(
  sessionId: string,
  options?: GetSessionMessagesOptions
): Promise<SessionMessage[]>;

Параметры

ПараметрТипПо умолчаниюОписание
sessionIdstringобязательноUUID сессии для чтения (см. listSessions())
options.dirstringundefinedДиректория проекта для поиска сессии. Если опущено, ищет во всех проектах
options.limitnumberundefinedМаксимальное количество сообщений для возврата
options.offsetnumberundefinedКоличество сообщений для пропуска с начала

Тип возврата: SessionMessage

СвойствоТипОписание
type"user" | "assistant"Роль сообщения
uuidstringУникальный идентификатор сообщения
session_idstringСессия, к которой принадлежит это сообщение
messageunknownНеобработанная полезная нагрузка сообщения из транскрипта
parent_tool_use_idnullЗарезервировано

Пример

import { listSessions, getSessionMessages } from "@anthropic-ai/claude-agent-sdk";

const [latest] = await listSessions({ dir: "/path/to/project", limit: 1 });

if (latest) {
  const messages = await getSessionMessages(latest.sessionId, {
    dir: "/path/to/project",
    limit: 20
  });

  for (const msg of messages) {
    console.log(`[${msg.type}] ${msg.uuid}`);
  }
}

getSessionInfo()

Читает метаданные для одной сессии по ID без сканирования полной директории проекта.
function getSessionInfo(
  sessionId: string,
  options?: GetSessionInfoOptions
): Promise<SDKSessionInfo | undefined>;

Параметры

ПараметрТипПо умолчаниюОписание
sessionIdstringобязательноUUID сессии для поиска
options.dirstringundefinedПуть директории проекта. Если опущено, ищет во всех директориях проектов
Возвращает SDKSessionInfo или undefined, если сессия не найдена.

renameSession()

Переименовывает сессию, добавляя запись пользовательского названия. Повторные вызовы безопасны; побеждает самое последнее название.
function renameSession(
  sessionId: string,
  title: string,
  options?: SessionMutationOptions
): Promise<void>;

Параметры

ПараметрТипПо умолчаниюОписание
sessionIdstringобязательноUUID сессии для переименования
titlestringобязательноНовое название. Должно быть непустым после удаления пробелов
options.dirstringundefinedПуть директории проекта. Если опущено, ищет во всех директориях проектов

tagSession()

Помечает сессию. Передайте null для очистки тега. Повторные вызовы безопасны; побеждает самый последний тег.
function tagSession(
  sessionId: string,
  tag: string | null,
  options?: SessionMutationOptions
): Promise<void>;

Параметры

ПараметрТипПо умолчаниюОписание
sessionIdstringобязательноUUID сессии для пометки
tagstring | nullобязательноСтрока тега или null для очистки
options.dirstringundefinedПуть директории проекта. Если опущено, ищет во всех директориях проектов

Типы

Options

Объект конфигурации для функции query().
СвойствоТипПо умолчаниюОписание
abortControllerAbortControllernew AbortController()Контроллер для отмены операций
additionalDirectoriesstring[][]Дополнительные директории, к которым Claude может получить доступ
agentstringundefinedИмя агента для основного потока. Агент должен быть определён в опции agents или в настройках
agentsRecord<string, [AgentDefinition](#agent-definition)>undefinedПрограммно определите подагентов
allowDangerouslySkipPermissionsbooleanfalseВключите обход разрешений. Требуется при использовании permissionMode: 'bypassPermissions'
allowedToolsstring[][]Tools для автоматического одобрения без запроса. Это не ограничивает Claude только этими tools; неперечисленные tools переходят к permissionMode и canUseTool. Используйте disallowedTools для блокировки tools. См. Разрешения
betasSdkBeta[][]Включите бета-функции
canUseToolCanUseToolundefinedПользовательская функция разрешения для использования tool
continuebooleanfalseПродолжите самый последний диалог
cwdstringprocess.cwd()Текущая рабочая директория
debugbooleanfalseВключите режим отладки для процесса Claude Code
debugFilestringundefinedЗапишите журналы отладки в определённый путь файла. Неявно включает режим отладки
disallowedToolsstring[][]Tools для всегда отклонения. Правила отклонения проверяются первыми и переопределяют allowedTools и permissionMode (включая bypassPermissions)
effort'low' | 'medium' | 'high' | 'xhigh' | 'max''high'Контролирует, сколько усилий Claude вкладывает в свой ответ. Работает с адаптивным мышлением для направления глубины мышления
enableFileCheckpointingbooleanfalseВключите отслеживание изменений файлов для перемотки. См. Контрольные точки файлов
envRecord<string, string | undefined>process.envПеременные окружения. Установите CLAUDE_AGENT_SDK_CLIENT_APP для идентификации вашего приложения в заголовке User-Agent
executable'bun' | 'deno' | 'node'АвтоопределениеСреда выполнения JavaScript для использования
executableArgsstring[][]Аргументы для передачи исполняемому файлу
extraArgsRecord<string, string | null>{}Дополнительные аргументы
fallbackModelstringundefinedМодель для использования, если основная не работает
forkSessionbooleanfalseПри возобновлении с resume разветвитесь на новый ID сессии вместо продолжения исходной сессии
hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Обратные вызовы hooks для событий
includePartialMessagesbooleanfalseВключите события частичных сообщений
maxBudgetUsdnumberundefinedОстановите запрос, когда оценка стоимости на стороне клиента достигнет этого значения USD. Сравнивается с той же оценкой, что и total_cost_usd; см. Отслеживание стоимости и использования для предостережений точности
maxThinkingTokensnumberundefinedУстарело: Используйте вместо этого thinking. Максимальные токены для процесса мышления
maxTurnsnumberundefinedМаксимальное количество агентских ходов (раунды использования tool)
mcpServersRecord<string, [McpServerConfig](#mcp-server-config)>{}Конфигурации MCP серверов
modelstringПо умолчанию из CLIМодель Claude для использования
outputFormat{ type: 'json_schema', schema: JSONSchema }undefinedОпределите формат вывода для результатов агента. См. Структурированные выводы для деталей
pathToClaudeCodeExecutablestringАвтоопределение из встроенного нативного бинарного файлаПуть к исполняемому файлу Claude Code. Требуется только если опциональные зависимости были пропущены при установке или ваша платформа не в поддерживаемом наборе
permissionModePermissionMode'default'Режим разрешения для сессии
permissionPromptToolNamestringundefinedИмя MCP tool для запросов разрешения
persistSessionbooleantrueКогда false, отключает сохранение сессии на диск. Сессии не могут быть возобновлены позже
pluginsSdkPluginConfig[][]Загружайте пользовательские plugins из локальных путей. См. Plugins для деталей
promptSuggestionsbooleanfalseВключите предложения запросов. Выдаёт сообщение prompt_suggestion после каждого хода с предсказанным следующим пользовательским запросом
resumestringundefinedID сессии для возобновления
resumeSessionAtstringundefinedВозобновите сессию в определённом UUID сообщения
sandboxSandboxSettingsundefinedПрограммно настройте поведение sandbox. См. Настройки Sandbox для деталей
sessionIdstringАвтогенерируемыйИспользуйте определённый UUID для сессии вместо автогенерирования
settingSourcesSettingSource[]Значения по умолчанию CLI (все источники)Контролируйте, какие настройки файловой системы загружать. Передайте [] для отключения пользовательских, проектных и локальных настроек. Управляемые политикой настройки загружаются независимо. См. Используйте функции Claude Code
spawnClaudeCodeProcess(options: SpawnOptions) => SpawnedProcessundefinedПользовательская функция для запуска процесса Claude Code. Используйте для запуска Claude Code на ВМ, контейнерах или удалённых окружениях
stderr(data: string) => voidundefinedОбратный вызов для вывода stderr
strictMcpConfigbooleanfalseПринудительно применяйте строгую валидацию MCP
systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean }undefined (минимальный запрос)Конфигурация системного запроса. Передайте строку для пользовательского запроса или { type: 'preset', preset: 'claude_code' } для использования системного запроса Claude Code. При использовании формы объекта preset добавьте append для расширения его дополнительными инструкциями и установите excludeDynamicSections: true для перемещения контекста для каждой сессии в первое пользовательское сообщение для лучшего переиспользования prompt-cache на разных машинах
thinkingThinkingConfig{ type: 'adaptive' } для поддерживаемых моделейКонтролирует поведение мышления/рассуждения Claude. См. ThinkingConfig для опций
toolConfigToolConfigundefinedКонфигурация для встроенного поведения tool. См. ToolConfig для деталей
toolsstring[] | { type: 'preset'; preset: 'claude_code' }undefinedКонфигурация tool. Передайте массив имён tool или используйте preset для получения встроенных tools Claude Code

Query объект

Интерфейс, возвращаемый функцией query().
interface Query extends AsyncGenerator<SDKMessage, void> {
  interrupt(): Promise<void>;
  rewindFiles(
    userMessageId: string,
    options?: { dryRun?: boolean }
  ): Promise<RewindFilesResult>;
  setPermissionMode(mode: PermissionMode): Promise<void>;
  setModel(model?: string): Promise<void>;
  setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;
  initializationResult(): Promise<SDKControlInitializeResponse>;
  supportedCommands(): Promise<SlashCommand[]>;
  supportedModels(): Promise<ModelInfo[]>;
  supportedAgents(): Promise<AgentInfo[]>;
  mcpServerStatus(): Promise<McpServerStatus[]>;
  accountInfo(): Promise<AccountInfo>;
  reconnectMcpServer(serverName: string): Promise<void>;
  toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;
  setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;
  streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;
  stopTask(taskId: string): Promise<void>;
  close(): void;
}

Методы

МетодОписание
interrupt()Прерывает запрос (доступно только в режиме потока входных данных)
rewindFiles(userMessageId, options?)Восстанавливает файлы в их состояние в указанном пользовательском сообщении. Передайте { dryRun: true } для предпросмотра изменений. Требует enableFileCheckpointing: true. См. Контрольные точки файлов
setPermissionMode()Изменяет режим разрешения (доступно только в режиме потока входных данных)
setModel()Изменяет модель (доступно только в режиме потока входных данных)
setMaxThinkingTokens()Устарело: Используйте вместо этого опцию thinking. Изменяет максимальные токены мышления
initializationResult()Возвращает полный результат инициализации, включая поддерживаемые команды, модели, информацию об учётной записи и конфигурацию стиля вывода
supportedCommands()Возвращает доступные slash commands
supportedModels()Возвращает доступные модели с информацией отображения
supportedAgents()Возвращает доступные подагентов как AgentInfo[]
mcpServerStatus()Возвращает статус подключённых MCP серверов
accountInfo()Возвращает информацию об учётной записи
reconnectMcpServer(serverName)Переподключитесь к MCP серверу по имени
toggleMcpServer(serverName, enabled)Включите или отключите MCP сервер по имени
setMcpServers(servers)Динамически замените набор MCP серверов для этой сессии. Возвращает информацию о том, какие серверы были добавлены, удалены и какие ошибки
streamInput(stream)Потоком передавайте входные сообщения к запросу для многооборотных диалогов
stopTask(taskId)Остановите выполняющуюся фоновую задачу по ID
close()Закройте запрос и завершите базовый процесс. Принудительно завершает запрос и очищает все ресурсы

WarmQuery

Дескриптор, возвращаемый startup(). Подпроцесс уже запущен и инициализирован, поэтому вызов query() на этом дескрипторе записывает запрос непосредственно в готовый процесс без задержки запуска.
interface WarmQuery extends AsyncDisposable {
  query(prompt: string | AsyncIterable<SDKUserMessage>): Query;
  close(): void;
}

Методы

МетодОписание
query(prompt)Отправьте запрос к предварительно разогретому подпроцессу и верните Query. Может быть вызван только один раз на WarmQuery
close()Закройте подпроцесс без отправки запроса. Используйте это для отказа от тёплого запроса, который больше не нужен
WarmQuery реализует AsyncDisposable, поэтому его можно использовать с await using для автоматической очистки.

SDKControlInitializeResponse

Тип возврата initializationResult(). Содержит данные инициализации сессии.
type SDKControlInitializeResponse = {
  commands: SlashCommand[];
  agents: AgentInfo[];
  output_style: string;
  available_output_styles: string[];
  models: ModelInfo[];
  account: AccountInfo;
  fast_mode_state?: "off" | "cooldown" | "on";
};

AgentDefinition

Конфигурация для подагента, определённого программно.
type AgentDefinition = {
  description: string;
  tools?: string[];
  disallowedTools?: string[];
  prompt: string;
  model?: "sonnet" | "opus" | "haiku" | "inherit";
  mcpServers?: AgentMcpServerSpec[];
  skills?: string[];
  maxTurns?: number;
  criticalSystemReminder_EXPERIMENTAL?: string;
};
ПолеОбязательноОписание
descriptionДаОписание на естественном языке, когда использовать этого агента
toolsНетМассив разрешённых имён tool. Если опущено, наследует все tools от родителя
disallowedToolsНетМассив имён tool для явного запрещения для этого агента
promptДаСистемный запрос агента
modelНетПереопределение модели для этого агента. Если опущено или 'inherit', использует основную модель
mcpServersНетСпецификации MCP серверов для этого агента
skillsНетМассив имён skills для предварительной загрузки в контекст агента
maxTurnsНетМаксимальное количество агентских ходов (раунды API) перед остановкой
criticalSystemReminder_EXPERIMENTALНетЭкспериментально: Критическое напоминание, добавленное в системный запрос

AgentMcpServerSpec

Указывает MCP серверы, доступные подагенту. Может быть именем сервера (строка, ссылающаяся на сервер из конфигурации mcpServers родителя) или встроенной конфигурацией сервера, записью, отображающей имена серверов на конфигурации.
type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;
Где McpServerConfigForProcessTransport это McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.

SettingSource

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

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

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

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

Отключите настройки файловой системы:
// Не загружайте пользовательские, проектные или локальные настройки с диска
const result = query({
  prompt: "Analyze this code",
  options: { settingSources: [] }
});
Загружайте все настройки файловой системы явно:
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-только приложения:
// Определите всё программно.
// Передайте [] для отказа от источников настроек файловой системы.
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 Code
    },
    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" // Режим планирования - без выполнения
  | "dontAsk" // Не запрашивайте разрешения, отклоняйте, если не предварительно одобрено
  | "auto"; // Используйте классификатор модели для одобрения или отклонения каждого вызова tool

CanUseTool

Тип пользовательской функции разрешения для контроля использования tool.
type CanUseTool = (
  toolName: string,
  input: Record<string, unknown>,
  options: {
    signal: AbortSignal;
    suggestions?: PermissionUpdate[];
    blockedPath?: string;
    decisionReason?: string;
    toolUseID: string;
    agentID?: string;
  }
) => Promise<PermissionResult>;
ОпцияТипОписание
signalAbortSignalСигнализируется, если операция должна быть отменена
suggestionsPermissionUpdate[]Предложенные обновления разрешения, чтобы пользователь не был запрошен снова для этого tool
blockedPathstringПуть файла, который вызвал запрос разрешения, если применимо
decisionReasonstringОбъясняет, почему был вызван этот запрос разрешения
toolUseIDstringУникальный идентификатор для этого конкретного вызова tool в сообщении ассистента
agentIDstringЕсли работает в подагенте, ID подагента

PermissionResult

Результат проверки разрешения.
type PermissionResult =
  | {
      behavior: "allow";
      updatedInput?: Record<string, unknown>;
      updatedPermissions?: PermissionUpdate[];
      toolUseID?: string;
    }
  | {
      behavior: "deny";
      message: string;
      interrupt?: boolean;
      toolUseID?: string;
    };

ToolConfig

Конфигурация для встроенного поведения tool.
type ToolConfig = {
  askUserQuestion?: {
    previewFormat?: "markdown" | "html";
  };
};
ПолеТипОписание
askUserQuestion.previewFormat'markdown' | 'html'Выбирает поле preview на опциях AskUserQuestion и устанавливает его формат содержимого. Если не установлено, Claude не выдаёт предпросмотры

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

McpClaudeAIProxyServerConfig

type McpClaudeAIProxyServerConfig = {
  type: "claudeai-proxy";
  url: string;
  id: string;
};

SdkPluginConfig

Конфигурация для загрузки plugins в SDK.
type SdkPluginConfig = {
  type: "local";
  path: string;
};
ПолеТипОписание
type'local'Должно быть 'local' (в настоящее время поддерживаются только локальные plugins)
pathstringАбсолютный или относительный путь к директории plugin
Пример:
plugins: [
  { type: "local", path: "./my-plugin" },
  { type: "local", path: "/absolute/path/to/plugin" }
];
Для полной информации о создании и использовании plugins см. Plugins.

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

SDKMessage

Тип объединения всех возможных сообщений, возвращаемых запросом.
type SDKMessage =
  | SDKAssistantMessage
  | SDKUserMessage
  | SDKUserMessageReplay
  | SDKResultMessage
  | SDKSystemMessage
  | SDKPartialAssistantMessage
  | SDKCompactBoundaryMessage
  | SDKStatusMessage
  | SDKLocalCommandOutputMessage
  | SDKHookStartedMessage
  | SDKHookProgressMessage
  | SDKHookResponseMessage
  | SDKPluginInstallMessage
  | SDKToolProgressMessage
  | SDKAuthStatusMessage
  | SDKTaskNotificationMessage
  | SDKTaskStartedMessage
  | SDKTaskProgressMessage
  | SDKFilesPersistedEvent
  | SDKToolUseSummaryMessage
  | SDKRateLimitEvent
  | SDKPromptSuggestionMessage;

SDKAssistantMessage

Сообщение ответа ассистента.
type SDKAssistantMessage = {
  type: "assistant";
  uuid: UUID;
  session_id: string;
  message: BetaMessage; // Из Anthropic SDK
  parent_tool_use_id: string | null;
  error?: SDKAssistantMessageError;
};
Поле message это BetaMessage из Anthropic SDK. Оно включает поля, такие как id, content, model, stop_reason и usage. SDKAssistantMessageError это один из: 'authentication_failed', 'billing_error', 'rate_limit', 'invalid_request', 'server_error', 'max_output_tokens' или 'unknown'.

SDKUserMessage

Сообщение пользовательского ввода.
type SDKUserMessage = {
  type: "user";
  uuid?: UUID;
  session_id: string;
  message: MessageParam; // Из Anthropic SDK
  parent_tool_use_id: string | null;
  isSynthetic?: boolean;
  shouldQuery?: boolean;
  tool_use_result?: unknown;
};
Установите shouldQuery на false для добавления сообщения в транскрипт без запуска хода ассистента. Сообщение удерживается и объединяется в следующее пользовательское сообщение, которое запускает ход. Используйте это для внедрения контекста, такого как вывод команды, которую вы запустили вне полосы, без траты вызова модели на это.

SDKUserMessageReplay

Повторно воспроизведённое пользовательское сообщение с требуемым UUID.
type SDKUserMessageReplay = {
  type: "user";
  uuid: UUID;
  session_id: string;
  message: MessageParam;
  parent_tool_use_id: string | null;
  isSynthetic?: boolean;
  tool_use_result?: unknown;
  isReplay: true;
};

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;
      stop_reason: string | null;
      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;
      stop_reason: string | null;
      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;
  agents?: string[];
  apiKeySource: ApiKeySource;
  betas?: string[];
  claude_code_version: string;
  cwd: string;
  tools: string[];
  mcp_servers: {
    name: string;
    status: string;
  }[];
  model: string;
  permissionMode: PermissionMode;
  slash_commands: string[];
  output_style: string;
  skills: string[];
  plugins: { name: string; path: string }[];
};

SDKPartialAssistantMessage

Потоковое частичное сообщение (только когда includePartialMessages равен true).
type SDKPartialAssistantMessage = {
  type: "stream_event";
  event: BetaRawMessageStreamEvent; // Из 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;
  };
};

SDKPluginInstallMessage

Событие прогресса установки plugin. Выдаётся, когда установлена CLAUDE_CODE_SYNC_PLUGIN_INSTALL, поэтому ваше приложение Agent SDK может отслеживать установку marketplace plugin перед первым ходом. Статусы started и completed заключают в скобки общую установку. Статусы installed и failed сообщают об отдельных marketplaces и включают name.
type SDKPluginInstallMessage = {
  type: "system";
  subtype: "plugin_install";
  status: "started" | "installed" | "failed" | "completed";
  name?: string;
  error?: string;
  uuid: UUID;
  session_id: string;
};

SDKPermissionDenial

Информация об отклонённом использовании tool.
type SDKPermissionDenial = {
  tool_name: string;
  tool_use_id: string;
  tool_input: Record<string, unknown>;
};

Типы hooks

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

HookEvent

Доступные события hooks.
type HookEvent =
  | "PreToolUse"
  | "PostToolUse"
  | "PostToolUseFailure"
  | "Notification"
  | "UserPromptSubmit"
  | "SessionStart"
  | "SessionEnd"
  | "Stop"
  | "SubagentStart"
  | "SubagentStop"
  | "PreCompact"
  | "PermissionRequest"
  | "Setup"
  | "TeammateIdle"
  | "TaskCompleted"
  | "ConfigChange"
  | "WorktreeCreate"
  | "WorktreeRemove";

HookCallback

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

HookCallbackMatcher

Конфигурация hook с опциональным matcher.
interface HookCallbackMatcher {
  matcher?: string;
  hooks: HookCallback[];
  timeout?: number; // Timeout в секундах для всех hooks в этом matcher
}

HookInput

Тип объединения всех типов входных данных hook.
type HookInput =
  | PreToolUseHookInput
  | PostToolUseHookInput
  | PostToolUseFailureHookInput
  | NotificationHookInput
  | UserPromptSubmitHookInput
  | SessionStartHookInput
  | SessionEndHookInput
  | StopHookInput
  | SubagentStartHookInput
  | SubagentStopHookInput
  | PreCompactHookInput
  | PermissionRequestHookInput
  | SetupHookInput
  | TeammateIdleHookInput
  | TaskCompletedHookInput
  | ConfigChangeHookInput
  | WorktreeCreateHookInput
  | WorktreeRemoveHookInput;

BaseHookInput

Базовый интерфейс, который расширяют все типы входных данных hook.
type BaseHookInput = {
  session_id: string;
  transcript_path: string;
  cwd: string;
  permission_mode?: string;
  agent_id?: string;
  agent_type?: string;
};

PreToolUseHookInput

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

PostToolUseHookInput

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

PostToolUseFailureHookInput

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

NotificationHookInput

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

UserPromptSubmitHookInput

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

SessionStartHookInput

type SessionStartHookInput = BaseHookInput & {
  hook_event_name: "SessionStart";
  source: "startup" | "resume" | "clear" | "compact";
  agent_type?: string;
  model?: string;
};

SessionEndHookInput

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

StopHookInput

type StopHookInput = BaseHookInput & {
  hook_event_name: "Stop";
  stop_hook_active: boolean;
  last_assistant_message?: string;
};

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;
  agent_id: string;
  agent_transcript_path: string;
  agent_type: string;
  last_assistant_message?: string;
};

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

SetupHookInput

type SetupHookInput = BaseHookInput & {
  hook_event_name: "Setup";
  trigger: "init" | "maintenance";
};

TeammateIdleHookInput

type TeammateIdleHookInput = BaseHookInput & {
  hook_event_name: "TeammateIdle";
  teammate_name: string;
  team_name: string;
};

TaskCompletedHookInput

type TaskCompletedHookInput = BaseHookInput & {
  hook_event_name: "TaskCompleted";
  task_id: string;
  task_subject: string;
  task_description?: string;
  teammate_name?: string;
  team_name?: string;
};

ConfigChangeHookInput

type ConfigChangeHookInput = BaseHookInput & {
  hook_event_name: "ConfigChange";
  source:
    | "user_settings"
    | "project_settings"
    | "local_settings"
    | "policy_settings"
    | "skills";
  file_path?: string;
};

WorktreeCreateHookInput

type WorktreeCreateHookInput = BaseHookInput & {
  hook_event_name: "WorktreeCreate";
  name: string;
};

WorktreeRemoveHookInput

type WorktreeRemoveHookInput = BaseHookInput & {
  hook_event_name: "WorktreeRemove";
  worktree_path: string;
};

HookJSONOutput

Возвращаемое значение hook.
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>;
        additionalContext?: string;
      }
    | {
        hookEventName: "UserPromptSubmit";
        additionalContext?: string;
      }
    | {
        hookEventName: "SessionStart";
        additionalContext?: string;
      }
    | {
        hookEventName: "Setup";
        additionalContext?: string;
      }
    | {
        hookEventName: "SubagentStart";
        additionalContext?: string;
      }
    | {
        hookEventName: "PostToolUse";
        additionalContext?: string;
        updatedMCPToolOutput?: unknown;
      }
    | {
        hookEventName: "PostToolUseFailure";
        additionalContext?: string;
      }
    | {
        hookEventName: "Notification";
        additionalContext?: string;
      }
    | {
        hookEventName: "PermissionRequest";
        decision:
          | {
              behavior: "allow";
              updatedInput?: Record<string, unknown>;
              updatedPermissions?: PermissionUpdate[];
            }
          | {
              behavior: "deny";
              message?: string;
              interrupt?: boolean;
            };
      };
};

Типы входных данных tool

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

ToolInputSchemas

Объединение всех типов входных данных tool, экспортируемое из @anthropic-ai/claude-agent-sdk.
type ToolInputSchemas =
  | AgentInput
  | AskUserQuestionInput
  | BashInput
  | TaskOutputInput
  | ConfigInput
  | EnterWorktreeInput
  | ExitPlanModeInput
  | FileEditInput
  | FileReadInput
  | FileWriteInput
  | GlobInput
  | GrepInput
  | ListMcpResourcesInput
  | McpInput
  | MonitorInput
  | NotebookEditInput
  | ReadMcpResourceInput
  | SubscribeMcpResourceInput
  | SubscribePollingInput
  | TaskStopInput
  | TodoWriteInput
  | UnsubscribeMcpResourceInput
  | UnsubscribePollingInput
  | WebFetchInput
  | WebSearchInput;

Agent

Имя tool: Agent (ранее Task, который всё ещё принимается как псевдоним)
type AgentInput = {
  description: string;
  prompt: string;
  subagent_type: string;
  model?: "sonnet" | "opus" | "haiku";
  resume?: string;
  run_in_background?: boolean;
  max_turns?: number;
  name?: string;
  team_name?: string;
  mode?: "acceptEdits" | "bypassPermissions" | "default" | "dontAsk" | "plan";
  isolation?: "worktree";
};
Запускает нового агента для автономной обработки сложных многошаговых задач.

AskUserQuestion

Имя tool: AskUserQuestion
type AskUserQuestionInput = {
  questions: Array<{
    question: string;
    header: string;
    options: Array<{ label: string; description: string; preview?: string }>;
    multiSelect: boolean;
  }>;
};
Задаёт пользователю уточняющие вопросы во время выполнения. См. Обработка одобрений и пользовательского ввода для деталей использования.

Bash

Имя tool: Bash
type BashInput = {
  command: string;
  timeout?: number;
  description?: string;
  run_in_background?: boolean;
  dangerouslyDisableSandbox?: boolean;
};
Выполняет bash команды в постоянной сессии shell с опциональным timeout и фоновым выполнением.

Monitor

Имя tool: Monitor
type MonitorInput = {
  command: string;
  description: string;
  timeout_ms?: number;
  persistent?: boolean;
};
Запускает фоновый скрипт и доставляет каждую строку stdout к Claude как событие, чтобы он мог реагировать без опроса. Установите persistent: true для наблюдений на уровне сессии, таких как хвосты логов. Monitor следует тем же правилам разрешения, что и Bash. См. справочник tool Monitor для поведения и доступности провайдера.

TaskOutput

Имя tool: TaskOutput
type TaskOutputInput = {
  task_id: string;
  block: boolean;
  timeout: number;
};
Получает вывод из выполняющейся или завершённой фоновой задачи.

Edit

Имя tool: Edit
type FileEditInput = {
  file_path: string;
  old_string: string;
  new_string: string;
  replace_all?: boolean;
};
Выполняет точные замены строк в файлах.

Read

Имя tool: Read
type FileReadInput = {
  file_path: string;
  offset?: number;
  limit?: number;
  pages?: string;
};
Читает файлы из локальной файловой системы, включая текст, изображения, PDF и Jupyter notebooks. Используйте pages для диапазонов страниц PDF (например, "1-5").

Write

Имя tool: Write
type FileWriteInput = {
  file_path: string;
  content: string;
};
Записывает файл в локальную файловую систему, перезаписывая, если он существует.

Glob

Имя tool: Glob
type GlobInput = {
  pattern: string;
  path?: string;
};
Быстрое сопоставление паттернов файлов, которое работает с любым размером кодовой базы.

Grep

Имя tool: Grep
type GrepInput = {
  pattern: string;
  path?: string;
  glob?: string;
  type?: string;
  output_mode?: "content" | "files_with_matches" | "count";
  "-i"?: boolean;
  "-n"?: boolean;
  "-B"?: number;
  "-A"?: number;
  "-C"?: number;
  context?: number;
  head_limit?: number;
  offset?: number;
  multiline?: boolean;
};
Мощный tool поиска, построенный на ripgrep с поддержкой regex.

TaskStop

Имя tool: TaskStop
type TaskStopInput = {
  task_id?: string;
  shell_id?: string; // Устарело: используйте task_id
};
Останавливает выполняющуюся фоновую задачу или shell по ID.

NotebookEdit

Имя tool: NotebookEdit
type NotebookEditInput = {
  notebook_path: string;
  cell_id?: string;
  new_source: string;
  cell_type?: "code" | "markdown";
  edit_mode?: "replace" | "insert" | "delete";
};
Редактирует ячейки в файлах Jupyter notebook.

WebFetch

Имя tool: WebFetch
type WebFetchInput = {
  url: string;
  prompt: string;
};
Получает содержимое с URL и обрабатывает его с помощью модели AI.

WebSearch

Имя tool: WebSearch
type WebSearchInput = {
  query: string;
  allowed_domains?: string[];
  blocked_domains?: string[];
};
Ищет в веб и возвращает отформатированные результаты.

TodoWrite

Имя tool: TodoWrite
type TodoWriteInput = {
  todos: Array<{
    content: string;
    status: "pending" | "in_progress" | "completed";
    activeForm: string;
  }>;
};
Создаёт и управляет структурированным списком задач для отслеживания прогресса.

ExitPlanMode

Имя tool: ExitPlanMode
type ExitPlanModeInput = {
  allowedPrompts?: Array<{
    tool: "Bash";
    prompt: string;
  }>;
};
Выходит из режима планирования. Опционально указывает разрешения на основе запроса, необходимые для реализации плана.

ListMcpResources

Имя tool: ListMcpResources
type ListMcpResourcesInput = {
  server?: string;
};
Перечисляет доступные MCP ресурсы из подключённых серверов.

ReadMcpResource

Имя tool: ReadMcpResource
type ReadMcpResourceInput = {
  server: string;
  uri: string;
};
Читает определённый MCP ресурс с сервера.

Config

Имя tool: Config
type ConfigInput = {
  setting: string;
  value?: string | boolean | number;
};
Получает или устанавливает значение конфигурации.

EnterWorktree

Имя tool: EnterWorktree
type EnterWorktreeInput = {
  name?: string;
  path?: string;
};
Создаёт и входит во временный git worktree для изолированной работы. Передайте path для переключения в существующий worktree текущего репозитория вместо создания нового. name и path являются взаимоисключающими.

Типы выходных данных tool

Документация схем выходных данных для всех встроенных tools Claude Code. Эти типы экспортируются из @anthropic-ai/claude-agent-sdk и представляют фактические данные ответа, возвращаемые каждым tool.

ToolOutputSchemas

Объединение всех типов выходных данных tool.
type ToolOutputSchemas =
  | AgentOutput
  | AskUserQuestionOutput
  | BashOutput
  | ConfigOutput
  | EnterWorktreeOutput
  | ExitPlanModeOutput
  | FileEditOutput
  | FileReadOutput
  | FileWriteOutput
  | GlobOutput
  | GrepOutput
  | ListMcpResourcesOutput
  | MonitorOutput
  | NotebookEditOutput
  | ReadMcpResourceOutput
  | TaskStopOutput
  | TodoWriteOutput
  | WebFetchOutput
  | WebSearchOutput;

Agent

Имя tool: Agent (ранее Task, который всё ещё принимается как псевдоним)
type AgentOutput =
  | {
      status: "completed";
      agentId: string;
      content: Array<{ type: "text"; text: string }>;
      totalToolUseCount: number;
      totalDurationMs: number;
      totalTokens: number;
      usage: {
        input_tokens: number;
        output_tokens: number;
        cache_creation_input_tokens: number | null;
        cache_read_input_tokens: number | null;
        server_tool_use: {
          web_search_requests: number;
          web_fetch_requests: number;
        } | null;
        service_tier: ("standard" | "priority" | "batch") | null;
        cache_creation: {
          ephemeral_1h_input_tokens: number;
          ephemeral_5m_input_tokens: number;
        } | null;
      };
      prompt: string;
    }
  | {
      status: "async_launched";
      agentId: string;
      description: string;
      prompt: string;
      outputFile: string;
      canReadOutputFile?: boolean;
    }
  | {
      status: "sub_agent_entered";
      description: string;
      message: string;
    };
Возвращает результат от подагента. Дискриминирован по полю status: "completed" для завершённых задач, "async_launched" для фоновых задач и "sub_agent_entered" для интерактивных подагентов.

AskUserQuestion

Имя tool: AskUserQuestion
type AskUserQuestionOutput = {
  questions: Array<{
    question: string;
    header: string;
    options: Array<{ label: string; description: string; preview?: string }>;
    multiSelect: boolean;
  }>;
  answers: Record<string, string>;
};
Возвращает заданные вопросы и ответы пользователя.

Bash

Имя tool: Bash
type BashOutput = {
  stdout: string;
  stderr: string;
  rawOutputPath?: string;
  interrupted: boolean;
  isImage?: boolean;
  backgroundTaskId?: string;
  backgroundedByUser?: boolean;
  dangerouslyDisableSandbox?: boolean;
  returnCodeInterpretation?: string;
  structuredContent?: unknown[];
  persistedOutputPath?: string;
  persistedOutputSize?: number;
};
Возвращает вывод команды с разделённым stdout/stderr. Фоновые команды включают backgroundTaskId.

Monitor

Имя tool: Monitor
type MonitorOutput = {
  taskId: string;
  timeoutMs: number;
  persistent?: boolean;
};
Возвращает ID фоновой задачи для выполняющегося монитора. Используйте этот ID с TaskStop для раннего отмены наблюдения.

Edit

Имя tool: Edit
type FileEditOutput = {
  filePath: string;
  oldString: string;
  newString: string;
  originalFile: string;
  structuredPatch: Array<{
    oldStart: number;
    oldLines: number;
    newStart: number;
    newLines: number;
    lines: string[];
  }>;
  userModified: boolean;
  replaceAll: boolean;
  gitDiff?: {
    filename: string;
    status: "modified" | "added";
    additions: number;
    deletions: number;
    changes: number;
    patch: string;
  };
};
Возвращает структурированный diff операции редактирования.

Read

Имя tool: Read
type FileReadOutput =
  | {
      type: "text";
      file: {
        filePath: string;
        content: string;
        numLines: number;
        startLine: number;
        totalLines: number;
      };
    }
  | {
      type: "image";
      file: {
        base64: string;
        type: "image/jpeg" | "image/png" | "image/gif" | "image/webp";
        originalSize: number;
        dimensions?: {
          originalWidth?: number;
          originalHeight?: number;
          displayWidth?: number;
          displayHeight?: number;
        };
      };
    }
  | {
      type: "notebook";
      file: {
        filePath: string;
        cells: unknown[];
      };
    }
  | {
      type: "pdf";
      file: {
        filePath: string;
        base64: string;
        originalSize: number;
      };
    }
  | {
      type: "parts";
      file: {
        filePath: string;
        originalSize: number;
        count: number;
        outputDir: string;
      };
    };
Возвращает содержимое файла в формате, подходящем для типа файла. Дискриминирован по полю type.

Write

Имя tool: Write
type FileWriteOutput = {
  type: "create" | "update";
  filePath: string;
  content: string;
  structuredPatch: Array<{
    oldStart: number;
    oldLines: number;
    newStart: number;
    newLines: number;
    lines: string[];
  }>;
  originalFile: string | null;
  gitDiff?: {
    filename: string;
    status: "modified" | "added";
    additions: number;
    deletions: number;
    changes: number;
    patch: string;
  };
};
Возвращает результат записи с информацией структурированного diff.

Glob

Имя tool: Glob
type GlobOutput = {
  durationMs: number;
  numFiles: number;
  filenames: string[];
  truncated: boolean;
};
Возвращает пути файлов, соответствующие паттерну glob, отсортированные по времени изменения.

Grep

Имя tool: Grep
type GrepOutput = {
  mode?: "content" | "files_with_matches" | "count";
  numFiles: number;
  filenames: string[];
  content?: string;
  numLines?: number;
  numMatches?: number;
  appliedLimit?: number;
  appliedOffset?: number;
};
Возвращает результаты поиска. Форма варьируется по mode: список файлов, содержимое с совпадениями или количество совпадений.

TaskStop

Имя tool: TaskStop
type TaskStopOutput = {
  message: string;
  task_id: string;
  task_type: string;
  command?: string;
};
Возвращает подтверждение после остановки фоновой задачи.

NotebookEdit

Имя tool: NotebookEdit
type NotebookEditOutput = {
  new_source: string;
  cell_id?: string;
  cell_type: "code" | "markdown";
  language: string;
  edit_mode: string;
  error?: string;
  notebook_path: string;
  original_file: string;
  updated_file: string;
};
Возвращает результат редактирования notebook с исходным и обновлённым содержимым файла.

WebFetch

Имя tool: WebFetch
type WebFetchOutput = {
  bytes: number;
  code: number;
  codeText: string;
  result: string;
  durationMs: number;
  url: string;
};
Возвращает полученное содержимое с HTTP статусом и метаданными.

WebSearch

Имя tool: WebSearch
type WebSearchOutput = {
  query: string;
  results: Array<
    | {
        tool_use_id: string;
        content: Array<{ title: string; url: string }>;
      }
    | string
  >;
  durationSeconds: number;
};
Возвращает результаты поиска из веб.

TodoWrite

Имя tool: TodoWrite
type TodoWriteOutput = {
  oldTodos: Array<{
    content: string;
    status: "pending" | "in_progress" | "completed";
    activeForm: string;
  }>;
  newTodos: Array<{
    content: string;
    status: "pending" | "in_progress" | "completed";
    activeForm: string;
  }>;
};
Возвращает предыдущие и обновлённые списки задач.

ExitPlanMode

Имя tool: ExitPlanMode
type ExitPlanModeOutput = {
  plan: string | null;
  isAgent: boolean;
  filePath?: string;
  hasTaskTool?: boolean;
  awaitingLeaderApproval?: boolean;
  requestId?: string;
};
Возвращает состояние плана после выхода из режима планирования.

ListMcpResources

Имя tool: ListMcpResources
type ListMcpResourcesOutput = Array<{
  uri: string;
  name: string;
  mimeType?: string;
  description?: string;
  server: string;
}>;
Возвращает массив доступных MCP ресурсов.

ReadMcpResource

Имя tool: ReadMcpResource
type ReadMcpResourceOutput = {
  contents: Array<{
    uri: string;
    mimeType?: string;
    text?: string;
  }>;
};
Возвращает содержимое запрошенного MCP ресурса.

Config

Имя tool: Config
type ConfigOutput = {
  success: boolean;
  operation?: "get" | "set";
  setting?: string;
  value?: unknown;
  previousValue?: unknown;
  newValue?: unknown;
  error?: string;
};
Возвращает результат операции получения или установки конфигурации.

EnterWorktree

Имя tool: EnterWorktree
type EnterWorktreeOutput = {
  worktreePath: string;
  worktreeBranch?: string;
  message: string;
};
Возвращает информацию о git worktree.

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

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" // Gitignored локальные настройки
  | "session" // Только текущая сессия
  | "cliArg"; // Аргумент CLI

PermissionRuleValue

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

Другие типы

ApiKeySource

type ApiKeySource = "user" | "project" | "org" | "temporary" | "oauth";

SdkBeta

Доступные бета-функции, которые можно включить через опцию betas. См. Заголовки Beta для дополнительной информации.
type SdkBeta = "context-1m-2025-08-07";
Бета context-1m-2025-08-07 снята с производства по состоянию на 30 апреля 2026 года. Передача этого значения с Claude Sonnet 4.5 или Sonnet 4 не имеет эффекта, и запросы, превышающие стандартное окно контекста 200k-токенов, возвращают ошибку. Для использования окна контекста 1M-токенов перейдите на Claude Sonnet 4.6, Claude Opus 4.6 или Claude Opus 4.7, которые включают контекст 1M по стандартной цене без требуемого заголовка beta.

SlashCommand

Информация о доступной slash команде.
type SlashCommand = {
  name: string;
  description: string;
  argumentHint: string;
};

ModelInfo

Информация о доступной модели.
type ModelInfo = {
  value: string;
  displayName: string;
  description: string;
  supportsEffort?: boolean;
  supportedEffortLevels?: ("low" | "medium" | "high" | "xhigh" | "max")[];
  supportsAdaptiveThinking?: boolean;
  supportsFastMode?: boolean;
};

AgentInfo

Информация о доступном подагенте, который может быть вызван через tool Agent.
type AgentInfo = {
  name: string;
  description: string;
  model?: string;
};
ПолеТипОписание
namestringИдентификатор типа агента (например, "Explore", "general-purpose")
descriptionstringОписание, когда использовать этого агента
modelstring | undefinedПсевдоним модели, который использует этот агент. Если опущено, наследует модель родителя

McpServerStatus

Статус подключённого MCP сервера.
type McpServerStatus = {
  name: string;
  status: "connected" | "failed" | "needs-auth" | "pending" | "disabled";
  serverInfo?: {
    name: string;
    version: string;
  };
  error?: string;
  config?: McpServerStatusConfig;
  scope?: string;
  tools?: {
    name: string;
    description?: string;
    annotations?: {
      readOnly?: boolean;
      destructive?: boolean;
      openWorld?: boolean;
    };
  }[];
};

McpServerStatusConfig

Конфигурация MCP сервера, как сообщается mcpServerStatus(). Это объединение всех типов транспорта MCP сервера.
type McpServerStatusConfig =
  | McpStdioServerConfig
  | McpSSEServerConfig
  | McpHttpServerConfig
  | McpSdkServerConfig
  | McpClaudeAIProxyServerConfig;
См. McpServerConfig для деталей по каждому типу транспорта.

AccountInfo

Информация об учётной записи для аутентифицированного пользователя.
type AccountInfo = {
  email?: string;
  organization?: string;
  subscriptionType?: string;
  tokenSource?: string;
  apiKeySource?: string;
};

ModelUsage

Статистика использования для каждой модели, возвращаемая в сообщениях результата. Значение costUSD это оценка на стороне клиента. См. Отслеживание стоимости и использования для предостережений выставления счётов.
type ModelUsage = {
  inputTokens: number;
  outputTokens: number;
  cacheReadInputTokens: number;
  cacheCreationInputTokens: number;
  webSearchRequests: number;
  costUSD: number;
  contextWindow: number;
  maxOutputTokens: number;
};

ConfigScope

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

NonNullableUsage

Версия Usage со всеми nullable полями, сделанными non-nullable.
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 tool (из @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
  content: Array<{
    type: "text" | "image" | "resource";
    // Дополнительные поля варьируются по типу
  }>;
  isError?: boolean;
};

ThinkingConfig

Контролирует поведение мышления/рассуждения Claude. Имеет приоритет над устаревшим maxThinkingTokens.
type ThinkingConfig =
  | { type: "adaptive" } // Модель определяет, когда и сколько рассуждать (Opus 4.6+)
  | { type: "enabled"; budgetTokens?: number } // Фиксированный бюджет токенов мышления
  | { type: "disabled" }; // Без расширенного мышления

SpawnedProcess

Интерфейс для пользовательского запуска процесса (используется с опцией spawnClaudeCodeProcess). ChildProcess уже удовлетворяет этому интерфейсу.
interface SpawnedProcess {
  stdin: Writable;
  stdout: Readable;
  readonly killed: boolean;
  readonly exitCode: number | null;
  kill(signal: NodeJS.Signals): boolean;
  on(
    event: "exit",
    listener: (code: number | null, signal: NodeJS.Signals | null) => void
  ): void;
  on(event: "error", listener: (error: Error) => void): void;
  once(
    event: "exit",
    listener: (code: number | null, signal: NodeJS.Signals | null) => void
  ): void;
  once(event: "error", listener: (error: Error) => void): void;
  off(
    event: "exit",
    listener: (code: number | null, signal: NodeJS.Signals | null) => void
  ): void;
  off(event: "error", listener: (error: Error) => void): void;
}

SpawnOptions

Опции, передаваемые пользовательской функции spawn.
interface SpawnOptions {
  command: string;
  args: string[];
  cwd?: string;
  env: Record<string, string | undefined>;
  signal: AbortSignal;
}

McpSetServersResult

Результат операции setMcpServers().
type McpSetServersResult = {
  added: string[];
  removed: string[];
  errors: Record<string, string>;
};

RewindFilesResult

Результат операции rewindFiles().
type RewindFilesResult = {
  canRewind: boolean;
  error?: string;
  filesChanged?: string[];
  insertions?: number;
  deletions?: number;
};

SDKStatusMessage

Сообщение обновления статуса (например, компактирование).
type SDKStatusMessage = {
  type: "system";
  subtype: "status";
  status: "compacting" | null;
  permissionMode?: PermissionMode;
  uuid: UUID;
  session_id: string;
};

SDKTaskNotificationMessage

Уведомление, когда фоновая задача завершается, не работает или остановлена. Фоновые задачи включают команды Bash run_in_background, наблюдения Monitor и фоновые подагентов.
type SDKTaskNotificationMessage = {
  type: "system";
  subtype: "task_notification";
  task_id: string;
  tool_use_id?: string;
  status: "completed" | "failed" | "stopped";
  output_file: string;
  summary: string;
  usage?: {
    total_tokens: number;
    tool_uses: number;
    duration_ms: number;
  };
  uuid: UUID;
  session_id: string;
};

SDKToolUseSummaryMessage

Резюме использования tool в диалоге.
type SDKToolUseSummaryMessage = {
  type: "tool_use_summary";
  summary: string;
  preceding_tool_use_ids: string[];
  uuid: UUID;
  session_id: string;
};

SDKHookStartedMessage

Выдаётся, когда hook начинает выполняться.
type SDKHookStartedMessage = {
  type: "system";
  subtype: "hook_started";
  hook_id: string;
  hook_name: string;
  hook_event: string;
  uuid: UUID;
  session_id: string;
};

SDKHookProgressMessage

Выдаётся во время выполнения hook с выводом stdout/stderr.
type SDKHookProgressMessage = {
  type: "system";
  subtype: "hook_progress";
  hook_id: string;
  hook_name: string;
  hook_event: string;
  stdout: string;
  stderr: string;
  output: string;
  uuid: UUID;
  session_id: string;
};

SDKHookResponseMessage

Выдаётся, когда hook завершает выполнение.
type SDKHookResponseMessage = {
  type: "system";
  subtype: "hook_response";
  hook_id: string;
  hook_name: string;
  hook_event: string;
  output: string;
  stdout: string;
  stderr: string;
  exit_code?: number;
  outcome: "success" | "error" | "cancelled";
  uuid: UUID;
  session_id: string;
};

SDKToolProgressMessage

Выдаётся периодически во время выполнения tool для указания прогресса.
type SDKToolProgressMessage = {
  type: "tool_progress";
  tool_use_id: string;
  tool_name: string;
  parent_tool_use_id: string | null;
  elapsed_time_seconds: number;
  task_id?: string;
  uuid: UUID;
  session_id: string;
};

SDKAuthStatusMessage

Выдаётся во время потоков аутентификации.
type SDKAuthStatusMessage = {
  type: "auth_status";
  isAuthenticating: boolean;
  output: string[];
  error?: string;
  uuid: UUID;
  session_id: string;
};

SDKTaskStartedMessage

Выдаётся, когда фоновая задача начинается. Поле task_type это "local_bash" для фоновых команд Bash и наблюдений Monitor, "local_agent" для подагентов или "remote_agent".
type SDKTaskStartedMessage = {
  type: "system";
  subtype: "task_started";
  task_id: string;
  tool_use_id?: string;
  description: string;
  task_type?: string;
  uuid: UUID;
  session_id: string;
};

SDKTaskProgressMessage

Выдаётся периодически во время выполнения фоновой задачи.
type SDKTaskProgressMessage = {
  type: "system";
  subtype: "task_progress";
  task_id: string;
  tool_use_id?: string;
  description: string;
  usage: {
    total_tokens: number;
    tool_uses: number;
    duration_ms: number;
  };
  last_tool_name?: string;
  uuid: UUID;
  session_id: string;
};

SDKFilesPersistedEvent

Выдаётся, когда контрольные точки файлов сохраняются на диск.
type SDKFilesPersistedEvent = {
  type: "system";
  subtype: "files_persisted";
  files: { filename: string; file_id: string }[];
  failed: { filename: string; error: string }[];
  processed_at: string;
  uuid: UUID;
  session_id: string;
};

SDKRateLimitEvent

Выдаётся, когда сессия встречает ограничение скорости.
type SDKRateLimitEvent = {
  type: "rate_limit_event";
  rate_limit_info: {
    status: "allowed" | "allowed_warning" | "rejected";
    resetsAt?: number;
    utilization?: number;
  };
  uuid: UUID;
  session_id: string;
};

SDKLocalCommandOutputMessage

Вывод из локальной slash команды (например, /voice или /cost). Отображается как текст в стиле ассистента в транскрипте.
type SDKLocalCommandOutputMessage = {
  type: "system";
  subtype: "local_command_output";
  content: string;
  uuid: UUID;
  session_id: string;
};

SDKPromptSuggestionMessage

Выдаётся после каждого хода, когда promptSuggestions включён. Содержит предсказанный следующий пользовательский запрос.
type SDKPromptSuggestionMessage = {
  type: "prompt_suggestion";
  suggestion: string;
  uuid: UUID;
  session_id: string;
};

AbortError

Пользовательский класс ошибки для операций отмены.
class AbortError extends Error {}

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

SandboxSettings

Конфигурация для поведения sandbox. Используйте это для включения sandboxing команд и программной конфигурации ограничений сети.
type SandboxSettings = {
  enabled?: boolean;
  autoAllowBashIfSandboxed?: boolean;
  excludedCommands?: string[];
  allowUnsandboxedCommands?: boolean;
  network?: SandboxNetworkConfig;
  filesystem?: SandboxFilesystemConfig;
  ignoreViolations?: Record<string, string[]>;
  enableWeakerNestedSandbox?: boolean;
  ripgrep?: { command: string; args?: string[] };
};
СвойствоТипПо умолчаниюОписание
enabledbooleanfalseВключите режим sandbox для выполнения команд
autoAllowBashIfSandboxedbooleantrueАвтоматически одобряйте bash команды, когда sandbox включён
excludedCommandsstring[][]Команды, которые всегда обходят ограничения sandbox (например, ['docker']). Они работают без sandbox автоматически без участия модели
allowUnsandboxedCommandsbooleantrueРазрешите модели запрашивать выполнение команд вне sandbox. Когда true, модель может установить dangerouslyDisableSandbox в входных данных tool, что переходит к системе разрешений
networkSandboxNetworkConfigundefinedКонфигурация sandbox, специфичная для сети
filesystemSandboxFilesystemConfigundefinedКонфигурация sandbox, специфичная для файловой системы, для ограничений чтения/записи
ignoreViolationsRecord<string, string[]>undefinedКарта категорий нарушений на паттерны для игнорирования (например, { file: ['/tmp/*'], network: ['localhost'] })
enableWeakerNestedSandboxbooleanfalseВключите более слабый вложенный sandbox для совместимости
ripgrep{ command: string; args?: string[] }undefinedКонфигурация пользовательского бинарного файла ripgrep для окружений sandbox

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

import { query } from "@anthropic-ai/claude-agent-sdk";

for await (const message of query({
  prompt: "Build and test my project",
  options: {
    sandbox: {
      enabled: true,
      autoAllowBashIfSandboxed: true,
      network: {
        allowLocalBinding: true
      }
    }
  }
})) {
  if ("result" in message) console.log(message.result);
}
Безопасность Unix socket: Опция allowUnixSockets может предоставить доступ к мощным системным сервисам. Например, разрешение /var/run/docker.sock фактически предоставляет полный доступ к хост-системе через Docker API, обходя изоляцию sandbox. Разрешайте только Unix sockets, которые строго необходимы, и поймите последствия безопасности каждого.

SandboxNetworkConfig

Конфигурация, специфичная для сети, для режима sandbox.
type SandboxNetworkConfig = {
  allowedDomains?: string[];
  deniedDomains?: string[];
  allowManagedDomainsOnly?: boolean;
  allowLocalBinding?: boolean;
  allowUnixSockets?: string[];
  allowAllUnixSockets?: boolean;
  httpProxyPort?: number;
  socksProxyPort?: number;
};
СвойствоТипПо умолчаниюОписание
allowedDomainsstring[][]Имена доменов, к которым процессы в sandbox могут получить доступ
deniedDomainsstring[][]Имена доменов, к которым процессы в sandbox не могут получить доступ. Имеет приоритет над allowedDomains
allowManagedDomainsOnlybooleanfalseОграничьте доступ в сеть только доменами в allowedDomains
allowLocalBindingbooleanfalseРазрешите процессам привязываться к локальным портам (например, для dev серверов)
allowUnixSocketsstring[][]Пути Unix socket, к которым процессы могут получить доступ (например, Docker socket)
allowAllUnixSocketsbooleanfalseРазрешите доступ ко всем Unix sockets
httpProxyPortnumberundefinedПорт HTTP прокси для сетевых запросов
socksProxyPortnumberundefinedПорт SOCKS прокси для сетевых запросов

SandboxFilesystemConfig

Конфигурация, специфичная для файловой системы, для режима sandbox.
type SandboxFilesystemConfig = {
  allowWrite?: string[];
  denyWrite?: string[];
  denyRead?: string[];
};
СвойствоТипПо умолчаниюОписание
allowWritestring[][]Паттерны путей файлов для разрешения доступа на запись
denyWritestring[][]Паттерны путей файлов для запрещения доступа на запись
denyReadstring[][]Паттерны путей файлов для запрещения доступа на чтение

Fallback разрешений для команд вне Sandbox

Когда allowUnsandboxedCommands включён, модель может запросить выполнение команд вне sandbox, установив dangerouslyDisableSandbox: true во входных данных tool. Эти запросы переходят к существующей системе разрешений, что означает, что ваш обработчик canUseTool вызывается, позволяя вам реализовать пользовательскую логику авторизации.
excludedCommands vs allowUnsandboxedCommands:
  • excludedCommands: Статический список команд, которые всегда автоматически обходят sandbox (например, ['docker']). Модель не имеет контроля над этим.
  • allowUnsandboxedCommands: Позволяет модели решать во время выполнения, запрашивать ли выполнение вне sandbox, установив dangerouslyDisableSandbox: true во входных данных tool.
import { query } from "@anthropic-ai/claude-agent-sdk";

for await (const message of query({
  prompt: "Deploy my application",
  options: {
    sandbox: {
      enabled: true,
      allowUnsandboxedCommands: true // Модель может запросить выполнение вне sandbox
    },
    permissionMode: "default",
    canUseTool: async (tool, input) => {
      // Проверьте, запрашивает ли модель обход sandbox
      if (tool === "Bash" && input.dangerouslyDisableSandbox) {
        // Модель запрашивает выполнение этой команды вне sandbox
        console.log(`Unsandboxed command requested: ${input.command}`);

        if (isCommandAuthorized(input.command)) {
          return { behavior: "allow" as const, updatedInput: input };
        }
        return {
          behavior: "deny" as const,
          message: "Command not authorized for unsandboxed execution"
        };
      }
      return { behavior: "allow" as const, updatedInput: input };
    }
  }
})) {
  if ("result" in message) console.log(message.result);
}
Этот паттерн позволяет вам:
  • Аудит запросов модели: Логируйте, когда модель запрашивает выполнение вне sandbox
  • Реализуйте allowlists: Разрешайте только определённые команды работать вне sandbox
  • Добавьте рабочие процессы одобрения: Требуйте явной авторизации для привилегированных операций
Команды, работающие с dangerouslyDisableSandbox: true, имеют полный доступ к системе. Убедитесь, что ваш обработчик canUseTool тщательно проверяет эти запросы.Если permissionMode установлен на bypassPermissions и allowUnsandboxedCommands включён, модель может автономно выполнять команды вне sandbox без каких-либо запросов одобрения. Эта комбинация фактически позволяет модели молча выходить из изоляции sandbox.

См. также