Controle o uso de ferramentas e permissões no Claude Code SDK
canUseTool
, hooks e regras de permissão do settings.json. Para documentação completa da API, consulte a referência do TypeScript SDK.
canUseTool
- Aprovação dinâmica para casos não cobertos, solicita permissão do usuárioquery()
ou alterá-lo dinamicamente durante sessões de streaming.
Modo | Descrição | Comportamento da Ferramenta |
---|---|---|
default | Comportamento padrão de permissão | Verificações normais de permissão se aplicam |
plan | Modo de planejamento - sem execução | Claude pode usar apenas ferramentas somente leitura; apresenta um plano antes da execução (Atualmente não suportado no SDK) |
acceptEdits | Aceitar edições de arquivo automaticamente | Edições de arquivo e operações do sistema de arquivos são aprovadas automaticamente |
bypassPermissions | Contornar todas as verificações de permissão | Todas as ferramentas executam sem prompts de permissão (use com cautela) |
acceptEdits
)bypassPermissions
)bypassPermissions
- Se ativo, permite todas as ferramentas restantescanUseTool
- Lida com casos restantesbypassPermissions
bypassPermissions
sobrescreve regras de permissão e canUseTool
canUseTool
é passado como uma opção ao chamar a função query
. Ele recebe o nome da ferramenta e parâmetros de entrada, e deve retornar uma decisão - permitir ou negar.
canUseTool dispara sempre que Claude Code mostraria um prompt de permissão para um usuário, por exemplo, hooks e regras de permissão não cobrem isso e não está no modo de aceitação automática.
Aqui está um exemplo completo mostrando como implementar aprovação interativa de ferramentas:
canUseTool
lida com casos não cobertos por regras de permissãosettings.json
fornecem controle declarativo com análise integrada de comandos bash. Essas regras são avaliadas antes de canUseTool
ser chamado. Para mais detalhes sobre configuração de settings, consulte a documentação de configurações do Claude Code.
NomeDaFerramenta(padrão)
Bash(npm:*)
corresponde a qualquer comando começando com “npm”Read(./src/**/*.ts)
corresponde a arquivos TypeScript em srcWebFetch
bloqueia todas as buscas webrm -rf
ou curl | sh
Bash(git:*)
- Corresponde a qualquer comando gitBash(npm run test)
- Corresponde ao comando exatoBash(npm run test:*)
- Corresponde a npm run test:unit, test:integration, etc.