Pular para o conteúdo principal

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 com bun 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

Retorna

Retorna um objeto Query 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

Retorna

Retorna uma Promise<WarmQuery> que é resolvida assim que o subprocesso é gerado e completa seu handshake de inicialização.

Exemplo

Chame startup() 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

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.

createSdkMcpServer()

Cria uma instância de servidor MCP que é executada no mesmo processo que sua aplicação.

Parâmetros

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

Tipo de retorno: SDKSessionInfo

Exemplo

Imprima as 10 sessões mais recentes para um projeto. Os resultados são classificados por lastModified 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

Tipo de retorno: SessionMessage

Exemplo

getSessionInfo()

Lê metadados para uma única sessão por ID sem verificar o diretório do projeto completo.

Parâmetros

Retorna 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

tagSession()

Marca uma sessão. Passe null para limpar a tag. Chamadas repetidas são seguras; a tag mais recente vence.

Parâmetros

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.

Tipo de retorno: ResolvedSettings

resolveSettings() retorna um objeto descrevendo as configurações mescladas e a fonte que contribuiu para cada chave.

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().

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ção env:
  • API_TIMEOUT_MS: timeout por solicitação no cliente Anthropic, em milissegundos. Padrão 600000. Aplica-se ao loop principal e a todos os subagentes.
  • CLAUDE_CODE_MAX_RETRIES: máximo de tentativas de API. Padrão 10, limitado a 15. Cada tentativa obtém sua própria janela API_TIMEOUT_MS, então o tempo de parede no pior caso é aproximadamente API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1) mais backoff. Para execuções sem supervisão que precisam aguardar através de interrupções mais longas, defina CLAUDE_CODE_RETRY_WATCHDOG=1: ele tenta erros de capacidade indefinidamente, e a partir do Claude Code v2.1.199 aumenta o padrão para outros erros transitórios para 300 e remove o limite nesta variável.
  • CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: watchdog de travamento para subagentes lançados com run_in_background. Padrão 600000. 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 com CLAUDE_STREAM_IDLE_TIMEOUT_MS: aborta a solicitação quando os cabeçalhos chegaram mas o corpo da resposta para de fazer stream. O watchdog está ativado por padrão para todos os provedores; defina CLAUDE_ENABLE_STREAM_WATCHDOG=0 para desativá-lo. CLAUDE_STREAM_IDLE_TIMEOUT_MS padrão é 300000 e é fixado nesse mínimo. A solicitação abortada passa pelo caminho de tentativa normal.

Objeto Query

Interface retornada pela função query().

Métodos

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, agent. Mudar agent també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.
effortLevel aceita um nome de nível de esforço. Também aceita "ultracode", que executa a sessão em esforço xhigh e ativa ultracode. O tipo Settings declara effortLevel sem esse valor, então passe o equivalente { ultracode: true } em TypeScript. O valor ultracode requer Claude Code v2.1.203 ou posterior e é aceito apenas por applyFlagSettings(), não pela chave effortLevel em um arquivo de configurações. Os valores são escritos na camada de configurações de flag, a mesma camada que a opçã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

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.
Quando um cliente envia 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. O SDK lê o array para você e despacha cada entrada para seu callback canUseTool, o mesmo reenvio que reinitialize() dispara após uma lacuna de transporte. Trate IDs de solicitação repetidos idempotentemente, porque uma entrada pode repetir uma solicitação que o callback já recebeu antes da conexão cair.

SDKControlInterruptResponse

O recebimento de interrupção: o valor que interrupt() resolve em uma CLI que anuncia a capacidade interrupt_receipt_v1 em SDKSystemMessage.capabilities. Requer Claude Code v2.1.205 ou posterior. CLIs anteriores respondem à interrupção com uma carga de sucesso vazia, então interrupt() resolve para undefined.
still_queued lista os UUIDs das mensagens de usuário que sobrevivem à interrupção: mensagens ainda na fila, mais qualquer lote já removido da fila para o próximo turno mas ainda não alcançável pela anulação. Cada uma é executada como seu próprio turno após a interrupção a menos que você a cancele primeiro. Use o recebimento para decidir se deve reenviar algo; reenviar uma mensagem que já está listada produz um turno duplicado. Interprete a lista com estas ressalvas:
  • Apenas mensagens que foram enfileiradas com um UUID aparecem. Um array vazio não significa que nada mais será executado.
  • Apenas mensagens da thread principal estão listadas. Mensagens endereçadas a um subagente estão fora do escopo.
  • A lista pode incluir UUIDs que seu cliente nunca enviou, como acionadores de tarefa agendada. Ignore UUIDs que você não reconhece em vez de tratá-los como um erro.
O recebimento é um snapshot tirado no momento em que a interrupção é processada, e em uma interrupção limpa chega antes do SDKResultMessage do turno interrompido. Leia o recebimento em vez de inspecionar a fila após esse resultado: o loop inicia o próximo turno enfileirado imediatamente, então a fila que você inspeciona após o resultado já mudou.

AgentDefinition

Configuração para um subagente definido programaticamente.

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.
Onde McpServerConfigForProcessTransport é McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.

SettingSource

Controla quais fontes de configuração baseadas em sistema de arquivos o SDK carrega configurações.

Comportamento padrão

Quando settingSources é 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; configurações gerenciadas pelo servidor são buscadas quando a sessão se autentica com uma credencial organizacional em uma configuração elegível. 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:
Carregar todas as configurações do sistema de arquivos explicitamente:
Carregar apenas fontes de configuração específicas:
Ambientes de teste e CI:
Aplicações apenas SDK:
Carregando instruções de projeto CLAUDE.md:

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):
  1. Configurações locais (.claude/settings.local.json)
  2. Configurações de projeto (.claude/settings.json)
  3. Configurações do usuário (~/.claude/settings.json)
Opções programáticas como 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. A função é a substituição do SDK para o prompt de permissão interativo: é invocada apenas quando o fluxo de avaliação de permissão se resolve em um prompt. Chamadas de ferramenta já aprovadas por uma entrada allowedTools, uma regra de permissão de configurações, ou o modo de permissão, como acceptEdits ou bypassPermissions, nunca a invocam. Para controlar cada chamada de ferramenta, use um hook PreToolUse em vez disso. AskUserQuestion, ferramentas MCP marcadas requiresUserInteraction, e ferramentas de conector sua organização definida como ask a alcançam mesmo quando uma regra de permissão corresponde. Em modo dontAsk essas chamadas são negadas em vez disso, sem invocá-la.
O callback normalmente resolve a solicitação retornando um PermissionResult, que o SDK escreve de volta sobre seu transporte como a control_response. Retorne null apenas quando sua aplicação já enviou a control_response para esta solicitação sobre seu próprio canal, ecoando requestId; o SDK então pula escrever a resposta em seu transporte. Retornar null em qualquer outro caso deixa a chamada de ferramenta bloqueada indefinidamente, porque nenhuma control_response é jamais enviada e prompts de permissão não expiram. A opção requestId e o valor de retorno null requerem Claude Code v2.1.199 ou posterior.

PermissionResult

Resultado de uma verificação de permissão.

ToolConfig

Configuração para comportamento de ferramenta integrada.

McpServerConfig

Configuração para servidores MCP.

McpStdioServerConfig

McpSSEServerConfig

McpHttpServerConfig

McpSdkServerConfigWithInstance

McpClaudeAIProxyServerConfig

SdkPluginConfig

Configuração para carregar plugins no SDK.
Exemplo:
Para informações completas sobre criação e uso de plugins, veja Plugins.

Tipos de Mensagem

SDKMessage

Tipo de união de todas as mensagens possíveis retornadas pela consulta.

SDKAssistantMessage

Mensagem de resposta do assistente.
O campo 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.
Defina 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. No campo de uma mensagem que carrega um bloco tool_result, tool_use_result é o objeto de saída estruturada da ferramenta em vez do texto enviado ao modelo. Sua forma depende da ferramenta nomeada pelo bloco tool_use correspondente, portanto o campo é digitado como unknown; as formas integradas estão listadas em Tipos de Saída de Ferramenta. Para a ferramenta Agent, tool_use_result é AgentOutput. Em um resultado completed, content contém o relatório do subagente sem o ID do agente e o trailer de uso que Claude Code anexa ao texto tool_result, portanto renderize a partir de tool_use_result em vez de analisar esse texto.

SDKUserMessageReplay

Mensagem de usuário repetida com UUID obrigatório.
Um turno de usuário injetado de fora da sessão, aquele cuja origin é peer ou channel, chega ao fluxo como uma repetição, independentemente de ter sido entregue durante um turno ativo ou iniciado um novo turno enquanto a sessão estava ociosa. Antes da v2.1.207, um turno injetado entregue enquanto a sessão estava ociosa não produzia nenhuma mensagem no fluxo e apenas aparecia quando você relê a transcrição.

SDKResultMessage

Mensagem de resultado final.
Vários campos no resultado carregam detalhes de diagnóstico além de subtype:
  • api_error_status: o código de status HTTP do erro de API que encerrou a conversa. Ausente ou null quando o turno terminou sem um erro de API.
  • ttft_ms: tempo até o primeiro token em milissegundos, medido quando a primeira mensagem completa do assistente chega. Presente apenas no braço de sucesso.
  • ttft_stream_ms: tempo em milissegundos até o primeiro evento de fluxo message_start, quando o fluxo de resposta abre. Menor que ttft_ms; a lacuna entre os dois é o tempo gasto transmitindo a primeira mensagem. 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", "background_requested", "blocking_limit", "rapid_refill_breaker", "prompt_too_long", "image_error", "model_error", "api_error", "malformed_tool_use_exhausted", "budget_exhausted", "structured_output_retry_exhausted", "tool_deferred_unavailable", ou "turn_setup_failed".
  • fast_mode_state: um de "on", "off", ou "cooldown".
O campo 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.
O array capabilities nomeia os comportamentos de protocolo que esta CLI implementa, para que você possa fazer detecção de recursos em vez de comparar strings claude_code_version. É um conjunto aberto: ignore valores que você não reconhecer e verifique a capacidade específica cujo comportamento você depende. O campo requer Claude Code v2.1.205 ou posterior e está ausente em CLIs anteriores.

SDKPartialAssistantMessage

Mensagem parcial de transmissão (apenas quando includePartialMessages é true). O campo parent_tool_use_id é sempre null: eventos de fluxo são emitidos apenas para a sessão principal. Para atribuição de subagente, use mensagens completas, que carregam parent_tool_use_id, ou ative forwardSubagentText para receber texto e pensamento de subagente como mensagens completas.

SDKCompactBoundaryMessage

Mensagem indicando um limite de compactação de conversa.

SDKInformationalMessage

Banner de texto genérico emitido pelo loop. Carrega linhas de status sem erro, feedback de hook como a razão de bloqueio de um hook UserPromptSubmit, e saída de comando. Renderize content como texto simples no level fornecido.

SDKWorkerShuttingDownMessage

Emitido no encerramento gracioso do worker para que clientes remotos possam mostrar por que o worker desapareceu em vez de esperar pelo timeout de heartbeat. O reason é uma string curta em snake_case definida pela CLI do host, como "host_exit" ou "remote_control_disabled". Aja sobre isso apenas ao transmitir ao vivo. Uma sessão retomada reproduz instâncias passadas desta mensagem, então ignore-as nesse caso.

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.

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.

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.
O campo prompt_id é um UUID que identifica o prompt do usuário sendo processado atualmente. Ele corresponde ao atributo prompt.id em eventos OpenTelemetry e está ausente até a primeira entrada do usuário. Requer Claude Code v2.1.196 ou posterior.

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)
Lança um novo agente para lidar com tarefas complexas e multi-etapas autonomamente.

AskUserQuestion

Nome da ferramenta: AskUserQuestion
Faz perguntas de esclarecimento ao usuário durante a execução. Veja Lidar com aprovações e entrada do usuário para detalhes de uso.

Bash

Nome da ferramenta: Bash
Executa comandos bash em uma sessão de shell persistente com timeout opcional e execução em background.

Monitor

Nome da ferramenta: Monitor
Executa uma fonte de background e entrega cada evento para Claude para que possa reagir sem polling: command executa um script e emite um evento por linha stdout, e ws abre um WebSocket e emite um evento por frame de texto. Forneça exatamente um de command ou ws. A fonte ws requer Claude Code v2.1.195 ou posterior. Defina persistent: true para watches de comprimento de sessão, como tails de log. Quando Monitor executa um comando, ele segue as mesmas regras de permissão que Bash; um watch de WebSocket solicita aprovação separadamente. Veja a referência da ferramenta Monitor para comportamento e disponibilidade de provedor.

TaskOutput

Nome da ferramenta: TaskOutput
Recupera saída de uma tarefa de background em execução ou concluída.

Edit

Nome da ferramenta: Edit
Realiza substituições exatas de string em arquivos.

Read

Nome da ferramenta: Read
Lê arquivos do sistema de arquivos local, incluindo texto, imagens, PDFs e notebooks Jupyter. Use pages para intervalos de página PDF (por exemplo, "1-5").

Write

Nome da ferramenta: Write
Escreve um arquivo no sistema de arquivos local, sobrescrevendo se existir.

Glob

Nome da ferramenta: Glob
Correspondência rápida de padrão de arquivo que funciona com qualquer tamanho de codebase.

Grep

Nome da ferramenta: Grep
Ferramenta de busca poderosa construída em ripgrep com suporte a regex.

TaskStop

Nome da ferramenta: TaskStop
Para uma tarefa de background em execução ou shell por ID. A partir de v2.1.198, task_id também aceita um colega de equipe de agentes ou um agente de background nomeado por ID de agente ou nome.

NotebookEdit

Nome da ferramenta: NotebookEdit
Edita células em arquivos de notebook Jupyter.

WebFetch

Nome da ferramenta: WebFetch
Busca conteúdo de uma URL e o processa com um modelo de IA.

WebSearch

Nome da ferramenta: WebSearch
Pesquisa a web e retorna resultados formatados.

Workflow

Nome da ferramenta: Workflow
Executa um workflow dinâmico: um script que orquestra muitos subagentes em background e retorna um resultado consolidado. A ferramenta Workflow está disponível no Agent SDK v0.3.149 e posterior. Pelo menos um de script, name ou scriptPath é obrigatório.

TodoWrite

Nome da ferramenta: TodoWrite
Cria e gerencia uma lista de tarefas estruturada para rastrear progresso.
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
Cria uma única tarefa e retorna seu ID atribuído.

TaskUpdate

Nome da ferramenta: TaskUpdate
Corrige uma tarefa por ID. Defina status para "deleted" para removê-la.

TaskGet

Nome da ferramenta: TaskGet
Retorna detalhes completos para uma tarefa, ou null quando o ID não é encontrado.

TaskList

Nome da ferramenta: TaskList
Retorna um snapshot de todas as tarefas na lista atual.

ExitPlanMode

Nome da ferramenta: ExitPlanMode
Sai do modo de planejamento. O campo allowedPrompts está descontinuado e ignorado; Claude Code ainda o aceita para que chamadores existentes e transcrições sejam validados. Antes de v2.1.205, ele solicitava permissões Bash baseadas em prompt para implementar o plano.

ListMcpResources

Nome da ferramenta: ListMcpResourcesTool
Lista recursos MCP disponíveis de servidores conectados.

ReadMcpResource

Nome da ferramenta: ReadMcpResourceTool
Lê um recurso MCP específico de um servidor.

EnterWorktree

Nome da ferramenta: EnterWorktree
Cria e entra em um worktree git temporário para trabalho isolado. Passe path para mudar para um worktree existente em vez de criar um novo. Na primeira entrada, o alvo deve ser um worktree registrado do repositório atual ou, em um workspace multi-repo, de um repositório aninhado dentro dele; de dentro de uma sessão de worktree, deve estar sob .claude/worktrees/ do repositório da sessão. 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)
Retorna o resultado do subagente. Discriminado no campo status: "completed" para tarefas concluídas, "async_launched" para tarefas em background e "remote_launched" para tarefas que o Claude Code despachou para uma sessão em nuvem remota, onde sessionUrl vincula a essa sessão e taskId a identifica. O campo resolvedModel nas variantes completed e async_launched nomeia o modelo em que o subagente realmente foi executado, que pode diferir do input model solicitado quando availableModels ou outra substituição se aplica. Este campo requer Claude Code v2.1.174 ou posterior. Na variante completed, worktreePath é definido quando o subagente foi executado em um worktree git isolado, e worktreeBranch nomeia o branch desse worktree quando o Claude Code o criou. usage.service_tier carrega a string de nível de serviço que a API relatou para as solicitações do subagente. Antes da v2.1.207, o tipo publicado era mais restrito. Ele omitia worktreePath, worktreeBranch, citations, toolStats.frameCount e os campos de uso inference_geo, speed e iterations, e digitava service_tier como "standard" | "priority" | "batch". Os campos que o tipo marca como opcionais podem estar ausentes nos resultados registrados por versões anteriores.

AskUserQuestion

Nome da ferramenta: AskUserQuestion
Retorna as perguntas feitas e as respostas do usuário. 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
Retorna saída de comando com stdout/stderr divididos. Comandos em background incluem um backgroundTaskId.

Monitor

Nome da ferramenta: Monitor
Retorna o ID da tarefa em background para o monitor em execução. Use este ID com TaskStop para cancelar a observação antecipadamente.

Edit

Nome da ferramenta: Edit
Retorna o diff estruturado da operação de edição.

Read

Nome da ferramenta: Read
Retorna conteúdo do arquivo em um formato apropriado ao tipo de arquivo. Discriminado no campo type.

Write

Nome da ferramenta: Write
Retorna o resultado da escrita com informações de diff estruturado.

Glob

Nome da ferramenta: Glob
Retorna caminhos de arquivo correspondentes ao padrão glob, classificados por tempo de modificação.

Grep

Nome da ferramenta: Grep
Retorna resultados de busca. A forma varia por mode: lista de arquivo, conteúdo com correspondências ou contagens de correspondência.

TaskStop

Nome da ferramenta: TaskStop
Retorna confirmação após parar a tarefa em background.

NotebookEdit

Nome da ferramenta: NotebookEdit
Retorna o resultado da edição do notebook com conteúdo de arquivo original e atualizado.

WebFetch

Nome da ferramenta: WebFetch
Retorna o conteúdo buscado com status HTTP e metadados.

WebSearch

Nome da ferramenta: WebSearch
Retorna resultados de busca da web.

Workflow

Nome da ferramenta: Workflow
Retorna imediatamente após a ferramenta aceitar a invocação. O resultado final chega mais tarde como uma conclusão de tarefa. Verifique 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.

TodoWrite

Nome da ferramenta: TodoWrite
Retorna as listas de tarefas anteriores e atualizadas.
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
Retorna a tarefa criada com seu ID atribuído.

TaskUpdate

Nome da ferramenta: TaskUpdate
Retorna o resultado da atualização, incluindo quais campos foram alterados.

TaskGet

Nome da ferramenta: TaskGet
Retorna o registro completo da tarefa, ou null quando o ID não é encontrado.

TaskList

Nome da ferramenta: TaskList
Retorna um snapshot de todas as tarefas na lista atual.

ExitPlanMode

Nome da ferramenta: ExitPlanMode
Retorna o estado do plano após sair do modo de planejamento.

ListMcpResources

Nome da ferramenta: ListMcpResourcesTool
Retorna um array de recursos MCP disponíveis.

ReadMcpResource

Nome da ferramenta: ReadMcpResourceTool
Retorna o conteúdo do recurso MCP solicitado.

EnterWorktree

Nome da ferramenta: EnterWorktree
Retorna informações sobre o worktree git.

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.
O beta context-1m-2025-08-07 foi descontinuado a partir de 30 de abril de 2026. Passar este valor com Claude Sonnet 4.5 ou Sonnet 4 não tem efeito, e requisições que excedem a janela de contexto padrão de 200k-token retornam um erro. Para usar uma janela de contexto de 1M-token, migre para Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7 ou Claude Opus 4.8, que incluem contexto de 1M a preço padrão sem header beta necessário.

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.

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.
Veja 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.
O campo 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. Claude Code entrega esta mensagem, SDKHookProgressMessage, e SDKHookResponseMessage para o fluxo de mensagens imediatamente, incluindo enquanto um hook SessionStart ou Setup ainda está em execução durante a inicialização da sessão. Claude Code v2.1.169 através de v2.1.203 entregou estas mensagens em um lote após um hook SessionStart ou Setup ser concluído; v2.1.204 restaurou a entrega ao vivo.

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().

SDKBackgroundTasksChangedMessage

Emitido sempre que o conjunto de tarefas de background ativas muda: uma tarefa inicia, é concluída, é eliminada, ou um agente em primeiro plano é colocado em background. O array tasks é o conjunto completo ativo. Substitua qualquer conjunto em cache por cada payload em vez de emparelhar eventos task_started e task_notification, para que a próxima mudança de associação corrija qualquer evento que você tenha perdido. A ordenação relativa a esses eventos por tarefa é não especificada, então não correlacione os dois fluxos. Nada é emitido na inicialização. Redefina para um conjunto vazio sempre que o processo CLI da sessão inicia ou reinicia e deixe a próxima mudança de associação repopulá-lo. Requer Claude Code v2.1.203 ou posterior.

SDKThinkingTokensMessage

Emitido enquanto Claude está produzindo um bloco de pensamento, incluindo um redatado, carregando uma estimativa em execução dos tokens de pensamento gerados até agora. estimated_tokens é o total em execução para o bloco de pensamento atual e estimated_tokens_delta é o incremento carregado por este frame. Use-o para exibição de progresso. A contagem final para o loop de agente de nível superior é o usage.output_tokens da mensagem de resultado, que não inclui tokens de subagente; use modelUsage para contabilidade de árvore completa. Requer Claude Code v2.1.153 ou posterior.

SDKFilesPersistedEvent

Emitido quando checkpoints de arquivo são persistidos em disco.

SDKRateLimitEvent

Emitido quando a sessão encontra um limite de taxa.
Quando errorCode é "credits_required", a rejeição é de uma assinatura claude.ai cujo uso incluído está esgotado, e a sessão não pode continuar até que o usuário compre créditos de uso. canUserPurchaseCredits indica se o usuário autenticado pode comprar créditos para a conta, e hasChargeableSavedPaymentMethod indica se um método de pagamento salvo está registrado. Todos os três campos estão ausentes em eventos de limite de taxa que não são rejeições de créditos necessários. Requer Claude Code v2.1.181 ou posterior.

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.

SDKConversationResetMessage

Emitido quando a conversa da sessão é substituída sem encerrar a sessão, como após /clear, na saída do modo de plano, ou quando uma nova conversa inicia. Monte uma transcrição vazia sob new_conversation_id e descarte qualquer título de sessão em cache.
As tipagens publicadas do SDK declaram SDKConversationResetMessage no Claude Code v2.1.203 e posterior. Antes de v2.1.203, SDKMessage referenciava o tipo sem declará-lo, então o estreitamento em type === "conversation_reset" falhou ao verificar o tipo quando skipLibCheck estava desativado.

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.
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. Para uma única chamada de mensagem query(), o SDK lança após gerar esse resultado de erro, então envolva o loop em um bloco try para continuar além dele. Veja Lidar com o resultado para o contrato de erro.Para executar sem sandbox, defina failIfUnavailable: false.

Exemplo de uso

Segurança de socket Unix: A opção allowUnixSockets pode conceder acesso a serviços de sistema poderosos. Por exemplo, permitir /var/run/docker.sock efetivamente concede acesso completo ao sistema host através da API Docker, contornando isolamento de sandbox. Apenas permita sockets Unix que são estritamente necessários e entenda as implicações de segurança de cada um.

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.
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.

Fallback de Permissões para Comandos Sem Sandbox

Quando allowUnsandboxedCommands 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. No exemplo abaixo, isCommandAuthorized representa uma verificação de autorização que você define.
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 definindo dangerouslyDisableSandbox: true na entrada da ferramenta.
Este padrão permite que você:
  • 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
Comandos executando com dangerouslyDisableSandbox: true têm acesso completo ao sistema. Garanta que seu handler canUseTool valide essas solicitações cuidadosamente.Se permissionMode está definido como bypassPermissions e allowUnsandboxedCommands está ativado, o modelo pode autonomamente executar comandos fora do sandbox sem quaisquer prompts de aprovação (uma ask rule explícita ainda força uma). Esta combinação efetivamente permite que o modelo escape do isolamento de sandbox silenciosamente.

Veja também