Instalação
O SDK agrupa um binário nativo do Claude Code para sua plataforma como uma dependência opcional, como
@anthropic-ai/claude-agent-sdk-darwin-arm64. Você não precisa instalar o Claude Code separadamente. Se seu gerenciador de pacotes pular dependências opcionais, o SDK lança Native CLI binary for <platform> not found; defina pathToClaudeCodeExecutable para um binário claude instalado separadamente.Compilar para um executável único
Quando você compila sua aplicação em um executável de arquivo único combun build --compile, o SDK não consegue resolver o binário CLI agrupado em tempo de execução. require.resolve não funciona dentro do sistema de arquivos virtual $bunfs do executável compilado, então o SDK lança Native CLI binary for <platform> not found.
Para contornar isso, incorpore o binário da plataforma como um ativo de arquivo, extraia-o para um caminho real na inicialização com extractFromBunfs() e passe esse caminho para pathToClaudeCodeExecutable.
O auxiliar extractFromBunfs() requer @anthropic-ai/claude-agent-sdk v0.3.144 ou posterior. O exemplo abaixo compila para macOS no Apple Silicon:
extractFromBunfs() copia o binário incorporado do sistema de arquivos virtual do executável compilado para um diretório temporário por usuário e retorna o caminho real. Fora de um executável compilado, ele retorna o caminho de entrada inalterado, então o mesmo código é executado em desenvolvimento sem modificação.
Cada executável compilado incorpora o binário de uma única plataforma. Corresponda o pacote da plataforma na importação ao seu --target:
- Para compilação cruzada, instale o pacote de plataforma não correspondente, por exemplo
npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force. - No Windows, o subcaminho do binário é
claude.exe, por exemplo@anthropic-ai/claude-agent-sdk-win32-x64/claude.exe.
Funções
query()
A função principal para interagir com o Claude Code. Cria um gerador assíncrono que transmite mensagens conforme chegam.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | O prompt de entrada como uma string ou iterável assíncrono para modo de transmissão |
options | Options | Objeto de configuração opcional (veja o tipo Options abaixo) |
Retorna
Retorna um objetoQuery que estende AsyncGenerator<SDKMessage, void> com métodos adicionais.
startup()
Pré-aquece o subprocesso CLI gerando-o e completando o handshake de inicialização antes de um prompt estar disponível. O handle WarmQuery retornado aceita um prompt depois e o escreve em um processo já pronto, então a primeira chamada query() é resolvida sem pagar o custo de geração e inicialização do subprocesso inline.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
options | Options | Objeto de configuração opcional. Igual ao parâmetro options para query() |
initializeTimeoutMs | number | Tempo máximo em milissegundos para aguardar a inicialização do subprocesso. Padrão é 60000. Se a inicialização não for concluída no tempo, a promise é rejeitada com um erro de timeout |
Retorna
Retorna umaPromise<WarmQuery> que é resolvida assim que o subprocesso é gerado e completa seu handshake de inicialização.
Exemplo
Chamestartup() cedo, por exemplo no boot da aplicação, depois chame .query() no handle retornado assim que um prompt estiver pronto. Isso move a geração do subprocesso e inicialização para fora do caminho crítico.
tool()
Cria uma definição de ferramenta MCP type-safe para uso com servidores MCP do SDK.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
name | string | O nome da ferramenta |
description | string | Uma descrição do que a ferramenta faz |
inputSchema | Schema extends AnyZodRawShape | Schema Zod definindo os parâmetros de entrada da ferramenta (suporta Zod 3 e Zod 4) |
handler | (args, extra) => Promise<CallToolResult> | Função assíncrona que executa a lógica da ferramenta |
extras | { annotations?: ToolAnnotations } | Anotações MCP opcionais da ferramenta fornecendo dicas comportamentais aos clientes |
ToolAnnotations
Re-exportado de @modelcontextprotocol/sdk/types.js. Todos os campos são dicas opcionais; os clientes não devem confiar neles para decisões de segurança.
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
title | string | undefined | Título legível para a ferramenta |
readOnlyHint | boolean | false | Se true, a ferramenta não modifica seu ambiente |
destructiveHint | boolean | true | Se true, a ferramenta pode realizar atualizações destrutivas (apenas significativo quando readOnlyHint é false) |
idempotentHint | boolean | false | Se true, chamadas repetidas com os mesmos argumentos não têm efeito adicional (apenas significativo quando readOnlyHint é false) |
openWorldHint | boolean | true | Se true, a ferramenta interage com entidades externas (por exemplo, busca na web). Se false, o domínio da ferramenta é fechado (por exemplo, uma ferramenta de memória) |
createSdkMcpServer()
Cria uma instância de servidor MCP que é executada no mesmo processo que sua aplicação.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
options.name | string | O nome do servidor MCP |
options.version | string | String de versão opcional |
options.tools | Array<SdkMcpToolDefinition> | Array de definições de ferramentas criadas com tool() |
listSessions()
Descobre e lista sessões passadas com metadados leves. Filtre por diretório de projeto ou liste sessões em todos os projetos.
Parâmetros
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
options.dir | string | undefined | Diretório para listar sessões. Quando omitido, retorna sessões em todos os projetos |
options.limit | number | undefined | Número máximo de sessões a retornar |
options.includeWorktrees | boolean | true | Quando dir está dentro de um repositório git, inclua sessões de todos os caminhos de worktree |
Tipo de retorno: SDKSessionInfo
| Propriedade | Tipo | Descrição |
|---|---|---|
sessionId | string | Identificador único de sessão (UUID) |
summary | string | Título de exibição: título personalizado, resumo gerado automaticamente ou primeiro prompt |
lastModified | number | Tempo da última modificação em milissegundos desde a época |
fileSize | number | undefined | Tamanho do arquivo de sessão em bytes. Apenas preenchido para armazenamento JSONL local |
customTitle | string | undefined | Título de sessão definido pelo usuário (via /rename) |
firstPrompt | string | undefined | Primeiro prompt de usuário significativo na sessão |
gitBranch | string | undefined | Branch git no final da sessão |
cwd | string | undefined | Diretório de trabalho para a sessão |
tag | string | undefined | Tag de sessão definida pelo usuário (veja tagSession()) |
createdAt | number | undefined | Tempo de criação em milissegundos desde a época, do timestamp da primeira entrada |
Exemplo
Imprima as 10 sessões mais recentes para um projeto. Os resultados são classificados porlastModified descendente, então o primeiro item é o mais novo. Omita dir para pesquisar em todos os projetos.
getSessionMessages()
Lê mensagens de usuário e assistente de uma transcrição de sessão passada.
Parâmetros
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
sessionId | string | obrigatório | UUID da sessão a ler (veja listSessions()) |
options.dir | string | undefined | Diretório do projeto para encontrar a sessão. Quando omitido, pesquisa todos os projetos |
options.limit | number | undefined | Número máximo de mensagens a retornar |
options.offset | number | undefined | Número de mensagens a pular do início |
Tipo de retorno: SessionMessage
| Propriedade | Tipo | Descrição |
|---|---|---|
type | "user" | "assistant" | Papel da mensagem |
uuid | string | Identificador único de mensagem |
session_id | string | Sessão a que esta mensagem pertence |
message | unknown | Payload de mensagem bruta da transcrição |
parent_tool_use_id | string | null | Para mensagens de subagente, o tool_use_id da chamada de ferramenta Agent geradora. null para mensagens de sessão principal e sessões mais antigas |
Exemplo
getSessionInfo()
Lê metadados para uma única sessão por ID sem verificar o diretório do projeto completo.
Parâmetros
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
sessionId | string | obrigatório | UUID da sessão a procurar |
options.dir | string | undefined | Caminho do diretório do projeto. Quando omitido, pesquisa todos os diretórios de projeto |
SDKSessionInfo, ou undefined se a sessão não for encontrada.
renameSession()
Renomeia uma sessão anexando uma entrada de título personalizado. Chamadas repetidas são seguras; o título mais recente vence.
Parâmetros
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
sessionId | string | obrigatório | UUID da sessão a renomear |
title | string | obrigatório | Novo título. Deve ser não-vazio após aparar espaços em branco |
options.dir | string | undefined | Caminho do diretório do projeto. Quando omitido, pesquisa todos os diretórios de projeto |
tagSession()
Marca uma sessão. Passe null para limpar a tag. Chamadas repetidas são seguras; a tag mais recente vence.
Parâmetros
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
sessionId | string | obrigatório | UUID da sessão a marcar |
tag | string | null | obrigatório | String de tag, ou null para limpar |
options.dir | string | undefined | Caminho do diretório do projeto. Quando omitido, pesquisa todos os diretórios de projeto |
resolveSettings()
Resolve as configurações efetivas do Claude Code para um determinado diretório usando o mesmo mecanismo de mesclagem que o CLI, sem gerar o Claude CLI. Use-o para inspecionar qual configuração uma chamada query() veria antes de invocar uma.
Esta função é alfa e sua API pode mudar antes da estabilização. Ela lê fontes MDM, incluindo plist do macOS e HKLM/HKCU do Windows, para paridade com inicialização do CLI, mas não executa o subprocesso
policyHelper configurado pelo administrador. O campo permissions.defaultMode é retornado como está de todos os níveis, incluindo configurações de projeto. O filtro de confiança que o CLI aplica antes de honrar modos de permissão crescentes não é aplicado.Parâmetros
resolveSettings() aceita um único objeto de opções. Todos os campos são opcionais.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
options.cwd | string | process.cwd() | Diretório para resolver configurações de projeto e local relativas a |
options.settingSources | SettingSource[] | Todas as fontes | Quais fontes do sistema de arquivos carregar. Passe [] para pular configurações de usuário, projeto e local. Configurações de política gerenciada carregam em todos os casos |
options.managedSettings | Settings | undefined | Configurações de política restritiva fornecidas pelo host de incorporação. Descartadas por padrão quando uma camada gerenciada implantada pelo administrador está presente; mescladas sob essa camada quando parentSettingsBehavior é "merge". Chaves não restritivas como model são silenciosamente descartadas para que essa opção possa apertar a política gerenciada, mas não afrouxá-la |
options.serverManagedSettings | Settings | undefined | Payload de configurações gerenciadas pelo servidor de /api/claude_code/settings. Chaves não restritivas passam sem filtro |
Tipo de retorno: ResolvedSettings
resolveSettings() retorna um objeto descrevendo as configurações mescladas e a fonte que contribuiu para cada chave.
| Propriedade | Tipo | Descrição |
|---|---|---|
effective | Settings | Configurações mescladas após aplicar todas as fontes habilitadas em ordem de precedência |
provenance | Partial<Record<keyof Settings, ProvenanceEntry>> | Para cada chave de nível superior em effective, qual fonte forneceu o valor |
sources | Array<{ source, settings, path?, policyOrigin? }> | Configurações brutas por fonte, ordenadas de precedência mais baixa para mais alta |
Exemplo
O exemplo abaixo resolve configurações para um diretório de projeto e imprime a fonte que controla o período de limpeza.Tipos
Options
Objeto de configuração para a função query().
| Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
abortController | AbortController | new AbortController() | Controlador para cancelar operações |
additionalDirectories | string[] | [] | Diretórios adicionais que Claude pode acessar |
agent | string | undefined | Nome do agente para a thread principal. O agente deve ser definido na opção agents ou em configurações |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | Defina subagentes programaticamente |
agentProgressSummaries | boolean | false | Quando true, gera resumos de progresso de uma linha para subagentes e os encaminha em eventos task_progress através do campo summary. Aplica-se a subagentes em primeiro plano e em segundo plano |
allowDangerouslySkipPermissions | boolean | false | Ativar bypass de permissões. Obrigatório ao usar permissionMode: 'bypassPermissions' |
allowedTools | string[] | [] | Ferramentas para auto-aprovar sem solicitar. Isso não restringe Claude apenas a essas ferramentas; ferramentas não listadas caem em permissionMode e canUseTool. Use disallowedTools para bloquear ferramentas. Veja Permissões |
betas | SdkBeta[] | [] | Ativar recursos beta |
canUseTool | CanUseTool | undefined | Função de permissão personalizada para uso de ferramentas |
continue | boolean | false | Continuar a conversa mais recente |
cwd | string | process.cwd() | Diretório de trabalho atual |
debug | boolean | false | Ativar modo de depuração para o processo Claude Code |
debugFile | string | undefined | Escrever logs de depuração em um caminho de arquivo específico. Ativa implicitamente o modo de depuração |
disallowedTools | string[] | [] | Ferramentas para negar. Um nome simples como "Bash" remove a ferramenta do contexto do Claude. Uma regra com escopo como "Bash(rm *)" deixa a ferramenta disponível e nega chamadas correspondentes em todos os modos de permissão, incluindo bypassPermissions. Veja Permissões |
effort | 'low' | 'medium' | 'high' | 'xhigh' | 'max' | 'high' | Controla quanto esforço Claude coloca em sua resposta. Funciona com pensamento adaptativo para guiar a profundidade do pensamento |
enableFileCheckpointing | boolean | false | Ativar rastreamento de mudanças de arquivo para retrocesso. Veja File checkpointing |
env | Record<string, string | undefined> | process.env | Variáveis de ambiente. Quando definido, isso substitui o ambiente do subprocesso em vez de mesclar com process.env, então passe { ...process.env, YOUR_VAR: 'value' } para manter variáveis herdadas como PATH. Veja Lidar com respostas de API lentas ou travadas para um exemplo deste padrão, e Variáveis de ambiente para variáveis que a CLI subjacente lê. Defina CLAUDE_AGENT_SDK_CLIENT_APP para identificar sua aplicação no cabeçalho User-Agent |
executable | 'bun' | 'deno' | 'node' | Auto-detectado | Runtime JavaScript a usar |
executableArgs | string[] | [] | Argumentos a passar para o executável |
extraArgs | Record<string, string | null> | {} | Argumentos adicionais |
fallbackModel | string | undefined | Modelo a usar se o primário falhar |
forkSession | boolean | false | Ao retomar com resume, bifurcar para um novo ID de sessão em vez de continuar a sessão original |
forwardSubagentText | boolean | false | Encaminhar blocos de texto e pensamento de subagentes como mensagens de assistente e usuário com parent_tool_use_id definido, para que os consumidores possam renderizar uma transcrição aninhada. Por padrão, apenas blocos tool_use e tool_result de subagentes são emitidos |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | Callbacks de hook para eventos |
includeHookEvents | boolean | false | Incluir eventos de ciclo de vida de hook no fluxo de mensagens como SDKHookStartedMessage, SDKHookProgressMessage e SDKHookResponseMessage |
includePartialMessages | boolean | false | Incluir eventos de mensagem parcial |
loadTimeoutMs | number | 60000 | Alfa. Timeout em milissegundos para cada chamada sessionStore.load() e sessionStore.listSubkeys() durante materialização de retomada. Se o adaptador não se resolver dentro desta janela, a consulta falha em vez de travar. Ignorado quando sessionStore não está definido |
managedSettings | Settings | undefined | Configurações de nível de política fornecidas pelo processo pai que está gerando. Descartadas quando uma camada de configurações gerenciadas controlada por TI já existe na máquina, a menos que esse administrador opte por parentSettingsBehavior: 'merge'. Filtradas apenas para chaves restritivas independentemente |
maxBudgetUsd | number | undefined | Parar a consulta quando a estimativa de custo do lado do cliente atingir este valor em USD. Comparado com a mesma estimativa que total_cost_usd; veja Rastrear custo e uso para ressalvas de precisão |
maxThinkingTokens | number | undefined | Descontinuado: Use thinking em vez disso. Tokens máximos para processo de pensamento |
maxTurns | number | undefined | Turnos agênticos máximos (round trips de uso de ferramenta) |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | Configurações de servidor MCP |
model | string | Padrão da CLI | Modelo Claude a usar |
onElicitation | (request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult> | undefined | Callback para lidar com solicitações de elicitação MCP. Chamado quando um servidor MCP solicita entrada do usuário e nenhum hook a trata primeiro. Quando não fornecido, solicitações de elicitação não tratadas são recusadas automaticamente |
outputFormat | { type: 'json_schema', schema: JSONSchema } | undefined | Defina o formato de saída para resultados de agente. Veja Structured outputs para detalhes |
outputStyle | string | undefined | Não é um campo Options. Defina outputStyle no objeto settings inline ou em um arquivo de configurações. Veja Ativar um estilo de saída |
pathToClaudeCodeExecutable | string | Auto-resolvido do binário nativo agrupado | Caminho para executável Claude Code. Apenas necessário se dependências opcionais foram puladas durante a instalação ou sua plataforma não está no conjunto suportado |
permissionMode | PermissionMode | 'default' | Modo de permissão para a sessão |
permissionPromptToolName | string | undefined | Nome da ferramenta MCP para prompts de permissão |
persistSession | boolean | true | Quando false, desativa persistência de sessão em disco. Sessões não podem ser retomadas depois |
planModeInstructions | string | undefined | Instruções de fluxo de trabalho personalizado para Plan Mode. Quando permissionMode é 'plan', esta string substitui o corpo de fluxo de trabalho de Plan Mode padrão. A CLI ainda o envolve com o preâmbulo de imposição somente leitura e o rodapé do protocolo ExitPlanMode |
plugins | SdkPluginConfig[] | [] | Carregar plugins personalizados de caminhos locais. Veja Plugins para detalhes |
promptSuggestions | boolean | false | Ativar sugestões de prompt. Emite uma mensagem prompt_suggestion após cada turno com um prompt de usuário previsto |
resume | string | undefined | ID de sessão a retomar |
resumeSessionAt | string | undefined | Retomar sessão em um UUID de mensagem específico |
sandbox | SandboxSettings | undefined | Configurar comportamento de sandbox programaticamente. Veja Sandbox settings para detalhes |
sessionId | string | Auto-gerado | Use um UUID específico para a sessão em vez de auto-gerar um |
sessionStore | SessionStore | undefined | Espelhar transcrições de sessão para um backend externo para que qualquer host possa retomá-las. Veja Persist sessions to external storage |
sessionStoreFlush | 'batched' | 'eager' | 'batched' | Alfa. Modo de flush para sessionStore. Ignorado quando sessionStore não está definido |
settings | string | Settings | undefined | Objeto de configurações inline ou caminho para um arquivo de configurações. Popula a camada de configurações de flag na ordem de precedência. Altere em tempo de execução com applyFlagSettings() |
settingSources | SettingSource[] | Padrões da CLI (todas as fontes) | Controle quais configurações do sistema de arquivos carregar. Passe [] para desativar configurações de usuário, projeto e local. Configurações de política gerenciada carregam independentemente. Veja Use Claude Code features |
skills | string[] | 'all' | undefined | Skills disponíveis para a sessão. Passe 'all' para ativar cada skill descoberta, ou uma lista de nomes de skills. Quando definido, o SDK ativa a ferramenta Skill automaticamente sem listá-la em allowedTools. Veja Skills |
spawnClaudeCodeProcess | (options: SpawnOptions) => SpawnedProcess | undefined | Função personalizada para gerar o processo Claude Code. Use para executar Claude Code em VMs, contêineres ou ambientes remotos |
stderr | (data: string) => void | undefined | Callback para saída stderr |
strictMcpConfig | boolean | false | Use apenas os servidores passados em mcpServers e ignore o projeto .mcp.json, configurações do usuário, servidores MCP fornecidos por plugin e conectores claude.ai |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean } | undefined (prompt mínimo) | Configuração de prompt do sistema. Passe uma string para prompt personalizado, ou { type: 'preset', preset: 'claude_code' } para usar o prompt do sistema do Claude Code. Ao usar a forma de objeto preset, adicione append para estendê-lo com instruções adicionais, e defina excludeDynamicSections: true para mover contexto por sessão para a primeira mensagem do usuário para melhor reutilização de cache de prompt entre máquinas |
taskBudget | { total: number } | undefined | Alfa. Orçamento de tarefa do lado da API em tokens. Quando definido, o modelo é informado sobre seu orçamento de token restante para que possa controlar o uso de ferramentas e encerrar antes do limite |
thinking | ThinkingConfig | { type: 'adaptive' } para modelos suportados | Controla o comportamento de pensamento/raciocínio do Claude. Veja ThinkingConfig para opções |
title | string | undefined | Título de exibição para a sessão. Ao retomar via resume ou continue, o título persistido da sessão retomada tem precedência; use renameSession() para renomear uma sessão existente |
toolAliases | Record<string, string> | undefined | Mapear nomes de ferramentas integradas para nomes de ferramentas MCP para que Claude chame sua implementação MCP em vez da integrada. Por exemplo, { Bash: 'mcp__workspace__bash' } |
toolConfig | ToolConfig | undefined | Configuração para comportamento de ferramenta integrada. Veja ToolConfig para detalhes |
tools | string[] | { type: 'preset'; preset: 'claude_code' } | undefined | Configuração de ferramenta. Passe um array de nomes de ferramentas ou use o preset para obter as ferramentas padrão do Claude Code |
Lidar com respostas de API lentas ou travadas
O subprocesso da CLI lê várias variáveis de ambiente que controlam timeouts de API e detecção de travamento. Passe-as através da opçãoenv:
API_TIMEOUT_MS: timeout por solicitação no cliente Anthropic, em milissegundos. Padrão600000. Aplica-se ao loop principal e a todos os subagentes.CLAUDE_CODE_MAX_RETRIES: máximo de tentativas de API. Padrão10. Cada tentativa obtém sua própria janelaAPI_TIMEOUT_MS, então o tempo de parede no pior caso é aproximadamenteAPI_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)mais backoff.CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: watchdog de travamento para subagentes lançados comrun_in_background. Padrão600000. Redefine em cada evento de stream; em caso de travamento, aborta o subagente, marca a tarefa como falhada e expõe o erro ao pai com qualquer resultado parcial. Não se aplica a subagentes síncronos.CLAUDE_ENABLE_STREAM_WATCHDOG=1comCLAUDE_STREAM_IDLE_TIMEOUT_MS: aborta a solicitação quando os cabeçalhos chegaram mas o corpo da resposta para de fazer stream. Desativado por padrão.CLAUDE_STREAM_IDLE_TIMEOUT_MSpadrão é300000e é fixado nesse mínimo. A solicitação abortada passa pelo caminho de tentativa normal.
Objeto Query
Interface retornada pela função query().
Métodos
| Método | Descrição |
|---|---|
interrupt() | Interrompe a consulta (apenas disponível em modo de entrada de transmissão) |
rewindFiles(userMessageId, options?) | Restaura arquivos para seu estado na mensagem de usuário especificada. Passe { dryRun: true } para visualizar mudanças. Requer enableFileCheckpointing: true. Veja File checkpointing |
setPermissionMode() | Altera o modo de permissão (apenas disponível em modo de entrada de transmissão) |
setModel() | Altera o modelo (apenas disponível em modo de entrada de transmissão) |
setMaxThinkingTokens() | Descontinuado: Use a opção thinking em vez disso. Altera os tokens de pensamento máximos |
applyFlagSettings(settings) | Mescla configurações na camada de configurações de flag da sessão em tempo de execução (apenas disponível em modo de entrada de transmissão). Veja applyFlagSettings() |
initializationResult() | Retorna o resultado de inicialização completo incluindo comandos suportados, modelos, informações de conta e configuração de estilo de saída |
supportedCommands() | Retorna comandos slash disponíveis |
supportedModels() | Retorna modelos disponíveis com informações de exibição |
supportedAgents() | Retorna subagentes disponíveis como AgentInfo[] |
mcpServerStatus() | Retorna status de servidores MCP conectados |
accountInfo() | Retorna informações de conta |
reconnectMcpServer(serverName) | Reconectar um servidor MCP por nome |
toggleMcpServer(serverName, enabled) | Ativar ou desativar um servidor MCP por nome |
setMcpServers(servers) | Substituir dinamicamente o conjunto de servidores MCP para esta sessão. Retorna informações sobre quais servidores foram adicionados, removidos e quaisquer erros |
streamInput(stream) | Transmitir mensagens de entrada para a consulta para conversas multi-turno |
stopTask(taskId) | Parar uma tarefa de fundo em execução por ID |
close() | Fechar a consulta e encerrar o processo subjacente. Força o término da consulta e limpa todos os recursos |
applyFlagSettings()
Altera qualquer configuração em uma sessão em execução sem reiniciar a consulta. Use-a quando uma configuração que não tem um setter dedicado precisa mudar no meio da sessão, como apertar permissions depois que o agente lê entrada não confiável. setModel() e setPermissionMode() são setters dedicados para essas duas chaves; applyFlagSettings() é a forma geral que aceita qualquer subconjunto das chaves de configurações, e passar model aqui se comporta igual a setModel().
Apenas algumas chaves têm efeito no meio da sessão:
- Aplicadas no próximo turno:
model,effortLevel,ultracode,permissions,hooks,skillOverrides,fastMode,awaySummaryEnabled,agent. Mudaragenttambém aplica a substituição de modelo, hooks e prompt do sistema desse agente no próximo turno. - Sem efeito no meio da sessão: as opções de prompt do sistema. Estes são resolvidos uma vez na inicialização, então a sessão em execução mantém o valor original mesmo que a chamada tenha sucesso. Para alterá-los, inicie uma nova sessão.
settings inline de query() popula na inicialização. Configurações de flag ficam perto do topo da ordem de precedência de configurações: elas substituem configurações de usuário, projeto e local, e apenas configurações de política gerenciada podem substituí-las. Esta é a mesma camada que a seção de precedência na página chama de opções programáticas.
Chamadas sucessivas fazem shallow-merge de chaves de nível superior. Uma segunda chamada com { permissions: {...} } substitui o objeto permissions inteiro da chamada anterior em vez de fazer deep-merge nele. Para limpar uma chave da camada de flag e voltar a fontes de precedência mais baixa, passe null para essa chave. Passar undefined não tem efeito porque a serialização JSON a descarta.
Apenas disponível em modo de entrada de transmissão, a mesma restrição que setModel() e setPermissionMode().
O exemplo abaixo muda o modelo ativo no meio da sessão, depois limpa a substituição para que o modelo volte ao que as configurações de usuário ou projeto especificam.
applyFlagSettings() é apenas TypeScript. O SDK Python não expõe um método equivalente.WarmQuery
Handle retornado por startup(). O subprocesso já está gerado e inicializado, então chamar query() neste handle escreve o prompt diretamente em um processo pronto sem latência de inicialização.
Métodos
| Método | Descrição |
|---|---|
query(prompt) | Enviar um prompt para o subprocesso pré-aquecido e retornar uma Query. Pode ser chamado apenas uma vez por WarmQuery |
close() | Fechar o subprocesso sem enviar um prompt. Use isso para descartar uma consulta quente que não é mais necessária |
WarmQuery implementa AsyncDisposable, então pode ser usado com await using para limpeza automática.
SDKControlInitializeResponse
Tipo de retorno de initializationResult(). Contém dados de inicialização de sessão.
initialize para uma sessão que já está em execução, o wrapper de resposta de controle também carrega um array pending_permission_requests opcional. O campo está no wrapper de resposta em si, não na carga SDKControlInitializeResponse acima. Cada entrada é uma mensagem control_request completa com a mesma forma { type: "control_request", request_id, request } que a sessão transmite para solicitações de permissão durante a execução.
Estas são solicitações que foram emitidas antes do cliente se conectar e ainda estão aguardando uma resposta, então leia este array para exibir prompts de permissão em voo imediatamente; eles não serão reenviados.
AgentDefinition
Configuração para um subagente definido programaticamente.
| Campo | Obrigatório | Descrição |
|---|---|---|
description | Sim | Descrição em linguagem natural de quando usar este agente |
tools | Não | Array de nomes de ferramentas permitidas. Se omitido, herda todas as ferramentas do pai. Para pré-carregar Skills no contexto do agente, use o campo skills em vez de listar 'Skill' aqui |
disallowedTools | Não | Array de nomes de ferramentas para explicitamente desallocar para este agente |
prompt | Sim | O prompt do sistema do agente |
model | Não | Substituição de modelo para este agente. Aceita um alias como 'sonnet', 'opus', 'haiku', 'inherit', ou um ID de modelo completo. Se omitido ou 'inherit', usa o modelo principal |
mcpServers | Não | Especificações de servidor MCP para este agente |
skills | Não | Array de nomes de skills para pré-carregar no contexto do agente |
initialPrompt | Não | Auto-enviado como o primeiro turno de usuário quando este agente é executado como o agente da thread principal |
maxTurns | Não | Número máximo de turnos agênticos (round-trips de API) antes de parar |
background | Não | Executar este agente como uma tarefa de fundo não-bloqueante quando invocado |
memory | Não | Fonte de memória para este agente: 'user', 'project', ou 'local' |
effort | Não | Nível de esforço de raciocínio para este agente. Aceita um nível nomeado ou um inteiro |
permissionMode | Não | Modo de permissão para execução de ferramenta dentro deste agente. Veja PermissionMode |
criticalSystemReminder_EXPERIMENTAL | Não | Experimental: Lembrete crítico adicionado ao prompt do sistema |
AgentMcpServerSpec
Especifica servidores MCP disponíveis para um subagente. Pode ser um nome de servidor (string referenciando um servidor da configuração mcpServers do pai) ou um registro de configuração de servidor inline mapeando nomes de servidor para configs.
McpServerConfigForProcessTransport é McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.
SettingSource
Controla quais fontes de configuração baseadas em sistema de arquivos o SDK carrega configurações.
| Valor | Descrição | Localização |
|---|---|---|
'user' | Configurações globais do usuário | ~/.claude/settings.json |
'project' | Configurações de projeto compartilhadas (controladas por versão) | .claude/settings.json |
'local' | Configurações de projeto local (gitignored) | .claude/settings.local.json |
Comportamento padrão
QuandosettingSources é omitido ou undefined, query() carrega as mesmas configurações do sistema de arquivos que a CLI do Claude Code: usuário, projeto e local. Configurações de política gerenciada são carregadas em todos os casos. Veja What settingSources does not control para entradas que são lidas independentemente desta opção, e como desativá-las.
Por que usar settingSources
Desativar configurações do sistema de arquivos:Precedência de configurações
Quando múltiplas fontes são carregadas, as configurações são mescladas com esta precedência (maior para menor):- Configurações locais (
.claude/settings.local.json) - Configurações de projeto (
.claude/settings.json) - Configurações do usuário (
~/.claude/settings.json)
agents, allowedTools e settings substituem configurações do sistema de arquivos de usuário, projeto e local. Configurações de política gerenciada têm precedência sobre opções programáticas.
PermissionMode
CanUseTool
Tipo de função de permissão personalizada para controlar o uso de ferramentas.
| Opção | Tipo | Descrição |
|---|---|---|
signal | AbortSignal | Sinalizado se a operação deve ser abortada |
suggestions | PermissionUpdate[] | Atualizações de permissão sugeridas para que o usuário não seja solicitado novamente para esta ferramenta. Prompts de Bash incluem uma sugestão com o destino localSettings destination, então retorná-la em updatedPermissions escreve a regra em .claude/settings.local.json e persiste entre sessões. |
blockedPath | string | O caminho do arquivo que acionou a solicitação de permissão, se aplicável |
decisionReason | string | Explica por que esta solicitação de permissão foi acionada |
toolUseID | string | Identificador único para esta chamada de ferramenta específica dentro da mensagem do assistente |
agentID | string | Se executando dentro de um sub-agente, o ID do sub-agente |
PermissionResult
Resultado de uma verificação de permissão.
ToolConfig
Configuração para comportamento de ferramenta integrada.
| Campo | Tipo | Descrição |
|---|---|---|
askUserQuestion.previewFormat | 'markdown' | 'html' | Opta pelo campo preview em opções AskUserQuestion e define seu formato de conteúdo. Quando não definido, Claude não emite visualizações |
McpServerConfig
Configuração para servidores MCP.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpSdkServerConfigWithInstance
McpClaudeAIProxyServerConfig
SdkPluginConfig
Configuração para carregar plugins no SDK.
| Campo | Tipo | Descrição |
|---|---|---|
type | 'local' | Deve ser 'local' (apenas plugins locais atualmente suportados) |
path | string | Caminho absoluto ou relativo para o diretório do plugin |
Tipos de Mensagem
SDKMessage
Tipo de união de todas as mensagens possíveis retornadas pela consulta.
SDKAssistantMessage
Mensagem de resposta do assistente.
message é uma BetaMessage do SDK Anthropic. Inclui campos como id, content, model, stop_reason e usage.
SDKAssistantMessageError é um de: 'authentication_failed', 'oauth_org_not_allowed', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens', ou 'unknown'. 'model_not_found' significa que o modelo selecionado não existe ou não está disponível para sua conta ou implantação. 'overloaded' significa que a API retornou um 529 porque o servidor está em capacidade máxima, em contraste com 'rate_limit', que é um 429 contra sua cota.
SDKUserMessage
Mensagem de entrada do usuário.
shouldQuery como false para anexar a mensagem à transcrição sem acionar um turno do assistente. A mensagem é mantida e mesclada na próxima mensagem do usuário que aciona um turno. Use isso para injetar contexto, como a saída de um comando que você executou fora de banda, sem gastar uma chamada de modelo nela.
SDKUserMessageReplay
Mensagem de usuário repetida com UUID obrigatório.
SDKResultMessage
Mensagem de resultado final.
subtype:
api_error_status: o código de status HTTP do erro de API que encerrou a conversa. Ausente ounullquando o turno terminou sem um erro de API.ttft_ms: tempo até o primeiro token em milissegundos. Presente apenas no braço de sucesso.terminal_reason: por que o loop terminou. Um de"completed","max_turns","tool_deferred","aborted_streaming","aborted_tools","hook_stopped","stop_hook_prevented","blocking_limit","rapid_refill_breaker","prompt_too_long","image_error", ou"model_error".fast_mode_state: um de"on","off", ou"cooldown".
origin encaminha a SDKMessageOrigin da mensagem do usuário que acionou este resultado. Quando uma tarefa em segundo plano é concluída e o SDK injeta um turno de acompanhamento sintético, a SDKResultMessage resultante carrega origin: { kind: "task-notification" }. Verifique este campo para distinguir resultados que respondem ao seu prompt de resultados emitidos para acompanhamentos de tarefas em segundo plano, para que você possa rotear ou suprimir os últimos. O campo está ausente para resultados emitidos antes de qualquer turno do usuário, como erros de inicialização.
Quando um hook PreToolUse retorna permissionDecision: "defer", o resultado tem stop_reason: "tool_deferred" e deferred_tool_use carrega o id, name e input da ferramenta pendente. Leia este campo para exibir a solicitação em sua própria interface do usuário, depois retome com o mesmo session_id para continuar. Consulte Adiar uma chamada de ferramenta para mais tarde para a volta completa.
SDKSystemMessage
Mensagem de inicialização do sistema.
SDKPartialAssistantMessage
Mensagem parcial de transmissão (apenas quando includePartialMessages é true).
SDKCompactBoundaryMessage
Mensagem indicando um limite de compactação de conversa.
SDKPluginInstallMessage
Evento de progresso de instalação de plugin. Emitido quando CLAUDE_CODE_SYNC_PLUGIN_INSTALL está definido, para que sua aplicação Agent SDK possa rastrear a instalação de plugin do marketplace antes do primeiro turno. Os status started e completed delimitam a instalação geral. Os status installed e failed relatam marketplaces individuais e incluem name.
SDKPermissionDeniedMessage
Evento de fluxo emitido quando o sistema de permissão nega automaticamente uma chamada de ferramenta sem um prompt interativo. Use-o para renderizar a negação em sua interface do usuário conforme ela acontece, em vez de apenas observar o resultado da ferramenta is_error que se segue. O caminho de solicitação interativa chega à sua aplicação separadamente através do callback canUseTool. As negações emitidas por um hook PreToolUse não são relatadas através deste evento.
Este evento requer Claude Code v2.1.136 ou posterior.
| Campo | Tipo | Descrição |
|---|---|---|
tool_name | string | Nome da ferramenta que foi negada |
tool_use_id | string | ID do bloco tool_use que esta negação responde |
agent_id | string | ID do subagente quando a chamada negada originou-se dentro de um subagente. Espelha o campo em can_use_tool para roteamento do lado do host |
decision_reason_type | string | Discriminador para o componente que decidiu, como "rule", "mode", "classifier", ou "asyncAgent" |
decision_reason | string | Razão legível por humanos do componente que decidiu, quando disponível |
message | string | Mensagem de rejeição retornada ao modelo no tool_result |
SDKPermissionDenial
Informações sobre um uso de ferramenta negado.
SDKMessageOrigin
Proveniência de uma mensagem com função de usuário. Isso aparece como origin em SDKUserMessage e é encaminhado para a SDKResultMessage correspondente para que você possa dizer o que acionou um determinado turno.
kind | Significado |
|---|---|
human | Entrada direta do usuário final. Em mensagens de usuário, uma origin ausente também significa entrada humana. |
channel | Mensagem chegando em um canal. server é o nome do servidor MCP de origem. |
peer | Mensagem de outra sessão de agente via SendMessage. from é o endereço do remetente; name é o nome de exibição do remetente quando disponível. |
task-notification | Turno sintético injetado após a conclusão de uma tarefa em segundo plano. Consulte SDKTaskNotificationMessage. |
coordinator | Mensagem de um coordenador de equipe em uma equipe de agente. |
Tipos de Hook
Para um guia abrangente sobre o uso de hooks com exemplos e padrões comuns, veja o guia de Hooks.HookEvent
Eventos de hook disponíveis.
HookCallback
Tipo de função de callback de hook.
HookCallbackMatcher
Configuração de hook com matcher opcional.
HookInput
Tipo de união de todos os tipos de entrada de hook.
BaseHookInput
Interface base que todos os tipos de entrada de hook estendem.
PreToolUseHookInput
PostToolUseHookInput
PostToolUseFailureHookInput
PostToolBatchHookInput
Dispara uma vez após cada chamada de ferramenta em um lote ter sido resolvida, antes da próxima solicitação do modelo. tool_response carrega o conteúdo serializado de tool_result que o modelo vê; a forma difere do objeto estruturado Output de PostToolUseHookInput.
NotificationHookInput
UserPromptSubmitHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
SubagentStartHookInput
SubagentStopHookInput
PreCompactHookInput
PermissionRequestHookInput
SetupHookInput
TeammateIdleHookInput
TaskCompletedHookInput
ConfigChangeHookInput
WorktreeCreateHookInput
WorktreeRemoveHookInput
MessageDisplayHookInput
HookJSONOutput
Valor de retorno de hook.
AsyncHookJSONOutput
SyncHookJSONOutput
Tipos de Entrada de Ferramenta
Documentação de esquemas de entrada para todas as ferramentas integradas do Claude Code. Esses tipos são exportados de@anthropic-ai/claude-agent-sdk e podem ser usados para interações de ferramenta type-safe.
ToolInputSchemas
União de todos os tipos de entrada de ferramenta, exportada de @anthropic-ai/claude-agent-sdk.
Agent
Nome da ferramenta:Agent (anteriormente Task, que ainda é aceito como alias)
AskUserQuestion
Nome da ferramenta:AskUserQuestion
Bash
Nome da ferramenta:Bash
Monitor
Nome da ferramenta:Monitor
persistent: true para watches de comprimento de sessão, como tails de log. Monitor segue as mesmas regras de permissão que Bash. Veja a referência da ferramenta Monitor para comportamento e disponibilidade de provedor.
TaskOutput
Nome da ferramenta:TaskOutput
Edit
Nome da ferramenta:Edit
Read
Nome da ferramenta:Read
pages para intervalos de página PDF (por exemplo, "1-5").
Write
Nome da ferramenta:Write
Glob
Nome da ferramenta:Glob
Grep
Nome da ferramenta:Grep
TaskStop
Nome da ferramenta:TaskStop
NotebookEdit
Nome da ferramenta:NotebookEdit
WebFetch
Nome da ferramenta:WebFetch
WebSearch
Nome da ferramenta:WebSearch
Workflow
Nome da ferramenta:Workflow
Workflow está disponível no Agent SDK v0.3.149 e posterior. Pelo menos um de script, name ou scriptPath é obrigatório.
| Campo | Tipo | Descrição |
|---|---|---|
script | string | Script de workflow inline. Deve começar com export const meta = { name, description, phases } como um literal, seguido pelo corpo do script usando agent(), parallel(), pipeline() e phase() |
name | string | Nome de um workflow integrado ou um salvo em .claude/workflows/. Resolvido para um script |
scriptPath | string | Caminho para um arquivo de script de workflow no disco. Tem precedência sobre script e name. Cada invocação persiste seu script e retorna o caminho no resultado, para que você possa editar esse arquivo e reinvocar com o mesmo scriptPath para iterar |
args | unknown | Valor de entrada exposto ao script como o args global, para workflows nomeados parametrizados, como uma pergunta de pesquisa ou uma lista de caminhos de arquivo. Passe arrays e objetos como valores JSON reais, não como uma string codificada em JSON |
resumeFromRunId | string | ID de execução de uma invocação anterior de Workflow para retomar. Chamadas agent() concluídas com entradas inalteradas retornam resultados em cache; apenas chamadas alteradas ou novas são executadas ao vivo. Apenas a mesma sessão |
TodoWrite
Nome da ferramenta:TodoWrite
A partir do TypeScript Agent SDK 0.3.142,
TodoWrite está desabilitado por padrão. Use TaskCreate, TaskGet, TaskUpdate e TaskList em vez disso. Veja Migrar para ferramentas Task para atualizar seu código de monitoramento, ou defina CLAUDE_CODE_ENABLE_TASKS=0 para reverter para TodoWrite.TaskCreate
Nome da ferramenta:TaskCreate
TaskUpdate
Nome da ferramenta:TaskUpdate
status para "deleted" para removê-la.
TaskGet
Nome da ferramenta:TaskGet
null quando o ID não é encontrado.
TaskList
Nome da ferramenta:TaskList
ExitPlanMode
Nome da ferramenta:ExitPlanMode
ListMcpResources
Nome da ferramenta:ListMcpResourcesTool
ReadMcpResource
Nome da ferramenta:ReadMcpResourceTool
EnterWorktree
Nome da ferramenta:EnterWorktree
path para mudar para um worktree existente do repositório atual em vez de criar um novo. name e path são mutuamente exclusivos.
Tipos de Saída de Ferramenta
Documentação de esquemas de saída para todas as ferramentas integradas do Claude Code. Esses tipos são exportados de@anthropic-ai/claude-agent-sdk e representam os dados de resposta reais retornados por cada ferramenta.
ToolOutputSchemas
União de todos os tipos de saída de ferramenta.
Agent
Nome da ferramenta:Agent (anteriormente Task, que ainda é aceito como alias)
status: "completed" para tarefas concluídas, "async_launched" para tarefas em background e "sub_agent_entered" para subagentes interativos.
AskUserQuestion
Nome da ferramenta:AskUserQuestion
response é definido quando o usuário digitou uma resposta de forma livre em vez de responder às perguntas estruturadas; quando presente, Claude recebe “O usuário respondeu: …” em vez da lista de respostas por pergunta.
Bash
Nome da ferramenta:Bash
backgroundTaskId.
Monitor
Nome da ferramenta:Monitor
TaskStop para cancelar a observação antecipadamente.
Edit
Nome da ferramenta:Edit
Read
Nome da ferramenta:Read
type.
Write
Nome da ferramenta:Write
Glob
Nome da ferramenta:Glob
Grep
Nome da ferramenta:Grep
mode: lista de arquivo, conteúdo com correspondências ou contagens de correspondência.
TaskStop
Nome da ferramenta:TaskStop
NotebookEdit
Nome da ferramenta:NotebookEdit
WebFetch
Nome da ferramenta:WebFetch
WebSearch
Nome da ferramenta:WebSearch
Workflow
Nome da ferramenta:Workflow
error antes de tratar a execução como iniciada: um script que falha sua verificação de sintaxe retorna status: "async_launched" com error definido e nunca é executado.
| Campo | Tipo | Descrição |
|---|---|---|
status | "async_launched" | A ferramenta aceitou a invocação. Este é o único valor que o campo assume |
taskId | string | Identificador de tarefa em background para a execução |
runId | string | Identificador de execução de workflow para passar como resumeFromRunId em uma invocação posterior |
summary | string | Descrição de uma linha do que o workflow faz |
transcriptDir | string | Diretório onde transcrições de subagente são escritas durante a execução |
scriptPath | string | Caminho para o script de workflow persistido para esta execução. Edite-o e passe de volta como scriptPath para executar novamente sem reenviar o script |
error | string | Definido quando o script falha sua verificação de sintaxe. Quando presente, a execução não foi iniciada apesar do status async_launched |
TodoWrite
Nome da ferramenta:TodoWrite
A partir do TypeScript Agent SDK 0.3.142,
TodoWrite está desabilitado por padrão. Use TaskCreate, TaskGet, TaskUpdate e TaskList em seu lugar. Veja Migrar para ferramentas de Task para atualizar seu código de monitoramento, ou defina CLAUDE_CODE_ENABLE_TASKS=0 para reverter para TodoWrite.TaskCreate
Nome da ferramenta:TaskCreate
TaskUpdate
Nome da ferramenta:TaskUpdate
TaskGet
Nome da ferramenta:TaskGet
null quando o ID não é encontrado.
TaskList
Nome da ferramenta:TaskList
ExitPlanMode
Nome da ferramenta:ExitPlanMode
ListMcpResources
Nome da ferramenta:ListMcpResourcesTool
ReadMcpResource
Nome da ferramenta:ReadMcpResourceTool
EnterWorktree
Nome da ferramenta:EnterWorktree
Tipos de Permissão
PermissionUpdate
Operações para atualizar permissões.
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
Outros Tipos
ApiKeySource
SdkBeta
Recursos beta disponíveis que podem ser ativados via opção betas. Veja Beta headers para mais informações.
SlashCommand
Informações sobre um comando slash disponível.
ModelInfo
Informações sobre um modelo disponível.
AgentInfo
Informações sobre um subagente disponível que pode ser invocado via ferramenta Agent.
| Campo | Tipo | Descrição |
|---|---|---|
name | string | Identificador de tipo de agente (por exemplo, "Explore", "general-purpose") |
description | string | Descrição de quando usar este agente |
model | string | undefined | Alias de modelo que este agente usa. Se omitido, herda o modelo do pai |
McpServerStatus
Status de um servidor MCP conectado.
McpServerStatusConfig
A configuração de um servidor MCP conforme relatado por mcpServerStatus(). Esta é a união de todos os tipos de transporte de servidor MCP.
McpServerConfig para detalhes sobre cada tipo de transporte.
AccountInfo
Informações de conta para o usuário autenticado.
ModelUsage
Estatísticas de uso por modelo retornadas em mensagens de resultado. O valor costUSD é uma estimativa do lado do cliente. Veja Rastrear custo e uso para ressalvas de faturamento.
ConfigScope
NonNullableUsage
Uma versão de Usage com todos os campos anuláveis tornados não-anuláveis.
Usage
Estatísticas de uso de token. Este é o tipo BetaUsage de @anthropic-ai/sdk.
BetaServerToolUsage e BetaIterationsUsage são definidos em @anthropic-ai/sdk.
CallToolResult
Tipo de resultado de ferramenta MCP (de @modelcontextprotocol/sdk/types.js). structuredContent é um objeto JSON que pode ser retornado junto com content, incluindo blocos de imagem. Veja Retornar dados estruturados.
ThinkingConfig
Controla o comportamento de pensamento/raciocínio do Claude. Tem precedência sobre o maxThinkingTokens descontinuado.
display opcional controla se o texto de pensamento é retornado "summarized" ou "omitted". No Claude Opus 4.7 e posterior, o padrão da API é "omitted", então defina "summarized" para receber conteúdo de pensamento em blocos thinking.
SpawnedProcess
Interface para geração de processo personalizado (usada com opção spawnClaudeCodeProcess). ChildProcess já satisfaz esta interface.
SpawnOptions
Opções passadas para a função de geração personalizada.
O campo
signal informa sua função de geração quando desativar o processo. Passe-o como a opção signal para spawn() do Node, ou passe-o para seu manipulador de desmontagem de VM ou contêiner.Este sinal não dispara no instante em que Options.abortController aborta. O SDK primeiro fecha o stdin do processo e aguarda cerca de dois segundos para que a CLI possa desligar corretamente, depois aborta este sinal. Para reagir no momento em que o chamador aborta, em vez disso, ouça seu próprio Options.abortController.signal, que sua função de geração pode referenciar de seu escopo envolvente.McpSetServersResult
Resultado de uma operação setMcpServers().
RewindFilesResult
Resultado de uma operação rewindFiles().
SDKStatusMessage
Mensagem de atualização de status (por exemplo, compactando).
SDKTaskNotificationMessage
Notificação quando uma tarefa de background é concluída, falha ou é parada. Tarefas de background incluem comandos Bash run_in_background, watches Monitor e subagentes de background.
SDKToolUseSummaryMessage
Resumo do uso de ferramenta em uma conversa.
SDKHookStartedMessage
Emitido quando um hook começa a executar.
SDKHookProgressMessage
Emitido enquanto um hook está em execução, com saída stdout/stderr.
SDKHookResponseMessage
Emitido quando um hook termina de executar.
SDKToolProgressMessage
Emitido periodicamente enquanto uma ferramenta está sendo executada para indicar progresso.
SDKAuthStatusMessage
Emitido durante fluxos de autenticação.
SDKTaskStartedMessage
Emitido quando uma tarefa de background começa. O campo task_type é "local_bash" para comandos Bash de background e watches Monitor, "local_agent" para subagentes, ou "remote_agent".
SDKTaskProgressMessage
Emitido periodicamente enquanto um subagente ou tarefa de background está em execução. O campo summary é preenchido apenas quando agentProgressSummaries está ativado.
SDKTaskUpdatedMessage
Emitido quando o estado de uma tarefa de background muda, como quando ela faz a transição de running para completed. Mescle patch em seu mapa de tarefas local com chave task_id. O campo end_time é um timestamp de época Unix em milissegundos, comparável com Date.now().
SDKFilesPersistedEvent
Emitido quando checkpoints de arquivo são persistidos em disco.
SDKRateLimitEvent
Emitido quando a sessão encontra um limite de taxa.
SDKLocalCommandOutputMessage
Saída de um comando slash local (por exemplo, /voice ou /usage). Exibido como texto estilo assistente na transcrição.
SDKCommandsChangedMessage
Emitido quando o conjunto de comandos disponíveis muda durante a sessão, como quando skills são descobertos conforme o agente entra em um subdiretório. O array commands é a lista completa atualizada, então substitua qualquer lista de comandos em cache por este payload. Chamar supportedCommands() novamente não é equivalente: esse método retorna o snapshot capturado na inicialização e não reflete mudanças durante a sessão.
SDKPromptSuggestionMessage
Emitido após cada turno quando promptSuggestions está ativado. Contém um prompt de usuário previsto.
AbortError
Classe de erro personalizada para operações de abort.
Configuração de Sandbox
SandboxSettings
Configuração para comportamento de sandbox. Use isso para ativar sandboxing de comando e configurar restrições de rede programaticamente.
| Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled | boolean | false | Ativar modo sandbox para execução de comando |
failIfUnavailable | boolean | true | Parar na inicialização se enabled é true mas o sandbox não consegue iniciar. Defina false para voltar para execução sem sandbox com um aviso em stderr |
autoAllowBashIfSandboxed | boolean | true | Auto-aprovar comandos bash quando sandbox está ativado |
excludedCommands | string[] | [] | Comandos que sempre contornam restrições de sandbox (por exemplo, ['docker']). Esses executam sem sandbox automaticamente sem envolvimento do modelo |
allowUnsandboxedCommands | boolean | true | Permitir que o modelo solicite executar comandos fora do sandbox. Quando true, o modelo pode definir dangerouslyDisableSandbox na entrada da ferramenta, que volta para o sistema de permissões |
network | SandboxNetworkConfig | undefined | Configuração de sandbox específica de rede |
filesystem | SandboxFilesystemConfig | undefined | Configuração de sandbox específica do sistema de arquivos para restrições de leitura/escrita |
ignoreViolations | Record<string, string[]> | undefined | Mapa de categorias de violação para padrões a ignorar (por exemplo, { file: ['/tmp/*'], network: ['localhost'] }) |
enableWeakerNestedSandbox | boolean | false | Ativar um sandbox aninhado mais fraco para compatibilidade |
ripgrep | { command: string; args?: string[] } | undefined | Configuração de binário ripgrep personalizado para ambientes sandbox |
O sandbox depende do suporte de plataforma e, no Linux, ferramentas como
bubblewrap e socat. Quando enabled é true e o sandbox não consegue iniciar, query() relata uma mensagem result com subtype: "error_during_execution" e o motivo em errors, depois para. Observe esse subtipo em vez de esperar que query() lance uma exceção antes de gerar mensagens.Para executar sem sandbox, defina failIfUnavailable: false.Exemplo de uso
SandboxNetworkConfig
Configuração específica de rede para modo sandbox. Essas configurações se aplicam a comandos Bash sandboxed quando enabled é true na SandboxSettings pai. Elas não restringem a ferramenta WebFetch, que usa regras de permissão em vez disso.
| Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
allowedDomains | string[] | [] | Nomes de domínio que processos sandboxed podem acessar |
deniedDomains | string[] | [] | Nomes de domínio que processos sandboxed não podem acessar. Tem precedência sobre allowedDomains |
allowManagedDomainsOnly | boolean | false | Apenas configurações gerenciadas. Quando definido em configurações gerenciadas, apenas entradas allowedDomains de configurações gerenciadas são honradas e entradas de configurações de usuário, projeto ou local são ignoradas. Não tem efeito quando definido via opções SDK |
allowLocalBinding | boolean | false | Permitir que processos se vinculem a portas locais (por exemplo, para servidores dev) |
allowUnixSockets | string[] | [] | Caminhos de socket Unix que processos podem acessar (por exemplo, socket Docker) |
allowAllUnixSockets | boolean | false | Permitir acesso a todos os sockets Unix |
httpProxyPort | number | undefined | Porta de proxy HTTP para requisições de rede |
socksProxyPort | number | undefined | Porta de proxy SOCKS para requisições de rede |
O proxy de sandbox integrado impõe
allowedDomains com base no nome de host solicitado e não encerra ou inspeciona tráfego TLS, portanto técnicas como domain fronting podem potencialmente contorná-lo. Veja Limitações de segurança de sandboxing para detalhes e Implantação segura para configurar um proxy que encerra TLS.SandboxFilesystemConfig
Configuração específica do sistema de arquivos para modo sandbox.
| Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
allowWrite | string[] | [] | Padrões de caminho de arquivo para permitir acesso de escrita |
denyWrite | string[] | [] | Padrões de caminho de arquivo para negar acesso de escrita |
denyRead | string[] | [] | Padrões de caminho de arquivo para negar acesso de leitura |
Fallback de Permissões para Comandos Sem Sandbox
QuandoallowUnsandboxedCommands está ativado, o modelo pode solicitar executar comandos fora do sandbox definindo dangerouslyDisableSandbox: true na entrada da ferramenta. Essas solicitações voltam para o sistema de permissões existente, significando que seu handler canUseTool é invocado, permitindo que você implemente lógica de autorização personalizada.
excludedCommands vs allowUnsandboxedCommands:excludedCommands: Uma lista estática de comandos que sempre contornam o sandbox automaticamente (por exemplo,['docker']). O modelo não tem controle sobre isso.allowUnsandboxedCommands: Permite que o modelo decida em tempo de execução se solicita execução sem sandbox definindodangerouslyDisableSandbox: truena entrada da ferramenta.
- Auditar solicitações do modelo: Registre quando o modelo solicita execução sem sandbox
- Implementar listas de permissão: Apenas permitir comandos específicos para executar sem sandbox
- Adicionar fluxos de aprovação: Exigir autorização explícita para operações privilegiadas
Veja também
- Visão geral do SDK - Conceitos gerais do SDK
- Referência do SDK Python - Documentação do SDK Python
- Referência da CLI - Interface de linha de comando
- Fluxos de trabalho comuns - Guias passo a passo