Permissões do SDK
O Claude Agent SDK fornece controles de permissão poderosos que permitem gerenciar como Claude usa ferramentas em sua aplicação. Este guia aborda como implementar sistemas de permissão usando o callbackcanUseTool, hooks e regras de permissão do settings.json. Para documentação completa da API, consulte a referência do SDK TypeScript.
Visão Geral
O Claude Agent SDK fornece quatro maneiras complementares de controlar o uso de ferramentas:- Modos de Permissão - Configurações globais de comportamento de permissão que afetam todas as ferramentas
- callback canUseTool - Manipulador de permissão em tempo de execução para casos não cobertos por outras regras
- Hooks - Controle refinado sobre cada execução de ferramenta com lógica personalizada
- Regras de permissão (settings.json) - Regras declarativas de permitir/negar com análise integrada de comandos bash
- Modos de permissão - Definir comportamento geral de permissão (planejamento, aceitação automática de edições, contornar verificações)
canUseTool- Aprovação dinâmica para casos não cobertos, solicita permissão do usuário- Hooks - Controle programático sobre todas as execuções de ferramentas
- Regras de permissão - Políticas estáticas com análise inteligente de comandos bash
Diagrama de Fluxo de Permissões
Ordem de Processamento: Hook PreToolUse → Regras de Negação → Regras de Permissão → Regras de Pergunta → Verificação do Modo de Permissão → Callback canUseTool → Hook PostToolUseModos de Permissão
Os modos de permissão fornecem controle global sobre como Claude usa ferramentas. Você pode definir o modo de permissão ao chamarquery() ou alterá-lo dinamicamente durante sessões de streaming.
Modos Disponíveis
O SDK suporta quatro modos de permissão, cada um com comportamento diferente:| 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) |
Definindo o Modo de Permissão
Você pode definir o modo de permissão de duas maneiras:1. Configuração Inicial
Defina o modo ao criar uma consulta:2. Mudanças Dinâmicas de Modo (Apenas Streaming)
Altere o modo durante uma sessão de streaming:Comportamentos Específicos do Modo
Modo Aceitar Edições (acceptEdits)
No modo aceitar edições:
- Todas as edições de arquivo são aprovadas automaticamente
- Operações do sistema de arquivos (mkdir, touch, rm, etc.) são aprovadas automaticamente
- Outras ferramentas ainda requerem permissões normais
- Acelera o desenvolvimento quando você confia nas edições do Claude
- Útil para prototipagem rápida e iterações
- Edições de arquivo (ferramentas Edit, Write)
- Comandos bash do sistema de arquivos (mkdir, touch, rm, mv, cp)
- Criação e exclusão de arquivos
Modo Contornar Permissões (bypassPermissions)
No modo contornar permissões:
- TODOS os usos de ferramentas são aprovados automaticamente
- Nenhum prompt de permissão aparece
- Hooks ainda executam (ainda podem bloquear operações)
- Use com extrema cautela - Claude tem acesso completo ao sistema
- Recomendado apenas para ambientes controlados
Prioridade do Modo no Fluxo de Permissões
Os modos de permissão são avaliados em um ponto específico no fluxo de permissões:- Hooks executam primeiro - Podem permitir, negar, perguntar ou continuar
- Regras de negação são verificadas - Bloqueiam ferramentas independentemente do modo
- Regras de permissão são verificadas - Permitem ferramentas se corresponderem
- Regras de pergunta são verificadas - Solicitam permissão se corresponderem
- Modo de permissão é avaliado:
- Modo
bypassPermissions- Se ativo, permite todas as ferramentas restantes - Outros modos - Deferem para o callback
canUseTool
- Modo
- Callback
canUseTool- Lida com casos restantes
- Hooks sempre podem controlar o uso de ferramentas, mesmo no modo
bypassPermissions - Regras de negação explícitas sobrepõem todos os modos de permissão
- Regras de pergunta são avaliadas antes dos modos de permissão
- O modo
bypassPermissionssobrepõe o callbackcanUseToolpara ferramentas não correspondidas
Melhores Práticas
- Use o modo padrão para execução controlada com verificações normais de permissão
- Use o modo acceptEdits ao trabalhar em arquivos ou diretórios isolados
- Evite bypassPermissions em produção ou em sistemas com dados sensíveis
- Combine modos com hooks para controle refinado
- Alterne modos dinamicamente baseado no progresso da tarefa e confiança
canUseTool
O callbackcanUseTool é 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 o cobrem e não está no modo acceptEdits.
Aqui está um exemplo completo mostrando como implementar aprovação interativa de ferramentas:
Recursos Relacionados
- Guia de Hooks - Aprenda como implementar hooks para controle refinado sobre execução de ferramentas
- Configurações: Regras de Permissão - Configure regras declarativas de permitir/negar com análise de comandos bash