Loading...
    • Guida per sviluppatori
    • Riferimento API
    • MCP
    • Risorse
    • Note di rilascio
    Search...
    ⌘K
    Primi passi
    Introduzione a ClaudeAvvio rapido
    Modelli e prezzi
    Panoramica dei modelliScelta di un modelloNovità in Claude 4.5Migrazione a Claude 4.5Deprecazioni dei modelliPrezzi
    Costruisci con Claude
    Panoramica delle funzionalitàUtilizzo dell'API MessagesFinestre di contestoBest practice di prompt
    Capacità
    Prompt cachingModifica del contestoExtended thinkingSforzoStreaming di messaggiElaborazione batchCitazioniSupporto multilingueConteggio tokenEmbeddingsVisioneSupporto PDFAPI FilesRisultati di ricercaOutput strutturatiComponente aggiuntivo Google Sheets
    Strumenti
    PanoramicaCome implementare l'uso degli strumentiUso efficiente dei token con gli strumentiStreaming granulare degli strumentiStrumento BashStrumento di esecuzione del codiceChiamata programmatica degli strumentiStrumento Computer useStrumento editor di testoStrumento Web fetchStrumento Web searchStrumento MemoryStrumento Tool search
    Agent Skills
    PanoramicaAvvio rapidoBest practiceUtilizzo di Skills con l'API
    Agent SDK
    PanoramicaTypeScript SDKPython SDKGuida alla migrazione
    Guide
    Streaming InputGestione dei permessiGestione delle sessioniOutput strutturati nell'SDKHosting dell'Agent SDKModifica dei prompt di sistemaMCP nell'SDKStrumenti personalizzatiSubagent nell'SDKSlash Commands nell'SDKAgent Skills nell'SDKTracciamento dei costi e dell'utilizzoElenchi di attivitàPlugin nell'SDK
    MCP nell'API
    Connettore MCPServer MCP remoti
    Claude su piattaforme di terze parti
    Amazon BedrockMicrosoft FoundryVertex AI
    Prompt engineering
    PanoramicaGeneratore di promptUsa modelli di promptMiglioratore di promptSii chiaro e direttoUsa esempi (multishot prompting)Lascia che Claude pensi (CoT)Usa tag XMLDai a Claude un ruolo (prompt di sistema)Precompila la risposta di ClaudeConcatena prompt complessiSuggerimenti per contesto lungoSuggerimenti per extended thinking
    Test e valutazione
    Definisci criteri di successoSviluppa casi di testUtilizzo dello strumento di valutazioneRiduzione della latenza
    Rafforza i guardrail
    Riduci le allucinazioniAumenta la coerenza dell'outputMitiga i jailbreakStreaming dei rifiutiRiduci la perdita di promptMantieni Claude nel personaggio
    Amministrazione e monitoraggio
    Panoramica dell'API AdminAPI di utilizzo e costiAPI Claude Code Analytics
    Console
    Log in
    Loading...
    Loading...
    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
    Guide

    Gestione dei Permessi

    Controlla l'uso degli strumenti e i permessi nel Claude Agent SDK

    Permessi SDK

    Il Claude Agent SDK fornisce potenti controlli dei permessi che ti permettono di gestire come Claude utilizza gli strumenti nella tua applicazione.

    Questa guida copre come implementare sistemi di permessi utilizzando il callback canUseTool, gli hook e le regole di permesso di settings.json. Per la documentazione completa dell'API, consulta il riferimento TypeScript SDK.

    Panoramica

    Il Claude Agent SDK fornisce quattro modi complementari per controllare l'uso degli strumenti:

    1. Modalità di Permesso - Impostazioni globali del comportamento dei permessi che influenzano tutti gli strumenti
    2. callback canUseTool - Gestore di permessi runtime per casi non coperti da altre regole
    3. Hook - Controllo granulare su ogni esecuzione di strumento con logica personalizzata
    4. Regole di permesso (settings.json) - Regole dichiarative di permesso/negazione con parsing integrato dei comandi bash

    Casi d'uso per ogni approccio:

    • Modalità di permesso - Imposta il comportamento generale dei permessi (pianificazione, accettazione automatica delle modifiche, bypass dei controlli)
    • Panoramica
    • Diagramma del Flusso dei Permessi
    • Modalità di Permesso
    • Modalità Disponibili
    • Impostazione della Modalità di Permesso
    • Comportamenti Specifici delle Modalità
    • Priorità della Modalità nel Flusso dei Permessi
    • Migliori Pratiche
    • canUseTool
    • Risorse Correlate
  1. canUseTool - Approvazione dinamica per casi non coperti, richiede il permesso all'utente
  2. Hook - Controllo programmatico su tutte le esecuzioni degli strumenti
  3. Regole di permesso - Politiche statiche con parsing intelligente dei comandi bash
  4. Diagramma del Flusso dei Permessi

    Ordine di Elaborazione: Hook PreToolUse → Regole di Negazione → Regole di Permesso → Regole di Richiesta → Controllo Modalità Permesso → Callback canUseTool → Hook PostToolUse

    Modalità di Permesso

    Le modalità di permesso forniscono controllo globale su come Claude utilizza gli strumenti. Puoi impostare la modalità di permesso quando chiami query() o cambiarla dinamicamente durante le sessioni di streaming.

    Modalità Disponibili

    L'SDK supporta quattro modalità di permesso, ognuna con comportamento diverso:

    ModalitàDescrizioneComportamento Strumento
    defaultComportamento standard dei permessiSi applicano i controlli normali dei permessi
    planModalità pianificazione - nessuna esecuzioneClaude può utilizzare solo strumenti di sola lettura; presenta un piano prima dell'esecuzione (Attualmente non supportato nell'SDK)
    acceptEditsAccetta automaticamente le modifiche ai fileLe modifiche ai file e le operazioni del filesystem vengono approvate automaticamente
    bypassPermissionsBypassa tutti i controlli dei permessiTutti gli strumenti vengono eseguiti senza richieste di permesso (usa con cautela)

    Impostazione della Modalità di Permesso

    Puoi impostare la modalità di permesso in due modi:

    1. Configurazione Iniziale

    Imposta la modalità quando crei una query:

    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    const result = await query({
      prompt: "Aiutami a refactorizzare questo codice",
      options: {
        permissionMode: 'default'  // Modalità permesso standard
      }
    });

    2. Cambiamenti Dinamici della Modalità (Solo Streaming)

    Cambia la modalità durante una sessione di streaming:

    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    // Crea un generatore asincrono per l'input streaming
    async function* streamInput() {
      yield { 
        type: 'user',
        message: { 
          role: 'user', 
          content: "Iniziamo con i permessi predefiniti" 
        }
      };
      
      // Più tardi nella conversazione...
      yield {
        type: 'user',
        message: {
          role: 'user',
          content: "Ora acceleriamo lo sviluppo"
        }
      };
    }
    
    const q = query({
      prompt: streamInput(),
      options: {
        permissionMode: 'default'  // Inizia in modalità predefinita
      }
    });
    
    // Cambia modalità dinamicamente
    await q.setPermissionMode('acceptEdits');
    
    // Elabora i messaggi
    for await (const message of q) {
      console.log(message);
    }

    Comportamenti Specifici delle Modalità

    Modalità Accetta Modifiche (acceptEdits)

    In modalità accetta modifiche:

    • Tutte le modifiche ai file vengono approvate automaticamente
    • Le operazioni del filesystem (mkdir, touch, rm, ecc.) vengono auto-approvate
    • Altri strumenti richiedono ancora permessi normali
    • Accelera lo sviluppo quando ti fidi delle modifiche di Claude
    • Utile per prototipazione rapida e iterazioni

    Operazioni approvate automaticamente:

    • Modifiche ai file (strumenti Edit, Write)
    • Comandi bash del filesystem (mkdir, touch, rm, mv, cp)
    • Creazione ed eliminazione di file

    Modalità Bypassa Permessi (bypassPermissions)

    In modalità bypassa permessi:

    • TUTTI gli usi degli strumenti vengono approvati automaticamente
    • Non appaiono richieste di permesso
    • Gli hook vengono ancora eseguiti (possono ancora bloccare le operazioni)
    • Usa con estrema cautela - Claude ha accesso completo al sistema
    • Raccomandato solo per ambienti controllati

    Priorità della Modalità nel Flusso dei Permessi

    Le modalità di permesso vengono valutate in un punto specifico del flusso dei permessi:

    1. Gli hook vengono eseguiti per primi - Possono consentire, negare, chiedere o continuare
    2. Le regole di negazione vengono controllate - Bloccano gli strumenti indipendentemente dalla modalità
    3. Le regole di permesso vengono controllate - Permettono gli strumenti se corrispondenti
    4. Le regole di richiesta vengono controllate - Richiedono permesso se corrispondenti
    5. La modalità di permesso viene valutata:
      • Modalità bypassPermissions - Se attiva, consente tutti gli strumenti rimanenti
      • Altre modalità - Delegano al callback canUseTool
    6. Callback canUseTool - Gestisce i casi rimanenti

    Questo significa:

    • Gli hook possono sempre controllare l'uso degli strumenti, anche in modalità bypassPermissions
    • Le regole di negazione esplicite sovrascrivono tutte le modalità di permesso
    • Le regole di richiesta vengono valutate prima delle modalità di permesso
    • La modalità bypassPermissions sovrascrive il callback canUseTool per gli strumenti non corrispondenti

    Migliori Pratiche

    1. Usa la modalità predefinita per l'esecuzione controllata con controlli normali dei permessi
    2. Usa la modalità acceptEdits quando lavori su file o directory isolate
    3. Evita bypassPermissions in produzione o su sistemi con dati sensibili
    4. Combina le modalità con gli hook per un controllo granulare
    5. Cambia le modalità dinamicamente in base al progresso del compito e alla fiducia

    Esempio di progressione delle modalità:

    // Inizia in modalità predefinita per l'esecuzione controllata
    permissionMode: 'default'
    
    // Passa ad acceptEdits per l'iterazione rapida
    await q.setPermissionMode('acceptEdits')

    canUseTool

    Il callback canUseTool viene passato come opzione quando si chiama la funzione query. Riceve il nome dello strumento e i parametri di input, e deve restituire una decisione - consentire o negare.

    canUseTool si attiva ogni volta che Claude Code mostrerebbe una richiesta di permesso a un utente, ad esempio gli hook e le regole di permesso non lo coprono e non è in modalità acceptEdits.

    Ecco un esempio completo che mostra come implementare l'approvazione interattiva degli strumenti:

    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    async function promptForToolApproval(toolName: string, input: any) {
      console.log("\n🔧 Richiesta Strumento:");
      console.log(`   Strumento: ${toolName}`);
      
      // Visualizza i parametri dello strumento
      if (input && Object.keys(input).length > 0) {
        console.log("   Parametri:");
        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}`);
        }
      }
      
      // Ottieni l'approvazione dell'utente (sostituisci con la tua logica UI)
      const approved = await getUserApproval();
      
      if (approved) {
        console.log("   ✅ Approvato\n");
        return {
          behavior: "allow",
          updatedInput: input
        };
      } else {
        console.log("   ❌ Negato\n");
        return {
          behavior: "deny",
          message: "L'utente ha negato il permesso per questo strumento"
        };
      }
    }
    
    // Usa il callback di permesso
    const result = await query({
      prompt: "Aiutami ad analizzare questa codebase",
      options: {
        canUseTool: async (toolName, input) => {
          return promptForToolApproval(toolName, input);
        }
      }
    });

    Risorse Correlate

    • Guida agli Hook - Impara come implementare gli hook per un controllo granulare sull'esecuzione degli strumenti
    • Impostazioni: Regole di Permesso - Configura regole dichiarative di permesso/negazione con parsing dei comandi bash