canUseTool per gestire tutto il resto in fase di esecuzione.
Questa pagina copre le modalità di permesso e le regole. Per creare flussi di approvazione interattivi in cui gli utenti approvano o negano le richieste di strumenti in fase di esecuzione, vedi Gestire approvazioni e input dell’utente.
Come vengono valutati i permessi
Quando Claude richiede uno strumento, l’SDK controlla i permessi in questo ordine:Hooks
Esegui hooks per primo. Un hook può negare la chiamata completamente o trasmetterla. Un hook che restituisce
allow non salta le regole di negazione e richiesta di seguito; quelle vengono valutate indipendentemente dal risultato dell’hook.Regole di negazione
Controlla le regole
deny (da disallowed_tools e settings.json). Se una regola di negazione corrisponde, lo strumento viene bloccato, anche in modalità bypassPermissions. Le regole di negazione con nome semplice come Bash rimuovono lo strumento dal contesto di Claude prima che questa valutazione inizi, quindi solo le regole con ambito come Bash(rm *) vengono controllate in questo passaggio.Modalità di permesso
Applica la modalità di permesso attiva.
bypassPermissions approva tutto ciò che raggiunge questo passaggio. acceptEdits approva le operazioni su file. Le altre modalità passano oltre.Regole di consentimento
Controlla le regole
allow (da allowed_tools e settings.json). Se una regola corrisponde, lo strumento viene approvato.Callback canUseTool
Se non risolto da nessuno dei precedenti, chiama il tuo callback
canUseTool per una decisione. In modalità dontAsk, questo passaggio viene saltato e lo strumento viene negato.- Hooks: esegui codice personalizzato per consentire, negare o modificare le richieste di strumenti. Vedi Controllare l’esecuzione con gli hook.
- Callback canUseTool: richiedi agli utenti l’approvazione in fase di esecuzione. Vedi Gestire approvazioni e input dell’utente.
Regole di consentimento e negazione
allowed_tools e disallowed_tools (TypeScript: allowedTools / disallowedTools) aggiungono voci agli elenchi di regole di consentimento e negazione nel flusso di valutazione sopra. Le regole di consentimento influiscono solo sull’approvazione: uno strumento non elencato in allowed_tools è ancora disponibile per Claude e passa alla modalità di permesso. Le regole di negazione si comportano diversamente a seconda che denominino uno strumento o limitino un modello all’interno di uno.
| Opzione | Effetto |
|---|---|
allowed_tools=["Read", "Grep"] | Read e Grep vengono approvati automaticamente. Gli strumenti non elencati qui esistono ancora e passano alla modalità di permesso e canUseTool. |
disallowed_tools=["Bash"] | La definizione dello strumento Bash viene rimossa dalla richiesta. Claude non vede lo strumento e non può tentarlo. |
disallowed_tools=["Bash(rm *)"] | Bash rimane disponibile. Le chiamate corrispondenti a rm * vengono negate in ogni modalità di permesso, inclusa bypassPermissions. Altre chiamate Bash passano alla modalità di permesso. |
allowedTools con permissionMode: "dontAsk". Gli strumenti elencati vengono approvati; tutto il resto viene negato completamente invece di richiedere:
.claude/settings.json. Queste regole vengono lette quando la fonte di impostazione project è abilitata, il che è il caso per le opzioni predefinite di query(). Se imposti setting_sources (TypeScript: settingSources) esplicitamente, includi "project" affinché si applichino. Vedi Impostazioni di permesso per la sintassi delle regole.
Modalità di permesso
Le modalità di permesso forniscono un controllo globale su come Claude utilizza gli strumenti. Puoi impostare la modalità di permesso quando chiamiquery() o cambiarla dinamicamente durante le sessioni di streaming.
Modalità disponibili
L’SDK supporta queste modalità di permesso:| Modalità | Descrizione | Comportamento dello strumento |
|---|---|---|
default | Comportamento di permesso standard | Nessuna approvazione automatica; gli strumenti non abbinati attivano il tuo callback canUseTool |
dontAsk | Nega invece di richiedere | Qualsiasi cosa non pre-approvata da allowed_tools o regole viene negata; canUseTool non viene mai chiamato |
acceptEdits | Accetta automaticamente le modifiche ai file | Le modifiche ai file e le operazioni del filesystem (mkdir, rm, mv, ecc.) vengono approvate automaticamente |
bypassPermissions | Ignora tutti i controlli di permesso | Tutti gli strumenti vengono eseguiti senza richieste di permesso (usare con cautela) |
plan | Modalità di pianificazione | Gli strumenti di sola lettura vengono eseguiti; Claude analizza e pianifica senza modificare i tuoi file sorgente |
auto (solo TypeScript) | Approvazioni classificate dal modello | Un classificatore di modello approva o nega ogni chiamata di strumento. Vedi Modalità Auto per la disponibilità |
Impostare la modalità di permesso
Puoi impostare la modalità di permesso una volta all’inizio di una query, o cambiarla dinamicamente mentre la sessione è attiva.- Al momento della query
- Durante lo streaming
Passa
permission_mode (Python) o permissionMode (TypeScript) quando crei una query. Questa modalità si applica per l’intera sessione a meno che non venga modificata dinamicamente.Dettagli della modalità
Modalità accetta modifiche (acceptEdits)
Approva automaticamente le operazioni su file in modo che Claude possa modificare il codice senza richiedere. Altri strumenti (come i comandi Bash che non sono operazioni del filesystem) richiedono comunque i permessi normali.
Operazioni approvate automaticamente:
- Modifiche ai file (strumenti Edit, Write)
- Comandi del filesystem:
mkdir,touch,rm,rmdir,mv,cp,sed
additionalDirectories. I percorsi al di fuori di tale ambito e le scritture su percorsi protetti richiedono comunque una richiesta.
Usare quando: ti fidi delle modifiche di Claude e desideri un’iterazione più veloce, ad esempio durante la prototipazione o quando lavori in una directory isolata.
Modalità non chiedere (dontAsk)
Converte qualsiasi richiesta di permesso in una negazione. Gli strumenti pre-approvati da allowed_tools, regole di consentimento di settings.json o un hook vengono eseguiti normalmente. Tutto il resto viene negato senza chiamare canUseTool.
Usare quando: desideri una superficie di strumenti fissa ed esplicita per un agente headless e preferisci una negazione definitiva rispetto a un affidamento silenzioso su canUseTool assente.
Modalità ignora permessi (bypassPermissions)
Approva automaticamente tutti gli usi degli strumenti senza richieste. Gli hook vengono comunque eseguiti e possono bloccare le operazioni se necessario.
Modalità piano (plan)
Limita Claude agli strumenti di sola lettura. Claude può leggere file ed eseguire comandi shell di sola lettura per esplorare la base di codice ma non modifica i tuoi file sorgente. Claude può utilizzare AskUserQuestion per chiarire i requisiti prima di finalizzare il piano. Vedi Gestire approvazioni e input dell’utente per gestire queste richieste.
Usare quando: desideri che Claude proponga modifiche senza eseguirle, ad esempio durante la revisione del codice o quando hai bisogno di approvare le modifiche prima che vengano apportate.
Risorse correlate
Per gli altri passaggi nel flusso di valutazione dei permessi:- Gestire approvazioni e input dell’utente: richieste di approvazione interattive e domande di chiarimento
- Guida agli hook: esegui codice personalizzato nei punti chiave del ciclo di vita dell’agente
- Regole di permesso: regole dichiarative di consentimento/negazione in
settings.json