Pular para o conteúdo principal

Instalação

Instale o pacote em um ambiente virtual. Em instalações recentes do Debian, Ubuntu e Homebrew Python, executar pip install contra o Python do sistema falha com error: externally-managed-environment.
Para uv, Windows PowerShell e configuração de chave de API, consulte Comece no visão geral do Agent SDK.

Escolhendo entre query() e ClaudeSDKClient

O SDK Python fornece duas maneiras de interagir com Claude Code:

Comparação rápida

Quando usar query() (tarefas únicas)

Melhor para:
  • Perguntas únicas onde você não precisa do histórico de conversa
  • Tarefas independentes que não requerem contexto de trocas anteriores
  • Scripts de automação simples
  • Quando você quer um novo começo cada vez

Quando usar ClaudeSDKClient (conversa contínua)

Melhor para:
  • Continuando conversas - Quando você precisa que Claude se lembre do contexto
  • Perguntas de acompanhamento - Construindo sobre respostas anteriores
  • Aplicações interativas - Interfaces de chat, REPLs
  • Lógica orientada por resposta - Quando a próxima ação depende da resposta de Claude
  • Controle de sessão - Gerenciando o ciclo de vida da conversa explicitamente

Funções

query()

Cria uma nova sessão para cada interação com Claude Code por padrão. Retorna um iterador assíncrono que produz mensagens conforme chegam. Cada chamada para query() começa do zero sem memória de interações anteriores, a menos que você passe continue_conversation=True ou resume em ClaudeAgentOptions. Veja Sessions.

Parâmetros

Retorna

Retorna um AsyncIterator[Message] que produz mensagens da conversa.

Exemplo - Com opções

tool()

Decorador para definir ferramentas MCP com segurança de tipo.

Parâmetros

Opções de schema de entrada

  1. Mapeamento de tipo simples (recomendado):
  2. Formato JSON Schema (para validação complexa):

Retorna

Uma função decoradora que envolve a implementação da ferramenta e retorna uma instância SdkMcpTool.

Exemplo

ToolAnnotations

Re-exportado de mcp.types (também disponível como from claude_agent_sdk import ToolAnnotations). Todos os campos são dicas opcionais; clientes não devem confiar neles para decisões de segurança.

create_sdk_mcp_server()

Cria um servidor MCP em processo que é executado dentro de sua aplicação Python.

Parâmetros

Retorna

Retorna um objeto McpSdkServerConfig que pode ser passado para ClaudeAgentOptions.mcp_servers.

Exemplo

list_sessions()

Lista sessões passadas com metadados. Filtre por diretório de projeto ou liste sessões em todos os projetos. Síncrono; retorna imediatamente.

Parâmetros

Tipo de retorno: SDKSessionInfo

Exemplo

Imprima as 10 sessões mais recentes para um projeto. Os resultados são classificados por last_modified descendente, então o primeiro item é o mais novo. Omita directory para pesquisar em todos os projetos.

get_session_messages()

Recupera mensagens de uma sessão passada. Síncrono; retorna imediatamente.

Parâmetros

Tipo de retorno: SessionMessage

Exemplo

get_session_info()

Lê metadados para uma única sessão por ID sem verificar o diretório do projeto completo. Síncrono; retorna imediatamente.

Parâmetros

Retorna SDKSessionInfo, ou None se a sessão não for encontrada.

Exemplo

Procure os metadados de uma única sessão sem verificar o diretório do projeto. Útil quando você já tem um ID de sessão de uma execução anterior.

rename_session()

Renomeia uma sessão anexando uma entrada de título personalizado. Chamadas repetidas são seguras; o título mais recente vence. Síncrono.

Parâmetros

Lança ValueError se session_id não for um UUID válido ou title estiver vazio; FileNotFoundError se a sessão não puder ser encontrada.

Exemplo

Renomeie a sessão mais recente para que seja mais fácil encontrá-la depois. O novo título aparece em SDKSessionInfo.custom_title em leituras subsequentes.

tag_session()

Marca uma sessão. Passe None para limpar a tag. Chamadas repetidas são seguras; a tag mais recente vence. Síncrono.

Parâmetros

Lança ValueError se session_id não for um UUID válido ou tag estiver vazio após sanitização; FileNotFoundError se a sessão não puder ser encontrada.

Exemplo

Marque uma sessão e depois filtre por essa tag em uma leitura posterior. Passe None para limpar uma tag existente.

Classes

ClaudeSDKClient

Mantém uma sessão de conversa em múltiplas trocas. Este é o equivalente Python de como a função query() do SDK TypeScript funciona internamente - cria um objeto cliente que pode continuar conversas.

Recursos principais

  • Continuidade de sessão: Mantém contexto de conversa em múltiplas chamadas query()
  • Mesma conversa: A sessão retém mensagens anteriores
  • Suporte a interrupção: Pode parar a execução no meio da tarefa
  • Ciclo de vida explícito: Você controla quando a sessão começa e termina
  • Fluxo orientado por resposta: Pode reagir a respostas e enviar acompanhamentos
  • Ferramentas e hooks personalizados: Suporta ferramentas personalizadas (criadas com decorador @tool) e hooks

Métodos

Suporte a Gerenciador de Contexto

O cliente pode ser usado como um gerenciador de contexto assíncrono para gerenciamento automático de conexão:
Importante: Ao iterar sobre mensagens, evite usar break para sair cedo, pois isso pode causar problemas de limpeza do asyncio. Em vez disso, deixe a iteração ser concluída naturalmente ou use sinalizadores para rastrear quando você encontrou o que precisa.

Exemplo - Continuando uma conversa

Exemplo - Entrada em streaming com ClaudeSDKClient

Exemplo - Usando interrupções

Comportamento do buffer após interrupção: interrupt() envia um sinal de parada mas não limpa o buffer de mensagens. Mensagens já produzidas pela tarefa interrompida, incluindo sua ResultMessage (com subtype="error_during_execution"), permanecem no fluxo. Você deve drená-las com receive_response() antes de ler a resposta a uma nova consulta. Se você enviar uma nova consulta imediatamente após interrupt() e chamar receive_response() apenas uma vez, você receberá as mensagens da tarefa interrompida, não a resposta da nova consulta.

Exemplo - Controle avançado de permissão

Tipos

@dataclass vs TypedDict: Este SDK usa dois tipos de tipos. Classes decoradas com @dataclass (como ResultMessage, AgentDefinition, TextBlock) são instâncias de objeto em tempo de execução e suportam acesso a atributos: msg.result. Classes definidas com TypedDict (como ThinkingConfigEnabled, McpStdioServerConfig, SyncHookJSONOutput) são dicts simples em tempo de execução e requerem acesso a chave: config["budget_tokens"], não config.budget_tokens. A sintaxe de chamada ClassName(field=value) funciona para ambos, mas apenas dataclasses produzem objetos com atributos.

SdkMcpTool

Definição para uma ferramenta SDK MCP criada com o decorador @tool.

Transport

Classe base abstrata para implementações de transport personalizado. Use isso para comunicar com o processo Claude sobre um canal personalizado (por exemplo, uma conexão remota em vez de um subprocess local).
Esta é uma API interna de baixo nível. A interface pode mudar em versões futuras. Implementações personalizadas devem ser atualizadas para corresponder a qualquer mudança de interface.
Importação: from claude_agent_sdk import Transport

ClaudeAgentOptions

Dataclass de configuração para consultas Claude Code.

Lidar com respostas de API lentas ou travadas

O subprocess CLI lê várias variáveis de ambiente que controlam timeouts de API e detecção de travamento. Passe-as através de ClaudeAgentOptions.env:
  • API_TIMEOUT_MS: timeout por solicitação no cliente Anthropic, em milissegundos. Padrão 600000. Aplica-se ao loop principal e a todos os subagentes.
  • CLAUDE_CODE_MAX_RETRIES: máximo de tentativas de API. Padrão 10, limitado a 15. Cada tentativa obtém sua própria janela API_TIMEOUT_MS, então o tempo de parede no pior caso é aproximadamente API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1) mais backoff. Para execuções autônomas que precisam aguardar interrupções mais longas, defina CLAUDE_CODE_RETRY_WATCHDOG=1: ele tenta erros de capacidade indefinidamente, e a partir do Claude Code v2.1.199 aumenta o padrão para outros erros transitórios para 300 e remove o limite nesta variável.
  • CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: watchdog de travamento para subagentes lançados com run_in_background. Padrão 600000. Redefine em cada evento de stream; em caso de travamento, aborta o subagente, marca a tarefa como falha e expõe o erro ao pai com qualquer resultado parcial. Não se aplica a subagentes síncronos.
  • CLAUDE_ENABLE_STREAM_WATCHDOG com CLAUDE_STREAM_IDLE_TIMEOUT_MS: aborta a solicitação quando os cabeçalhos chegaram mas o corpo da resposta para de fazer stream. O watchdog está ativado por padrão para todos os provedores; defina CLAUDE_ENABLE_STREAM_WATCHDOG=0 para desabilitá-lo. CLAUDE_STREAM_IDLE_TIMEOUT_MS padrão é 300000 e é fixado nesse mínimo. A solicitação abortada passa pelo caminho de tentativa normal.

OutputFormat

Configuração para validação de saída estruturada. Passe isso como um dict para o campo output_format em ClaudeAgentOptions:

SystemPromptPreset

Configuração para usar o prompt do sistema preset do Claude Code com adições opcionais.

SystemPromptFile

Configuração para carregar um prompt do sistema personalizado de um arquivo em vez de passá-lo como uma string. O SDK mapeia isso para o sinalizador CLI --system-prompt-file. Use a forma de arquivo quando o prompt é grande: o SDK passa um system_prompt string no argv do subprocess CLI, que está sujeito aos limites de comprimento de linha de comando do SO antes do SDK enviar qualquer solicitação de API. No Linux, um único argumento mais longo que aproximadamente 128 KB falha no spawn do processo com Argument list too long. No Windows, toda a linha de comando é limitada a aproximadamente 32 KB, então a forma de string falha em um limite inferior.

SettingSource

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

Comportamento padrão

Quando setting_sources é omitido ou None, query() carrega as mesmas configurações do sistema de arquivos que o CLI do Claude Code: usuário, projeto e local. Configurações de política gerenciada são carregadas em todos os casos; configurações gerenciadas pelo servidor são buscadas quando a sessão se autentica com uma credencial de organização em uma configuração elegível. Veja What settingSources does not control para entradas que são lidas independentemente desta opção, e como desabilitá-las.

Por que usar setting_sources

Desabilitar configurações do sistema de arquivos:
No Python SDK 0.1.59 e anterior, uma lista vazia era tratada da mesma forma que omitir a opção, então setting_sources=[] não desabilitava configurações do sistema de arquivos. Atualize para uma versão mais recente se você precisar que uma lista vazia tenha efeito. O SDK TypeScript não é afetado.
Carregue todas as configurações do sistema de arquivos explicitamente:
Carregue apenas fontes de configuração específicas:
Ambientes de teste e CI:
Aplicações apenas SDK:
Carregando instruções de projeto CLAUDE.md:

Precedência de configurações

Quando múltiplas fontes são carregadas, as configurações são mescladas com esta precedência (maior para menor):
  1. Configurações locais (.claude/settings.local.json)
  2. Configurações de projeto (.claude/settings.json)
  3. Configurações de usuário (~/.claude/settings.json)
Opções programáticas como agents e allowed_tools substituem configurações do sistema de arquivos de usuário, projeto e local. Configurações de política gerenciada têm precedência sobre opções programáticas.

AgentDefinition

Configuração para um subagente definido programaticamente.
Os nomes de campo AgentDefinition usam camelCase, como disallowedTools, permissionMode e maxTurns. Esses nomes mapeiam diretamente para o formato de fio compartilhado com o SDK TypeScript. Isso difere de ClaudeAgentOptions, que usa snake_case Python para campos de nível superior equivalentes como disallowed_tools e permission_mode. Como AgentDefinition é uma dataclass, passar uma palavra-chave snake_case levanta um TypeError no tempo de construção.

PermissionMode

Modos de permissão para controlar a execução de ferramentas.

EffortLevel

Níveis de esforço para guiar a profundidade de pensamento.

CanUseTool

Alias de tipo para funções de callback de permissão de ferramenta.
O callback recebe:
  • tool_name: Nome da ferramenta sendo chamada
  • input_data: Os parâmetros de entrada da ferramenta
  • context: Um ToolPermissionContext com informações adicionais
Retorna um PermissionResult (ou PermissionResultAllow ou PermissionResultDeny). O callback é a substituição do SDK para o prompt de permissão interativo: é invocado apenas quando o fluxo de avaliação de permissão se resolve para um prompt. Chamadas de ferramenta já aprovadas por uma entrada allowed_tools, uma regra de permissão de configurações ou o modo de permissão, como acceptEdits ou bypassPermissions, nunca o invocam. Para controlar cada chamada de ferramenta, use um hook PreToolUse em vez disso. AskUserQuestion, ferramentas MCP marcadas requiresUserInteraction, e ferramentas de conector sua organização definida como ask a alcançam mesmo quando uma regra de permissão corresponde. Em modo dontAsk essas chamadas são negadas em vez disso, sem invocar o callback.

ToolPermissionContext

Informações de contexto passadas para callbacks de permissão de ferramenta.

PermissionResult

Tipo de união para resultados de callback de permissão.

PermissionResultAllow

Resultado indicando que a chamada de ferramenta deve ser permitida.

PermissionResultDeny

Resultado indicando que a chamada de ferramenta deve ser negada.

PermissionUpdate

Configuração para atualizar permissões programaticamente.

PermissionRuleValue

Uma regra a adicionar, substituir ou remover em uma atualização de permissão.

ToolsPreset

Configuração de ferramentas preset para usar o conjunto de ferramentas padrão do Claude Code.

ThinkingConfig

Controla o comportamento de pensamento estendido. Uma união de três configurações:
O campo opcional display 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 saídas ThinkingBlock. Como estas são classes TypedDict, são dicts simples em tempo de execução. Construa-as como literais de dict ou chame a classe como um construtor; ambos produzem um dict. Acesse campos com config["budget_tokens"], não config.budget_tokens:

SdkBeta

Tipo literal para recursos beta do SDK.
Use com o campo betas em ClaudeAgentOptions para ativar recursos beta.
O beta context-1m-2025-08-07 foi descontinuado a partir de 30 de abril de 2026. Passar este cabeçalho com Claude Sonnet 4.5 ou Sonnet 4 não tem efeito, e solicitações que excedem a janela de contexto padrão de 200k-token retornam um erro. Para usar uma janela de contexto de 1M-token, migre para Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, ou Claude Opus 4.8, que incluem contexto de 1M a preços padrão sem cabeçalho beta necessário.

McpSdkServerConfig

Configuração para servidores MCP do SDK criados com create_sdk_mcp_server().

McpServerConfig

Tipo de união para configurações de servidor MCP.

McpStdioServerConfig

McpSSEServerConfig

McpHttpServerConfig

McpServerStatusConfig

A configuração de um servidor MCP conforme relatado por get_mcp_status(). Esta é a união de todas as variantes de transporte McpServerConfig mais uma variante de saída apenas claudeai-proxy para servidores proxied através de claude.ai.
McpSdkServerConfigStatus é a forma serializável de McpSdkServerConfig com apenas campos type ("sdk") e name (str); a instance em processo é omitida. McpClaudeAIProxyServerConfig tem campos type ("claudeai-proxy"), url (str), e id (str).

McpStatusResponse

Resposta de ClaudeSDKClient.get_mcp_status(). Envolve a lista de status de servidor sob a chave mcpServers.

McpServerStatus

Status de um servidor MCP conectado, contido em McpStatusResponse.

SdkPluginConfig

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

Tipos de Mensagem

Message

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

UserMessage

Mensagem de entrada do usuário.

AssistantMessage

Mensagem de resposta do assistente com blocos de conteúdo.

AssistantMessageError

Possíveis tipos de erro para mensagens do assistente.

SystemMessage

Mensagem do sistema com metadados.

ResultMessage

Mensagem de resultado final com informações de custo e uso.
O campo subtype determina quais outros campos são preenchidos. É um de "success", "error_during_execution", "error_max_turns", "error_max_budget_usd" ou "error_max_structured_output_retries". A dataclass Python achata todas as variantes em uma forma, portanto campos que não se aplicam ao subtipo retornado são None. Vários campos carregam detalhes de diagnóstico quando a conversa termina em um erro:
  • is_error: True quando a conversa terminou em um estado de erro. Sempre True nos subtipos error_*. Em subtype="success" é True quando a solicitação final do modelo falhou, significando que o loop do agente foi concluído mas a última chamada da API retornou um erro.
  • api_error_status: o código de status HTTP do erro de API de encerramento. None quando o turno terminou sem um. Preenchido apenas em subtype="success".
  • result: texto da mensagem final do assistente em subtype="success", ou None nos subtipos error_*. Quando subtype="success" e is_error=True, isso contém a string de erro da API se uma estiver disponível mas pode estar vazio, então verifique api_error_status e o conteúdo anterior de AssistantMessage para detalhes.
  • errors: strings de erro no nível do loop, como a mensagem de máximo de turnos. Preenchido apenas nos subtipos error_*.
O dict usage contém as seguintes chaves quando presentes: O dict model_usage mapeia nomes de modelo para uso por modelo. As chaves do dict interno usam camelCase porque o valor é passado sem modificação do processo CLI subjacente, correspondendo ao tipo TypeScript ModelUsage:

StreamEvent

Evento de fluxo para atualizações de mensagem parcial durante streaming. Apenas recebido quando include_partial_messages=True em ClaudeAgentOptions. Importe via from claude_agent_sdk.types import StreamEvent.

RateLimitEvent

Emitido quando o status do limite de taxa muda (por exemplo, de "allowed" para "allowed_warning"). Use isso para avisar usuários antes de atingirem um limite rígido, ou para recuar quando o status é "rejected".

RateLimitInfo

Estado de limite de taxa carregado por RateLimitEvent.

TaskStartedMessage

Emitido quando uma tarefa de fundo começa. Uma tarefa de fundo é qualquer coisa rastreada fora do turno principal: um comando Bash em fundo, um watch de Monitor, um subagente gerado via ferramenta Agent, ou um agente remoto. O campo task_type diz qual. Esta nomenclatura não está relacionada à renomeação de ferramenta Task-para-Agent.

TaskUsage

Dados de token e tempo para uma tarefa de fundo.

TaskProgressMessage

Emitido periodicamente com atualizações de progresso para uma tarefa de fundo em execução.

TaskNotificationMessage

Emitido quando uma tarefa de fundo é concluída, falha ou é parada. Tarefas de fundo incluem comandos Bash run_in_background, watches de Monitor e subagentes em fundo.

Tipos de Bloco de Conteúdo

ContentBlock

Tipo de união de todos os blocos de conteúdo.

TextBlock

Bloco de conteúdo de texto.

ThinkingBlock

Bloco de conteúdo de pensamento (para modelos com capacidade de pensamento).

ToolUseBlock

Bloco de solicitação de uso de ferramenta.

ToolResultBlock

Bloco de resultado de execução de ferramenta.

Tipos de Erro

ClaudeSDKError

Classe de exceção base para todos os erros do SDK.

CLINotFoundError

Levantado quando Claude Code CLI não está instalado ou não é encontrado.

CLIConnectionError

Levantado quando a conexão com Claude Code falha.

ProcessError

Levantado quando o processo Claude Code falha.

CLIJSONDecodeError

Levantado quando a análise JSON falha.

Tipos de Hook

Para um guia abrangente sobre o uso de hooks com exemplos e padrões comuns, veja o Guia de Hooks.

HookEvent

Tipos de evento de hook suportados.
O SDK TypeScript suporta eventos de hook adicionais não disponíveis ainda em Python: SessionStart, SessionEnd, Setup, TeammateIdle, TaskCompleted, ConfigChange, WorktreeCreate, WorktreeRemove, PostToolBatch e MessageDisplay.

HookCallback

Definição de tipo para funções de callback de hook.
Parâmetros:
  • input: Entrada de hook fortemente tipada com uniões discriminadas baseadas em hook_event_name (veja HookInput)
  • tool_use_id: Identificador de uso de ferramenta opcional (para hooks relacionados a ferramentas)
  • context: Contexto de hook com informações adicionais
Retorna um HookJSONOutput que pode conter:
  • decision: "block" para bloquear a ação
  • systemMessage: Mensagem de aviso mostrada ao usuário
  • hookSpecificOutput: Dados de saída específicos do hook

HookContext

Informações de contexto passadas para callbacks de hook.

HookMatcher

Configuração para corresponder hooks a eventos ou ferramentas específicas.

HookInput

Tipo de união de todos os tipos de entrada de hook. O tipo real depende do campo hook_event_name.

BaseHookInput

Campos base presentes em todos os tipos de entrada de hook.

PreToolUseHookInput

Dados de entrada para eventos de hook PreToolUse.

PostToolUseHookInput

Dados de entrada para eventos de hook PostToolUse.

PostToolUseFailureHookInput

Dados de entrada para eventos de hook PostToolUseFailure. Chamado quando uma execução de ferramenta falha.

UserPromptSubmitHookInput

Dados de entrada para eventos de hook UserPromptSubmit.

StopHookInput

Dados de entrada para eventos de hook Stop.

SubagentStopHookInput

Dados de entrada para eventos de hook SubagentStop.

PreCompactHookInput

Dados de entrada para eventos de hook PreCompact.

NotificationHookInput

Dados de entrada para eventos de hook Notification.

SubagentStartHookInput

Dados de entrada para eventos de hook SubagentStart.

PermissionRequestHookInput

Dados de entrada para eventos de hook PermissionRequest. Permite que hooks manipulem decisões de permissão programaticamente.

HookJSONOutput

Tipo de união para valores de retorno de callback de hook.

SyncHookJSONOutput

Saída de hook síncrona com campos de controle e decisão.
Use continue_ (com underscore) no código Python. É automaticamente convertido para continue quando enviado para o CLI.

HookSpecificOutput

Um TypedDict contendo o nome do evento de hook e campos específicos do evento. A forma depende do valor hookEventName. Para detalhes completos sobre campos disponíveis por evento de hook, veja Controlar execução com hooks. Uma união discriminada de tipos de saída específicos do evento. O campo hookEventName determina quais campos são válidos.

AsyncHookJSONOutput

Saída de hook assíncrona que adia a execução do hook.
Use async_ (com underscore) no código Python. É automaticamente convertido para async quando enviado para o CLI.

Exemplo de Uso de Hook

Este exemplo registra dois hooks: um que bloqueia comandos bash perigosos como rm -rf /, e outro que registra todo o uso de ferramenta para auditoria. O hook de segurança funciona apenas em comandos Bash (via matcher), enquanto o hook de registro funciona em todas as ferramentas.

Tipos de Entrada/Saída de Ferramenta

Documentação de schemas de entrada/saída para todas as ferramentas Claude Code integradas. Embora o SDK Python não exporte esses como tipos, eles representam a estrutura de entradas e saídas de ferramenta em mensagens.

Agent

Nome da ferramenta: Agent (anteriormente Task, que ainda é aceito como alias) Entrada:
Saída:

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. Entrada:
Saída:

Bash

Nome da ferramenta: Bash Entrada:
Saída:

Monitor

Nome da ferramenta: Monitor Executa uma fonte de fundo e entrega cada evento para Claude para que ele 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. Quando Monitor executa um comando, ele segue as mesmas regras de permissão que Bash; uma observação de WebSocket solicita aprovação separadamente. A fonte ws requer Claude Code v2.1.195 ou posterior. Veja a referência da ferramenta Monitor para comportamento e disponibilidade de provedor. Entrada:
Saída:

Edit

Nome da ferramenta: Edit Entrada:
Saída:

Read

Nome da ferramenta: Read Entrada:
Saída (Arquivos de texto):
Saída (Imagens):

Write

Nome da ferramenta: Write Entrada:
Saída:

Glob

Nome da ferramenta: Glob Entrada:
Saída:

Grep

Nome da ferramenta: Grep Entrada:
Saída (modo content):
Saída (modo files_with_matches):

NotebookEdit

Nome da ferramenta: NotebookEdit Entrada:
Saída:

WebFetch

Nome da ferramenta: WebFetch Entrada:
Saída:

WebSearch

Nome da ferramenta: WebSearch Entrada:
Saída:

TodoWrite

Nome da ferramenta: TodoWrite
A partir do Claude Code v2.1.142, TodoWrite está desabilitado por padrão. Use TaskCreate, TaskGet, TaskUpdate e TaskList em seu lugar. Veja Migrar para ferramentas Task para atualizar seu código de monitoramento, ou defina CLAUDE_CODE_ENABLE_TASKS=0 para reverter para TodoWrite.
Entrada:
Saída:

TaskCreate

Nome da ferramenta: TaskCreate Entrada:
Saída:

TaskUpdate

Nome da ferramenta: TaskUpdate Entrada:
Saída:

TaskGet

Nome da ferramenta: TaskGet Entrada:
Saída:

TaskList

Nome da ferramenta: TaskList Entrada:
Saída:

BashOutput

Nome da ferramenta: BashOutput Entrada:
Saída:

KillBash

Nome da ferramenta: KillBash Entrada:
Saída:

ExitPlanMode

Nome da ferramenta: ExitPlanMode Entrada:
Saída:

ListMcpResources

Nome da ferramenta: ListMcpResourcesTool Entrada:
Saída:

ReadMcpResource

Nome da ferramenta: ReadMcpResourceTool Entrada:
Saída:

Recursos Avançados com ClaudeSDKClient

Construindo uma Interface de Conversa Contínua

Usando Hooks para Modificação de Comportamento

Monitoramento de Progresso em Tempo Real

Uso de Exemplo

Operações básicas de arquivo (usando query)

Tratamento de erros

Modo de streaming com cliente

Usando ferramentas personalizadas com ClaudeSDKClient

Configuração de Sandbox

SandboxSettings

Configuração para comportamento de sandbox. Use isso para ativar sandboxing de comando e configurar restrições de rede programaticamente.
O sandbox depende do suporte de plataforma e, no Linux, de ferramentas como bubblewrap e socat. Por padrão, quando enabled é True mas o sandbox não consegue iniciar, comandos executam sem sandbox com um aviso em stderr. Este padrão difere do SDK TypeScript, onde failIfUnavailable tem padrão true.Defina "failIfUnavailable": True nas suas configurações de sandbox para parar em vez disso. A chave ainda não está declarada em SandboxSettings, mas o SDK a encaminha para Claude Code, que a honra. query() então relata uma ResultMessage com subtype="error_during_execution" e a razão em errors. Observe esse subtipo em vez de esperar que query() lance antes de ceder mensagens.

Exemplo de uso

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

SandboxNetworkConfig

Configuração específica de rede para modo sandbox. Essas configurações se aplicam a comandos Bash 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 a lista de permissões de rede com base no nome de host solicitado e não encerra ou inspeciona tráfego TLS, portanto técnicas como domain fronting podem potencialmente contorná-lo. Veja Limitações de segurança de Sandboxing para detalhes e Implantação segura para configurar um proxy que encerra TLS.

SandboxIgnoreViolations

Configuração para ignorar violações de sandbox específicas.

Fallback de Permissões para Comandos Sem Sandbox

Quando allowUnsandboxedCommands está ativado, o modelo pode solicitar executar comandos fora do sandbox definindo dangerouslyDisableSandbox: True na entrada da ferramenta. Essas solicitações voltam para o sistema de permissões existente, significando que seu manipulador can_use_tool 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 isso.
  • 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.
Este padrão permite que você:
  • Audite solicitações de modelo: Registre quando o modelo solicita execução sem sandbox
  • Implemente listas de permissão: Apenas permita comandos específicos executarem sem sandbox
  • Adicione fluxos de trabalho de aprovação: Exija autorização explícita para operações privilegiadas
Comandos executando com dangerouslyDisableSandbox: True têm acesso completo ao sistema. Certifique-se de que seu manipulador can_use_tool valida essas solicitações cuidadosamente.Se permission_mode está definido para bypassPermissions e allow_unsandboxed_commands está ativado, o modelo pode autonomamente executar comandos fora do sandbox sem qualquer prompt de aprovação. Esta combinação efetivamente permite que o modelo escape do isolamento de sandbox silenciosamente.

Veja também