Loading...
    • Guia do Desenvolvedor
    • Referência da API
    • MCP
    • Recursos
    • Notas de lançamento
    Search...
    ⌘K
    Primeiros passos
    Introdução ao ClaudeInício rápido
    Modelos e preços
    Visão geral dos modelosEscolhendo um modeloNovidades no Claude 4.5Migrando para Claude 4.5Descontinuação de modelosPreços
    Construir com Claude
    Visão geral de recursosUsando a API MessagesJanelas de contextoMelhores práticas de prompting
    Capacidades
    Cache de promptEdição de contextoPensamento estendidoEsforçoStreaming de mensagensProcessamento em loteCitaçõesSuporte multilíngueContagem de tokensEmbeddingsVisãoSuporte a PDFAPI de ArquivosResultados de buscaSaídas estruturadasComplemento Google Sheets
    Ferramentas
    Visão geralComo implementar o uso de ferramentasUso de ferramentas eficiente em tokensStreaming de ferramentas granularFerramenta BashFerramenta de execução de códigoChamada de ferramentas programáticaFerramenta de uso de computadorFerramenta de editor de textoFerramenta de busca na webFerramenta de pesquisa na webFerramenta de memóriaFerramenta de busca de ferramentas
    Habilidades de agente
    Visão geralInício rápidoMelhores práticasUsando habilidades com a API
    Agent SDK
    Visão geralSDK TypeScriptSDK PythonGuia de migração
    Guias
    Entrada de streamingTratamento de permissõesGerenciamento de sessãoSaídas estruturadas no SDKHospedando o Agent SDKModificando prompts do sistemaMCP no SDKFerramentas personalizadasSubagentos no SDKComandos de barra no SDKHabilidades de agente no SDKRastreando custos e usoListas de tarefasPlugins no SDK
    MCP na API
    Conector MCPServidores MCP remotos
    Claude em plataformas de terceiros
    Amazon BedrockMicrosoft FoundryVertex AI
    Engenharia de prompts
    Visão geralGerador de promptsUsar modelos de promptMelhorador de promptsSeja claro e diretoUse exemplos (prompting multisshot)Deixe Claude pensar (CoT)Use tags XMLDê um papel ao Claude (prompts do sistema)Preencha previamente a resposta do ClaudeEncadeie prompts complexosDicas de contexto longoDicas de pensamento estendido
    Testar e avaliar
    Definir critérios de sucessoDesenvolver casos de testeUsando a ferramenta de avaliaçãoReduzindo latência
    Fortalecer proteções
    Reduzir alucinaçõesAumentar consistência de saídaMitigar ataques de jailbreakRecusas de streamingReduzir vazamento de promptManter Claude em personagem
    Administração e monitoramento
    Visão geral da API de administraçãoAPI de uso e custoAPI de análise do Claude Code
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    Guias

    Gerenciamento de Permissões

    Controle o uso de ferramentas e permissões no Claude Agent SDK

    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 callback canUseTool, 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:

    1. Modos de Permissão - Configurações globais de comportamento de permissão que afetam todas as ferramentas
    2. callback canUseTool - Manipulador de permissão em tempo de execução para casos não cobertos por outras regras
    3. Hooks - Controle refinado sobre cada execução de ferramenta com lógica personalizada
    4. Regras de permissão (settings.json) - Regras declarativas de permitir/negar com análise integrada de comandos bash

    Casos de uso para cada abordagem:

    • Modos de permissão - Definir comportamento geral de permissão (planejamento, aceitação automática de edições, contornar verificações)
    • Visão Geral
    • Diagrama de Fluxo de Permissões
    • Modos de Permissão
    • Modos Disponíveis
    • Definindo o Modo de Permissão
    • Comportamentos Específicos do Modo
    • Prioridade do Modo no Fluxo de Permissões
    • Melhores Práticas
    • canUseTool
    • Recursos Relacionados
  1. canUseTool - Aprovação dinâmica para casos não cobertos, solicita permissão do usuário
  2. Hooks - Controle programático sobre todas as execuções de ferramentas
  3. Regras de permissão - Políticas estáticas com análise inteligente de comandos bash
  4. 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 PostToolUse

    Modos 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 chamar query() 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:

    ModoDescriçãoComportamento da Ferramenta
    defaultComportamento padrão de permissãoVerificações normais de permissão se aplicam
    planModo de planejamento - sem execuçãoClaude pode usar apenas ferramentas somente leitura; apresenta um plano antes da execução (Atualmente não suportado no SDK)
    acceptEditsAceitar edições de arquivo automaticamenteEdições de arquivo e operações do sistema de arquivos são aprovadas automaticamente
    bypassPermissionsContornar todas as verificações de permissãoTodas 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:

    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    const result = await query({
      prompt: "Me ajude a refatorar este código",
      options: {
        permissionMode: 'default'  // Modo de permissão padrão
      }
    });

    2. Mudanças Dinâmicas de Modo (Apenas Streaming)

    Altere o modo durante uma sessão de streaming:

    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    // Crie um gerador assíncrono para entrada de streaming
    async function* streamInput() {
      yield { 
        type: 'user',
        message: { 
          role: 'user', 
          content: "Vamos começar com permissões padrão" 
        }
      };
      
      // Mais tarde na conversa...
      yield {
        type: 'user',
        message: {
          role: 'user',
          content: "Agora vamos acelerar o desenvolvimento"
        }
      };
    }
    
    const q = query({
      prompt: streamInput(),
      options: {
        permissionMode: 'default'  // Começar no modo padrão
      }
    });
    
    // Alterar modo dinamicamente
    await q.setPermissionMode('acceptEdits');
    
    // Processar mensagens
    for await (const message of q) {
      console.log(message);
    }

    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

    Operações aprovadas automaticamente:

    • 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:

    1. Hooks executam primeiro - Podem permitir, negar, perguntar ou continuar
    2. Regras de negação são verificadas - Bloqueiam ferramentas independentemente do modo
    3. Regras de permissão são verificadas - Permitem ferramentas se corresponderem
    4. Regras de pergunta são verificadas - Solicitam permissão se corresponderem
    5. Modo de permissão é avaliado:
      • Modo bypassPermissions - Se ativo, permite todas as ferramentas restantes
      • Outros modos - Deferem para o callback canUseTool
    6. Callback canUseTool - Lida com casos restantes

    Isso significa:

    • 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 bypassPermissions sobrepõe o callback canUseTool para ferramentas não correspondidas

    Melhores Práticas

    1. Use o modo padrão para execução controlada com verificações normais de permissão
    2. Use o modo acceptEdits ao trabalhar em arquivos ou diretórios isolados
    3. Evite bypassPermissions em produção ou em sistemas com dados sensíveis
    4. Combine modos com hooks para controle refinado
    5. Alterne modos dinamicamente baseado no progresso da tarefa e confiança

    Exemplo de progressão de modo:

    // Começar no modo padrão para execução controlada
    permissionMode: 'default'
    
    // Alternar para acceptEdits para iteração rápida
    await q.setPermissionMode('acceptEdits')

    canUseTool

    O callback 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 o cobrem e não está no modo acceptEdits.

    Aqui está um exemplo completo mostrando como implementar aprovação interativa de ferramentas:

    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    async function promptForToolApproval(toolName: string, input: any) {
      console.log("\n🔧 Solicitação de Ferramenta:");
      console.log(`   Ferramenta: ${toolName}`);
      
      // Exibir parâmetros da ferramenta
      if (input && Object.keys(input).length > 0) {
        console.log("   Parâmetros:");
        for (const [key, value] of Object.entries(input)) {
          let displayValue = value;
          if (typeof value === 'string' && value.length > 100) {
            displayValue = value.substring(0, 100) + "...";
          } else if (typeof value === 'object') {
            displayValue = JSON.stringify(value, null, 2);
          }
          console.log(`     ${key}: ${displayValue}`);
        }
      }
      
      // Obter aprovação do usuário (substitua pela sua lógica de UI)
      const approved = await getUserApproval();
      
      if (approved) {
        console.log("   ✅ Aprovado\n");
        return {
          behavior: "allow",
          updatedInput: input
        };
      } else {
        console.log("   ❌ Negado\n");
        return {
          behavior: "deny",
          message: "Usuário negou permissão para esta ferramenta"
        };
      }
    }
    
    // Use o callback de permissão
    const result = await query({
      prompt: "Me ajude a analisar esta base de código",
      options: {
        canUseTool: async (toolName, input) => {
          return promptForToolApproval(toolName, input);
        }
      }
    });

    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