8 8
9Claude Agent SDK fornisce controlli di permesso per gestire come Claude utilizza gli strumenti. Utilizza modalità di permesso e regole per definire ciò che è consentito automaticamente, e il callback [`canUseTool`](/docs/it/agent-sdk/user-input) per gestire tutto il resto in fase di esecuzione.9Claude Agent SDK fornisce controlli di permesso per gestire come Claude utilizza gli strumenti. Utilizza modalità di permesso e regole per definire ciò che è consentito automaticamente, e il callback [`canUseTool`](/docs/it/agent-sdk/user-input) per gestire tutto il resto in fase di esecuzione.
10 10
11<h2 id="how-permissions-are-evaluated">11## Come vengono valutate le autorizzazioni
12 Come vengono valutate le autorizzazioni
13</h2>
14 12
15Quando Claude richiede uno strumento, l'SDK controlla le autorizzazioni in questo ordine:13Quando Claude richiede uno strumento, l'SDK controlla le autorizzazioni in questo ordine:
16 14
17<Steps>15**1. Hook**
18 <Step title="Hook">
19 Eseguire prima gli [hook](/docs/it/agent-sdk/hooks). Un hook può negare la chiamata completamente o lasciarla passare. Un hook che restituisce `allow` non salta le regole di negazione e di richiesta riportate di seguito; quelle vengono valutate indipendentemente dal risultato dell'hook. Un hook `PreToolUse` che restituisce `allow` inoltre non può approvare una rimozione `rm` o `rmdir` che prende di mira un [percorso critico](/docs/it/permission-modes#critical-paths). Per sapere cosa fa quell'`allow` nel plan mode, consulta [Approvazioni degli hook nel plan mode](/docs/it/permissions#hook-approvals-in-plan-mode).
20 </Step>
21 16
22 <Step title="Regole di negazione">17Eseguire prima gli [hook](/docs/it/agent-sdk/hooks). Un hook può negare la chiamata completamente o lasciarla passare. Un hook che restituisce `allow` non salta le regole deny e ask riportate di seguito; quelle vengono valutate indipendentemente dal risultato dell'hook. Un hook `PreToolUse` che restituisce `allow` inoltre non può approvare una rimozione `rm` o `rmdir` che prende di mira un [percorso critico](/docs/it/permission-modes#critical-paths). Per sapere cosa fa quell'`allow` nel plan mode, consulta [Approvazioni degli hook nel plan mode](/docs/it/permissions#hook-approvals-in-plan-mode).
23 Controllare le regole `deny` (da `disallowed_tools` e [settings.json](/docs/it/settings-reference#permission-settings)). 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.
24 </Step>
25 18
26 <Step title="Regole di richiesta">19**2. Regole deny**
27 Controllare le regole `ask` da [settings.json](/docs/it/settings-reference#permission-settings). Se una regola di richiesta corrisponde, la chiamata passa al tuo [callback `canUseTool`](/docs/it/agent-sdk/user-input) per la conferma, anche in modalità `bypassPermissions`.
28 20
29 Gli strumenti che richiedono l'interazione dell'utente si comportano allo stesso modo: `AskUserQuestion` e gli strumenti MCP il cui server imposta [`_meta["anthropic/requiresUserInteraction"]`](/docs/it/mcp#require-approval-for-a-specific-tool) passano sempre al callback, anche quando una regola di autorizzazione corrisponde. In modalità `dontAsk` entrambi i casi vengono negati, perché quella modalità non richiede mai. L'annotazione MCP richiede Claude Code v2.1.199 o successivo.21Controllare le regole `deny` (da `disallowed_tools` e [settings.json](/docs/it/settings-reference#permission-settings)). Se una regola deny corrisponde, lo strumento viene bloccato, anche in modalità `bypassPermissions`. Le regole deny 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.
30 22
31 Gli strumenti del connettore [claude.ai](/docs/it/mcp#organization-controls-on-connector-tools) che la vostra organizzazione ha impostato su `ask` lasciano anche il flusso in questo passaggio. Ogni chiamata passa al callback, anche in modalità `bypassPermissions` e anche quando una regola di autorizzazione corrisponde. Il callback riceve il motivo `Your organization requires approval for this tool`. In modalità `dontAsk` la chiamata viene negata, perché quella modalità non richiede mai.23**3. Regole ask**
32 </Step>
33 24
34 <Step title="Modalità di autorizzazione">25Controllare le regole `ask` da [settings.json](/docs/it/settings-reference#permission-settings). Se una regola ask corrisponde, la chiamata passa al tuo [callback `canUseTool`](/docs/it/agent-sdk/user-input) per la conferma, anche in modalità `bypassPermissions`.
35 Applicare la [modalità di autorizzazione](#permission-modes) attiva:
36 26
37 * In modalità `bypassPermissions`, Claude Code approva tutto ciò che raggiunge questo passaggio tranne le rimozioni `rm` e `rmdir` che prendono di mira un [percorso critico](/docs/it/permission-modes#critical-paths), che passano invece.27Gli strumenti che richiedono l'interazione dell'utente si comportano allo stesso modo: `AskUserQuestion` e gli strumenti MCP il cui server imposta [`_meta["anthropic/requiresUserInteraction"]`](/docs/it/mcp#require-approval-for-a-specific-tool) passano sempre al callback, anche quando una regola allow corrisponde. In modalità `dontAsk` entrambi i casi vengono negati, perché quella modalità non richiede mai. L'annotazione MCP richiede Claude Code v2.1.199 o successivo.
38 * In modalità `acceptEdits`, Claude Code approva le operazioni su file elencate in [Modalità accetta modifiche](#accept-edits-mode-acceptedits).
39 * In modalità `plan`, Claude Code invia gli strumenti di modifica file e scrittura shell al vostro callback `canUseTool` indipendentemente dalle regole di autorizzazione, in modo che le operazioni di scrittura non possano essere approvate automaticamente durante la pianificazione.
40 * In altre modalità, la richiesta passa.
41 </Step>
42 28
43 <Step title="Regole di autorizzazione">29Gli strumenti del connettore [claude.ai](/docs/it/mcp#organization-controls-on-connector-tools) che la vostra organizzazione ha impostato su `ask` lasciano anche il flusso in questo passaggio. Ogni chiamata passa al callback, anche in modalità `bypassPermissions` e anche quando una regola allow corrisponde. Il callback riceve il motivo `Your organization requires approval for this tool`. In modalità `dontAsk` la chiamata viene negata, perché quella modalità non richiede mai.
44 Controllare le regole `allow` (da `allowed_tools` e settings.json). Se una regola corrisponde, lo strumento viene approvato. Una chiamata che lo strumento approva da solo viene risolta in questo passaggio, senza alcuna regola necessaria: ad esempio una lettura di file all'interno delle vostre directory di lavoro o un [comando Bash di sola lettura](/docs/it/permissions#read-only-commands).
45 30
46 Le rimozioni `rm` e `rmdir` che prendono di mira un [percorso critico](/docs/it/permission-modes#critical-paths) non vengono mai approvate da una regola di consenso. Se poi raggiungano il tuo callback dipende dalla modalità di permesso: in una sessione Agent SDK in modalità `auto`, ad esempio, Claude Code le nega per impostazione predefinita senza chiamarlo. La tabella delle modalità in [Percorsi critici](/docs/it/permission-modes#critical-paths) elenca cosa fa ogni modalità con esse.31**4. Modalità di autorizzazione**
47 32
48 Una regola di consenso non approva una lettura da un [percorso di rete](/docs/it/permissions#network-paths).33Applicare la [modalità di autorizzazione](#permission-modes) attiva:
49 </Step>
50 34
51 <Step title="Callback canUseTool">35* In modalità `bypassPermissions`, Claude Code approva tutto ciò che raggiunge questo passaggio tranne le rimozioni `rm` e `rmdir` che prendono di mira un [percorso critico](/docs/it/permission-modes#critical-paths), che passano invece.
52 Se la chiamata non è stata risolta da nessuno dei passaggi precedenti, chiamare il tuo [callback `canUseTool`](/docs/it/agent-sdk/user-input) per una decisione. In modalità `dontAsk`, questo passaggio viene saltato e lo strumento viene negato.36* In modalità `acceptEdits`, Claude Code approva le operazioni su file elencate in [Modalità accetta modifiche](#accept-edits-mode-acceptedits).
37* In modalità `plan`, Claude Code invia gli strumenti di modifica file e scrittura shell al vostro callback `canUseTool` indipendentemente dalle regole allow, in modo che le operazioni di scrittura non possano essere approvate automaticamente durante la pianificazione.
38* In altre modalità, la richiesta passa.
53 39
54 Nell'SDK TypeScript, se impostate [`permissionPrompts: 'none'`](/docs/it/agent-sdk/typescript#options), il vostro callback non viene chiamato in questo passaggio. Un hook [`PermissionRequest`](/docs/it/hooks#permissionrequest) ha ancora la possibilità di decidere, e se non lo fa, Claude Code nega la chiamata. L'opzione richiede Claude Code v2.1.259 o successivo.40**5. Regole allow**
55 </Step>
56</Steps>
57 41
58<img src="https://mintcdn.com/claude-code/jYgs7qigNjO1Badj/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=jYgs7qigNjO1Badj&q=85&s=c771ad9085b1277d3708027a49c744bc" className="dark:hidden" alt="Diagramma del flusso di valutazione delle autorizzazioni in sei passaggi che corrisponde ai passaggi precedenti: una richiesta di strumento passa attraverso hook, regole di negazione, regole di richiesta, modalità di autorizzazione, regole di autorizzazione e canUseTool. Hook, regole di negazione e canUseTool possono instradare verso il basso a Bloccato; bypass della modalità di autorizzazione, regole di autorizzazione e canUseTool possono instradare verso l'alto a Esegui; le regole di richiesta instradano a canUseTool." width="1180" height="260" data-path="images/agent-sdk/permissions-flow.svg" />42Controllare le regole `allow` (da `allowed_tools` e settings.json). Se una regola corrisponde, lo strumento viene approvato. Una chiamata che lo strumento approva da solo viene risolta in questo passaggio, senza alcuna regola necessaria: ad esempio una lettura di file all'interno delle vostre directory di lavoro o un [comando Bash di sola lettura](/docs/it/permissions#read-only-commands).
59 43
60<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/agent-sdk/permissions-flow-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=e53a91e9059cbf51852b7cedb4dd4251" className="hidden dark:block" alt="Diagramma del flusso di valutazione delle autorizzazioni in sei passaggi che corrisponde ai passaggi precedenti: una richiesta di strumento passa attraverso hook, regole di negazione, regole di richiesta, modalità di autorizzazione, regole di autorizzazione e canUseTool. Hook, regole di negazione e canUseTool possono instradare verso il basso a Bloccato; bypass della modalità di autorizzazione, regole di autorizzazione e canUseTool possono instradare verso l'alto a Esegui; le regole di richiesta instradano a canUseTool." width="1180" height="260" data-path="images/agent-sdk/permissions-flow-dark.svg" />44Le rimozioni `rm` e `rmdir` che prendono di mira un [percorso critico](/docs/it/permission-modes#critical-paths) non vengono mai approvate da una regola allow. Se poi raggiungano il tuo callback dipende dalla modalità di permesso: in una sessione Agent SDK in modalità `auto`, ad esempio, Claude Code le nega per impostazione predefinita senza chiamarlo. La tabella delle modalità in [Percorsi critici](/docs/it/permission-modes#critical-paths) elenca cosa fa ogni modalità con esse.
45
46Una regola allow non approva una lettura da un [percorso di rete](/docs/it/permissions#network-paths).
47
48**6. Callback canUseTool**
49
50Se la chiamata non è stata risolta da nessuno dei passaggi precedenti, chiamare il tuo [callback `canUseTool`](/docs/it/agent-sdk/user-input) per una decisione. In modalità `dontAsk`, questo passaggio viene saltato e lo strumento viene negato, anche se un [mod](/docs/it/plugins/mods/overview) che hai installato può comunque approvare [alcune di queste chiamate](/docs/it/permissions#precedence-among-rules-hooks-and-mods).
51
52Nell'SDK TypeScript, se impostate [`permissionPrompts: 'none'`](/docs/it/agent-sdk/typescript#options), il vostro callback non viene chiamato in questo passaggio. Un hook [`PermissionRequest`](/docs/it/hooks#permissionrequest) ha ancora la possibilità di decidere, e se non lo fa, Claude Code nega la chiamata. L'opzione richiede Claude Code v2.1.259 o successivo.
53
54
61 55
62Se passate un callback `canUseTool` in una configurazione in cui l'SDK TypeScript si aspetta che l'ordine di valutazione approvi automaticamente le chiamate prima che il callback sia consultato, l'SDK emette un avviso di processo Node.js una volta quando la query viene costruita. Il codice dell'avviso è `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Due configurazioni lo attivano:56Se passate un callback `canUseTool` in una configurazione in cui l'SDK TypeScript si aspetta che l'ordine di valutazione approvi automaticamente le chiamate prima che il callback sia consultato, l'SDK emette un avviso di processo Node.js una volta quando la query viene costruita. Il codice dell'avviso è `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Due configurazioni lo attivano:
63 57
64* `permissionMode: 'bypassPermissions'`, che approva automaticamente ogni chiamata che raggiunge il passaggio della modalità di autorizzazione a parte le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves)58* `permissionMode: 'bypassPermissions'`, che approva automaticamente ogni chiamata che raggiunge il passaggio della modalità di autorizzazione a parte le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves)
65* Ogni voce `allowedTools` semplice come `"Read"`, che approva automaticamente l'intero strumento prima che il callback venga consultato, a parte le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves) e le [letture da percorsi di rete](/docs/it/permissions#network-paths)59* Ogni voce `allowedTools` semplice come `"Read"`, che approva automaticamente l'intero strumento prima che il callback venga consultato, a parte le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves) e le [letture da percorsi di rete](/docs/it/permissions#network-paths)
66 60
67Le voci con uno specificatore come `Bash(ls *)` e la modalità `acceptEdits` non lo attivano, e le regole di autorizzazione provenienti da file di impostazioni non sono visibili al controllo.61Le voci con uno specificatore come `Bash(ls *)` e la modalità `acceptEdits` non lo attivano, e le regole allow provenienti da file di impostazioni non sono visibili al controllo.
68 62
69Ascoltate con `process.on('warning', ...)` e abbinate il codice per registrarlo o sopprimerlo. Per controllare ogni chiamata di strumento indipendentemente dalla modalità e dalle regole, utilizzate invece un [hook `PreToolUse`](/docs/it/agent-sdk/hooks).63Ascoltate con `process.on('warning', ...)` e abbinate il codice per registrarlo o sopprimerlo. Per controllare ogni chiamata di strumento indipendentemente dalla modalità e dalle regole, utilizzate invece un [hook `PreToolUse`](/docs/it/agent-sdk/hooks).
70 64
71Questa pagina si concentra su **regole di autorizzazione e negazione** e **modalità di autorizzazione**. Per gli altri passaggi:65Questa pagina si concentra su **regole allow e deny** e **modalità di autorizzazione**. Per gli altri passaggi:
72 66
73* **Hooks:** eseguire codice personalizzato per consentire, negare o modificare le richieste di strumenti. Vedere [Controllare l'esecuzione con gli hook](/docs/it/agent-sdk/hooks).67* **Hooks:** eseguire codice personalizzato per consentire, negare o modificare le richieste di strumenti. Vedere [Controllare l'esecuzione con gli hook](/docs/it/agent-sdk/hooks).
74* **Callback canUseTool:** richiedere l'approvazione degli utenti in fase di esecuzione, quando nessun passaggio precedente risolve la chiamata. Vedere [Gestire le approvazioni e l'input dell'utente](/docs/it/agent-sdk/user-input).68* **Callback canUseTool:** richiedere l'approvazione degli utenti in fase di esecuzione, quando nessun passaggio precedente risolve la chiamata. Vedere [Gestire le approvazioni e l'input dell'utente](/docs/it/agent-sdk/user-input).
75 69
76<h2 id="allow-and-deny-rules">70## Regole allow e deny
77 Regole di consentimento e negazione
78</h2>
79 71
80`allowed_tools` e `disallowed_tools` (TypeScript: `allowedTools` / `disallowedTools`) aggiungono voci agli elenchi di regole di consentimento e negazione nel flusso di valutazione sopra descritto. Se nominate uno dei [strumenti di tracciamento delle attività](/docs/it/agent-sdk/todo-tracking#model-availability) in `allowed_tools`, Claude Code opta anche per la sessione. Qualsiasi altro strumento non elencato in `allowed_tools` è ancora disponibile per Claude, e una chiamata ad esso che necessita di approvazione passa attraverso la modalità di autorizzazione. Le regole di negazione si comportano diversamente a seconda che nominino uno strumento o limitino un modello all'interno di uno.72`allowed_tools` e `disallowed_tools` (TypeScript: `allowedTools` / `disallowedTools`) aggiungono voci agli elenchi di regole allow e deny nel flusso di valutazione sopra descritto. Se nominate uno degli [strumenti di tracciamento delle attività](/docs/it/agent-sdk/todo-tracking#model-availability) in `allowed_tools`, Claude Code abilita anche quegli strumenti per la sessione. Qualsiasi altro strumento non elencato in `allowed_tools` è ancora disponibile per Claude, e una chiamata ad esso che necessita di approvazione passa attraverso la modalità di autorizzazione. Le regole deny si comportano diversamente a seconda che nominino uno strumento o limitino un modello all'interno di uno.
81 73
82| Opzione | Effetto |74| Opzione | Effetto |
83| :- | :- |75| :- | :- |
84| `allowed_tools=["Read", "Grep"]` | `Read` e `Grep` sono approvati automaticamente, a parte le [letture da percorsi di rete](/docs/it/permissions#network-paths). Gli altri strumenti non elencati qui esistono ancora, e le chiamate ad essi che necessitano di approvazione passano alla modalità di permesso e a `canUseTool`. |76| `allowed_tools=["Read", "Grep"]` | `Read` e `Grep` sono approvati automaticamente, a parte le [letture da percorsi di rete](/docs/it/permissions#network-paths). Gli altri strumenti non elencati qui esistono ancora, e le chiamate ad essi che necessitano di approvazione passano alla modalità di permesso e a `canUseTool`. |
85| `disallowed_tools=["Bash"]` | La definizione dello strumento `Bash` viene rimossa dalla richiesta. Claude non vede lo strumento e non può tentarlo. |77| `disallowed_tools=["Bash"]` | La definizione dello strumento `Bash` viene rimossa dalla richiesta. Claude non vede lo strumento e non può tentarlo. |
86| `disallowed_tools=["Bash(rm *)"]` | `Bash` rimane disponibile. Le chiamate che corrispondono a `rm *` [come scritto](/docs/it/permissions#bash-rule-limits) vengono negate in ogni modalità di autorizzazione, inclusa `bypassPermissions`. Le altre chiamate `Bash`, incluso `/bin/rm`, passano attraverso la modalità di autorizzazione. |78| `disallowed_tools=["Bash(rm *)"]` | `Bash` rimane disponibile. Le chiamate che corrispondono a `rm *` [come scritto](/docs/it/permissions#bash-rule-limits) vengono negate in ogni modalità di autorizzazione, inclusa `bypassPermissions`. Le altre chiamate `Bash`, incluso `/bin/rm`, passano attraverso la modalità di autorizzazione. |
87| `disallowed_tools=["*"]` | Ogni definizione di strumento viene rimossa dalla richiesta. I glob dei nomi degli strumenti sono supportati nelle regole di negazione: `"*"` corrisponde a ogni strumento e `"mcp__*"` corrisponde a ogni strumento MCP su tutti i server. |79| `disallowed_tools=["*"]` | Ogni definizione di strumento viene rimossa dalla richiesta. I glob dei nomi degli strumenti sono supportati nelle regole deny: `"*"` corrisponde a ogni strumento e `"mcp__*"` corrisponde a ogni strumento MCP su tutti i server. |
88 80
89Le regole di consentimento accettano glob dei nomi degli strumenti solo dopo un prefisso letterale `mcp__<server>__`. Il segmento del server deve essere privo di glob in modo che la regola nomini un server specifico che avete configurato: `mcp__puppeteer__*` corrisponde a ogni strumento dal server `puppeteer`, e `mcp__github__get_*` corrisponde ai suoi strumenti `get_`. Una voce non ancorata come `allowed_tools=["*"]` o `allowed_tools=["mcp__*"]` viene ignorata con un avviso di avvio e non approva automaticamente nulla.81Le regole allow accettano glob dei nomi degli strumenti solo dopo un prefisso letterale `mcp__<server>__`. Il segmento del server deve essere privo di glob in modo che la regola nomini un server specifico che avete configurato: `mcp__puppeteer__*` corrisponde a ogni strumento dal server `puppeteer`, e `mcp__github__get_*` corrisponde ai suoi strumenti `get_`. Una voce non ancorata come `allowed_tools=["*"]` o `allowed_tools=["mcp__*"]` viene ignorata con un avviso di avvio e non approva automaticamente nulla.
90 82
91Le regole limitate per `Read` e `Edit` accettano un modello di percorso. Le regole `Edit(path)` governano tutti gli strumenti integrati che scrivono file, inclusi `Write` e `NotebookEdit`; una regola `Write(path)` non viene mai abbinata dai controlli di autorizzazione dei file.83Le regole limitate per `Read` e `Edit` accettano un modello di percorso. Le regole `Edit(path)` governano tutti gli strumenti integrati che scrivono file, inclusi `Write` e `NotebookEdit`; una regola `Write(path)` non viene mai abbinata dai controlli di autorizzazione dei file.
92 84
93Utilizzate `//path` per un percorso del filesystem assoluto: una regola di negazione di `Edit(//secrets/**)` blocca le scritture ovunque sotto `/secrets` su disco. Con una singola barra iniziale, `Edit(/secrets/**)` si ancora alla fonte della regola. Per le regole passate attraverso `allowed_tools` o `disallowed_tools`, ciò significa la directory di lavoro della sessione, quindi la regola non blocca `/secrets` su disco. Consultate [Regole Read e Edit](/docs/it/permissions#read-and-edit) per i quattro moduli di ancoraggio e come le regole dai file di impostazioni si risolvono.85Utilizzate `//path` per un percorso del filesystem assoluto: una regola deny `Edit(//secrets/**)` blocca le scritture ovunque sotto `/secrets` su disco. Con una singola barra iniziale, `Edit(/secrets/**)` si ancora alla fonte della regola. Per le regole passate attraverso `allowed_tools` o `disallowed_tools`, ciò significa la directory di lavoro della sessione, quindi la regola non blocca `/secrets` su disco. Consultate [Regole Read e Edit](/docs/it/permissions#read-and-edit) per i quattro moduli di ancoraggio e come le regole dai file di impostazioni si risolvono.
94 86
95<Warning>87> [!WARNING]
96 **Gli strumenti approvati automaticamente non raggiungono mai `canUseTool`.** Una chiamata a uno strumento approvata in qualsiasi fase precedente, da `acceptEdits` o `bypassPermissions`, o da una regola di consentimento, salta il callback `canUseTool`, quindi i controlli di autorizzazione che inserite lì vengono silenziosamente ignorati per quello strumento.88>
97 89> **Gli strumenti approvati automaticamente non raggiungono mai `canUseTool`.** Una chiamata a uno strumento approvata in qualsiasi fase precedente, da `acceptEdits` o `bypassPermissions`, o da una regola allow, salta il callback `canUseTool`, quindi i controlli di autorizzazione che inserite lì vengono silenziosamente ignorati per quello strumento.
98 Una regola di consentimento non approva mai automaticamente `AskUserQuestion`, strumenti MCP contrassegnati [`_meta["anthropic/requiresUserInteraction"]`](/docs/it/mcp#require-approval-for-a-specific-tool), strumenti del connettore [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), o rimozioni `rm` e `rmdir` che puntano a un [percorso critico](/docs/it/permission-modes#critical-paths). In modalità `dontAsk` Claude Code nega queste chiamate senza invocare il callback. In altre modalità le prime tre raggiungono il callback. A seconda della [modalità di autorizzazione](/docs/it/permission-modes#critical-paths), una rimozione di percorso critico raggiunge il callback anche o Claude Code la nega senza chiamarla, come fa per impostazione predefinita per una sessione Agent SDK in modalità `auto`.90>
99 91> Una regola allow non approva mai automaticamente `AskUserQuestion`, strumenti MCP contrassegnati [`_meta["anthropic/requiresUserInteraction"]`](/docs/it/mcp#require-approval-for-a-specific-tool), strumenti del connettore [che la vostra organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), o rimozioni `rm` e `rmdir` che puntano a un [percorso critico](/docs/it/permission-modes#critical-paths). In modalità `dontAsk` Claude Code nega queste chiamate senza invocare il callback. In altre modalità le prime tre raggiungono il callback. A seconda della [modalità di autorizzazione](/docs/it/permission-modes#critical-paths), anche una rimozione di percorso critico raggiunge il callback oppure Claude Code la nega senza chiamarlo, come fa per impostazione predefinita per una sessione Agent SDK in modalità `auto`.
100 La copertura dipende dalla forma della voce: un nome semplice come `Read` o `mcp__github__get_issue` approva automaticamente ogni chiamata a quello strumento a parte tali eccezioni e le [letture da percorsi di rete](/docs/it/permissions#network-paths), mentre una regola limitata come `Bash(npm test *)` approva automaticamente solo le chiamate corrispondenti, e le altre chiamate `Bash` che necessitano di approvazione passano comunque al callback. Per i controlli che devono essere eseguiti su ogni chiamata a uno strumento, usa un [hook `PreToolUse`](/docs/it/agent-sdk/hooks): gli hook vengono eseguiti prima di ogni altro passaggio, e una negazione da parte di un hook si applica anche in modalità `bypassPermissions`.92>
101</Warning>93> La copertura dipende dalla forma della voce: un nome semplice come `Read` o `mcp__github__get_issue` approva automaticamente ogni chiamata a quello strumento a parte tali eccezioni e le [letture da percorsi di rete](/docs/it/permissions#network-paths), mentre una regola limitata come `Bash(npm test *)` approva automaticamente solo le chiamate corrispondenti, e le altre chiamate `Bash` che necessitano di approvazione passano comunque al callback. Per i controlli che devono essere eseguiti su ogni chiamata a uno strumento, usa un [hook `PreToolUse`](/docs/it/agent-sdk/hooks): gli hook vengono eseguiti prima di ogni altro passaggio, e una negazione da parte di un hook si applica anche in modalità `bypassPermissions`.
102 94
103Per un agente bloccato, abbinate `allowedTools` con `permissionMode: "dontAsk"`:95Per un agente bloccato, abbinate `allowedTools` con `permissionMode: "dontAsk"`:
104 96
109};101};
110```102```
111 103
112Gli strumenti elencati sono approvati, a parte le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves) e le [letture da percorsi di rete](/docs/it/permissions#network-paths), e ogni altra chiamata che comporterebbe una richiesta di permesso viene invece negata. Le chiamate che non necessitano di approvazione in modalità `default` vengono eseguite indipendentemente dal fatto che tu le elenchi, come i [comandi Bash di sola lettura](/docs/it/permissions#read-only-commands), strumenti come `Agent` che non chiedono prima di essere eseguiti, e letture di file all'interno delle tue directory di lavoro. Per rimuovere completamente uno strumento dalla richiesta, aggiungi il suo nome semplice a `disallowedTools`.104Gli strumenti elencati sono approvati, a parte le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves) e le [letture da percorsi di rete](/docs/it/permissions#network-paths). Ogni altra chiamata che comporterebbe una richiesta di permesso viene invece negata, anche se un [mod](/docs/it/plugins/mods/overview) che hai installato può comunque approvare [alcune di queste chiamate](/docs/it/permissions#precedence-among-rules-hooks-and-mods).
105
106Le chiamate che non necessitano di approvazione in modalità `default` vengono eseguite indipendentemente dal fatto che tu le elenchi. Includono i [comandi Bash di sola lettura](/docs/it/permissions#read-only-commands), strumenti come `Agent` che non chiedono prima di essere eseguiti, e letture di file all'interno delle tue directory di lavoro. Per rimuovere completamente uno strumento dalla richiesta, aggiungi il suo nome semplice a `disallowedTools`.
113 107
114<Warning>108> [!WARNING]
115 **`allowed_tools` non vincola `bypassPermissions`.** `allowed_tools` pre-approva gli strumenti che elencate. Gli altri strumenti non elencati non vengono abbinati da alcuna regola di consentimento e passano attraverso la modalità di autorizzazione, dove `bypassPermissions` li approva. L'impostazione di `allowed_tools=["Read"]` insieme a `permission_mode="bypassPermissions"` approva comunque ogni strumento, inclusi `Bash`, `Write` e `Edit`. Se avete bisogno di `bypassPermissions` ma volete che strumenti specifici siano bloccati, utilizzate `disallowed_tools`.109>
116</Warning>110> **`allowed_tools` non vincola `bypassPermissions`.** `allowed_tools` pre-approva gli strumenti che elencate. Gli altri strumenti non elencati non vengono abbinati da alcuna regola allow e passano attraverso la modalità di autorizzazione, dove `bypassPermissions` li approva. L'impostazione di `allowed_tools=["Read"]` insieme a `permission_mode="bypassPermissions"` approva comunque ogni strumento, inclusi `Bash`, `Write` e `Edit`. Se avete bisogno di `bypassPermissions` ma volete che strumenti specifici siano bloccati, utilizzate `disallowed_tools`.
117 111
118Potete anche configurare le regole di consentimento, negazione e richiesta in modo dichiarativo in `.claude/settings.json`. Queste regole vengono lette quando la fonte di impostazione `project` è abilitata, il che avviene per le opzioni predefinite di `query()`. Se impostate esplicitamente `setting_sources` (TypeScript: `settingSources`), includete `"project"` affinché si applichino. Consultate [Impostazioni di autorizzazione](/docs/it/settings-reference#permission-settings) per la sintassi delle regole.112Potete anche configurare le regole allow, deny e ask in modo dichiarativo in `.claude/settings.json`. Queste regole vengono lette quando la fonte di impostazione `project` è abilitata, il che avviene per le opzioni predefinite di `query()`. Se impostate esplicitamente `setting_sources` (TypeScript: `settingSources`), includete `"project"` affinché si applichino. Consultate [Impostazioni di autorizzazione](/docs/it/settings-reference#permission-settings) per la sintassi delle regole.
119 113
120<h2 id="permission-modes">114## Modalità di autorizzazione
121 Modalità di autorizzazione
122</h2>
123 115
124Le modalità di autorizzazione forniscono un controllo globale su come Claude utilizza gli strumenti. È possibile impostare la modalità di autorizzazione quando si chiama `query()` o modificarla dinamicamente durante le sessioni di streaming.116Le modalità di autorizzazione forniscono un controllo globale su come Claude utilizza gli strumenti. È possibile impostare la modalità di autorizzazione quando si chiama `query()` o modificarla dinamicamente durante le sessioni di streaming.
125 117
126Con Claude Code v2.1.302 o successivo, la tua app si avvia in modalità `default` a meno che tu non imposti una modalità di permesso o che non ne riceva una da [`permissions.defaultMode`](/docs/it/settings-reference#permissions-defaultmode) nei suoi file di impostazioni. In modalità `default`, Claude Code nega qualsiasi chiamata a uno strumento che richieda approvazione, a meno che tu non la approvi tramite una regola di permesso, un hook, un callback `canUseTool` o uno strumento per le richieste di permesso. Se le chiamate agli strumenti vengono negate, consulta [Chiamate agli strumenti negate in `claude -p` e nelle esecuzioni dell'Agent SDK](/docs/it/permission-modes#which-mode-a-non-interactive-run-starts-in).118Con Claude Code v2.1.302 o successivo, la tua app si avvia in modalità `default` a meno che tu non imposti una modalità di permesso o che non ne riceva una da [`permissions.defaultMode`](/docs/it/settings-reference#permissions-defaultmode) nei suoi file di impostazioni. In modalità `default`, Claude Code nega qualsiasi chiamata a uno strumento che richieda approvazione, a meno che tu non la approvi tramite una regola allow, un hook, un callback `canUseTool` o uno strumento per le richieste di permesso. Se le chiamate agli strumenti vengono negate, consulta [Chiamate agli strumenti negate in `claude -p` e nelle esecuzioni dell'Agent SDK](/docs/it/permission-modes#which-mode-a-non-interactive-run-starts-in).
127 119
128<h3 id="available-modes">120### Modalità disponibili
129 Modalità disponibili
130</h3>
131 121
132L'SDK supporta queste modalità di autorizzazione:122L'SDK supporta queste modalità di autorizzazione:
133 123
134| Modalità | Descrizione | Comportamento dello strumento |124| Modalità | Descrizione | Comportamento dello strumento |
135| :- | :- | :- |125| :- | :- | :- |
136| `default` | Comportamento di autorizzazione standard | Nessuna approvazione automatica basata sulla modalità; le chiamate che richiedono approvazione e non corrispondono a nessuna regola di autorizzazione attivano il callback `canUseTool` |126| `default` | Comportamento di autorizzazione standard | Nessuna approvazione automatica basata sulla modalità; le chiamate che richiedono approvazione e non corrispondono a nessuna regola allow attivano il callback `canUseTool` |
137| `dontAsk` | Nega invece di chiedere | Qualsiasi chiamata che altrimenti genererebbe una richiesta di conferma viene negata. Le chiamate approvate da `allowed_tools` o da regole vengono eseguite, così come le chiamate che non richiedono approvazione in modalità `default`; gli strumenti connettore [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) e gli strumenti che richiedono interazione dell'utente vengono negati anche se li hai pre-approvati, così come le [letture da percorsi di rete](/docs/it/permissions#network-paths) e le rimozioni `rm` e `rmdir` che interessano un [percorso critico](/docs/it/permission-modes#critical-paths). `canUseTool` non viene mai chiamato |127| `dontAsk` | Nega invece di chiedere | Qualsiasi chiamata che altrimenti genererebbe una richiesta di conferma viene negata, anche se un [mod](/docs/it/plugins/mods/overview) che hai installato può comunque approvare [alcune di queste chiamate](/docs/it/permissions#precedence-among-rules-hooks-and-mods). Le chiamate approvate da `allowed_tools` o da regole vengono eseguite, così come le chiamate che non richiedono approvazione in modalità `default`. Gli strumenti connettore [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools) e gli strumenti che richiedono interazione dell'utente vengono negati anche se li hai pre-approvati. Anche le [letture da percorsi di rete](/docs/it/permissions#network-paths) e le rimozioni `rm` e `rmdir` che interessano un [percorso critico](/docs/it/permission-modes#critical-paths) vengono negate anche se le hai pre-approvate. `canUseTool` non viene mai chiamato |
138| `acceptEdits` | Accetta automaticamente le modifiche ai file | Le modifiche ai file e le [operazioni del filesystem](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, ecc.) vengono approvate automaticamente |128| `acceptEdits` | Accetta automaticamente le modifiche ai file | Le modifiche ai file e le [operazioni del filesystem](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, ecc.) vengono approvate automaticamente |
139| `bypassPermissions` | Ignora i controlli di autorizzazione | Gli strumenti vengono eseguiti senza richieste di autorizzazione, ad eccezione delle [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves). Utilizzare con cautela |129| `bypassPermissions` | Ignora i controlli di autorizzazione | Gli strumenti vengono eseguiti senza richieste di autorizzazione, ad eccezione delle [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves). Utilizzare con cautela |
140| `plan` | Modalità di pianificazione | Claude esplora e pianifica senza modificare i file sorgente; le modifiche ai file non vengono mai approvate automaticamente e richiedono il callback `canUseTool` |130| `plan` | Modalità di pianificazione | Claude esplora e pianifica senza modificare i file sorgente; le modifiche ai file non vengono mai approvate automaticamente e richiedono il callback `canUseTool` |
141| `auto` | Approvazioni classificate dal modello | Un classificatore del modello esamina azioni come comandi shell e richieste di rete, consentendo o bloccando ciascuna che esamina. Vedere [Modalità Auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) per la disponibilità e l'ordine di decisione |131| `auto` | Approvazioni classificate dal modello | Un classificatore del modello esamina azioni come comandi shell e richieste di rete, consentendo o bloccando ciascuna che esamina. Vedere [Modalità Auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) per la disponibilità e l'ordine di decisione |
142 132
143<Warning>133> [!WARNING]
144 **Ereditarietà dei subagent:** Un subagent viene eseguito nella modalità di permesso della sessione padre a meno che tu non imposti `permissionMode` sulla sua [`AgentDefinition`](/docs/it/agent-sdk/typescript#agentdefinition) e la sessione padre sia in modalità `default`, `dontAsk` o `plan`. Anche in questo caso, Claude Code non applica mai un valore `"bypassPermissions"` e applica un valore `"auto"` solo quando la [modalità auto è disponibile](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) per quel subagent. Un subagent viene eseguito in modalità `bypassPermissions` solo quando lo è la sessione padre stessa. L'eccezione `bypassPermissions` richiede Claude Code v2.1.267 o successivo.134>
135> **Ereditarietà dei subagent:** Un subagent viene eseguito nella modalità di permesso della sessione padre a meno che tu non imposti `permissionMode` sulla sua [`AgentDefinition`](/docs/it/agent-sdk/typescript#agentdefinition) e la sessione padre sia in modalità `default`, `dontAsk` o `plan`. Anche in questo caso, Claude Code non applica mai un valore `"bypassPermissions"` e applica un valore `"auto"` solo quando la [modalità auto è disponibile](/docs/it/permission-modes#eliminate-prompts-with-auto-mode) per quel subagent. Un subagent viene eseguito in modalità `bypassPermissions` solo quando lo è la sessione padre stessa. L'eccezione `bypassPermissions` richiede Claude Code v2.1.267 o successivo.
136>
137> I subagent possono avere prompt di sistema diversi e comportamenti meno vincolati rispetto all'agente principale, quindi ereditare `bypassPermissions` concede loro accesso completo e autonomo al sistema. Le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves) si applicano comunque.
145 138
146 I subagent possono avere prompt di sistema diversi e comportamenti meno vincolati rispetto all'agente principale, quindi ereditare `bypassPermissions` concede loro accesso completo e autonomo al sistema. Le [azioni che nessuna modalità approva automaticamente](/docs/it/permission-modes#actions-no-mode-auto-approves) si applicano comunque.139### Impostare la modalità di autorizzazione
147</Warning>
148
149<h3 id="set-permission-mode">
150 Impostare la modalità di autorizzazione
151</h3>
152 140
153È possibile impostare la modalità di autorizzazione una volta all'avvio di una query, oppure modificarla dinamicamente mentre la sessione è attiva.141È possibile impostare la modalità di autorizzazione una volta all'avvio di una query, oppure modificarla dinamicamente mentre la sessione è attiva.
154 142
155<Tabs>143**Al momento della query**
156 <Tab title="Al momento della query">144
157 Passa `permission_mode` (Python) o `permissionMode` (TypeScript) quando crei una query.145Passa `permission_mode` (Python) o `permissionMode` (TypeScript) quando crei una query.
158 146
159 <CodeGroup>147```python Python theme={null}
160 ```python Python theme={null}148import asyncio
161 import asyncio149from claude_agent_sdk import query, ClaudeAgentOptions
162 from claude_agent_sdk import query, ClaudeAgentOptions
163 150
164 151
165 async def main():152async def main():
166 async for message in query(153 async for message in query(
167 prompt="Help me refactor this code",154 prompt="Help me refactor this code",
168 options=ClaudeAgentOptions(155 options=ClaudeAgentOptions(
173 print(message.result)160 print(message.result)
174 161
175 162
176 asyncio.run(main())163asyncio.run(main())
177 ```164```
178 165
179 ```typescript TypeScript theme={null}166```typescript TypeScript theme={null}
180 import { query } from "@anthropic-ai/claude-agent-sdk";167import { query } from "@anthropic-ai/claude-agent-sdk";
181 168
182 async function main() {169async function main() {
183 for await (const message of query({170 for await (const message of query({
184 prompt: "Help me refactor this code",171 prompt: "Help me refactor this code",
185 options: {172 options: {
190 console.log(message.result);177 console.log(message.result);
191 }178 }
192 }179 }
193 }180}
194 181
195 main();182main();
196 ```183```
197 </CodeGroup>
198 </Tab>
199 184
200 <Tab title="Durante lo streaming">185**Durante lo streaming**
201 Chiamare `set_permission_mode()` (Python) o `setPermissionMode()` (TypeScript) per modificare la modalità durante la sessione. La nuova modalità ha effetto immediatamente per tutte le successive richieste di strumenti. Questo consente di iniziare in modo restrittivo e allentare le autorizzazioni man mano che la fiducia aumenta, ad esempio passando a `acceptEdits` dopo aver esaminato l'approccio iniziale di Claude.
202 186
203 <CodeGroup>187Chiamare `set_permission_mode()` (Python) o `setPermissionMode()` (TypeScript) per modificare la modalità durante la sessione. La nuova modalità ha effetto immediatamente per tutte le successive richieste di strumenti. Questo consente di iniziare in modo restrittivo e allentare le autorizzazioni man mano che la fiducia aumenta, ad esempio passando a `acceptEdits` dopo aver esaminato l'approccio iniziale di Claude.
204 ```python Python theme={null}
205 import asyncio
206 from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions
207 188
189```python Python theme={null}
190import asyncio
191from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions
208 192
209 async def main():193
194async def main():
210 async with ClaudeSDKClient(195 async with ClaudeSDKClient(
211 options=ClaudeAgentOptions(196 options=ClaudeAgentOptions(
212 permission_mode="default", # Start in default mode197 permission_mode="default", # Start in default mode
223 print(message.result)208 print(message.result)
224 209
225 210
226 asyncio.run(main())211asyncio.run(main())
227 ```212```
228 213
229 ```typescript TypeScript theme={null}214```typescript TypeScript theme={null}
230 import { query } from "@anthropic-ai/claude-agent-sdk";215import { query } from "@anthropic-ai/claude-agent-sdk";
231 216
232 async function main() {217async function main() {
233 const q = query({218 const q = query({
234 prompt: "Help me refactor this code",219 prompt: "Help me refactor this code",
235 options: {220 options: {
246 console.log(message.result);231 console.log(message.result);
247 }232 }
248 }233 }
249 }234}
250 235
251 main();236main();
252 ```237```
253 </CodeGroup>
254 </Tab>
255</Tabs>
256 238
257<h3 id="mode-details">239### Dettagli della modalità
258 Dettagli della modalità
259</h3>
260 240
261<h4 id="accept-edits-mode-acceptedits">241#### Modalità accetta modifiche (`acceptEdits`)
262 Modalità accetta modifiche (`acceptEdits`)
263</h4>
264 242
265Approva automaticamente le operazioni sui file in modo che Claude possa modificare il codice senza richiedere conferma. Gli altri strumenti (come i comandi Bash che non sono operazioni del filesystem) richiedono comunque autorizzazioni normali.243Approva automaticamente le operazioni sui file in modo che Claude possa modificare il codice senza richiedere conferma. Gli altri strumenti (come i comandi Bash che non sono operazioni del filesystem) richiedono comunque autorizzazioni normali.
266 244
277 255
278**Utilizzare quando:** si confida nelle modifiche di Claude e si desidera un'iterazione più veloce, ad esempio durante la prototipazione o quando si lavora in una directory isolata.256**Utilizzare quando:** si confida nelle modifiche di Claude e si desidera un'iterazione più veloce, ad esempio durante la prototipazione o quando si lavora in una directory isolata.
279 257
280<h4 id="don’t-ask-mode-dontask">258#### Modalità non chiedere (`dontAsk`)
281 Modalità non chiedere (`dontAsk`)259
282</h4>260Converte qualsiasi richiesta di permesso in una negazione, senza chiamare `canUseTool`, anche se un [mod](/docs/it/plugins/mods/overview) che hai installato può comunque approvare [alcune di queste chiamate](/docs/it/permissions#precedence-among-rules-hooks-and-mods). Gli strumenti pre-approvati da `allowed_tools`, da regole allow in `settings.json` o da un hook vengono eseguiti normalmente. Vengono eseguite anche le chiamate che non richiedono approvazione in modalità `default`, come le letture di file all'interno delle tue directory di lavoro e le chiamate a `Agent`.
283 261
284Converte qualsiasi richiesta di permesso in una negazione, senza chiamare `canUseTool`. Gli strumenti pre-approvati da `allowed_tools`, da regole di permesso in `settings.json` o da un hook vengono eseguiti normalmente, così come le chiamate che non richiedono approvazione in modalità `default`, come le letture di file all'interno delle tue directory di lavoro e le chiamate a `Agent`. Gli strumenti connettore [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), gli strumenti che richiedono interazione dell'utente, le [letture da percorsi di rete](/docs/it/permissions#network-paths) e le rimozioni `rm` e `rmdir` che interessano un [percorso critico](/docs/it/permission-modes#critical-paths) vengono negati anche quando una regola di permesso corrisponde. Nemmeno un'approvazione da parte di un hook `PreToolUse` sblocca una rimozione di un percorso critico o una lettura da un percorso di rete.262Gli strumenti connettore [che la tua organizzazione ha impostato su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), gli strumenti che richiedono interazione dell'utente, le [letture da percorsi di rete](/docs/it/permissions#network-paths) e le rimozioni `rm` e `rmdir` che interessano un [percorso critico](/docs/it/permission-modes#critical-paths) vengono negati anche quando una regola allow corrisponde. Nemmeno un'approvazione da parte di un hook `PreToolUse` sblocca una rimozione di un percorso critico o una lettura da un percorso di rete.
285 263
286**Utilizzare quando:** si desidera una superficie di strumenti fissa ed esplicita per un agente headless e si preferisce un rifiuto netto rispetto all'affidamento silenzioso all'assenza di `canUseTool`.264**Utilizzare quando:** si desidera una superficie di strumenti fissa ed esplicita per un agente headless e si preferisce un rifiuto netto rispetto all'affidamento silenzioso all'assenza di `canUseTool`.
287 265
288<h4 id="bypass-permissions-mode-bypasspermissions">266#### Modalità ignora autorizzazioni (`bypassPermissions`)
289 Modalità ignora autorizzazioni (`bypassPermissions`)
290</h4>
291 267
292Approva automaticamente gli usi degli strumenti senza richiedere conferma, ad eccezione dei casi elencati nell'avviso di seguito. I hook vengono comunque eseguiti e possono bloccare le operazioni se necessario. Su Linux e macOS, Claude Code rifiuta di avviarsi in questa modalità come root o sotto `sudo` al di fuori di una [sandbox riconosciuta](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode), e la query non riesce prima del primo turno.268Approva automaticamente gli usi degli strumenti senza richiedere conferma, ad eccezione dei casi elencati nell'avviso di seguito. I hook vengono comunque eseguiti e possono bloccare le operazioni se necessario. Su Linux e macOS, Claude Code rifiuta di avviarsi in questa modalità come root o sotto `sudo` al di fuori di una [sandbox riconosciuta](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode), e la query non riesce prima del primo turno.
293 269
294<Warning>270> [!WARNING]
295 Utilizzare con estrema cautela. Claude ha accesso completo al sistema in questa modalità. Utilizzare solo in ambienti controllati in cui si fidano di tutte le possibili operazioni.271>
296 272> Utilizzare con estrema cautela. Claude ha accesso completo al sistema in questa modalità. Utilizzare solo in ambienti controllati in cui si fidano di tutte le possibili operazioni.
297 `allowed_tools` non vincola questa modalità. Ogni strumento è approvato, non solo quelli che avete elencato. Questi controlli si applicano comunque:273>
298 274> `allowed_tools` non vincola questa modalità. Ogni strumento è approvato, non solo quelli che avete elencato. Questi controlli si applicano comunque:
299 * Le regole di negazione, le regole esplicite `ask` e i hook vengono valutati prima del controllo della modalità e possono comunque bloccare uno strumento.275>
300 * Gli strumenti connector [impostati dalla vostra organizzazione su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), gli strumenti che richiedono interazione dell'utente e le rimozioni `rm` e `rmdir` che interessano un [percorso critico](/docs/it/permission-modes#critical-paths) continuano a passare al callback `canUseTool`.276> * Le regole deny, le regole esplicite `ask` e gli hook vengono valutati prima del controllo della modalità e possono comunque bloccare uno strumento.
301 * Le [protezioni della messaggistica tra sessioni](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) si applicano comunque.277> * Gli strumenti connector [impostati dalla vostra organizzazione su `ask`](/docs/it/mcp#organization-controls-on-connector-tools), gli strumenti che richiedono interazione dell'utente e le rimozioni `rm` e `rmdir` che interessano un [percorso critico](/docs/it/permission-modes#critical-paths) continuano a passare al callback `canUseTool`.
302</Warning>278> * Le [protezioni della messaggistica tra sessioni](/docs/it/permission-modes#skip-all-checks-with-bypasspermissions-mode) si applicano comunque.
303 279
304<h4 id="plan-mode-plan">280#### Modalità pianificazione (`plan`)
305 Modalità pianificazione (`plan`)
306</h4>
307 281
308Claude esplora la base di codice e produce un piano senza modificare i file sorgente. Gli strumenti di sola lettura vengono eseguiti come nella modalità di autorizzazione `default`.282Claude esplora la base di codice e produce un piano senza modificare i file sorgente. Gli strumenti di sola lettura vengono eseguiti come nella modalità di autorizzazione `default`.
309 283
310Le modifiche ai file non vengono mai approvate automaticamente nel plan mode, anche quando una regola di permesso corrisponde o un hook `PreToolUse` restituisce `allow`. Passano invece per il tuo callback `canUseTool`. Su Claude Code v2.1.212 o successivo, i comandi shell che modificano i file, come `touch` e `rm`, raggiungono il tuo callback `canUseTool` allo stesso modo.284Le modifiche ai file non vengono mai approvate automaticamente nel plan mode, anche quando una regola allow corrisponde o un hook `PreToolUse` restituisce `allow`. Passano invece per il tuo callback `canUseTool`. Su Claude Code v2.1.212 o successivo, i comandi shell che modificano i file, come `touch` e `rm`, raggiungono il tuo callback `canUseTool` allo stesso modo.
311 285
312Se si imposta `allowDangerouslySkipPermissions: true` insieme a `permissionMode: 'plan'`, le modifiche ai file e i comandi shell che modificano i file raggiungono comunque il callback `canUseTool`. L'opzione consente di passare a `bypassPermissions` in seguito con `setPermissionMode()`.286Nell'SDK TypeScript, se si imposta `allowDangerouslySkipPermissions: true` insieme a `permissionMode: 'plan'`, le modifiche ai file e i comandi shell che modificano i file raggiungono comunque il callback `canUseTool`. L'opzione consente di passare a `bypassPermissions` in seguito con `setPermissionMode()`.
313 287
314Claude può utilizzare `AskUserQuestion` per chiarire i requisiti prima di finalizzare il piano. Vedere [Gestire approvazioni e input dell'utente](/docs/it/agent-sdk/user-input#handle-clarifying-questions) per la gestione di queste richieste.288Claude può utilizzare `AskUserQuestion` per chiarire i requisiti prima di finalizzare il piano. Vedere [Gestire approvazioni e input dell'utente](/docs/it/agent-sdk/user-input#handle-clarifying-questions) per la gestione di queste richieste.
315 289
316**Utilizzare quando:** si desidera che Claude proponga modifiche senza eseguirle, ad esempio durante la revisione del codice o quando è necessario approvare le modifiche prima che vengano apportate.290**Utilizzare quando:** si desidera che Claude proponga modifiche senza eseguirle, ad esempio durante la revisione del codice o quando è necessario approvare le modifiche prima che vengano apportate.
317 291
318<h4 id="auto-mode-auto">292#### Modalità auto (`auto`)
319 Modalità auto (`auto`)
320</h4>
321 293
322Un modello classificatore esamina azioni come comandi shell e richieste di rete prima che vengano eseguite, e consente o blocca ciascuna di quelle che esamina. Per i modelli e i provider richiesti dalla modalità auto e l'ordine in cui valuta le azioni, consulta [Eliminare le richieste di permesso con la modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode).294Un modello classificatore esamina azioni come comandi shell e richieste di rete prima che vengano eseguite, e consente o blocca ciascuna di quelle che esamina. Per i modelli e i provider richiesti dalla modalità auto e l'ordine in cui valuta le azioni, consulta [Eliminare le richieste di permesso con la modalità auto](/docs/it/permission-modes#eliminate-prompts-with-auto-mode).
323 295
324Se passi una sessione in modalità auto a un modello che la modalità auto non supporta, usando [`set_model()`](/docs/it/agent-sdk/python#claudesdkclient), [`setModel()`](/docs/it/agent-sdk/typescript#query-object) o [`applyFlagSettings()`](/docs/it/agent-sdk/typescript#applyflagsettings), la sessione passa alla modalità `default`:296Se passi una sessione in modalità auto a un modello che la modalità auto non supporta, usando [`set_model()`](/docs/it/agent-sdk/python#claudesdkclient), [`setModel()`](/docs/it/agent-sdk/typescript#query-object) o [`applyFlagSettings()`](/docs/it/agent-sdk/typescript#applyflagsettings), la sessione passa alla modalità `default`:
325 297
326* **Cosa vedi**: un messaggio `system` con sottotipo `status` e `permissionMode` impostato su `"default"`, che il TypeScript SDK tipizza come [`SDKStatusMessage`](/docs/it/agent-sdk/typescript#sdkstatusmessage). Da quel momento, le chiamate che richiedono approvazione e non corrispondono a nessuna regola di permesso raggiungono il tuo callback `canUseTool`.298* **Cosa vedi**: un messaggio `system` con sottotipo `status` e `permissionMode` impostato su `"default"`, che il TypeScript SDK tipizza come [`SDKStatusMessage`](/docs/it/agent-sdk/typescript#sdkstatusmessage). Da quel momento, le chiamate che richiedono approvazione e non corrispondono a nessuna regola allow raggiungono il tuo callback `canUseTool`.
327* **Per tornare alla modalità auto**: passa a un modello supportato, quindi chiama `set_permission_mode("auto")` o `setPermissionMode("auto")`. Se ripristini il modello senza effettuare quella chiamata, la sessione rimane in modalità `default`. Mentre il modello non supportato è attivo, la chiamata non riesce con `Cannot set permission mode to auto: auto mode unavailable for this model`.299* **Per tornare alla modalità auto**: passa a un modello supportato, quindi chiama `set_permission_mode("auto")` o `setPermissionMode("auto")`. Se ripristini il modello senza effettuare quella chiamata, la sessione rimane in modalità `default`. Mentre il modello non supportato è attivo, la chiamata non riesce con `Cannot set permission mode to auto: auto mode unavailable for this model`.
328 300
329Il passaggio alla modalità `default` dopo una chiamata a `set_model()`, `setModel()` o `applyFlagSettings()` richiede Claude Code v2.1.299 o successivo.301Il passaggio alla modalità `default` dopo una chiamata a `set_model()`, `setModel()` o `applyFlagSettings()` richiede Claude Code v2.1.299 o successivo.
330 302
331<h2 id="related-resources">303## Risorse correlate
332 Risorse correlate
333</h2>
334 304
335Per gli altri passaggi nel flusso di valutazione delle autorizzazioni:305Per gli altri passaggi nel flusso di valutazione delle autorizzazioni:
336 306