Experimente a nova interface V2 (visualização): Uma interface simplificada com padrões send() e receive() agora está disponível, facilitando conversas multi-turno. Saiba mais
npm install @anthropic-ai/claude-agent-sdkquery()A função principal para interagir com Claude Code. Cria um gerador assíncrono que transmite mensagens conforme chegam.
function query({
prompt,
options
}: {
prompt: string | AsyncIterable<SDKUserMessage>;
options?: Options;
}): Query| Parâmetro | Tipo | Descrição |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | O prompt de entrada como uma string ou iterável assíncrono para modo de transmissão |
options | Options | Objeto de configuração opcional (veja o tipo Options abaixo) |
Retorna um objeto Query que estende AsyncGenerator<SDKMessage, void> com métodos adicionais.
tool()Cria uma definição de ferramenta MCP type-safe para uso com servidores MCP do SDK.
function tool<Schema extends ZodRawShape>(
name: string,
description: string,
inputSchema: Schema,
handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>| Parâmetro | Tipo | Descrição |
|---|---|---|
name | string | O nome da ferramenta |
description | string | Uma descrição do que a ferramenta faz |
inputSchema | Schema extends ZodRawShape | Schema Zod definindo os parâmetros de entrada da ferramenta |
handler | (args, extra) => Promise<CallToolResult> | Função assíncrona que executa a lógica da ferramenta |
createSdkMcpServer()Cria uma instância de servidor MCP que é executada no mesmo processo que sua aplicação.
function createSdkMcpServer(options: {
name: string;
version?: string;
tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance| Parâmetro | Tipo | Descrição |
|---|---|---|
options.name | string | O nome do servidor MCP |
options.version | string | String de versão opcional |
options.tools | Array<SdkMcpToolDefinition> | Array de definições de ferramentas criadas com tool() |
OptionsObjeto de configuração para a função query().
| Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
abortController | AbortController | new AbortController() | Controlador para cancelar operações |
additionalDirectories | string[] | [] | Diretórios adicionais que Claude pode acessar |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | Defina subagentos programaticamente |
QueryInterface retornada pela função query().
interface Query extends AsyncGenerator<SDKMessage, void> {
interrupt(): Promise<void>;
rewindFiles(userMessageUuid: string): Promise<void>;
setPermissionMode(mode: PermissionMode): Promise<void>;
setModel(model?: string): Promise<void>;
setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;
supportedCommands(): Promise<SlashCommand[]>;
supportedModels(): Promise<ModelInfo[]>;
mcpServerStatus(): Promise<McpServerStatus[]>;
accountInfo(): Promise<AccountInfo>;
}| Método | Descrição |
|---|---|
interrupt() | Interrompe a consulta (disponível apenas em modo de entrada de transmissão) |
rewindFiles(userMessageUuid) | Restaura arquivos para seu estado na mensagem do usuário especificada. Requer enableFileCheckpointing: true. Veja File checkpointing |
setPermissionMode() | Altera o modo de permissão (disponível apenas em modo de entrada de transmissão) |
setModel() | Altera o modelo (disponível apenas em modo de entrada de transmissão) |
setMaxThinkingTokens() | Altera os tokens de pensamento máximos (disponível apenas em modo de entrada de transmissão) |
supportedCommands() | Retorna comandos de barra invertida disponíveis |
AgentDefinitionConfiguração para um subagentos definido programaticamente.
type AgentDefinition = {
description: string;
tools?: string[];
prompt: string;
model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}| Campo | Obrigatório | Descrição |
|---|---|---|
description | Sim | Descrição em linguagem natural de quando usar este agente |
tools | Não | Array de nomes de ferramentas permitidas. Se omitido, herda todas as ferramentas |
prompt | Sim | O prompt do sistema do agente |
model | Não | Override de modelo para este agente. Se omitido, usa o modelo principal |
SettingSourceControla quais fontes de configuração baseadas em sistema de arquivos o SDK carrega as configurações.
type SettingSource = 'user' | 'project' | 'local';| Valor | Descrição | Localização |
|---|---|---|
'user' | Configurações globais do usuário | ~/.claude/settings.json |
'project' | Configurações de projeto compartilhadas (controladas por versão) | .claude/settings.json |
'local' | Configurações de projeto local (gitignored) | .claude/settings.local.json |
Quando settingSources é omitido ou undefined, o SDK não carrega nenhuma configuração do sistema de arquivos. Isso fornece isolamento para aplicações SDK.
Carregue todas as configurações do sistema de arquivos (comportamento legado):
// Carregue todas as configurações como o SDK v0.0.x fez
const result = query({
prompt: "Analyze this code",
options: {
settingSources: ['user', 'project', 'local'] // Carregue todas as configurações
}
});Carregue apenas fontes de configuração específicas:
// Carregue apenas configurações de projeto, ignore user e local
const result = query({
prompt: "Run CI checks",
options: {
settingSources: ['project'] // Apenas .claude/settings.json
}
});Ambientes de teste e CI:
// Garanta comportamento consistente em CI excluindo configurações locais
const result = query({
prompt: "Run tests",
options: {
settingSources: ['project'], // Apenas configurações compartilhadas da equipe
permissionMode: 'bypassPermissions'
}
});Aplicações apenas SDK:
// Defina tudo programaticamente (comportamento padrão)
// Sem dependências do sistema de arquivos - settingSources padrão é []
const result = query({
prompt: "Review this PR",
options: {
// settingSources: [] é o padrão, não precisa especificar
agents: { /* ... */ },
mcpServers: { /* ... */ },
allowedTools: ['Read', 'Grep', 'Glob']
}
});Carregando instruções de projeto CLAUDE.md:
// Carregue configurações de projeto para incluir arquivos CLAUDE.md
const result = query({
prompt: "Add a new feature following project conventions",
options: {
systemPrompt: {
type: 'preset',
preset: 'claude_code' // Necessário para usar CLAUDE.md
},
settingSources: ['project'], // Carrega CLAUDE.md do diretório do projeto
allowedTools: ['Read', 'Write', 'Edit']
}
});Quando múltiplas fontes são carregadas, as configurações são mescladas com esta precedência (maior para menor):
.claude/settings.local.json).claude/settings.json)~/.claude/settings.json)Opções programáticas (como agents, allowedTools) sempre substituem configurações do sistema de arquivos.
PermissionModetype PermissionMode =
| 'default' // Comportamento de permissão padrão
| 'acceptEdits' // Auto-aceitar edições de arquivo
| 'bypassPermissions' // Bypass de todas as verificações de permissão
| 'plan' // Modo de planejamento - sem execuçãoCanUseToolTipo de função de permissão personalizada para controlar o uso de ferramentas.
type CanUseTool = (
toolName: string,
input: ToolInput,
options: {
signal: AbortSignal;
suggestions?: PermissionUpdate[];
}
) => Promise<PermissionResult>;PermissionResultResultado de uma verificação de permissão.
type PermissionResult =
| {
behavior: 'allow';
updatedInput: ToolInput;
updatedPermissions?: PermissionUpdate[];
}
| {
behavior: 'deny';
message: string;
interrupt?: boolean;
}McpServerConfigConfiguração para servidores MCP.
type McpServerConfig =
| McpStdioServerConfig
| McpSSEServerConfig
| McpHttpServerConfig
| McpSdkServerConfigWithInstance;McpStdioServerConfigtype McpStdioServerConfig = {
type?: 'stdio';
command: string;
args?: string[];
env?: Record<string, string>;
}McpSSEServerConfigtype McpSSEServerConfig = {
type: 'sse';
url: string;
headers?: Record<string, string>;
}McpHttpServerConfigtype McpHttpServerConfig = {
type: 'http';
url: string;
headers?: Record<string, string>;
}McpSdkServerConfigWithInstancetype McpSdkServerConfigWithInstance = {
type: 'sdk';
name: string;
instance: McpServer;
}SdkPluginConfigConfiguração para carregamento de plugins no SDK.
type SdkPluginConfig = {
type: 'local';
path: string;
}| Campo | Tipo | Descrição |
|---|---|---|
type | 'local' | Deve ser 'local' (apenas plugins locais atualmente suportados) |
path | string | Caminho absoluto ou relativo para o diretório do plugin |
Exemplo:
plugins: [
{ type: 'local', path: './my-plugin' },
{ type: 'local', path: '/absolute/path/to/plugin' }
]Para informações completas sobre criação e uso de plugins, veja Plugins.
SDKMessageTipo de união de todas as mensagens possíveis retornadas pela consulta.
type SDKMessage =
| SDKAssistantMessage
| SDKUserMessage
| SDKUserMessageReplay
| SDKResultMessage
| SDKSystemMessage
| SDKPartialAssistantMessage
| SDKCompactBoundaryMessage;SDKAssistantMessageMensagem de resposta do assistente.
type SDKAssistantMessage = {
type: 'assistant';
uuid: UUID;
session_id: string;
message: APIAssistantMessage; // Do SDK Anthropic
parent_tool_use_id: string | null;
}SDKUserMessageMensagem de entrada do usuário.
type SDKUserMessage = {
type: 'user';
uuid?: UUID;
session_id: string;
message: APIUserMessage; // Do SDK Anthropic
parent_tool_use_id: string | null;
}SDKUserMessageReplayMensagem de usuário repetida com UUID obrigatório.
type SDKUserMessageReplay = {
type: 'user';
uuid: UUID;
session_id: string;
message: APIUserMessage;
parent_tool_use_id: string | null;
}SDKResultMessageMensagem de resultado final.
type SDKResultMessage =
| {
type: 'result';
subtype: 'success';
uuid: UUID;
session_id: string;
duration_ms: number;
duration_api_ms: number;
is_error: boolean;
num_turns: number;
result: string;
total_cost_usd: number;
usage: NonNullableUsage;
modelUsage: { [modelName: string]: ModelUsage };
permission_denials: SDKPermissionDenial[];
structured_output?: unknown;
}
| {
type: 'result';
subtype:
| 'error_max_turns'
| 'error_during_execution'
| 'error_max_budget_usd'
| 'error_max_structured_output_retries';
uuid: UUID;
session_id: string;
duration_ms: number;
duration_api_ms: number;
is_error: boolean;
num_turns: number;
total_cost_usd: number;
usage: NonNullableUsage;
modelUsage: { [modelName: string]: ModelUsage };
permission_denials: SDKPermissionDenial[];
errors: string[];
}SDKSystemMessageMensagem de inicialização do sistema.
type SDKSystemMessage = {
type: 'system';
subtype: 'init';
uuid: UUID;
session_id: string;
apiKeySource: ApiKeySource;
cwd: string;
tools: string[];
mcp_servers: {
name: string;
status: string;
}[];
model: string;
permissionMode: PermissionMode;
slash_commands: string[];
output_style: string;
}SDKPartialAssistantMessageMensagem parcial de transmissão (apenas quando includePartialMessages é true).
type SDKPartialAssistantMessage = {
type: 'stream_event';
event: RawMessageStreamEvent; // Do SDK Anthropic
parent_tool_use_id: string | null;
uuid: UUID;
session_id: string;
}SDKCompactBoundaryMessageMensagem indicando um limite de compactação de conversa.
type SDKCompactBoundaryMessage = {
type: 'system';
subtype: 'compact_boundary';
uuid: UUID;
session_id: string;
compact_metadata: {
trigger: 'manual' | 'auto';
pre_tokens: number;
};
}SDKPermissionDenialInformações sobre um uso de ferramenta negado.
type SDKPermissionDenial = {
tool_name: string;
tool_use_id: string;
tool_input: ToolInput;
}Para um guia abrangente sobre o uso de hooks com exemplos e padrões comuns, veja o Guia de Hooks.
HookEventEventos de hook disponíveis.
type HookEvent =
| 'PreToolUse'
| 'PostToolUse'
| 'PostToolUseFailure'
| 'Notification'
| 'UserPromptSubmit'
| 'SessionStart'
| 'SessionEnd'
| 'Stop'
| 'SubagentStart'
| 'SubagentStop'
| 'PreCompact'
| 'PermissionRequest';HookCallbackTipo de função de callback de hook.
type HookCallback = (
input: HookInput, // União de todos os tipos de entrada de hook
toolUseID: string | undefined,
options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;HookCallbackMatcherConfiguração de hook com matcher opcional.
interface HookCallbackMatcher {
matcher?: string;
hooks: HookCallback[];
}HookInputTipo de união de todos os tipos de entrada de hook.
type HookInput =
| PreToolUseHookInput
| PostToolUseHookInput
| PostToolUseFailureHookInput
| NotificationHookInput
| UserPromptSubmitHookInput
| SessionStartHookInput
| SessionEndHookInput
| StopHookInput
| SubagentStartHookInput
| SubagentStopHookInput
| PreCompactHookInput
| PermissionRequestHookInput;BaseHookInputInterface base que todos os tipos de entrada de hook estendem.
type BaseHookInput = {
session_id: string;
transcript_path: string;
cwd: string;
permission_mode?: string;
}PreToolUseHookInputtype PreToolUseHookInput = BaseHookInput & {
hook_event_name: 'PreToolUse';
tool_name: string;
tool_input: unknown;
}PostToolUseHookInputtype PostToolUseHookInput = BaseHookInput & {
hook_event_name: 'PostToolUse';
tool_name: string;
tool_input: unknown;
tool_response: unknown;
}PostToolUseFailureHookInputtype PostToolUseFailureHookInput = BaseHookInput & {
hook_event_name: 'PostToolUseFailure';
tool_name: string;
tool_input: unknown;
error: string;
is_interrupt?: boolean;
}NotificationHookInputtype NotificationHookInput = BaseHookInput & {
hook_event_name: 'Notification';
message: string;
title?: string;
}UserPromptSubmitHookInputtype UserPromptSubmitHookInput = BaseHookInput & {
hook_event_name: 'UserPromptSubmit';
prompt: string;
}SessionStartHookInputtype SessionStartHookInput = BaseHookInput & {
hook_event_name: 'SessionStart';
source: 'startup' | 'resume' | 'clear' | 'compact';
}SessionEndHookInputtype SessionEndHookInput = BaseHookInput & {
hook_event_name: 'SessionEnd';
reason: ExitReason; // String do array EXIT_REASONS
}StopHookInputtype StopHookInput = BaseHookInput & {
hook_event_name: 'Stop';
stop_hook_active: boolean;
}SubagentStartHookInputtype SubagentStartHookInput = BaseHookInput & {
hook_event_name: 'SubagentStart';
agent_id: string;
agent_type: string;
}SubagentStopHookInputtype SubagentStopHookInput = BaseHookInput & {
hook_event_name: 'SubagentStop';
stop_hook_active: boolean;
}PreCompactHookInputtype PreCompactHookInput = BaseHookInput & {
hook_event_name: 'PreCompact';
trigger: 'manual' | 'auto';
custom_instructions: string | null;
}PermissionRequestHookInputtype PermissionRequestHookInput = BaseHookInput & {
hook_event_name: 'PermissionRequest';
tool_name: string;
tool_input: unknown;
permission_suggestions?: PermissionUpdate[];
}HookJSONOutputValor de retorno do hook.
type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;AsyncHookJSONOutputtype AsyncHookJSONOutput = {
async: true;
asyncTimeout?: number;
}SyncHookJSONOutputtype SyncHookJSONOutput = {
continue?: boolean;
suppressOutput?: boolean;
stopReason?: string;
decision?: 'approve' | 'block';
systemMessage?: string;
reason?: string;
hookSpecificOutput?:
| {
hookEventName: 'PreToolUse';
permissionDecision?: 'allow' | 'deny' | 'ask';
permissionDecisionReason?: string;
updatedInput?: Record<string, unknown>;
}
| {
hookEventName: 'UserPromptSubmit';
additionalContext?: string;
}
| {
hookEventName: 'SessionStart';
additionalContext?: string;
}
| {
hookEventName: 'PostToolUse';
additionalContext?: string;
};
}Documentação de esquemas de entrada para todas as ferramentas Claude Code integradas. Esses tipos são exportados de @anthropic-ai/claude-agent-sdk e podem ser usados para interações de ferramentas type-safe.
ToolInputNota: Este é um tipo apenas para documentação para clareza. Representa a união de todos os tipos de entrada de ferramenta.
type ToolInput =
| AgentInput
| AskUserQuestionInput
| BashInput
| BashOutputInput
| FileEditInput
| FileReadInput
| FileWriteInput
| GlobInput
| GrepInput
| KillShellInput
| NotebookEditInput
| WebFetchInput
| WebSearchInput
| TodoWriteInput
| ExitPlanModeInput
| ListMcpResourcesInput
| ReadMcpResourceInput;Nome da ferramenta: Task
interface AgentInput {
/**
* Uma descrição breve (3-5 palavras) da tarefa
*/
description: string;
/**
* A tarefa para o agente executar
*/
prompt: string;
/**
* O tipo de agente especializado a usar para esta tarefa
*/
subagent_type: string;
}Inicia um novo agente para lidar com tarefas complexas e multi-etapas de forma autônoma.
Nome da ferramenta: AskUserQuestion
interface AskUserQuestionInput {
/**
* Perguntas a fazer ao usuário (1-4 perguntas)
*/
questions: Array<{
/**
* A pergunta completa a fazer ao usuário. Deve ser clara, específica,
* e terminar com um ponto de interrogação.
*/
question: string;
/**
* Rótulo muito curto exibido como um chip/tag (máx 12 caracteres).
* Exemplos: "Auth method", "Library", "Approach"
*/
header: string;
/**
* As opções disponíveis (2-4 opções). Uma opção "Other" é
* fornecida automaticamente.
*/
options: Array<{
/**
* Texto de exibição para esta opção (1-5 palavras)
*/
label: string;
/**
* Explicação do que esta opção significa
*/
description: string;
}>;
/**
* Defina como true para permitir múltiplas seleções
*/
multiSelect: boolean;
}>;
/**
* Respostas do usuário preenchidas pelo sistema de permissões.
* Mapeia texto de pergunta para rótulo(s) de opção selecionada.
* Respostas de múltipla seleção são separadas por vírgula.
*/
answers?: Record<string, string>;
}Faz perguntas de esclarecimento ao usuário durante a execução. Veja Handling the AskUserQuestion Tool para detalhes de uso.
Nome da ferramenta: Bash
interface BashInput {
/**
* O comando a executar
*/
command: string;
/**
* Timeout opcional em milissegundos (máx 600000)
*/
timeout?: number;
/**
* Descrição clara e concisa do que este comando faz em 5-10 palavras
*/
description?: string;
/**
* Defina como true para executar este comando em background
*/
run_in_background?: boolean;
}Executa comandos bash em uma sessão de shell persistente com timeout opcional e execução em background.
Nome da ferramenta: BashOutput
interface BashOutputInput {
/**
* O ID do shell em background para recuperar saída
*/
bash_id: string;
/**
* Regex opcional para filtrar linhas de saída
*/
filter?: string;
}Recupera saída de um shell bash em execução ou concluído em background.
Nome da ferramenta: Edit
interface FileEditInput {
/**
* O caminho absoluto para o arquivo a modificar
*/
file_path: string;
/**
* O texto a substituir
*/
old_string: string;
/**
* O texto para substituir (deve ser diferente de old_string)
*/
new_string: string;
/**
* Substituir todas as ocorrências de old_string (padrão false)
*/
replace_all?: boolean;
}Realiza substituições exatas de string em arquivos.
Nome da ferramenta: Read
interface FileReadInput {
/**
* O caminho absoluto para o arquivo a ler
*/
file_path: string;
/**
* O número da linha para começar a ler
*/
offset?: number;
/**
* O número de linhas a ler
*/
limit?: number;
}Lê arquivos do sistema de arquivos local, incluindo texto, imagens, PDFs e notebooks Jupyter.
Nome da ferramenta: Write
interface FileWriteInput {
/**
* O caminho absoluto para o arquivo a escrever
*/
file_path: string;
/**
* O conteúdo a escrever no arquivo
*/
content: string;
}Escreve um arquivo no sistema de arquivos local, sobrescrevendo se existir.
Nome da ferramenta: Glob
interface GlobInput {
/**
* O padrão glob para corresponder arquivos
*/
pattern: string;
/**
* O diretório para pesquisar (padrão cwd)
*/
path?: string;
}Correspondência rápida de padrão de arquivo que funciona com qualquer tamanho de codebase.
Nome da ferramenta: Grep
interface GrepInput {
/**
* O padrão de expressão regular para pesquisar
*/
pattern: string;
/**
* Arquivo ou diretório para pesquisar (padrão cwd)
*/
path?: string;
/**
* Padrão glob para filtrar arquivos (por exemplo "*.js")
*/
glob?: string;
/**
* Tipo de arquivo para pesquisar (por exemplo "js", "py", "rust")
*/
type?: string;
/**
* Modo de saída: "content", "files_with_matches", ou "count"
*/
output_mode?: 'content' | 'files_with_matches' | 'count';
/**
* Pesquisa insensível a maiúsculas/minúsculas
*/
'-i'?: boolean;
/**
* Mostrar números de linha (para modo content)
*/
'-n'?: boolean;
/**
* Linhas para mostrar antes de cada correspondência
*/
'-B'?: number;
/**
* Linhas para mostrar após cada correspondência
*/
'-A'?: number;
/**
* Linhas para mostrar antes e depois de cada correspondência
*/
'-C'?: number;
/**
* Limitar saída às primeiras N linhas/entradas
*/
head_limit?: number;
/**
* Ativar modo multilinha
*/
multiline?: boolean;
}Ferramenta de pesquisa poderosa construída em ripgrep com suporte a regex.
Nome da ferramenta: KillBash
interface KillShellInput {
/**
* O ID do shell em background para matar
*/
shell_id: string;
}Mata um shell bash em execução em background pelo seu ID.
Nome da ferramenta: NotebookEdit
interface NotebookEditInput {
/**
* O caminho absoluto para o arquivo de notebook Jupyter
*/
notebook_path: string;
/**
* O ID da célula a editar
*/
cell_id?: string;
/**
* A nova fonte para a célula
*/
new_source: string;
/**
* O tipo da célula (code ou markdown)
*/
cell_type?: 'code' | 'markdown';
/**
* O tipo de edição (replace, insert, delete)
*/
edit_mode?: 'replace' | 'insert' | 'delete';
}Edita células em arquivos de notebook Jupyter.
Nome da ferramenta: WebFetch
interface WebFetchInput {
/**
* A URL para buscar conteúdo
*/
url: string;
/**
* O prompt para executar no conteúdo buscado
*/
prompt: string;
}Busca conteúdo de uma URL e o processa com um modelo de IA.
Nome da ferramenta: WebSearch
interface WebSearchInput {
/**
* A consulta de pesquisa a usar
*/
query: string;
/**
* Incluir apenas resultados destes domínios
*/
allowed_domains?: string[];
/**
* Nunca incluir resultados destes domínios
*/
blocked_domains?: string[];
}Pesquisa a web e retorna resultados formatados.
Nome da ferramenta: TodoWrite
interface TodoWriteInput {
/**
* A lista de tarefas atualizada
*/
todos: Array<{
/**
* A descrição da tarefa
*/
content: string;
/**
* O status da tarefa
*/
status: 'pending' | 'in_progress' | 'completed';
/**
* Forma ativa da descrição da tarefa
*/
activeForm: string;
}>;
}Cria e gerencia uma lista de tarefas estruturada para rastrear progresso.
Nome da ferramenta: ExitPlanMode
interface ExitPlanModeInput {
/**
* O plano a executar pelo usuário para aprovação
*/
plan: string;
}Sai do modo de planejamento e solicita ao usuário que aprove o plano.
Nome da ferramenta: ListMcpResources
interface ListMcpResourcesInput {
/**
* Nome de servidor opcional para filtrar recursos por
*/
server?: string;
}Lista recursos MCP disponíveis de servidores conectados.
Nome da ferramenta: ReadMcpResource
interface ReadMcpResourceInput {
/**
* O nome do servidor MCP
*/
server: string;
/**
* A URI do recurso a ler
*/
uri: string;
}Lê um recurso MCP específico de um servidor.
Documentação de esquemas de saída para todas as ferramentas Claude Code integradas. Esses tipos representam os dados de resposta reais retornados por cada ferramenta.
ToolOutputNota: Este é um tipo apenas para documentação para clareza. Representa a união de todos os tipos de saída de ferramenta.
type ToolOutput =
| TaskOutput
| AskUserQuestionOutput
| BashOutput
| BashOutputToolOutput
| EditOutput
| ReadOutput
| WriteOutput
| GlobOutput
| GrepOutput
| KillBashOutput
| NotebookEditOutput
| WebFetchOutput
| WebSearchOutput
| TodoWriteOutput
| ExitPlanModeOutput
| ListMcpResourcesOutput
| ReadMcpResourceOutput;Nome da ferramenta: Task
interface TaskOutput {
/**
* Mensagem de resultado final do subagentos
*/
result: string;
/**
* Estatísticas de uso de token
*/
usage?: {
input_tokens: number;
output_tokens: number;
cache_creation_input_tokens?: number;
cache_read_input_tokens?: number;
};
/**
* Custo total em USD
*/
total_cost_usd?: number;
/**
* Duração da execução em milissegundos
*/
duration_ms?: number;
}Retorna o resultado final do subagentos após completar a tarefa delegada.
Nome da ferramenta: AskUserQuestion
interface AskUserQuestionOutput {
/**
* As perguntas que foram feitas
*/
questions: Array<{
question: string;
header: string;
options: Array<{
label: string;
description: string;
}>;
multiSelect: boolean;
}>;
/**
* As respostas fornecidas pelo usuário.
* Mapeia texto de pergunta para string de resposta.
* Respostas de múltipla seleção são separadas por vírgula.
*/
answers: Record<string, string>;
}Retorna as perguntas feitas e as respostas do usuário.
Nome da ferramenta: Bash
interface BashOutput {
/**
* Saída combinada de stdout e stderr
*/
output: string;
/**
* Código de saída do comando
*/
exitCode: number;
/**
* Se o comando foi morto devido a timeout
*/
killed?: boolean;
/**
* ID do shell para processos em background
*/
shellId?: string;
}Retorna saída de comando com status de saída. Comandos em background retornam imediatamente com um shellId.
Nome da ferramenta: BashOutput
interface BashOutputToolOutput {
/**
* Nova saída desde a última verificação
*/
output: string;
/**
* Status atual do shell
*/
status: 'running' | 'completed' | 'failed';
/**
* Código de saída (quando concluído)
*/
exitCode?: number;
}Retorna saída incremental de shells em background.
Nome da ferramenta: Edit
interface EditOutput {
/**
* Mensagem de confirmação
*/
message: string;
/**
* Número de substituições feitas
*/
replacements: number;
/**
* Caminho do arquivo que foi editado
*/
file_path: string;
}Retorna confirmação de edições bem-sucedidas com contagem de substituições.
Nome da ferramenta: Read
type ReadOutput =
| TextFileOutput
| ImageFileOutput
| PDFFileOutput
| NotebookFileOutput;
interface TextFileOutput {
/**
* Conteúdo do arquivo com números de linha
*/
content: string;
/**
* Número total de linhas no arquivo
*/
total_lines: number;
/**
* Linhas realmente retornadas
*/
lines_returned: number;
}
interface ImageFileOutput {
/**
* Dados de imagem codificados em Base64
*/
image: string;
/**
* Tipo MIME da imagem
*/
mime_type: string;
/**
* Tamanho do arquivo em bytes
*/
file_size: number;
}
interface PDFFileOutput {
/**
* Array de conteúdos de página
*/
pages: Array<{
page_number: number;
text?: string;
images?: Array<{
image: string;
mime_type: string;
}>;
}>;
/**
* Número total de páginas
*/
total_pages: number;
}
interface NotebookFileOutput {
/**
* Células do notebook Jupyter
*/
cells: Array<{
cell_type: 'code' | 'markdown';
source: string;
outputs?: any[];
execution_count?: number;
}>;
/**
* Metadados do notebook
*/
metadata?: Record<string, any>;
}Retorna o conteúdo do arquivo em formato apropriado para o tipo de arquivo.
Nome da ferramenta: Write
interface WriteOutput {
/**
* Mensagem de sucesso
*/
message: string;
/**
* Número de bytes escritos
*/
bytes_written: number;
/**
* Caminho do arquivo que foi escrito
*/
file_path: string;
}Retorna confirmação após escrever com sucesso o arquivo.
Nome da ferramenta: Glob
interface GlobOutput {
/**
* Array de caminhos de arquivo correspondentes
*/
matches: string[];
/**
* Número de correspondências encontradas
*/
count: number;
/**
* Diretório de pesquisa usado
*/
search_path: string;
}Retorna caminhos de arquivo correspondentes ao padrão glob, ordenados por tempo de modificação.
Nome da ferramenta: Grep
type GrepOutput =
| GrepContentOutput
| GrepFilesOutput
| GrepCountOutput;
interface GrepContentOutput {
/**
* Linhas correspondentes com contexto
*/
matches: Array<{
file: string;
line_number?: number;
line: string;
before_context?: string[];
after_context?: string[];
}>;
/**
* Número total de correspondências
*/
total_matches: number;
}
interface GrepFilesOutput {
/**
* Arquivos contendo correspondências
*/
files: string[];
/**
* Número de arquivos com correspondências
*/
count: number;
}
interface GrepCountOutput {
/**
* Contagens de correspondências por arquivo
*/
counts: Array<{
file: string;
count: number;
}>;
/**
* Total de correspondências em todos os arquivos
*/
total: number;
}Retorna resultados de pesquisa no formato especificado por output_mode.
Nome da ferramenta: KillBash
interface KillBashOutput {
/**
* Mensagem de sucesso
*/
message: string;
/**
* ID do shell encerrado
*/
shell_id: string;
}Retorna confirmação após encerrar o shell em segundo plano.
Nome da ferramenta: NotebookEdit
interface NotebookEditOutput {
/**
* Mensagem de sucesso
*/
message: string;
/**
* Tipo de edição realizada
*/
edit_type: 'replaced' | 'inserted' | 'deleted';
/**
* ID da célula que foi afetada
*/
cell_id?: string;
/**
* Total de células no notebook após a edição
*/
total_cells: number;
}Retorna confirmação após modificar o notebook Jupyter.
Nome da ferramenta: WebFetch
interface WebFetchOutput {
/**
* Resposta do modelo de IA ao prompt
*/
response: string;
/**
* URL que foi buscada
*/
url: string;
/**
* URL final após redirecionamentos
*/
final_url?: string;
/**
* Código de status HTTP
*/
status_code?: number;
}Retorna a análise da IA do conteúdo web buscado.
Nome da ferramenta: WebSearch
interface WebSearchOutput {
/**
* Resultados da pesquisa
*/
results: Array<{
title: string;
url: string;
snippet: string;
/**
* Metadados adicionais se disponíveis
*/
metadata?: Record<string, any>;
}>;
/**
* Número total de resultados
*/
total_results: number;
/**
* A consulta que foi pesquisada
*/
query: string;
}Retorna resultados de pesquisa formatados da web.
Nome da ferramenta: TodoWrite
interface TodoWriteOutput {
/**
* Mensagem de sucesso
*/
message: string;
/**
* Estatísticas atuais de tarefas
*/
stats: {
total: number;
pending: number;
in_progress: number;
completed: number;
};
}Retorna confirmação com estatísticas atuais de tarefas.
Nome da ferramenta: ExitPlanMode
interface ExitPlanModeOutput {
/**
* Mensagem de confirmação
*/
message: string;
/**
* Se o usuário aprovou o plano
*/
approved?: boolean;
}Retorna confirmação após sair do modo de plano.
Nome da ferramenta: ListMcpResources
interface ListMcpResourcesOutput {
/**
* Recursos disponíveis
*/
resources: Array<{
uri: string;
name: string;
description?: string;
mimeType?: string;
server: string;
}>;
/**
* Número total de recursos
*/
total: number;
}Retorna lista de recursos MCP disponíveis.
Nome da ferramenta: ReadMcpResource
interface ReadMcpResourceOutput {
/**
* Conteúdo do recurso
*/
contents: Array<{
uri: string;
mimeType?: string;
text?: string;
blob?: string;
}>;
/**
* Servidor que forneceu o recurso
*/
server: string;
}Retorna o conteúdo do recurso MCP solicitado.
PermissionUpdateOperações para atualizar permissões.
type PermissionUpdate =
| {
type: 'addRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'replaceRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'removeRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'setMode';
mode: PermissionMode;
destination: PermissionUpdateDestination;
}
| {
type: 'addDirectories';
directories: string[];
destination: PermissionUpdateDestination;
}
| {
type: 'removeDirectories';
directories: string[];
destination: PermissionUpdateDestination;
}PermissionBehaviortype PermissionBehavior = 'allow' | 'deny' | 'ask';PermissionUpdateDestinationtype PermissionUpdateDestination =
| 'userSettings' // Configurações globais do usuário
| 'projectSettings' // Configurações de projeto por diretório
| 'localSettings' // Configurações locais ignoradas pelo Git
| 'session' // Apenas sessão atualPermissionRuleValuetype PermissionRuleValue = {
toolName: string;
ruleContent?: string;
}ApiKeySourcetype ApiKeySource = 'user' | 'project' | 'org' | 'temporary';SdkBetaRecursos beta disponíveis que podem ser habilitados via opção betas. Veja cabeçalhos beta para mais informações.
type SdkBeta = 'context-1m-2025-08-07';| Valor | Descrição | Modelos Compatíveis |
|---|---|---|
'context-1m-2025-08-07' | Habilita janela de contexto de 1 milhão de tokens | Claude Sonnet 4, Claude Sonnet 4.5 |
SlashCommandInformações sobre um comando de barra disponível.
type SlashCommand = {
name: string;
description: string;
argumentHint: string;
}ModelInfoInformações sobre um modelo disponível.
type ModelInfo = {
value: string;
displayName: string;
description: string;
}McpServerStatusStatus de um servidor MCP conectado.
type McpServerStatus = {
name: string;
status: 'connected' | 'failed' | 'needs-auth' | 'pending';
serverInfo?: {
name: string;
version: string;
};
}AccountInfoInformações de conta para o usuário autenticado.
type AccountInfo = {
email?: string;
organization?: string;
subscriptionType?: string;
tokenSource?: string;
apiKeySource?: string;
}ModelUsageEstatísticas de uso por modelo retornadas em mensagens de resultado.
type ModelUsage = {
inputTokens: number;
outputTokens: number;
cacheReadInputTokens: number;
cacheCreationInputTokens: number;
webSearchRequests: number;
costUSD: number;
contextWindow: number;
}ConfigScopetype ConfigScope = 'local' | 'user' | 'project';NonNullableUsageUma versão de Usage com todos os campos anuláveis tornados não-anuláveis.
type NonNullableUsage = {
[K in keyof Usage]: NonNullable<Usage[K]>;
}UsageEstatísticas de uso de tokens (de @anthropic-ai/sdk).
type Usage = {
input_tokens: number | null;
output_tokens: number | null;
cache_creation_input_tokens?: number | null;
cache_read_input_tokens?: number | null;
}CallToolResultTipo de resultado de ferramenta MCP (de @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
content: Array<{
type: 'text' | 'image' | 'resource';
// Campos adicionais variam por tipo
}>;
isError?: boolean;
}AbortErrorClasse de erro personalizada para operações de abortagem.
class AbortError extends Error {}SandboxSettingsConfiguração para comportamento de sandbox. Use isto para habilitar sandboxing de comando e configurar restrições de rede programaticamente.
type SandboxSettings = {
enabled?: boolean;
autoAllowBashIfSandboxed?: boolean;
excludedCommands?: string[];
allowUnsandboxedCommands?: boolean;
network?: NetworkSandboxSettings;
ignoreViolations?: SandboxIgnoreViolations;
enableWeakerNestedSandbox?: boolean;
}| Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled | boolean | false | Habilitar modo sandbox para execução de comando |
autoAllowBashIfSandboxed | boolean | false | Aprovar automaticamente comandos bash quando sandbox está habilitado |
excludedCommands | string[] | [] | Comandos que sempre contornam restrições de sandbox (por exemplo, ['docker']). Estes executam sem sandbox automaticamente sem envolvimento do modelo |
Restrições de acesso a sistema de arquivos e rede NÃO são configuradas via configurações de sandbox. Em vez disso, são derivadas de regras de permissão:
Use configurações de sandbox para sandboxing de execução de comando e regras de permissão para controle de acesso a sistema de arquivos e rede.
import { query } from "@anthropic-ai/claude-agent-sdk";
const result = await query({
prompt: "Build and test my project",
options: {
sandbox: {
enabled: true,
autoAllowBashIfSandboxed: true,
excludedCommands: ["docker"],
network: {
allowLocalBinding: true,
allowUnixSockets: ["/var/run/docker.sock"]
}
}
}
});NetworkSandboxSettingsConfiguração específica de rede para modo sandbox.
type NetworkSandboxSettings = {
allowLocalBinding?: boolean;
allowUnixSockets?: string[];
allowAllUnixSockets?: boolean;
httpProxyPort?: number;
socksProxyPort?: number;
}| Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
allowLocalBinding | boolean | false | Permitir que processos se vinculem a portas locais (por exemplo, para servidores de desenvolvimento) |
allowUnixSockets | string[] | [] | Caminhos de socket Unix que processos podem acessar (por exemplo, socket Docker) |
allowAllUnixSockets | boolean | false | Permitir acesso a todos os sockets Unix |
SandboxIgnoreViolationsConfiguração para ignorar violações de sandbox específicas.
type SandboxIgnoreViolations = {
file?: string[];
network?: string[];
}| Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
file | string[] | [] | Padrões de caminho de arquivo para ignorar violações |
network | string[] | [] | Padrões de rede para ignorar violações |
Quando allowUnsandboxedCommands está habilitado, o modelo pode solicitar executar comandos fora do sandbox definindo dangerouslyDisableSandbox: true na entrada da ferramenta. Estas solicitações voltam para o sistema de permissões existente, significando que seu manipulador canUseTool será invocado, permitindo que você implemente lógica de autorização personalizada.
excludedCommands vs allowUnsandboxedCommands:
excludedCommands: Uma lista estática de comandos que sempre contornam o sandbox automaticamente (por exemplo, ['docker']). O modelo não tem controle sobre isto.allowUnsandboxedCommands: Permite que o modelo decida em tempo de execução se deve solicitar execução sem sandbox definindo dangerouslyDisableSandbox: true na entrada da ferramenta.import { query } from "@anthropic-ai/claude-agent-sdk";
const result = await query({
prompt: "Deploy my application",
options: {
sandbox: {
enabled: true,
allowUnsandboxedCommands: true // O modelo pode solicitar execução sem sandbox
},
permissionMode: "default",
canUseTool: async (tool, input) => {
// Verificar se o modelo está solicitando contornar o sandbox
if (tool === "Bash" && input.dangerouslyDisableSandbox) {
// O modelo quer executar este comando fora do sandbox
console.log(`Unsandboxed command requested: ${input.command}`);
// Retornar true para permitir, false para negar
return isCommandAuthorized(input.command);
}
return true;
}
}
});Este padrão permite que você:
Comandos executados com dangerouslyDisableSandbox: true têm acesso total ao sistema. Certifique-se de que seu manipulador canUseTool valida estas solicitações cuidadosamente.
allowDangerouslySkipPermissions |
boolean |
false |
Ativar bypass de permissões. Necessário ao usar permissionMode: 'bypassPermissions' |
allowedTools | string[] | Todas as ferramentas | Lista de nomes de ferramentas permitidas |
betas | SdkBeta[] | [] | Ativar recursos beta (por exemplo, ['context-1m-2025-08-07']) |
canUseTool | CanUseTool | undefined | Função de permissão personalizada para uso de ferramentas |
continue | boolean | false | Continuar a conversa mais recente |
cwd | string | process.cwd() | Diretório de trabalho atual |
disallowedTools | string[] | [] | Lista de nomes de ferramentas não permitidas |
enableFileCheckpointing | boolean | false | Ativar rastreamento de alterações de arquivo para retrocesso. Veja File checkpointing |
env | Dict<string> | process.env | Variáveis de ambiente |
executable | 'bun' | 'deno' | 'node' | Auto-detectado | Runtime JavaScript a usar |
executableArgs | string[] | [] | Argumentos a passar para o executável |
extraArgs | Record<string, string | null> | {} | Argumentos adicionais |
fallbackModel | string | undefined | Modelo a usar se o primário falhar |
forkSession | boolean | false | Ao retomar com resume, fazer fork para um novo ID de sessão em vez de continuar a sessão original |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | Callbacks de hook para eventos |
includePartialMessages | boolean | false | Incluir eventos de mensagem parcial |
maxBudgetUsd | number | undefined | Orçamento máximo em USD para a consulta |
maxThinkingTokens | number | undefined | Tokens máximos para o processo de pensamento |
maxTurns | number | undefined | Turnos de conversa máximos |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | Configurações de servidor MCP |
model | string | Padrão da CLI | Modelo Claude a usar |
outputFormat | { type: 'json_schema', schema: JSONSchema } | undefined | Defina o formato de saída para resultados do agente. Veja Structured outputs para detalhes |
pathToClaudeCodeExecutable | string | Usa executável integrado | Caminho para o executável Claude Code |
permissionMode | PermissionMode | 'default' | Modo de permissão para a sessão |
permissionPromptToolName | string | undefined | Nome da ferramenta MCP para prompts de permissão |
plugins | SdkPluginConfig[] | [] | Carregue plugins personalizados de caminhos locais. Veja Plugins para detalhes |
resume | string | undefined | ID de sessão a retomar |
resumeSessionAt | string | undefined | Retomar sessão em um UUID de mensagem específico |
sandbox | SandboxSettings | undefined | Configure o comportamento da sandbox programaticamente. Veja Sandbox settings para detalhes |
settingSources | SettingSource[] | [] (sem configurações) | Controle quais configurações baseadas em sistema de arquivos carregar. Quando omitido, nenhuma configuração é carregada. Nota: Deve incluir 'project' para carregar arquivos CLAUDE.md |
stderr | (data: string) => void | undefined | Callback para saída stderr |
strictMcpConfig | boolean | false | Impor validação MCP rigorosa |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string } | undefined (prompt vazio) | Configuração de prompt do sistema. Passe uma string para prompt personalizado, ou { type: 'preset', preset: 'claude_code' } para usar o prompt do sistema do Claude Code. Ao usar a forma de objeto preset, adicione append para estender o prompt do sistema com instruções adicionais |
tools | string[] | { type: 'preset'; preset: 'claude_code' } | undefined | Configuração de ferramentas. Passe um array de nomes de ferramentas ou use o preset para obter as ferramentas padrão do Claude Code |
supportedModels() |
| Retorna modelos disponíveis com informações de exibição |
mcpServerStatus() | Retorna status dos servidores MCP conectados |
accountInfo() | Retorna informações da conta |
allowUnsandboxedCommands | boolean | false | Permitir que o modelo solicite executar comandos fora do sandbox. Quando true, o modelo pode definir dangerouslyDisableSandbox na entrada da ferramenta, que volta para o sistema de permissões |
network | NetworkSandboxSettings | undefined | Configuração de sandbox específica de rede |
ignoreViolations | SandboxIgnoreViolations | undefined | Configurar quais violações de sandbox ignorar |
enableWeakerNestedSandbox | boolean | false | Habilitar um sandbox aninhado mais fraco para compatibilidade |
httpProxyPortnumber |
undefined |
| Porta de proxy HTTP para requisições de rede |
socksProxyPort | number | undefined | Porta de proxy SOCKS para requisições de rede |