Skip to main content

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. A maioria das instalações não precisa de uma instalação separada do Claude Code. A versão do SDK acompanha a versão do Claude Code agrupada. SDK v0.3.191 agrupa Claude Code v2.1.191, portanto um recurso nesta página que requer uma versão do Claude Code precisa da versão do SDK com o mesmo número de patch ou posterior. Se seu gerenciador de pacotes pular dependências opcionais, o SDK lança Native CLI binary for <platform>-<arch> not found; defina pathToClaudeCodeExecutable para um binário claude instalado separadamente.Se seu gerenciador de pacotes não aplicar o campo libc do npm, como o Yarn 1.x não faz, você obtém os pacotes de plataforma glibc e musl no Linux, aproximadamente dobrando o tamanho da instalação. No Agent SDK v0.2.141 ou posterior, o SDK ainda inicia a variante correta. Para recuperar o espaço em uma imagem de contêiner, delete o pacote de plataforma que não corresponde ao libc onde seu aplicativo é executado; para um tempo de execução glibc em x64, isso é rm -rf node_modules/@anthropic-ai/claude-agent-sdk-linux-x64-musl. Em uma máquina de desenvolvimento, a exclusão é temporária, pois o Yarn reinstala o pacote na próxima alteração de dependência.

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

Importe a entrada /core ao agrupar o Agent SDK

Se sua aplicação agrupa o Agent SDK junto com suas próprias dependências, importe de @anthropic-ai/claude-agent-sdk/core em vez da raiz do pacote. A entrada /core requer Agent SDK TypeScript v0.3.282 ou posterior, e seus tipos requerem TypeScript 5.0 ou posterior. A entrada /core exporta o mesmo query(), startup(), tool(), createSdkMcpServer() e resolveSettings() como a entrada raiz, junto com as funções que renomeiam, marcam e deletam sessões, AbortError, as constantes de tempo de execução e todos os tipos. Ela não adiciona nomes próprios. Para manter o código que sua aplicação carrega pequeno, /core deixa de fora algumas exportações raiz, incluindo prewarm(), a classe InMemorySessionStore e os auxiliares que listam, leem, bifurcam, importam e resumem sessões. Se você precisar de um deles, use a entrada raiz. A entrada raiz incorpora suas próprias cópias de zod e @modelcontextprotocol/sdk. A entrada /core as importa de seu node_modules nos intervalos que as peerDependencies do Agent SDK declaram, então um pacote que já as inclui não carrega uma segunda cópia. Importe de uma ou da outra entrada /core em um determinado processo, não ambas: elas são pacotes separados, e carregar ambas fornece duas cópias das classes e estado do Agent SDK.

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. Se você ainda não souber o diretório de trabalho da sessão, use prewarm() em vez disso.

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.

prewarm()

Alpha. Inicia um processo Claude Code como sobressalente antes de você saber qual sessão ele servirá, para que você possa vinculá-lo a uma sessão depois com claim(). Use-o em uma aplicação que inicia antes do usuário escolher uma pasta. Requer TypeScript Agent SDK v0.3.282 ou posterior. prewarm() completa o mesmo handshake de inicialização que startup(), com o processo aguardando em options.cwd quando você o define e caso contrário em um diretório temporário privado sob seu diretório de configuração do Claude Code. O diretório de trabalho da sessão, seus hooks SessionStart, seus servidores MCP stdio e seu contexto CLAUDE.md e git aguardam a reivindicação. Um sobressalente mantém aproximadamente 230 a 260 MB de memória enquanto aguarda. Se seu spawnClaudeCodeProcess executa Claude Code em outra máquina ou em um contêiner, defina options.cwd para um diretório que existe lá para o sobressalente aguardar.
options e initializeTimeoutMs significam o mesmo que para startup(), exceto que options.cwd define apenas o diretório em que o sobressalente aguarda. A promise é resolvida com um SpareProcess assim que o processo completa seu handshake de inicialização. prewarm() lança se options define resume, continue ou forkSession, porque um sobressalente não tem sessão ainda. Tudo o que uma reivindicação não pode definir, como mcpServers, hooks, canUseTool, settingSources, systemPrompt e plugins, é fixo pela vida do sobressalente, então mantenha um sobressalente por conjunto distinto dessas opções e pré-aqueça novamente quando elas mudarem.

Exemplo

Pré-aqueça no boot da aplicação, depois reivindique o sobressalente quando o usuário inicia uma sessão:

tool()

Cria uma definição de ferramenta MCP type-safe para uso com servidores MCP do SDK.

Parâmetros

ToolAnnotations

Definido em @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 prevalece.

Parâmetros

tagSession()

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

Parâmetros

forkSession()

Copia a transcrição de uma sessão para uma nova sessão, para que você possa levar a conversa em outra direção enquanto a original permanece inalterada. Para criar uma ramificação a partir de um ponto anterior da conversa, passe upToMessageId.

Parâmetros

Retorna { sessionId }, o UUID da nova sessão. Passe-o como resume para continuar o fork. O fork não inclui os checkpoints de arquivo da sessão original, então você não pode retrocedê-lo para um checkpoint capturado antes do fork. forkSession() lança uma exceção quando:
  • sessionId não é um UUID
  • a sessão não pode ser encontrada ou não tem mensagens
  • upToMessageId não corresponde a nenhuma mensagem na transcrição

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.
O snapshot difere do que uma sessão query() ao vivo aplica:
  • policyHelper: resolveSettings() lê fontes MDM, incluindo plist do macOS e Windows HKLM/HKCU, mas não executa o subprocesso policyHelper configurado pelo administrador.
  • Configurações gerenciadas pelo servidor: resolveSettings() não busca configurações gerenciadas pelo servidor. Passe-as como options.serverManagedSettings para incluí-las.
  • defaultMode: o snapshot retorna permissions.defaultMode como está de cada camada, então pode incluir os valores 'auto' e 'bypassPermissions' de configurações de projeto e local, que uma sessão ao vivo ignora.

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. Em uma máquina onde nenhum arquivo de configurações define cleanupPeriodDays, ambas as linhas impressas mostram undefined para o valor, que é a saída esperada em vez de um erro.

Tipos

Options

Objeto de configuração para a função query().

Lidar com respostas da API lentas ou travadas

O subprocesso da CLI lê várias variáveis de ambiente que controlam timeouts da API e a detecção de travamentos. Passe-as por meio da opção env:
  • API_TIMEOUT_MS: timeout por requisição no cliente da Anthropic, em milissegundos. Padrão 600000. Aplica-se ao loop principal e a todos os subagentes.
  • CLAUDE_CODE_MAX_RETRIES: máximo de novas tentativas da API. Padrão 10, limitado a 15. Cada nova tentativa recebe sua própria janela de API_TIMEOUT_MS. Para execuções autônomas que precisam aguardar interrupções mais longas, defina CLAUDE_CODE_RETRY_WATCHDOG=1: isso tenta novamente de forma indefinida em erros transitórios de capacidade e, no Claude Code v2.1.199 ou posterior, eleva o padrão para outros erros transitórios para 300 e remove o limite desta variável.
  • CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: watchdog de travamento para subagentes. Enquanto o watchdog de stream está ativo, o padrão é CLAUDE_STREAM_IDLE_TIMEOUT_MS mais 5 minutos, o que resulta em 600000, a menos que você aumente essa variável. Com o watchdog de stream desativado, o padrão é 600000. Antes do v2.1.257, o padrão era sempre 600000. O temporizador é reiniciado a cada evento do stream. Em um travamento, o Claude Code aborta o subagente e informa o travamento ao agente pai. Para um subagente em segundo plano, ele também marca a tarefa como falha e anexa qualquer resultado parcial.
  • CLAUDE_ENABLE_STREAM_WATCHDOG com CLAUDE_STREAM_IDLE_TIMEOUT_MS: watchdog de stream que aborta a requisição quando os cabeçalhos chegaram, mas o corpo da resposta para de ser transmitido. O watchdog está ativo por padrão para todos os provedores; defina CLAUDE_ENABLE_STREAM_WATCHDOG=0 para desativá-lo. CLAUDE_STREAM_IDLE_TIMEOUT_MS tem padrão 300000 e é limitado a esse mínimo. Após o aborto, Novas tentativas automáticas explica o que o Claude Code faz, com base em quanto a resposta havia progredido. Enquanto o watchdog aguarda uma resposta que um gateway por trás de ANTHROPIC_BASE_URL mantém aberta com pings de keep-alive, um host que define includePartialMessages continua recebendo eventos de stream ping, então interprete esses frames como sinal de atividade em vez de encerrar a sessão por timeout devido ao silêncio. Antes do v2.1.257, os frames paravam 5 minutos após o último evento real do stream.

Objeto Query

Interface retornada pela função query().

Métodos

applyFlagSettings()

Altera configurações em uma sessão em execução sem reiniciar a query. Use-o quando uma configuração que não tem um setter dedicado precisar mudar no meio da sessão, como restringir permissions depois que o agente lê uma 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ção, e passar model aqui se comporta da mesma forma que setModel(). Apenas algumas chaves têm efeito no meio da sessão:
  • Aplicadas no próximo turno: effortLevel, ultracode, permissions, hooks, skillOverrides, fastMode, agent. Trocar agent também aplica a substituição de modelo e os hooks desse agente no próximo turno. Seu system prompt é aplicado no próximo turno ou, em uma sessão que reutiliza um system prompt registrado, assim que a sessão é compactada.
  • Aplicadas durante o turno atual: model. Se você trocar model enquanto o Claude está trabalhando em um turno, a resposta que o Claude já está gerando termina no modelo antigo, e o restante do turno, começando pela próxima chamada que o Claude Code faz ao modelo, usa o novo. Os subagentes mantêm seu próprio modelo. Antes do v2.1.212, uma troca no meio do turno aguardava o próximo turno.
  • Sem efeito no meio da sessão: as opções de system prompt. Elas são resolvidas uma vez na inicialização, então a sessão em execução mantém o valor original mesmo que a chamada seja bem-sucedida. Para alterá-las, inicie uma nova sessão.
effortLevel aceita o nome de um nível de esforço. Também aceita "ultracode", que solicita esforço xhigh com o ultracode ativado. applyFlagSettings() declara effortLevel sem esse valor, então, em TypeScript, passe { ultracode: true, effortLevel: "xhigh" } para obter o mesmo resultado, ou apenas a chave ultracode para ativar o ultracode no nível de esforço atual da sessão. 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. Antes do v2.1.284, a chave ultracode sozinha também definia o nível como xhigh. Os valores são gravados na camada de configurações de flag, mesclados sobre o que a opção settings inline de query() definiu na inicialização. Este é o mesmo nível que a seção de precedência nesta página chama de opções programáticas. Chamadas sucessivas fazem uma mesclagem superficial das chaves de nível superior. Uma segunda chamada com { permissions: {...} } substitui todo o objeto permissions da chamada anterior em vez de mesclar profundamente com ele. Para limpar uma chave que você definiu com applyFlagSettings(), passe null para essa chave. A maioria das chaves então recorre primeiro a um valor que a opção settings de query() definiu na inicialização e, depois, a fontes de menor precedência. Um model limpo é redefinido para o modelo padrão do Claude Code, mesmo quando um arquivo de configurações define model. Passar undefined não tem efeito, porque a serialização JSON o descarta. Três chaves além de model redefinem o estado da sessão em vez de recorrer a outros valores:
  • effortLevel: null retorna a sessão ao nível de esforço padrão do modelo, não à opção effort de query() nem a um effortLevel de um arquivo de configurações.
  • agent: null executa a thread principal sem agente, a partir do próximo turno, em vez de restaurar a opção agent de query() ou um agent de um arquivo de configurações. Se o agente removido havia aplicado seu próprio modelo, a sessão retorna ao modelo que resolveu na inicialização.
  • ultracode: null desativa o ultracode, assim como false, em vez de restaurar um valor ultracode de um arquivo de configurações. A sessão mantém seu nível de esforço atual, então passe effortLevel na mesma chamada para alterá-lo.
Disponível apenas no modo de entrada por streaming, a mesma restrição de setModel() e setPermissionMode(). O exemplo abaixo troca o modelo ativo no meio da sessão e depois limpa a substituição para que o modelo seja redefinido para o modelo padrão do Claude Code.
applyFlagSettings() é exclusivo do TypeScript. O Python SDK não expõe um método equivalente.

updateSettings()

Grava uma chave permitida em um arquivo de configurações em disco, para que o valor persista em sessões posteriores que carregam essa fonte. Cada fonte aceita uma chave, com um valor de string:
  • "localSettings": aceita outputStyle e o mescla no arquivo de configurações locais do projeto, .claude/settings.local.json. O novo estilo entra em vigor na próxima requisição da sessão.
  • "userSettings": aceita effortLevel e o salva como o nível de esforço padrão para o modelo atual da sessão, em modelSettings no seu arquivo de configurações de usuário. Passar max não grava nada, porque max é válido apenas para a sessão. A sessão em execução mantém seu nível de esforço atual em ambos os casos, então chame applyFlagSettings() quando também quiser alterá-lo. Esta fonte requer o TypeScript SDK v0.3.277 ou posterior, que inclui o Claude Code v2.1.277.
A chamada é rejeitada quando a requisição contém qualquer outra chave, quando a sessão é executada por um transporte remoto e quando as settingSources da sessão excluem a fonte que você nomeia. Não há suporte para excluir uma chave.

toggleMcpServer()

Desabilitar um servidor o desconecta e remove suas ferramentas da sessão. Para servidores que você adicionou no meio da sessão e para servidores em processo, isso depende da sua versão do Claude Code:
  • Um servidor stdio, SSE ou HTTP que você adicionou no meio da sessão com setMcpServers(): remover suas ferramentas requer Claude Code v2.1.285 ou posterior.
  • Um servidor em processo que você criou com createSdkMcpServer(), seja passado em mcpServers ou com setMcpServers(): desconectá-lo e remover suas ferramentas requer Claude Code v2.1.286 ou posterior. Desabilitar um deles também faz falhar suas chamadas de ferramenta ainda em execução, então o Claude recebe imediatamente um resultado de erro para cada uma delas, sem esperar que seu handler retorne.

WarmQuery

Handle retornado por startup(). O subprocesso já foi iniciado e inicializado, então chamar query() neste handle grava 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.

SpareProcess

Alpha. Handle retornado por prewarm(): um processo do Claude Code já iniciado que ainda não está vinculado a uma sessão e pode ser reivindicado uma vez. Requer o TypeScript Agent SDK v0.3.282 ou posterior.

Membros

options.cwd é obrigatório. Uma reivindicação também pode definir additionalDirectories, model, permissionMode, maxThinkingTokens, uma sobreposição de configurações de flag em settings, appendSystemPrompt, title, agents e tokens por sessão em env. O Claude Code pode recusar uma reivindicação, por exemplo, para uma pasta que não existe ou cujas configurações de projeto definem env, agent ou model. Após uma recusa, um prompt que claim() já enviou recebe um resultado de erro cujo texto começa com not_claimed, e a query retornada então lança uma exceção. Envolva o loop da query em um bloco try para continuar após a exceção. Quando claimed é rejeitado com uma mensagem que começa com option_not_applied, a sessão está em execução sem o model ou maxThinkingTokens que você solicitou. Após qualquer outra rejeição, seu prompt não foi executado, então inicie a sessão com query().

SDKControlInitializeResponse

Tipo de retorno de initializationResult(). Contém os dados de inicialização da sessão.
hooks_applied informa se o Claude Code registrou os hooks que a requisição initialize continha. O SDK envia essa requisição uma vez quando a sessão inicia e novamente a cada chamada de reinitialize(). O campo requer o Agent SDK v0.3.238 ou posterior. O Claude Code omite o campo quando a requisição não continha hooks. Quando a requisição continha hooks, o valor depende de a requisição ser o primeiro initialize da sessão e, no caso de um repetido, de como ela chegou à sessão:
  • true: o Claude Code registrou os hooks. O primeiro initialize de uma sessão retorna esse valor. Um initialize repetido enviado pelo stdin da CLI também retorna true. Nesse caso, os hooks da nova requisição substituem os hooks registrados anteriormente.
  • false: o Claude Code ignorou os hooks. Um initialize repetido enviado a uma sessão remota retorna esse valor, para que um segundo cliente que entra em uma sessão não possa substituir os hooks que o primeiro cliente registrou.
Antes do Agent SDK v0.3.238, a resposta nunca continha o campo, e o Claude Code ignorava hooks em todo initialize repetido. O campo sdkMcpServerManifests da requisição e o campo sdk_mcp_manifests_parked da resposta são para os servidores MCP do SDK em processo que você criou com createSdkMcpServer(). Sua aplicação não define nem lê nenhum desses campos. claude_code_version é a versão do Claude Code do processo que executa os turnos da sessão. É o mesmo valor que a mensagem init de SDKSystemMessage contém, então você pode ler a versão da CLI antes do primeiro turno.
  • O campo requer Agent SDK v0.3.296 ou posterior, que inclui o Claude Code v2.1.296.
  • Se o campo for undefined e você definir pathToClaudeCodeExecutable, aponte-o para o Claude Code v2.1.296 ou posterior.
A resposta sempre informa fast_mode_state e, quando algo bloqueia o modo rápido, fast_mode_disabled_reason traz o código do motivo junto, para que você possa explicar o estado bloqueado em vez de deduzir novamente a disponibilidade. Ambos os comportamentos requerem Claude Code v2.1.219 ou posterior. Antes do v2.1.219, a resposta omitia fast_mode_state quando o modo rápido não estava disponível e nunca trazia um motivo. Para os códigos de motivo e seus significados, consulte fast_mode_disabled_reason na mensagem de resultado. O wrapper da resposta de controle para um initialize bem-sucedido também contém um array pending_permission_requests. O campo está no próprio wrapper da resposta, não no payload SDKControlInitializeResponse acima. Cada entrada é uma mensagem control_request completa com o mesmo formato { type: "control_request", request_id, request } que a sessão transmite para requisições de permissão durante a execução. O array lista as requisições de permissão que este processo do Claude Code emitiu e ainda não resolveu. O SDK lê o array para você e despacha cada entrada para seu callback canUseTool, a mesma reentrega que reinitialize() aciona após uma lacuna no transporte. Trate IDs de requisição repetidos de forma idempotente, porque uma entrada pode repetir uma requisição que o callback já recebeu antes de a conexão cair. O array está sempre presente em uma resposta initialize bem-sucedida e fica vazio quando este processo não tem requisições de permissão não resolvidas. Requer Claude Code v2.1.268 ou posterior. Versões anteriores podiam omitir o campo, então, se você mesmo analisa o protocolo de comunicação, trate um campo ausente como uma CLI mais antiga, e não como prova de que nada está pendente.

SDKControlInterruptResponse

O recibo de interrupção: o valor com que interrupt() é resolvido 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 um payload de sucesso vazio, então interrupt() é resolvido como undefined.
still_queued lista os UUIDs das mensagens de usuário que estavam pendentes quando a interrupção chegou: mensagens ainda na fila, além de quaisquer mensagens que o Claude Code já havia retirado da fila para o próximo turno. Depois que o primeiro turno da sessão começou, o Claude Code processa as mensagens listadas após a interrupção, a menos que você as cancele antes, e pode mesclar várias em um único turno. Se você interromper antes do início do primeiro turno, o Claude Code aborta esse turno assim que ele começa, e as mensagens listadas nesse turno não recebem resposta. Use o recibo para decidir se deve reenviar algo. Uma mensagem listada que você não cancela entra na conversa, recebendo resposta ou não, então reenviá-la a entrega ao Claude duas vezes. Interprete a lista com estas ressalvas:
  • Apenas mensagens enfileiradas com um UUID aparecem. Um array vazio não significa que nada mais será executado.
  • Apenas mensagens da thread principal são listadas. Mensagens endereçadas a um subagente estão fora do escopo.
  • A lista pode incluir UUIDs que seu cliente nunca enviou, como gatilhos de tarefas agendadas. Ignore UUIDs que você não reconhece em vez de tratá-los como erro.
Um cliente que controla o protocolo de controle da CLI diretamente, em vez de usar interrupt(), pode definir cancel_queued: true na requisição de controle interrupt. O Claude Code v2.1.219 e posteriores anunciam o suporte com a capacidade interrupt_cancel_queued_v1 em SDKSystemMessage.capabilities; CLIs mais antigas ignoram o campo e deixam as mensagens enfileiradas serem executadas normalmente. Essa interrupção também cancela todas as mensagens que, de outra forma, seriam listadas em still_queued: o recibo as lista em cancelled, still_queued fica vazio e nenhuma delas é executada. A lista cancelled tem as mesmas ressalvas que still_queued. O método interrupt() nunca envia cancel_queued, então os recibos com que ele é resolvido não contêm cancelled. O recibo é um instantâneo capturado no momento em que a interrupção é processada e, em uma interrupção limpa, chega antes do SDKResultMessage do turno interrompido. Leia o recibo em vez de inspecionar a fila após esse resultado: o loop inicia imediatamente o próximo turno enfileirado, então a fila que você inspeciona após o resultado já mudou.

SDKControlGetContextUsageResponse

Tipo de retorno de getContextUsage(). Com o detail padrão, este é o mesmo payload que o Claude Code renderiza para o comando /context em uma sessão interativa, então, além das contagens de tokens, ele contém campos de exibição como color e gridRows, que o Claude Code usa para desenhar a grade de uso do /context. O argumento opcional detail do método escolhe como o Claude Code conta cada categoria. O argumento detail requer o Agent SDK v0.3.257 ou posterior.
  • 'full': o padrão. O Claude Code conta cada categoria com requisições de API de contagem de tokens. Essas requisições não aparecem no stream de mensagens, então o acompanhamento de custos que lê o stream não as verá. Na Anthropic API, a contagem de tokens não é cobrada.
  • 'summary': passe { detail: 'summary' } para obter uma resposta baseada no uso da última resposta e em estimativas locais. Nenhuma requisição de contagem de tokens é enviada, e os números por categoria são aproximados.
Quando você envia /context como prompt em vez de chamar o método, o Claude Code anexa um payload SDKContextUsage ao campo context_usage da mensagem do assistente que entrega o resultado. Esse campo requer o Agent SDK v0.3.232 ou posterior.
Leia a atribuição de tokens nos campos de coleção:
  • categories contém os totais por categoria. O kind de cada entrada classifica a linha com os mesmos valores de SDKContextUsageCategory. Classifique as linhas por ele, e não pelo name de exibição. O campo requer o Agent SDK v0.3.268 ou posterior.
  • mcpTools e agents atribuem tokens a ferramentas MCP e subagentes individuais.
  • memoryFiles lista cada arquivo de memória carregado com seu custo.
  • skills.skillFrontmatter atribui os tokens da listagem de skills a cada skill incluída. As contagens por skill medem a entrada de cada skill na listagem conforme o Claude Code realmente a envia, o que pode ser mais curto que o frontmatter completo da skill. Compare skills.totalSkills com skills.includedSkills para ver se todas as skills descobertas entraram na listagem.
totalTokens é o uso de contexto atual da sessão, e maxTokens é a janela em relação à qual esse uso é medido. Essa janela é a janela de contexto do modelo, ou a janela menor de compactação automática, quando aplicável. rawMaxTokens contém o mesmo valor que maxTokens, e percentage é totalTokens como uma porcentagem arredondada dessa janela. apiUsage contém o uso da resposta mais recente da API, não um total acumulado da sessão. O Claude Code deixa os diagnósticos opcionais deferredBuiltinTools, systemTools e systemPromptSections sem definição, então espere que estejam ausentes, mesmo que o tipo os declare.

SDKControlReadFileResponse

Tipo de retorno de readFile().
contents contém o texto do arquivo, ou dados em base64 quando você solicitou encoding: 'base64'; nesse caso, o campo encoding da resposta é definido como 'base64'. absPath é o caminho absoluto resolvido. truncated é definido quando o arquivo era maior que o limite maxBytes e o conteúdo foi cortado nesse limite.

O que readFile() pode ler

readFile() fornece um conjunto mais restrito de arquivos do que a ferramenta Read:
  • Um arquivo regular dentro de um dos diretórios de trabalho da sessão, como cwd e additionalDirectories
  • Alguns dos próprios arquivos do Claude Code para a sessão, como resultados de ferramentas
Regras de negação e de confirmação de Read ainda bloqueiam um caminho correspondente, e uma regra ampla de permissão de Read não abre o restante do sistema de arquivos para readFile(). Para qualquer outra coisa, a chamada é resolvida com null.

SDKControlReloadPluginsResponse

Tipo de retorno de reloadPlugins().
Os campos de coleção descrevem a sessão após a chamada:
  • commands, agents e mcpServers: os comandos, subagentes e o status dos servidores MCP da sessão, nos mesmos formatos que supportedCommands(), supportedAgents() e mcpServerStatus() retornam. supportedAgents() continua retornando a lista capturada na inicialização, então leia agents aqui para obter o conjunto após um recarregamento
  • plugins: cada plugin carregado com seu name e o path de instalação. version repete o que o manifesto do plugin declara e é controlado pelo autor do plugin, então valide-o antes de confiar nele. É omitido quando o manifesto não declara nenhuma versão
  • error_count: o número de erros ao carregar plugins
Passe { holdOnCacheImpact: true } para reloadPlugins() para reter um recarregamento que invalidaria o cache de prompt da conversa em vez de aplicá-lo. O Claude Code executa a verificação que o comando interativo /reload-plugins faz antes de avisar sobre o custo do cache. A opção requer o Agent SDK v0.3.268 ou posterior. Um executável do Claude Code anterior ao v2.1.268, como um para o qual você aponta pathToClaudeCodeExecutable, ignora a opção e aplica o recarregamento. Quando você passa a opção, leia held para saber o que aconteceu:
  • true: o recarregamento não foi aplicado, e os campos de coleção descrevem a sessão como ela ainda está. cache_impact informa o que a aplicação mudaria. Para aplicar mesmo assim, chame reloadPlugins() novamente sem a opção.
  • false: a verificação não encontrou impacto no cache, e o recarregamento foi aplicado.
  • Ausente: você não passou a opção, ou o executável do Claude Code é anterior ao v2.1.268 e aplicou o recarregamento.
cache_impact está presente apenas junto com held: true. mcp_servers_added e mcp_servers_removed nomeiam os servidores MCP de plugins que o recarregamento registraria ou removeria, como nomes com escopo plugin:<plugin>:<server>. Os nomes são definidos pelos autores dos plugins, então valide-os antes de exibi-los. lsp_tool_change informa se a aplicação adicionaria ou removeria a ferramenta LSP, ou null quando não faria nenhuma das duas coisas. As formas may- significam que a verificação não conseguiu ver completamente o conjunto de plugins pendente.

SDKControlReloadSkillsResponse

Tipo de retorno de reloadSkills().
skills lista as skills disponíveis após o recarregamento, no mesmo formato SlashCommand que supportedCommands() retorna.

SDKControlReloadOutputStylesResponse

Tipo de retorno de reloadOutputStyles().
available_output_styles lista os nomes dos estilos de saída integrados e personalizados disponíveis após o recarregamento.

SDKControlMcpReadResourceResponse

Tipo de retorno de readMcpResource(), contendo o resultado de resources/read do servidor MCP. Requer o TypeScript Agent SDK v0.3.280 ou posterior.
Passe para readMcpResource() o nome do servidor conforme mcpServerStatus() o informa e um URI ui://, como o ui.resourceUri que uma ferramenta declara em seu _meta. A chamada é rejeitada para qualquer outro esquema de URI, para um servidor MCP do SDK que sua própria aplicação hospeda e para um servidor que não está conectado. Está disponível quando as capabilities da mensagem init incluem mcp_read_resource_v1. Cada entrada de contents é um item de conteúdo conforme o servidor o enviou, sem nenhuma chave _meta sob o prefixo com.anthropic/, que é reservado para o Claude Code. blob contém dados em base64 para um item binário, e _meta é o próprio _meta do item, onde um servidor do MCP Apps coloca o ui.csp e as ui.permissions do recurso. O conteúdo é HTML de terceiros não confiável, então renderize-o em um sandbox.

AgentDefinition

Configuração de um subagente definido programaticamente.

AgentMcpServerSpec

Especifica os servidores MCP disponíveis para um subagente. Pode ser um nome de servidor (string que referencia um servidor da configuração mcpServers do pai) ou um registro de configuração de servidor inline que mapeia nomes de servidores para configurações.
Onde McpServerConfigForProcessTransport é McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.

SettingSource

Controla de quais fontes de configuração baseadas no sistema de arquivos o SDK carrega as 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: user, project e local. Consulte O que settingSources não controla para ver as 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 apenas fontes de configuração específicas:
Para carregar as instruções de projeto do CLAUDE.md, inclua "project" em settingSources. Consulte Modificar system prompts para saber como o carregamento do CLAUDE.md interage com as opções de system prompt.

Precedência das configurações

Quando várias fontes são carregadas, as configurações são mescladas com esta precedência (da mais alta para a mais baixa):
  1. Configurações locais (.claude/settings.local.json)
  2. Configurações do projeto (.claude/settings.json)
  3. Configurações do usuário (~/.claude/settings.json)
Opções programáticas como agents, allowedTools e settings sobrescrevem as configurações de usuário, projeto e locais do sistema de arquivos. As configurações de política gerenciada têm precedência sobre as opções programáticas.

PermissionMode

CanUseTool

Tipo de função de permissão personalizada para controlar o uso de ferramentas. A função é a substituta no SDK para o prompt de permissão interativo: ela é invocada somente quando o fluxo de avaliação de permissões resulta em um prompt. Chamadas de ferramenta já aprovadas por uma entrada de allowedTools, por uma regra de permissão nas configurações ou pelo modo de permissão, como acceptEdits ou bypassPermissions, nunca a invocam. Para controlar todas as chamadas de ferramenta, use um hook PreToolUse. Uma regra de permissão não pré-aprova as ações que nenhum modo aprova automaticamente; consulte Como as permissões são avaliadas para saber quais delas chegam ao callback e o que acontece nos modos dontAsk e auto.
O callback normalmente resolve a requisição retornando um PermissionResult, que o SDK grava de volta pelo seu transporte como a control_response. Retorne null somente quando sua aplicação já tiver enviado a control_response para esta requisição pelo seu próprio canal, repetindo o requestId; o SDK então deixa de gravar a resposta no seu transporte. Retornar null em qualquer outro caso deixa a chamada de ferramenta bloqueada indefinidamente, porque nenhuma control_response é enviada e os prompts de permissão não atingem timeout. 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 do comportamento das ferramentas integradas.

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 como criar e usar plugins, consulte 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 é um BetaMessage do SDK Anthropic. Inclui campos como id, content, model, stop_reason e usage. SDKAssistantMessageError é um de: 'authentication_failed', 'oauth_org_not_allowed', 'account_on_hold', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens', 'cloud_credential_error' ou 'unknown'. Quatro desses valores significam mais do que seus nomes indicam:
  • 'model_not_found': o modelo selecionado não existe ou não está disponível para sua conta ou implantação
  • 'overloaded': a API retornou um 529 porque o servidor está em capacidade máxima, em contraste com 'rate_limit', que é um 429 contra sua cota
  • 'account_on_hold': sua conta está em espera
  • 'cloud_credential_error': Claude Code não conseguiu obter credenciais AWS ou Google Cloud utilizáveis na máquina em que é executado, portanto nenhuma requisição chegou ao provedor de nuvem. A causa usual é um login na nuvem que expirou ou nunca foi concluído nessa máquina, embora um serviço de credenciais brevemente inacessível reporte o mesmo valor. Consulte Não foi possível carregar credenciais AWS ou Google Cloud. Requer TypeScript Agent SDK v0.3.267 ou posterior, que agrupa Claude Code v2.1.267
aborted é true quando uma interrupção ou cancelamento truncou a mensagem do assistente antes da conclusão do stream: a mensagem não tem stop_reason e o conteúdo pode terminar no meio de uma palavra. O campo está ausente em mensagens normalmente concluídas. Requer Agent SDK v0.3.214 ou posterior. agent_id identifica o subagente que produziu a mensagem e está ausente em mensagens da thread principal. O valor é igual ao task_id no task_started desse subagente e em outros eventos de tarefa, e permanece inalterado quando o subagente é retomado. O campo requer o Agent SDK v0.3.292 ou posterior. Associe as mensagens de um subagente aos seus eventos de tarefa pelo agent_id, em vez de parear o parent_tool_use_id de uma mensagem com o tool_use_id de um evento de tarefa. Quando uma chamada de ferramenta retoma o subagente, os eventos de tarefa carregam o tool_use_id dessa chamada, enquanto as mensagens mantêm o parent_tool_use_id da chamada de ferramenta que iniciou o subagente pela primeira vez, de modo que os dois deixam de corresponder. O Claude Code define user_message_uuid e user_message_uuids na primeira mensagem do assistente do turno, nas condições descritas em user_message_uuid. Quando o turno continua um que uma reinicialização interrompeu, as mensagens do assistente que carregam esses campos também carregam resume_reason. timestamp é a hora ISO 8601 quando o conteúdo da mensagem terminou de ser gerado no processo que o produziu. O valor vem do relógio dessa máquina, portanto use-o apenas para exibição e não ordene mensagens por ele. Um turno de API pode produzir várias mensagens do assistente que compartilham um message.id, cada uma com seu próprio timestamp. Quando o campo está ausente, recorra à hora em que você recebeu a mensagem. context_usage é uma cópia estruturada do relatório /context, tipada como SDKContextUsage, e requer Agent SDK v0.3.232 ou posterior. Quando você envia /context como um prompt, Claude Code entrega o relatório como uma mensagem do assistente cujo message.content contém a tabela markdown, e anexa context_usage à mesma mensagem. Claude Code não define o campo em nenhuma outra mensagem do assistente, e versões anteriores entregam a tabela /context sem ele, portanto leia o detalhamento do campo quando estiver presente e recorra ao texto markdown quando não estiver. usage_report é uma cópia estruturada do relatório de /usage, tipada como SDKUsageReport, e requer o Agent SDK v0.3.273 ou posterior. Quando você envia /usage como prompt, o Claude Code entrega o relatório como uma mensagem do assistente cujo message.content contém o texto. Ele anexa usage_report a essa mesma mensagem somente quando a sessão atende a todas estas condições:
  • A sessão se autentica com uma credencial do claude.ai
  • A credencial mostra um tipo de plano conhecido ou carrega o escopo user:profile
  • A conta não está em faturamento baseado em uso
Um token de claude setup-token passado como CLAUDE_CODE_OAUTH_TOKEN não se qualifica por padrão, porque carrega apenas o escopo user:inference. Outras sessões, como sessões com chave de API, entregam o texto sem o campo, assim como versões anteriores. Leia o relatório a partir do campo quando ele estiver presente e use o texto como alternativa quando não estiver.

SDKUserMessage

Mensagem de entrada do usuário.
Defina pasted_content para enviar conteúdo que o usuário colou em sua interface de prompt em vez de digitar, uma entrada por colagem, cada uma uma string ou um array de blocos de conteúdo. Claude Code anexa o texto de cada entrada após o texto digitado, em ordem, e pode envolver cada colagem em tags <pasted_content>. Blocos diferentes de texto são ignorados, portanto envie imagens e documentos em message.content. Requer Agent SDK v0.3.277 ou posterior. Defina inline_pastes para informar ao Claude Code quais partes de message.content o usuário colou em vez de digitar, uma string por colagem. O texto do prompt permanece onde o usuário o colocou. O Claude Code pode envolver cada colagem listada em tags <pasted_content> no local em que ela está, para que o Claude consiga distinguir o material colado das palavras do próprio usuário. Apenas colagens no último bloco de texto do prompt são envolvidas. Requer o TypeScript Agent SDK v0.3.280 ou posterior. Cada campo de colagem tem um limite de tamanho:
  • pasted_content: se as entradas mais os blocos de conteúdo dentro delas somarem mais de 1.000, o Claude Code ignora o campo inteiro.
  • inline_pastes: o Claude Code usa as primeiras 100 entradas que não estão em branco e ignora o restante.
Defina shouldQuery, client_composed ou priority para alterar como o Claude Code trata uma mensagem que você envia:
  • shouldQuery: defina como false para anexar a mensagem à transcrição sem disparar um turno do assistente. A mensagem é mantida e mesclada na próxima mensagem do usuário que dispara 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.
  • client_composed: defina como true para que Claude Code entregue o texto da mensagem conforme escrito. Claude Code então não expande menções @path ou @server:resource, e não executa texto que começa com / como um comando. Enquanto a opção verbatimPrompts está ativada, o SDK define o campo em cada mensagem. Requer TypeScript Agent SDK v0.3.280 ou posterior e Claude Code v2.1.248 ou posterior.
  • priority: controla quando uma mensagem que você envia durante um turno em execução chega ao Claude:
    • 'next', ou nenhum campo priority: o Claude lê a mensagem no mesmo turno, assim que as chamadas de ferramenta que está executando terminarem. Se o turno terminar antes, a mensagem inicia o próximo turno.
    • 'later': o Claude Code retém a mensagem até o fim do turno e a envia como um novo turno.
    • 'now' com origin: { kind: "human" }: no Claude Code v2.1.286 ou posterior, o trabalho que pode continuar em segundo plano é movido para lá, e o Claude lê a mensagem no mesmo turno. O trabalho que pode ser movido inclui comandos de shell, subagentes e chamadas de ferramentas MCP. Na v2.1.287 ou posterior, também inclui chamadas de WebFetch e WebSearch. Quando o Claude está apenas escrevendo uma resposta, ou o trabalho que está executando não pode ser movido, o Claude Code interrompe o turno e o Claude lê a mensagem em seguida.
    • 'now' sem essa origem: o Claude Code interrompe o turno e o Claude lê a mensagem em seguida.
Esta mensagem, enviada enquanto um turno está em execução, pede ao Claude que mude de rumo sem perder um comando de shell que ainda está em execução:
Uma mensagem de usuário que um subagente produz, como o tool_result de uma de suas próprias chamadas de ferramenta, carrega agent_id. Consulte SDKAssistantMessage, que define o campo e seu requisito de versão. Em uma mensagem que carrega um bloco tool_result, tool_use_result é o objeto de saída estruturada da ferramenta, e não o texto enviado ao modelo. Seu formato depende da ferramenta nomeada pelo bloco tool_use correspondente, por isso o campo é tipado como unknown; os formatos integrados estão listados em Tipos de saída de ferramentas. Estes resultados exigem tratamento além do formato listado:
  • A ferramenta Agent: tool_use_result é AgentOutput. Renderize a partir dele em vez de analisar o texto de tool_result. O content de um resultado completed contém o relatório do subagente ou, no caso de um subagente cujo relatório passa por uma chamada de ferramenta SubagentHandback, uma breve nota sobre essa devolução no lugar do relatório. No modo auto no Claude Code v2.1.271 ou posterior, todo subagente que produz um resultado completed reporta dessa forma, a menos que seja um fork, e o Claude recebe o relatório como uma mensagem separada do subagente.
  • Uma chamada de WebFetch ou WebSearch que o Claude Code moveu para segundo plano para entregar uma mensagem 'now': a mensagem do usuário que carrega o tool_result dessa chamada tem tool_use_result definido como { detachedToolCall: true }. A chamada ainda está em execução, e o Claude recebe seu resultado quando ela terminar. Nenhum segundo tool_result para esse tool_use_id virá a seguir; portanto, se sua aplicação desenha uma linha para cada chamada de ferramenta, marque essa linha como movida para segundo plano quando essa mensagem chegar. Requer o Claude Code v2.1.287 ou posterior.
  • Uma ferramenta MCP cujo resultado contém blocos resource_link: tool_use_result é um objeto com um array resourceLinks de entradas SDKMcpResourceLink. O Claude recebe cada link como uma linha de texto no bloco tool_result, então leia resourceLinks para renderizar os arquivos que o servidor retornou em vez de analisar esse texto. O Claude Code omite resourceLinks quando o resultado não tem links e em resultados de subagentes, mantém no máximo 50 links por resultado e para de adicionar links quando o array atinge 64 KiB de JSON serializado. resourceLinks requer o Agent SDK v0.3.257 ou posterior.
  • Uma ferramenta MCP que retorna structuredContent: tool_use_result é um objeto cujo membro structuredContent contém o que o servidor enviou e cujo membro content contém o valor McpOutput. Resultados de subagentes não carregam structuredContent.
  • Uma ferramenta MCP cujo structuredContent serializa para mais de 1.048.576 caracteres de JSON: o Claude Code deixa structuredContent fora de tool_use_result e define structuredContentOmitted: true no lugar dele, para que seu aplicativo possa distinguir um objeto descartado de uma ferramenta que não enviou nenhum. Os outros membros, como content e resourceLinks, permanecem, e o que Claude recebe não muda. O Claude Code v2.1.287 ou posterior aplica esse limite. Dois tipos de ferramenta diferem:
    • Ferramentas de servidores SDK em processo estão isentas e entregam o objeto inteiro.
    • Uma ferramenta cuja entrada tools/list declara um recurso ui:// do MCP Apps tem um limite de 8.388.608 caracteres no Claude Code v2.1.295 ou posterior, e versões anteriores à v2.1.295 a isentam.

SDKUserMessageReplay

Mensagem do usuário repetida com UUID obrigatório.
Um turno do usuário injetado de fora da sessão, um cujo tipo de origin é peer ou channel, chega ao stream 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 de v2.1.207, um turno injetado entregue enquanto a sessão estava ociosa não produzia nenhuma mensagem no stream e apenas aparecia quando você relia 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 stream message_start, quando o stream de resposta abre. Menor que ttft_ms; a diferença entre os dois é o tempo gasto transmitindo a primeira mensagem. Presente apenas no braço de sucesso.
  • user_message_uuid: o uuid da mensagem que você enviou que este turno respondeu. Consulte user_message_uuid para saber quais resultados o carregam.
  • user_message_uuids: os uuids de cada mensagem que você enviou que Claude Code respondeu neste turno. Consulte user_message_uuids.
  • resume_reason: por que este turno continua um que uma reinicialização interrompeu. Presente em ambos os ramos. Consulte resume_reason.
  • local_command: o nome do comando que o turno despachou, no resultado de sucesso de um turno que um comando completou sem entrar no loop do agente, como /compact. O nome é convertido para letras minúsculas e underscores, portanto /reload-plugins relata reload_plugins. Um comando que um servidor MCP fornece, e o /mcp integrado, relatam mcp. Um comando que você mesmo definiu relata custom. Os argumentos nunca são incluídos. Ausente em cada turno que entrou no loop do agente e em envios que não executaram nenhum comando. Requer Agent SDK v0.3.268 ou posterior.
  • request_sent_wall_ms: milissegundos de época em que Claude Code despachou a requisição de API, para junções com timestamps do lado do servidor. Presente apenas junto com user_message_uuid, em um resultado de sucesso com is_error false cujo turno enviou uma requisição de API.
  • first_content_frame_ms: tempo em milissegundos até o primeiro evento de stream content_block_start ou content_block_delta, contando blocos de pensamento como conteúdo. Presente apenas no braço de sucesso, quando is_error é false. Requer Agent SDK v0.3.260 ou posterior.
  • first_stream_post_ms, first_stream_post_ack_ms, first_stream_post_wall_ms: cronometragens para fazer upload do primeiro evento de stream do turno. Claude Code os registra apenas em sessões que transmite para claude.ai, como sessões na nuvem, e os resultados que query() produz não os carregam. Requer Agent SDK v0.3.260 ou posterior.
  • usage: apenas loop do agente principal. Exclui chamadas de subagente e de modelo auxiliar, e é por turno em sessões de entrada por streaming. Prefira modelUsage para contabilidade de token/custo.
  • modelUsage: totais por modelo para cada chamada de modelo feita através do pipeline de consulta durante esta chamada query(), incluindo o loop principal, subagentes e chamadas internas como compactação e agentes Workflow. Chamadas auxiliares fora desse pipeline, como o classificador de permissão e requisições de contagem de tokens, são excluídas. Uma chamada que retoma uma sessão também conta os totais por modelo restaurados das chamadas anteriores da sessão. Em sessões de entrada por streaming, os totais são cumulativos entre turnos, portanto leia o resultado mais recente em vez de somar entre resultados. Consulte Rastrear custos no modo de entrada por streaming para redefinições e Recuperar totais após uma falha de sessão para resultados zerados.
  • total_cost_usd: custo estimado cumulativo em USD, cobrindo as mesmas chamadas que modelUsage e redefinido nos mesmos pontos. Uma chamada que retoma uma sessão também conta os totais restaurados das chamadas anteriores da sessão. É uma estimativa, não uma declaração de faturamento. Consulte Rastrear custo e uso para ressalvas de precisão.
  • queued_turn_count: o número de mensagens que você enviou com origin: { kind: "human" } que ainda estão aguardando quando Claude Code produziu o resultado. Consulte queued_turn_count para saber o que 0 e um campo ausente indicam.
  • result_index: onde este resultado cai na ordem de entrega da execução, contando a partir de 0 em cada resultado que o processo escreve. Presente em ambos os braços. Um resultado cuja escrita falha ainda consome seu número, portanto uma lacuna na sequência significa que um resultado foi perdido. Requer Agent SDK v0.3.268 ou posterior.
  • startup_failure_reason: por que Claude Code se recusou a iniciar, no resultado error_during_execution que escreve antes de sair em uma falha de inicialização conhecida. Consulte startup_failure_reason para os valores e quais falhas o carregam. Requer Agent SDK v0.3.274 ou posterior.
  • 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".
  • fast_mode_disabled_reason: por que o modo rápido não está disponível agora. Ausente quando nada bloqueia o modo rápido, embora uma requisição ainda possa ser executada em velocidade padrão. Durante o resfriamento após um rate limit do modo rápido, Claude Code relata fast_mode_state: "cooldown" sem código de motivo e reativa o modo rápido quando o resfriamento expira. Requer Claude Code v2.1.219 ou posterior.
Use o código de motivo para explicar por que o modo rápido está desativado em sua própria interface em vez de rederivar a disponibilidade. Cada código nomeia a verificação que bloqueou o modo rápido: O mesmo par de campos aparece em SDKSystemMessage e em SDKControlInitializeResponse, portanto você pode ler o estado do modo rápido antes do primeiro turno. O campo origin encaminha o SDKMessageOrigin da mensagem do usuário que disparou este resultado. Quando o SDK injeta um turno de acompanhamento sintético, como para uma tarefa em segundo plano concluída, o SDKResultMessage resultante carrega origin: { kind: "task-notification" }. Rotinas cujo gatilho disparou e mensagens verificadas pelo servidor de suas outras sessões chegam com este tipo também, cada uma com o subkind descrito em Subtipos de notificação de tarefa. Verifique kind para distinguir resultados que respondem ao seu prompt de acompanhamentos injetados antes de roteá-los ou suprimi-los. Se sua aplicação declara execuções agendadas, seus resultados carregam kind: "task-notification" também, portanto não suprima com base apenas em kind. Quando várias conclusões de tarefas em segundo plano são enfileiradas juntas, Claude Code pode respondê-las em um turno em vez de um turno para cada. Cada conclusão ainda produz seu próprio resultado com esta origem. Todas exceto a última das conclusões que Claude Code responde juntas produzem resultados vazios com num_turns: 0, em ordem, e o resultado da última carrega o turno que responde a todas elas. 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 requisição em sua própria interface, depois retome com o mesmo session_id para continuar. Consulte Adiar uma chamada de ferramenta para depois para o ciclo completo.

user_message_uuid

O uuid da SDKUserMessage que o turno está respondendo, ecoado para que você possa corresponder a resposta de Claude Code à mensagem que você enviou. Claude Code ecoa um uuid apenas se você definir um na mensagem. O campo é opcional em SDKUserMessage, e um prompt de string passado para query() não carrega nenhum. Qual de suas mensagens um turno responde depende de como o turno começou:
  • Uma mensagem regular que você enviou, ou seja, uma sem isSynthetic: true: o turno responde a essa mensagem durante toda a sua execução. Quando você envia várias mensagens próximas, Claude Code pode mesclá-las em um turno, e o campo então carrega apenas o uuid da última mensagem. Para corresponder a resposta a qualquer uma das mensagens mescladas, use user_message_uuids.
  • Uma mensagem que você enviou com isSynthetic: true: o turno responde a essa mensagem no início. Se Claude Code captar uma mensagem regular sua entre chamadas de ferramenta, o turno responde à mensagem captada a partir de então. Ecoar o uuid de uma mensagem sintética requer Agent SDK v0.3.265 ou posterior; versões anteriores não ecoam nada em turnos sintéticos.
  • O prompt que o Claude Code gera para continuar um turno interrompido sob CLAUDE_CODE_RESUME_INTERRUPTED_TURN: quando o último prompt do turno interrompido é uma mensagem regular que você enviou, seja ela a que abriu o turno ou uma que o Claude Code captou durante o turno, o turno continuado responde a essa mensagem inicialmente. resume_reason distingue os frames do turno continuado dos da tentativa interrompida. Quando o último prompt não é uma mensagem regular sua, o turno continuado inicialmente não responde a nenhuma mensagem sua. Se o Claude Code captar uma mensagem regular sua entre chamadas de ferramenta, o turno passa a responder à mensagem captada a partir de então. Ecoar o prompt do turno interrompido requer o Agent SDK v0.3.268 ou posterior.
  • Qualquer outro prompt que Claude Code gerou por conta própria: o turno não responde a nenhuma mensagem sua no início e seus quadros não carregam nenhum eco. Se Claude Code captar uma mensagem regular sua entre chamadas de ferramenta, o turno responde a essa mensagem a partir de então. O eco de captação requer Agent SDK v0.3.265 ou posterior; versões anteriores não ecoam nada nesses turnos.
Claude Code ecoa o uuid da mensagem respondida em três tipos de quadro:
  • O resultado: cada resultado de um turno que respondeu a uma mensagem que você enviou. Todo resultado desse tipo o carrega em Agent SDK v0.3.265 ou posterior. Antes de v0.3.265, o resultado de sucesso de um turno que uma mensagem regular iniciou não o tinha quando o turno não enviou nenhuma requisição de API ou terminou com uma chamada de ferramenta adiada. Antes de v0.3.246, resultados de erro também não o tinham, e antes de v0.3.216 nenhum resultado o tinha.
  • A primeira resposta do turno: a primeira mensagem do assistente e, com includePartialMessages, também o primeiro evento de stream cujo event.type não é ping, para que você possa vincular a resposta antes de o resultado chegar. O eco de primeira resposta requer Agent SDK v0.3.246 ou posterior. Antes de v0.3.269, com includePartialMessages, Claude Code o definia apenas nesse primeiro evento de stream, ou na primeira mensagem do assistente quando o turno não transmitia nada. Quando a mensagem que o turno está respondendo muda no meio do turno, a primeira resposta após a mudança carrega o campo também, em Agent SDK v0.3.265 ou posterior; versões anteriores o definem em um quadro de resposta por turno.
  • Cada quadro thinking_tokens do turno: para que você possa atribuir o progresso do pensamento à mensagem que você enviou sem esperar pela primeira resposta do turno. Requer Agent SDK v0.3.260 ou posterior.
Claude Code omite o campo nestes casos:
  • Quadros de resposta diferentes daquelas primeiras respostas
  • Quadros de subagente
  • Turnos que não respondem a nenhuma mensagem sua, ou respondem a uma mensagem que você enviou sem um uuid
  • Resultados que não respondem a nenhuma mensagem que você enviou, como o resultado zerado após uma falha de processo de trabalho

user_message_uuids

Os uuids de cada mensagem que você enviou que Claude Code respondeu neste turno. Quando você envia várias mensagens próximas, Claude Code pode mesclá-las em um turno, e user_message_uuid então nomeia apenas a última delas. Para corresponder a resposta a qualquer uma das mensagens mescladas, procure o uuid dessa mensagem em qualquer lugar desta lista. Requer Agent SDK v0.3.259 ou posterior. Claude Code define a lista junto com user_message_uuid em cada quadro de resposta que carrega esse campo e no resultado. Para o conjunto completo de quadros do turno que ecoam o uuid da mensagem respondida, e a versão que cada um requer, consulte user_message_uuid. A lista sempre contém user_message_uuid e contém no máximo 64 entradas. Quando Claude Code capta uma mensagem regular que você enviou enquanto um turno estava em execução, ele adiciona o uuid dessa mensagem à lista do resultado. Quando uma primeira resposta ou resultado carrega user_message_uuid sem a lista, veio de uma versão anterior de Claude Code, portanto recorra ao campo único.

resume_reason

Por que este turno continua um que uma reinicialização interrompeu. O Claude Code define este campo em um turno que continua um turno interrompido sob CLAUDE_CODE_RESUME_INTERRUPTED_TURN, para que você possa distinguir a resposta e o resultado do turno continuado dos da tentativa interrompida. Requer o Agent SDK v0.3.268 ou posterior. Claude Code define o campo em dois tipos de quadro:
  • O resultado do turno continuado: tanto no ramo de sucesso quanto no de erro, quer o resultado carregue ou não user_message_uuid.
  • Os frames de resposta do turno continuado: aqueles que carregam user_message_uuid.
O valor é um token curto em minúsculas, como interrupted_turn.

queued_turn_count

O número de mensagens que você enviou com origin: { kind: "human" } que ainda estão aguardando na fila de comandos quando Claude Code produziu o resultado. Requer Agent SDK v0.3.242 ou posterior. O que 0 e um campo ausente indicam:
  • 0: Claude Code não conta mensagens que você enviou sem esse origin, e não conta notificações de tarefa, portanto um turno ainda pode seguir.
  • Ausente: o resultado final que Claude Code emite após uma falha ou erro fatal de inicialização omite o campo, e pode carregar totais zerados.

startup_failure_reason

Por que Claude Code se recusou a iniciar, para que sua aplicação possa oferecer a correção em vez de uma nova tentativa. Claude Code o define no resultado error_during_execution que escreve antes de sair em uma falha de inicialização conhecida. Esse resultado carrega totais zerados, e seu array errors carrega o mesmo texto que stderr. O campo está ausente em todos os outros resultados. Requer Agent SDK v0.3.274 ou posterior. Defina CLAUDE_CODE_STARTUP_FAILURE_RESULTS como 1 em env para receber este resultado para cada valor de SDKStartupFailureReason. Sem essa variável, Claude Code escreve o resultado apenas para estas falhas, e as demais terminam com saída em stderr, um código de saída diferente de zero e nenhuma mensagem de resultado:
  • Uma retomada que Claude Code interrompe porque não consegue retornar a sessão ao seu worktree, com worktree_unverified ou worktree_resume_refused. Essa seção diz qual erro carrega qual valor.
  • Um continue recusado de uma conversa que uma sessão em segundo plano mantém, com session_held_by_background. Para um resume recusado de tal conversa, Claude Code escreve o resultado apenas quando a variável está definida.
Cada valor nomeia uma recusa:

SDKSystemMessage

Mensagem de inicialização do sistema.
fast_mode_state relata o estado do modo rápido da sessão. Quando algo bloqueia o modo rápido, fast_mode_disabled_reason nomeia a verificação que o bloqueou; o campo requer Claude Code v2.1.219 ou posterior. Para os códigos de motivo e seus significados, consulte fast_mode_disabled_reason na mensagem de resultado. terminal_slash_commands nomeia as entradas em slash_commands cuja interface está vinculada ao terminal local, como exit. Você pode enviá-las como qualquer outra entrada em slash_commands; o campo existe para que um cliente remoto ou móvel possa ocultá-las de seus menus de comando. O campo está presente apenas quando não vazio, e requer Agent SDK v0.3.229 ou posterior.
  • source em cada entrada de mcp_servers: de onde veio a definição do servidor, com os mesmos valores que o source de McpServerStatus. Requer Agent SDK v0.3.274 ou posterior.
  • effort: o nível de esforço que Claude Code envia na próxima requisição da sessão, ou null quando não envia nenhum. Claude Code define o campo apenas na mensagem init que envia para clientes Remote Control, e o omite da mensagem init que sua aplicação lê. Requer Agent SDK v0.3.234 ou posterior.
O array capabilities nomeia os comportamentos de protocolo que este 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 reconheça, e verifique a capacidade específica de cujo comportamento você depende. O campo requer Claude Code v2.1.205 ou posterior e está ausente em CLIs anteriores. O array plugin_errors lista falhas de carregamento de plugin. Uma entrada descreve um plugin que não carregou e está ausente de plugins, ou um plugin que carregou sem uma de suas partes, como seu arquivo de hooks. A chave é omitida quando nada falhou. SDKSystemMessage declara plugin_errors em Agent SDK v0.3.283 ou posterior. Quando um diretório ou arquivo compactado da sua opção plugins em si falha ao carregar, o campo plugin da entrada contém uma tag posicional como inline[0] em vez de um nome de plugin. Isso acontece, por exemplo, quando o caminho não existe ou o manifesto é inválido. Corresponda tal entrada à sua opção pelo campo path. A tabela abaixo lista os campos de cada entrada de plugin_errors.

SDKPartialAssistantMessage

Mensagem parcial de streaming (apenas quando includePartialMessages é true). O campo parent_tool_use_id é sempre null: eventos de stream são emitidos apenas para a sessão principal. Para atribuição a subagentes, use mensagens completas, que carregam agent_id e parent_tool_use_id, ou ative forwardSubagentText para receber o texto e o pensamento dos subagentes como mensagens completas.
O Claude Code define user_message_uuid e user_message_uuids no primeiro evento de stream do turno que não seja ping, e novamente quando a mensagem que o turno está respondendo muda, nas condições descritas em user_message_uuid. Quando o turno continua um que uma reinicialização interrompeu, os eventos de stream que carregam esses campos também carregam resume_reason.

SDKCompactBoundaryMessage

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

SDKInformationalMessage

Banner de texto genérico emitido pelo loop. Carrega avisos, notificações e outras linhas de status que não são erros levantadas por Claude Code, e feedback de hook como o motivo de bloqueio de um hook UserPromptSubmit. Em Claude Code v2.1.227 ou posterior, a systemMessage de um hook pode chegar como esta mensagem, com cada linha prefixada pelo nome do hook, como PostToolUse:Bash says:. A seção de cada evento na página de hooks diz como a saída aparece. 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 saiu em vez de esperar pelo timeout de heartbeat. O reason é uma string curta em snake_case definida pelo CLI do host, como "host_exit" ou "remote_control_disabled". Aja com base nisso apenas durante streaming ao vivo. Uma sessão retomada reproduz instâncias passadas desta mensagem, portanto 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 plugins 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 stream emitido quando o sistema de permissão nega uma chamada de ferramenta sem um prompt interativo. Use-o para renderizar a negação em sua interface conforme acontece, em vez de apenas observar o resultado de ferramenta is_error que se segue. Quais negações ele relata depende de como a execução lida com prompts de permissão:
  • Com um callback canUseTool e o padrão permissionPrompts: 'host': prompts de permissão vão para seu callback, e este evento relata as negações que Claude Code decide por conta própria sem chamá-lo.
  • Com nenhum dos dois: uma execução -p simples, ou uma query() que não define nem canUseTool nem permissionPromptToolName, nega qualquer chamada de ferramenta que teria gerado um prompt, a menos que um hook PermissionRequest a permita, e este evento reporta essas negações, assim como as que o Claude Code decide por conta própria. Antes da v2.1.223, o Claude Code não emitia este evento em execuções sem callback.
  • Com uma ferramenta de prompt MCP, definida com permissionPromptToolName ou a flag --permission-prompt-tool, e o padrão permissionPrompts: 'host': Claude Code não emite este evento de forma alguma, nem mesmo para as negações por regra que decide por conta própria.
  • Com permissionPrompts: 'none': Claude Code nega as chamadas que teriam pedido confirmação, mesmo quando canUseTool ou uma ferramenta de prompt MCP também está definida, e este evento relata essas negações bem como as que Claude Code decide por conta própria. Requer Claude Code v2.1.259 ou posterior.
Em todas as configurações, este evento ignora qualquer negação decidida no caminho do hook PreToolUse, independentemente de o hook ter negado a chamada em si ou de uma regra de negação ter sobrescrito a decisão de permitir ou perguntar do hook. O evento também é de melhor esforço: ocasionalmente Claude Code registra uma negação sem emitir este evento, portanto permission_denials na mensagem de resultado é o registro oficial.

SDKPermissionDenial

Informação sobre um uso de ferramenta negado.

SDKContextUsage

Forma estruturada do relatório /context, carregada como context_usage na SDKAssistantMessage que entrega um resultado /context. Agent SDK v0.3.232 e posterior exportam o tipo. Diferentemente de SDKControlGetContextUsageResponse, carrega apenas os dados necessários para renderizar o detalhamento de uso, sem campos de exibição como color e gridRows. Claude Code calcula o relatório com requisições de API de contagem de tokens que não aparecem no stream de mensagens; consulte como essas requisições são tratadas.
A tabela lista o que Claude Code coloca em cada campo. Os campos de model até over_limit descrevem a sessão como um todo, e os campos de coleção atribuem tokens a itens individuais. over_limit.kind registra como Claude Code resolveu a janela, não se a API aceita a próxima requisição:
  • hard_limit: a janela é o que Claude Code acredita ser o próprio limite do modelo, além do qual a API recusa requisições
  • compaction_window: a janela é uma janela de política de compactação, que pode ou não coincidir com o limite do modelo
Claude Code evolui o tipo de forma aditiva, adicionando novos dados como campos opcionais em vez de remodelar os existentes. Leia os campos que você conhece e ignore os que você não reconhece.

SDKContextUsageCategory

Uma linha do detalhamento de uso por categoria de /context.
A tabela lista o que Claude Code coloca em cada campo de uma linha. Cada valor de kind diz o que são os tokens da linha:
  • used: conteúdo que ocupa a janela de contexto
  • free: a janela restante
  • buffer: a reserva de compactação
  • deferred: esquemas de ferramenta que Claude Code mantém fora da janela e exclui do cálculo de uso, listados para conhecimento

SDKUsageReport

Forma estruturada do relatório de /usage, carregada como usage_report no SDKAssistantMessage que entrega um resultado de /usage. O Agent SDK v0.3.273 e posteriores exportam o tipo. O tipo é experimental: seu formato pode mudar.
Os campos de nível superior são session e rate_limits:
  • session: os totais acumulados de custo e uso do Claude Code, lidos do mesmo registro que total_cost_usd e modelUsage em SDKResultMessage. Cada entrada de model_usage é um ModelUsage.
  • rate_limits: as linhas de uso do plano em limits e o gasto de créditos de uso em extra_usage. É null quando o Claude Code não conseguiu obter o uso do plano, por exemplo quando o token OAuth da sessão não tem o escopo user:profile.
O Claude Code calcula session.total_cost_usd localmente a partir das contagens de tokens, então é uma estimativa e não o que seu plano cobra. O gasto de créditos de uso que o servidor reporta é o bloco separado extra_usage. Consulte Rastrear custo e uso para as ressalvas sobre a precisão. limits contém as linhas de uso do servidor exatamente como o servidor as enviou: quais medidores se aplicam, seu escopo, rótulos, severidade e ordem são definidos pelo servidor, então renderize as linhas literalmente.
  • Um array vazio significa que o servidor não reportou nenhum medidor.
  • null significa que o Claude Code não tem linhas para reportar.
Cada linha de limits descreve um medidor de uso: Antes do Agent SDK v0.3.277, o tipo declarava severity e is_active como opcionais e anuláveis, e uma linha podia chegar sem eles. extra_usage é o gasto e o teto de créditos de uso do período de faturamento conforme o servidor os reporta, presente quando o plano tem créditos de uso. Os valores estão em unidades menores de currency, centavos para USD.
  • monthly_limit é null quando esta conta não tem um teto de gastos próprio. Nos planos Team e Enterprise, não renderize null como ilimitado.
  • is_enabled é false enquanto os créditos de uso não puderem pagar por requisições.

SDKMessageOrigin

Proveniência de uma mensagem com papel de usuário. Isso aparece como origin em SDKUserMessage e é encaminhado para o SDKResultMessage correspondente para que você possa saber o que disparou um determinado turno.

Subtipos de notificação de tarefa

Quando Claude Code entrega uma notificação de tarefa em uma sessão, ele define subkind no origin da notificação se os servidores da Anthropic verificaram de onde essa notificação veio. Ele também define subkind quando a própria sua aplicação declara a mensagem como uma execução agendada, o que requer TypeScript Agent SDK v0.3.280 ou posterior. subkind requer Claude Code v2.1.213 ou posterior, e assume um de dois valores:
  • scheduled-trigger: a notificação é o prompt armazenado de uma rotina, entregue porque um dos gatilhos da rotina disparou: seu agendamento, seu gatilho de API, seu gatilho GitHub, ou Executar agora. Um prompt que sua aplicação declara como uma execução agendada carrega este valor também. Claude Code enquadra estes para o modelo como a tarefa atribuída da sessão, com um aviso diferente do aviso que outras notificações de tarefa carregam.
  • peer-send-message: a notificação é uma mensagem que outra de suas sessões enviou com a ferramenta send_message do lado do servidor que sessões na nuvem usam para trocar mensagens entre si, não a ferramenta SendMessage entre sessões, e os servidores da Anthropic verificaram que ambas as sessões pertencem ao mesmo grupo privado de sessões. Requer Claude Code v2.1.224 ou posterior. Uma entrega send_message que os servidores não verificaram dessa forma não recebe nenhum subkind.
Todas as outras notificações de tarefa não têm subkind. Isso inclui atividade de PR entregue em uma sessão e eventos em segundo plano como uma tarefa concluída. Mensagens da ferramenta SendMessage entre sessões não são notificações de tarefa de forma alguma: independentemente de virem de uma sessão na mesma máquina ou através de servidores da Anthropic a partir de outra máquina, Claude Code lhes dá kind: "peer" e os campos de origem de par. fireReason diz por que uma notificação scheduled-trigger disparou, como um token curto em minúsculas, como scheduled, manual, retry, catch_up ou api. Os servidores da Anthropic o definem nas entregas de uma rotina, e sua aplicação o define quando declara uma execução agendada. Está ausente quando nenhum dos dois enviou um. Requer TypeScript Agent SDK v0.3.280 ou posterior. Uma tarefa em segundo plano pode ser executada mais de uma vez sob o mesmo task_id, como quando o Claude retoma um subagente. Cada execução tem seu próprio run_id. Quando a notificação de uma execução chega à sua sessão como uma mensagem de usuário, runId no origin task-notification dessa mensagem contém o mesmo valor. Uma notificação pode chegar depois que a próxima execução da tarefa já começou e, ainda assim, carrega o ID da execução anterior. Para saber a qual execução um turno pertence, compare runId, não task_id. Requer TypeScript Agent SDK v0.3.292 ou posterior.

Declarar uma execução agendada

Se sua aplicação executa prompts em seu próprio agendamento, declare cada execução para que Claude Code enquadre o turno para o modelo como uma tarefa agendada em vez de como entrada ao vivo do usuário. Inicie a sessão com CLAUDE_CODE_HOST_SCHEDULED_RUN definido como 1 em env, depois envie a SDKUserMessage da execução com origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" } e sem isSynthetic. Claude Code ignora a declaração em um processo iniciado sem essa variável. Ele também a ignora em um processo cujo ambiente carrega CLAUDECODE ou CLAUDE_CODE_CHILD_SESSION. Claude Code mantém fireReason apenas quando o valor tem de 1 a 32 letras minúsculas ou underscores. Requer TypeScript Agent SDK v0.3.280 ou posterior.

Campos de origem de par

Uma origem peer identifica qual agente enviou a mensagem: um colega em processo enviando para main com SendMessage, ou um par entre sessões, outra de suas sessões Claude Code. Pares entre sessões requerem Claude Code v2.1.224 ou posterior no macOS e Linux; consulte disponibilidade de mensagens entre sessões para o requisito do Windows nativo. Um par entre sessões pode ser executado na mesma máquina, ou em outra de suas máquinas ou na nuvem quando sua mensagem chega através de Remote Control. Os dois tipos de remetente preenchem os campos de forma diferente:
  • from: o nome do colega, ou o endereço do remetente para um par entre sessões. Para uma mensagem unidirecional entre máquinas, o remetente não tem endereço de resposta e from é "unknown". O valor é definido pelo remetente; verifiedPeerPid é a identidade verificada.
  • fromMode: a classe de permissão da sessão remetente, bypass ou prompting, declarada por um host que retransmite uma mensagem de par entre suas sessões, como o aplicativo de desktop. Claude Code a lê na sessão receptora quando aplica os controles de entrada. Requer Agent SDK v0.3.234 ou posterior.
  • senderTaskId: o ID de tarefa do colega. Ausente para um par entre sessões.
  • name: o nome de exibição do remetente, normalizado por Claude Code: ele remove pontos de código Unicode de controle, formato, substitutos e separadores de linha ou parágrafo, depois apara o resultado e o limita a 64 pontos de código com reticências. Requer Claude Code v2.1.205 ou posterior.
  • body: o corpo decodificado da mensagem com o envelope peer removido, idêntico byte a byte ao que o modelo vê. Presente para uma única mensagem de colega de equipe, ausente quando várias são mescladas; para um par entre sessões, presente apenas quando o turno é exatamente um envelope peer formado pelo Claude Code. Renderize name e body em vez de analisar novamente o texto da mensagem. Antes da v2.1.299, mensagens mescladas mantinham o body da primeira mensagem. Requer Claude Code v2.1.205 ou posterior.
  • fromSession: o ID de sessão do remetente que pode ser aberto pelo host, definido pelo host do remetente para que sua interface possa vincular de volta à sessão remetente. Assim como from, é declarado pelo remetente: use-o apenas como destino de navegação, e não o trate como prova da identidade do remetente. Requer Claude Code v2.1.216 ou posterior.
  • verifiedPeerPid: o ID do processo que se conectou ao socket de mensagens entre sessões desta sessão, verificado pelo kernel e lido da própria conexão, nunca do payload. Use-o, e não from, para identificar o remetente: from pode ser forjado por qualquer processo do mesmo usuário. O campo está ausente quando Claude Code não consegue verificá-lo, como no Windows ou em entradas que não são por socket, portanto um valor ausente significa que o remetente não está verificado. Para tráfego retransmitido, identifica o retransmissor em vez do autor da mensagem, e IDs de processo são recicláveis, portanto trate-o como proveniência em vez de um token de autenticação. Requer Claude Code v2.1.216 ou posterior.

Tipos de Hook

Para um guia 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

mcp_server está presente quando a ferramenta vem de um servidor MCP; veja McpServerProvenance. As entradas PostToolUse, PostToolUseFailure, PermissionRequest e PermissionDenied carregam o mesmo campo. O campo requer Agent SDK v0.3.274 ou posterior.

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.

PermissionDeniedHookInput

NotificationHookInput

UserPromptSubmitHookInput

UserPromptExpansionHookInput

SessionStartHookInput

SessionEndHookInput

StopHookInput

StopFailureHookInput

SubagentStartHookInput

SubagentStopHookInput

PreCompactHookInput

PostCompactHookInput

PreModelSwitchHookInput

Dispara antes de uma mudança de modelo solicitada entrar em vigor. context_tokens e os campos após ele estimam o custo de reenviar a conversa para o novo modelo. Para as descrições completas de campos e semântica de bloqueio, veja PreModelSwitch.

PostModelSwitchHookInput

Dispara após o modelo da sessão mudar. Ele carrega os mesmos campos que PreModelSwitchHookInput, com dois valores de source adicionais. Veja PostModelSwitch.

PermissionRequestHookInput

SetupHookInput

TeammateIdleHookInput

TaskCreatedHookInput

TaskCompletedHookInput

ElicitationHookInput

ElicitationResultHookInput

ConfigChangeHookInput

InstructionsLoadedHookInput

DirectoryAddedHookInput

directory é o caminho absoluto do diretório que foi adicionado. source é "slash_command" quando /add-dir o adicionou e "register_repo_root" quando a solicitação de controle do SDK o fez.

WorktreeCreateHookInput

WorktreeRemoveHookInput

CwdChangedHookInput

FileChangedHookInput

MessageDisplayHookInput

HookJSONOutput

Valor de retorno de hook.

AsyncHookJSONOutput

SyncHookJSONOutput

Tipos de Entrada de Ferramenta

Documentação de esquemas de entrada para ferramentas integradas do Claude Code. Esses tipos são exportados de @anthropic-ai/claude-agent-sdk/sdk-tools e podem ser usados para interações de ferramenta type-safe.

ToolInputSchemas

União de tipos de entrada de ferramenta exportados de @anthropic-ai/claude-agent-sdk/sdk-tools; os membros incluem:

Agent

Nome da ferramenta: Agent. O nome anterior Task ainda é aceito como um alias, e o array tools na mensagem de inicialização SDKSystemMessage atualmente lista essa ferramenta como Task para compatibilidade com versões anteriores.
O campo mode está descontinuado e ignorado no Claude Code v2.1.212 ou posterior. Um subagente é executado no modo de permissão da sessão pai ou na permissionMode de sua definição, e as regras de herança de subagente decidem qual.
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 com timeout opcional e execução em segundo plano. O diretório de trabalho persiste entre comandos, incluindo comandos executados em turnos posteriores de uma sessão multi-turno; o estado do shell, como variáveis de ambiente exportadas, não persiste. Para os limites sobre quais mudanças de diretório são mantidas, veja O que persiste entre comandos. Para o que define o limite em primeiro plano, veja Timeout e limites de saída. Para o limite de tempo em segundo plano, veja Limite de tempo para comandos em segundo plano.

Monitor

Nome da ferramenta: Monitor
Executa uma fonte em segundo plano 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. timeout_ms é o prazo do watch em milissegundos. O padrão é 300000 e aceita valores até 3600000. O prazo efetivo é no máximo 1800000, que é 30 minutos, então um valor aceito maior é encurtado para isso. No prazo, o watch termina e Claude recebe um aviso para que possa iniciar um novo watch se ainda precisar de um. O tipo exportado marca timeout_ms como obrigatório porque o esquema preenche o padrão; uma chamada que o omite valida. 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

Removido no Claude Code v2.1.277, junto com seu tipo TaskOutputInput. Anteriormente recuperava saída de uma tarefa em segundo plano em execução ou concluída; Claude lê o arquivo de saída de uma tarefa em segundo plano com Read em vez disso. Uma entrada disallowedTools ou uma regra de negação que ainda nomeia TaskOutput é ignorada sem um aviso.

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").
  • allow_large permite que Claude leia um arquivo de texto além dos limites de tamanho usuais quando a janela de contexto da sessão tem espaço. Requer Agent SDK v0.3.296 ou posterior, que inclui Claude Code v2.1.296.
Para um PDF, Claude recebe o conteúdo do arquivo dentro do tool_result da chamada Read. Uma leitura que retorna a saída pdf carrega um bloco text de resumo seguido por um bloco document. Uma que retorna a saída parts carrega o bloco text de resumo seguido por um bloco por página extraída: um bloco image, ou um bloco text nomeando a página quando Claude Code não conseguiu renderizá-la como uma imagem. Antes do Agent SDK v0.3.242, Claude Code entregava o conteúdo do arquivo como uma mensagem user separada após o resultado da ferramenta.

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 base de código.

Grep

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

TaskStop

Nome da ferramenta: TaskStop
Para uma tarefa em segundo plano 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 em segundo plano 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. offset é o número de caracteres a pular a partir do início da página. Claude o define para continuar lendo uma página longa. O campo requer Agent SDK v0.3.290 ou posterior.

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 segundo plano 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.
As seguintes ferramentas estão disponíveis por padrão apenas em Claude Opus 4.7, Claude Sonnet 4.6, Claude Haiku 4.5 e modelos anteriores. Em todos os outros modelos, incluindo IDs de modelo que Claude Code não reconhece, elas não estão disponíveis a menos que você opte por usá-las:
  • TodoWrite
  • TaskCreate
  • TaskGet
  • TaskUpdate
  • TaskList
Onde quer que as ferramentas estejam disponíveis, Claude Code fornece as quatro ferramentas Task, ou TodoWrite em vez disso quando você define CLAUDE_CODE_ENABLE_TASKS=0.Este conjunto padrão se aplica em Claude Code v2.1.268 e posterior, que o TypeScript Agent SDK agrupa a partir de v0.3.268.Veja Disponibilidade de modelo para optar por participar.

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.

ExitWorktree

Nome da ferramenta: ExitWorktree
Sai do worktree git atual e retorna ao diretório de trabalho original. A ação keep deixa o worktree e o branch no disco, enquanto remove deleta ambos. discard_changes deve ser true ao remover um worktree que tem arquivos sem commit ou commits não mesclados.

EnterPlanMode

Nome da ferramenta: EnterPlanMode
Entra no modo de planejamento, onde Claude pesquisa e apresenta um plano antes de fazer alterações.

CronCreate

Nome da ferramenta: CronCreate
Agenda um prompt para ser executado em um cronograma cron de 5 campos em hora local. Defina recurring para false para disparar uma vez na próxima correspondência. Os trabalhos são escopo de sessão por padrão, e retomar com --resume ou --continue restaura trabalhos que não expiraram. Veja Tarefas agendadas. Definir durable para true solicita persistência para .claude/scheduled_tasks.json para que o trabalho sobreviva a reinicializações. O agendamento durável não está disponível em todas as sessões: quando não está, Claude Code aceita durable: true mas cria o trabalho apenas para a sessão. Leia o campo durable da saída para ver se o trabalho persistiu.

CronDelete

Nome da ferramenta: CronDelete
Deleta um trabalho cron agendado pelo ID retornado de CronCreate.

CronList

Nome da ferramenta: CronList
Lista os trabalhos cron agendados: trabalhos duráveis de .claude/scheduled_tasks.json e trabalhos apenas de sessão da sessão atual.

ScheduleWakeup

Nome da ferramenta: ScheduleWakeup
Agenda um wake-up único que dispara o prompt fornecido após um atraso. Esta ferramenta respalda o comando /loop auto-paced. O runtime fixa delaySeconds entre 60 e 3600 segundos. Os campos delaySeconds, reason, prompt e noop são obrigatórios a menos que stop seja true. noop: true relata um wake-up onde nada mudou. Definir stop: true cancela o wakeup pendente e encerra o /loop auto-paced. O campo stop requer Claude Code v2.1.202 ou posterior. Veja a linha ScheduleWakeup na referência de ferramentas.

RemoteTrigger

Nome da ferramenta: RemoteTrigger
Gerencia Rotinas, as execuções do Claude Code agendadas e acionadas hospedadas na nuvem. Esta ferramenta respalda o comando /schedule. trigger_id é obrigatório para as ações get, update, run e list_runs. body é obrigatório para create, update e create_webhook_trigger, e opcional para run. create_webhook_trigger anexa uma fonte de evento a uma rotina existente, como um evento GitHub que a dispara. O body nomeia a fonte, os eventos e a rotina a disparar. Requer Claude Code v2.1.225 ou posterior. list_runs lista as execuções recentes de uma rotina, e get_run_log lê o log de uma execução. session_id nomeia a execução a ler, de um resultado list_runs, e cursor pagina através dos resultados de qualquer ação. Ambas as ações requerem Claude Code v2.1.227 ou posterior. Esta ferramenta está disponível apenas quando a sessão é autenticada com uma conta claude.ai em um plano com Rotinas habilitadas, e está ausente quando a política da sua organização desabilita sessões na nuvem. No Claude Code v2.1.227 ou posterior, a ferramenta também está ausente quando um Proprietário desativou rotinas para a organização. Antes de v2.1.227, uma sessão com apenas o toggle de rotinas desativado ainda mostrava a ferramenta, e o servidor negava suas chamadas.

PushNotification

Nome da ferramenta: PushNotification
Envia uma notificação push proativa para o usuário. Mantenha message com menos de 200 caracteres porque os sistemas operacionais móveis truncam texto mais longo. Veja a linha PushNotification na referência de ferramentas para disponibilidade de provedor; a entrega de push é executada através de infraestrutura hospedada pela Anthropic que não é acessível do Amazon Bedrock, Claude Platform no AWS, Agent Platform do Google Cloud ou Microsoft Foundry.

REPL

Removido em v2.1.275. Através de v2.1.274, uma ferramenta REPL experimental poderia ser ativada com CLAUDE_CODE_REPL=1 na opção env.

ReportFindings

Nome da ferramenta: ReportFindings
Relata descobertas de revisão de código como uma lista estruturada para que Claude Code possa renderizá-las em vez de imprimi-las como texto. As descobertas são ordenadas mais graves primeiro, com no máximo 32 por chamada, e o array está vazio quando nenhuma sobreviveu. Requer Claude Code v2.1.196 ou posterior. level é opcional e contém o nível de esforço que Claude relata para a revisão. Claude Code não o compara com o nível em que a revisão foi executada, então os dois podem diferir. Cada descoberta carrega esses campos:
  • file: caminho relativo ao repositório em que a descoberta está. O line opcional é a linha 1-indexada à qual ela se ancora.
  • summary: declaração de uma sentença do defeito. failure_scenario descreve as entradas concretas e o estado que levam à saída errada ou crash.
  • short_summary: rótulo comprimido opcional de no máximo 60 caracteres para exibição compacta. Requer Claude Code v2.1.212 ou posterior.
  • category: slug kebab-case curto opcional do tipo de descoberta, como correctness ou test-coverage. Requer Claude Code v2.1.199 ou posterior.
  • verdict: definido quando uma passagem de verificação foi executada; ausente em revisões apenas inline.
  • outcome: definido apenas ao relatar novamente após aplicar correções.

Artifact

Nome da ferramenta: Artifact
Publica um arquivo .html ou .md local como uma página de artefato hospedada, ou lista os artefatos publicados do usuário. Omita action ou passe "publish" para publicar file_path, que é obrigatório para a ação de publicação. Cada campo abaixo se aplica a uma publicação:
  • icon: uma palavra genérica curta para o ícone da aba do navegador do artefato, como chart ou map. Claude o inclui em uma primeira publicação e o omite em uma atualização, o que mantém o ícone armazenado do artefato.
  • favicon: descontinuado, e Claude o omite.
  • title: nomeia a página publicada na aba do navegador e galeria quando o arquivo HTML não tem uma tag <title>.
  • url: visa um artefato existente para atualizar no local em vez de criar um novo.
force é uma sobrescrita de último recurso que descarta uma versão mais nova que outra sessão publicou. Em um conflito, a publicação falhada retorna o conteúdo mais novo; Claude mescla suas alterações nesse conteúdo, ou relê o artefato, e publica novamente. Passe force apenas quando o usuário explicitamente pedir para descartar essa versão. Passe "list" para enumerar os artefatos publicados do usuário; apenas limit e scope podem acompanhá-lo. scope padrão é "mine", que lista artefatos que o usuário possui; "shared" lista artefatos que outras pessoas compartilharam com o usuário, e "all" lista ambos. limit define o número máximo de artefatos que uma listagem retorna, de 1 a 200. Um limit acima de 50 requer Agent SDK v0.3.292 ou posterior. Sem limit, uma listagem retorna até 25.
  • capabilities: as capacidades de tempo de execução que a página publicada usa, codificadas por nome de capacidade, como os conectores que a página pode chamar. O serviço de artefato valida a declaração e rejeita uma publicação que nomeia uma capacidade que a conta não pode usar ou dá uma configuração inválida. Passe {} para limpar uma declaração armazenada, e omita o campo em uma reimplantação para mantê-lo. Requer Agent SDK v0.3.235 ou posterior.
  • contract: a versão de tempo de execução contra a qual a página publicada é executada. Omita-a para manter a versão atual do artefato, passe "latest" para atualizar, ou passe uma versão específica para fixar ou reverter. Requer Agent SDK v0.3.235 ou posterior.
Os tipos são exportados, mas a ferramenta está desativada por padrão em sessões do Agent SDK. A publicação também requer todas as condições na tabela de disponibilidade de artefatos, que sessões autenticadas com uma chave de API não atendem.

Projects

Nome da ferramenta: Projects
Lê e escreve o Projeto claude.ai anexado à sessão. Despacha em method:
  • project_info: retorna metadados do projeto e a lista de documentos.
  • project_read: lê um documento por path.
  • project_search: consulta a base de conhecimento do projeto com query. n limita os acertos e o padrão é 5.
  • project_write: cria ou substitui um documento em path de exatamente um de content, que carrega texto inline, ou local_path, que nomeia um arquivo dentro do diretório de trabalho. present_to_user: true marca o documento escrito como o entregável que o usuário precisa ver.
  • project_delete: deleta um documento por path.

ReadMcpResourceDir

Nome da ferramenta: ReadMcpResourceDirTool
Lista os filhos diretos de um recurso de diretório em um servidor MCP. Apenas utilizável contra um servidor que declarou suporte para listagem de diretório; a listagem não é recursiva. A listagem de diretório não está habilitada em todas as sessões: quando está desativada, a chamada retorna uma lista resources vazia e o campo error relata que a listagem de diretório não está habilitada.

RefreshMcpTools

Nome da ferramenta: RefreshMcpTools
Re-consulta a lista de ferramentas de servidores MCP conectados e aplica quaisquer alterações. Os tipos são exportados, mas Claude Code registra a ferramenta apenas quando você define CLAUDE_CODE_ENABLE_REFRESH_MCP_TOOLS=1 na opção env, e apenas em sessões com pelo menos um servidor MCP. Requer Claude Code v2.1.211 ou posterior.

ShowOnboardingRolePicker

Nome da ferramenta: ShowOnboardingRolePicker
Renderiza uma linha de chip seletor de função clicável durante o onboarding do Cowork para que o usuário possa escolher sua função e obter um plugin correspondente instalado. Não leva argumentos; a lista de funções é definida pelo cliente. A chamada bloqueia até que o usuário responda.

McpInput

Nome da ferramenta: nomes de ferramenta MCP dinâmicos da forma mcp__<server>__<tool>
Os argumentos da ferramenta MCP são um objeto aberto: cada servidor define seus próprios parâmetros, então o tipo não coloca restrições em nomes de campo ou valores. Consulte o esquema de ferramenta do servidor para os campos que uma ferramenta específica aceita.

Tipos de Saída de Ferramentas

Documentação dos esquemas de saída para as ferramentas Claude Code integradas. Esses tipos são exportados de @anthropic-ai/claude-agent-sdk/sdk-tools e representam os dados de resposta reais retornados por cada ferramenta.

ToolOutputSchemas

União de tipos de saída de ferramentas exportados de @anthropic-ai/claude-agent-sdk/sdk-tools; os membros incluem:

Agent

Nome da ferramenta: Agent. O nome anterior Task ainda é aceito como um alias, e o array tools na mensagem de inicialização SDKSystemMessage atualmente lista essa ferramenta como Task para compatibilidade com versões anteriores.
Retorna o resultado do subagente. Discriminado no campo status: "completed" para tarefas concluídas, "async_launched" para tarefas em segundo plano e "remote_launched" para tarefas que Claude Code despachou para uma sessão na nuvem, onde sessionUrl vincula a essa sessão e taskId a identifica. Na variante completed, resolvedModel nomeia o modelo em que o subagente começou, que pode diferir do model de entrada solicitado quando availableModels ou outra substituição se aplica. Este campo requer Claude Code v2.1.174 ou posterior. Em async_launched, nomeia o modelo em uso quando a tarefa passou para o segundo plano. modelsUsed lista os modelos que o subagente usou, em ordem. O campo está presente apenas quando uma troca no meio da execução aconteceu, e um modelo aparece novamente quando a execução voltou para ele. Em async_launched, a lista cobre os modelos usados antes de passar para o segundo plano. Tanto modelsUsed quanto o comportamento de segundo plano de resolvedModel requerem Claude Code v2.1.212 ou posterior. Se Claude Code manteve o worktree isolado do subagente, worktreePath no resultado completed é onde encontrá-lo. worktreeBranch é seu branch, presente quando Claude Code criou o worktree com git. Claude Code preenche usage e totalTokens da requisição final da API do subagente, não de toda a execução, portanto usage.service_tier é a string de nível de serviço que a API relatou nessa requisição. Quando presente, usage.output_tokens_details.thinking_tokens é o número de tokens de saída dessa requisição que eram tokens de pensamento. O campo output_tokens_details requer TypeScript SDK v0.3.228 ou posterior, que agrupa Claude Code v2.1.228. O campo fallback_credit requer TypeScript SDK v0.3.285 ou posterior, que agrupa Claude Code v2.1.285. usage.output_tokens_details corresponde a Usage.output_tokens_details em significado, restrito a essa requisição final, mas cada nível dele é opcional aqui. Proteja tanto o objeto quanto o campo, por exemplo usage.output_tokens_details?.thinking_tokens ?? 0, em vez de lê-lo diretamente. Antes de v2.1.207, o tipo publicado era mais restrito. 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 em 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
Os campos stdout, stderr e backgroundTaskId carregam: timedOutAfterMs é o timeout em milissegundos, definido quando o comando atingiu seu timeout e passou para o segundo plano em vez de começar lá explicitamente. backgroundCwdHint é definido quando o comando em segundo plano continha um builtin de mudança de diretório como cd, pushd, popd ou chdir, e observa que o diretório de trabalho da sessão não mudou. Ambos os campos requerem Claude Code v2.1.210 ou posterior. Quando um subagente em execução em primeiro plano possui um comando em segundo plano, o comando termina quando a execução desse subagente termina. Claude Code define backgroundEndsWithFinalResponse como true em tais comandos e omite o campo quando o comando sobrevive ao turno, como comandos iniciados pela conversa principal ou por subagentes em segundo plano fazem. O campo requer Claude Code v2.1.227 ou posterior. Claude Code define gitOperation.commit.branch para o branch nomeado na linha de resumo do commit do git e o omite para um commit feito em um HEAD desanexado. O campo requer Agent SDK v0.3.227 ou posterior. Claude Code relata um comando gh pr reopen como a ação PR reopened, que requer Agent SDK v0.3.234 ou posterior.

Monitor

Nome da ferramenta: Monitor
Retorna o ID da tarefa em segundo plano para o monitor em execução. Use esse 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 o 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. O que originalFile e structuredPatch contêm depende da escrita:
  • Para um arquivo recém-criado, originalFile é nulo e structuredPatch está vazio
  • Em uma sobrescrita, originalFile carrega o conteúdo anterior, exceto quando esse conteúdo é maior que cerca de 10 MB: Claude Code então pula o diff e retorna originalFile nulo e structuredPatch vazio
  • structuredPatch também está vazio quando a escrita não mudou nada ou o diff expirou

Glob

Nome da ferramenta: Glob
Retorna caminhos de arquivo que correspondem ao padrão glob, classificados por tempo de modificação. totalMatches e countIsComplete requerem Claude Code v2.1.191 ou posterior. totalMatches relata o número de arquivos correspondentes antes do truncamento. Quando countIsComplete é false, totalMatches é um limite inferior porque a busca subjacente truncou sua própria saída.

Grep

Nome da ferramenta: Grep
Retorna resultados de busca. A forma varia por mode: lista de arquivos, conteúdo com correspondências ou contagens de correspondências. No modo count, numFiles e numMatches são totais sobre o conjunto de resultados completo, não a fatia paginada. Antes de v2.1.208, um head_limit ou offset que truncava as entradas listadas também truncava esses totais. totalFiles requer Claude Code v2.1.208 ou posterior e relata o número total de resultados antes da paginação head_limit e offset no modo files_with_matches. totalLines requer Claude Code v2.1.210 ou posterior e relata o número total de linhas antes da paginação no modo content.

TaskStop

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

NotebookEdit

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

WebFetch

Nome da ferramenta: WebFetch
Retorna o conteúdo buscado com status HTTP e metadados. artifactRead é o próprio registro de Claude Code de uma leitura de artefato, presente apenas quando Claude buscou um artefato que a sessão pode publicar. Claude Code o lê novamente quando uma sessão é retomada para que uma publicação posterior seja construída na versão correta; seu código não precisa agir sobre isso. slug nomeia o artefato, ver é a versão que a leitura registrou e está ausente quando não registrou nenhuma, e seeded: false marca uma leitura cuja fonte completa não chegou a Claude. O campo seeded requer Agent SDK v0.3.239 ou posterior.

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.
As seguintes ferramentas estão disponíveis por padrão apenas em Claude Opus 4.7, Claude Sonnet 4.6, Claude Haiku 4.5 e modelos anteriores. Em todos os outros modelos, incluindo IDs de modelo que Claude Code não reconhece, elas não estão disponíveis a menos que você opte por usá-las:
  • TodoWrite
  • TaskCreate
  • TaskGet
  • TaskUpdate
  • TaskList
Onde quer que as ferramentas estejam disponíveis, Claude Code fornece as quatro ferramentas Task, ou TodoWrite em vez disso quando você define CLAUDE_CODE_ENABLE_TASKS=0.Este conjunto padrão se aplica em Claude Code v2.1.268 e posterior, que o TypeScript Agent SDK agrupa a partir de v0.3.268.Veja Disponibilidade de modelo para optar por participar.

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 de tarefa completo ou null quando o ID não é encontrado.

TaskList

Nome da ferramenta: TaskList
Retorna um instantâneo 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.

ExitWorktree

Nome da ferramenta: ExitWorktree
Retorna a ação tomada e detalhes sobre o worktree do qual se saiu.

EnterPlanMode

Nome da ferramenta: EnterPlanMode
Retorna uma confirmação de que o modo de planejamento foi inserido.

CronCreate

Nome da ferramenta: CronCreate
Retorna o ID do trabalho e uma descrição legível por humanos do cronograma.

CronDelete

Nome da ferramenta: CronDelete
Retorna o ID do trabalho excluído.

CronList

Nome da ferramenta: CronList
Retorna os trabalhos cron agendados: trabalhos duráveis de .claude/scheduled_tasks.json e trabalhos apenas da sessão da sessão atual. Um trabalho apenas da sessão carrega durable: false; trabalhos lidos do disco omitem o campo.

ScheduleWakeup

Nome da ferramenta: ScheduleWakeup
Retorna quando o despertar será acionado como um timestamp de época em milissegundos, o atraso realmente usado e se o atraso solicitado foi limitado. O campo stopped é true quando a chamada terminou o loop com stop: true. Requer Claude Code v2.1.202 ou posterior. O campo cancelledWakeups conta quantos despertares pendentes uma chamada stop: true cancelou. Um valor de 0 significa que nada estava pendente, e um cron /loop recorrente não é cancelado por stop: true. Requer Claude Code v2.1.206 ou posterior.

RemoteTrigger

Nome da ferramenta: RemoteTrigger
Retorna o status de resposta da API e o corpo para a operação de acionamento.

PushNotification

Nome da ferramenta: PushNotification
Retorna detalhes de entrega, incluindo se uma notificação push ou local foi enviada e por que a entrega foi ignorada.

ReportFindings

Nome da ferramenta: ReportFindings
Retorna o número de descobertas relatadas, o valor de level que Claude passou e as descobertas ecoadas de volta para o corpo do resultado. Requer Claude Code v2.1.196 ou posterior. O campo short_summary ecoado requer Claude Code v2.1.212 ou posterior.

Artifact

Nome da ferramenta: Artifact
Retorna a url da página publicada e o path local que foi publicado para a ação de publicação, com updated definido como true quando a publicação reimplantou um artefato existente, e warnings carregando quaisquer avisos de tempo de publicação. A ação de lista retorna as linhas artifacts em vez disso, com truncated definido quando mais artefatos existem do que o limite solicitado. Em listagens cujo escopo não é "mine", cada linha carrega rel marcando se o usuário possui o artefato ou foi compartilhado com ele, e a scope da saída registra qual escopo não padrão produziu a listagem; ambos estão ausentes em listagens padrão. Um resultado de lista também relata total, o número de artefatos que correspondem ao escopo listado, incluindo os que estão além de limit. Quando total_at_least está definido, esse número é um limite inferior e mais artefatos podem existir. Ambos os campos requerem Agent SDK v0.3.292 ou posterior.

Projects

Nome da ferramenta: Projects
Discriminado no campo method, espelhando a entrada. project_read retorna pequenos docs de texto inline em content e escreve docs maiores em um caminho local_file em vez disso; project_search retorna hits RAG com rag: true quando o índice do projeto está disponível e volta para uma lista de caminho docs caso contrário.

ReadMcpResourceDir

Nome da ferramenta: ReadMcpResourceDirTool
Retorna os filhos diretos do recurso de diretório. Subdiretórios aparecem com mimeType "inode/directory"; error carrega uma mensagem legível por humanos quando o servidor não conseguiu listar o diretório.

RefreshMcpTools

Nome da ferramenta: RefreshMcpTools
Retorna uma entrada por servidor: refreshed significa que a lista de ferramentas re-consultada foi aplicada, error significa que a re-consulta falhou e o conjunto de ferramentas anterior foi mantido, e not_connected significa que o servidor não tem conexão ativa para consultar.

ShowOnboardingRolePicker

Nome da ferramenta: ShowOnboardingRolePicker
Retorna a seleção do usuário: role quando ele escolheu um chip de função ou digitou um, e dismissed: true quando fechou o seletor. Um objeto vazio significa que o usuário aprovou a chamada sem escolher uma função.

McpOutput

Nome da ferramenta: nomes de ferramentas MCP dinâmicas da forma mcp__<server>__<tool>
Os resultados das ferramentas MCP são retornados como uma string ou um array de blocos de conteúdo, dependendo do servidor. O ramo de objeto simples à direita no tipo exportado é um artefato de geração de esquema. Para um resultado que também carrega structuredContent ou links de recursos, consulte tool_use_result, que contém esse valor em seu membro content. Em tempo de execução, o valor também pode ser undefined, embora o tipo exportado não modele isso.

Tipos de Permissão

PermissionUpdate

Operações para atualizar permissões.

PermissionBehavior

PermissionUpdateDestination

PermissionRuleValue

Outros Tipos

ApiKeySource

De onde a chave de API para as requisições da sessão veio, relatada como apiKeySource na mensagem init SDKSystemMessage.
Claude Code relata um de quatro valores: Agent SDK v0.3.234 e posterior listam esses quatro valores no tipo. O tipo também mantém user, project, org, temporary e oauth para que código mais antigo ainda compile, e Claude Code não os relata.

SdkBeta

Recursos beta disponíveis que podem ser ativados via opção betas. Veja Beta headers para mais informações.
Na Claude API, o beta context-1m-2025-08-07 foi descontinuado para Claude Sonnet 4.5 e Claude Sonnet 4. Se você ainda o passar com qualquer um desses modelos, requisições que excedem a janela de contexto padrão de 200K tokens retornam um erro, então remova-o de betas. Para executar uma sessão com uma janela de contexto de 1M tokens, defina model como um modelo que é executado com a janela de 1M por padrão, como claude-sonnet-5-5 ou claude-opus-5-5. Para um modelo que alcança 1M apenas por meio de sua variante [1m], acrescente o sufixo ao ID do modelo, como em claude-opus-4-6[1m].

SlashCommand

Informações sobre um comando disponível.
builtin é true em uma linha quando o comando é próprio do Claude Code e digitar /name o executa. Está ausente para um comando definido por um usuário, projeto, plugin ou servidor MCP, e para um comando agrupado que um desses substitui por nome. Requer Agent SDK v0.3.277 ou posterior.

ModelInfo

Informações sobre um modelo disponível.

AgentInfo

Informações sobre um subagente disponível que pode ser invocado via ferramenta Agent.

McpServerProvenance

O servidor MCP que serve uma ferramenta mcp__*, e de onde a definição desse servidor veio. As entradas de hook PreToolUse, PostToolUse, PostToolUseFailure, PermissionRequest e PermissionDenied a carregam como mcp_server, e as opções CanUseTool a carregam como mcpServer. Ambas a omitem para ferramentas que não vêm de um servidor MCP.
source assume um dos seguintes valores. O conjunto é aberto, então trate um valor que você não reconheça como uma fonte configurada, nunca como sdk:
  • sdk: um servidor em processo que sua aplicação registrou. Apenas a aplicação host do SDK pode registrar um, então um servidor configurado nunca relata sdk, qualquer que seja seu nome.
  • plugin: um servidor que um plugin fornece. Seu name é a forma plugin:<plugin-name>:<server-name> com escopo descrita em servidores MCP fornecidos por plugin.
  • Um escopo de configuração: user, project, local, dynamic, managed, enterprise, claudeai ou agent. Um servidor .mcp.json relata project, e escopos de instalação MCP define local, project e user. Servidores que sua aplicação passa na opção mcpServers, outros que servidores SDK em processo, relatam dynamic.
Baseie decisões de confiança em source, não em name ou no prefixo de nome de ferramenta mcp__<server>__. Para qualquer fonte que não seja sdk, name é texto não confiável: escape-o antes de exibir. McpServerProvenance e os campos que a carregam requerem Agent SDK v0.3.274 ou posterior.

McpServerStatus

Status de um servidor MCP conectado.
source diz de onde a definição do servidor veio, com os mesmos valores e regra de confiança que o source de McpServerProvenance. O campo requer Agent SDK v0.3.274 ou posterior e está ausente em versões anteriores. _meta em uma entrada tools carrega os membros MCP Apps de _meta dessa ferramenta, para que sua aplicação possa encontrar o recurso ui:// para renderizar com readMcpResource(). Claude Code passa através do objeto ui e da string ui/resourceUri plana descontinuada, e retém todas as outras chaves. Dentro de ui, resourceUri é uma string ui:// e visibility um array de "model" e "app" quando o servidor os define, e qualquer outro membro passa através inalterado. Claude Code descarta qualquer chave quando o valor é malformado, e omite _meta de uma ferramenta que não declara nenhum. O campo está presente apenas quando o capabilities da mensagem init incluem mcp_tool_ui_meta_v1, e requer TypeScript Agent SDK v0.3.280 ou posterior.

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.
thinkingTokens conta os tokens de pensamento que este modelo gerou. outputTokens já os inclui, então não adicione os dois juntos. O campo está ausente até que um turno seja executado em uma versão de Claude Code que o registra, então uma sessão retomada que começou em uma versão anterior relata uma contagem parcial. thinkingTokens requer Agent SDK v0.3.257 ou posterior. Os campos canonicalModel e provider requerem Claude Code v2.1.218 ou posterior. canonicalModel é o ID de modelo canônico que a busca de preço usa; pode diferir da string de modelo bruto que chave a entrada, por exemplo quando essa string é um ID específico do provedor ou um alias. provider nomeia o backend de API que serviu o modelo, como firstParty, bedrock, vertex, foundry, anthropicAws, mantle ou gateway. costBasis nomeia a tabela de preço que precificou a requisição mais recente do modelo: list para preço de lista, managed para uma tabela modelPricing, ou unknown quando nenhuma correspondeu ao ID do modelo. O campo requer Claude Code v2.1.246 ou posterior.

ConfigScope

NonNullableUsage

Uma versão de Usage com todos os campos anuláveis tornados não-anuláveis, exceto fallback_credit, que ainda pode ser null.

Usage

Estatísticas de uso de token. Este é o tipo BetaUsage de @anthropic-ai/sdk.
BetaServerToolUsage, BetaIterationsUsage, BetaOutputTokensDetails e BetaFallbackCreditUsage são definidos em @anthropic-ai/sdk. output_tokens_details divide a saída faturada por categoria. Atualmente carrega um campo, thinking_tokens: number, contando os tokens de saída que o modelo gerou como raciocínio interno, incluindo os delimitadores de bloco de pensamento. O campo output_tokens_details requer TypeScript SDK v0.3.228 ou posterior, que agrupa Claude Code v2.1.228.
  • Faturamento: leia a divisão para observabilidade, não para faturamento. output_tokens permanece o total autoritário, e output_tokens - thinking_tokens aproxima a saída não-raciocínio.
  • O que a contagem cobre: o raciocínio bruto que o modelo produziu, que pode ser mais longo do que o texto de pensamento retornado no corpo da resposta. A API o computa re-tokenizando esse texto bruto, então pode diferir da contagem exata de geração do modelo por alguns tokens.
  • Streaming: em mensagens de assistente transmitidas, essa divisão, como output_tokens, é um placeholder message_start e não carrega contagem real, então leia-a da mensagem de resultado usage como Ler tokens de saída da mensagem de resultado descreve. Na mensagem de resultado, thinking_tokens lê 0 quando o modelo ou provedor não relata divisão.
  • Casos null: output_tokens_details em si é null em mensagens de assistente que Claude Code sintetiza, como mensagens de erro de API.
Se Usage carrega fallback_credit depende do seu @anthropic-ai/sdk instalado, que o adicionou na versão 0.115.0.

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.
Um arquivo que uma ferramenta MCP retornou por referência. Claude Code constrói cada entrada a partir de um bloco resource_link no resultado da ferramenta e entrega a lista como resourceLinks em SDKUserMessage.tool_use_result, ou como resource_links em SDKTaskNotificationMessage quando a chamada terminou em segundo plano. Requer Agent SDK v0.3.257 ou posterior.
Claude Code descarta um bloco cujo uri ou name não é uma string, e omite um campo opcional cujo valor não é do tipo listado.

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. Claude Code não repassa seu valor de display para alguns provedores, como Amazon Bedrock e Google Cloud’s Agent Platform. Nesses provedores, Opus 4.7 e posterior retornam blocos thinking vazios mesmo quando você define display para "summarized".

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().
Quando você chama setMcpServers(), Claude Code aplica estas regras:
  • Servidores que a chamada não nomeia: fora de uma sessão na nuvem, Claude Code desconecta os servidores que uma chamada anterior de setMcpServers() adicionou e os servidores SDK em processo, e os lista em removed. Outros servidores continuam em execução e não são listados em removed, entre eles os servidores stdio, HTTP e SSE da opção mcpServers, servidores de arquivos de configuração e servidores fornecidos por plugin.
  • Servidores que a chamada nomeia: Claude Code substitui um servidor stdio, HTTP ou SSE que uma chamada anterior de setMcpServers() adicionou apenas quando sua configuração difere da que você passou. Um servidor SDK em processo já registrado sob esse nome permanece como está, então, para trocar um, deixe-o de fora de uma chamada e adicione-o na seguinte.
  • Servidores integrados que a CLI iniciou na inicialização: se a chamada nomear um, Claude Code descarta essa entrada e a relata em errors.
A promise é resolvida após novos servidores stdio, HTTP e SSE adicionados se conectarem ou falharem, então ferramentas de servidores que se conectaram estão disponíveis no próximo turno. added lista os servidores que Claude Code adicionou ou substituiu, independentemente de terem se conectado. Um servidor que falhou ao se conectar aparece em added e errors, com o texto de falha em errors e uma linha failed em mcpServerStatus(). Antes de Claude Code v2.1.257, um servidor cuja tentativa de conexão lançou uma exceção era relatado apenas em errors.

RewindFilesResult

Resultado de uma operação rewindFiles().
skippedLinks conta os caminhos rastreados que o rewind recusou restaurar ou deletar por segurança de link: um symlink, hard link ou outro arquivo não-regular no caminho rastreado, um diretório pai que não mais resolve para onde apontava quando o checkpoint foi tirado, ou um backup que não pôde ser lido com segurança. O campo requer Claude Code v2.1.216 ou posterior. Uma chamada de visualização com rewindFiles(userMessageId, { dryRun: true }) nunca o define.

SDKStatusMessage

Mensagem de atualização de status (por exemplo, compactando).

SDKTaskNotificationMessage

Notificação quando uma tarefa em segundo plano é concluída, falha ou é parada. Tarefas em segundo plano incluem comandos Bash run_in_background, watches Monitor e subagentes em segundo plano. Para os campos run_id e ambient, veja SDKTaskStartedMessage, que os define e seus requisitos de versão.
reason é definido quando uma tarefa termina por uma causa diferente de sua própria conclusão, falha ou parada, e requer Agent SDK v0.3.273 ou posterior. Claude Code o define apenas em sessões que se conectam por meio de claude.ai: sessões na nuvem, incluindo aquelas em runners auto-hospedados, e sessões de Remote Control. Uma chamada query() local nunca o define. Seu único valor, worker_restart, significa que o processo do Claude Code que estava executando a tarefa foi reiniciado. A notificação carrega o status "stopped", então trate a tarefa como nem concluída nem com falha. Quando Claude Code move uma chamada de ferramenta MCP longa para segundo plano, o bloco tool_result para essa chamada contém apenas um placeholder e o resultado real da chamada chega nesta notificação. Corresponda a notificação à chamada com tool_use_id. Em uma notificação completed, resource_links lista os arquivos que a ferramenta retornou por referência como entradas SDKMcpResourceLink, com os mesmos limites de 50 links e 64 KiB que tool_use_result.resourceLinks. Claude Code omite resource_links quando o resultado não tinha links e em notificações para tarefas que não são chamadas de ferramenta MCP. resource_links requer Agent SDK v0.3.257 ou posterior. Claude Code prepara um aviso a cada notificação de tarefa que envia ao modelo, exceto entregas marcadas com a subkind scheduled-trigger, que carregam um enquadramento de tarefa atribuída. O aviso afirma que nenhuma entrada humana ocorreu, então o modelo não trata a notificação como uma instrução ou aprovação do usuário. Para detectar um turno de notificação de tarefa, verifique origin.kind === "task-notification" em SDKUserMessage ou SDKResultMessage em vez de corresponder ao texto do aviso. Leia subkind do mesmo campo se precisar saber o que o levantou. Antes de v2.1.205, Claude Code deixava o aviso fora de notificações que chegavam enquanto a sessão estava ociosa.

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.
Enquanto uma chamada de ferramenta é executada na conversa principal, Claude Code emite uma mensagem tool_progress a cada 30 segundos com heartbeat: true. Cada heartbeat carrega o nome da ferramenta e segundos decorridos, para que você possa distinguir uma chamada de longa duração de uma sessão travada. Claude Code não emite heartbeats para chamadas de ferramenta dentro de um subagente. O campo heartbeat requer Agent SDK v0.3.214 ou posterior. Antes de v2.1.257, Claude Code também não emitia heartbeats para uma chamada de ferramenta Agent em primeiro plano. Em mensagens tool_progress para a ferramenta Agent que não são heartbeats, subagent_type nomeia o tipo de subagente em execução, como general-purpose. subagent_retry está presente enquanto esse subagente aguarda um backoff de erro de API, como um rate limit ou sobrecarga, com uma mensagem por nova tentativa. Ambos os campos requerem Agent SDK v0.3.214 ou posterior. Para renderizar um indicador de nova tentativa de subagent_retry:
  • Rastreie o indicador por parent_tool_use_id, que é único por subagente. tool_use_id é compartilhado por subagentes paralelos de um turno de assistente, então rastrear por ele deixaria a atualização de um subagente limpar o indicador de outro.
  • Limpe o indicador quando um tool_progress posterior para o mesmo parent_tool_use_id chegar sem subagent_retry nem heartbeat: true, ou quando a mensagem de resultado da ferramenta chegar. Frames com heartbeat: true relatam apenas vivacidade, então mantenha o indicador quando um chegar. attempt pode exceder max_retries sob retry persistente, então não derive limpeza dos contadores.
  • Trate error_category como um token para escolher seu próprio texto de mensagem, não como texto de exibição. Os valores são rate_limit, overloaded, authentication_failed, server_error, cloud_credential_error e unknown. Manipule um valor que você não reconheça da forma que manipula unknown, porque versões posteriores podem adicionar valores.

SDKAuthStatusMessage

Emitido durante fluxos de autenticação.

SDKTaskStartedMessage

Emitido quando uma tarefa começa. O campo task_type é "local_bash" para comandos Bash e watches Monitor, "local_agent" para subagentes, ou "remote_agent".
run_id identifica uma execução da tarefa. Quando uma tarefa é executada novamente sob o mesmo task_id, como um subagente que Claude retoma, a nova execução recebe um novo run_id. O campo requer Agent SDK v0.3.292 ou posterior. Use-o para manter separadas as execuções de uma tarefa:
  • Associar mensagens a uma execução: as mensagens task_started, task_progress, task_updated e task_notification de uma execução carregam o mesmo run_id. A entrada da execução em cada SDKBackgroundTasksChangedMessage também o carrega, assim como o runId na origem da mensagem de usuário que entrega a notificação da execução.
  • Detectar uma mensagem atrasada: comparados como strings simples, os IDs de execução de uma tarefa são ordenados na ordem em que as execuções começaram, então uma mensagem cujo run_id fica antes da execução que você está exibindo vem de uma execução anterior. Trate o valor como opaco, exceto por essa comparação.
  • Recorrer a task_id: quando uma mensagem não carrega run_id, como a task_notification que uma sessão retomada emite para encerrar uma tarefa que o processo anterior iniciou, atribua-a por task_id.
Por exemplo, estas três mensagens, reduzidas aos seus campos de identificação, vêm de um subagente em segundo plano que Claude retomou uma vez. As duas mensagens task_started compartilham um task_id, e a notificação que encerrou a primeira execução carrega o ID da primeira execução:
ambient é true para tarefas que não fazem parte do trabalho da sessão, como tarefas que Claude Code executa para sua própria operação. Watchers de atualização ao vivo também são ambient, incluindo watchers que o usuário pediu. Exclua tarefas ambient de indicadores de atividade. O campo requer Agent SDK v0.3.247 ou posterior. ambient também aparece em SDKTaskNotificationMessage e em entradas SDKBackgroundTasksChangedMessage. is_backgrounded e spawn_depth descrevem como Claude Code iniciou a tarefa. Ambos os campos requerem Agent SDK v0.3.238 ou posterior.
  • is_backgrounded: Claude Code o define em tarefas "local_agent" e "local_bash". true significa que a tarefa é executada em segundo plano. false significa que a tarefa é executada em primeiro plano, e a chamada de ferramenta que a iniciou permanece bloqueada até que a tarefa termine ou se mova para segundo plano.
  • spawn_depth: Claude Code o define apenas em tarefas "local_agent". Um subagente que a thread principal gerou tem profundidade 1. Um subagente que um subagente de profundidade 1 gerou tem profundidade 2, e assim por diante.
Um subagente retomado sempre relata is_backgrounded: true, porque Claude Code executa cada subagente retomado em segundo plano. Quando uma tarefa em primeiro plano se move para segundo plano depois, Claude Code relata o novo valor is_backgrounded em uma mensagem task_updated em vez de enviar um segundo task_started. parent_task_id contém o task_id do subagente que iniciou esta tarefa. Use-o para agrupar cada tarefa sob o subagente que a iniciou. Claude Code o define em tarefas de subagente, Bash e Monitor. O campo requer Agent SDK v0.3.292 ou posterior. Ele está ausente quando:
  • A thread principal iniciou a tarefa
  • Claude Code não rastreia mais a tarefa pai
  • Um colega de equipe ou um agente dentro de um fluxo de trabalho iniciou a tarefa
O pai pode ser uma tarefa em primeiro plano ou uma que já terminou, então trate um ID que você não reconheça como ausência de pai.

SDKTaskProgressMessage

Emitido periodicamente enquanto um subagente ou tarefa em segundo plano está em execução. Para o campo run_id, veja SDKTaskStartedMessage, que o define e seu requisito de versão. Para uma tarefa de subagente, o campo summary carrega um resumo de progresso gerado por modelo e é preenchido apenas quando agentProgressSummaries está ativado. Para uma chamada de ferramenta MCP em segundo plano, summary carrega o progresso mais recente relatado pelo servidor MCP e não depende dessa opção.

SDKTaskUpdatedMessage

Emitido quando o estado de uma tarefa em segundo plano 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(). Para o campo run_id, veja SDKTaskStartedMessage, que o define e seu requisito de versão.

SDKBackgroundTasksChangedMessage

Emitido sempre que o conjunto de tarefas em segundo plano ativas muda: uma tarefa inicia, é concluída ou é eliminada; um agente em primeiro plano é colocado em segundo plano; ou o campo description, ambient ou parent_task_id de uma tarefa muda. Para os campos run_id e parent_task_id em cada entrada, veja SDKTaskStartedMessage, que os define e seus requisitos de versão. 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. Quando uma tarefa termina, seus task_updated e task_notification chegam antes do background_tasks_changed que a remove da lista. Fora isso, a ordenação relativa aos eventos por tarefa é não especificada. 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. Quando você envia uma requisição de controle initialize repetida para uma sessão em execução, como com reinitialize() após uma lacuna de transporte, Claude Code segue a resposta com um snapshot do conjunto ativo atual, mesmo quando está vazio. Um host reconectando portanto aprende o que está em execução sem esperar pela próxima mudança de associação. Antes de Agent SDK v0.3.239, Claude Code não enviava snapshot após um initialize repetido. Requer Claude Code v2.1.203 ou posterior.
subagent_type nomeia o tipo de subagente em entradas cujo task_type é "local_agent", como general-purpose ou o nome de um subagente personalizado. O campo requer Agent SDK v0.3.293 ou posterior.

SDKThinkingTokensMessage

Emitido enquanto Claude está produzindo um bloco de pensamento, incluindo um redatado. estimated_tokens é uma estimativa em execução dos tokens de pensamento gerados até agora no bloco atual, e estimated_tokens_delta é o incremento carregado por este frame. Use essas estimativas para exibição de progresso. Quando o modelo ou provedor relata uma divisão, a contagem final para o loop de agente de nível superior é usage.output_tokens_details.thinking_tokens da mensagem de resultado, que não inclui tokens de subagente. Requer Claude Code v2.1.153 ou posterior.

SDKSessionStateChangedMessage

Emitido quando Claude Code relata o estado da sessão. Para receber essas mensagens, defina CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS=1. Claude Code pode relatar o mesmo estado mais de uma vez, então leia uma mensagem como o estado atual da sessão em vez de como uma transição. O campo state carrega um destes valores:
  • running: a sessão está trabalhando.
  • idle: Claude Code está aguardando seu próximo prompt.
  • requires_action: a sessão está bloqueada aguardando uma resposta a uma requisição que enviou ao seu host, como um prompt de permissão.
A mensagem idle de um turno e sua mensagem result podem chegar em qualquer ordem. Para alterar se idle aguarda trabalho em segundo plano, como um subagente em segundo plano ou uma execução de workflow, veja CLAUDE_CODE_BG_TASKS_REPORT_RUNNING.

SDKFilesPersistedEvent

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

SDKRateLimitEvent

Emitido quando a sessão encontra um rate limit.
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 rate limit que não são rejeições de créditos necessários. Requer Claude Code v2.1.181 ou posterior.

SDKLocalCommandOutputMessage

Claude Code não emite este tipo de mensagem. Quando você envia um comando como /context ou /usage como um prompt, sua saída chega como um SDKAssistantMessage.

SDKCommandsChangedMessage

Emitido quando o conjunto de comandos disponíveis muda durante a sessão, como quando Claude Code descobre skills 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() após esta mensagem retorna a mesma lista atualizada, porque o método rastreia o push mais recente; isso requer Agent SDK v0.3.216 ou posterior. Em versões anteriores do SDK, supportedCommands() retorna o snapshot capturado na inicialização e nunca reflete mudanças durante a sessão. Claude Code também emite esta mensagem quando prompts de um servidor MCP entram ou saem da lista, por exemplo quando um servidor termina de se conectar após a sessão iniciar. Isso requer Claude Code v2.1.281 ou posterior.

SDKPromptSuggestionMessage

Emitido após um turno quando promptSuggestions está ativado e Claude Code gerou uma sugestão para esse turno. Contém o próximo prompt de usuário previsto. Para os turnos que não recebem nenhuma, veja Quando Claude Code pula sugestões.

SDKConversationResetMessage

Emitido quando a conversa da sessão é substituída sem encerrar a sessão. Em uma chamada query(), apenas /clear e seus aliases produzem esta mensagem. Monte uma transcrição vazia sob new_conversation_id e descarte qualquer título de sessão em cache.
Os campos opcionais descrevem o reset:
  • trigger: o que descartou a conversa. Redefina sua transcrição em cada mensagem conversation_reset, incluindo uma onde este campo está ausente ou carrega um valor que você não reconhece.
  • user_message_uuid: o uuid da mensagem de usuário que carregava o /clear. Use-o para corresponder o reset a essa mensagem.
  • timestamp: quando o reset aconteceu, como uma string ISO 8601 em UTC. Use-o para exibição, não para ordenar mensagens.
Os campos trigger, user_message_uuid e timestamp requerem Claude Code v2.1.281 ou posterior. 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.
AbortError é a única classe de erro na API tipada do SDK. Outras falhas, como o processo Claude Code saindo ou falhando ao iniciar, rejeitam a iteração de mensagem com erros que não carregam nenhuma classe SDK para corresponder. Solução de problemas indexa esses erros por mensagem, com a causa e correção para cada.

Configuração de Sandbox

SandboxSettings

Configuração para o comportamento do sandbox. Use isso para habilitar sandboxing de comandos e configurar restrições de rede programaticamente.
O sandbox depende do suporte da plataforma e, no Linux, de 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 uma exceção após gerar esse resultado de erro, então envolva o loop em um bloco try para continuar além dele. Veja Handle the result 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 do sistema que alcançam fora do sandbox. Por exemplo, permitir /var/run/docker.sock efetivamente concede acesso completo ao sistema host através da API Docker, contornando o isolamento do sandbox. Permita apenas sockets Unix que são estritamente necessários e compreenda 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 em sandbox 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 aplica allowedDomains com base no nome de host solicitado e não encerra ou inspeciona tráfego TLS, então técnicas como domain fronting podem potencialmente contorná-lo. Veja Limitações de segurança do 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á habilitado, o modelo pode solicitar executar comandos fora do sandbox definindo dangerouslyDisableSandbox: true na entrada da ferramenta. Essas solicitações fazem fallback para o sistema de permissões existente, significando que seu manipulador canUseTool é invocado, permitindo que você implemente lógica de autorização personalizada. Suas entradas excludedCommands em vez disso contornam o sandbox com nenhum envolvimento do modelo; sandbox.excludedCommands cobre quando uma entrada se aplica. No exemplo abaixo, isCommandAuthorized representa uma verificação de autorização que você define.
Comandos em execução com dangerouslyDisableSandbox: true têm acesso completo ao sistema. Certifique-se de que seu manipulador canUseTool valida essas solicitações cuidadosamente.Se permissionMode for definido como bypassPermissions e allowUnsandboxedCommands estiver habilitado, o modelo pode executar autonomamente comandos fora do sandbox sem prompts de aprovação, exceto pelas ações que nenhum modo aprova automaticamente. Essa combinação efetivamente permite que o modelo escape do isolamento do sandbox silenciosamente.

Veja também